4. FX5U编程基础

FX5U 的编程基础可以概括为一句话:用软元件承载数据,用数据类型约束数据,用程序结构组织数据流。如果只记住指令而忽略软元件与数据类型的对应关系,程序往往能下载却运行异常。本节从位/字软元件出发,串联数据类型、常数、注释与三类程序结构,建立可落地的编程框架。

一、位软元件与字软元件:两类承载对象

FX5U 的软元件按“承载单位”分为位软元件和字软元件。位软元件只有 ON/OFF 两种状态,用于逻辑判断与触点控制;字软元件以 16 位为基本单位,用于数值运算、参数存储与数据交换。

  • 位软元件:X(输入继电器)、Y(输出继电器)、M(内部辅助继电器)、L(锁存继电器)、F(报警器)、S(步进继电器)、SM(特殊继电器)、B(链接继电器)等。
  • 字软元件:D(数据寄存器)、R(文件寄存器)、W(链接寄存器)、SD(特殊寄存器)、T(定时器当前值)、C(计数器当前值)等。
  • 位与字的组合:位软元件可按 K1~K4 组成 4/8/12/16 位数据,例如 K2M0 表示 M0~M7 组成的 8 位数据;字软元件也可用位指定访问单个位,例如 D0.5 表示 D0 的第 5 位。
记忆要点:X/Y/M/S 是“开关”,D/R/W 是“数字”。定时器 T 与计数器 C 同时具有触点(位)和当前值(字)双重身份。

二、数据类型:软元件背后的解释规则

同一段 16 位数据,按位、按有符号整数、按无符号整数解释,结果完全不同。FX5U 常用数据类型如下:

数据类型位数取值范围典型软元件
位(BOOL)10 / 1X、Y、M、S
字(WORD)160 ~ 65535D、R、W
有符号整数(INT)16-32768 ~ 32767D、R
双字(DWORD)320 ~ 4294967295D 成对使用
双整数(DINT)32-2147483648 ~ 2147483647D 成对使用
实数(REAL)32约 ±1.17E-38 ~ ±3.4E+38D 成对使用

使用 32 位数据时,低 16 位放在起始软元件,高 16 位自动占用下一个编号。例如 DMOV D0 D10,实际占用 D0、D1 与 D10、D11。若误把 D1 另作他用,就会破坏数据。

三、常数与注释:让程序可读可维护

常数分为十进制 K、十六进制 H、实数 E 和字符串。K100 表示十进制 100,H00FF 表示十六进制 255,E1.5 表示实数 1.5。常数可直接参与指令,例如 MOV K100 D0、DMOV E3.14 D10。

MOV  K100  D0      ' 十进制常数写入
MOV  H00FF D1      ' 十六进制常数写入
DMOV E1.5  D10     ' 实数写入,占用 D10、D11
MOV  K2M0  D20     ' 位组合 K2M0(M0~M7)送入 D20

注释包括软元件注释、指令注释和行注释。软元件注释给 X/Y/M/D 起中文名,如 X0 命名为“启动按钮”;行注释说明一段逻辑的用途。注释不参与运算,但直接影响后期排障效率。建议在项目初期就建立命名规范,而不是调试完成后再补。

工程习惯:软元件注释用“对象+动作”,如“气缸1_伸出到位”;行注释用“条件→结果”,如“自动模式下按下启动→进入运行步”。

四、程序结构:主程序、子程序、中断程序

FX5U 的程序由多个程序块组成,按执行方式分为三类:

  • 主程序:每个扫描周期执行一次,是程序的主体,负责常规逻辑、运算与输出刷新。
  • 子程序:由 CALL 指令调用,执行完返回。适合把重复逻辑、工艺配方、设备动作封装成独立块,减少主程序长度。
  • 中断程序:由中断事件触发,如输入中断、定时器中断。它优先于主程序执行,适合处理高速计数、急停响应、精确定时等对时间敏感的任务。

三者的执行关系可用下面的结构图表示:

FX5U 程序结构与执行关系 主程序 MAIN 每扫描周期执行一次 常规逻辑 / 运算 / 输出 CALL 调用子程序 子程序 SUB CALL 触发,执行后返回 封装重复逻辑 / 工艺动作 RET 返回主程序 中断程序 INT 中断事件触发执行 高速计数 / 急停 / 精确定时 IRET 返回 扫描周期顺序: 输入刷新 → 主程序执行(含 CALL 子程序) → 中断可随时插入 → 输出刷新 → 下一周期 关键约束: 中断程序应短小、避免复杂运算;子程序需成对使用 CALL/RET;主程序负责整体时序与状态管理。

五、典型场景:一个启动保持与计数程序

下面示例综合使用位软元件、字软元件、常数与子程序:X0 启动、X1 停止,M0 为运行标志,D0 记录运行次数,子程序负责计数处理。

LD   X0          ' 启动按钮
OR   M0
ANI  X1          ' 停止按钮
OUT  M0          ' 运行标志

LD   M0
CALL P0          ' 调用计数子程序

P0:
LD   M0
PLS  M10         ' 上升沿脉冲
LD   M10
INC  D0          ' 运行次数加 1
RET

这里 M0、M10 是位软元件,D0 是字软元件,K 与 INC 涉及常数和数据类型。若把 D0 误用于 32 位运算,必须改用 DMOV 并预留 D1。

六、常见误区与复盘

  • 位字混用:把 K4M0 当作独立字软元件,忽略它实际占用 M0~M15,导致与其它逻辑冲突。
  • 32 位越界:使用 DMOV D0 D10 时,D1 或 D11 被其它程序改写,数据被破坏。
  • 中断过长:在中断程序中做复杂运算或等待,导致主程序扫描周期抖动。
  • 注释缺失:软元件无命名,后期排障只能靠猜,维护成本成倍增加。
  • 子程序未返回:CALL 后缺少 RET,程序执行流异常。
排障顺序建议:先看软元件注释确认对象,再核对数据类型与占用范围,最后检查程序结构(主/子/中断)是否按预期调用与返回。

掌握位与字软元件的边界、数据类型的解释规则、常数与注释的规范,以及主程序、子程序、中断程序的分工,就具备了 FX5U 工程开发最基础的“数据与结构”能力。后续的指令系统、定位控制与通信编程,都建立在这一层之上。