关于S7-200 modbus rtu通讯报警6#

已锁定

WWCWWC

西门子1847工业学习平台

  • 帖子

    8024
  • 精华

    145
  • 被关注

    1334

论坛等级:至圣

注册时间:2008-07-26

钻石 钻石 如何晋级?

关于S7-200 modbus rtu通讯报警6#

10607

14

2018-12-27 08:05:36

star star

关于S7-200 modbus rtu通讯报警6#

  今天在找答案栏目中看到有这样一个提问,大致含义调用库通讯指令modbus rtu通讯,程序中除初始化Ctrl指令外,仅仅只调用到一个(次)MSG指令,但MSG指令error管脚仍然报警6#。

  打开官方资料modbus rtu通讯错误报警标设含义,6#错误为:“modbus正忙于另一个请求,同一个时刻只能激活一个mbus_msg指令”。

  那么,是什么原因造成这个报警呢?根据提问者描述整个程序中只有一个(次)MSG指令的调用,怎么会出现这个报警?提问者在补充问题上提及到没有连接下位机。那么,如果没有连接下位机,MSG的错误报警应该为3(接收超时,从站无相应)的可能,这个可以理解,因为是没有实际连接到下位机的原因。

如果整个程序中仅仅调用一个(次)MSG指令,那么,First管脚在没有完成MSG指令时,多次(2次以上)被触发,提问者虽然已经在该管脚上调用了沿触发。

  我按提问者的意思,模拟一下描述过程,就是用modbus rtu初始化指令的Done位触发MSG指令,结果如下所示:用200 samrt plc验证。


  当MSG指令的First管脚用modbus rtu的 mbus_ctrl初始化完成标志位Done触发时,MSG指令的error管脚值正如提问者描述的报警6#。但是,我是没有将prot0口连接到电脑的串口调试软件的状态下测试的,这时,我串口软件没有打开,更谈不上连接状态问题了。

  问题我一直锁定在这个初始化完成标志位M0.0的调用上,修改这个控制位,MSG指令必定会报警3#错误了的,图示:


  当触发M0.2 = 1,MSG错误报警位为3,正是我理解的那样,相当于peot0口没有正确连接或从站没有相应时的错误结果。

  不难理解,造成错误报警6,而没有显现错误报警3的原因是MSG指令“优先”激活了错误报警6的值,这时,并不说明没有错误报警3,而是被错误报警6暂时掩盖罢了。

那回过头来看这个mbus_ctrl的Done位究竟是一个什么值?仅仅从字面上理解,可以理解为初始化完成后的标志位。打开库mbus_ctrl指令的注释,图示:


   官方给出的答案是SM0.0的set值。那么,既然是SM0.0的set值,我将程序重新置换网络段位置,看程序运行结果,图示:


将M0.0在状态图表中写入0后,MSG的error值为3,没有再出现错误报警6的值,符合官方给出注释的位值结果。

  这个情况正如我昨天发过的那篇贴子【关于200smart PLC程序的扫描机制】描述的那样,是程序扫描工作机制引起的其中原因之一,当然由于初始化指令Done位的特殊性,造成MSG指令错误报警,First管脚在MSG指令未完成时触发了“2”次,因为MSG指令运行完毕时间无论如何不可能小于程序扫描周期,那怕通讯速率最高及通讯数据最小。


关于S7-200 modbus rtu通讯报警6# 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200 SMART

共有7542条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。