安川 PLC(以MP 系列、CP 系列、GL 系列为主,编程软件MPE720)中,实现二次曲线函数 y = ax² + bx + c 完全可行。核心是用浮点数运算指令(F 型)分步拆解公式,配合数据类型转换,精度高、通用性强。
一、二次曲线公式与变量定义
1. 标准二次函数
y = a·x² + b·x + c
x:输入变量(AI、计数器、位置、时间等)
a, b, c:二次系数、一次系数、常数(可设为常数或可调参数)
y:输出结果(给 AO、伺服目标、温度 / 压力控制)
2. 变量规划(安川 REAL/FLOAT 格式)
建议用32 位浮点数(REAL/FLOAT),避免整数截断误差:
X:REAL —— 输入值A:REAL —— 二次项系数B:REAL —— 一次项系数C:REAL —— 常数项X2:REAL —— x² 中间值AX2:REAL —— a·x²BX:REAL —— b·xY:REAL —— 最终输出
二、安川 PLC 浮点数运算指令(MPE720)
安川梯形图中,浮点运算以 F 开头:
ADDF:浮点加法
SUBF:浮点减法
MULF:浮点乘法
DIVF:浮点除法
MOVF:浮点传送
LIMITF:浮点限幅(保护输出)
三、梯形图分步实现
步骤 1:输入 x 转换为浮点数(如 x 是 INT)
如果 x 来自 AI/IW 整数,先转 REAL:
INT_TO_REAL 或用 MOVF 配合转换
plaintext
// 示例:AI整数 → 浮点数 INT_TO_REAL IN=IW0000 OUT=X
步骤 2:计算 x²
plaintext
MULF EN=ON IN1=X IN2=X OUT=X2 // X2 = X * X
步骤 3:计算 a・x²
plaintext
MULF EN=ON IN1=A IN2=X2 OUT=AX2 // AX2 = A * X²
步骤 4:计算 b・x
plaintext
MULF EN=ON IN1=B IN2=X OUT=BX // BX = B * X
步骤 5:求和 a・x² + b・x + c
plaintext
ADDF EN=ON IN1=AX2 IN2=BX OUT=Temp1 ADDF EN=ON IN1=Temp1 IN2=C OUT=Y
步骤 6:输出限幅(必加)
plaintext
LIMITF EN=ON IN=Y MIN=Y_min MAX=Y_max OUT=Y
完整梯形图示意
plaintext
// 1. 整数转浮点 INT_TO_REAL IW0000 → X // 2. X² MULF X, X → X2 // 3. aX² MULF A, X2 → AX2 // 4. bX MULF B, X → BX // 5. aX² + bX ADDF AX2, BX → Temp1 // 6. +c ADDF Temp1, C → Y // 7. 限幅 LIMITF Y, 0.0, 100.0 → Y // 8. 输出到AO(REAL→INT) REAL_TO_INT Y → QW0000
四、ST(文本)方式实现
安川MP 系列、GL 系列支持结构化文本(Motion Programming):
st
// 变量定义 VAR X: REAL; // 输入 A: REAL:=0.001; // 二次系数 B: REAL:=0.2; // 一次系数 C: REAL:=10.0; // 常数 Y: REAL; // 输出 END_VAR // 二次曲线公式 Y := A * X * X + B * X + C; // 限幅 Y := LIMIT(Y, 0.0, 100.0); // 输出到AO QW0000 := REAL_TO_INT(Y);
五、实战案例:温度抛物线控制
需求
输入:位置 X(0~1000mm)
输出:温度 Y(二次抛物线)
Y = 0.0005·X² − 0.3·X + 100
输出限幅:50~200℃
程序(ST)
st
X := REAL(DI0000); // 位置输入 A := 0.0005; B := -0.3; C := 100.0; Y := A*X*X + B*X + C; Y := LIMIT(Y, 50.0, 200.0); QW0000 := REAL_TO_INT(Y); // AO输出
六、关键注意事项(安川特有)
必须用浮点数运算(F 指令)
整数运算会丢失小数部分,曲线严重失真。
数据类型转换
AI/IW 整数 → INT_TO_REAL
AO/QW 输出 → REAL_TO_INT
系数精度
a、b、c 用 REAL 常量或可读写寄存器(方便现场微调)。
运算顺序
先乘除后加减,分步计算避免溢出。
LIMITF 保护
防止 X 超范围导致 Y 超限、损坏设备。
扫描周期影响
曲线变化快时,用 定时中断(固定周期) 执行计算。
七、常见问题与排查
输出不变化:检查 EN 使能、数据类型、系数是否正确
曲线跳变:未用浮点、整数截断 → 全程 REAL
超量程:加 LIMITF
系数调整无效:确认 A/B/C 为可写寄存器。

