485_Modbus_RTU通讯协议
西门子串口通讯07-Modbus RTU 协议的多站点轮询(CP341,RS485)

Modbus RTU 协议的多站点轮询(CP341,RS485)1.硬件列表2.组态配置3.编程4.总结12 组态配置1、组态CPU及CP341,如图1将CP341逻辑地址设为256。
图12、设置Modbus总线传输速率和帧字符结构双击CP341->Parameters->Protocol中选择Modbus Master;双击信封Protocol,选择Modbus Master设置总线传输速率和帧字符结构以及,其它从站的设置必须和主站设置一致。
如图,本例传输速率为9.6Kbit/s,帧字符1-8-e-1,即1位起始位,8位数据位,偶校验,1位停止位。
图23、设置电气接口选择半双工RS 485,接收端初始状态按图3设置,各从站的接口电气标准应和主站一致,如图,具体配置步骤请参考手册《CP340/341/440/441通讯及编程》。
图33 编程1、创建发送数据块DB1如图,定义Modbus功能码03的数据格式,更多功能码格式参考手册《以用于PtP CP MODBUS 协议 RTU 格式 S7 的 SIMATIC 可加载驱动程序为主站》图42、创建接收数据DB在此共建立了2个DB(DB4,DB5)分别存放来自两个从站的数据,每个DB分配了一个0~1000个字的整型数组如图。
图53、创建轮询功能块FC1设置指令计数器(MW2),如图,本例中设置为2,即2两条指令。
图6根据指令计数器值构造发送指令并指定接收缓冲区。
如图,指令计数器数值为1,构造的发送指令为访问1号从站,功能码03,起始地址0(对应Modbus地址40001),4个寄存器;接收缓冲区为数据块DB4,起始地址为0。
图7如图,指令计数器数值为2,构造的发送指令为访问2号从站,功能码03,起始地址0(对应Modbus地址40001),4个寄存器;接收缓冲区为数据块DB5,起始地址为2。
图8为了实现数据发送和接收,FC1中还必须调用CP341发送FB8 和接收FB7 功能块。
Modbus RTU通讯协议

要实现Modbus RTU通信,一、需要STEP 7-Micro/WIN32 V3.2以上版本的编程软件,而且须安装STEP 7-Micro/WIN32 V3.2 Instruction Library(指令库)。
Modbus RTU功能是通过指令库中预先编好的程序功能块实现的。
Modbus RTU从站指令库只支持CPU上的通信0口(Port0)基本步骤:1. 检查Micro/WIN的软件版本,应当是STEP 7-Micro/WIN V3.2以上版本。
2. 检查Micro/WIN的指令树中是否存在Modbus RTU从站指令库(图1),库中应当包括MBUS_INIT和MBUS_SLAVE两个子程序。
如果没有,须安装Micro/WIN32 V3.2的Instruction Library(指令库)软件包;1. 西门子编程时使用SM0.1调用子程序MBUS_INIT进行初始化,使用SM0.0调用MBUS_SLAVE,并指定相应参数。
关于参数的详细说明,可在子程序的局部变量表中找到;调用Modbus RTU通信指令库图中参数意义如下:a. 模式选择:启动/停止Modbus,1=启动;0=停止b. 从站地址:Modbus从站地址,取值1~247c. 波特率:可选1200,2400,4800,9600,19200,38400,57600,115200d. 奇偶校验:0=无校验;1=奇校验;2=偶校验e. 延时:附加字符间延时,缺省值为0f. 最大I/Q位:参与通信的最大I/O点数,S7-200的I/O映像区为128/128,缺省值为128g. 最大AI字数:参与通信的最大AI通道数,可为16或32h. 最大保持寄存器区:参与通信的V存储区字(VW)i. 保持寄存器区起始地址:以&VBx指定(间接寻址方式)j. 初始化完成标志:成功初始化后置1k. 初始化错误代码l. Modbus执行:通信中时置1,无Modbus 通信活动时为0。
MODBUS-RTU通讯协议培训(高端培训)课件

