modbus从站为何在S7-226与S7-222中不一样呢??

为什么modbus-RTU(从站)在S7-226中可以使用,而在S7-222中就不行呢,程序没改动,就是V库从2000变为1000,因为V库为2000则超出S7-222的范围,只能改成1000,其它没变,但是用串口软件调试则是通讯超时,为什么??”

问题补充:
这是下载的例子程序!!!! 用的是功能6 01 06 00 0A AA 55 17 57在S7-226中行,在S7-222中不行? 为什么??
 LD     First_Scan_On:SM0.1
 CALL   MBUS_INIT:SBR3, 1, 1, 9600, 0, 0, 128, 32, 1000, &VB0, M10.1, MB11
 LD     Always_On:SM0.0
 CALL   MBUS_SLAVE:SBR1, M10.2, MB12

最佳答案

32改为16,因为CPU222不能带那么多模拟量。
  论坛里有一个和你一样的问题,已经解决了,你可以看看。
 [quote][b]以下是引用[i]LaoHuai在2008-12-07 14:38:26[/i]的发言:[/b][br]是从站库吧?从站库错误详解
 MBUS_INT的 ERROR值有以下5种:
 ERROR=1=memory range error  
 1 MaxIQ大于128或小于0 
 2 MaxAI大于32或小于0 
 3 MaxAI大于16,而AIW32不存在(cpu222) 
   若CPU为221,MaxAI小于16则不会发生该错误。
 4 MaxHold小于0 
 5 HodStart不是V区地址(应该是&vbXXX)
 6 V区最高地址(即HodStart+2*MaxHold-1字节)不存在 
 ERROR=2=illegal baudrate/parity   
 1 Baud不是1200、2400、4800、9600、19200、38400、57600或115200.
 2 Parity大于2 (Parity小于0作0处理).
 ERROR=3=illegal slave address 
 Addr等于0或大于247
 ERROR=4=invalid protocol (modbus parameter) 
 Mode不等于1,也不等于0.  
 ERROR=5=holding registers overlap modbus buffers 
 区域1(主机读写区 V) 区域2(库内存区,780字节 V)重叠
 只有MBUS_INT的 ERROR=0,从站才容许接收信息。
 所以此错误和要传递到初始化子程序的参数有关,和请求帧无关。
 MBUS_SLAVE的ERROR:
 ERROR=6=receive parity error
 奇偶检验错误或接收缓冲区达到255个字节。发生该错误时,从站重新使能RCV,无响应信息。
 ERROR=7=receive CRC error
 发生该错误时,从站重新使能RCV,无响应信息。
 字符间超时将导致从站接收完成,如果一帧没接收完,一定会产生该错误。
 ERROR=8=illegal function request 
 请求帧的功能码不对,响应帧为:
 站号,128 OR 功能码,1,CRC 共5个字节。
 ERROR=9=illegal memory address in request 
 请求中的非法内存地址,响应帧为:
 站号,128 OR 功能码,2,CRC 共5个字节。
 如果是功能1,2,那么可能原因是:
 请求帧的起始位地址或点数小于0,
 或起始位地址与点数的和大于MaxIQ。
 如果是功能3,4,那么可能原因是:
 请求帧的首字地址或字数小于0,
 或字数大于120,
 或首字地址与字数的和大于MaxHold(功能3)
 或首字地址与字数的和大于MaxAI(功能4)
 如果是功能5,那么原因是:
 请求帧的输出位地址值大于等于modbusMaxIQ或小于0。
 如果数据字不等于0也不等于16#FF00,那么ERROR=0,不执行写操作,原帧返回。
 如果写入成功,那么原帧返回。
 如果是功能6,那么原因是:
 请求帧的字地址值大于等于MaxHold或小于0。
 如果写入成功,那么请求帧原帧返回(8个字节)。
 如果是功能15,那么可能原因是:
 请求帧的起始位址或位数小于0
 或起始位址与位数和大于MaxIQ
 或起始位址与位数不是8的整数倍。
 或检查请求帧的字节数不等于位数/8+9
 如果写入成功,那么取请求帧的前6个字节加CRC共8个字节作为响应帧。
 如果是功能16,那么可能原因是:
 请求帧的首字地址址或字数小于0
 或首字地址址与字数的和大于MaxHold
 或字数的2倍不等于请求帧的字节数减9
 或字数的2倍不等于字节数
 或请求帧的字节数大于249
 如果写入成功,那么取请求帧的前6个字节加CRC共8个字节作为响应帧。
 ERROR=10=modbus not initialized 
 当MBUS_INT的ERROR不等于0时,MBUS_SLAVE的ERROR=10
 所以ERROR=6,7,8,9时都和接收信息有关。
 主站接收不到信息是因为:
 MBUS_SLAVE的ERROR=6,7,10或请求帧的地址不对。
 [/quote]

提问者对于答案的评价:
xiexie

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc354651.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2021年7月5日 上午2:01
下一篇 2021年7月5日 上午2:02

相关推荐

发表回复

登录后才能评论