ModbusTCP通讯协议

ModbusTCP通讯协议
⼀、简介
Modbus由MODICON公司于1979年开发,是⼀种⼯业现场总线协议标准。1996年施耐德公司推出基于以太⽹TCP/IP的Modbus协议:ModbusTCP。
Modbus协议是⼀项应⽤层报⽂传输协议,包括ASCII、RTU、TCP三种报⽂类型。
标准的Modbus协议物理层接⼝有RS232、RS422、RS485和以太⽹接⼝,采⽤master/slave⽅式通信。
⼆、ModbusTCP数据帧
ModbusTCP的数据帧可分为两部分:MBAP+PDU。
2.1 报⽂头MBAP
MBAP为报⽂头,长度为7字节:
事务处理标识协议标识长度单元标识符
2字节2字节2字节1字节
内容解释
事务处理标识可以理解为报⽂的序列号,⼀般每次通信之后就要加1以区别不同的通信数据报⽂。
协议标识符00 00表⽰ModbusTCP协议。
长度表⽰接下来的数据长度,单位为字节。
单元标识符可以理解为设备地址。
2.2 帧结构PDU
PDU由功能码+数据组成。功能码为1字节,数据长度不定,由具体功能决定。
2.2.1 功能码
Modbus的操作对象有四种:线圈、离散输⼊、保持寄存器、输⼊寄存器。
对象含义
线圈PLC的输出位,开关量,在Modbus中可读可写
离散量PLC的输⼊位,开关量,在Modbus中只读
输⼊寄存器PLC中只能从模拟量输⼊端改变的寄存器,在Modbus中只读
保持寄存器PLC中⽤于输出模拟量信号的寄存器,在Modbus中可读可写
根据对象的不同,Modbus的功能码有:
功能码含义
0x01读线圈
0x05写单个线圈
0x0F写多个线圈修约值比较法
0x02读离散量输⼊
0x04读输⼊寄存器
河南师范大学学报功能码含义
0x03读保持寄存器
0x06写单个保持寄存器
0x10写多个保持寄存器
三、ModbusTCP通信
3.1 通信⽅式
Modbus设备可分为主站(poll)和从站(slave)。主站只有⼀个,从站有多个,主站向各从站发送请求帧,从站给予响应。在使⽤TCP通信时,主站为client端,主动建⽴连接;从站为server端,等待连接。
主站请求:功能码+数据
从站正常响应:请求功能码+响应数据
从站异常响应:异常功能码+异常码,其中异常功能码即将请求功能码的最⾼有效位置1,异常码指⽰差错类型
注意:需要超时管理机制,避免⽆期限的等待可能不出现的应答
IANA(Internet Assigned Numbers Authority,互联⽹编号分配管理机构)给Modbus协议赋予TCP端⼝号为502,这是⽬前在仪表与⾃动化⾏业中唯⼀分配到的端⼝号。
3.2 通信过程
1. connect 建⽴TCP连接
冗余系统2. 准备Modbus报⽂
3. 使⽤send命令发送报⽂
4. 在同⼀连接下等待应答
5. 使⽤recv命令读取报⽂,完成⼀次数据交换
6. 通信任务结束时,关闭TCP连接醋酸甲脂
3.3 仿真软件
我是⽤的仿真软件是Modbus slave,可以实现Modbus RTU、TCP、串⼝仿真等。
Modbus slave 作为服务器端处理请求,客户端⽤java代替。
使⽤软件时,需要指定功能码,在Modbus slave的Setup->slave definition中指定。
– slave ID:从站编号(事务标识符)
– function:功能码,0x01对应线圈操作,0x02对应离散量操作,0x03对应保持寄存器操作,0x04对应输⼊寄存器操作
– address:开始地址
– quantity:寄存器/线圈/离散量 的数量
参考:
3.4 概念
生死千里1.开关量:
⼀般指的是触点的“开”与“关”的状态,⼀般在计算机设备中也会⽤“0”或“1”来表⽰开关量的状态。开关量分为有源开关量信号和⽆源开关量信号,有源开关量信号指的是“开”与“关”的状态是带电源的信号,
专业叫法为跃阶信号,可以理解为脉冲量,⼀般的都有220VAC, 110VAC,24VDC,12VDC等信号,⽆源开关量信号指的是“开”和“关”的状态时不带电源的信号,⼀般⼜称之为⼲接点。电阻测试法为电阻0或⽆穷⼤。
2.数字量:
很多⼈会将数字量与开关量混淆,也将其与模拟量混淆。数字量在时间和数量上都是离散的物理量,其表⽰的信号则为数字信号。数字量是由0和1组成的信号,经过编码形成有规律的信号,量化后的模拟量就是数字量。
3.模拟量:
模拟量的概念与数字量相对应,但是经过量化之后⼜可以转化为数字量。模拟量是在时间和数量上都是连续的物理量,其表⽰的信号则为模拟信号。模拟量在连续的变化过程中任何⼀个取值都是⼀个具体有意义的物理量,如温度,电压,电流等。
4.离散量:
离散量是将模拟量离散化之后得到的物理量。即任何仪器设备对于模拟量都不可能有个完全精确的表⽰,因为他们都有⼀个采样周期,在该采样周期内,其物理量的数值都是不变的,⽽实际上的模拟量
则是变化的。这样就将模拟量离散化,成为了离散量。
5.脉冲量:
脉冲量就是瞬间电压或电流由某⼀值跃变到另⼀值的信号量。在量化后,其变化持续有规律就是数字量,如果其由0变成某⼀固定值并保持不变,其就是开关量。
四、仿真软件的使⽤
验证4个常⽤功能码,仿真软件上⾯有F=01,F=02,F=03、F=04来显⽰
0x01:读线圈
0x02:读离散量输⼊
0x03:读保持寄存器
0x04:读输⼊寄存器
代码参数的理解
北京英菲尼迪车祸仿真软件激活后选择Connection --> Connection Setup 选择TCP模式,端⼝是固定的502
4.1 地址类型
操作:新建四个不同功能码的窗⼝,然后运⾏代码,修改仿真软件上的值。
4.2 数据类型
功能码01:false/true  0/1

本文发布于:2024-09-23 16:19:59,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/17115.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:功能   信号   模拟量   协议   开关   寄存器   离散
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议