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

就想知道在哪用,... 就想知道在哪用, 展开
 我来答
百度网友ce88d5415
2012-11-16 · TA获得超过1956个赞
知道小有建树答主
回答量:467
采纳率:33%
帮助的人:172万
展开全部

在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;
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式