Modbus 本身是一种信息交换的规范,Modbus TCP则是透过TCP/IP来实现Modbus 的一种方式,因此所有的信息都是通过TCP/IP来传输的;Modbus协议属于 C/S 架构,Modbus Tcp Slave是一种Server用来存放所有要被读取的工业设备数据;
使用场景
整体架构
主要功能及产品组件
注: 本手册中用到的中科时代的软件包,均可以从官网的子页面获取。官网提供的版本可能比本手册中提到的版本更高,一般情况下这不会影响您按照本手册的例子执行相应的操作
产品组件 | 描述说明 |
---|---|
modbusslave_0.0.5_amd64.deb | |
modbusslave.library | 上位机程序使用的库文件 |
安装要求
中科时代出厂的工智机;
工智机可以访问互联网;
熟悉基础的Linux操作命令;
安装过程
1、工智机端安装Modbus Tcp Slave RTE组件
上传deb包到工智机Linux环境的/home/sinsegye目录下
上传完成后在工智机上执行命令安装(参考下方截图,如果模块文件名发生变化则命令行中的文件名做相应更改)
修改RTE的配置文件,ComponentManger字段下加入modbusslave
重启RTE服务,使新加入的modbusslave被调用
2、Metafacture安装library
打开Metafacture,点击“工具” -- “库存储”
点击“安装” -- 选中modbus slave的库文件,点击“打开”
工程中点击“库管理器” -- “添加库” -- 选中modbus库点击“确定”
更新安装
1、工智机端升级Modbus Tcp Slave RTE组件
上传deb包到工智机Linux环境的/home/sinsegye目录下
上传完成后在工智机上执行命令安装(参考下方截图,如果模块文件名发生变化则命令行中的文件名做相应更改)
重启RTE服务,使新升级的modbusslave被调用
2、Metafacture升级library
打开Metafacture,点击“工具” -- “库存储”
点击“安装” -- 选中要升级的modbus slave的库文件,点击“打开”
工程中点击“库管理器” -- “添加库” -- 选中modbus库点击“确定”
卸载过程
1、工智机端卸载Modbus Tcp Slave RTE组件
工智机上执行命令卸载modbusslave
修改RTE的配置文件,ComponentManger字段下去掉modbusslave
重启RTE服务
2、卸载MetaFacture侧的Modbus Tcp slave library
MetaFacture界面点击“工具” -- “库存储”
对话框中选中安装的modbus slave的库,点击“卸载”
快速启动
(一)本例软、硬件配置
硬件:
SX5100工智机 MetaOS V24.08.15_SX5
Win10 PC
软件:
MetaFacutre V1.0.6.3
Modbus Poll主站工具
(二)本例实验要求及原理
1、实验原理
第三方Modbus Tcp主站通过 TCP 连接向Metafacture Modbus Tcp 从站发送请求,主要包含:功能码、目标寄存器的地址和数量、写操作时的数据;从站收到请求后先检查数据的合法性,然后执行请求的操作,响应主站请求;
上位机和工智机使用EtherNet连接。
上位机上,MetaFacture下装工程到工智机。工程中会包含下面的试验操作步骤中的配置。
工智机与第三方Modbus Tcp主站通过EtherNet连接。
(三)本例实验操作步骤
1、新建Modbus tcp slave工程的实验步骤如下:
POU中声明区域调用modbus tcp slave功能块,配置线圈、离散输入、保持寄存器、输入寄存器各2048点;
POU中程序区域调用fb_tcp,配置从站IP地址、端口、线圈地址、保持寄存器地址、离散输入地址、输入寄存器地址;
工程运行后即可使用Modbus Poll连接Metafacture Tcp Slave,对从站进行读写操作;主站与从站数据一致;
功能块FB介绍
参数介绍
参数名称 | 参数类型 | 描述 |
---|---|---|
bEnable | BOOL | 启动modbus tcp slave |
sIpAddr | STRING | 设置从站的IP地址 |
uiIpPort | UDINT | 设置从站的端口号 |
udiTimeOut | UDINT | 超时时间 |
phyCoil | POINTER TO BYTE | 从站线圈,可读可写 |
pbyDiscreteInput | POINTER TO BYTE | 从站离散输入,只读 |
pbyHoldingRegisterA | POINTER TO BYTE | 从站保持寄存器,可读可写 |
pbyInputRegister | POINTER TO BYTE | 从站输入寄存器,只读 |
udiRwBitSize | UDINT | 以位可读写寻址的最大个数,用于线圈 |
udiInBitSize | UDINT | 以位可读寻址的最大个数,用于离散输入 |
udiInWordSize | UDINT | 以字可读寻址的最大个数,用于输入寄存器 |
udiRwWordSize | UDINT | 以字可读写寻址的最大个数,用于保持寄存器 |
psMbTest | INT | 默认0,Modbus测试用数据,默认不用配置 |
参数名称 | 参数类型 | 描述 |
---|---|---|
bBusy | BOOL | 当功能块被激活时,被置为True,一直保持到收到确认信号 |
bActive | BOOL | Modbus从站激活标志位 |
bConnect | BOOL | Modbus连接成功标志位 |
bError | BOOL | 错误标志位。True为报错,False无报错 |
eRrror | Modbus Error id | 错误反馈id |
UIRecvCounter | ULINT | 数据接收计数器 |
UISendCounter | ULINT | 数据发送计数器 |
sLocalIp | STRING | 本地ip地址 |
sClientIp | STRING | 客户端ip地址 |