OSCAT 百叶窗和自动校准

问题描述

我正在使用 OSCAT 库来控制百叶窗。我的 PLC 是 Wago 的 PFC200,我使用的是 e!Cockpit。一切正常,但我想在 BLIND_CONTROL_S 功能块中内置断电后摆脱自动校准。

正如最后一句中所写的,“如果输入 UP 和 DN 均为 FALSE,则可以阻止自动校准”。它实际上停止校准百叶窗(基本上是向上然后向下移动),但之后我无法再控制百叶窗 - 向上和向下按钮不起作用。

enter image description here

我几乎尝试了一切,但都没有运气。使用这种方法按钮可以正常工作:

BlindControl(
    UP := BlindSecurity.QU,DN := BlindSecurity.QD,S_IN := BlindSecurity.STATUS,PI := BlindSecurity.PO
);

在这种情况下,有一个我不喜欢的自动校准。所有的百叶窗都在上升然后下降。我要在一周内搬进新房子,一开始我会大量修改我的程序,我不希望百叶窗随着每次下载而移动。

使用这种方法关闭校准(如文档最后一句中所建议):

BlindControl(
    UP := FALSE,DN := FALSE,PI := BlindSecurity.PO
);

BlindControl.UP := BlindSecurity.QU;
BlindControl.DN := BlindSecurity.QD;

但是按钮不再起作用。

更新:整个问题可能是由于 BLIND_INPUT 引起的,因为当 PLC 启动时 QU 和 QA 自动设置为 TRUE:

enter image description here

而且我没有找到使它们为假的方法。即使我将强制设置为 false,然后在下一个 PLC 循环中它们也会再次变为 true。直到百叶窗在设定的时间内上升/下降。

解决方法

PROGRAM PLC_PRG
    VAR
        xInit: BOOL := FALSE; (* Initialize PLC *)
    END_VAR

    BlindControl(
        UP := BlindSecurity.QU AND xInit,DN := BlindSecurity.QD AND xInit,S_IN := BlindSecurity.STATUS,PI := BlindSecurity.PO
    );

    xInit := TRUE;
END_PROGRAM

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...