在工业自动化领域,AGV/AMR(自动导引运输车/自主移动机器人)的搬运系统正变得越来越普及。作为这套系统的核心控制单元,欧姆龙CJ2系列PLC以其稳定可靠的性能在行业内广受认可。而实现PLC与上位机、触摸屏的高效通讯,则是整个系统能否顺畅运行的关键环节。
这次我要分享的是基于欧姆龙CJ2 PLC以太网模块的实际配置经验,重点是如何通过以太网实现PLC与上位机、威纶触摸屏的通讯对接,以及针对AGV/AMR搬运场景的特殊配置技巧。这套方案已经在多个实际项目中验证过稳定性,特别适合中小型自动化搬运系统的搭建。
在开始配置前,我们需要确认硬件设备的型号和版本兼容性:
注意:不同型号的威纶触摸屏在通讯协议支持上可能有差异,建议在选型时确认具体型号支持的协议列表。
典型的AGV控制系统网络架构应采用星型拓扑:
code复制[上位机]
|
[交换机]
|——[CJ2 PLC]
|——[威纶HMI]
|——[AGV车载控制器]
关键配置参数:
在AGV控制系统中,需要规划好PLC的数据区用于与HMI和上位机交换数据:
建议分配方案:
code复制CIO 100-199:HMI读写区
DM 1000-1099:上位机指令区
DM 2000-2099:AGV状态反馈区
针对AGV搬运系统的典型界面元素:
状态显示区:
控制按钮:
参数设置:
报警历史:
实操技巧:在界面设计中,关键操作按钮建议做二次确认弹窗,防止误操作导致AGV异常动作。
上位机通过FINS协议与PLC通讯的基本流程:
code复制// 读取DM1000开始的10个字
46494E53 0000000C 00000002 00000000 01010000
00000282 0000000A
csharp复制// 创建TCP客户端
TcpClient client = new TcpClient("192.168.1.10", 9600);
// FINS读取命令构建
byte[] finsCmd = new byte[] {
0x46, 0x49, 0x4E, 0x53, // FINS
0x00, 0x00, 0x00, 0x0C, // 长度
0x00, 0x00, 0x00, 0x02, // 命令码
0x00, 0x00, 0x00, 0x00, // 错误码
0x01, 0x01, 0x00, 0x00, // 服务ID等
0x00, 0x02, 0x82, // 读取DM区
0x00, 0x00, 0x00, 0x0A // 读取长度
};
// 发送命令
NetworkStream stream = client.GetStream();
stream.Write(finsCmd, 0, finsCmd.Length);
// 接收响应
byte[] buffer = new byte[1024];
int bytesRead = stream.Read(buffer, 0, buffer.Length);
// 解析数据
int dataStart = 24; // 数据起始位置
for(int i=0; i<10; i++) {
int value = BitConverter.ToInt16(buffer, dataStart + i*2);
Console.WriteLine($"DM1000+{i}: {value}");
}
典型的上位机指令集设计:
| 指令代码 | 对应DM地址 | 说明 |
|---|---|---|
| 0x1001 | DM1000 | 目标X坐标 |
| 0x1002 | DM1001 | 目标Y坐标 |
| 0x2001 | DM1002 | 运动速度 |
| 0x3001 | DM1003 | 动作指令(1-启动,2-停止) |
| 0x4001 | DM2000 | AGV当前X坐标(PLC→上位机) |
| 0x4002 | DM2001 | AGV当前Y坐标 |
在PLC中实现的防撞逻辑梯形图示例:
code复制// 检测前方障碍物信号
LD CIO0.00 // 前超声波传感器
ANDNOT TIM000 // 非急停状态
OUT CIO10.00 // 减速信号
// 检测侧方障碍物
LD CIO0.01 // 左侧传感器
OR CIO0.02 // 右侧传感器
OUT CIO10.01 // 暂停信号
在DM区存储路径点的数据结构:
code复制DM3000: 路径点数量
DM3001: 点1 X坐标
DM3002: 点1 Y坐标
DM3003: 点2 X坐标
...
上位机发送路径时的数据包格式:
code复制[Header 0xAA55][PointCount][X1][Y1][X2][Y2]...[Checksum]
电池状态监控的实现:
code复制// 电量低于20%时报警
LD < DM2500 2000 // 假设满量程10000对应100%
OUT CIO15.00 // 低电量报警输出
Ping不通PLC:
HMI连接超时:
数据读写异常:
使用CX-Programmer的在线监测功能:
Wireshark抓包分析:
威纶触摸屏的离线模拟:
通讯性能优化:
AGV运动控制优化:
安全增强措施:
这套系统在实际项目中表现稳定,特别是在中小型AGV搬运场景中,性价比非常高。一个容易忽视但很重要的细节是:一定要做好所有网络设备的接地处理,我们曾经因为接地不良导致通讯时好时坏的问题排查了整整两天。另外,建议在PLC程序中预留足够的调试接口,比如通过特定的DM地址可以临时修改运行参数,这在现场调试时会非常有用。