如何解决OSCAT BUILDING 功能块 BLIND_NIGHT 似乎不起作用
我遇到了 BLIND_NIGHT 问题。这个功能块在我的情况下似乎不起作用。日落时分我已经连接到 PLC 什么也没发生 我的代码如下所示:
FUNCTION_BLOCK Blind
VAR_INPUT
xBlindDown: BOOL;
xBlindUp: BOOL;
xAutoSunset: BOOL := FALSE;
xAutoSunrise: BOOL := FALSE;
tSunsetoffset: TIME;
tSunriSEOffset: TIME;
END_VAR
VAR_OUTPUT
xBlindControlUp: BOOL;
xBlindControlDown: BOOL;
END_VAR
VAR
BlindInput: OSCAT_BUILDING.BLIND_INPUT := (SINGLE_SWITCH := FALSE,MAX_RUNTIME := T#25S,MANUAL_TIMEOUT := T#60M,MASTER_MODE := TRUE,IN := TRUE);
BlindControl: OSCAT_BUILDING.BLIND_CONTROL_S := (T_UP:=T#20S,T_DN:=T#18S);
BlindNight: OSCAT_BUILDING.BLIND_NIGHT;
BlindSecurity: OSCAT_BUILDING.BLIND_Security;
SunTime: OSCAT_BASIC.SUN_TIME := (LATITUDE := rLatitude,LONGITUDE := rLongitude);
CurrentDateTimeUTC: DATE_AND_TIME;
CurrentDateUTC: DATE;
END_VAR
这是代码:
CurrentDateTimeUTC := FuGetDateAndTime();
CurrentDateUTC := TO_DATE(CurrentDateTimeUTC);
SunTime(UTC := CurrentDateUTC);
BlindInput(
POS:= BlindControl.POS,S1:= xBlindUp,S2:= xBlindDown,);
//GVL.xInit is a global variable which is set to true after first PLC cycle
//this switch of IN state is required to stop moving of blinds after a power failure of PLC update
IF (GVL.xInit = TRUE) THEN
BlindInput.IN := FALSE;
END_IF
BlindNight(
UP := BlindInput.QU,DN := BlindInput.QD,S_IN := BlindInput.STATUS,PI := BlindInput.PO,DTIN := CurrentDateTimeUTC,SUNRISE := SunTime.SUN_RISE,SUNRISE_OFFSET := tSunriSEOffset,SUNSET := SunTime.SUN_SET,SUNSET_OFFSET := tSunsetoffset,E_NIGHT := xAutoSunset,E_DAY := xAutoSunrise
);
BlindSecurity(
UP := BlindNight.QU,DN := BlindNight.QD,S_IN := BlindNight.STATUS,PI := BlindNight.PO
);
// in order to stop moving blinds after a power failure or PLC update we need to check if PLC has been initialized
BlindControl(
UP := BlindSecurity.QU AND GVL.xInit,DN := BlindSecurity.QD AND GVL.xInit,S_IN := BlindSecurity.STATUS,PI := BlindSecurity.PO
);
xBlindControlDown := BlindControl.MD;
xBlindControlUp := BlindControl.MU;
我也遇到了一个问题,即断电后百叶窗会自动打开 - 我不希望这就是我引入 xInit 全局变量的原因,该变量默认为 false 并在第一个之后设置为 true PLC循环。多亏了 PLC 的这种重启,百叶窗不会向上移动。 我正在使用 IN := FALSE for BLIND_INPUT 测试整个代码,但它也没有帮助,BLIND_NIGHT 不起作用。
您发现这里有什么明显的问题吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。