PLC技术资料
    plc自由口编程处理
    发布者:未知  发布时间:2019/10/21 10:51:34
    plc做主站的时候,不管PLC连接的是单从站还是多从站,主站程序都应该考虑到从站会发生故障,从站故障有两种,一种是有故障,但不影响和主站通讯,另一种是有故障,不能和主站通讯,例如从站掉电,通讯线故障或者从站本身故障导致的不能和主站通讯。
    对于后者,主站在发送后,从站是不会回复数据的,主站不能等,而应该结束RCV接收状态,然后发送,那么为什么和如何结束RCV接收状态呢?
    一  为什么要结束RCV接收状态呢?
    发送指令XMT将数据发送出去就完事,而接收RCV不一样,一次完整成功的RCV过程需要以下步骤:
    1  使能位:SM87.7=1/SM187.7=1,执行RCV的时候会检查该位
    2  执行RCV
    3  等待消息起始条件
    4  接收信息
    5  等待消息结束条件
    6  退出接收状态
    RCV指令启动后并不一定就接收消息,如果消息起始条件没有达到,那就一直处于等待接收的状态;
    如果消息始终没有开始或者结束,通信口就一直处于接收状态。这时如果尝试执行XMT指令,就不会发送任何消息。
    所以要结束接收RCV接收状态后才能执行XMT。
    二:如何结束RCV接收状态?
    手册上给出6种结束条件:
    1.结束字符检测
    2.字符间计时器
    3.信息计时器
    4.最大字符计数
    5.校验错误
    6.用户终止
    方法1:前4种条件在从站发生通讯故障后就失效了,必须要配合用户终止
    一般执行XMT后,在发送完成中断里执行RCV,同时启动定时中断或者启动定时器或者执行开始间隔时间BITIM,计时时间到复位使能位SM87.7/SM187.7,同时执行RCV,这样结束RCV指令,比如定时中断里发送:
    LD          SM0.0
    R            SM87.7,  1
    RCV        VB0,  0
    S            SM87.7,  1
    LD          SM0.0
    DTCH      10
    LD          SM0.0
    XMT        VB100,  0
    方法2:设置:SMB87=16#9C,  SMW90/SMW190=0,SMW92/SMW192=x
    执行RCV指令x毫秒后自动结束接收状态。
    如果用的是字符中断方式接收信息,那么将中断分离后即可发送
    DTCH      8
    XMT        VB100,  0 
    用结束字符作为结束条件的时候,如果与设备的通信断了,CPU就会停滞在接受状态,之后的发送也不成功了,通讯也彻底断了。
    后来别人教我在发送前面用复位SMB87.7结束发送就好了。
    自由口用RCV接收,接收到的数据总是一部分,不全,反复检查做实验,才发现原来是结束的定时器时间设短了,导致数据没有接收完,RCV就结束了,增大了时间,一切就OK了。
    刚做自由口编程时,一下载下去,编程软件就无法和CPU通信了,后来打到停止状态,CPU才恢复PPI,可以正常监控,下载了。
    版权声明PLC信息网转载作品均注明出处,本网未注明出处和转载的,是出于传递更多信息之目的,并不意味 着赞同其观点或证实其内容的真实性。如转载作品侵犯作者署名权,或有其他诸如版权、肖像权、知识产权等方面的伤害,并非本网故意为之,在接到相关权利人通知后将立即加以更正。联系电话:0571-87774297。
0571-87774297