QQ登录

只需一步,快速开始

如何用威纶通宏指令来打开指定窗口

[ 复制链接 ]
PLC里 一个M 继电器得电,然后让触摸屏里 跳出指定的一个窗口。


回答:
威纶通触摸屏里有几种方法可以使用操作窗口。
嵌入窗口元件:
位或字+我们的直接窗口,可以实现窗口以嵌入方式弹出显示;
功能元件也可以弹出窗口或切换窗口。

plc控制元件——切换基本窗口,可以实现基本窗口的切换。
基本窗口为窗口10以后的窗口。


问题的需求是切换窗口,那么,我们就要设置下PLC控制元件。
M类型断电器以字的形式来使用。
PLC控制元件设置如下:
2019-11-15_113816.jpg
这样在PLC里使用WM0寄存器,传递10以上的数值,就可以方便的指定显示哪个窗口了。
根本用不到宏指令。
因为仅支持基本窗口控制,基本窗口是10以后的窗口,所以数值不能是10以下数值。

但如果真要实现例如M100通电打开对应窗口10,M101对应窗口11这种功能,
就得间接通过宏指令来实现。
这里我编写一个实例来实现这种功能。
界面如下:
2019-11-15_134448.jpg
在界面上点击plc的M100到M103可以分别切换窗口10到窗口13.
当然也可以在PLC程序里直接使用M寄存器来切换窗口。
当前窗口ID通过系统寄存器在界面上显示。
快速切换窗口的寄存器通过PLC控制元件添加,设置为WM0,也在界面上显示出。
M100到M103也是通过PLC控制元件与一个宏关联。
这样M100等寄存器点击或在PLC设置为ON时都会间接调用一个宏实现窗口切换。
宏代码如下:
macro_command main()
short nIndex=0
//通过M100,M101等来切换窗口
GetData(nIndex, "FATEK FB/FBs/B1/B1z Series", WM, 100, 1)
if nIndex&0X10 then
nIndex = 10
else if nIndex&0X20 then
nIndex = 11
else if nIndex&0X40 then
nIndex = 12
else if nIndex&0X80 then
nIndex = 13
end if
//执行切换窗口
SetData(nIndex, "FATEK FB/FBs/B1/B1z Series", WM, 0, 1)
nIndex = 0
SetData(nIndex, "FATEK FB/FBs/B1/B1z Series", WM, 100, 1)
end macro_command

在宏代码里,细心的朋友可能会发现,
WM100所用到的16个二进制寄存器从低到高分别是M100--M116.
对应十六进制数值分别是0X01-0X02,0X04,0X08,0X10,0X20,0X40,,,,等等。
M100对应值为0X01,但实际对应值成了0X10。
所以这里有一个规律一定要注意。
WM代表一个字,十六位数据,

WM0会占用WM0到WM15.
WM16会占用WM16到WM31.
WM后紧跟16倍数的数值。
当然不是16倍数也不会编译报错,但对应数值会错乱,如上实例,会影响加大我们编程难度。
所以我们尽量保持数据为16的倍数。
如WM16,WM32,WM160.
修改后的实例可以下载模拟运行,查看效果。

例程下载地址:
请点击此处下载

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

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

文件名称:如何用威纶通宏指令来打开指定窗口.rar 
文件大小:301.22 KB  售价:3金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我


新手朋友也可以下载我录制的101集威纶通触摸屏视频教程。

  

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

  

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

  

QQ联系我

微信扫扫联系我

  



回复

使用道具 举报

点击查看
快速回复 返回列表 客服中心 搜索