ST 里每个量都有类型。这一课讲 BOOL / INT / REAL / ARRAY 等数据类型,以及变量怎么声明、存在哪。
ST 里可以先给数据起名字。`VAR speed:INT; END_VAR` 声明一个整数变量 speed,再用 `speed := 5;` 赋值。编译器把 speed 安排在 D0——变量名就是我们给寄存器起的外号。
INT 就是 16 位有符号整数,范围 -32768 到 32767,落在 D 区。`temp := 100 + 23;` 一行算出 123。整数运算的规则和梯形图里的四则运算完全一样,只是写法不同。
开关量用 BOOL 类型。`VAR run:BOOL; END_VAR run := X0;` 让 run 跟着 X0 变。编译器把 run 安排在 M500——BOOL 变量落在 M 区,赋值就是让线圈通断。
布尔变量可以直接参与逻辑运算:`ready := X0 AND NOT X1;` 表示 X0 通、且 X1 没通时 ready 为 1。AND 是串联、NOT 是常闭,和梯形图触点一一对应。
数字可以带前缀:K 是十进制,H 是十六进制。十六进制的 H1F 换成十进制是 31,所以 K16 加 31 等于 47。信捷手册里的常数都这么写,ST 照单全收。
压轴戏:用 ST 写启保停。`motor := X0 OR (motor AND NOT X1);` 等号右边的 motor 读的是自身上一拍的值——不用画自锁触点,变量自己会记住。按一下 X0 启动,松开仍然保持;X1 一通立刻断开。