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 位。
二、数据类型:软元件背后的解释规则
同一段 16 位数据,按位、按有符号整数、按无符号整数解释,结果完全不同。FX5U 常用数据类型如下:
| 数据类型 | 位数 | 取值范围 | 典型软元件 |
|---|---|---|---|
| 位(BOOL) | 1 | 0 / 1 | X、Y、M、S |
| 字(WORD) | 16 | 0 ~ 65535 | D、R、W |
| 有符号整数(INT) | 16 | -32768 ~ 32767 | D、R |
| 双字(DWORD) | 32 | 0 ~ 4294967295 | D 成对使用 |
| 双整数(DINT) | 32 | -2147483648 ~ 2147483647 | D 成对使用 |
| 实数(REAL) | 32 | 约 ±1.17E-38 ~ ±3.4E+38 | D 成对使用 |
使用 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 命名为“启动按钮”;行注释说明一段逻辑的用途。注释不参与运算,但直接影响后期排障效率。建议在项目初期就建立命名规范,而不是调试完成后再补。
四、程序结构:主程序、子程序、中断程序
FX5U 的程序由多个程序块组成,按执行方式分为三类:
- 主程序:每个扫描周期执行一次,是程序的主体,负责常规逻辑、运算与输出刷新。
- 子程序:由 CALL 指令调用,执行完返回。适合把重复逻辑、工艺配方、设备动作封装成独立块,减少主程序长度。
- 中断程序:由中断事件触发,如输入中断、定时器中断。它优先于主程序执行,适合处理高速计数、急停响应、精确定时等对时间敏感的任务。
三者的执行关系可用下面的结构图表示:
五、典型场景:一个启动保持与计数程序
下面示例综合使用位软元件、字软元件、常数与子程序: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 工程开发最基础的“数据与结构”能力。后续的指令系统、定位控制与通信编程,都建立在这一层之上。