回复:关于ModBus错误代码6的帖子

WWCWWC

西门子1847工业学习平台

  • 帖子

    9192
  • 精华

    158
  • 被关注

    1478

论坛等级:至圣

注册时间:2008-07-26

钻石 钻石 如何晋级?

发布于 2018-04-18 07:51:43

5楼

你的问题有如下几个需要确认:

1)  在“找答案”栏目那里我已经提示过你,在调用“MBUS_CTRL”指令的“EN”管脚时,你使用M0.0的真正目的是什么?在不完全理解指令的前提下,轻易不要“自作主张”,很多时候问题就是这样就此被埋下的。该指令是modbus通讯的初始化指令,常用SM0.0直接调用。如果需要控制modbus通讯的启、停完全可以在下面的轮询机制中进行。

2) 你用外部输入和模拟按钮启、停触发modbus通讯的方法这无可厚非,但缺失了与后面程序段的关联。当没有启动M0.0时,相当于你也没有定义modbus通讯初始化,但是,你且且在这时候反倒运行起“MBUS_MSG”指令,原因是你调用SM0.1标志位作为轮询开始的条件。Modbus通讯启动首要任务是先初始化modbus通讯参数且无错误后,才能启动通讯的读、写,但你且再次违背了协议使用的宗旨。你打开软件帮助F1,查找关键字应该有明确的规定说明。

3) 利用DONE位(判断指令的运行和结束位)来触发下一个通讯指令,该位为完成后值为1,这个思路没有问题,待到执行完最后一个指令的DONE位后,复位该指令并启动第一个指令实现闭合轮询机制,注意关联逻辑顺序,用好置位和复位指令。图示程序段缺失,不完整,如、M0.5的关联;读、写数据地址重叠40001

4) 程序能够精简的尽量精简,如、连续复位、置位2个以上的位操作,用置位、复位指令,在指令的下侧直接填入需要操作的起始位就可以了。

记得【深入 浅出200smart PLC】一书中官方有例子,你可以参考一下。

另外,200smart帮助手册中也有官方轮询例子可以参考一下。


评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200 SMART

共有9115条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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