工控智汇

工控智汇

EG网关串口连接威纶通触摸屏应用案例

admin 163 118

EG网关串口连接威纶通触摸屏应用案例

威纶通触摸屏广泛应于工业控制领域,是一款性能高,运行稳定的人机交互设备。此次我们要把威纶通的触摸屏通过Modbus-RTU协议连接EG系列网关,实现电脑Web页面和手机APP对威纶通触摸屏的远程数据采集和读取。本案例使用的是威纶通MT8101iE触摸屏。

一、准备工作

1.1我们需准备如下物品

威纶通MT8101iE触摸屏一台(或电脑仿真运行)。

USB转232数据线一条(如果电脑有串口可以免去此线)。

EG系列网关一台。天线和电源适配器(以下用EG20网关作为实例)。

SIM卡一张,有流量,大卡(移动联通电信)。

DP9针母头一个。

联网电脑一台。

电工工具、导线若干。

物料准备如下;





1.2EG系列网关准备工作

我们需要对网关(其他EG系列网关类似,以下均以EG20网关来介绍)连接天线、插上SIM卡(移动/联通/电信卡,大卡)或者使用能够上网的网线插入EG20的WAN口、连接12V或24V的电源适配器,使网关能够成功登录到平台。

1.3触摸屏准备工作

触摸屏连接24VDC电源,准备一颗9针串口头,用一个双绞线分别焊接的6和9引脚(威纶通触摸屏说明书有介绍,6和9引脚为485通讯口,其他型号如有变化,以威纶通说明书为准)。

将触摸屏接好485通讯线,连接到EG系列网关端子上,触摸屏串口引脚9对应EG20网关的485A端子,引脚6对应EG20网关的485B端子。如下图的所示。


接口

PIN

引脚定义

COM2

1

RS485B

2

RS485A

COM3

6

RS485B

9

RS485A


二、触摸屏从站创建



第二步,在空白窗口中新建6个数据名称(实时1、实时2、实时3、实时4,读写1和读写2),然后新建6个数值显示单元,分别为数值显示单元连接LW0、LW1、LW2、LW3、LW9和LW10变量,如下图。


威纶通屏内部寄存器空间与Modbus寄存器对应关系如下图:


寄存器说明1:RW0对应Modbus寄存器410000(读写寄存器,4为保存寄存器标志,平台只需写10000,寄存器类型为保持寄存器),同时RW0也可对应Modbus寄存器310000(输入寄存器,3为只读寄存器标志,平台寄存器地址只需写10000,寄存器类型为输入寄存器)

寄存器说明2:LW0对应Modbus寄存器400001(读写寄存器,4为保存寄存器标志,平台只需写1,寄存器类型为保持寄存器),同时LW0也可对应Modbus寄存器300001(只读寄存器,3为只读寄存器标志,平台寄存器地址只需写1即可,寄存器类型为输入寄存器)

寄存器说明3:LB0对应Modbus寄存器100001(读写寄存器,1为离散输入标志,平台只需写1,寄存器类型为离散输入),同时LW0也可对应Modbus寄存器000001(只读寄存器,0为线圈标志,平台寄存器地址只需写1即可,寄存器类型为线圈)。

此时触摸屏的设置全部完成,保存工程选择下载程序到触摸屏或在电脑上在线仿真程序。接下来就是连接设置EG20网关和设置EMCP平台了。

三、EMCP平台设置

在对EMCP平台进行设置之前,首先确认EG20网关和仪表的RS-485线是否连接无误。

用管理员账号登录EMCP平台(建议使用360浏览器极速模式、谷歌浏览器(GoogleChrome)或者支持Chromium内核的浏览器),对EMCP云平台进行设置。登录EMCP后首先进入设备列表显示页面,因为我们未创建任何设备,所以是一个空页面。

3.1新增EG设备



3.2远程配置网关

远程配置最主要两个地方需要配置,一是配置网关485通讯参数,二是在平台上创建触摸屏的设备驱动,下面分步骤对此功能进行讲解。注:网关只有在线后才可以进行远程配置。

3.2.1绑定模块


此时在“网关基本信息中”可以看到绑定的网关是否连接到平台。(成功登录平台可以看到“在线”绿色字样,如果不成功则显示“离线”灰色字样,此时请检查网络或网络信号或重启设备)


3.2.2通讯参数设置

我们要使用RS-485和威纶通触摸屏进行通讯,所以我们要设置EG20网关的RS-485口通讯参数。


3.2.3创建设备驱动


基本配置介绍:

【通讯口】:在下拉选项中选择RS485。

【驱动名称】:必填项,自定义即可。

【品牌】、【型号】:必填项,如图所示,分别选择“通用ModBus设备”和“ModbusRTU”。

【设备地址】:必填项,为网关所连设备的Modbus从站地址(范围1-255),此地址必须和触摸屏设置的“设备地址”一致,所以图中设置为1。

