// 主程序
BEGIN
WHILE TRUE DO
BEGIN
// 检测开到位和关到位信号
IF OpenSignal THEN
ValveState := TRUE
ELSE IF CloseSignal THEN
ValveState := FALSE;
// 检测开超时和关超时报警
IF OpenTimeout > 0 THEN
BEGIN
IF OpenTime < 3600 THEN // 最大计时器为1小时
OpenTime := OpenTime + 1;
IF OpenTime >= 30 THEN // 开超时时间为30s
OpenTimeout := 0; // 停止计时
IF OpenTimeout = 0 THEN
// 发出开超时报警
// ...
END;
IF CloseTimeout > 0 THEN
BEGIN
CloseTimeout := CloseTimeout - 1;
IF CloseTimeout = 0 THEN
// 发出关超时报警
// ...
END;
// 主程序
BEGIN
WHILE TRUE DO
BEGIN
// 检测开到位和关到位信号
IF OpenSignal THEN
ValveState := TRUE
ELSE IF CloseSignal THEN
ValveState := FALSE;
// 检测开超时和关超时报警
IF OpenTimeout > 0 THEN
BEGIN
IF OpenTime < 3600 THEN // 最大计时器为1小时
OpenTime := OpenTime + 1;
IF OpenTime >= 30 THEN // 开超时时间为30s
OpenTimeout := 0; // 停止计时
IF OpenTimeout = 0 THEN
// 发出开超时报警
// ...
END;
IF CloseTimeout > 0 THEN
BEGIN
CloseTimeout := CloseTimeout - 1;
IF CloseTimeout = 0 THEN
// 发出关超时报警
// ...
END;