西门子s7-200plc中,modbus通信中的功能码有什么用?就是在程序中有什么具体体现?跟从站地址没啥关系吧?

就想知道在哪用,
2024-11-24 06:22:41
推荐回答(1个)
回答1:

在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号错误