关于西门子PLC编写排队程序 点击:90 | 回复:10



xiaohy620

    
  • 精华:0帖
  • 求助:1帖
  • 帖子:2帖 | 14回
  • 年度积分:0
  • 历史总积分:925
  • 注册:2009年4月03日
发表于:2020-11-20 22:33:33
楼主

有这样一个需求,想求助一下编程思路,具体是这样:

分别有1、2、3、4、5共计5个开关点,暂且定义为I0.0--I0.4,分别对应输出点Q0.0--Q0.4,当这5个开关点无顺序依次接通时,相对应的输出点按照先来后到,排队的形式进行输出,同时输出不超过两个,等这两个输出保持30秒以后断开,重新再检测这5个开关点的闭合状态,再按照排队的形式输出先接通开关点对应的输出点。比如,I0.0接通,Q0.0就接通30秒,30秒钟还没有结束,I0.1和I0.3分别再这30秒内分别相差了2秒接通,这个时候程序仅让I0.1对应的Q0.1接通,Q0.3就要排队,等到Q0.0接通30秒后再执行Q0.3的输出接通。大致就是这个意思,这5个开关点可以只是上升沿信号触发即可。




xiaohy620

  • 精华:0帖
  • 求助:1帖
  • 帖子:2帖 | 14回
  • 年度积分:0
  • 历史总积分:925
  • 注册:2009年4月03日
发表于:2020-11-20 22:37:35
1楼

在线等待高手指点呀

waterbu

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 308回
  • 年度积分:1
  • 历史总积分:52
  • 注册:2011年3月16日
发表于:2020-11-21 00:03:36
2楼

缓存多少呢,会不会同时按下呢

xiaohy620

  • 精华:0帖
  • 求助:1帖
  • 帖子:2帖 | 14回
  • 年度积分:0
  • 历史总积分:925
  • 注册:2009年4月03日
发表于:2020-11-21 10:11:41
3楼

"waterbu" 的回复,发表在2楼
        对内容: 【缓存多少呢,会不会同时按下呢】进行回复:

        ----------------------------------------------------------------

理论上有可能同时按下,但是可以做优先级,低位有效

请叫我王老湿

  • [版主]
  • 精华:0帖
  • 求助:0帖
  • 帖子:606帖 | 6718回
  • 年度积分:822
  • 历史总积分:181618
  • 注册:2011年4月25日
发表于:2020-11-21 10:35:28
4楼

是西门子哪个系列PLC?200,300,1200,1500?如果是200可以考虑填表和出表指令,如果1200,可以采用SCL语言编写冒泡法

xiaohy620

  • 精华:0帖
  • 求助:1帖
  • 帖子:2帖 | 14回
  • 年度积分:0
  • 历史总积分:925
  • 注册:2009年4月03日
发表于:2020-11-21 12:51:11
5楼

"请叫我王老湿" 的回复,发表在4楼
        对内容: 【是西门子哪个系列PLC?200,300,1200,1500?如果是200可以考虑填表和出表指令,如果1200,可以采用SCL语言编写冒泡法...】进行回复:

        -----------------------------------------------------------------

谢谢王老师指点,我用的200系列,也想过用填表指令,只是还没想明白如何处理出两个的处理方法



aefvg

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 84回
  • 年度积分:94
  • 历史总积分:152
  • 注册:2015年3月21日
发表于:2020-11-21 13:27:29
6楼

可以在描述下,感觉有点混乱。

等这两个输出保持30秒以后断开,重新再检测这5个开关点的闭合状态,再按照排队的形式输出先接通开关点对应的输出点

xiaohy620

  • 精华:0帖
  • 求助:1帖
  • 帖子:2帖 | 14回
  • 年度积分:0
  • 历史总积分:925
  • 注册:2009年4月03日
发表于:2020-11-21 15:14:40
7楼

"aefvg" 的回复,发表在6楼
        对内容: 【可以在描述下,感觉有点混乱。等这两个输出保持30秒以后断开,重新再检测这5个开关点的闭合状态,再按照排队的形式输出先接通开关点对应的输出点...】进行回复:

        -----------------------------------------------------------------

其实就是可以这么简单的理解,就像进车站检票一样,有很多人排队,但是呢每次检票我只检前面排队的两个人,把这两个人放过去以后,再选队伍靠前的两个检,如果检完票的有人忘记了拿东西,又出去了,然后他就只能在排到队伍的最后面去排队,就是这么个意思


aefvg

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 84回
  • 年度积分:94
  • 历史总积分:152
  • 注册:2015年3月21日
发表于:2020-11-21 18:54:56
8楼

作一个循环队列,一次读两个数据出来

all_units

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 125回
  • 年度积分:73
  • 历史总积分:96
  • 注册:2013年6月08日
发表于:2020-11-22 17:58:56
9楼

左移位,记录状态,读取需要的位,输出状态

xiaohy620

  • 精华:0帖
  • 求助:1帖
  • 帖子:2帖 | 14回
  • 年度积分:0
  • 历史总积分:925
  • 注册:2009年4月03日
发表于:2020-11-22 22:09:16
10楼

"all_units" 的回复,发表在9楼
        对内容: 【左移位,记录状态,读取需要的位,输出状态】进行回复:

        -----------------------------------------------------------------


大师,可否写个样段贴上来学习一下,大致的意思明白,就是细节不怎么会处理


相关主题

官方公众号

智造工程师