04
读取输入寄存器 在一个或多个输入寄存器中取得当前的二进制值
05
强置单线圈
强置一个逻辑线圈的通断状态
06
预置单寄存器 把具体二进值装入一个保持寄存器
15
强置多线圈
强置一串连续逻辑线圈的通断
16
预置多寄存器 把具体的二进制值装入一串连续的保持寄存器
MODBUS RTU协议分析(一)
➢读命令
主设备发送命令:[设备地址] [功能码] [起始寄存器地址高 8位] [低8位] [读取的寄存器数高8位] [低8位] [CRC校验 的低8位] [CRC校验的高8位]
设备响应:[设备地址] [功能码] [返回的字节个数][数据 1][ 数据2]...[数据n][CRC校验的低8位] [CRC校验的高8 位]
注:寄存器地址从0开始偏移 开关量每一个数据表示8个开关量的值,每一位为0表示 对应的开关断开,为1表示闭合。 一个模拟量需要2个字节 ,高位在前
MODBUS RTU协议分析(二)
化传输(查询)。其它设备(从设备)根 据 主设备查询提供的数据做出相应反应。
协议分类
MODBUS相关协议包括以下几类:
➢MODBUS ASCII 调试时直观,LRC校验容易 ,传输的效率比较低。 ➢ MODBUS RTU
采用16位CRC校验 ,传输的数据量比较大 。
➢MODBUS TCP Modbus信息帧需嵌入TCP帧 ,使用对等技术通信 。 ➢ MODBUS PLUS (MODBUS+)
设备响应: [设备地址] [功能码] [需下置的寄存器地址高8 位 ] [低8位] [寄存器数量高8位] [低8位] [CRC校验的低8 位] [CRC校验的高8位]
MODBUS RTU协议分析(四)
RTU通讯协议

RTU通信协议一、通讯模式1.通讯接口电气标准: 通讯接口符合RS-232 RS--485国际标准。
2. 通讯协议: 采用MODBUS通讯协议RTU模式。
3.通讯格式约定:(1)通信速率: 300 600 1200 2400 4800 9600可选(2)RTU数据格式。
(3)字符格式为11位:一个起始位八个数据位一个奇偶校验位(无校验则无)一个停止位(有校验时),两个停止位(无校验时)。
每个字符或字节以如下方式发送(从左到右):最低有效位...最高有效位;4.RTU帧:初始结构≥4字节时间地址码= 1字节功能码= 1字节数据区= n字节错误校验= 16位CRC 码结束结构≥4字节时间地址码:地址码为通讯传送的第一个字节。
在一个通讯网络中每个从机对应唯一的地址码,可设置的范围为0---255(十进制),按照MODBUS通信规约,可能的从设备地址范围为1---247(十进制)。
主机发送的地址码表明将发送到的从机地址,从机发送的地址码表明回送的从机地址。
功能玛:功能码为通讯传送的第二个字节。
MODBUS通讯规约定义的功能号为1—127,本表只利用了其中的一部分功能码。
主机发送功能码是告诉从机器应该执行什么操作,正常情况下,从机将执行该操作并作为响应回送该功能码,如果回送的功能码最高位为1,则表明从机没有响应操作或发送出错误。
数据区:数据区的组织是根据不同的功能码而不同。
数据区可以是实际的数值,也可以是仪表寄存器的地址或者状态设置。
错误校验:CRC校验。
将整个RTU帧看作是一个连续的二进制数据串,校验时只涉及数据位,舍去起始位,停止位和任选的奇偶校验位。
产生CRC码的步骤如下:1.预置一个16位的寄存器为全1(即十六进制FFFFH),称此寄存器为CRC寄存器;2.把第一个8位数据与CRC寄存器的低8位相异或,结果放回CRC寄存器;3.把16位CRC寄存器右移一位,用0添补最高位,检测移出位:4.如果移出位为0,则重复第3步骤(再次移出);如果移出位为1,则CRC寄存器与多项式A001H相异或,结果放回CRC寄存器;5.重复第3、4步骤,直至移出8位;6.将下一个8位数据与CRC寄存器低8位相异或,结果放回CRC寄存器,重复第2、3、4、5步骤;7.最后得到的CRC寄存器内容即为产生的CRC校验码。
图文详解Modbus-RTU协议

