AB 罗克韦尔 PLC 用公式实现线性函数
我给你最标准、最通用、所有 AB 系列都能用的公式实现方法,梯形图 + ST 文本双版本,一步一步照着做就能用。
一、AB PLC 线性函数标准公式
你要实现的是:y = kx + b
在工控里,标准写法是:
y = ( (x - x_min) × (y_max - y_min) ) / (x_max - x_min) + y_min
二、你只需要 4 个参数
x:输入值(自变量,比如温度、计数器、AI、时间)
x_min、x_max:输入范围
y_min、y_max:输出范围(模拟量 AO / 控制目标)
y:最终输出值
三、最清晰:结构化文本 ST 实现
AB 所有 PLC(Logix5000 / Micro800)都支持,最直观、最不容易错。
1. 先定义变量(REAL 类型)
st
2. 直接写公式
st
// 线性函数公式 y := ((x - x_min) * (y_max - y_min)) / (x_max - x_min) + y_min; // 限幅保护(必须加,防止超量程) y := LIMIT( y_min, y, y_max );
3. 送给模拟量输出 AO
st
// 例:4-20mA 对应 6241~31206 Local:2:O.Ch0Data := REAL_TO_INT(y);
四、梯形图实现(纯指令,不用 SCP)
按顺序用这 5 个指令:
SUB 减法
SUB 减法
MUL 乘法
DIV 除法
ADD 加法
梯形图步骤
plaintext
1. x - x_min → A 2. y_max - y_min → B 3. A × B → C 4. C ÷ (x_max - x_min) → D 5. D + y_min → y
指令对应:
plaintext
SUB x, x_min, A SUB y_max, y_min, B MUL A, B, C SUB x_max, x_min, E DIV C, E, D ADD D, y_min, y LIMIT y_min, y, y_max // 最后限幅
五、超实用例子
需求
输入 x:0 ~ 1000输出 AO:4-20mA → 6241 ~ 31206
公式计算
plaintext
y = ((x - 0) * (31206 - 6241)) / (1000 - 0) + 6241
ST 代码
st
x := 计数器D0; x_min := 0.0; x_max := 1000.0; y_min := 6241.0; y_max := 31206.0; y := ((x - x_min) * (y_max - y_min)) / (x_max - x_min) + y_min; y := LIMIT(y_min, y, y_max); Local:2:O.Ch0Data := REAL_TO_INT(y);
六、关键注意事项
必须用 REAL 浮点数运算不要用 INT,会丢精度、输出不准。
必须加 LIMIT 限幅防止 x 超范围导致 AO 输出超限。
AO 模块必须设为:Raw 格式不要用工程单位模式,否则公式无效。
4-20mA 固定范围6241 = 4mA31206 = 20mA。


