返回主站|会员中心|保存桌面

欧姆龙服务商    

欧姆龙继电器|欧姆龙传感器|欧姆龙开关|欧姆龙温控器|欧姆龙电源

联系方式
  • 联系人:方经理
  • 电话:13073017555
新闻分类
  • 暂无分类
站内搜索
 
首页 > 新闻中心 > 如何在欧姆龙PLC中使用公式运算实现三次曲线函数?
新闻中心
如何在欧姆龙PLC中使用公式运算实现三次曲线函数?
发布时间:2026-04-05        浏览次数:5        返回列表

欧姆龙 PLC(CP 系列 / CJ 系列 / NJ 系列)中实现 三次曲线函数 y = ax³ + bx² + cx + d,核心是:用浮点数运算分步拆解公式 + 数据类型转换 + 输出限幅。欧姆龙支持 梯形图(LD)结构化文本(ST) 两种方式,ST 更简洁、不易出错


一、三次函数与变量规划

标准公式

y = a·x³ + b·x² + c·x + d

  • x:输入(AI、位置、计数器、时间)

  • a, b, c, d:系数(REAL 浮点)

  • y:输出(给 AO、伺服、温度 / 压力)

变量(推荐 32 位 REAL 浮点)

  • X:REAL —— 输入

  • A:REAL —— x³ 系数

  • B:REAL —— x² 系数

  • C:REAL —— x 系数

  • D:REAL —— 常数

  • Y:REAL —— 结果


二、欧姆龙关键浮点指令(CX-Programmer / Sysmac Studio)

1. 梯形图(CP/CJ 常用)

  • FLT:INT → REAL

  • FADD:浮点加法

  • FSUB:浮点减法

  • **F / FMUL:浮点乘法

  • LIMIT / LIMITF:浮点限幅

2. ST 语言(NJ/NX 推荐)

直接写表达式:

st

Y := A * X**3 + B * X**2 + C * X + D;

或分步:

st

X3 := X * X * X;
X2 := X * X;
Y := A*X3 + B*X2 + C*X + D;

三、ST 文本实现(最推荐,NJ/NX/CP 支持)

1. 变量声明(Sysmac Studio)

st

// 1. 整数转浮点
X := INT_TO_REAL(X_Int);

// 2. 计算 x², x³
X2 := X * X;
X3 := X2 * X;

// 3. 三次公式
Y := A * X3 + B * X2 + C * X + D;

// 4. 限幅(防止超量程)
Y := LIMIT(Y, 0.0, 27648.0);

// 5. 转整数输出到 AO
Y_Out := REAL_TO_INT(Y);

四、梯形图实现(CP1H/CJ2M 分步指令)

步骤 1:INT → REAL(FLT)

plaintext

FLT  D100  D10     // D100(INT) → D10-D11(REAL: X)

步骤 2:X²(FMUL)

plaintext

FMUL D10  D10  D20 // D20-D21 = X²

步骤 3:X³(再乘 X)

plaintext

FMUL D20  D10  D30 // D30-D31 = X³

步骤 4:a・x³

plaintext

FMUL D30  D1000 D40 // D40-D41 = A·X³

步骤 5:b・x²

plaintext

FMUL D20  D1002 D50 // D50-D51 = B·X²

步骤 6:c・x

plaintext

FMUL D10  D1004 D60 // D60-D61 = C·X

步骤 7:求和 aX³+bX²+cX+d

plaintext

FADD D40  D50  D70
FADD D70  D60  D80
FADD D80  D1006 D90 // D90-D91 = Y

步骤 8:限幅

plaintext

LIMIT D90  D1010 D1012 D90
// MIN=D1010-D1011, MAX=D1012-D1013

步骤 9:REAL → INT

plaintext

FINT D90  D200    // D200 = 输出 AO

五、完整实战案例

需求

  • 输入 X:0~1000(位置)

  • 公式:y = 0.000001x³ − 0.001x² + 0.5x + 100

  • 输出:AO 0–10V(0~27648)

  • 限幅:0~27648

ST 完整代码

st

// 输入
X_Int := D100;          // AI 输入
X := INT_TO_REAL(X_Int);

// 系数
A := 0.000001;
B := -0.001;
C := 0.5;
D := 100.0;

// 三次计算
X2 := X * X;
X3 := X2 * X;
Y := A*X3 + B*X2 + C*X + D;

// 限幅
Y := LIMIT(Y, 0.0, 27648.0);

// 输出
D200 := REAL_TO_INT(Y);

六、欧姆龙特有注意事项(必看)

  1. 必须用 REAL 浮点

    • 整数运算会导致曲线失真、跳变

  2. 32 位浮点占用双字

    • D10 = 低位,D11 = 高位(IEEE 754)。

  3. 数据类型转换

    • AI 整数 → FLT / INT_TO_REAL

    • AO 输出 → FINT / REAL_TO_INT

  4. 运算顺序

    • 先立方 → 平方 → 一次 → 求和

    • 欧姆龙指令无自动优先级,分步最安全。

  5. LIMIT 限幅

    • 防止 X 超范围导致 AO 爆表。

  6. 周期执行

    • 曲线快变时用 定时中断(固定周期)

收缩
  • QQ咨询

  • 电话咨询

  • 13073017555
  • 添加微信客服