图文详解Modbus-RTU协议前世今生照例简单说下这个协议的历时,Modicon公司于1979年制定了Modbus协议标准,并用在其PLC产品上。
后来Modicon公司被施耐德收购。
已成为一种事实标准协议,同时也被IEC-61158工业通信总线规范收录于type 15子集。
所谓一流的企业做标准,二流的企业做品牌,三流的企业做产品。
这些标准国人都基本是使用者,而非缔造者,所以使用一下,产品上印个标志,做做相关的测试认证都要给老外交钱。
这里只是顺带牢骚几句,与本文想说的无关。
打住!Modbus的应用除了常见的过程控制系统,在其他很多领域都有其身影,比如一些楼宇控制,消防控制等等都有大量的产品采用Modbus协议,因为这个协议实现简单,工作可靠,还是标准化的协议!Modbus分很多实现版本,总的来说是一种应用层协议。
从OSI七层模型来看,位于第七层应用层。
它定义了在不同类型的总线或网络上连接的设备之间提供”客户端/服务器“通信。
对于使用串口的版本,也定义了layer 1 和 layer 2,实现在主站和一个或多个从站之间交换MODBUS 报文。
具体有哪些版本呢?其实主要分两种:Modbus RTU(Remote Terminal Unit 远程终端单元):这种方式常采用RS-485做为物理层,一般利用芯片的串口实现数据报文的收发,报文数据采用二进制数据进行通信。
Modbus ASCII :报文使用 ASCII 字符。
ASCII 格式使用纵向冗余校验和。
Modbus ASCII 报文由冒号 (":")开始和换行符 (CR/LF)结尾构成。
当然其他还根据所使用的物理层不一样,有这么些做法:Modbus TCP/IP 或 Modbus TCP :这是一种 Modbus 变体版本,使用 TCP/IP 网络进行通信,通过 502 端口进行连接。
报文不需要校验和计算,因为以太网底层已经实现了CRC32 数据完整性校验。
RS232RS485RJ45以及Modbus协议

RS232,RS485,RJ45,以及Modbus协议设想直流电源,它的输出端插座接口有三个管脚,分别是正极、负极和接地极。
相应地,负载的插头也应当有三个管脚与电源侧一一对应,这样才能正确地获得电能供应。
注意到这里有三个必须满足的条件:第一是插头和插座管脚的形状、大小和插针直径及长度必须一一对应,否则无法完成接插操作。
这一点规定了插头组合的物理结构和管脚定义。
第二是电源的输出电压值必须满足载侧的需求值,否则无法完成电参量的要求。
这一点决定了插头组合的电平规范。
第三是电源的输出阻抗与负载的输入阻抗必须匹配,否则不能实现完善的供电。
这一点决定了电源的工作性质。
这三点其实就是电源插头组合在物理层面上的规范性协议。
再看通信接口。
在有关计算机信息交换的ISO/OSI模型里,物理层是最底层(第一层),它规定了接口的机械外形、接口管脚定义、接口电平和字节格式。
这里的字节格式,指的是一个字节中有几个数据位,有几个起始位/停止位,有几个奇偶校验位。
一般地,一个字节有8个数据位,1个起始位(停止位),和1个奇偶校验位。
注意:起始位和停止位可以合并。
再看通信接口和通信网络的工作制问题。
当我们拿手机挂电话时,我们发现通信双方在通话的同时也可以接听,这叫做全双工(双向工作制);如果说话的时候不能听,而接听的时候不能说,但任何一方都具有说和听的能力,也即对讲机的通话型式,这叫做半双工。
RS422接口和RS232接口是全双工接口,而RS485则是半双工接口。
对于半双工接口,显然需要有通信的发起者,所以RS485接口和网络一定具有主站和若干从站,并且从站的数量也有规定。
一般地,从站的数量是32个。
RS485主站与从站的关系问题,看似只是通信工作制的不同,其本质是通信各方对通信总线控制权的合理分配。
我们再看总线连接问题。
我们还是以电源为例。
我们可以从电源引出一条主干线,然后再并联若干个支路并分别送到若干个负载。
只要满足电源的功率要求,显然这是可行的。
modbus通讯协议

