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日
下一篇 2021年7月5日

相关推荐

  • S7-200关于 scale指令库

    scale 和 scaling,这两个库文件完全一样吗 图片说明:    最佳答案 200 模拟量库,西门子自带的是scale&l…

    2021年7月5日
  • cpu266cn与触摸屏通讯

    CPU266CN与台达触摸屏DVP-A之间如何连线通讯?请各位高手赐教! 最佳答案 如果是485口,只需要3,8线直连; 如果是232口,需要2,3交叉连接,5号线直连。…

    SIMATIC S7-200 2021年7月5日
  • 高速计数器的工作模式与输入端子是代表什么意思?

    谁能举一些比较实用的例子给我,最好附上说明(解释),谢谢了! 图片说明:    最佳答案 如果楼主没有接触过高速计数器功能,建议楼主先看一下面的视频,虽然介绍的…

    2021年7月5日
  • CP5611与一台EM277通讯中断

    共有两台EM277也就是两台S7-200PLC和CP5611卡通讯,如果一台不上电是否会影响另一台PLC的通讯。 问题补充:距离较远,采用的是光纤通讯 最佳答案 采用Profibu…

    SIMATIC S7-200 2020年11月1日
  • cpu 226与em223如何接线

    我做的系统中包括cpu 226和em223(16继电器输出,16开关量输入)如何接线?越详细越好。包括226和223所有线。不接地行吗? 问题补充:图看不太清楚。用语言描…

    SIMATIC S7-200 2021年7月4日
  • 模拟量功能模块的使用

    ⑴在使用模拟量转换功能块Scale_I_to_R时,它的输出是VD(是不是实数?),⑵之后如果要用比较(上下限)来输出Q,是直接使用(双字)整数比较?实数比较?是否要通过数字转换后…

    SIMATIC S7-200 2021年7月5日
  • 如何理解s7-200网络通迅的主站和从站?

    如何理解s7-200网络通迅的主站和从站? 最佳答案 主动发起通讯的是主站,被动接受数据交换的是从站. S7-200做PPI协议通讯时,即可做主站也可做从站. …

    SIMATIC S7-200 2021年7月5日
  • 采集变频器频率问题

    在看工程师编写的程序时,发现对变频器频率采集,模拟量处理时,进行A/D转换,AD转换上限(实数)为16000.0,AD转换下限(实数)为3200.0,模拟量上量程(实数)为1,模拟…

    2018年12月7日
  • 200程序文件损坏?

    200程序在一次计算机重新启动中损坏了,现在右键–属性-大小只有0KB! 打开时提示说 无法访问文件  有没有办法恢复,要不重新…

    SIMATIC S7-200 2021年7月5日
  • PTO中断

    PTO脉冲设置到最大,高速计数器CV=PV后,应该怎么使PTO停止输出脉冲?转而执行其他中断程序或子程序?是直接在子程序中使用中断事件19吗? 最佳答案 1. 如果想立即…

    SIMATIC S7-200 2021年7月5日

发表回复

登录后才能评论