【问题标题】:Learning Structured Text, function block to controll a "pusher"学习结构化文本,控制“推动者”的功能块
【发布时间】:2018-10-13 01:10:56
【问题描述】:

我有 PC 编程(VB/C# .Net 和 PHP)的背景,正在学校学习 PLC 编程。在最近的一次测试中,我们在哪里创建了一个功能块,它将生产线的一个元素推入一个容器中。

现在,这很简单,所以我在我的代码中添加了一个警报,如果在 10 秒内没有完成操作,将激活“推动器”(因为没有更好的词)。

我的问题是推送器立即进入警报状态,它似乎相当有问题:(所以任何答案都会给出一些指导如何更好地构建我的代码,或者弄清楚为什么它会这么快进入警报状态...

(* INIT *)
(* Drive the pusher back if its out on init *)

IF M8002 THEN
        SkyvTilbake := TRUE; (* My "Function"/Step to retract the pusher *)
        Ferdig := FALSE; (*Let other components know that the pushers operation has completed *)
        SkyverUtMotor := FALSE; (*This is the engine output for driving the pusher out *)
        SkyverInnMotor := FALSE; (* This is the engine output for driving the pusher in *)
END_IF;

(* "Aktiver" is a input to activate the pusher *)
IF Aktiver THEN
    SkyvTilbake := FALSE;
    SkyvUt := TRUE; (* My "Function"/Step" to push the pusher out *)
    Ferdig := FALSE;
END_IF;

(* Push out step *)
IF SkyvUt AND NOT SkyvTilbake  AND NOT Alarm  THEN
    TON_1(IN:= SkyvUt ,PT:= AlarmTid ,Q:= Alarm ,ET:= TimeLeft );
    SkyverUtMotor := TRUE;

    (* When sensor out activates (input), retract the pusher *)
    IF SensorUte THEN
        SkyvUt := FALSE;
        SkyvTilbake := TRUE;    
        SkyverUtMotor := FALSE;
    END_IF;

(* retract the pusher as long as there are no alarms *)
ELSIF SkyvTilbake AND NOT Alarm THEN
    TON_2(IN:= SkyvTilbake  ,PT:= AlarmTid ,Q:= Alarm ,ET:= TimeLeft );
    SkyverInnMotor := TRUE;

     (* When it reach the normal position, activate "Ferdig" *)
     IF SensorInne THEN 
            SkyverInnMotor := FALSE;
            SkyvTilbake := FALSE;
            Ferdig := TRUE;
    END_IF;
END_IF;

(* When the alarm activates, stop all the engines *)
IF Alarm THEN
    SkyverUtMotor := FALSE;
    SkyverInnMotor := FALSE;
END_IF;

(* RESET ALARM *)
IF Reset THEN
    Alarm := 0;
    SkyvTilbake := TRUE;
END_IF;

PS。测试是在 12 月中旬进行的,但我希望了解更多关于结构化文本和设计 PLC 程序的信息。此外,该代码被设计为在 Mitsubishi FXCPU 中运行,并使用 GX Works 2 编写

【问题讨论】:

    标签: plc


    【解决方案1】:

    我没有看到您实际在哪里设置计时器的持续时间 (PT:= AlarmTid)。

    另外,由于我对三菱PLC不熟悉,定时器会自动复位吗?看起来一旦你的定时器开启,它就永远不会关闭。

    您可能还想考虑使用 'CASE 。 . . WHERE',它倾向于清理代码。

    【讨论】:

    • 嗨,感谢您的回答 :) 每次IN 变量变低时,我的 TON 都会重置。我会看看案例结构 :)
    • 啊哈:D 谢谢,那条评论解决了它;)问题是激活重置时 SkyvIn 没有被重置:)谢谢!
    猜你喜欢
    • 1970-01-01
    • 2015-08-28
    • 1970-01-01
    • 2021-05-06
    • 1970-01-01
    • 2022-12-09
    • 1970-01-01
    • 2011-10-03
    • 1970-01-01
    相关资源
    最近更新 更多