CODESYS 实战:单开关量传感器实现旋转速度计算

引言

在工业自动化领域,实时监测机器的速度对于确保生产效率和安全性至关重要。本文将介绍如何使用 CODESYS 编写一个旋转速度计算器功能块,通过传感器信号计算设备的运行速度。

1  程序设计思路

本程序的核心是根据传感器的触发时间差来计算速度。通过检测传感器信号的上升沿,记录时间,并利用两次传感器触发的时间差计算速度。

2  程序代码

  • FUNCTION_BLOCK PM_RotationSpeedCalculator
  • VAR_INPUT
  •         Sensor : BOOL; // 感应传感器信号
  •         RunLength : REAL := 10; // 运行长度(单位:米)
  • END_VAR
  • VAR_OUTPUT
  •          Speed : REAL; // 速度(单位:米/秒)
  • END_VAR
  • VAR
  •           LastTime : TIME; // 上一次检测到传感器的时间
  •           CurrentTime : TIME; // 当前检测到传感器的时间
  •           TimeElapsed : REAL; // 两次检测的时间差(单位:秒)
  •           SensorTriggered : BOOL; // 传感器触发状态
  • END_VAR
  •  
  • (*
  • 版本记录:
  • 版本          日期              作者
  • V1         2024-1-13     工控老王
  • *)
  •  
  • IF Sensor AND NOT SensorTriggered THEN
  •        CurrentTime := TIME(); // 记录当前时间
  •        IF LastTime <> T#0s THEN
  •              TimeElapsed := TIME_TO_REAL(CurrentTime - LastTime) / 1000.0; // 计算时间差并转换为秒
  •              IF TimeElapsed > 0 THEN
  •                    Speed := RunLength / TimeElapsed; // 计算速度
  •              END_IF
  •        END_IF
  •        LastTime := CurrentTime; // 更新上一次时间
  •        SensorTriggered := TRUE;
  • ELSIF NOT Sensor THEN
  •        SensorTriggered := FALSE;
  • END_IF

3  代码解释

变量定义:

  • Sensor:检测传感器信号的布尔输入。

  • RunLength:设备的运行长度,单位为米。

  • Speed:输出速度,单位为米/秒。

  • LastTime和CurrentTime:分别记录上一次和当前的传感器触发时间。

  • TimeElapsed:计算两次传感器触发时间的差值。

  • SensorTriggered:防止连续多次检测干扰计时。

核心逻辑:

  • 检测传感器信号的上升沿,记录当前时间。

  • 计算与上一次触发时间的差值,得到时间间隔。

  • 使用时间间隔和运行长度计算速度。

程序运行展示

图片

设置设备的运行长度为10米,传感器设置为10秒的脉冲,计算出结果为0.998m/s。因为存在 PLC 扫描周期的影响,计算结果并不是1m/s。但对于在低速应用场景这个速度误差影响不大。

4  应用场景

该功能块适用于需要粗略监测速度的场合,精确检测请使用编码器。如传送带、旋转机械等。通过对传感器信号的检测,可以实施监控设备的运行状态,通过速度的变化,也可以感知到负载的变化。当异常时可以输出报警,确保设备的稳定性和安全性。

5  开源版本说明

该程序遵循开源原则,任何人都可以使用、修改和分发此代码。在使用前应进行充分的测试,修改代码时,请秉持分享精神,将您的改进和成果进行分享,以便更多人受益。

总结

通过 CODESYS 编写的旋转速度计算器功能块,能够粗略地通过传感器信号计算设备的运行速度。该方法简单高效,实现成本低,适用于多种工业自动化场景。

往期回顾

CODESYS 的简介及环境安装

在 CODESYS 平台,创建你的第一个项目

介绍 CODESYS 编程软件中的变量

CODESYS 编程软件基本语法和运算符介绍

CODESYS 的ST语言实战 - 主备切换及保养提示解决方案

CODESYS 中的字符串及其基本操作

PLC 数组处理难?看这一篇就够了

CODESYS 中的特殊数据类型 - 指针

图片

 

2024年08月

Tags: