恭喜,你发布的帖子
发布于 2020-11-21 10:07:17
5楼
我觉得,你也没有理解使用CM、CP时,这类 xxxx_LOAD命令的工作方式。
当使用的是通讯模块、模板时,所有通讯任务,都是由它们自身完成的,PLC的CPU不参与该通讯操作。
这个xxxx_LOAD只是对模块、模板传送一次配置,而且一定是一次完成的!(因为这个命令没有 Busy )
除非命令参数有错!例如 波特率9600写成9566;(所以驱动通讯参数 干脆不让你这样写,直接选 1、2、3、4...)否则 不会“初始化”失败!
此外,这个命令说是初始化,其实是个对模块的配置(LOAD=装载),当前通讯任务完成后的任意时刻都是可以调用的(重新配置通讯模块)。
要注意的是,所有调用xxxx_LOAD命令的这个扫描周期,此模块其他相关的命令是不可执行的!
楼主的问题是没有理解,所有的REQ只是需要个上升沿电平(传送配置),而且对于相关的通讯命令(不是说LOAD)不建议直接使用那个Done操作REQ置一。
通常恰恰相反,是利用Done将那个操作REQ的置零!
调用(REQ=1)通讯命令后,通讯模块即收到,并执行通讯任务;这是异步通讯,经过一段时间,通讯完成时,模块等待CPU的调用命令;当某个扫描周期出现调用命令时,模块传回任务数据到调用命令指定的数据DB。同时该功能块收到Done或者Error。这些位只能存在一个周期(脉冲类型),否则你后面的程序没法写了。
CM、CB模块通讯期间,此类命令的调用,仅接收到模块的一个Busy。
学习了。
是的,该指令就是向CM模块传递配置参数的。修改了波特率以后还得重新触发才有效,这一点可以说明。
请填写推广理由:
分享
只看
楼主