已经入职有有一段时间了,现对目前的工作进行一下梳理与总结。
一、软件下载与环境搭建
软件环境:TwinCAT 3 4024.66 + Visual Studio2019
工作任务:根据手册下载安装TwinCAT3 4024.66与VS2019,并通过新建PLC程序、C++程序验证开发环境正常。
二、熟悉ST语言与PLC编程
工作内容:通过完成经典PLC逻辑控制程序编写来初步掌握TwinCAT PLC编程方法。
1. 电机延时分步控制程序(起保停 + 定时延时)
程序名称:Motor_Delay_Control
控制逻辑:
- 通用启停回路:独立启停按钮控制通用输出 Output;
- 辅助启动按钮 KMStartButton 触发自锁信号,KM1 立即输出导通;
- TON 定时 5s 计时,计时到达后关闭定时使能,辅助动作 KMCornerUp 置位启动;
- 全局停止按钮统一复位 KM1、延时触发信号、定时器使能,所有设备同步停机。
应用场景:主电机先运行、延时后配套辅机 / 抱闸动作的分步工艺。
PROGRAM Motor_Delay_Control VAR StartButton: BOOL; StopButton: BOOL; Output: BOOL; KMStartButton: BOOL; StartSignl: BOOL; KM1: BOOL; KMStartUp: BOOL; KMCornerUp: BOOL; KM_Ton: TON; END_VAR // 基础起保停 IF StartButton THEN Output := TRUE; END_IF IF StopButton THEN Output := FALSE; END_IF // 电机启动 + 延时动作 IF KMStartButton THEN StartSignl := TRUE; END_IF IF StartSignl THEN KM1 := TRUE; KMStartUp := TRUE; END_IF KM_Ton(IN:=KMStartUp, PT:=T#5S); IF KM_Ton.Q THEN KMStartUp := FALSE; KMCornerUp := TRUE; END_IF // 停止全部复位 IF StopButton THEN KM1 := FALSE; KMCornerUp := FALSE; KMStartUp := FALSE; StartSignl := FALSE; END_IF
2. 三色红绿灯循环控制程序
程序名称:RedGreenYellow
控制逻辑:
- CASE 状态机:Status=1 红灯、2 绿灯、3 黄灯;
- TON 固定 1s 计时,搭配 R_TRIG 上升沿抓取定时完成信号,每 1s 触发一次状态 + 1;
- 计时触发后先复位定时器再重新使能,实现定时器循环计时;
- Status 自增至 4 自动复位为 1,实现红→绿→黄无限循环;附带手动按钮 StatusUp 可强制手动切换灯态。
应用场景:交通信号灯周期时序控制,练习定时器复位逻辑与边沿检测用法。
PROGRAM RedGreenYellow VAR status: INT := 1; Red: BOOL; Green: BOOL; Yellow: BOOL; StatusUp: BOOL; RGY_Ton: TON; RGY_Trig: R_TRIG; END_VAR // 状态机:红1 → 绿2 → 黄3 CASE status OF 1: Red:=TRUE; Green:=FALSE; Yellow:=FALSE; 2: Red:=FALSE; Green:=TRUE; Yellow:=FALSE; 3: Red:=FALSE; Green:=FALSE; Yellow:=TRUE; END_CASE // 手动切换 IF StatusUp THEN Status := Status + 1; END_IF // 1秒定时器 RGY_Ton(IN:=TRUE, PT:=T#1S); RGY_Trig(CLK:=RGY_Ton.Q); // 定时触发切换 IF RGY_Trig.Q THEN Status := Status + 1; RGY_Ton(IN:=FALSE); RGY_Ton(IN:=TRUE); ELSIF status = 4 THEN Status := 1; END_IF
3. 双电机顺序延时启动程序
程序名称:DelaySequenStartUp
控制逻辑:
- 启动按钮自锁保持启动标志位;
- 启动标志触发 TON 延时 5s,到时电机 1 运行;
- 电机 1 运行信号作为第二个 TON 触发条件,再延时 10s,电机 2 启动;
- 停止按钮一键复位全部标志位与电机输出,两台电机同时停机。
应用场景:流水线前后级电机错峰延时启动工艺。
PROGRAM DelaySequenStartUp VAR StartButton: BOOL; StopButton: BOOL; Motor1Start: BOOL; Motor1: BOOL; Motor2: BOOL; Motor1_Ton: TON; Motor2_Ton: TON; END_VAR // 启动保持 IF StartButton THEN Motor1Start := TRUE; END_IF // 电机1 延时5秒启动 Motor1_Ton(IN:=Motor1Start, PT:=T#5S); IF Motor1_Ton.Q THEN Motor1 := TRUE; END_IF // 电机2 延时10秒启动 Motor2_Ton(IN:=Motor1, PT:=T#10S); IF Motor2_Ton.Q THEN Motor2 := TRUE; END_IF // 停止全部复位 IF StopButton THEN Motor1Start := FALSE; Motor1 := FALSE; Motor2 := FALSE; END_IF
4. 按键数量计数控制程序
程序名称:ThreeAnyTwo
分两段控制逻辑:
- 三选二控制:3 个物理按钮 BOOL 转 INT 数值求和,按下恰好 2 个时 MOTOR1 启动,其余数量电机停止;
- 数组通用多选控制:定义按钮数组,FOR 循环遍历统计当前按下按钮总数,实际按下数量等于设定值 Y 时 MOTOR2 启动,可自由修改按钮总数 X 与触发数量 Y,通用性强。
应用场景:安全确认按钮、多按键权限启动设备。
PROGRAM ThreeAnyTwo VAR // 三选二部分 Button1: BOOL; Button2: BOOL; Button3: BOOL; SUM: INT; MOTOR1: BOOL; // 数组通用计数部分 Counter: INT; Counter1: INT; index: INT; Array_Button: ARRAY[0..50] OF BOOL; Y: INT; MOTOR2: BOOL; END_VAR // 3个按钮任意按下2个 → MOTOR1启动 SUM := TO_INT(Button1) + TO_INT(Button2) + TO_INT(Button3); IF SUM = 2 THEN MOTOR1 := TRUE; ELSE MOTOR1 := FALSE; END_IF // 数组按钮:按下数量 = Y → MOTOR2启动 Counter := 0; FOR index := 0 TO 50 DO IF Array_Button[index] THEN Counter := Counter + 1; END_IF END_FOR Counter1 := Counter; IF Counter1 = Y THEN MOTOR2 := TRUE; ELSE MOTOR2 := FALSE; END_IF
三、协助完成图迈腔镜机器人患者台车BK5整机标定测试
工作内容:配合完成患者台车四支多关节机械臂实测工作,逐关节校验机械臂的实际转角与上位机反馈数据一致性,配合整定惯性补偿参数,验证机械臂定点悬停性能。