前言
本系列是关于PLC相关的博文,包括PLC编程、PLC与上位机通讯、PLC与下位驱动、仪器仪表等通讯、PLC指令解析等相关内容。
PLC品牌包括但不限于西门子、三菱等国外品牌,汇川、信捷等国内品牌。
除了PLC为主要内容外,PLC相关元器件如触摸屏(HMI)、交换机等工控产品,如果有值得记录的内容,也会添加进来。
环境配置
系统:windows
软件:PLC编程软件(依品牌而定,如博图)
语言:梯形图、STL、C、js(脚本用)等
库:相应PLC指令库、通用脚本
本篇内容
本篇主要介绍威纶通的HMI与信捷PLC进行通讯,以及威纶通HMI如何使用脚本来自动在页面之间切换模式。
相关博客链接:
1、<工控><PLC>汇川IT7070E触摸屏如何实现单一画面多元素共存显示?
2、<PLC>汇川IT7070E触摸屏如何使用脚本实现画面跳转时自动切换手自动模式?
触摸屏型号: 威纶通 TK8071iP
PLC型号: 信捷 XL3-32
触摸屏与PLC通讯
由于XL3-32不支持以太网,所以,TK8071iP与之通讯,可以使用485串口通讯。
触摸屏设置
使用威纶通的HMI编程软件,新建一个项目,型号选择为TK8071iP。
在打开的项目中,在软件上方的菜单栏选择常用----系统参数,
弹出设置窗口:
在这个窗口,点击新增设备/服务器,在弹出的窗口中,设备类型选择XINJIE XD Series,接口类型选择RS-485 2W,在下面的COM设置中设置串口参数:
根据信捷的官方要求,COM口的波特率最好设为38400,后面PLC端也要设置一样。
设置完成后,可以在新建画面上添加PLC变量。我们这里以一个简单的按钮盒指示灯来举例。
在HMI编辑软件的上方菜单中,选择元件,然后分别点击位状态切换开关和位状态指示灯两类元件,添加到画面上:
在添加时,会要求设置变量,如下:
图片中,1所指要选择设备类型是PLC还是本地,我们选择刚才新建的设备类型。地址则根据信捷PLC的手册来设置,但威纶通触摸屏本身兼容信捷的变量,比如M点,就直接选择M,然后填入M点的编号即可,如M0。
对于位开关,还需要设置其触发模式,比如按下按钮后,是置ON还是置OFF还是切换,还是复归。
而威纶通的触摸屏还支持宏指令,即脚本,也就是说按钮在触发过程,可以激活脚本,由此可以实现一些复杂的功能。而且是依托于HMI本身,而不需要PLC的参与。
上面是以按钮部件来举例,其他部件的添加以此类推。
PLC设置
在信捷PLC端,我们需要配置一下串口,打开信捷的PLC编程软件,可以在左侧的菜单导航栏选择PLC配置,然后点击PLC串口,会弹出设置窗口,也可以在软件上方的菜单栏中选择,是一样的。
在弹出的窗口中,点击添加按钮,选择Modbus通讯,软件会自动创建一个串口号,然后,在右侧的通讯参数设置里,设置相应的串口参数,串口号保持一致,波特率设为38400,其他参数要和触摸屏端保持一致。
万抽,点击写入PLC,然后确定即可。
脚本设置
我们可以利用威纶通HMI提供的宏指令功能,来编写相应的宏指令,即脚本,来实现一些额外的功能。
比如,现在我想根据当前切换的页面编号,来判断是否启用自动或者手动模式,其中,页面要手动还是自动,是提前设定好的,比如我有一些页面是自动运行,那么如果检测到这些页面编号,就直接切换为自动,同理检测到手动页面编号,就切换为手动。
这里为了方便使用,我们会编写三个脚本,一个是用来获取页面编号的,另外两个就是分别设置自动和手动。
在威纶通的触摸屏编辑软件中,选择工程文件菜单,然后点击宏指令:
在弹出的宏指令管理窗口中,点击新增:
就会弹出一个宏指令编辑窗口:
宏指令函数的编写,类似C语言,如果不知道如何使用指令,可以点击编辑器底部的函数按钮,会弹出一个介绍窗口,可以查看所有的内建函数如何使用。
下面是我编写的页面判断程序,非常简单:
macro_command main()
//定义临时变量
bool on=true,off=false
int view_number=0
//获取当前画面号
GetData(view_number, "Local HMI", LW, 9050, 1)
//通过画面号判断当前页面是自动操作页面还是手动操作页面
if (view_number == 1 or view_number == 110) then
SetData(on, "Local HMI", LB, 21, 1)
else if (view_number == 120 ) then
SetData(on, "Local HMI", LB, 20, 1)
else
SetData(off, "Local HMI", LB, 21, 1)
SetData(off, "Local HMI", LB, 20, 1)
end if
//复位触发变量
SetData(off, "Local HMI", LB, 30, 1)
end macro_command
基本上也不用解释了,说明一下,其中的变量LB20和LB21是用来触发自动和手动模式的设置脚本的。
切换手动:
macro_command main()
bool on=true,off=false
SetData(off, "XINJE XD Series", M, 2000, 1)
SetData(on, "XINJE XD Series", M, 2005, 1)
SetData(on, "XINJE XD Series", M, 2001, 1)
SetData(off, "XINJE XD Series", M, 2001, 1)
SetData(off, "Local HMI", LB, 20, 1)
end macro_command
如上,是对PLC的变量进行设置,非常简单,就是对bool量变量进行置位和复位。
切换自动:
macro_command main()
bool on=true,off=false
SetData(off, "XINJE XD Series", M, 2001, 1)
SetData(on, "XINJE XD Series", M, 2006, 1)
SetData(on, "XINJE XD Series", M, 2000, 1)
SetData(off, "XINJE XD Series", M, 2000, 1)
SetData(off, "Local HMI", LB, 21, 1)
end macro_command
然后说一下,LB20和LB21如何触发自动和手动的脚本,在软件的菜单中选择元件----PLC控制:
在弹出的窗口中,点击新增:
如下:
可以在此窗口设置如何触发宏指令,设备类型可以选本地,因为我们可以直接使用HMI提供的本地变量来作触发,这样就不要浪费PLC的地址。
控制类型有多个选项,我们选择执行宏指令,然后在下面的子选项中选择要执行哪个宏指令,此处可选的,是你创建的全部宏指令(编译通过)。触发变量自己填写,只要不重复即可。
底下的触发模式,表示变量如何触发:
举例来说,如果你的变量是LB20,你选择了OFF—>ON触发模式,那么当变量LB20由off变为on时,就会触发这个宏指令,反之,如果你选择了ON—>OFF触发,表示变量LB20在ON变为OFF的瞬间触发宏指令,而OFF<—>ON表示,无论LB20是由OFF变为ON的瞬间还是ON变为OFF的瞬间,都会触发宏指令的执行。而当状态位ON时即执行表示LB为ON时,会一直触发宏指令,但一旦变为OFF就不会执行。
综上,我们来看一下我们在页面切换时自动切换模式的实现:
我有一个页面跳转按钮,跳转到的页面需要自动模式,那么,我会设置当前按钮在触发页面跳转时,同时设置一个变量:
如上图,我要跳转的主页面需要自动模式,我在跳转时,置位了一个变量LB30.
然后我在PLC控制里设置LB30会触发宏指令:
可以看到,当LB30为ON时,会执行宏指令判断当前页面是自动还是手动,在这个宏指令中,如果检测到页面编号为110,则会置位变量LB21,否则会置位LB20.
而我们为LB20、LB21分别设置的PLC控制如下:
其中,LB20为ON时,触发手动切换。
LB21为ON时,触发自动切换。
在每个宏指令的内部,触发位会被复位,不会让当前宏指令一直执行。
以上就是使用威纶通的宏指令实现根据页面切换模式的一种方式,但这只是个人的经验,如果你有更好的方式,欢迎私信交流。
如果你对PLC或者HMI编程有任何问题,也可以私信沟通。