QQ登录

只需一步,快速开始

如何使用威纶通触摸屏宏指令实现数值递增可控

[ 复制链接 ]
想要实现以下功能
plc的输出Y0,
1,当Y0为ON时,LW10中的数值递增
2,当Y0变为OFF时,LW10中的数值停止增加并保持现有数值不变
3,当Y0再次变为ON时,LW10中的数值在原有数值上继续递增
自己用宏指令编写试了试,没弄出来,希望各位大神帮忙。


回答:
这个功能挺有意思,这里我编写一个实现来实现计数功能。
功能是通过宏指令的执行 间隔时间来实现。
我们知道在编写宏指令时,可以设置每隔多少时间执行一次宏。
最少是每隔100ms执行一次。
那么我们可以通过这个功能来实现以ms为单位,设置计数的间隔时间,从而可以让用户设置计时的速度。
例程界面如下:
2019-11-21_110352.jpg
点击切换开机,可以设置PLC的Y0为ON,打开计数功能,开始计数。
计数前或计数时,计数间隔时间也可以通过编辑框或滑块为设置。
间隔单位为100ms,也就是最少仅能设置每100ms计数一次。
计数的个数在界面显示。
可暂停继续计数。
效果如下:
4.gif
要注意的是,宏界面里设置了每隔100ms执行一次宏。
以及int数据类型是对应两个字寄存器,如对应LW0,LW1.宏指令代码如下:

macro_command main()
//判断是否可以住下执行
bool on =false
GetData(on, "Mitsubishi FX3U/FX3G", Y, 0, 1)
if(on==false)then
return
end if
//获取每隔多少时间计数设置值。
int nWait=0,nCurCount=0
GetData(nWait, "Local HMI", LW, 0, 1)
if nWait==0 then
return
end if
//
GetData(nCurCount, "Local HMI", LW, 2, 1)
nCurCount=nCurCount+1
//条件满足计数。
if(nCurCount>=nWait)then
nCurCount=0
//计数一次。
int nValue=0
GetData(nValue, "Local HMI", LW, 10, 1)
nValue=nValue+1
if(nValue>99999999)then//到上计数上限复位。
nValue = 0
end if
SetData(nValue, "Local HMI", LW, 10, 1)
end if
//
SetData(nCurCount, "Local HMI", LW, 2, 1)
end macro_command
宏指令有借助LW0,1,LW2,3,LW10,11.
如果宏指令不熟悉,可以下载我录制的两套视频教程来学习。
实例下载地址:
请点击此处下载

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

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

文件名称:如何使用威纶通触摸屏宏指令实现数值递增可控.rar 
文件大小:335.28 KB  售价:10金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我





回复

使用道具 举报

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