前言:组态王软件广泛应于工业控制领域,是一款性能高,运行稳定的工业组态软件。此次我们要把组态王软件通过modbus驱动连接到EMCP设备管理云平台,实现电脑Web页面、手机APP和微信对组态王软件内部R1/R2/R3/R4寄存器的远程监控和R5/R6寄存器的远程读写。
1)安装好组态王软件的电脑一台(此案例安装的是组态王6.55版本)。
2)河北蓝蜂科技的EG20网关一台,天线和电源适配器(以下用EG20作为实例)
3)SIM卡一张,(移动、联通或电信卡)
4)DP9针母头一个。
5)电工工具、导线若干。
物料准备如下;
网关相关技术参数与使用说明,可参考《EG20用户使用手册》。
1、保证网关可以正常联网,可通过4G卡(移动/联通/电信流量卡,大卡)联网(需接上随网关附带的天线)或通过网线联网(需将路由器出来的网线接到网关的WAN口);
2、网关接12V或24V直流电源,上电。(注意,电源正负极不要接反)。
在电脑安装组态王软件,准备一颗9针串口头(母头),用三条导线分别焊接DB9的2、3、5引脚,导线另一端接入EG20的TXD、RXD、SGND接线端子,DB9串口接在PC串口上(如果电脑没有串口可选用USB-232线扩展)。
第二步,新建ModRTUServer设备驱动。选择连接EG20的电脑串口(这里我们选择COM1),首先双击COM口进行串口参数的配置(必须选择RS232),然后点击右侧窗口中的“新建”,在弹出的“设备配置向导”选择“设备驱动”→“PLC”→“莫迪康”→“ModRTUServer”→“COM”。
第四步,定义设备地址;设置串口参数。地址格式Address:ReceiveTime,Address:1-255 设备地址,ReceiveTime:0-100 接受数据的时间。点击“下一步”进入右下角中的窗口,我们可以选择默认的设置或这如下图的设置。直至配置完成。
第五步,创建变量,此处我们创建Date01、Date02、Date03、Date04四个(只读)变量,创建Control_1、Control_2两个(读写)变量。定义变量名(Date01),选择变量类型(I/0整数),选择连接设备“ModRTUServer”,选择并填写寄存器类型“R1”,选择数据类型“USHORT”(无符号整形),选择读写属性“读写”,点击“确定”。如此方式分别创建Date02、Date03、Date04、Control_1和Control_2数据变量。
第六步,在“工程浏览器”中新建画面“首页”,双击“首页”进入画面编辑,选择文本控件,创建Date1-Date4/Control_1-Control_2/Display1-Display6显示文本。
第七步,将文本信息连接变量。选择“工具箱”箭头,双击“Date01_display”文本,在弹出的“动画连接”对话框中分别选中“模拟量输出”和“模拟量输入”选项。然后分别点击“模拟量输出”和“模拟量输入”按钮在弹出的对话框中进行如下设置(表达式:\本站点\Date01,整数位:5,显示格式:十进制,对齐:居左)。这里只列举对“Date01_display”文本的显示设置,大家按同样方法分别对“Date02_display”、“Date03_display”、“Date04_display”、“Control_1_display”、“Control_2_display”进行设置。
第八步,运行工程,在菜单中选择“切换到 View”,在弹出的“运行系统”窗口中点击菜单中的“画面”→“打开”在弹出的画面中双击“首页”打开工程画面。此时我们创建的工程就在右下图中显示了出来。我们可通过查看变量值和改变变量值(鼠标双击“00”对数据值进行更改)。
用管理员账号登录EMCP平台(建议使用360浏览器极速模式、谷歌浏览器(Google Chrome)或者支持Chromium内核的浏览器),对EMCP云平台进行设置。具体操作参照《EMCP物联网云平台用户手册》。登录EMCP后首先进入设备列表显示页面,因为我们未创建任何设备,所以是一个空页面,我们需要按照以下步骤进行操作。
步骤:点击【后台管理】(只有管理账号才有此权限)→【设备中心】→【EG设备管理】→【+新增】→ 填写设备信息→点击【保存】。其中,【设备名称】必填,其余选项均可选填。
在这里插入图片描述
EG设备管理网关配置中最主要两个地方需要配置,一是配置串口通讯参数,二是创建modbus驱动,下面分步骤对此功能进行讲解。注:网关只有在线后才可以进行远程配置。
步骤:点击【保存并下一步】,进入【②:网关、驱动管理】界面。填写【SN编号】和【验证码】, SN和验证码在网关的机壳标签上,SN为12位纯阿拉伯数字,验证码为6位英文字母,【备注】可以根据需求填写,编辑完成后点击【保存并下一步】。
(带*必填项)
此时在“网关基本信息中”可以看到绑定的网关是否连接到平台(成功登录平台可以看到“在线”绿色字样,如果不成功则显示“离线”灰色字样,此时请检查网络或网络信号)。
由于我们使用电脑串口RS232与网关通讯,所以需设置RS232通讯参数。点击【通讯口配置】,选择【RS232配置】,在弹出窗口中进行串口参数编辑。
在通讯参数设置完成后,点击界面中央的【添加驱动】→填写设备驱动信息→【保存】。或者点击【+新增】也可以进行添加驱动的操作。
基本配置介绍:
【驱动名称】:必填项,自定义即可,当有多个驱动时进行区分。
【品牌】:必填项,选择“通用modbus设备”。
【型号】:必填项,选择“Modbus RTU”。
【设备地址】:必填项,设备地址根据组态王设置的从站号进行填写,本案例组态王从站号为“1”,所以此处填“1”。
高级配置介绍:
【最小采集时间】:是网关采集设备数据的时间间隔,单位:ms。如设置1000ms,即网关1s采集一次设备数据。
【通讯等待时间】:网关接收通讯数据等待时间。可根据需要进行调整,默认1000ms。
【16位整型】、【32位整型】、【32位浮点型】:是指对应数据类型的解码顺序。一般默认设置即可。
【分块采集方式】:0— 按最大长度分块:采集分块按最大块长处理, 对地址不连续但地址相近的多个分块,分为一块一次性读取,以优化采集效率;1— 按连续地址分块:采集分块按地址连续性处理,对地址不连续的多个分块, 每次只采集连续地址,不做优化处理。直接选择默认即可。
【4区16位写功能码】:写4区单字时功能码的选择。直接选择默认即可。
步骤:点击【③:变量管理】→【+新增】→填写变量信息→【保存】。
变量介绍:
【仪表、PLC】:必填,选择刚才创建的驱动即可。根据实际情况选择。
【变量名称】:必填,自定义即可。注意不能有重复的名称。
【单位】:非必填,自定义即可。在列表展示时,变量会带上单位展示。
【寄存器类型】:必填,在组态王中,B寄存器对应【线圈(0x)】, R寄存器对应【保持寄存器(4X)】。
【寄存器地址】:必填,地址填写时不带寄存区标志符,具体对应设置见下方图片。
【数据类型】:必填,根据实际需要选择即可。
【小数位数】:非必填,根据需求填写。
【死区设置】:非必填,默认即可。根据需要填写即可。更详细的说明请参考后面“?”帮助。
【状态列表】:非必填。可将数值直接与文本映射。如值为“10”,映射字段为“设备故障”,则当采集到变量的值为“10”时,会直接在设备监控和历史报表中显示“设备故障”。
【数值运算】:非必填。可将采集到的数据根据填写的公式进行计算,更详细的说明请参考后面的“?”帮助。
【读写方式】:可根据需求自行修改该寄存器的读写方式,默认为只读。
在组态王中,内部寄存器与功能码对应关系如下表:
保持寄存器4x R寄存器 40001对应R1,40002对应R2,以此类推
添加完成后,【变量管理】如下图所示,此时可以点击【数据测试】按钮检查变量值能否采集到,同时可以点击右上方的【预览】直接进入前台查看数据。
可以根据需要给变量设置报警,当产生报警时,会在电脑网页端进行报警展示,在手机APP和微信进行报警推送。设置步骤:点击需要报警的变量后面的【报警】→【新增】→填写报警信息与条件→【确定】。如下图所示:
创建完变量后可以点击“④历史报表管理”根据自己的需求创建历史报表。【历史报表】可以满足不同的应用场景下,来记录历史数据,【历史曲线】是根据报表生成的曲线,方便客户以曲线形式查看变量变化趋势。如下图界面所示:
周期存储:按照固定时间间隔,定时对数据存储记录。
条件存储:当某一变量到达一定条件,对部分数据进行“间隔存储”或“单次存储”。
变化存储:当某一变量变化超出一定范围后(高低限),对部分数据进行单次记录(如:某一数据报警后对关联数据进行记录)。
点击【⑤组态管理】即可进入组态管理界面,此处可以设置数据监控中的展示方式(组态展示或列表展示,默认为组态展示)。可以在此处选择使用组态展示形式来展示对应数据规则。
如下图界面所示:
点击界面中间的组态界面列表后方的【编辑】项,进入编辑页面。通过组态编辑页面我们可以任意绘制图片、文字、数显框、按钮、指示灯、管道、设备等控件,详细功能请参考《EG设备组态编辑使用说明》
用户登录EMCP平台,点击”组态王“设备的图片或设备名称进入设备即可查看、修改相关数据。
一般的项目应用中,组态王一般都是采集下位的PLC和仪表等设备的数据并进行组态展示。在组态过程中,一般都是直接利用组态王内部的PLC驱动来进行通讯。同时,在数据词典中添加的数据,一般连接的地址都是PLC内部地址,如下图,西门子S7-200 PLC与组态王通讯的数据形式:
上文讲到了,在组态王创建一个ModRTUServer之后,云平台就可以与组态王内部寄存器通讯了。问题来了,云平台如何通过组态王内部寄存器读写西门子S7-200 PLC的数据呢?下面为大家提供一种解决方案。
以上文提到的S7-200 PLC的 VW1000数据为例,为大家演示。
第一步:创建一个新数据“内部VW1000”,连接ModRTUServer设备,如下图:
第二步:在组态王的命令语言菜单中的应用程序命令语言中添加一个新的命令。选择”运行时”,间隔任意设置(建议3000ms)
第三步:使用组态王的命令语言,输入命令,令,内部VW1000 = VW1000。
通过以上三步骤,就可以实现,每隔3秒钟,组态王会将采集到的VW1000数据写入到内部寄存器R1。这样,平台就可以采集到这个数据并进行展示。
第四步:在组态王的命令语言菜单中的数据改变命令语言添加一个新的命令。
第五步:通过右侧“?”按钮,选择使能变量,此处选择内部VW1000,并在下方输入判断命令,来实现,当内部VW1000出现变化时,且VW1000的值与内部VW1000不相同时,将内部VW1000的值写入到VW1000。
通过第四和第五步,就可以实现,当通过平台更改组态王内部R1寄存器数据的时候,将R1的数据写入到西门子PLC的VW1000。
针对不同的数据,重复上述的方法就可以实现通过云平台对PLC内部数据的读写。