1 概述
1.1 Modbus与工业
Modbus是一种全开放,免费提供,非常容易理解和实施的协议。从70年代诞生以来,一直在不同的工作领域中得到广泛应用,是一种事实上工业标准。其主机/从机通信机理能很好地满足确定性的要求,这恰好与互联网的客户机/服务器的通信机理相对应。它与以太网TCP/IP结合,在TCP帖中嵌入Modbus信息帧,成为Modbus TCP/IP,在工业自动化领域中,具有很高的性能价格比,是一种真正开放的理想解决方案,试验表明了它的有效性,应用案例已证明了它在实际应用中的价值。
特点
- 标准、开放,用户可以免费、放心地使用Modbus协议,不需要交纳许可证费,也不会侵犯知识产权。目前,支持Modbus的厂家超过400家,支持Modbus的产品超过600种。
- Modbus可以支持多种电气接口,如RS-232、RS-485等,还可以在各种介质上传送,如双绞线、光纤、无线等。
- Modbus的帧格式简单、紧凑,通俗易懂。用户使用容易,厂商开发简单。
1.2 凌顶Edge与Modbus
凌顶Edge内嵌MDC_OPCUA_SERVER高性能OPCUA服务器。能够采集数十种工业控制系统的数据,如:Siemens、Fanuc、Mitsubishi、Heidenhain、OMRON等数控系统和PLC系统。也支持带有Modbus/TCP通讯接口的通用仪器仪表。
而Modbus正因为其优良特点在工业自动化领域、企业信息化软件有广大的用户群体。为了自动化、物联网的朋友们能有一个良好、熟悉的工具产品来实现不同的工业设备之间的数据访问。 凌顶Edge增加了modbus-tcp服务器功能,实现只要是凌顶Edge能获取的设备数据都能以modbus-tcp的协议把数据给用户。
2 应用架构
凌顶Edge系列产品均内置 ModbusTCP 服务器,ModbusTCP 客户机可以连接到 Edge来读写Edge能够采集的设备数据。许多组态软件或者触摸屏都支持 ModbusTCP 通讯,因此可以很方便的连接 Edge。
3 通讯连接
用以太网网线连接 ModbusTCP 客户机设备和 Edge,也可以通过交换机、路由器来连接。Edge 支持以太网客户机连接数目不受限制,因此可以多台 ModbusTCP 设备同时读写PLC/CNC 数据。同时,也可以把多台设备数据整合到同一个ModbusTCP服务器。
特点:
- 上位机的太网客户机连接数目不受限制
- 同时、快速读写多台 ModbusTCP 设备数据
- 多台设备数据整合到同一个ModbusTCP服务器
- 可根据上位机对ModbusTCP服务器地址的需求,自由把设备数据传递到对应ModbusTCP服务器寄存器地址
4 应用举例
用Edge模块采集西门子S7-200 PLC数据转并换成ModbusTCP协议,组态王使用ModbusTCP协议获取PLC数据。
实验分为以下几个环节
-
S7-200 PLC转以太网口
-
配置Edge模块采集S7-200 PLC数据
-
配置Edge模块ModbusTCP服务器供上位机使用
-
在Edge模块中配置S7-200 PLC数据与ModbusTCP服务器数据地址之间的关系
-
配置组态王
4.1 把S7-200 PLC转以太网口
采用的是协议转换模块SCANET(目的:把S7-200 PLC变成一个带以太网的PLC;如果是使用带以太网的设备则无需此步骤),不熟悉此产品的朋友可以查看以下连接:
https://scapeak.com/pages/internet-of-things/index.html(链接最底下,有该产品介绍)
我使用的是SCANET全部出厂默认设备,上电即插即用,无需修改任何配置。SCANET的IP:192.168.1.188
4.2 Edge模块采集S7-200 PLC数据
选择Edge内部合适驱动采集采集设备数据。此案例选择的驱动如下图所示:
采集了两个PLC变量如下表所示
地址 | 说明 |
---|---|
VW0 | PLC内部自加1的变化数值 |
VW100 | PLC内部固定数值 |
详细步骤参考Edge用户手册西门子PLC数据采集相关操作说明,完成上述步骤。(或直接导入本测试中使用的xml文件,在补充说明中)
4.3 配置Edge模块ModbusTCP服务器
步骤 | 说明 |
---|---|
Step.1 | MDC_OPCUA_SERVER配置界面,选择Modbus.TCP服务器驱动 |
Step.2 | 配置服务器站点地址;此处配置为1。等其他相关信息参照下图 |
Step.3 | 配置40013地址(用于存放VW0数据) |
Step.4 | 配置40100地址(用于存放VW100数据) |
Step.5 | 完成上述步骤,下载配置重启MDC_OPCUA_SERVER功能或者Edge模块 |
参考图片如下:
4.4 S7-200 PLC数据与ModbusTCP服务器数据地址之间的关系
通过基于OPCUA的标签值传输服务软件——OPCUA_DX_SERVER实现的。
4.4.1 OPCUA_DX_SERVER简介
4.4.2 配置步骤
详细步骤参考Edge用户手册OPCUA_DX_SERVER相关操作说明,完成配置步骤。(或直接导入本测试中使用的xml文件,在补充说明中)
4.5 配置组态王
4.5.1 组态王操作
组态王的使用无任何需要注意的地方,都是使用组态王的常规步骤。
步骤 | 说明 |
---|---|
Step.1 | 新建工程项目 |
Step.2 | 选择驱动:在PLC-莫迪康-Modbus TCP驱动【地址:192.168.1.118:502 1/5】 |
Step.3 | 在数据字典里新建变量40013、40100 |
Step.4 | 构建组态画面,运行查看数据 |
4.5.2 组态画面效果与西门子PLC对比
5 补充说明
Edge用户手册:Document https://tanghuang-liu.github.io/#/
案例中,MDC_OPCUA_SERVER相关配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!--MDC_OPCUA_SERVER Project File, SCAPEAK, 2019-->
<MDC_OPCUA_SERVER_Project Name="Project" CreateTime="2022-04-18 13:48:09" Comment="EdgeModule">
<Group Name="Group" Enable="1" Comment="">
<Device Name="ModbusTcpServer" Protocol="ModbusTcpServer" Enable="1" Comment="" Parm="Interface=Ethernet IpAddr=0.0.0.0 Port=502 StationAddr=1 Timeout=2000 Interval=10">
<Item Name="HOLD_REG12" Alias="" UA_Type="UA_Int16" Enable="1" Writable="1" Comment="" Parm="Area=HoldReg Offset=12 BitNo=0 StringLength=0 ByteOrder=21" />
<Item Name="HOLD_REG99" Alias="" UA_Type="UA_Int16" Enable="1" Writable="1" Comment="" Parm="Area=HoldReg Offset=99 BitNo=0 StringLength=0 ByteOrder=21" />
</Device>
<Device Name="S7-200 PLC" Protocol="SimaticTcpClient" Enable="1" Comment="" Parm="Interface=Ethernet IpAddr=192.168.1.188 Port=102 DstTsap=02.00 Timeout=2000 Interval=10">
<Item Name="VW0" Alias="" UA_Type="UA_Int16" Enable="1" Writable="1" Comment="" Parm="Area=DB DBNo=1 Offset=0 BitNo=0 StringLength=1" />
<Item Name="VW100" Alias="" UA_Type="UA_Int16" Enable="1" Writable="1" Comment="" Parm="Area=DB DBNo=1 Offset=100 BitNo=0 StringLength=1" />
</Device>
</Group>
</MDC_OPCUA_SERVER_Project>
案例中,OPCUA_DX_SERVER相关配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!--OPCUA_DX_SERVER Project File, SCAPEAK, 2019-->
<OPCUA.DX.SERVER Name="" CreateTime="2022-04-18 13:48:19" Comment="">
<DataSource>
<OpcUaServer ServerName="UaServer1" EndpointUrl="opc.tcp://192.168.1.118:4840" />
</DataSource>
<DX_Control Enable="0" EnableItem="" />
<Group Name="Group1" PublishInterval="100">
<DX Name="VW0-40013" ItemFrom="UaServer1|ns=1;s=Project.Group.S7-200 PLC.VW0" ItemTo="UaServer1|ns=1;s=Project.Group.ModbusTcpServer.HOLD_REG12" SampleInterval="100" />
<DX Name="VW100-40100" ItemFrom="UaServer1|ns=1;s=Project.Group.S7-200 PLC.VW100" ItemTo="UaServer1|ns=1;s=Project.Group.ModbusTcpServer.HOLD_REG99" SampleInterval="100" />
</Group>
</OPCUA.DX.SERVER>
工控家人QQ群:779530349