请问如何写程序比较时间,到达时间触发动作。

就是3班倒,8:00点触发一次,0:00点触发一次,16:00点触发一次.   知道如何提取系统时间,但是系统时间提取出来是BCD码,我用STL编写的,在FC1调用。
 A     "M_Log_1"
      A(    
      L     DB1.DBB    3
      L     B#16#8
      ==I   
      )     
      A(    
      L     DB1.DBB    4
      L     B#16#0
      ==I   
      )     
      A(    
      L     DB1.DBB    5
      L     B#16#0
      ==I   
      )     
  S     "First_Time"
——————————-但是发现,有时候条件不满足也会置位操作。

2—–请问3个条件如何互锁,就是3个里面始终只有1个置位,其他的复位。

3—–为什么会出现没有其他地方对该位S置位,用的复位R,但是该位的STA一直是1呢。


4  这段程序实现S位后2秒复位。有什么问题吗,因为实际中发现,无法复位啊。。
     O     M      9.0
      O     M      9.1
      O     M      9.2
      L     S5T#2S
      A     T     30
      
      R     M      9.0
      R     M      9.1
      R     M      9.2

问题有点多,刚入门第一次做项目,大家帮帮忙吧,愁死了。。

最佳答案

1、程序中8:00,0:00,16:00的三个判断应为“或”运算,不能为“与”:
 O(    
      L     DB1.DBB    3
      L     B#16#8
      ==I   
      )     
      O(    
      L     DB1.DBB    4
      L     B#16#0
      ==I   
      )     
      O(    
      L     DB1.DBB    5
      L     B#16#0
      ==I   
      )     
  S     "First_Time"
2、但是发现,有时候条件不满足也会置位操作?
需要应用沿触发,即上升沿触发置位,这样才能保证只触发一次。有关上升沿触发详见STL手册中的FP指令。
《用于S7-300 和S7-400 的语句表(STL)编程手册》下载:
http://www2.ad.siemens.com.cn/download/Upload/AS/manual/1008[1].pdf
3、请问3个条件如何互锁,就是3个里面始终只有1个置位,其他的复位?
不需互锁,上升沿触发置位,这样才能保证只触发一次。8:00,0:00,16:00的三个不会同时到时。
4、为什么会出现没有其他地方对该位S置位,用的复位R,但是该位的STA一直是1呢。
是复位了,但又被置位了,所以一直是1。还是那一句话,置位与复位操作必须应用上升沿触发,这样才能保证只触发一次。
5、 这段程序实现S位后2秒复位。有什么问题吗,因为实际中发现,无法复位啊?
程序给出的不正确,是笔误吗?
L     S5T#2S
 A     T     30
上述指令没有引用何种定时器的指令,例如引用SD 延时接通定时器:
L     S5T#2S
SD  T 30
A     T  30
复位也要应用沿触发。
6、题外话:
什么是负跳变信号呢?最好能举例?
正、负跳变信号也分别称为上升沿信号与下降沿信号。
例如:
、某设备(例如电机)在正常运行时,编程时要监视其状态,取信号“1”为正常运行状态;
、当该设备停机(包括正常或故障停机)时,正常运行状态信号即由信号“1”变为信号“0”;
、如果我们要采集该设备的由运行变为停机状态的那一时刻,注意是抓住“那一时刻”即“那一刹那间”,也就是由信号“1”变为信号“0的那一时刻,这个“那一时刻”就是负跳变信号(下降沿信号)。
、为什么要采集这负跳变信号呢?例如A,B两台电机互为备用,当A停机就要快速启动B,此时就要应用A的运行状态信号的负跳变信号来启动B.。这就是常说的“沿触发”。
、正跳变同理。当我们要记录某设备(例如电机)的运行时间时,就要应用运行状态信号的正跳变信号(上升沿信号)来启动计时。

提问者对于答案的评价:
谢谢!!!!!!!!麻烦问下阿鸣老师,如果用到大量FP指令,我用的都是M地址。感觉程序看起来好乱,怎么避免这种情况。是不是只能用FB块然后使用DB来用。我现在用OB10从0点开始每小时触发,然后将一天分为3个8小时时间段。但是如果掉电,几时就不准了,求问,OB100里面我提取系统时间以后,怎么判断距离0点过去了几小时,即时间里面小时作差值。

最佳答案作者回复:
1、都是M地址。感觉程序看起来好乱?其实有规律地应用不会乱的。
2、如果掉电重启后需要重新设定系统是钟,详见:
参见《如何同步操作面板与S7-200/300/400 控制器间的日期和时间》的例子:
http://support.automation.siemens.com/CN/llisapi.dll?func=cslib.csinfo&objId=34281179&load=treecontent&lang=zh&siteid=cseus&aktprim=0&objaction=csview&extranet=standard&viewreg=CN

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc243390.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2018年12月1日
下一篇 2018年12月1日

相关推荐