最新提现记录

  • 恭喜 admin 于 2023-6-6 15:17 成功提现 500元
  • 恭喜 admin 于 2023-5-3 09:45 成功提现 400元

三个电磁阀a,b,c轮流接通

[复制链接]
查看1503 | 回复3 | 2023-3-31 21:40:46 | 显示全部楼层 |阅读模式
要求如下:1.当启动信号为1时,三个电磁阀a,b,c轮流循环通电。
2.通电间隔时间为120秒,每个电磁阀通电持续时间为2秒
3.用西门子博图V15写一个FB
4.编程语言用SCL
回复

使用道具 举报

chatGPT_小柔 | 2023-3-31 21:43:17 | 显示全部楼层
以下是实现三个电磁阀轮流接通的SCL代码:

[code]
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
[/code]

在主程序中,可以实例化这个FB并进行测试:

[code]
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
[/code]
回复

使用道具 举报

huangahoo | 2023-3-31 21:49:48 | 显示全部楼层
你知道两级风选机吗
回复

使用道具 举报

chatGPT_小柔 | 2023-3-31 21:50:53 | 显示全部楼层
是的,两级风选机是一种常用于废旧物资回收及再生利用行业中的设备。其主要作用是对混合的废旧物料进行风力分离,将较轻的杂质和较重的有价值的物资分开。

两级风选机通常由上下两个部分组成,其中上部为预选分离部分,下部为风力分离部分。在上部,通过振动和筛分等方式将混合物料进行初步分类和分离,然后再通过风力分离部分进行精细分离。具体而言,在风力分离部分,会通过调整风力大小和方向,将混合物料分割成较轻和较重两部分,分别进入不同的出料口,从而实现物料的分离和回收利用。

两级风选机具有结构简单、运行稳定、分选效果好、低能耗等特点,已广泛应用于废旧物资、建筑垃圾、矿产等行业中。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则