1.界面介绍

1.创建工程时添加的PLC型号
2.添加的模拟量输入模块
3.添加的模拟量输出模块
4.主程序文件
5.主程序的变量声明区
6.主程序的逻辑部分
2.简单程序
2.1自锁,点动,5秒定时
objectivec
PROGRAM PLC_PRG
VAR
// 输入变量
Start AT %I0.0: BOOL;
Stop AT %I0.1: BOOL;
Jog AT %I0.2: BOOL;
// 输出变量
Motor AT %Q0.0: BOOL;
Alarm AT %Q0.1: BOOL;
// 中间变量
MotorHold : BOOL;
// 定时器
TON_T0 : TON;
END_VAR
// ========== 自锁 ==========
IF Start OR MotorHold THEN
IF Stop THEN
MotorHold := TRUE;
END_IF;
ELSE
MotorHold := FALSE;
END_IF;
// ========== 点动 ==========
IF Jog THEN
Motor := TRUE;
ELSE
Motor := MotorHold;
END_IF;
// ========== 5 秒定时 ==========
TON_T0(IN := MotorHold, PT := T#5S);
IF TON_T0.Q THEN
Alarm := TRUE;
END_IF;
外部按钮说明
1)启动按钮 Start --> %I0.0
- 外部:自复位 常开按钮 NO
- 没按 = 断开 = % I0.0 = FALSE(0)
- 按下 = 闭合 = % I0.0 = TRUE(1)
- 松开 = 回到 0
2)点动按钮 Jog --> %I0.2
- 外部:自复位 常开按钮 NO
- 没按 = 断开 = % I0.2 = FALSE(0)
- 按下 = 闭合 = % I0.2 = TRUE(1)
- 松开 = 回到 0
3)停止按钮 Stop --> %I0.1
- 外部:自复位 常闭按钮 NC
- 没按 = 闭合 = % I0.1 = TRUE(1)
- 按下 = 断开 = % I0.1 = FALSE(0)
- 松开 = 回到 1
应用场景解释
1.自锁:
按一下启动 → 电机一直转
按一下停止 → 电机立刻停
2.点动:
按住就转,松开就停
3.定时:
电机启动 → 等 5 秒 → 自动触发报警(或其他动作)
程序解释
**1.**TON_T0.Q 这是什么写法 为什么能这么写?
objectivec
VAR
TON_T0 : TON; // ← 这是一个"定时器功能块变量"
END_VAR
查看T0N的定义 有两个输入值,两个输出值
TON_T0 是一个 "功能块"(FB)
Q 是功能块里面的 "输出脚"
TON_T0.Q = 读取定时器的 "输出状态"
.Q → 定时时间到输出(TRUE/FALSE)
.IN → 启动输入
.PT → 设定时间
.ET → 当前计时值
为什么能这么写?(核心原理)
因为 TON 是一个功能块(Function Block)
功能块就像一个黑盒子,里面自带:
输入
输出
内部状态
3.知识点:
英威腾的ST编程里
程序里不能使用地址,需要用变量替代
输入 % I、输出 % Q ,中间继电器 % M、定时器 % T、计数器 % C 不能直接用,必须定义变量