维纶触摸屏广泛应于工业控制领域,是一款性能高,运行稳定的人机交互设备。此次我们要把维纶的MT8101iE系列触摸屏连接到EMCP物联网云平台,实现电脑Web页面和手机APP对维纶触摸屏的远程数据采集和读取。
一 准备工作。
1.1我们需准备如下物品;
1维纶MT8101iE触摸屏一台(或电脑仿真运行)。
2USB转232数据线一颗(如果电脑主机有串口那就可以免去此线)。
3河北蓝蜂科技的GM10-DTU模块一台。以及配带的232串口线和电源适配器
4SIM卡一张,有流量,大卡。
5DP9针母头一个。
6联网电脑一台(WinXP/Win7/Win8操作系统)
7电工工具、导线若干。
物料准备如下;
1.2 GM10-DTU准备工作
此处参考《GM10-DTU用户使用手册》进行操作,我们需要对DTU网关(WM10-DTU网关的设置和GM10类似,以下均以GM10-DTU网关来介绍)连接天线、插上SIM卡(移动/联通流量卡,大卡)、连接12V或24V的电源适配器、然后将GM10通过随机配带的串口线一端连接GM10端子(TXD TXD SGND),另一端连接电脑的COM口,如果电脑没有COM口可使USB转232线转接。
1.3 触摸屏准备工作。
触摸屏连接24VDC电源,准备一颗9针串口头,用一个双绞线分别焊接的6和9引脚(维纶触摸屏说明书有介绍,6和9引脚为485通讯口) 。
将触摸屏接好的485通讯线连接到GM10-DTU端子上,触摸屏串口引脚9对应GM10模块的485A端子,引脚6对应GM10模块的485B端子。
接口 | PIN | 引脚定义 | |
COM2 | 1 | RS485- | |
2 | RS485+ | ||
COM3 | 6 | RS485- | |
9 | RS485+ |
二,触摸屏从站创建。
第一步,新建一个维纶MT8071lE/MT8101iE(800×480)工程,在弹出的窗口中选择“新增”按钮,在“PLC类型”中选择“MODBUS IDA”中的“Server”选项。设置MODBUS Server串口参数、站号,如下图。设置完成后点击确定保存,此时我们的MODBUS Server从站设备建立完成。
第二步,在空白窗口中新建6个数据名称(实时1、实时2、实时3、实时4,读写1和读写2),然后新建6个数值显示单元,分别为数值显示单元连接LW0、LW1、LW2、LW3、LW9和LW10变量,如下图。
维纶屏内部寄存器空间与Modbus寄存器对应关系如下图:
寄存器说明1:RW0对应Modbus寄存器410000(读写寄存器,4为保存寄存器标志,平台只需写10000即可,功能码选择03),同时RW0也可对应Modbus寄存器310000(只读寄存器,3为只读寄存器标志,平台寄存器地址只需写10000即可,功能码选择04)
寄存器说明2:LW0对应Modbus寄存器400001(读写寄存器,4为保存寄存器标志,平台只需写1即可,功能码选择03),同时LW0也可对应Modbus寄存器300001(只读寄存器,3为只读寄存器标志,平台寄存器地址只需写1即可,功能码选择04)
寄存器说明3:LB0对应Modbus寄存器100001(读写寄存器,1为保存寄存器标志,平台只需写1即可,功能码选择01),同时LW0也可对应Modbus寄存器000001(只读寄存器,0为只读寄存器标志,平台寄存器地址只需写1即可,功能码选择02)。
此时触摸屏的设置全部完成,保存工程选择下载程序到触摸屏或在电脑上在线仿真程序。接下来就是连接设置DTU网关和设置EMCP平台了。
四,GM10-DTU模块设置。
4.1 配置GM10-DTU
在对模块进行配置时,具体操作请参照《DTU配置软件使用手册》,我们通过“DTU配置软件”对数据网关进行设置的目的,一是数据网关定时采集PLC Modbus从站寄存器中的数据。二是设置与EMCP平台连接的参数(只需设置模块密码或默认密码111111)。此外,通过《DTU配置软件》我们可以读取数据网关的运行状态,检查数据网关是否连接网络和服务器,以及网关和PLC通讯是否正常。
拓展:我们也可以通过云端对网关进行远程配置,即“登录平台->后台管理->模块管理->远程配置”,请操作和电脑单机“DTU配置软件”一样。
五,EMCP平台设置。
用管理员账号登录EMCP平台www.lfemcp.com,对EMCP云平台进行设置。具体操作参照《EMCP物联网云平台用户手册V3.0》。登录EMCP后首先进入设备列表显示页面,因为我们未创建任何设备,所以是一个空页面。点击右上角的“后台管理”按钮(只有管理账号才有此权限),进入EMCP平台的后台。
5.1 新建数据规则
进入后台,首先显示的是设备管理,我们可以先跳过此页面,首先创建一个数据规则,点击网页左侧的“规则管理”进入规则设置页面,点击右上角的“新增”,在弹出的窗口中设置该数据规则的名称“威纶通触摸屏”和展示样式“列表展示”,我们可以选择列表展示或组态展示,列表展示:我们所添加的数据会以平台固定的列表样式展示,列表展示方式简单方便(数据测试阶段可选用列表展示)。组态展示:我们可以任意绘制设备数据的展示样式比如添加图形、图片、仪表盘、柱状填充和文字等内容(此功能类似传统的组态软件)。数据规则新建完后点击“实时数据”新增实时数据(DTU定时采集上传的数据),点击“读写数据”创建平台要对设备进行手动读写操作的数据。创建规则展示如下。
注:实时数据:是由DTU配置完成MODBUS通道后,按设定的采集间隔定时读取从站相应数据;
读写数据:无需在DTU配置MODBUS定时采集通道,可直接在平台对下位设备进行数据的读写操作;
报警设置,在已经创建好的实时数据中,点击对应数据的“报警”选项,进入报警设置页面。我们可以设定该数据的报警上下限和报警内容以及是否启用此报警。设定报警后当该数据超出报警上下限后平台会自动记录报警的时间和报警值,同时平台会向用户登录的APP推送报警消息(类似于微信的消息推送)。
5.2 新建设备
新建“设备”, 选择菜单“设备管理”-> “新增”新建一个设备“维纶触摸屏”。新建设备是填写设备的基本信息,1选择设备匹配的图片(从本地上传,也可不选择,系统会以默认图片显示);
2输入模块SN,输入要绑定的SN的编码,如果此SN之前未绑定,则会弹出绑定窗口进行绑定;
3选择上面创建的数据规则“维纶触摸屏”;
4点击“地图”按钮选择设备所在的地理位置。完成后点击“保存”。
添加设备完成后,一定记着重启DTU这样该设备才会显示在线。
六,实验效果。
触摸屏显示效果。
用户登录EMCP平台(www.lfemcp.com),点击”威纶通触摸屏“设备的图片或设备名称进入设备。首先看到的是威纶通触摸屏定时采集数据的显示(实时数据),通过点击“读写数据”对威纶通触摸屏内部的数据进行读写。点击“历史数据”查看对定时数据采集的数据报表。如设备显示离线,需要重启DTU网关,显示如下
在手机安装《云联物通》手机APP(可通过电脑网页平台登录页右上角的二维码扫描下载,或各大应用商店下载),凭用户名和密码登录,进入设备列表后点击”威纶通触摸屏“设备,直接进入的是实时数据列表页面或组态画面(组态展示方式下),点击右上角菜单栏“三杠按钮”,弹出功能菜单,在菜单中点击“读写数据”对读写数据进行读写操作,点击“历史报表”查看设备的历史存储数据报表,点击“历史曲线”可查看各数据的历史趋势图,点击 “报警信息”查看该设备的报警记录,点击“设备详情”查看设备的详细信息或视频画面。
七,其他注意事项。
7.1 设备离线的原因
1,EMCP平台新建设备后未重启。EMCP新增设备后都需要重启对应的GM10模块。
2,SN码和密码绑定错误,EMCP平台所建设备的SN码必须和所连GM10模块的SN码相同(SN位于GM10右侧面标签),密码必须和DTU配置软件设置的密码相同(默认111111)。
7.2 如平台无法读取触摸屏的数据的原因。
1,维纶触摸屏的Modbus从站没有创建成功。此时我们需要通过Modscan32主站软件对触摸屏进行通讯,如果无法读取触摸屏的数据那么说明触摸屏的Modbus从站没有创建成功。
2,通讯线接线错误。
3,数据创建失败,检查数据规则中所创建的设备是否正确。
7,3如何实现触摸屏PLC数据和内部寄存器的映射
如果要将PLC的数据经触摸屏上传到EMCP平台,如果只是数据实时采集而不向PLC写入,那么我们可以通过触摸屏编辑软件中的“资料传送”(元件->资料传送),打开如下图;
如果需要通过平台向PLC写入数据,那么通过上面的资料传送就无法满足了,我们可以使用维纶触摸屏的宏指令功能实现触摸屏寄存器和PLC寄存器的双向映射。(注意:如需双向映射,那么该寄存器就不要再进行上面的资料传送了),宏指令编辑可点击菜单栏中的“工具->宏指令”新建一个宏指令,编辑内容如下。
编程代码如下:
macro_command main()
int a1,a2,a3 //创建a1,a2,a3临时中间变量
GetData(a1, "Local HMI", RW, 10, 1) //将RW10值付给a1。
GetData(a2, "Siemens S7-200 PPI", VW, 1000, 1) //将PLC中的VW1000值付给a2。
GetData(a3, "Local HMI", RW, 20, 1) //RW20为中间寄存器,起到数据中间传送作用。
if a1<>a3 then //如果a1不等于a3(即RW10不等于RW20)那么执行下面两行的指令操作 。
SetData(a1, "Siemens S7-200 PPI", VW, 1000,1 ) //将a1的值(即RW10)付给VW1000
SetData(a1, "Local HMI", RW, 20, 1) //将将a1的值(即RW10)付给RW20(保存RW10的值已便于下次比较)。
else //如果RW10的值主动发送改变(手写或平台写入后)
SetData(a2, "Local HMI", RW, 10, 1) //将VW1000付给RW10
SetData(a2, "Local HMI", RW, 20, 1) //将VW1000付给RW20(保存RW10的值已便于下次比较)。
end if
GetData(a1, "Local HMI", RW, 11, 1)
GetData(a2, "Siemens S7-200 PPI", VW, 1002, 1)
GetData(a3, "Local HMI", RW, 21, 1)
if a1<>a3 then
SetData(a1, "Siemens S7-200 PPI", VW, 1002, 1)
SetData(a1, "Local HMI", RW, 21, 1)
else
SetData(a2, "Local HMI", RW, 11, 1)
SetData(a2, "Local HMI", RW, 21, 1)
end if
end macro_command