在三菱 FX2N 上完全可以实现:让 PLC 模拟量输出(DA 模块)严格跟随一个数学函数,比如:
线性函数:y = kx + b
二次曲线:y = ax² + bx + c
正弦 / 三角 / 梯形波
温度、压力、流量的拟合曲线
我给你一套直接能用、原理 + 步骤 + 程序写法,FX2N 照着做就能跑。
一、核心思路(非常简单)
PLC 做不到 “直接写函数”,但可以分步计算:
用一个变量做 自变量 X(时间 / 编码器 / 计数器)
在 PLC 里用 功能指令 计算 函数值 Y
把 Y 送给 DA 模拟量输出模块
最终效果:模拟量电压 / 电流 = 函数 f (X)
二、三菱 FX2N 实现步骤
1. 准备硬件
FX2N + FX2N-2DA / 4DA(模拟量输出模块)
模块地址:#0 或 #1(看安装位置)
2. 确定你的函数
举例几个最常用的:
① 线性函数(最常用)
Y = K × X + B例:Y = 0.5X + 100对应模拟量 0~10V 或 4~20mA
② 二次曲线
Y = aX² + bX + c适合:抛物线、加速曲线、流量补偿
③ 周期波形(正弦 / 三角 / 梯形)
做震荡输出、测试传感器、模拟流量波动
④ 任意拟合曲线(多点折线)
工程上最实用:把曲线拆成 N 段直线,PLC 分段计算。
三、最简单直接的实现方法
方法 1:纯运算指令(适合简单函数)
用:
MOV 赋值
ADD / SUB / MUL / DIV
DMUL 浮点运算(FX2N 支持 32 位)
示例:线性输出 Y = 2X + 100
ld
mov k0 d0 // X 从0开始 inc d0 // X 自增(随时间变化) mul d0 k2 d10 // d10 = X*2add d10 k100 d20 // d20 = 2X+100to k0 k1 d20 k1 // 送给 DA 模块输出
这样模拟量就会线性上升。
方法 2:分段折线法
任何曲线都能拆成直线段:
plaintext
if X < 100: Y = 1X if 100≤X<200: Y = 0.5X+50 if X ≥200: Y = 200
用 CMP/ZCP 判断区间,分别计算。
几乎所有工控曲线都这么干,简单、稳定、不出错。
方法 3:查表法(适合复杂函数,如正弦、传感器拟合)
把函数算好一批点,存入 D 区
用 X 做索引,取出对应 Y
输出到 DA
例正弦波:D0~D99 存好 0~99 度对应的正弦值用 D100 做角度自增,查表输出。
优点:
任何复杂函数都能实现
PLC 运算压力极小
四、FX2N 输出模拟量关键指令
1. DA 模块写入指令:TO
格式:TO 模块号 通道号 数值 点数例:
plaintext
TO K0 K1 D20 K1
K0:0 号 DA 模块
K1:通道 1
D20:函数计算结果
K1:输出 1 点
2. 数值范围
0~10V:对应 K0~K1000
4~20mA:对应 K0~K1000(内部偏移即可)
五、让 “函数随时间变化”
想要模拟量自动按函数走,只需要让自变量 X 随时间自增:
plaintext
ld m8013 // 1s时钟 pls m0 ld m0 inc d0 // X 每秒+1
然后用 D0 计算函数 Y → 输出 DA。
效果:模拟量按照函数自动跑波形。

