一直在nuo奔
级别: 探索解密
精华主题: 0
发帖数量: 47 个
工控威望: 175 点
下载积分: 745 分
在线时间: 112(小时)
注册时间: 2016-12-07
最后登录: 2024-11-25
查看一直在nuo奔的 主题 / 回贴
楼主  发表于: 2021-07-09 16:25
一个很简单的题目,前两天面试时,公司出的考题。

难度很小,想想看看大家用最少的步数实现这个功能。最后我也会附上我的,对比下。

题目:按下启动后,灯1亮3秒后灭2秒,然后灯2亮3秒后灭2秒,循环三次。

yzdz66
级别: 探索解密
精华主题: 0
发帖数量: 60 个
工控威望: 162 点
下载积分: 640 分
在线时间: 51(小时)
注册时间: 2016-09-23
最后登录: 2024-09-13
查看yzdz66的 主题 / 回贴
1楼  发表于: 2021-07-17 17:21
IF bButton AND NOT ButtonOld  THEN
    wStep:=10;
END_IF;

CASE wStep OF
10:
     qLight1:=TRUE;
   IF TON1.Q THEN
     qLight1:=FALSE;
     wStep:=20;
   END_IF;
20:
  IF TON2.Q THEN
     wStep:=30;
  END_IF;
30:
     qLight2:=TRUE;
     IF TON3.Q THEN
       qLight2:=FALSE;
        wStep:=40;
     END_IF;
  40:
    IF TON4.Q THEN
        wStep:=50;
    END_IF;
  50:
    wCount:=wCount+1;
    IF wCount>=3 THEN
      wStep:=0;
     ELSE
       wStep:=10;
    END_IF;  
END_CASE;    




TON1(IN:= qLight1 ,PT:= T#3S);    
TON2(IN:= NOT qLight1 ,PT:= T#2S);

TON3(IN:= qLight2 ,PT:= T#3S);    
TON4(IN:= NOT qLight2 ,PT:= T#2S);
ButtonOld:=bButton;