论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
软件与程序人生
›
程序人生
›
网络基础 Modbus协议学习总结
网络基础 Modbus协议学习总结
傲渊山岳
金牌会员
|
2024-7-22 02:14:44
|
显示全部楼层
|
阅读模式
楼主
主题
571
|
帖子
571
|
积分
1713
协议简介
Modbus协议,首先从字面理解它包罗Mod和Bus两部分,首先它是一种bus,即总线协议,总线就意味着有主机,有从机,这些设备在同一条总线上。
Modbus支持单主机,多个从机,最多支持247个从机设备。关于Mod,由于这种协议最早被用在PLC控制器中,正确的说是Modicon公司的PLC控制器,这也是Modbus名称的由来。后来Modicon被施耐德电器收购,Modbus协议广泛应用在工业控制器、HMI和传感器上,逐渐被其他厂商所继续,成为工业范畴通信协议的业界标准,并且现在是工业电子设备之间常用的毗连方式。
每种设备(PLC、HMI、控制面板、驱动程序、动作控制、输入/输出设备)都能使用 Modbus协议来启动长途利用。
在基于串行链路和以太 TCP/IP 网络的 Modbus 上可以举行相互通信。
一些网关允许在几种使用 Modbus 协议的总线或网络之间举行通信
术语阐明
HDLC 高级数据链路控制
HMI 人机界面
IETF 因特网工程工作组
I/O 输入/输出设备
IP 互连网协议
MAC 介质访问控制
MB Modbus 协议
MBAP Modbus 协议
关于
总线
补充阐明
总线(Bus)是计算机各种功能部件之间传送信息的公共通信干线,它是由导线构成的传输线束, 按照计算机所传输的信息种类,计算机的总线可以划分为
数据总线
、
地址总线
和
控制总线
,分别用来传输数据、数据地址和控制信号。
总线是一种内部结构,它是cpu、内存、输入、输出设备通报信息的公用通道,主机的各个部件通过总线相毗连,外部设备通过相应的接口电路再与总线相毗连
,从而形成了计算机硬件系统。在计算机系统中,
各个部件之间传送信息的公共通路
叫总线,微型计算机是以总线结构来毗连各个功能部件的。
Modbus被广泛使用主要原因
标准、开放,用户可以免费、放心地使用Modbus协议,不需要交纳允许证费,也不会侵犯知识产权
Modbus可以支持多种电气接口,如RS-232、RS-485等,还可以在各种介质上传送,如双绞线、光纤、无线等。
Modbus的帧格式简朴、紧凑,通俗易懂。用户使用容易,厂商开发简朴。
协议版本
Modbus 协议目前分别界说了基于串口()和以太网传输数据的协议,其中串口(RS232,RS485,RS422,光纤,无线等)数据传输协议分为 Modbus RTU 和 Modbus ASCII串行链路协议,以太网数据传输协议一种 Modbus TCP/IP协议。
其中,Modbus RTU是一种紧凑的,采用二进制表示数据的方式,Modbus ASCII是一种人类可读的,冗长的表示方式。
工作模式
Modbus 协议采用主从(Master/Salve)通信方式,TCP/IP传输模式下,主节点也叫客户机,从节点也叫服务器。毗连到总线上的全部主机节点中有且只有一个 Master 节点(主节点),其余为 Slave 节点(从节点,
可选地址为1~247,每个Slave节点的地址必须唯一
)。
主从通信以 请求/应答 为主,每次通讯都是主节点先发送请求(采用广播模式、单播模式),从节点响应指令,并按要求应答,或者报告异常。当主节不发送请求时,从节不会自己发出数据,从节点之间不能相互通讯(也就是说从节点之间不能相互发送请求)。
无论主节点发送的是广播指令还是单播指令,实际上全部从节点都会完整接收指令。但发送单播指令时,只有地址和指令中中指定地址相同的从节点才会执行及回应指令,其它从节点将忽略收到的指令,而广播请求全部收到指令的设备都会执行指令,但不会给主机回应指令。
半双工通信
Modbus 由于请求/应答机制所以不能同步通信(同步通信需要收发两边以相同的节奏发送和接收数据),总线上每次只有一帧数据举行传输,属于半双工通信。
Modbus 没有支持繁忙机制处置惩罚,比方主机给从机发送命令, 如果从机正在处置惩罚其他使命,此时从机将无法响应主机,所以需要通过软件的方式来判断是否正常接收。
Modbus消息帧
Modbus 协议界说了一个与基础通信层无关的简朴协议数据单元(PDU -> 功能码 + 数据 部分)。特定总线或网络上
的 MODBUS 协议映射能够在应用数据单元(ADU -> 地址域 + 功能码 + 数据 + 差错校验)上引入一些附加域
通用数据帧
地址域功能码数据差错校验码1字节1字节N字节CRC: 16字节 LRC: 1字节阐明:每个划分字段都用16进制表示
地址域
从机设备地址,通常1-247为有效地址,0为广播地址(用于接收主机的广播数据),
每个从机在总线上地址必须唯一,只有与主机发送的地址码相符的从机才气响应返回数据
。
主节点通过将要联结的从节点的地址放入消息中的地址域来选取需要通信的从设备。当从节点发送回应消息时,需要把自己的地址放入回应的地址域中,以便主节点知道是哪一个设备作出的回应。
功能码
表明主节点请求数据的类型。
当主节点向从设备发送消息时,功能码将告诉从设备需要执行哪些行为。比方去读取输入的开关状态,读一组寄存器的数据内容等。
数据
包含
寄存器地址
和
寄存器数据
等
差错校验
对数据举行冗余校验的效果,CRC、LRC
其中事务处置惩罚正常时,客户机向服务器发送请求,在功能码中填充功能码代号,阐明服务器需要执行的动作,在数据码区填充具体的要求,比如读寄存器的地址和数目,通信正常时服务器会在返回的通信帧的功能码区中填充一个利用码,该利用码=功能码,在通讯帧的数据区填充返回的采样数据。
当出现事务处置惩罚异常时,服务器会在返回的通讯帧的功能码中填充一个差错码,该差错码 = 功能码 + 0x80,即将功能码的最高位置1代表出现错误。并在后面的数据段中填充错误码,用来指示本次通信的错误具体内容。
Modbus ASCII消息帧
起始位(
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
傲渊山岳
金牌会员
这个人很懒什么都没写!
楼主热帖
K8S 性能优化 - K8S APIServer 调优 ...
2022你不容错过的软件测试项目实战(we ...
2022年春节后这波疫情对于国内SAP咨询 ...
kubernetes top查看内存CPU使用情况 ...
gRPC之.Net6中的初步使用介绍
有效字母异位词
变量的定义和使用
MySQL数据库-数据表
Java面向对象--接口和多态
idea如何创建代码片段
标签云
挺好的
服务器
快速回复
返回顶部
返回列表