modbus通讯协议【协议名称】:Modbus通讯协议【协议版本】:1.0【协议简介】:Modbus通讯协议是一种用于工业自动化领域的通信协议,用于在不同设备之间进行数据交换和通信。
该协议采用了简单而高效的通信方式,被广泛应用于监控和控制系统中。
本协议旨在规范Modbus通讯的数据格式、传输方式和通信规则,以确保不同设备之间的互操作性和数据的可靠传输。
【协议内容】:1. 物理层:1.1 通信介质:Modbus通讯协议支持多种通信介质,包括串行通信和以太网通信。
串行通信支持RS232、RS485等标准,以太网通信支持TCP/IP协议。
1.2 通信速率:Modbus通讯协议支持多种通信速率,根据实际需求可设置为1200、2400、4800、9600、19200、38400、57600、115200等不同的波特率。
1.3 通信距离:串行通信的最大通信距离根据通信介质的不同而有所差异,一般为几十米至几百米。
以太网通信的最大通信距离受网络设备和布线条件的限制。
2. 数据帧格式:2.1 传输模式:Modbus通讯协议支持两种传输模式,分别为RTU(Remote Terminal Unit)和ASCII(American Standard Code for Information Interchange)模式。
2.2 数据帧结构:Modbus通讯协议使用了简单的主从结构,数据帧由起始符、从站地址、功能码、数据域、校验码和结束符组成。
2.3 功能码:Modbus通讯协议定义了一系列功能码,用于标识不同的操作类型,如读取寄存器、写入寄存器等。
2.4 数据域:数据域用于存储传输的数据,根据功能码的不同,数据域可以是读取或写入的寄存器值、线圈状态等。
3. 数据读写:3.1 读取数据:主站通过发送读取指令(功能码为03H)给从站,从站根据指令读取相应的数据,并通过响应帧将数据返回给主站。
3.2 写入数据:主站通过发送写入指令(功能码为06H或10H)给从站,从站根据指令将数据写入到指定的寄存器或线圈中,并通过响应帧返回写入结果给主站。
ModBusRTU通讯协议与ModBus通讯协议有什么区别

M o d B u s R T U通讯协议与M o d B u s通讯协议有什么区别Last revision date: 13 December 2020.modbus RTU常见问题汇总2013年04月22日 10:57注:本资料由网络搜索,答案仅供参考(持续更新中)点击查看产品详情1、ModBus RTU通讯协议与ModBus通讯协议有什么区别ModBus协议是应用层报文传输协议(OSI模型第7层),它定义了一个与通信层无关的协议数据单元(PDU),即PDU=功能码+数据域。
ModBus协议能够应用在不同类型的总线或网络。
对应不同的总线或网络,Modbus 协议引入一些附加域映射成应用数据单元(ADU),即ADU=附加域+PDU。
目前,有下列三种通信方式:1.以太网,对应的通信模式是MODBUS TCP。
2.异步串行传输(各种介质如有线RS-232-/422/485/;光纤、无线等),对应的通信模式是MOU或MODBUS ASCII。
3.高速令牌传递网络,对应的通信模式是Modbus PLUS。
2、关于MODBUS RTU通讯协议的提问modbus 主要由站地址(一个字节)+功能码(一个字节)+首地址(两个字节)+访问字数(两个字节)+校验码(CRC16或LRC两个字节)总共8个字节组成。
其实VB中编程很简单从组建添加MSComm组建就行了,难的是校验,3、modbus、rtu、modbus rtu分别是什么modbus协议是工控行业的标准协议,前身为莫迪康所写,现已被施奈德收购而modbus分为两种协议:即串口协议(modbus rtu)和网口协议(modbus tcp)协议,一般的工控机只支持rs232或者RS485的串口模式,这个时候工控机的协议栈里就只有协议,当他从串口接收到数据时,会直接根据报文中的数据进行控制,如果需要用modbusTCP协议进行传输,则需要使用带有网口的PLC具体的帧格式如下modbus RTU 地址域功能码数据差错校验modbus TCP 目的地址协议id 长度单元号功能码数据简单的说 tcp是由RTU加工而来的而RTU则是另外一种概念,不包含在modbus协议内是工控行业对监控设备的简称。