永发信息网

PLC控制 ST语言编程,目的是“酒瓶计数”!

答案:2  悬赏:60  手机版
解决时间 2021-03-23 11:37
  • 提问者网友:鐵馬踏冰河
  • 2021-03-22 15:03
1.我觉得可以用上升沿块来计数,也可以用CTU这个类型的块来计。以下是有点作茧自缚的算法编辑,不过这里有一个问题想请教各位!
IF Reset=True then 复位设置
Number:=0; //中间计数变量
Result_True:=0; //输出数目
END_IF;
If EN=True Then
CTU_1(CU:=Point,RESET:=First,PV:=Bottle);
One:=CTU_1.Q;
Acctual:=CTU_1.CV;
If Acctual=Bottle Then //判断是不是CTU计数周期的整数倍
First:=True;
MIDDLE:=0;
Number:=Number + Bottle;
Else if Acctual < Bottle and Acctual <>0 then //不是整数倍,也不是0
MIDDLE:=Acctual; //记录这个值
End_if;
End_if;
If Acctual=0 Then //重新计时(取消复位CTU)
First:=False;
End_if;
If Stop=True then //结束计数
Result_True:=MOVE(Number + MIDDLE);
Stop:=False;//跳出判断语句
End_if;
End_if;

这个程序里面,复位是这样进行的:
If Acctual=0 Then //重新计时(取消复位CTU)
First:=False;
End_if;
有没有更简单的复位方式,也就是记录到CTU的设定后,可以马上在进行新一次的正常记录。
大家再看这个循环跳出的方法,很幼稚。。。
If Stop=True then //结束计数
Result_True:=MOVE(Number + MIDDLE);
Stop:=False;//跳出判断语句
End_if;

有没有更好的方式!!!

最后,我想问,对于一个有使能的功能(有EN,ENO).是不是EN端为TRUE就执行一次?一个脉冲也可以引发?
最佳答案
  • 五星知识达人网友:低音帝王
  • 2021-03-22 15:40
对于一个有使能的功能(有EN,ENO).是不是EN端为TRUE就执行一次?一个脉冲也可以引发? 不是的 这个eno要看块的逻辑
全部回答
  • 1楼网友:人间朝暮
  • 2021-03-22 16:04
因为不能看到你的全部程序,所以不好判断,但有一种可能,就是你的复位只是一瞬间,也就是只有一个循环,而扫描周期一般很短几个毫秒,肉眼根本看不出来。 你的一开始将qx0.0置位,延时5秒后复位,但是下一个扫描周期又置位,所以定时器是从0-5循环,但输出好像常亮,其实不是常亮,而是你灭的时间不够长,不够你的眼睛发现而已,将灭的复位时间设置到0.5s以上就能看到了。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