PLC问答
> 欧姆龙CP1H PLC在模拟量输入读取时数值跳变过大,如何进行软件滤波?
欧姆龙CP1H PLC在模拟量输入读取时数值跳变过大,如何进行软件滤波?
我使用欧姆龙CP1H PLC的AD041模块读取压力传感器的4-20mA信号,但数值在稳定工况下仍跳变超过50,导致后续PID控制不稳定。
请问如何通过软件滤波提高稳定性?
4 个回答
✓ 最佳回答
模拟量口诀:接线先查地,屏蔽单端接,量程要对齐,数字要换算。
读数跳变查电源干扰,读数恒0查断线开路,读满量程32767查超限。
记住:模拟量九成问题在硬件,先量表后动程序。
模拟量读数不准,先按这个顺序查:一查接线,屏蔽层单端接地、信号线双绞,和动力线分开走,公共端(COM)必须接对,这是七八成的根因;二查通道配置,量程、滤波时间常数、断线检测设没设对,通道有没有被屏蔽;三查现场信号源,变送器供电够不够、负载阻抗匹配不匹配,拿万用表量实际电流/电压和PLC读到的对不对得上。
别上来就调程序,先拿表量,模拟量问题九成在硬件。
针对欧姆龙CP1H PLC模拟量输入跳变问题,推荐采用以下软件滤波方法:
1. 使用定时中断(如100ms周期)采集数据,通过均值滤波(取最近10次数据的平均值)降低噪声。在CX-Programmer中编写定时中断程序,用FIFO指令存储采样值并累加求平均。
2. 若跳变由瞬时干扰引起,可采用死区滤波:将当前值与上次值比较,差异小于设定阈值(如20)时保持原值。
3. 对于CP1H内置的AD功能,检查接线屏蔽层接地和电源隔离,同时将模拟量输入模块的积分时间设为20ms(对应50Hz工频干扰抑制)。
4. 在程序中使用MOV指令将滤波后值存入DM区,并配合SCL2指令进行量程转换(如0-6000对应0-10MPa)。建议在PLC启动时先采集10个样本做初始化滤波,避免初始值异常。最后,通过CX-Programmer的“采样表”功能实时监控滤波效果,逐步调整采样周期和阈值。
分享个真实案例:有个厂4-20mA压力读数跳变,拆了换模块、换屏蔽线都没用,最后发现是变送器和PLC的电源共用了同一个开关电源,电机启停一下电压波动,读数就跟着跳。
后来变送器单独供电,问题当场消失。
模拟量跳变先查电源和接地:信号地和电源地分开、屏蔽层只在PLC端接地、走线远离变频器,这三点做好能解决绝大部分干扰问题。