信捷PLC模拟量输入FB块封装,主要应用于需要处理传感器信号(如温度、压力、流量等)的工业自动化场景。
技术交流社群
工控路上独行太难,懂的人一起交流才高效!有需要交流学习的可以扫码加微信,备注技术交流群,一起探讨 PLC 编程、模拟量调试、量程换算、故障排查等工控干货,资源共享、共同进步!
唯一联系方式
微信同号:15325623428
主要应用场合
多通道信号采集系统:在大型控制系统中,当需要采集数十甚至上百个模拟量信号时,通过封装统一的AI功能块,可以实现对所有通道的标准化处理,避免重复编程。标准化项目开发:对于需要批量复制的设备或系统(如水处理设备、空调机组、包装机械等),使用封装好的AI功能块可以实现“一次开发,多次复用”,极大提高开发效率。关键过程控制:在化工、制药、食品饮料等行业,对模拟量信号的处理要求高精度和高稳定性。封装功能块可确保所有通道使用相同的滤波、标定、诊断逻辑,避免人为错误。需要高级诊断与状态监控的系统:封装的功能块可以集成断线检测、信号超限报警等诊断功能,便于系统维护和故障排查。 封装的意义
提高编程效率:通过预先定义好的功能块,工程师可以直接调用这些模块化的代码,减少从头编写控制逻辑的时间,显著提升开发速度。增强代码可维护性:统一的封装使得代码结构更清晰、更易于理解和修改。当需要调整某个功能时,只需修改功能块本身,所有调用该块的地方都会自动更新。保证处理一致性:确保所有模拟量信号都经过相同的处理流程(如标定、滤波),从而保证了整个系统数据的一致性和可靠性。降低出错风险:避免了在每个程序中重复编写相同的代码,减少了因人为疏忽导致的编程错误。这其实是信捷PLC里专门用来处理模拟量标定的功能块(AiScale),看引脚名称就能明白,它的核心任务就是把采集到的原始电信号转换成有物理意义的工程值。下面我把每个引脚的定义、数据类型以及实际用法给你拆解一下:
输入引脚 (Inputs)
这些引脚位于功能块左侧,用于提供数据和控制参数。
AnalogInput (模拟量输入)
含义:这是需要被处理的原始模拟量数值。通常直接连接PLC的模拟量输入寄存器地址(如 AIW0 或 D 寄存器中存储的AD转换值)。数据类型:整型。作用:提供待转换的原始数据(例如:0-27648 或 0-32000 的数值)。Offset (偏置/偏移量)
含义:输出结果的一个基础偏移值。数据类型:通常为浮点型或整型。作用:在最终计算结果上加上或减去的一个固定值。如果不需要偏移,通常设为 0。Ish (Input High - 输入量程上限)
含义:模拟量输入信号的最大原始值。数据类型:整型。作用:定义物理传感器的最大输出对应的原始AD值。例如,如果传感器输出 4-20mA,对应 PLC 的 6400-32000,那么 Ish 可能设为 32000。Isl (Input Low - 输入量程下限)
含义:模拟量输入信号的最小原始值。数据类型:整型。作用:定义物理传感器的最小输出对应的原始AD值。例如,对应 4mA 信号,Isl 可能设为 6400。Osh (Output High - 输出工程量上限)
含义:用户希望转换后的工程量最大值。数据类型:浮点型或整型。作用:对应物理量的满量程值。例如,如果是压力传感器 0-1.6MPa,则 Osh 设为 1.6 或 1600(取决于精度需求)。Osl (Output Low - 输出工程量下限)
含义:用户希望转换后的工程量最小值。数据类型:浮点型或整型。作用:对应物理量的零点值。例如,压力传感器的零点,Osl 设为 0。Ratio (比率/比例系数)
含义:这是一个额外的增益调节系数。数据类型:浮点型。作用:用于微调输出结果。如果设为 1.0,则无影响;如果设为 0.5,输出减半。在某些简单的封装中,这个引脚可能用于直接乘以最终结果,或者作为线性转换公式中的斜率 <mrow><mi>k</mi></mrow>k 。输出引脚 (Outputs)
这些引脚位于功能块右侧,用于输出处理结果和状态。
AnalogOutput (模拟量输出/工程量)
含义:经过线性转换后的最终工程值。数据类型:通常为浮点型。作用:这是给上位机、触摸屏或PID控制回路使用的实际物理值(如:当前温度为 25.5℃,当前压力为 0.8MPa)。Warning (报警/警告)
<li>含义:状态指示信号。数据类型:布尔型。作用:当输入信号超出设定范围(如断线、超量程)或内部计算出错时,该位被置为 ON,用于触发系统报警。FB块封装
</li>// 0~16383 模拟量输入的范围
// 零点补偿
Data[1] := Analognput + Offset;
// 判断输入信号是否在范围内 当输入信号小于2ma 或者大于22ma时候 报警告
Warning:= (Data[1] <= -2458) OR (Data[1]>= 18022);
// 模拟量输入等比换算
Data[0] := ((Osh - OsL)* (Data[1] -Isl )/(Ish - Isl))+Isl;
// 模拟量最终输出值
AnalogOutput := Data[0] * Ratio;
众号免费学习工控知识、每天分享干货
用最简单的方式教最有用的东西