恭喜,你发布的帖子
发布于 2023-04-15 08:16:22
4楼
当前用SCL编写一段模拟量报警程序,功能为工程量数值达到报警设定值,延时一段时间后,触发报警,上升沿指令和延时计时都是用SCL实现的。
///////////////////
这个是一个逻辑判断,用LAD 很简单的就可以实现,就是一个数据比较+ 通电延时。这里用SCL 显得效率低。
假如你有很太多个这样的数据比较判断,用SCL数组是比较合适的。
example
VAR_INPUT
HH_level_set,H_level_set, L_level_set,LL_level_set:REAL; //报警液位设定值
Act_level:REAL; // 实际液位值
Alarm_switch_ON:BOOL:=false; // 报警开关
FP_1Sec:BOOL; // 1秒时钟
Fault_Reset:BOOL; // 故障复位
ODT_Time:INT; //故障检测时间 单位为 秒
END_VAR
VAR_IN_OUT
Impls_1Sec_Aux:BOOL;
store_button:BOOL;
END_VAR
VAR_OUTPUT
Alarm_enable:BOOL; //报警使能
Impls_1Sec:BOOL;
HH_alarm,H_alarm,L_alarm,LL_alarm:BOOL; // 报警输出
ODT_HH,ODT_H,ODT_L,ODT_LL:INT; //时间
END_VAR
VAR_TEMP
cond1,cond2,cond3,cond4:BOOL;
END_VAR
//单按钮启动/停止 液位报警开关,使能或禁止报警
Alarm_enable:= ( Alarm_switch_ON AND NOT store_button ) XOR Alarm_enable ;
store_button:= Alarm_switch_ON;
// 定制 时钟上升沿
Impls_1Sec:= FP_1Sec AND (NOT Impls_1Sec_Aux);
Impls_1Sec_Aux:= FP_1Sec;
//条件判断
cond1:= Alarm_enable AND (Act_level >= HH_level_set);
cond2:= Alarm_enable AND (Act_level >= H_level_set) AND (Act_level < HH_level_set) ;
cond3:= Alarm_enable AND (Act_level > LL_level_set) AND (Act_level <= L_level_set) ;
cond4:= Alarm_enable AND (Act_level <= LL_level_set);
//逻辑处理,此处实际是做了一个通电延时ODT
IF NOT Fault_Reset THEN
IF NOT cond1 THEN
ODT_HH:= 0;
HH_alarm:=FALSE;
ELSE
IF Impls_1Sec AND NOT HH_alarm THEN
ODT_HH:= ODT_HH + 1;
END_IF;
HH_alarm:= ODT_HH >= ODT_Time;
END_IF;
// cond 1,2,3,4 逻辑处理是一样的。
IF NOT cond2 THEN
ODT_H:= 0;
H_alarm:=FALSE;
ELSE
IF Impls_1Sec AND NOT H_alarm THEN
ODT_H:= ODT_H + 1;
END_IF;
H_alarm:= ODT_H >= ODT_Time;
END_IF;
IF NOT cond3 THEN
ODT_L:= 0;
L_alarm:=FALSE;
ELSE
IF Impls_1Sec AND NOT L_alarm THEN
ODT_L:= ODT_L + 1;
END_IF;
L_alarm:= ODT_L >= ODT_Time;
END_IF;
IF NOT cond4 THEN
ODT_LL:= 0;
LL_alarm:=FALSE;
ELSE
IF Impls_1Sec AND NOT LL_alarm THEN
ODT_LL:= ODT_LL + 1;
END_IF;
LL_alarm:= ODT_LL >= ODT_Time;
END_IF;
ELSE
Impls_1Sec:=false;
ODT_HH:= 0; ODT_H:= 0; ODT_L:= 0; ODT_LL:= 0;
HH_alarm:=FALSE; H_alarm:=FALSE; L_alarm:=FALSE; LL_alarm:=FALSE;
END_IF;
END_FUNCTION
以上仅为个人意见,希望对你有帮助
请填写推广理由:
分享
只看
楼主