1. 项目概述:基于台达AS228T的PLC与触摸屏程序模板开发
最近在工业自动化项目中完成了一套基于台达AS228T PLC的运动控制系统,核心特点是采用CANopen总线协议驱动6台伺服电机,并实现了自动运行中可暂停切换手动控制的功能。这个方案特别适合需要多轴协同的场合,比如包装机械、电子组装设备等场景。整套程序包含PLC逻辑模板和人机界面模板,已经过实际产线验证,稳定性值得信赖。
选择AS228T这款中型PLC主要看中其运动控制性能和经济性的平衡。相比大型PLC,它的成本更低但依然支持最多8轴总线控制;相比小型PLC,又具备更强大的运算能力和扩展性。配合台达DOP-100系列触摸屏,可以构建性价比极高的控制系统。下面我就从硬件配置、通信架构到程序实现,详细拆解这个模板的设计要点。
2. 硬件配置与网络拓扑
2.1 核心设备选型清单
- 主控制器:台达AS228T(24点输入/16点输出,支持CANopen主站)
- HMI:台达DOP-107BQ(7寸触摸屏,与PLC通过RS485连接)
- 伺服系统:6台台达ASDA-A2系列伺服驱动器(支持CANopen从站协议)
- 通信介质:CAN总线专用双绞线(带终端电阻)
- 辅助设备:IO扩展模块(根据实际需求选配)
2.2 CANopen网络搭建要点
-
物理层接线:
- 使用屏蔽双绞线(特性阻抗120Ω)
- 总线两端必须安装120Ω终端电阻
- 推荐采用T型分支连接方式,避免星型拓扑
-
节点地址分配:
text复制
| 设备类型 | 节点ID范围 | 本方案分配 | |----------------|------------|------------| | PLC(主站) | 0x00 | 0x00 | | 伺服驱动器1 | 0x01-0x7F | 0x01 | | 伺服驱动器2 | | 0x02 | | ... | | ... | | 伺服驱动器6 | | 0x06 | -
通信参数配置:
- 波特率:1Mbps(需所有节点一致)
- PDO通信周期:2ms
- SDO超时时间:1000ms
注意:首次上电前务必检查所有节点的终端电阻配置。我们曾遇到因漏接电阻导致通信断续的问题,表现为伺服偶尔报"CAN总线错误"。
3. PLC程序架构设计
3.1 主程序流程图
structured复制[初始化]
├─ 硬件自检
├─ CANopen网络初始化
├─ 伺服使能状态检查
└─ 工艺参数载入
[主循环]
├─ 手动模式处理
│ ├─ JOG控制
│ ├─ 点动控制
│ └─ 位置微调
├─ 自动模式处理
│ ├─ 多轴插补
│ ├─ 速度曲线规划
│ └─ 暂停/继续逻辑
└─ 异常处理
├─ 限位保护
├─ 急停响应
└─ 故障恢复
3.2 关键功能块实现
3.2.1 CANopen通信配置
在AS228T中通过以下指令建立通信:
iec复制// 设置CANopen主站参数
_CAN_INIT(
Mode:=1, // 1=CANopen模式
BaudRate:=6, // 6=1Mbps
NodeID:=16#00, // 主站节点号
Timeout:=1000);
// 启动PDO通信
_FOR(i,1,6) // 对6个伺服循环配置
_CAN_PDO_CONFIG(
Node:=i,
PDOType:=0, // 0=接收PDO
MapIndex:=1,
CobID:=16#180+i,
DataLen:=4);
_CAN_PDO_CONFIG(
Node:=i,
PDOType:=1, // 1=发送PDO
MapIndex:=1,
CobID:=16#200+i,
DataLen:=4);
_END_FOR
3.2.2 伺服控制指令封装
创建可复用的功能块处理伺服基本操作:
iec复制FUNCTION_BLOCK FB_ServoControl
VAR_INPUT
AxisNo: INT; // 轴号1-6
Command: WORD; // 控制指令
Position: DINT; // 目标位置
Velocity: INT; // 运行速度
END_VAR
VAR_OUTPUT
ActualPos: DINT; // 实际位置
Status: WORD; // 状态字
END_VAR
// 控制指令常量定义
STOP_CMD := 16#0000;
MOVE_ABS_CMD := 16#0001;
MOVE_REL_CMD := 16#0002;
JOG_P_CMD := 16#0003;
JOG_N_CMD := 16#0004;
// 通过PDO发送控制指令
_CAN_PDO_SEND(
Node:=AxisNo,
Data[0]:=Command,
Data[1]:=Velocity,
Data[2..3]:=Position);
4. 触摸屏界面设计要点
4.1 主界面布局规划
text复制+-------------------------------+
| 状态显示区 |
| - 各轴位置/速度实时显示 |
| - 报警信息轮播 |
+-------------------------------+
| 模式切换按钮组 |
| [自动] [手动] [设置] [维护] |
+-------------------------------+
| 手动操作面板 |
| - 轴选择单选按钮 |
| - JOG+/JOG-按钮 |
| - 速度调节滑块 |
+-------------------------------+
| 自动运行控制区 |
| [启动] [暂停] [复位] [急停] |
+-------------------------------+
4.2 关键宏指令示例
vb复制' 自动模式启动按钮脚本
Sub AutoStart_Click()
If PLC!AutoModeReady Then
PLC!StartAuto := 1
SetText("StatusLabel", "自动运行中...")
Else
MsgBox "请先确认各轴准备就绪!", vbExclamation
End If
End Sub
' 急停按钮处理
Sub EStop_Click()
PLC!EmergencyStop := 1
For i = 1 To 6
Call ServoDisable(i)
Next
SetAlarm("EmergencyStop", 1)
End Sub
5. 调试经验与故障排查
5.1 常见问题速查表
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| 伺服使能失败 | 1. 未收到控制字bit0 2. 驱动器报警状态 |
1. 检查PDO映射 2. 清除驱动器报警 |
| 位置偏差大 | 1. 电子齿轮比错误 2. 负载惯量不匹配 |
1. 重新计算齿轮比 2. 调整伺服增益 |
| CAN通信中断 | 1. 终端电阻缺失 2. 波特率不一致 |
1. 测量总线阻抗 2. 确认各节点波特率 |
| 自动暂停失效 | 1. 暂停信号未锁存 2. 状态机冲突 |
1. 添加信号保持逻辑 2. 检查模式切换条件 |
5.2 参数优化技巧
-
伺服刚性调整:
- 先设置P10-00=1(基本惯量辨识)
- 再调整P10-32(速度环增益),典型值30-50
- 最后微调P10-33(速度环积分时间)
-
通信优化:
iec复制// 修改PDO触发方式为定时器触发 _CAN_SYNC_CONFIG( CycleTime:=2000, // 同步周期2ms WindowTime:=100); // 窗口时间100μs -
运动曲线优化:
mathematica复制梯形曲线加速度计算: a = (V_target - V_initial) / t_acc 其中: - 推荐加速度值 ≤ 0.5 * 伺服最大加速度 - 加减速时间通常取运动时间的20%-30%
6. 程序模板扩展建议
-
安全功能增强:
- 添加STO(安全转矩关断)功能
- 实现双通道急停回路
- 增加安全速度监控
-
工艺配方管理:
iec复制// 配方数据结构示例 TYPE Recipe : STRUCT StepCount : INT; Positions : ARRAY[1..10] OF DINT; Speeds : ARRAY[1..10] OF INT; DwellTimes : ARRAY[1..10] OF UINT; END_STRUCT END_TYPE -
远程监控接口:
- 通过MODBUS TCP暴露关键数据
- 开发Web可视化界面
- 添加短信报警功能
这套模板在实际项目中已经稳定运行超过2000小时,期间经历过三次大的功能迭代。最深刻的体会是:良好的状态机设计和详细的异常处理,比实现华丽的功能更重要。特别是在自动/手动模式切换时,一定要做好位置保持和速度渐变,否则容易出现机械冲击。
