安全光幕Muting功能程序逻辑设计

发布于:2025-08-03 ⋅ 阅读:(15) ⋅ 点赞:(0)

要实现安全光幕的Muting功能(物料通过时临时屏蔽光幕),使用4个光电传感器(A、B、C、D)并满足安全标准(如IEC 62046),以下是完整的程序逻辑设计,采用状态机实现:


传感器布置

  • 入口侧:传感器A(外侧)、传感器B(内侧)

  • 出口侧:传感器C(内侧)、传感器D(外侧)

  • 触发顺序

    • 物料进入:先遮挡A → 再遮挡B

    • 物料离开:先遮挡C → 再遮挡D


程序逻辑(状态机)

状态定义
  • STATE_0:等待物料进入(初始状态)

  • STATE_1:A已触发,等待B

  • STATE_2:Muting激活(A+B触发完成)

  • STATE_3:等待物料离开(C已触发,等待D)

  • STATE_4:Muting解除(C+D触发完成)

变量定义
  • state:当前状态(0-4)

  • timer_in:入口超时计时器(检测A→B是否超时)

  • timer_out:出口超时计时器(检测C→D是否超时)

  • MutingActive:Muting功能输出(True=屏蔽光幕)


伪代码实现

pascal

// 初始化
state = STATE_0;
MutingActive = False;
timer_in.Stop();
timer_out.Stop();

// 主循环
WHILE TRUE DO
  // 读取传感器状态(True=遮挡)
  A = ReadSensorA();
  B = ReadSensorB();
  C = ReadSensorC();
  D = ReadSensorD();

  CASE state OF
    STATE_0: // 等待进入
      IF A AND NOT B THEN
        state = STATE_1;
        timer_in.Start(TIMEOUT_IN); // 启动入口超时计时(如2秒)
      ELSIF B THEN // 错误:B先于A触发
        TriggerSafetyStop(); // 触发安全停止
      END_IF

    STATE_1: // A已触发,等待B
      IF B THEN
        state = STATE_2;
        MutingActive = True; // 激活Muting
        timer_in.Stop();
      ELSIF NOT A OR timer_in.Timeout THEN // A提前解除或超时
        state = STATE_0;
        timer_in.Stop();
      END_IF

    STATE_2: // Muting激活,等待离开
      IF C AND NOT D THEN
        state = STATE_3;
        timer_out.Start(TIMEOUT_OUT); // 启动出口超时计时
      ELSIF D THEN // 错误:D先于C触发
        TriggerSafetyStop();
        MutingActive = False;
        state = STATE_0;
      END_IF

    STATE_3: // C已触发,等待D
      IF D THEN
        state = STATE_4;
        MutingActive = False; // 解除Muting
        timer_out.Stop();
      ELSIF NOT C OR timer_out.Timeout THEN // C提前解除或超时
        TriggerSafetyStop();
        MutingActive = False;
        state = STATE_0;
        timer_out.Stop();
      END_IF

    STATE_4: // 完成一次循环
      state = STATE_0; // 复位至初始状态
  END_CASE
END_WHILE

关键安全机制

  1. 顺序校验

    • 进入时:必须按 A→B 顺序触发(若先触发B则报错)。

    • 离开时:必须按 C→D 顺序触发(若先触发D则报错)。

  2. 超时保护

    • timer_in:A触发后,B必须在设定时间内触发(否则复位)。

    • timer_out:C触发后,D必须在设定时间内触发(否则安全停止)。

  3. 中途中断处理

    • 状态1中A提前解除 → 复位状态机。

    • 状态3中C提前解除 → 触发安全停止。

  4. 防多物料冲突

    • 在STATE_2/3状态时,忽略新的A/B触发,确保单次只处理一个物料。


物理层要求

  1. 传感器安装间距需大于人体最小安全尺寸(通常 > 150mm)。

  2. 使用独立的安全PLC或安全继电器实现逻辑。

  3. 光幕屏蔽时间必须短于安全标准允许的最大值(通常 < 500ms)。


时序图示例

text

物料进入: |--A--|------|--B--|          → Muting激活
物料离开:          |--C--|------|--D--|  → Muting解除
时间线:   t0     t1    t2     t3     t4

此设计符合安全标准,确保只有物料按正确方向通过时屏蔽光幕,人体误入时立即停止设备。实际部署前需通过安全认证(如SIL2/PLd)。