在S7-200中,
若使用了MODBUS主站库,则调用MBUS_MSG指令实现对从站的访问,MODBUS通信中的功能码由指令自行转换。
如果访问4xxxxx保持寄存器,有三种类型的功能码03H(读单个或多个寄存器)、06H(写单个寄存器)、10H(写多个寄存器)。
下面是一个简单的MBUS_MSG指令的应用示例:
各参数意义如下:
1.EN使能:同一时刻只能有一个读写功能(即MBUS_MSG)使能,
注意:建议每一个读写功能(即MBUS_MSG)都用上一个MBUS_MSG指令的Done
完成位来激活,以保证所有读写指令循环进行(见例程)。
2.First读写请求位:每一个新的读写请求必须使用脉冲触发
3.Slave从站地址:可选择的范围1-247
4.RW从站地址:0=读,1=写
注意:
●开关量输出和保持寄存器支持读和写功能
●开关量输入和模拟量输入只支持读功能
5.Addr读写从站的选择读写的数据类型
数据地址:
00001至0xxxx-开关量输出
10001至1xxxx-开关量输入
30001至3xxxx-模拟量输入
40001至4xxxx-保持寄存器
6.Count数据个数通讯的数据个数(位或字的个数)
注意:Modbus主站可读/写的最大数据量为120个字(是指每一个MBUS_MSG指令)
7.DataPtr数据指针:
●如果是读指令,读回的数据放到这个数据区中
●如果是写指令,要写出的数据放到这个数据区中
8.Done完成位读写功能完成位
9.Error错误代码:只有在Done位为1时,错误代码才有效
0=无错误
1=响应校验错误
2=未用
3=接收超时(从站无响应)
4=请求参数错误(slaveaddress,Modbusaddress,count,RW)
5=Modbus/自由口未使能
6=Modbus正在忙于其它请求
7=响应错误(响应不是请求的操作)
8=响应CRC校验和错误
101=从站不支持请求的功能
102=从站不支持数据地址
103=从站不支持此种数据类型
104=从站设备故障
105=从站接受了信息,但是响应被延迟
106=从站忙,拒绝了该信息
107=从站拒绝了信息
108=从站存储器奇偶错误
常见的错误:
●如果多个MBUS_MSG指令同时使能会造成6号错误
●从站delay参数设的时间过长会造成主站3号错误
●从站掉电或不运行,网络故障都会造成主站3号错误
追问我想问的就是这三种类型的功能码03H(读单个或多个寄存器)、06H(写单个寄存器)、10H(写多个寄存器)在哪用?怎么知道我是用的03还是10
追答当你的数据地址为4xxxxx时,
若RW=0时,发出报文中的功能码就是03H;
若RW=1时,且COUNT=1,发出报文中的功能码就是06H;
若RW=1时,且COUNT>1,发出报文中的功能码就是10H;
谢谢你耐心回答。
知道在哪可以看到了。
西门子s7-200plc中,modbus通信中的功能码有什么用?就是在程序中有...
【1】公开发表并且无版税要求 【2】相对容易的工业网络部署 【3】对供应商来说,修改移动原生的位元或字节没有很多限制【摘要】西门子s7-200plc中,modbus通信中的功能码有什么用?就是在程序中有什么具体体现?跟从站地址没啥关系吧?【提问】1.Modbus简介——来自维基百科 Modbus是一种串行通信协议,是...
西门子s7-200plc中,modbus通信中的功能码有什么用?就是在程序中有什么...
1.EN使能:同一时刻只能有一个读写功能(即MBUS_MSG)使能,注意:建议每一个读写功能(即MBUS_MSG)都用上一个MBUS_MSG指令的Done 完成位来激活,以保证所有读写指令循环进行(见例程)。2.First读写请求位:每一个新的读写请求必须使用脉冲触发 3.Slave从站地址:可选择的范围1-247 4.RW从...
西门子S7-200系列PLC的MODBUS通信功能
Count参数定义读写地址范围,Dataptr以指针形式表示读写数据存放地址,如使用VB100地址,对应写入或读取数据。MBUS_MSG指令执行后,完成位Done指示操作完成,Error故障代码存储器用于记录通信错误。通过这些指令,S7-200系列PLC能够实现灵活的MODBUS RTU通信。了解库指令的细节,对编程实现高效、稳定的通信至关...
modbus 的功能码指的是什么?定义这个概念有什么用?
Modbus 协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。它已经成为一通用工业标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。打个很简单的比方 功能码就好比锁的钥匙 只有通过功能码来控制设备或仪表 ...
modbus协议中的功能码是什么含义?
功能码15号命令请求格式(从设备地址为1、Modbus功能码15、Modbus寄存器开始地址0、写位变量个数16,即2个字节):01 0F 00 00 00 10 02 01 00 E3 B0 字节0为从设备ID、字节1为功能码(十六进制)、字节2-3为Modbus寄存器开始地址、字节4-5为Modbus寄存器格式、字节6为发送字节个数、字节7-8...
s7-200 modbus通信的问题
在plc s7200 modbus通信中,存在错误代码6。解决方案是让每个mbus-msg指令依次旋转。在执行一个MbUsIMSG指令之后,它将激活MbUsIsMSG指令的位重置,并激活下一个MBUBIMSHG指令。在用户程序的执行阶段,PLC总是从上到下依次扫描用户程序(梯形图)。扫描梯形图时,首先先扫描梯形图左侧的触点组成的控制...
modbus通讯协议中,功能码16是什么意思?
Modbus通讯协议中,功能码16是预置多寄存器,即写多个寄存器。Modbus协议是一种广泛应用的工业通信协议,用于电子控制器之间的通信。它通过定义一系列功能码来实现不同的操作,功能码16是其中较为常用的一个。该功能码允许主设备向从设备写入数据到多个连续的保持寄存器中。具体来说,当主设备需要修改从设备...
关于西门子S7200SMART modbus 通讯协议的问题
S7-200中的MODBUS通讯协议实际上是用了其自由口协议来实现,因此,端口上的报文接收都要用到SMB2这个系统寄存器。双口MODBUS在原生西门子S7-200PLC的CPU上是不可能实现的。解决办法:选择兼容品牌的CPU,某些产品具有双自由口,可以实现第二通道MODBUS,程序轻微修改;选择兼容品牌的扩展模块,某些产品可以...
modbus中功能码中输入寄存器是什么?存放什么类型数值?
简单点说,modbus有四种数据,DI、DO、AI、AO\\x0d\\x0aDI: 数字输入,离散输入,一个地址一个数据位,用户只能读取它的状态,不能修改。比如面板上的按键、开关状态,电机的故障状态。\\x0d\\x0aDO: 数字输出,线圈输出,一个地址一个数据位,用户可以置位、复位,可以回读状态,比如继电器输出,...
用s7-200plc怎么和abb变频器acs510走modbus通讯,我看了ABB的说明书,就...
s7 200用modbus主站模块,变频器那边基本上只需要03功能码-读保持寄存器、04功能码-读输入寄存器、06\/16写单\/多寄存器。需要控制哪个寄存器就改addr跟count,就是寄存器地址跟数量