西门子200smart模拟量滤波防抖程序,能实现电流电压和热电阻模拟量信号的采集,有滤波,有高位和低位报警,采用for循环指令和间接寻址,让程序简单好用,并且针对程序,录制了视频讲解,详细的介绍了程序的思路,值得拥有

在自动化控制领域,西门子200smart系列PLC应用广泛。今天就给大家分享一个超实用的模拟量滤波防抖程序,它能轻松实现电流、电压以及热电阻模拟量信号的采集,同时具备滤波、高位和低位报警功能哦,关键是通过for循环指令和间接寻址,让程序变得简单又好用。

一、程序设计思路

我们的目标是对不同类型的模拟量信号进行精准采集和处理。利用for循环指令可以高效地对多个模拟量通道进行相同操作,而间接寻址则增强了程序的灵活性,能根据不同需求动态处理数据。

二、代码实现

初始化部分

// 定义模拟量通道数量
LD SM0.1
MOVW 3, VW0  

// 初始化滤波系数
MOVR 0.8, VD10  

这部分代码,当PLC首次扫描时(SM0.1接通一个扫描周期),我们设定了模拟量通道数量为3(存于VW0),同时设置了滤波系数为0.8(存于VD10)。这个滤波系数决定了新采集值和之前滤波值在最终结果中的占比,0.8意味着80%是之前的滤波值,20%是新采集值,可有效平滑数据。

采集与滤波部分

// 开始for循环
FOR VW0, 0, 2
    // 间接寻址获取模拟量输入值
    MOVW *AC0, AIW[AC1]  
    // 滤波计算
    ITB *AC0, VB20  
    MOVR VD[AC2], VD30  
    -R VD30, VD40  
    *R VD10, VD40  
    +R VD40, VD30  
    DTIR VD30, VB20  
    MOVW *AC0, VW[AC3]  
NEXT  

这里通过FOR指令循环处理3个模拟量通道(从0到2)。在循环内,利用间接寻址从模拟量输入模块获取原始值(MOVW AC0, AIW[AC1])。之后进行滤波计算,先将通道号转换为字节存于VB20,再把之前的滤波值存到VD30,算出差值VD40,乘以滤波系数后与VD30相加得到新的滤波值,最后转换回整数存到对应通道的存储区(MOVW AC0, VW[AC3]) 。

报警部分

// 高位报警检查
FOR VW0, 0, 2
    MOVW VW[AC3], VW50  
    LDW>= VW50, 32000  
    = M[AC4]  
NEXT  

// 低位报警检查
FOR VW0, 0, 2
    MOVW VW[AC3], VW60  
    LDW<= VW60, 8000  
    = M[AC5]  
NEXT  

高位报警部分,循环读取每个通道滤波后的值,与32000比较,如果大于等于则置位对应的报警位(M[AC4]);低位报警类似,与8000比较,如果小于等于则置位相应报警位(M[AC5])。

三、视频讲解助力理解

为了让大家更清晰地明白程序的思路和运行过程,我专门录制了视频讲解。在视频里,从程序的构思到每一行代码的含义,再到实际运行效果都有详细介绍。相信通过视频结合代码,能帮助大家快速掌握这个实用的模拟量滤波防抖程序,无论是用于项目开发还是学习研究,都绝对值得拥有。希望这个分享能给各位自动化爱好者和工程师们带来帮助,让我们在自动化控制的道路上越走越顺!

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