折腾了两天才终于实现了基本的通讯功能,有关这个公司显示屏的使用资料实在是太少了,网上基本没有教程,写个文章留给有需要的人,也给自己留个复习材料。
涉及Modbus协议的部分我就不多说了,目前我也还没仔细了解过,本文专注实现功能。
一、相关软件下载
我使用的屏幕型号是GL070,官方提供了Kinco DTools软件来对屏幕进行编辑,以下是下载连接:
软件—Kinco步科https://www.kinco.cn/download/dsoft.html 目前测试我是用电脑与屏幕进行通讯,所以需要用到串口助手,我用的是野火串口调试助手,可以用自己习惯的软件来进行收发测试
野火多功能调试助手上位机https://doc.embedfire.com/products/link/zh/latest/deskapp/ebf_trace_tool.html
二、相关资料的查阅
在软件内部带有用户说明书,需要的可以自行查看
三、屏幕当主机,电脑当从机(屏幕使用COM0)
这部分的测试参考用户手册中14.5.2的(2)02功能码应用
3.1创建工程
文件→新建工程,选择相对应的HMI型号
根据1选择好通讯协议后点击添加,在2处进行相对应的设置,然后点击完成
这个是创建好的
3.1.1另一种连接方法
如果在创建工程时没有添加设备,那么只有一个显示屏在工程中
在左下角选择PLC,找到Modbus系列,将Modbus RTU Extend拖入到框架中
在通讯连接,将串口拖到框架中,线的两端连接两个设备,这里我是用COM0进行通讯
双击屏幕图标可以对屏幕进行设置,设置如下
双击PLC可以修改其站号,我这里保持默认值1
3.2添加控件
右键屏幕,选择编辑组态,进入屏幕设计界面
在元件库中把 位状态指示灯 拖出来进行相对应的设置
有关地址类型的选择,可以参考用户手册14.5.1,应该是地址类型要与功能码相对应
3.3下载程序与测试
连接好屏幕的数据线并供电
下载程序
也不知道为什么是空白的,不显示那个灯
根据帮助→通信连接说明,找到公口的定义,我使用的是COM0,所以黄线接USB转485上的B,绿线接A,灰线接地
打开串口调试助手设定好串口配置就能够收到消息了,如果没有消息或者消息不对就要检查一下接线盒串口的配置
(注意发送格式) 发送01 02 01 01 60 48,屏幕显示绿灯,发送01 02 01 00 A1 88变红,和用户手册一致
四、屏幕当从机,电脑当主机(使用COM0)
这部分要实现的测试包括两个:1是向屏幕里的数值控件写数值,2是读取数值控件的值
4.1创建工程
这里从简,具体可以看3.1创建工程
创建新的工程,并将Modbus RTU Slave(这个是真的反直觉,我一直想把屏幕设置为从机,奈何找半天不知道在哪设置,问了师兄才知道)拖出来和屏幕完成连线,完成相对应的设置,这里我把屏幕的设备号设置为了255
4.2添加控件
地址为1的数值元件进行写入测试
地址为11的数值元件进行读取测试
对于地址类型的选择,可以参考用户手册的14.5.3,LW会被映射为4X寄存器,那么这个地址的寄存器就能通过03、06、16功能码进行修改
4.3写入测试
屏幕的烧录程序和接线跳过,具体参考3.3下载程序与测试
我这里写入地址类型为4X,地址为1的寄存器,所以用06功能码
消息格式参考如下
站号即屏幕从机号为255,对应FFH
功能码06H
地址高位00H,低位01H
写入值,我要写入666,那么高位就是02H,低位9AH
CRC校验值的计算16进制(CRC16)(MODBUS RTU通讯)校验码在线计算器 (23bei.com)
CRC的高位为4CH,低位为DFH
那么完整的消息就是FF 06 00 01 02 9A 4C DF
使用串口助手发送消息,可以看到屏幕的数值控件数值发生了变化
4.4读取测试
点击屏幕的数值控件可以修改其显示值,我这里把控件的值修改成100
我这里读取地址类型为4X,地址为11的寄存器,所以用03功能码
发送消息格式如下:
站号即屏幕从机号为255,对应FFH
功能码03H
地址高位00H,低位0BH
读取N个寄存器,我要读取11这一个,那么高位就是00H,低位01H
CRC校验一下,高位E0H,低位16H
完整消息为FF 03 00 0B 00 01 E0 16
通过串口助手发送,屏幕应答,应答消息格式为:
站号FF 功能码03 字节数02 数据高位00 数据低位64 CRC高位90 CRC低位7B
64H就是100了