西门子S7-1200的MODBUS通信如何组态,指令各参数的含义是什么
本篇我们来学习西门子S7-1200的MODBUS通信如何组态,通信装载指令、主站设置指令、从站设置指令各参数的含义是什么。
MODBUS通信协议广泛应用于工业控制领域,并且已经成为一种通用的行业标准,不同厂商提供的控制设备可以通过MODBUS协议连成通信网络,从而实现集中控制。这里我们只介绍西门子S7-1200中MODBUS通信的相关指令。MODBUS协议库指令包括MODBUS通信装载指令、MODBUS主站设置指令和MODBUS从站设置指令。
MODBUS通信装载指令MB_COMM_LOAD用于组态点对点、RS485或RS232模块上的端口以进行MODBUS-RTU协议通信,各参数含义如下:
PORT为通信端口标识符;BAUD为波特率选择;PARITY为奇偶校验选择;FLOW_CTRL为流控制选择;RTS_ON_DLY为接通延时选择;RTS_OFF_DLY为关断延时选择;TESP_TO为响应超时;MB_DB为MB_MASTER或MB_SLAVE指令所使用背景数据块的地址;ERROR为错误指示;STATUS用于组态端口错误代码。
MODBUS主站设置指令MB_MASTER允许程序做为MODBUS主站使用RS485或RS232模块上的端口进行通信,可访问一个或多个MODBUS从站设备中的数据。部分参数含义如下:
REQ为请求输入;MB_ADDR为MODBUS-RTU站地址,有效地址范围为0-247;MODE为模式选择,请求类型包括读取、写入或诊断;DATA_ADDR为从站中的起始地址,指定要在MODBUS从站中访问数据的起始地址;DATA_LEN为数据长度,指定请求中要访问的位数或字数;DATA_PTR为数据指针,指向要写入或读取数据的本地数据块地址,该数据块必须为非#号访问类型;BUSY为忙状态;其它参数与以上介绍的MODBUS通信指令类似。
MODBUS从站设置指令MB_SLAVE允许程序做为MODBUS从站使用RS485或RS232模块上的端口进行通信,MODBUS-RTU主站可以发出请求,然后程序通过执行MB_SLAVE来响应。部分参数含义如下:
MB_ADDR为MODBUS-RTU从站的地址,有效地址范围为1-247;MB_HOLD_REG为MODBUS保持寄存器数据块地址;NDR表示新数据就绪;DR为读数据标志位,0表示无数据读取,1表示MODBUS主站已读取数据;其它参数与以上介绍的MODBUS通信指令类似。
以上,我们学习了西门子S7-1200的MODBUS通信如何组态,通信装载指令、主站设置指令、从站设置指令各参数的含义。想要了解更多关于西门子PLC编程的知识,请持续关注本号!
专业讲解modbusRTU报文格式,(附RS485全系列合集文章18篇)
之前在自由口的文章中我已经通过自定义的通讯协议向大家讲解了什么是报文,以及如何使用报文发送和接收数据。从本文开始我就一起剖析一下。modbus RTU协议的具体结构,帮助大家彻底掌握modbus RTU协议。
1、地址分类
modbus RTU协议中将数据地址类型分成4种,分别是离散量输入,线圈,输入寄存器和保持寄存器,下面我们一起来看看这些地址类型的特点。
这里大家需要注意的是0和1开头的地址每个通道都是1个位的大小,3和4开头的地址每个通道都是16位也就是1个字的大小。可能看到这里大家还是对这种地址的表达方式没有概念,那我们来看一下当S7-200PLC做modbus RTU从站时S7-200PLC中的地址是如何与上面的地址类型对应的。
线圈:对应S7-200中Q区,地址00001 =Q0.0
离散量输入:对应S7-200中I区,地址10001 = I0.0
输入寄存器:对应S7-200中AI区,地址30001 =AIW0
保持寄存器:具体对应地址可以进行设定,一般对应V区。
2、功能码01
功能码01的作用是读取线圈状态,下面我们来看看具体的报文格式。
主站请求报文:
图2-1
从站应答报文:
图2-2
下面我们先将从站库指令下载到S7-200PLC中让S7-200PLC成为modbus RTU 从站具体从站参数设定可以参看图 2‑3。
图 2-3
将S7-200PLC设定成从站后我将S7-200PLC中Q0.0和Q0.2置位为1,Q0.1保持为0然后用调试软件发送报文查询Q0.0、Q0.1、Q0.2的状态。
图 2-4
图2-4所示我们向从站发送03 01 00 00 00 03 7D E9其中03是从站地址,01是功能码,00 00是指起始地址是Q0.0, 00 03是指读取3个线圈,7D E9是前面数据的crc校验码。
注: 这里需要注意我们按照crc校验算出来的校验码的顺序应该是E9 7D,而modbus RTU中crc校验计算出来后需要高低字节进行交换所以是7D E9
图 2-5
图 2-5PLC返回数值是03 01 01 05 90 33,其中03是PLC站地址,01是功能码,01是返回给主站的数据小于或者等于1个字节,05的二进制代码是101表示Q0.0 = 1、Q0.1 = 0、Q0.2 = 1,90 33是前面数值的crc校验码。
以上就是01功能码的含义和用法。
作者:技成培训网(马乐)版权为技成所有,未经同意盗取必究!
到这里关于RS485的内容就给大家更新完毕啦!
一起来回顾一下之前的17篇文章吧!
看看高手讲解RS485,其实没你想的那么难!系列1
看看高手眼中的RS485有啥不一样?数据的发送(系列2)
看电气大神如何玩转RS-485,数据的接收1(系列3)
技术大牛的经验好文!教你学懂RS-485,数据的接收2(系列4)
RS-485经典好文,如何利用时间判断的方式来接收报文?(系列5)
RS-485通讯:如何对固定长度报文方式来编程?这种专业好文不多见
报文长度不固定,如何控制PLC接收信息?【RS-485专业讲解】系列7
「RS-485通讯」两个中断的使用,电气PLC必备,通俗易懂!系列8
PLC工程师判断站地址的独家见解!9篇485通讯文章汇总!(系列9)
玩PLC必备!【RS-485】又快又准判断站地址技巧! 系列10
【玩转RS-485】看电气大牛是怎么做到快速读取从站数据?系列11
电气工程师PLC编程:485通讯中如何读取从站数据?系列12
电气高手讲RS-485:教你向从站写入数据,系列13
PLC编程:RS-485,教你向从站写入数据2「系列14」
RS485中的crc效验,你知道多少?「系列15」
「RS485」如何把crc校验加入到程序里?系列16
电气工程师专业概述modbus通讯,系列17
相关问答
西门子PLC怎么用MODBUS通讯,要讲解详细点的?
S7-200,编程软件有这个功能块,直接调用块,设置一下就可以modbus主站或从站功能。S7-300一般要配一个通讯模块CP340或者CP341,用340得自己编写通讯代码,用341...
modbus-tcp程序如何编写?
编写ModbusTCP程序可以按照以下步骤进行:1.导入所需库文件:根据所选编程语言,导入适当的库文件以实现ModbusTCP通信。2.建立TCP连接:使用编程语言提供的T...
C语言如何编写modbusRTU协议?
Modbus两种协议的编程方法:1、LRC校验LRC域是一个包含一个8位二进制值的字节。LRC值由传输设备来计算并放到消息帧中,接收设备在接收消息的过程中计算LRC,...
s7-1200modbus错误代码?
出现这样的问题很常见,用以下方法及解决方案就可以解决啦:随着TIAPORATL软件和S7-1200CPU固件的不断更新,S7-1200ModbusRTU指令也出现了不同的版本...
modbustcp故障代码?
XXXX0000000301YYZZ-----错误码格式XXXX---复制主机YY-----出错时YY最高位=1正确时YY最高位=0即if(YY&0x80)...
西门子G120XA变频器Modbus通讯代码如何读写?
ModBus-Modbus是由Modicon(现为施耐德电气公司的一个品牌)在1979年发明的,是全球第一个真正用于工业现场的总线协议。简单点说,就是串行通信,物理层和RS232/48...
modbus通讯故障,有哪些解决方法?-人间至味是火锅的回答...
modbus通讯故障有哪些,只有在工作中不断的去发现并解决实际问题,这样才能更加深刻。通讯技术工业自动化系统中的应用,带来便捷同时也有些瑕疵,总体...
modbus错误代码101怎么解决?
错误代码是通讯错误,这个需要接茬通讯程序和连接电缆、错误代码是通讯错误,这个需要接茬通讯程序和连接电缆、
三菱plc通讯模块故障解决方法?
三菱plc的通讯模块故障解决方法如下:(1)查看电脑串口是否坏掉,没办法使用。(2)笔记本电脑使用的USB转232,查看驱动有没有装好。(3)电脑串口可能漏电,烧掉PL...
VB控制ABB550变频器,MODBUSRTU协议的读取变频器运行频率程序代码,求详解?
010300650005站地址功能(读取)地址0065表示转换为十进制数后为101即是ABB参数0101即从0101开始读取5个实际值参数0101-0105分别对应转速、电流、转...