高级配置介绍:

【最小采集时间】:是网关采集设备数据的时间间隔,单位:ms。如设置1000ms,即网关1s采集一次设备数据。

【通讯等待时间】:网关接收通讯数据等待时间。可根据需要进行调整,默认1000ms。

【16位整型】、【32位整型】、【32位浮点型】:是指对应数据类型的解码顺序。如果厂家给的表格没有标明,建议不要进行修改,直接选择默认即可。

【分块采集方式】:0—按最大长度分块:采集分块按最大块长处理,对地址不连续但地址相近的多个分块,分为一块一次性读取,以优化采集效率;1—按连续地址分块:采集分块按地址连续性处理,对地址不连续的多个分块,每次只采集连续地址,不做优化处理。直接选择默认即可。

【4区16位写功能码】:写4区单字时功能码的选择。直接选择默认即可。

3.3添加变量


【仪表、PLC】:选择刚才创建的“威纶通触摸屏”驱动即可。

【变量名称】:自定义即可,必填项。

【单位】:自定义即可,选填项。在列表展示时,变量会带上单位展示。

【寄存器类型】:为模块读取设备MODBUS寄存区的标志符。具体地址可参考第二部分的寄存器说明。

【寄存器地址】:地址填写时不带寄存区标志符。例如:触摸屏中创建的变量“实时1”对应的地址为40001,则【寄存器类型】选“保持寄存器(4x)”,【寄存器地址】写“1”即可。

【读写方式】:可选择变量的读写方式,根据需求修改。注意离散输入和输入寄存器不能选择“读写”。

【数据类型】:根据需要选填即可。

【小数位数】:根据需要选填即可。

【死区设置】:根据需要填写即可。更详细的说明请参考后面的“?”帮助。

【采集公式】【写入公式】:根据需要填写即可。更详细的说明请参考后面的“?”帮助。

【状态列表】:可将数值直接与文本映射。如值为“10”,映射字段为“设备故障状态”,则当采集到变量的值为“10”时,会直接在设备监控和历史报表中显示“设备故障状态”。


3.4报警信息设置


3.5历史报表管理


周期存储:按照固定时间间隔,定时对数据存储记录。

条件存储:当某一变量到达一定条件,对部分数据进行“间隔存储”或“单次存储”。

变化存储:当某一变量变化超出一定范围后(高低限),对部分数据进行单次记录(如:某一数据报警后对关联数据进行记录)。

3.6画面组态

如下图界面所示:


四、实验效果

触摸屏显示效果:




其他注意事项

5.1如平台无法读取触摸屏的数据的原因

1,威纶通触摸屏的Modbus从站没有创建成功。此时我们需要通过Modscan32主站软件对触摸屏进行通讯,如果无法读取触摸屏的数据那么说明触摸屏的Modbus从站没有创建成功。

2,通讯线接线错误。

数据创建失败,检查数据规则中所创建的设备是否正确。

5.2如何实现触摸屏PLC数据和内部寄存器的映射

如果要将PLC的数据经触摸屏上传到EMCP平台,如果只是数据实时采集而不向PLC写入,那么我们可以通过触摸屏编辑软件中的“资料传送”(元件-资料传送),打开如下图;



编程代码如下:
macro_commandmain()

inta1,a2,a3//创建a1,a2,a3临时中间变量

GetData(a1,"LocalHMI",RW,10,1)//将RW10值付给a1。

GetData(a2,"SiemensS7-200PPI",VW,1000,1)//将PLC中的VW1000值付给a2。

GetData(a3,"LocalHMI",RW,20,1)//RW20为中间寄存器,起到数据中间传送作用。

ifa1a3then//如果a1不等于a3(即RW10不等于RW20)那么执行下面两行的指令操作。

SetData(a1,"SiemensS7-200PPI",VW,1000,1)//将a1的值(即RW10)付给VW1000

SetData(a1,"LocalHMI",RW,20,1)//将将a1的值(即RW10)付给RW20(保存RW10的值已便于下次比较)。

else//如果RW10的值主动发送改变(手写或平台写入后)

SetData(a2,"LocalHMI",RW,10,1)//将VW1000付给RW10

SetData(a2,"LocalHMI",RW,20,1)//将VW1000付给RW20(保存RW10的值已便于下次比较)。

if

GetData(a1,"LocalHMI",RW,11,1)

GetData(a2,"SiemensS7-200PPI",VW,1002,1)

GetData(a3,"LocalHMI",RW,21,1)

ifa1a3then

SetData(a1,"SiemensS7-200PPI",VW,1002,1)

SetData(a1,"LocalHMI",RW,21,1)

else

SetData(a2,"LocalHMI",RW,11,1)

SetData(a2,"LocalHMI",RW,21,1)

if

macro_command