前言
宏指令的作用
宏指令提供了应用程序之外所需的附加功能。在HMI人机界面运行时,宏指令可以自动的执行这些命令。它可以担负执行譬如数据运算,传送等
宏指令脚本语言
是威纶通自己的语言,类似于C语言
如何实现一个简单的宏指令?
第一步:确定变量类型
第二步:编写脚本语句
第三步:宏指令触发条件
举例:触摸屏上连接了PLC A和PLC B,想将PLC A的某个位信号传送给PLC B的某个位地址?我们详细来阐述
步骤一 确定变量类型
常见的变量类型有:
bool 布尔型 对应位
short 整数型 对应单字
int 整数型 对应双字
float 浮点型 对应小数
此案例中,传送位信号,选定变量类型bool
步骤二 编写脚本语句
此案例中,想将PLC A的某个位信号传送给PLC B的某个位地址,先使用Getdata函数获取PLC A的位信号,再使用Setdata函数传送给PLC B的某个位地址,编写脚本如下:
![13c8c4e351bb071714484b253c515e91.png](https://i-blog.csdnimg.cn/blog_migrate/bc6e1dbf58fcd37efe93e6a71f81bcd7.jpeg)
这里推荐不是很熟悉脚本格式的朋友,使用编辑界面左下角的"函数"选项
![97163a1b48d4b4cfe57b0238fed0bc99.png](https://i-blog.csdnimg.cn/blog_migrate/42c2c0b37dfca460983a693647de5c78.jpeg)
推荐理由:通过"函数"选项调用后,主要选择下图中圈示的几个地方,格式自动生成,利于编译通过。
![09961c51e92e278638fe75561cbeca70.png](https://i-blog.csdnimg.cn/blog_migrate/89b6457b40f65117a0a7471b73076dae.jpeg)
步骤三 宏指令执行条件
方法1.编辑界面就有个周期执行选项
![9995ec997424e5ffebf6bac845a16988.png](https://i-blog.csdnimg.cn/blog_migrate/1c3ab9b7efd4e79bf644bfc7a5913190.jpeg)
方法2.功能键触发宏指令 每单击这个功能键时,选择的宏指令就会被执行一次
![f1a99edd409c80e3f0b208d48f96420c.png](https://i-blog.csdnimg.cn/blog_migrate/7919d4bf21a4736cb44e0e44af3cd7a1.jpeg)
方法3. 使用 [位状态设定] 元件或者 [位状态切换开关] 元件,当这个元件被执行时,选择的宏指令就会被执行一次。
![ac03a583b0c4c82ca598f7bee59ee6bb.png](https://i-blog.csdnimg.cn/blog_migrate/fb65885aa276f2c2103e527f9428ab32.jpeg)
方法4.开机的时候执行1次宏指令
![9280f8aad2d1e99da5c339af5b7aa046.png](https://i-blog.csdnimg.cn/blog_migrate/ca7e112be8e510664c5c2d3198d2a92e.jpeg)
方法5.PLC的某个位 实现触发宏指令
![865d6eb45905fdf21ec4ef0a54b77871.png](https://i-blog.csdnimg.cn/blog_migrate/ad0e1b87138555103e98882077b0aa72.jpeg)
方法6.宏指令一直执行
![61584a97f81d589bcbd4fa5c1f8ea4b1.png](https://i-blog.csdnimg.cn/blog_migrate/a33d3c7b437420e2ed06dcc982c5326a.jpeg)
方法7. 在 [窗口设定] 设定宏的执行时机
[开启窗口时执行]:当开启此窗口时即执行指定的宏指令一次。
[循环执行]:当开启此窗口时,即每0.5秒循环执行指定的宏指令。
[关闭窗口时执行]:当离开此窗口时即执行指定的宏指令一次。
![272c7ef20eb376896bfffa8689996b4e.png](https://i-blog.csdnimg.cn/blog_migrate/40696c7c92c5d5aaf2ad1eaad66a062b.jpeg)
说明:如果您的程序中此项灰阶,代表此型号不支持此功能。
![14d2a6bcb1ce411de50880749f30340f.png](https://i-blog.csdnimg.cn/blog_migrate/e07696f6cb9c4a58d2acc4539a539b16.jpeg)
总结:通过以上三步,就可以实现三菱PLC的M10的位状态可以传给欧姆龙PLC的D_bit,200。
常见问题释疑
①问:宏指令定义了short,运算后,数据异常?
答:宏指令中默认的是有符号的短整,所以上限是32767;那么,数据大于此值的话,变量需要定义unsigned short。
②问:宏指令编译通不过?
答:自己写的脚本,PLC名称和设备列表中不一致,参考本文推荐的"函数"选项 。
③问:Getdata,Setdata和GetdataEX,SetdataEX的区别?
答:前者需要等到下位机回复才会继续往下执行;后者不会 。