内容纲要

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内部合适驱动采集采集设备数据。此案例选择的驱动如下图所示:

image-20220418104609227

采集了两个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模块

参考图片如下:

image-20220418112247734
image-20220418112640900
image-20220418112723166

4.4 S7-200 PLC数据与ModbusTCP服务器数据地址之间的关系

通过基于OPCUA的标签值传输服务软件——OPCUA_DX_SERVER实现的。

4.4.1 OPCUA_DX_SERVER简介

image-20220418114800832

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对比

image-20220418134358784
image-20220418134557420

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

发表评论