QQ登录

只需一步,快速开始

威纶通触摸屏TK6071iP数据显示问题?如果实现数值前自动补零

[ 复制链接 ]
请教一下MODBUS RTU通讯的TK6071iP触摸屏在显示数字时如何限定显示数字长度,不够的前面补0。例如PLC输出数字1234,触摸屏显示001234。
PLC输出数字98,触摸屏显示000098,触摸屏显示需要自动补够6个数字。

回答:
您好,在威纶通触摸屏里,数值的显示可以很方便的通过数值显示元件显示或输入。
数值输入元件在属性格式设置里可以显示多种格式的数据,也可以设置显示数据的长度与范围。
但唯一遗憾的是,此元件似乎并没有自动补0功能,你向元件输入001时,它会自动省略00,仅显示出1.

这样的话,我们也只能使用字符元件了。
通过宏指令将数据转换为字符,再处理自动补0的功能。
这里我们来编写一个实例,实现这个功能,将从PLC读取的数据显示在界面上,
最长显示6个数据,数据长度不足,前面自动补0。

例程界面如下:
2019-11-17_222221.jpg
PLC数据对应寄存器为D0,可以在界面输入数据用于模拟演示,
也可以在连接PLC后从PLC读取。
元件格式如下:
2019-11-17_222357.jpg
因为数字长度为6个位数,一个短整形最多位数为5,所以设置了int格式。
设置上,下限就可以设置6位的数据,以限制显示的位数。

字符数据用字符元件显示,将PLC的数据经过宏处理后,显示在此元件上。
因为最多显示6个数字,所以设置了宽度为3个字。
地址为LW0,输入功能可以根据需要设置是否使用。

界面布局好后,就可以编写一个宏来实现功能了。
宏代码如下:
macro_command main()

int n=0
GetData(n, "Mitsubishi FX2N", D, 0, 1)
char c[6]
FILL(c[0], 0, 6)
//将PLC的D0数据转换为字符形式,最多6个字符
StringBin2DecAsc(n, c[0])
//根据转换后字符个数计算要填充0的个数
short num=0
num =StringLength(c[0])
num=6-num
//向字符数组C索引0开始0的位置插入num个0。
StringInsert(0, "000000", num,c[0])
//将处理后的字符数组显示在界面上。
SetData(c[0], "Local HMI", LW, 0, 6)
end macro_command

在编辑界面里,我们设置了每隔2秒执行一次。
如下图:
2019-11-17_222907.jpg

通过宏代码,就可以将PLC寄存器的数据转换为字符形式,
再根据字符的个数以及数据位数,自动计算要填充的0的个数,并保存在字符数组内显示在界面上。
例程可以下载模拟运行:
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:威纶通触摸屏TK6071iP数据显示问题?如果实现数值前自动补零.rar 
文件大小:946.94 KB  售价:10金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我



如果对威纶通触摸屏宏指令不或编程软件操作不熟悉,
也可以下载我录制的两套教程学习上手。

  

如果您认可,可联系功能定制!

  

如果您着急,充值会员可直接联系发您资料!

  

QQ联系我

微信扫扫联系我

  


回复

使用道具 举报

快速回复 返回列表 客服中心 搜索