基础逻辑 入门 XT3U 全系
启停控制(起保停 / 自锁) 一个启动按钮、一个停止按钮控制一台电机或一路负载的启停 —— 工业控制里最基础的「起保停」回路。
接线 / 元件 X0 启动(常开按钮)· X1 停止(常闭按钮)· Y0 输出
自锁 起保停 基础回路
查看例程:逻辑要点 + 代码 › 按下启动按钮 X0 → 输出 Y0 得电 把 Y0 的常开触点用 OR 并联在 X0 两端 → 松开按钮后自保持 停止按钮 X1 串在回路里,用 ANI 取反断开 指令表 FX 系列指令表写法 · XT3U 兼容 复制代码LD X0 // 启动按钮(常开)
OR Y0 // 自锁:输出常开触点并联
ANI X1 // 停止按钮(常闭输入)
OUT Y0 // 驱动输出 Y0 := (X0 OR Y0) AND NOT X1;避坑 停止按钮务必接常闭 触点:断线时回路失电,符合安全逻辑。若现场只能接常开,程序里要把 ANI 改成 AND,语义正好相反,别漏。 自锁触点用 OR 并联在启动触点两端;写成串联(AND)会一松手就停机。 基础逻辑 入门 XT3U 全系
点动 / 长动混合控制 同一个执行机构,既要按住点动、又能按一下长动运行 —— 调试、对刀、手动找位时最常用。
接线 / 元件 X0 点动 · X1 长动启动 · X2 停止 · Y0 输出
点动 长动 手动
查看例程:逻辑要点 + 代码 › 用 M0 做「长动运行」中间标志并自锁 点动直接由 X0 参与输出,不参加自锁 最终输出 Y0 = 点动 OR 长动 指令表 FX 系列指令表写法 · XT3U 兼容 复制代码LD X1 // 长动启动
OR M0 // 长动自锁
ANI X2 // 停止
OUT M0
LD X0 // 点动(按住才动)
OR M0 // 叠加长动运行
OUT Y0M0 := (X1 OR M0) AND NOT X2;
Y0 := X0 OR M0;避坑 点动与长动必须汇到同一个线圈 输出(OR 汇总)。两条灯路各写一次 OUT Y0 会互相覆盖,只剩最后一条生效 —— 这是最常见的「点动没反应」原因。 基础逻辑 入门 XT3U 全系
正反转互锁(程序 + 电气双重) 两台接触器控制电机正反转,任何情况下都不能同时吸合,否则主回路短路。
接线 / 元件 X0 正转 · X1 反转 · X2 停止 · Y0 正转输出 · Y1 反转输出
互锁 正反转 安全
查看例程:逻辑要点 + 代码 › 各自自锁运行 用对方按钮与对方输出的常闭触点互锁(双重保险) 再统一串停止条件 指令表 FX 系列指令表写法 · XT3U 兼容 复制代码LD X0
OR Y0
ANI X1 // 互锁:反转按钮按下 → 断开正转
ANI Y1 // 互锁:反转已输出 → 断开正转
ANI X2
OUT Y0
LD X1
OR Y1
ANI X0
ANI Y0
ANI X2
OUT Y1Y0 := (X0 OR Y0) AND NOT X1 AND NOT Y1 AND NOT X2;
Y1 := (X1 OR Y1) AND NOT X0 AND NOT Y0 AND NOT X2;避坑 程序互锁不能替代接触器的电气互锁 (对方的常闭辅助触点串进线圈回路),两者都要做。 正反转切换建议加 0.2~0.5s 死区时间(用定时器互锁),避免切换电弧短路。 定时与计数 入门 XT3U 全系
通电延时接通(延时启动) 上电或按下启动后延时一段时间再让设备动作,例如风机先转 5 秒再启动加热。
接线 / 元件 X0 启动 · T0 定时 · Y0 延时输出
延时 定时器 T0
查看例程:逻辑要点 + 代码 › 100ms 基准定时器 T0,K50 = 5000ms = 5.0s 用定时器的常开触点驱动输出,X0 断开时定时器自动复位 指令表 FX 系列指令表写法 · XT3U 兼容 复制代码LD X0
OUT T0 K50 // 100ms × 50 = 5.0s(T0~T199 为 100ms 基准)
LD T0
OUT Y0 // 延时到 → 输出 T0(IN := X0, PT := T#5s);
Y0 := T0.Q;避坑 T0~T199 是 100ms 基准、T200~T245 是 10ms 基准、T256~T511 是 1ms 基准,设定值单位不同,别混用。 需要断电后计时不丢 ,改用累积型 T246~T249(1ms)/ T250~T255(100ms)。 定时与计数 进阶 XT3U 全系
延时断开(断电延时保持) 停止信号来了以后,设备再保持运行一段时间(风机后吹、搅拌延时停止)。
接线 / 元件 X0 运行指令 · M1 运行保持标志 · T1 计时 · Y1 输出
延时断开 保持 定时器
查看例程:逻辑要点 + 代码 › X0 接通 → M1 自锁,输出立刻建立 X0 断开后,M1 仍然保持,同时 T1 开始计时 计时到 → 断开 M1(Y1 随即断开) 指令表 FX 系列指令表写法 · XT3U 兼容 复制代码LD M1
ANI X0 // 运行保持中且指令已撤 → 开始计时
OUT T1 K30 // 3.0s
LD X0
OR M1
ANI T1
OUT M1 // 保持到延时结束
LD M1
OUT Y1避坑 「延时断开」不能用 OUT 写两次 Y1 来实现,必须用中间继电器(M1)承载保持逻辑,输出只写一次。 X0 断电瞬间如果现场有抖动,可在 X0 前加 10ms 滤波或改用上升/下降沿触发。 定时与计数 入门 XT3U 全系
闪烁 / 振荡输出(1s 亮 1s 灭) 报警闪烁、指示灯闪烁、或给一个周期信号做节拍控制。
接线 / 元件 X0 使能 · T0 / T1 定时 · Y0 闪烁输出
闪烁 振荡 M8013
查看例程:逻辑要点 + 代码 › 最省事的做法:直接用系统时钟脉冲 M8013(1s 时钟,0.5s ON / 0.5s OFF) 需要自定义节奏时用两个定时器互相复位(T0 亮 1s、T1 灭 1s) 指令表 FX 系列指令表写法 · XT3U 兼容 复制代码// ① 直接用时钟脉冲(最简)
LD M8013
AND X0
OUT Y0
// ② 自定义 1s 亮 / 1s 灭
LD X0
ANI T1
OUT T0 K10 // 亮 1.0s
LD T0
OUT T1 K10 // 灭 1.0s
LD X0
ANI T1
OUT Y0避坑 M8013 的占空比固定 1:1(0.5s / 0.5s),要别的节奏只能用定时器自己搭。 两个定时器互相复位时,T1 的驱动条件必须由 T0 提供,否则会出现「一次就停」或「周期翻倍」。 定时与计数 入门 XT3U 全系
计件计数到位输出 光电 / 接近开关计件,累计到设定值后输出一次(装箱、批量、满料检测)。
接线 / 元件 X0 计数信号(上升沿)· C0 计数器 · Y0 到位输出 · X1 清零
计数 计件 C0
查看例程:逻辑要点 + 代码 › X0 的上升沿加到 C0,设定值 K100 C0 触点接通 → Y0 输出 X1 手动清零,重新计数 指令表 FX 系列指令表写法 · XT3U 兼容 复制代码LD X0
OUT C0 K100 // 16 位增计数,设定 100 次
LD C0
OUT Y0 // 到位输出
LD X1
RST C0 // 手动清零 C0(IN := X0, PV := 100);
Y0 := C0.Q;
C0.RESET := X1;避坑 计数输入要用上升沿 (LD X0 后接计数指令,或直接用 LDP X0),否则信号保持期间会被反复计数。 高频信号(>10kHz,如编码器)必须用高速计数器 C235~C255,普通计数器会丢脉冲。 C0~C99 是 16 位计数器(最大 32767);需要更大范围用 32 位计数器 C200~C234。 定时与计数 进阶 XT3U 全系
累计运行时间(保养提醒) 设备累计运行满 30 分钟提示保养 / 换油,且中途断电不清零。
接线 / 元件 M8000 运行监视 · T250 累积型定时器 · Y0 提示输出 · X0 手动清零
累计 保养 掉电保持
查看例程:逻辑要点 + 代码 › 用 100ms 累积型 T250(掉电保持),K18000 = 1800s = 30 分钟 M8000 是运行监视触点,PLC 一运行就开始累计 到时间输出提示,X0 手动清零后重新计时 指令表 FX 系列指令表写法 · XT3U 兼容 复制代码LD M8000
OUT T250 K18000 // 100ms 累积型:1800s = 30 分钟,掉电保持
LD T250
OUT Y0 // 保养提醒
LD X0
RST T250 // 保养完成后清零 避坑 只有累积型 T246~T249(1ms)/ T250~T255(100ms)掉电保持当前值;普通 T0~T199 断电即复位。 1ms 累积型最大只能计到 32.767s,长时间累计要用 100ms 累积型。 这类计时值写在 D 里更灵活(可给 HMI 显示小时数),可用 T 当前值寄存器直接读。 脉冲与运动 进阶 XT3U 全系(脉冲机型)
定速脉冲输出 PLSY 发固定频率的脉冲让步进 / 伺服走一段固定行程,或按固定速度连续旋转。
接线 / 元件 X0 启动 · Y0 脉冲输出(专用通道)· Y1 完成指示
PLSY 脉冲 步进 伺服
查看例程:逻辑要点 + 代码 › PLSY 频率 脉冲数 输出口 —— 频率决定速度,脉冲数决定距离 脉冲数写 K0 表示不停机连续输出 脉冲发完 M8029(指令执行结束标志)自动置 ON 指令表 FX 系列指令表写法 · XT3U 兼容 复制代码LD X0
PLSY K1000 K5000 Y0 // 1000Hz,共 5000 个脉冲
LD M8029
OUT Y1 // 脉冲发送完成指示 避坑 Y0~Y3 用作脉冲输出后不能再当普通开关量用 (部分机型支持 Y0~Y7),接线前先定好用途。 两路同时输出时,两路频率之和不能超过硬件总上限,否则丢脉冲。 PLSY 无加减速。启停冲击大、容易丢步的场合改用 PLSR。 驱动条件要与脉冲输出保持同步,中途断开会在半途停止。 脉冲与运动 进阶 XT3U 全系(脉冲机型)
带加减速脉冲输出 PLSR 需要平稳启停的定位场合(皮带、丝杆):脉冲从 0Hz 平滑加速到目标频率,再减速到 0。
接线 / 元件 X0 启动 · Y0 脉冲输出 · Y1 完成指示
PLSR 加减速 定位
查看例程:逻辑要点 + 代码 › PLSR 最高频率 总脉冲数 加减速时间 输出口 加减速时间是一次完整的加速时间(梯形加减速) 到位后 M8029 置 ON,可用来触发下一步动作 指令表 FX 系列指令表写法 · XT3U 兼容 复制代码LD X0
PLSR K20000 K100000 K200 Y0 // 最高 20kHz、共 100000 脉冲、加减速 200ms
LD M8029
OUT Y1避坑 加减速时间设太短 → 电机丢步 / 伺服报警;设太长 → 节拍变慢。按负载惯量从长往短试。 目标频率要落在驱动器和机械允许范围内;超出硬件上限会丢脉冲。 脉冲与运动 高级 XT3U 全系(脉冲机型)
相对定位 DRVI / 绝对定位 DRVA 按坐标走位:DRVI 以「当前位置」为基准增量移动;DRVA 以「机械原点」为基准走到指定坐标。
接线 / 元件 X0 相对移动 · X2 绝对定位 · Y0 脉冲 · Y1 方向
DRVI DRVA 定位 坐标
查看例程:逻辑要点 + 代码 › DRVI 脉冲数 频率 脉冲口 方向口 —— 脉冲数的正负决定正反转 DRVA 目标位置 频率 脉冲口 方向口 —— 自动算差值、自动判方向 指令结束 M8029 置 ON;异常结束 M8329 置 ON 脉冲累计值可从 D8140/D8141(Y0)、D8142/D8143(Y1)读取 指令表 FX 系列指令表写法 · XT3U 兼容 复制代码LD X0
DRVI K10000 K2000 Y0 Y1 // 以当前位置为基准,正向走 10000 脉冲,2000Hz
LD X2
DRVA K50000 K2000 Y0 Y1 // 走到绝对坐标 50000 脉冲处(需先执行 ZRN 建立原点) 避坑 用 DRVA 之前必须先执行 ZRN 建立原点 ,否则位置基准无效。 脉冲数 / 目标位置范围是 -99999999 ~ +99999999,超范围指令报错。 定位指令必须持续保持驱动条件为 ON ,中途断开立即停止输出。 Y0~Y3 一旦用于定位输出,不能再作普通输出或其它高速功能。 脉冲与运动 高级 XT3U 全系(脉冲机型)
原点回归 ZRN 开机找原点:以回归速度向原点方向移动,碰到近点开关后切低速爬行,检测到 Z 相完成定位并清零坐标。
接线 / 元件 X0 启动回归 · X4 近点信号输入 · Y0 脉冲 · Y1 方向
ZRN 原点回归 找原点
查看例程:逻辑要点 + 代码 › ZRN 回归速度 爬行速度 脉冲口 近点信号输入口 完成时 M8029 置 ON,同时 D8140/D8141(Y0)自动清零 是 DRVA 绝对定位的必要前提 指令表 FX 系列指令表写法 · XT3U 兼容 复制代码LD X0
ZRN K10000 K1000 Y0 X4 // 回归速度 10kHz、爬行速度 1kHz,近点信号接 X4 避坑 近点开关建议用光电 / 接近开关(重复精度高),不要用机械行程开关凑合。 近点信号输入端子与脉冲输出端子要按手册分配,接错会导致回归方向反 / 找不到原点。 回归过程中不要执行 DRVA 等定位指令。 脉冲与运动 进阶 XT3U 全系(脉冲机型)
变速脉冲输出 PLSV(实时调速) 随动送料、运行中调速:脉冲频率随指令值实时变化,正负频率直接决定方向。
接线 / 元件 D0 频率设定值(带符号)· Y0 脉冲 · Y1 方向
PLSV 调速 随动
查看例程:逻辑要点 + 代码 › PLSV 频率寄存器 脉冲口 方向口 频率值支持正负,指令内部直接决定方向,不用另写方向逻辑 无加减速,改一次频率立即生效 指令表 FX 系列指令表写法 · XT3U 兼容 复制代码LD X0
PLSV D0 Y0 Y1 // 以 D0 当前值为频率连续输出(D0 正负决定方向) 避坑 运行时突改 D0 会瞬间变频,负载惯量大时可能丢步;需要平滑请用 PLSR / DRVI。 D0 是 16 位寄存器(-32768~32767),频率上限受硬件与驱动器共同限制。 脉冲与运动 进阶 XT3U 全系(脉冲机型)
脉冲输出紧急停止 急停、限位到点、异常时立即停掉脉冲输出。
接线 / 元件 X0 停止触发 · M8349 停止控制位 · Y0 脉冲通道
急停 M8349 限位
查看例程:逻辑要点 + 代码 › M8349 置 ON → Y0 通道立即停止脉冲输出(Y1 通道对应 M8359) 复位 M8349 后,脉冲指令才能重新正常发出 不停脉冲但停逻辑扫描的做法(M8034 禁止所有输出)是另一回事 指令表 FX 系列指令表写法 · XT3U 兼容 复制代码LD X0
SET M8349 // Y0 通道脉冲输出立即停止
LD X1
RST M8349 // 复位后重新发脉冲 避坑 M8349 只停脉冲输出,松开后位置坐标不会自动复原 —— 停止后一般要重新回原点(ZRN)再继续。 M8034 是「禁止所有输出」,会连指示灯一起关掉,做急停时注意区分用途。 脉冲与运动 高级 XT3U 全系
编码器高速计数(AB 相 · 2 倍频) 增量式编码器测长 / 测速 / 定位反馈:AB 相接入 X0/X1,用 C251 双相双计数。
接线 / 元件 X0 A 相 · X1 B 相 · C251 高速计数器 · D200/D201 当前值 · X2 复位
高速计数 编码器 AB相 C251
查看例程:逻辑要点 + 代码 › C251 是双相双计数(AB 相)32 位高速计数器,接 X0/X1 倍频由特殊继电器设置:M8196=ON → C251/C252/C254 用 2 倍频;M8198=ON → 4 倍频(OFF=1 倍) 计数方向由 M8246~M8255 指定 ON=减计数 / OFF=增计数 当前值用 DMOV 32 位传送读出 指令表 FX 系列指令表写法 · XT3U 兼容 复制代码LD M8002
SET M8196 // C251 / C252 / C254 → 2 倍频
RST M8198 // 2 倍频与 4 倍频互斥(M8198=ON 是 4 倍频)
LD M8000
OUT C251 K0 // 使能 C251(X0/X1 为 A/B 相输入)
LD M8000
DMOV C251 D200 // 32 位读出当前计数值 → D200/D201
LD X2
RST C251 // 外部复位清零 避坑 倍频设置必须在计数开始前或稳定周期 内完成,计数过程中切换会数错。 2 倍频与 4 倍频互斥,不能同时开启。 硬件基础最高频率 10kHz,100kHz 需定制,实际上限以具体型号为准(见 3.4 节)。 输入建议用 NPN 集电极开路传感器(漏型接法),DC24V 供电,直接接入端子即可,无需外接上拉电阻。 通信与协议 高级 XT3U 全系(带串口机型)
Modbus RTU 主站读取从站寄存器(ADPRW) PLC 做主站,定时读取变频器 / 仪表 / 传感器的保持寄存器(功能码 03)。
接线 / 元件 串口 1 · 从站 1 · D100~D104 存放读回数据 · Y0 事务结束 · Y1 通信正常
Modbus ADPRW 主站 RS485
查看例程:逻辑要点 + 代码 › 先配置成 Modbus 主站模式:把通信格式写入 D8400(取值见 4.2 通信协议设置);未配置主站模式直接执行通信指令会报 3824 ADPRW 格式:第1字 = 通道 + 站号(高 8 位通道、低 8 位站号),第2字 = 功能码,第3字 = 起始地址,第4字 = 数量,第5字 = 数据区首地址 通道:H01 = 串口 1,H00 = 串口 2,H04~H0B = 以太网 socket1~8 ADPRW 在上升沿触发 一次事务,自动完成发送 → 等待应答 / 重试 → 收尾,可跨扫描维持 D8063 是通信错误码:211 超时 / 205 校验错误 / 213 站号不一致 / 217 未处于主站模式 指令表 FX 系列指令表写法 · XT3U 兼容 复制代码// ★ 前置:先把通信格式写入 D8400(主站模式 + 波特率 / 校验),取值见 4.2
LD M8013 // 1s 时钟脉冲:每秒发起一次读取
ADPRW H0101 K3 K0 K5 D100 // 串口1(H01)· 从站 1;功能码 03;起始地址 0;数量 5 → D100~D104
LD M8029
OUT Y0 // 本次通信事务结束(成功 / 失败都会置位)
LD= D8063 K0
OUT Y1 // 错误码 = 0 → 通信正常 避坑 超过 2 个站通信时,要在 A / B 端并联一个 200Ω~1000Ω 的终端匹配电阻。 轮询多站要「完成标志 + 复位」串行触发,不要同时发起多条通信指令,否则互相干扰、全部超时。 想简化写法可以用 IVRD(读寄存器)指令;ADPRW 支持的功能码更全:01/02/03/04/05/06/0F/10/16/17。 PLC 作为从站 被上位机读写时,地址映射另有一套(如 D0~D7999 对应 0x0000 起、Y0~Y377 对应 0x3300 起),见 4.3.2。 通信与协议 高级 XT3U 全系(带串口机型)
无协议通信 RS(对接自定义协议设备) 对接扫描枪、称重仪表、条码器这类自定义协议的设备:自己拼字节发送、自己收字节。
接线 / 元件 D100 发送缓冲区 · D200 接收缓冲区 · M8122 发送请求 · M8123 接收完成 · M8129 超时
RS 自由协议 串口 扫描枪
查看例程:逻辑要点 + 代码 › 先把通信格式写入 D8400(波特率 / 数据位 / 校验 / 顺序,见 4.5) RS 指令:发送起始 发送字节数 接收起始 接收字节数 置位 M8122 触发发送;M8123 收到应答后置 ON;M8129 超时置 ON 超时时间由 D8409 设定,单位 10ms(默认 50 = 500ms) 指令表 FX 系列指令表写法 · XT3U 兼容 复制代码// ★ 前置:把通信格式写入 D8400(见 4.5)
LD X0
SET M8122 // RS / RS2 发送请求
RS D100 K6 D200 K10 // 发送 D100 起 6 字节 → 应答存入 D200 起,最多 10 字节
LD M8123
OUT Y0 // 接收完成
LD M8129
OUT Y1 // 通信超时
LD M8123
RST M8123 // 处理完数据后复位,等待下一次 避坑 RS 指令收发最大 520 字节,超出会报错(6343 / 6363)。 发送和接收的缓冲区别放在重叠的寄存器上,会被自己覆盖。 无协议通信没有 CRC 校验,抗干扰要求高的场合建议用 Modbus(ADPRW)。 模拟量与闭环 进阶 XT3U(带模拟量机型)
RD3A 读取模拟量并按工程量换算 读取 0~10V / 4~20mA 信号,直接换算成压力、温度、流量等工程量(浮点数),给 HMI 显示。
接线 / 元件 AI0 输入 · D100~D108 配置区 · D200/D201 换算结果(float)
RD3A 模拟量 工程量 4-20mA
查看例程:逻辑要点 + 代码 › RD3A:通道 配置区起始 目标寄存器 —— 配置区共 9 个字(D* 到 D*+8) 配置项:工程量上 / 下限(float 各占 2 字)、AD 原始上 / 下限、滤波系数、死区阈值(float 占 2 字) 结果是以 float 写入目标起 2 个字,0~10V 对应 0~4095 再映射到工程量 配置只需上电写一次;结果每个扫描周期自动刷新 指令表 FX 系列指令表写法 · XT3U 兼容 复制代码// ① 配置区 D100~D108(9 个字),上电只写一次
LD M8002
EMOV E100.0 D100 // D100/D101:工程量上限 100.0
EMOV E0.0 D102 // D102/D103:工程量下限 0.0
MOV K4095 D104 // AD 原始上限
MOV K0 D105 // AD 原始下限
MOV K5 D106 // 滤波系数(1 = 不滤波,常用 3~8)
EMOV E0.2 D107 // D107/D108:死区 0.2
// ② 每个扫描周期读取并换算 AI0
LD M8000
RD3A K0 D100 D200 // 通道 0 → 结果(float 工程量 0.0~100.0)写入 D200/D201 避坑 工程量上下限写反时当前实现会自动交换;上下限都为 0 时按 0~4095 使用。 4~20mA 要按现场标定写 AD 下限(例如 4mA 对应约 819),不能直接照抄 0~4095 的配置。 float 结果占 2 个连续 D 字,给 HMI 或后续运算时不要把第二个字当独立寄存器用。 模拟量与闭环 进阶 XT3U(带模拟量机型,需硬件支持)
模拟量通道模式配置(普通 AD / PT100 / NTC K10) 同一路模拟输入既能测电压,也能直接接铂电阻 / 热敏电阻测温 —— 上电时告诉 PLC 用哪种模式。
接线 / 元件 D8060 通道模式配置 · D8030~D8033 四通道采样值
PT100 NTC 测温 D8060
查看例程:逻辑要点 + 代码 › D8060 每通道占 2 位(只改低八位):00 = 普通 AD,01 = PT100,10 = NTC K10 K1 → 通道 1 用 PT100;K5 → 通道 1、2 都用 PT100;K2 → 通道 1 用 NTC K10 测温模式下,温度值直接放在 D8030 起,单位 0.1℃(D8030 = 253 → 25.3℃) 普通 AD 模式下,0~10V 对应 0~4095,电压 = 原始值 × 10 ÷ 4095 指令表 FX 系列指令表写法 · XT3U 兼容 复制代码// 通道模式:只改低八位,每通道 2 位
LD M8002
MOV K1 D8060 // K1 → 通道 1 = PT100
// K5 → 通道 1、2 = PT100;K2 → 通道 1 = NTC K10
// 普通 AD 模式下的采样值换算参考:
// 电压(V) = D8030 × 10 ÷ 4095
LD M8000
MOV D8030 D100 // 把通道 1 的值复制出来供显示 / 运算(测温时 D100 即 0.1℃ 单位) 避坑 通道模式与测温功能都需要硬件支持 ,下单前先联系我们确认机型。 配置值写错通道会整片错位(一个寄存器 16 位管 4 个通道,两位一组,别按十进制想当然)。 D8050 是模拟量输入滤波系数(1 = 不滤波,常用 3~8),干扰大的现场配合使用。 模拟量与闭环 高级 XT3U(带模拟量机型)
PID 闭环控制(恒温 / 恒压) 温度、压力、张力闭环:把实测值与设定值比较,自动调节加热 / 阀的开度。
接线 / 元件 D100 设定值 SV · D8030 反馈 PV(AI0 采样)· D101 起参数块 · D200 PID 输出
PID 闭环 恒温 PWM
查看例程:逻辑要点 + 代码 › PID 指令:设定值SV 反馈值PV 参数块起始 输出目标 参数块从 S3 起:S3 采样时间 TS → S3+1 功能模式 ACT → S3+2 Kp → S3+3 Ki → S3+4 Kd TS 单位 ms(1~32767),必须大于程序扫描周期 ACT 的 bit0:0 = 正动作(加热:温度越低输出越大),1 = 逆动作(制冷:温度越高输出越大) 输出值经换算后可送 DA 通道(如 D8112)或用时间比例方式驱动固态继电器 指令表 FX 系列指令表写法 · XT3U 兼容 复制代码LD M8002
MOV K200 D100 // 设定值 SV = 200(按 0.1℃ 单位即 20.0℃)
// 参数块:D101 起
MOV K1000 D101 // 采样时间 TS = 1000 ms(须大于扫描周期)
MOV K0 D102 // ACT = 0:正动作(加热);bit5 置 1 可启用输出上下限
MOV K2000 D103 // 比例增益 Kp = 2000%
MOV K500 D104 // 积分增益 Ki = 500%
MOV K0 D105 // 微分增益 Kd = 0
LD M8000
PID D100 D8030 D101 D200 // SV、PV、参数块、输出 → D200 避坑 参数块里 S3+(7~11) 是内部运算使用区,不要在程序里占用 。 输出目标寄存器若有断电保持功能,要用 M8002 初始化脉冲先复位,否则上次的旧值会影响本次运算。 TS 设太小会大幅增加 PLC 运算负荷,且两次采样值几乎没变化时输出不会更新 —— 按实际过程时间常数选。 bit2(输出变化量报警)与 bit5(输出上下限)不要同时置 ON,会导致输出控制逻辑冲突。 数据处理与报警 入门 XT3U 全系
区间比较输出(ZCP) 按数值分档:低于下限、区间内、高于上限分别输出不同信号(料位三档指示、速度区间判断)。
接线 / 元件 D0 被比较值 · M10/M11/M12 三个结果位 · Y0/Y1/Y2 输出
ZCP 区间比较 分档
查看例程:逻辑要点 + 代码 › ZCP 下限 上限 比较值 结果起始位(占连续 3 个位) D0 < 100 → M10 ON;100 ≤ D0 ≤ 200 → M11 ON;D0 > 200 → M12 ON 适合分档指示、分区间控制 指令表 FX 系列指令表写法 · XT3U 兼容 复制代码LD M8000
ZCP K100 K200 D0 M10 // 结果位占 M10~M12
LD M10
OUT Y0 // 低于下限
LD M11
OUT Y1 // 在区间内
LD M12
OUT Y2 // 高于上限 IF D0 < 100 THEN Y0 := TRUE; ELSIF D0 <= 200 THEN Y1 := TRUE; ELSE Y2 := TRUE; END_IF;避坑 结果占连续 3 个位 ,M10 之后相邻的 M11、M12 不能再给别的逻辑用。 ZCP 是 16 位整数比较;被比较值若为浮点工程量(如 85.0℃),改用 EZCP / ECMP。 数据处理与报警 进阶 XT3U(带模拟量机型)
模拟量采样滤波(硬件滤波 + 平均值) 现场干扰大、模拟量跳动厉害,需要让采样值稳定下来再参与控制或显示。
接线 / 元件 D8050 硬件滤波系数 · D200~D207 采样窗口 · D300 平均值
滤波 平均 MEAN D8050
查看例程:逻辑要点 + 代码 › 首选:设 D8050 模拟量输入滤波系数(1 = 不滤波,常用 3~8),在硬件层面平滑,不占扫描时间 需要更强平滑:用 MEAN 对最近 n 个采样值求算术平均 MEAN 指令:起始寄存器 个数 结果寄存器 指令表 FX 系列指令表写法 · XT3U 兼容 复制代码// ① 硬件滤波(推荐,上电写一次)
LD M8002
MOV K8 D8050 // 滤波系数 1~8(1 = 不滤波)
// ② 软件平均:D200~D207 由采样逻辑持续刷新,每周期取 8 点平均
LD M8000
MEAN D200 K8 D300 // 对 D200~D207 共 8 个采样求平均 → D300 避坑 平均值会带来相位滞后 :闭环控制里平均点越多响应越慢,PID 与滤波要一起调。 MEAN 的点数 n 上限为 64;若被平均的是 16 位寄存器,注意累加是否溢出(8 点 0~4095 最大 32760,未超 16 位上限)。 数据处理与报警 进阶 XT3U 全系
数值上下限钳位(LIMIT) HMI 输入的目标值、算出来的设定值超出允许范围时,自动钳到上下限,防止设备跑到危险位置。
接线 / 元件 D0 原始输入 · D10 钳位后的结果
LIMIT 限幅 钳位 安全
查看例程:逻辑要点 + 代码 › LIMIT 下限 上限 输入 输出 —— 输入小于下限取下限,大于上限取上限 只做一次运算,不改变原寄存器(原始值仍保留在 D0) 指令表 FX 系列指令表写法 · XT3U 兼容 复制代码LD M8000
LIMIT K0 K1000 D0 D10 // 把 D0 限制在 0~1000 之间,结果放 D10 避坑 钳位只是「限幅」,不能替代机械限位与超程报警 —— 安全相关的场合两者都要做。 比较的是整数。浮点工程量请用浮点比较指令(ECMP)后再处理。 数据处理与报警 进阶 XT3U(带模拟量机型)
模拟量超限报警(锁存 + 人工确认) 温度 / 压力超过安全范围就报警,且报警保持 到操作工按下确认,避免一闪而过没人看见。
接线 / 元件 D200 采样值 · M120/M121 报警锁存位 · Y0 报警输出 · X0 确认按钮
报警 锁存 确认 SET/RST
查看例程:逻辑要点 + 代码 › 超过上限 → SET 锁存 M120;低于下限 → SET 锁存 M121 两个锁存位 OR 后驱动报警输出 X0 人工确认后 RST 复位(条件已恢复正常时才该确认) 指令表 FX 系列指令表写法 · XT3U 兼容 复制代码LD>= D200 K4000
SET M120 // 超上限 → 锁存
LD< D200 K200
SET M121 // 超下限 → 锁存
LD M120
OR M121
OUT Y0 // 报警输出(指示灯 / 蜂鸣器)
LD X0
RST M120
RST M121 // 人工确认复位 避坑 用 SET / RST(锁存)而不是直接 OR 输出,否则数值回到正常范围报警就消失,操作工看不到。 确认按钮前建议再串一个「数值已恢复正常」的条件,避免在异常状态下误复位。 比较的是整数。若比较浮点工程量(如 80.0℃),改用 ECMP / EZCP,或先把浮点转成整数(INT)再比较。