故事作者:Zane

最近创作

看看TA的故事

【Zane说编程】之关于300PLC的 SD 指令奇怪现象的讨论

已锁定

Zane

西门子1847工业学习平台

  • 帖子

    19249
  • 精华

    376
  • 被关注

    1223

论坛等级:至圣

注册时间:2003-06-06

钻石 钻石 如何晋级?

【Zane说编程】之关于300PLC的 SD 指令奇怪现象的讨论

6275

6

2020-07-07 01:08:30

关于300PLC的 SD 指令奇怪现象的讨论


  起因源自以下两个主题贴的讨论:

【分享】PLC常见编程问题点总结(S7-300)

【探讨】看了yzs贴后 ,探讨以下300PLC的 SD 指令奇怪现象


为此我做了如下测试:

第一组:


图1:



图2:



图3:



图4:


       可以看出,第一组中图1~图4的程序中计数器的输入变量如果是M10.0的话,程序指令排列顺序无论怎样都是可以正确执行的。


第二组:直接使用定时器T0标志位作为计数器的输入变量


图5:


可以看出,图5中程序计数器不工作。


图6:


       图6中换一下梯形图排列次序,将计数器程序移至定时器程序之前,计数器工作。


       这就是所谓的STEP 7 S7-300的SD指令异常吗,非也。

       但这就能说图5是错误的,图6是正确的吗?

        

       不是,只是前者捕捉到定时器标志位电平变化的概率极小,而后者捉到定时器标志位电平变化的概率极大,原因是,由于本程序是实现一个周期振荡的信号,定时器标志位高电平存在的时长极短,在一些情况下无法跨两个扫描周期存在,标志位刚一刷新成高电平,立即就执行了定时器指令又清零了,导致计数器指令如果在定时器指令之后执行的话,就很难能捕捉到定时器标志位的电平变化。

       其实两者一样的存在问题,逻辑上的漏洞。


       定时器的工作原理还是那样,定时器在使能后可以认为在后台继续运行,并自动更新定时器的标志位。

  

图7.1


图7.2


       如果我们在定时器指令与计数器指令之间插入足够的延时,那计数器是存在捕捉到计数输入信号的电平变化的可能性的,也就是说定时器标志位的刷新因为延时,在同一个扫描周期内,在定时器指令之后而在计数器指令之前的概率大大增加。


       我们通过图7.1及图7.2所示的例程中可以看到,计数器可以工作,但不能确保百分之百能捕捉到计数变量的电平变化。


       因此最后的结论:我还是推荐第一组的编程方式,放之四海而皆准。但最标准的振荡信号程序应使用两个定时器来搭建,高电平与低电平都需要有一定的时长,而不是某一个电平的时长极短,甚至不能跨两个扫描周期存在。




【Zane说编程】之关于300PLC的 SD 指令奇怪现象的讨论 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

网友专栏

共有3227条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

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