插针机中有两个重要的部件HMI和PLC,HMI提供用户操作和界面显示,而PLC则控制电机的运动逻辑。致远电子的ZTP800和AWTK-HMI解决方案可以快速开发插针机或其他设备的HMI界面。
AWTK介绍
致远电子的AWTK是开源GUI引擎,提供了AWTK-C、AWTK-MVVM和AWTK-HMI等多种解决方案来实现界面编程。其中AWTK-C解决方案使用C语言来开发GUI,灵活度最高,但是学习使用门槛也较高。AWTK-MVVM解决方案则进一步简化C的编程,支持控件与变量绑定联动,让界面和业务开发分离。而AWTK-HMI解决方案使用最简单,内置Modbus通信模块,不用写C代码,只需使用AWStudio软件拖拽控件和配置属性即可实现HMI界面,因此本次也是使用AWTK-HMI方案来实现插针机的上位机。
插针机系统介绍
本次使用 ZTP800 作为插针机的HMI设备,中间使用Modbus协议与PLC通信。ZTP800中内置的AWTK-HMI运行时引擎,让用户无需额外编写C代码即可实现插针机的人机交互界面。
图2 插针机系统介绍
注:AWTK-HMI是开源的HMI运行时引擎,如想了解编译方法请参考AWTK-HMI仓库的说明文档,在ZTP800的部署AWTK可以参考ZTP800在线文档的AWTK移植章节。
插针机HMI开发流程
只需要3步:
在PC配置好Modbus的通信点表文件;
使用AWStudio软件通过简单拖拽做界面设计;
最后把工程下载到ZTP800运行。
1. 定义Modbus寄存器点表先定义一个Modbus寄存器点表来约定HMI和PLC的通信规范,HMI作为Modbus主机,PLC作为从机。该表格需要根据插针机的需求来定,例如:手动移动托板,手动移动主轴,调整主轴/托板速度等。
图3 Modbus 寄存器只读表格图
图4 Modbus 寄存器写入表格图2
2. 创建AWTK-HMI的Modbus配置文件
AWTK-HMI要使用Modbus通信功能,需要用户创建一个配置文件modbus_model.json。
图5 modbus_model.json配置文件
modbus_model.json主要用于配置Modbus通信的寄存器和AWTK变量对象的映射关系,每个channel(通道)用于表示一片读写Modbus寄存器区域,而variables定义了AWTK变量对象和channel的关系。
3. AWTK-HMI界面开发
在AWStudio创建一个新AWTK工程,如下图:
图6 插针机首页开发界面
把需要显示的控件从工具栏拖放到页面上:
图7 插针机操作界面
首先,需要给窗口配置v-model属性,启用Modbus功能。在窗口增加一个自定义属性v-model,属性值设置为【modbus_client(name=modbus_model,share=true)】,代表该页面使用modbus_model.json的通信配置。如下图:
图8 变量绑定规则界面
下一步,把上面modbus_model.json映射好的变量绑定到控件上面,让Label控件根据变量当前值自动改变显示内容,或自动把Edit控件设置的参数下发给下位机。
例如要让Label控件显示补针状态,可以给这个Label控件添加自定义属性【v-data:text】,属性值设置为【g_is_needle_model?”补针状态”:”非补针状态”】,代表控件的text属性会跟随g_is_needle_model变量变化。如下图:
图9 添加自定义属性界面
例如要把设置托板速度的Edit控件的输入数值下发到下位机,可以给这个Edit控件添加自定义属性【v-data:text】,属性值设置为【g_plane_speed】,代表控件的text属性改变后会立即更新g_plane_speed变量。如下图:
图10 添加自定义属性界面2
Modbus模块会自动同步g_is_needle_model、g_plane_speed等变量,并周期读写从机,因此上面控件显示就会周期性的更新,或周期性的把输入值写入从机。
用户甚至可以把变量值立即写入从机,在控件的事件响应脚本中增加代码【exec('update', 'write_registers')】即可,其中write_registers就是modbus_model.json定义的通道名。
4. AWTK-HMI工程下载运行
上面的工程开发完成后,点击AWStudio上的打包按钮,在工程目录下会生成出一个res文件夹,如下图所示。把res文件夹的内容下载到ZTP800的AWTK-HMI运行时程序的对应位置,重启设备就可以顺利启动我们新开发的HMI界面。
图11 res文件夹
图12 运行效果