三个电磁阀a,b,c轮流接通
要求如下:1.当启动信号为1时,三个电磁阀a,b,c轮流循环通电。2.通电间隔时间为120秒,每个电磁阀通电持续时间为2秒
3.用西门子博图V15写一个FB
4.编程语言用SCL 以下是实现三个电磁阀轮流接通的SCL代码:
FUNCTION_BLOCK FBRotateValve
TITLE = \"Rotate valve function block\"
VAR_INPUT
StartSignal : BOOL; // 启动信号
END_VAR
VAR_OUTPUT
ValveA : BOOL; // 电磁阀A输出
ValveB : BOOL; // 电磁阀B输出
ValveC : BOOL; // 电磁阀C输出
END_VAR
VAR
Timer1 : TON; // 计时器1,用于计算通电持续时间
Timer2 : TON; // 计时器2,用于计算通电间隔时间
ValveIndex : INT := 0; // 当前接通的电磁阀编号,0表示未接通任何电磁阀
LastTime : TIME := T#0s; // 上次接通电磁阀的时间点
END_VAR
// Constants
CONST
SwitchInterval : TIME := T#120s; // 通电间隔时间
ValveDuration : TIME := T#2s; // 电磁阀通电持续时间
END_CONST
// Main logic
BEGIN
IF StartSignal THEN
// 计时器2判断是否需要切换电磁阀
IF NOT Timer2(IN := TRUE, PT := SwitchInterval) THEN
// 未到切换时间,继续保持当前电磁阀通电
CASE ValveIndex OF
0:
ValveA := FALSE;
ValveB := FALSE;
ValveC := FALSE;
1:
ValveA := TRUE;
ValveB := FALSE;
ValveC := FALSE;
2:
ValveA := FALSE;
ValveB := TRUE;
ValveC := FALSE;
3:
ValveA := FALSE;
ValveB := FALSE;
ValveC := TRUE;
END_CASE
ELSE
// 到达切换时间,切换到下一个电磁阀
ValveIndex := ValveIndex + 1;
IF ValveIndex > 3 THEN
ValveIndex := 1;
END_IF
LastTime := TIMER() - ValveDuration; // 记录切换时间,用于计时器1的时间累积
END_IF
// 计时器1控制电磁阀通电持续时间
Timer1(IN := (ValveIndex <> 0 AND Timer2.Q)), PT := ValveDuration;
IF Timer1.Q THEN
ValveA := FALSE;
ValveB := FALSE;
ValveC := FALSE;
ELSE
CASE ValveIndex OF
0:
ValveA := FALSE;
ValveB := FALSE;
ValveC := FALSE;
1:
ValveA := TRUE;
ValveB := FALSE;
ValveC := FALSE;
2:
ValveA := FALSE;
ValveB := TRUE;
ValveC := FALSE;
3:
ValveA := FALSE;
ValveB := FALSE;
ValveC := TRUE;
END_CASE
END_IF
ELSE
// 停止信号,关闭所有电磁阀
ValveA := FALSE;
ValveB := FALSE;
ValveC := FALSE;
ValveIndex := 0;
Timer1(IN := FALSE);
Timer2(IN := FALSE);
END_IF
END_FUNCTION_BLOCK
在主程序中,可以实例化这个FB并进行测试:
PROGRAM Main
TITLE = \"Main program\"
VAR
FBRotate : FBRotateValve; // 实例化轮流接通电磁阀的函数块
StartSignal : BOOL := FALSE; // 启动信号
END_VAR
// Main logic
BEGIN
// 模拟启动信号
IF T#1s THEN
StartSignal := TRUE;
ELSE
StartSignal := FALSE;
END_IF
// 调用轮流接通电磁阀的函数块
FBRotate(StartSignal := StartSignal);
// 显示当前电磁阀状态
IF FBRotate.ValveA THEN
// 电磁阀A接通中
// ...
END_IF
IF FBRotate.ValveB THEN
// 电磁阀B接通中
// ...
END_IF
IF FBRotate.ValveC THEN
// 电磁阀C接通中
// ...
END_IF
END_PROGRAM
你知道两级风选机吗 是的,两级风选机是一种常用于废旧物资回收及再生利用行业中的设备。其主要作用是对混合的废旧物料进行风力分离,将较轻的杂质和较重的有价值的物资分开。
两级风选机通常由上下两个部分组成,其中上部为预选分离部分,下部为风力分离部分。在上部,通过振动和筛分等方式将混合物料进行初步分类和分离,然后再通过风力分离部分进行精细分离。具体而言,在风力分离部分,会通过调整风力大小和方向,将混合物料分割成较轻和较重两部分,分别进入不同的出料口,从而实现物料的分离和回收利用。
两级风选机具有结构简单、运行稳定、分选效果好、低能耗等特点,已广泛应用于废旧物资、建筑垃圾、矿产等行业中。
页:
[1]