S7-1200与ABB机器人Profinet通信组态、映射与排错
简介:这份文档面向工业自动化调试人员与电气工程师,聚焦西门子S7-1200 PLC与ABB机器人之间基于Profinet协议的实时通信配置,属于中高级现场调试类实操资料。内容覆盖硬件准备清单、博图V15中的GSD文件安装与设备组态、双方IP地址规划、8字节收发数据包配置及IB100与QB256等映射地址对照,并延伸至PLC侧收发程序编写与机器人端PN从站、组输入输出信号设置,可协助读者打通从组态到通信验证的完整链路。资源包内含1个docx文档,大小约786KB,以图文步骤说明为主要呈现形式,篇幅紧凑便于现场对照操作。该资料已有4045人学习,适合需要快速上手或排查Profinet通信问题的技术人员参考,也可作为项目实施的步骤备忘与排错思路依据。
1. S7-1200 与 ABB 机器人 Profinet 通信到底在连什么
S7-1200 PLC 与 ABB 机器人 Profinet 通信,现场最常落在一条上下料产线上:PLC 管节拍、配方、安全连锁,机器人管抓取、放置和完成反馈。两台设备经 Profinet 交换的不是一段“神秘协议”,而是一块固定长度的过程映像:PLC 的 Q 区写到机器人输入,机器人的输出回到 PLC 的 I 区。方向搞反,后面组态、映射和排错都会失去主线。
这个方案适合电气调试、机器人集成和产线维护人员。你不需要会写完整机器人程序才能把通信打通,但必须能看懂设备名、IP、GSDML 和 IO 字节表。真正容易翻车的不是“会不会连”,而是设备名差一个字符、地址表多占一个字节、看门狗设得太紧。先按最小系统跑通,再谈节拍和容错。
2. 先把通信模型立住:GSDML、设备名与过程映像是三根柱子
2.1 为什么不是“插上网线就能通”:Profinet 的控制器/设备关系
Profinet 现场最常见的一种角色分配,是 S7-1200 做 IO 控制器,ABB 机器人做 IO 设备。控制器负责建立应用关系、按扫描周期刷新过程映像;设备负责把输入输出数据放进约定好的字节区。两边看到的不是“一个变量名”,而是一段连续地址。PLC 侧看到 I 区某几个字节变了,机器人侧看到自己的输入组某几个位变了,中间靠组态建立对应关系。
这也解释了一个常见误解:很多人以为插上网线、IP 能 ping 通,通信就该通。实际并不是。ping 通只说明网络层可达,不代表 Profinet 的设备名、GSDML 型号、插槽长度和 IO 方向对得上。现场调试时,BF 灯闪但 ping 得通的情况并不少见,问题往往出在设备名或组态条目,而不是网线。
从选型角度看,用 Profinet 代替大量硬接线,价值主要在三点:线束少、诊断信息能进 PLC、信号长度可以按字节扩展。边界也要清楚:普通 Profinet 过程映像不承担安全功能,急停、安全门一类信号按现场规范走硬线或安全总线,不要图省事塞进普通 IO 字里。这个边界先划清,后面组态才不会把普通通信和安全逻辑混在一起。
2.2 GSDML 文件不是驱动,是设备身份证和插槽说明书
GSDML 文件本质是一份 XML 描述,告诉组态软件:这个设备叫什么、有哪些插槽、每个插槽支持多少字节输入输出、诊断文本怎么显示。它不是安装到操作系统里的驱动,而是导入到 TIA Portal 硬件目录里的设备描述。没有它,硬件目录里就没有机器人这个“可拖拽的设备”;版本不对,插槽和实际固件对不上,编译能过但下载后设备起不来。
我一般会先确认机器人控制器侧 Profinet 选项已经启用,再拿到与当前控制器固件匹配的 GSDML 文件。常见做法是从机器人控制器导出,或者从随设备资料中取对应版本。不要手改 XML 里的型号和字节数,现场看着能骗过编译,联调时会以更奇怪的方式翻车。GSDML 版本和机器人固件不匹配时,典型现象是设备能出现在网络里,但模块报错、插槽灰色、诊断缓冲区提示设备型号不匹配。
安装 GSDML 时还有一个细节:目录里不要同时塞多个版本。组态软件可能生成重复设备条目,拖错条目后地址长度和实际设备不一致。正确做法是先移除旧版本,再安装新版本,然后在硬件目录里按设备名称搜索,确认型号、插槽数和 IO 长度与机器人侧配置一致。这个动作花不了几分钟,能省掉后面大量“为什么信号只通一半”的排查。
2.3 设备名、IP 与过程映像的对应关系
Profinet 寻址的主键是设备名,不是 IP。控制器在启动时按组态里的设备名去找设备,找到后再分配或确认 IP。现场经常有人只改 IP,不改设备名,结果 PLC 诊断里一直报“找不到设备”。设备名通常建议全小写,只用字母、数字和连字符,避免下划线、空格和大写字母。不同厂商界面可能放宽限制,但按严格规则命名最稳。
IP 地址要同网段、不冲突,子网掩码一致。机器人侧如果设置静态 IP,PLC 侧组态里也要写同一个地址;如果让控制器分配,机器人侧要允许。现场我倾向于把设备名和 IP 都固定下来,写在设备标签上,换备件时按标签恢复。设备名分配一次后通常掉电保持,但换控制器、换接口模块后要重新分配。
过程映像的方向必须画成表。PLC 的 Q 区是“PLC 发给机器人”的数据,对应机器人侧的输入;PLC 的 I 区是“机器人发给 PLC”的数据,对应机器人侧的输出。这个方向刚接触时很容易反。下面这张表建议直接贴在调试笔记本上:
| 数据方向 | PLC 侧地址 | 机器人侧 | 典型信号 |
|---|---|---|---|
| PLC 到机器人 | Q 区 | 机器人输入 | 启动、复位、配方号、心跳 |
| 机器人到 PLC | I 区 | 机器人输出 | 运行、完成、报警、心跳回传 |
字节长度按信号表来,不要一上来就开很大。常见做法是控制字 2 字节、状态字 2 字节、配方号 4 字节、心跳 4 字节,再留 2 到 4 字节备用。留备用是合理的,但备用区也要在表里写清楚,不能和已有信号重叠。地址重叠在编译时可能只给一个不痛不痒的警告,运行时表现为信号乱跳,排起来很费时间。
2.4 最小可复现的组态顺序
把通信拆成最小系统,顺序不要乱。先确认机器人侧选项和 GSDML,再规划地址表,然后做 PLC 组态,最后联调。下面这张步骤表是我现场常用的顺序,适合第一次打通时照着走:
| 步骤 | 操作 | 检查点 |
|---|---|---|
| 1 | 确认机器人 Profinet 选项已启用 | 机器人侧能看到 Profinet 接口和 IO 配置入口 |
| 2 | 取得匹配的 GSDML 文件 | 文件版本与控制器固件匹配,目录里只留一个版本 |
| 3 | 规划 IO 地址表 | 方向、起始字节、长度、信号名都写清 |
| 4 | 在 TIA Portal 添加 S7-1200 | PLC 的 Profinet 接口 IP 和子网设置好 |
| 5 | 安装 GSDML | 硬件目录里能搜到机器人设备 |
| 6 | 网络视图拖入机器人并连线 | 机器人接到 PLC 的 Profinet 端口 |
| 7 | 设置机器人设备名和 IP | 与机器人侧计划值一致 |
| 8 | 配置插槽和 IO 长度 | 输入输出字节数与地址表一致 |
| 9 | 编译并下载 PLC | 编译无地址重叠,下载后无模块报错 |
| 10 | 在线分配设备名 | 选中正确网卡,分配到机器人 |
| 11 | 机器人侧设置同名同 IP | 保存后重启通信 |
| 12 | 监控表交叉验证 | PLC Q 动,机器人输入动;机器人输出动,PLC I 动 |
这张表里最容易省略的是第 3 步。很多人直接拖设备、设 IP,地址到用的时候再想,结果不是方向反了,就是两个信号抢同一个字节。先把表画出来,后面组态只是照表填。第 10 步也容易被跳过:下载完 PLC 就以为通了,实际设备名还没分配,PLC 一直在等设备。把这两步做实,最小系统通常能在一次停机窗口内跑通。
3. TIA Portal 侧组态:从安装 GSDML 到分配设备名
3.1 安装 GSDML 与添加机器人设备的操作路径
在 TIA Portal 里安装 GSDML,走“选项”菜单下的“管理通用站描述文件”,选择 GSDML 文件所在目录。注意选的是解压后的目录,不是压缩包本身;有些资料给的是 zip,先解压再选。安装完成后,硬件目录会刷新,在“其他现场设备”或“PROFINET IO”分类下按设备名称搜索。搜索时把过滤器清掉,否则可能看不到新装的条目。
添加设备时,先加 S7-1200,设置好 Profinet 接口的 IP 地址和子网。然后在网络视图里从硬件目录拖入机器人设备,放到同一网络,连线到 PLC 的 Profinet 端口。拖动时注意设备型号和插槽版本,不要只看名字差不多就拖。不同 GSDML 版本可能生成相似条目,拖错后编译能过,下载后设备起不来。
设备视图里要配置插槽和 IO 长度。输入输出字节数按第 2 章的表填,不要多填也不要少填。多填会让 PLC 等一段设备根本不发的数据,少填会让后面的信号被截断。配置完成后先编译,看有没有地址重叠和模块长度错误。编译通过只是第一关,不代表设备名和 IP 对得上,下一步还要做在线分配。
提示:安装 GSDML 前把旧版本移除,硬件目录里只保留当前使用的版本,能减少拖错条目的概率。
3.2 网络视图连线与 IO 地址规划表
网络视图里,PLC 和机器人之间的连线不是“画着好看”,它决定了控制器从哪个接口找设备。S7-1200 有的型号有两个 Profinet 端口,内部集成了交换机,线插哪个口要按现场拓扑来。机器人侧如果也有多个网口,要确认 Profinet 用的是哪一个,别把线插到服务口或诊断口上。连好后给机器人设备设置设备名和 IP,设备名按全小写、数字、连字符的规则写。
IO 地址规划建议按“控制字、状态字、参数、心跳、备用”分区。下面是一个示例,不是固定模板,实际按信号表调整:
| 信号组 | 方向 | PLC 地址示例 | 字节数 | 机器人侧 |
|---|---|---|---|---|
| 控制字 | PLC 到机器人 | QB0 到 QB1 | 2 | 机器人输入 0 到 1 |
| 配方号 | PLC 到机器人 | QD2 | 4 | 机器人输入 2 到 5 |
| 心跳发送 | PLC 到机器人 | QD6 | 4 | 机器人输入 6 到 9 |
| 状态字 | 机器人到 PLC | IB0 到 IB1 | 2 | 机器人输出 0 到 1 |
| 完成计数 | 机器人到 PLC | ID2 | 4 | 机器人输出 2 到 5 |
| 心跳回传 | 机器人到 PLC | ID6 | 4 | 机器人输出 6 到 9 |
这张表的关键不是地址从几开始,而是方向和长度一一对应。PLC 的 QD2 对应机器人输入的第 2 到 5 字节,不是机器人输出。现场用监控表强制 QD2 时,如果盯着机器人输出看,就会以为没通。地址表里最好把“PLC 侧”和“机器人侧”两列都写出来,联调时一人盯 PLC、一人盯机器人,按同一行对。
地址规划还要避开 PLC 原有 IO 和过程映像区。S7-1200 的过程映像大小有限,机器人 IO 不要和本地模块、其他 Profinet 设备挤在同一段。编译时如果提示地址重叠,先查表,不要靠改地址碰运气。改完一处要同步改机器人侧映射,否则会出现“PLC 这边动了,机器人那边错位一个字节”的情况。
3.3 下载前检查:IP、设备名、子网、看门狗
下载前我习惯做一遍静态检查,不急着按下载。检查项包括:PLC 和机器人 IP 是否同网段、是否有其他设备占用同一 IP、设备名是否一致、子网掩码是否一致、IO 长度是否与机器人侧配置一致、看门狗和更新时间是否在合理范围。这些项目不花时间,但能挡住大部分首次联调的低级故障。
看门狗不要一上来设得太紧。更新时间设得很小,网络负载一高就偶发掉站,现象是 BF 灯闪一下又恢复,诊断缓冲区里出现看门狗超时。现场常用做法是先按设备支持范围设一个偏保守的值,跑稳后再逐步收紧。交换机如果是非管理型,网络里又有视觉、扫码等大流量设备,建议把 Profinet 单独划一个物理网络,别和办公网、视频流混在一起。
下载前还要确认机器人侧已经保存并重启过通信配置。有些界面改完设备名后不重启不生效,PLC 这边却已经按新名字去找,诊断里就会报设备名不匹配。把两边配置都落盘、重启、再下载,顺序虽然笨,但比下载后反复猜要快。
3.4 在线分配设备名与首次下载的注意点
在线分配设备名,走 TIA Portal 的“在线访问”,选择连接 PLC 的那张网卡,更新可访问设备,找到机器人对应的 MAC 或设备条目,然后分配设备名。分配时确认选中的是机器人,不是 PLC 或其他 Profinet 设备。分配完成后设备通常会重启网络接口,等几秒再下载 PLC 组态。
首次下载后不要只看 PLC 的 RUN 灯。打开诊断缓冲区,看有没有“找不到设备”“设备名不匹配”“模块长度错误”这类条目。再看机器人侧 BF 灯是否熄灭,IO 监控里输入输出字节是否刷新。如果 PLC 报错但机器人侧看起来正常,优先查设备名和 GSDML 型号;如果两边都不动,先查物理链路和 IP。
换备件时这一步不能省。新机器人控制器的设备名可能是出厂值,直接把旧控制器拆下来、新控制器装上去,PLC 会找不到设备。把设备名和 IP 写在标签上,换件后按标签恢复,再在线确认一次。这个习惯看着土,现场很管用。
3.5 用 Python 校验 IO 地址表是否重叠
地址表靠人眼看容易漏,尤其是字节和位混着写的时候。我一般用一个很短的小脚本,把 CSV 信号表读进来,按方向检查字节是否被重复占用。CSV 列固定为side,signal,start_byte,length,side取plc_q或plc_i,start_byte用组态里的起始字节,统一按 0 基或 1 基,不要混。
import csv from collections import defaultdict # io_map.csv 列:side,signal,start_byte,length # side 取 plc_q(PLC 输出到机器人)或 plc_i(机器人输出到 PLC) used = defaultdict(list) with open("io_map.csv", newline="", encoding="utf-8") as f: for row in csv.DictReader(f): side = row["side"].strip() signal = row["signal"].strip() start = int(row["start_byte"]) length = int(row["length"]) # 把每个信号占用的字节展开,便于检查重叠 for byte in range(start, start + length): used[side].append((byte, signal)) for side, items in used.items(): seen = {} for byte, signal in items: if byte in seen: print(f"地址重叠: {side} 字节 {byte} 同时被 {seen[byte]} 和 {signal} 占用") else: seen[byte] = signal print("检查完成")这段代码的逻辑很直接:按方向分组,把每个信号覆盖的字节展开,遇到同一字节第二次出现就打印冲突。start_byte和length必须与 TIA 组态里的字节地址一致,side必须区分 PLC 输出和 PLC 输入,否则会把两个方向误判成重叠。输出里的“检查完成”只代表脚本跑完,不代表没有重叠;要看前面有没有冲突行。信号表改完后重新跑一遍,比在监控表里一个个试要快。
4. 机器人侧配置:把 Profinet 接口映射成可用的机器人信号
4.1 机器人侧要确认的选项与网络参数
机器人侧第一步不是填 IP,而是确认 Profinet 选项已经启用,接口处于可用状态。不同控制器的界面名称不一样,常见入口在控制面板或配置菜单的工业网络/通信主题下。进去后先看 Profinet 接口是否被识别,有没有“未激活”或“仅服务口”的提示。选项没启用,PLC 侧怎么组态都找不到设备。
网络参数包括设备名、IP、子网掩码,有的界面还要填网关。设备名按全小写、数字、连字符写,和 PLC 组态完全一致。IP 要同网段、不冲突,机器人如果有多个网口,确认当前配置的是 Profinet 使用的那个口。现场见过把线插到服务口、配置却写在 Profinet 口上的情况,ping 不通,BF 灯一直闪,查了半天才发现插错。
改完参数要保存并重启通信。有的界面只保存不重启,配置不生效;有的重启后设备名才广播出去。重启后回到 PLC 侧看诊断缓冲区,如果还报找不到设备,先别怀疑机器人硬件,回到设备名和 GSDML 型号上核对。机器人侧配置不是孤立的,它必须和 PLC 组态像钥匙和锁一样对上。
4.2 设备名和 IP 在机器人侧怎么写
机器人侧的设备名有时叫 Station name,有时叫设备名称,位置不同但含义一样。填的时候不要带空格,不要用下划线,不要用大写。现场最稳的写法是类似robot-01、abb-cell02这种全小写加连字符的组合。名字短一点好,但要有唯一性,一条线上多台机器人时别都用默认名。
IP 地址建议和 PLC 同网段,例如 PLC 是192.168.10.1,机器人可以是192.168.10.20,掩码255.255.255.0。不要用192.168.10.1给机器人,也不要和交换机管理地址冲突。如果现场有多个 Profinet 网络,把网段规划写进表里,避免不同设备串网。机器人侧如果允许由控制器分配 IP,也要把设备名写对,否则分配不到正确的设备。
写完后做一次一致性检查:PLC 组态里的设备名、机器人侧设备名、标签上的设备名三者一致;PLC 组态里的 IP、机器人侧 IP、ping 的结果三者一致。三处不一致是首次联调最常见的返工点。把这张小表打印出来贴在电柜门内侧,换件和夜班排查都用得上。
4.3 输入输出字节与机器人信号的映射
机器人侧配置好字节长度后,要把过程映像映射成机器人内部信号。PLC 发过来的 Q 区对应机器人输入,机器人发给 PLC 的 I 区对应机器人输出。映射时按字节或按位都行,但建议控制字和状态字按位映射,配方号和计数按字节组映射。位映射直观,字节组映射适合传输整数。
下面是一个映射示例,实际信号名按项目命名:
| 机器人侧信号 | 方向 | 对应 PLC 地址 | 说明 |
|---|---|---|---|
di_start | 机器人输入 | Q0.0 | PLC 启动脉冲 |
di_reset | 机器人输入 | Q0.1 | PLC 复位脉冲 |
di_recipe | 机器人输入 | QD2 | 配方号 |
do_running | 机器人输出 | I0.0 | 机器人运行中 |
do_done | 机器人输出 | I0.1 | 动作完成 |
do_alarm | 机器人输出 | I0.2 | 机器人报警 |
映射完成后,在机器人侧手动强制一个输出位,回到 PLC 监控表看 I 区是否变化;在 PLC 侧强制一个 Q 位,回到机器人输入监控看是否变化。两边各做一次,方向就不会反。整数信号要注意字节序,PLC 和机器人对 16 位、32 位整数的字节排列可能不同,出现 256 倍跳变时先查字节交换,不要先怀疑通信断了。现场用字节和位做首轮测试最稳,整数等通信稳定后再接。
4.4 握手指令的最小测试逻辑
最小测试逻辑不需要复杂程序,但要有“启动、完成、报警、心跳”四类信号。PLC 侧给一个启动脉冲,机器人收到后置运行位;机器人动作完成置完成位,PLC 收到后复位启动;机器人故障置报警位,PLC 做汇总。心跳用一个递增计数器,PLC 每 100 毫秒加一,机器人原样回传,PLC 检测回传值是否在变化。
| 信号 | 产生方 | 测试方法 |
|---|---|---|
| 启动脉冲 | PLC | 监控表强制 Q0.0 一个扫描周期 |
| 运行位 | 机器人 | 机器人输入触发后观察 I0.0 |
| 完成位 | 机器人 | 机器人动作结束观察 I0.1 |
| 报警位 | 机器人 | 模拟报警观察 I0.2 |
| 心跳 | 双方 | PLC 发递增值,机器人回传,PLC 比较 |
不要用单个位一直为 1 当完成信号。完成信号用上升沿,或者用计数器变化,PLC 侧做边沿检测。心跳也不要只发常数,常数看不出通信是否停止刷新。测试时先把机器人置于手动或空运行状态,确认信号链路通了,再联动真实动作。这个顺序能避免第一次联调时机器人突然动起来。
4.5 状态字和报警字建议
状态字建议按位定义,不要今天用 bit0 表示运行、明天改成 bit3。常见分配是 bit0 运行、bit1 完成、bit2 报警、bit3 急停反馈、bit4 到 bit7 预留。报警字每位对应一个故障码,PLC 侧做汇总和文本显示。心跳字单独占 4 字节,不要和状态字挤在一起,排错时一眼能看出通信是否还在刷新。
保留备用字节是有必要的,但备用区要在表里写“预留”,不要被别的信号偷偷占用。现场改程序时最容易发生的事,就是新加一个信号随手塞进备用字节,结果和旧映射冲突。每次改表后跑一遍第 3 章的校验脚本,再下载,能省掉很多“昨天还好好的,今天信号乱了”的麻烦。
5. 联调避坑:BF 灯闪、信号不动、偶发掉站的排查顺序
5.1 物理层和交换机先排除
现象:PLC 和机器人 BF 灯闪,ping 时通时不通,诊断缓冲区里反复出现设备丢失。原因可能是网线、交换机端口、接头屏蔽、IP 冲突,也可能是线插错口。解决顺序是先看端口灯,再换已知 good 的网线,再分段 ping。PLC 到交换机、交换机到机器人,一段一段缩,不要一上来就改组态。
现场容易忽略的是交换机和网络负载。Profinet 对实时性有要求,如果同一个交换机上还挂着视觉相机、视频流、办公电脑,网络负载高时可能偶发掉站。常见做法是给 Profinet 单独划一个物理网络,或者至少用支持工业环境的交换机。非管理型交换机不是不能用,但网络里设备一多,排查会变成黑匣子。网线屏蔽层和接地也要看,电柜里变频器一启动就掉站,很多时候是屏蔽和接地没做好。
5.2 设备名不一致的典型现象与修复
现象:PLC 诊断缓冲区提示“找不到设备”或“设备名不匹配”,机器人 BF 灯闪,但 ping 机器人 IP 是通的。原因通常是 PLC 组态里的设备名和机器人侧实际设备名不一致,或者设备名里用了大写、下划线、空格。也有一种情况是换备件后没有重新分配设备名。解决方法是回到 TIA Portal 在线访问,选中机器人,重新分配设备名,然后重启机器人通信。
注意,改 IP 不解决“找不到设备”。设备名是主键,IP 是辅助。现场有人把机器人 IP 改成和组态一样,诊断还是报错,就是因为名字没对上。修复后不要只看 BF 灯,打开诊断缓冲区确认“找不到设备”的条目不再新增,再用监控表看 IO 是否刷新。设备名分配一次后通常保持,但换控制器、换接口模块后要重做。
5.3 IO 方向反了和地址重叠
现象:PLC 强制 Q 区,机器人输入没反应;机器人强制输出,PLC I 区不动;或者编译时报地址重叠,运行时信号乱跳。原因可能是方向表画反、PLC 地址和机器人侧映射错位一个字节、两个信号占了同一字节。解决方法是先画方向表,再用第 3 章的脚本校验重叠,最后用单字节信号做交叉测试。
方向反了最典型的表现是“两边都在动,但动的是错的那一边”。PLC 的 Q 区对应机器人输入,不是机器人输出。测试时先只动一个位,比如 PLC 的 Q0.0,盯着机器人输入 0.0 看,不要同时改多个信号。地址重叠则常见于改表后只改了一边,PLC 地址变了,机器人映射没变,结果读到的字节整体错位。每次改表后两边一起下载,再做一次全量核对。
5.4 GSDML 版本与固件不匹配
现象:设备能出现在网络里,但模块报错、插槽灰色、PLC 启动时设备起不来,诊断里提示设备型号或模块长度不匹配。原因通常是 GSDML 版本与机器人控制器固件不匹配,或者硬件目录里拖错了条目。解决方法是确认控制器固件对应的 GSDML 版本,移除旧版本,重新安装匹配版本,再重新组态设备。
不要手改 GSDML 里的型号和字节数来“凑”编译通过。编译能过,下载后设备仍会按实际固件响应,错位会在运行期暴露。安装新版本前把旧版本从硬件目录移除,避免同名条目重复。组态完成后编译一次,下载后看诊断缓冲区,确认没有模块长度错误。GSDML 这类文件看着像配置文件,实际是设备契约,版本对不上就不要硬上。
5.5 看门狗与更新时间导致的偶发掉站
现象:通信平时正常,变频器启动或网络流量大时 BF 灯闪一下又恢复,诊断缓冲区出现看门狗超时。原因是更新时间设得太小、看门狗倍数太紧,或者网络负载过高、交换机处理不过来。解决方法是先把看门狗放宽到现场可接受的范围,观察是否还掉站;如果仍掉,查交换机、屏蔽、接地和网络负载。
看门狗不是越小越好。设得太紧,网络稍有抖动就断,PLC 侧会反复进入设备丢失状态,机器人动作也可能中断。设得太松,真断线时发现得晚。现场常见做法是先按设备支持范围设一个保守值,跑稳后再根据节拍要求收紧。改完看门狗后做一次断线恢复测试,拔网线几秒再插回,看 PLC 和机器人是否能自动恢复,还是需要重新分配设备名。这个测试比只看灯更接近真实故障。
6. 上线前的验证方法与一个可复用的心跳测试技巧
6.1 上线前做三轮交叉验证
我一般会做三轮验证,不靠“看起来通了”收工。第一轮静态验证:设备名、IP、子网、IO 长度、地址表全部对照,跑一遍地址重叠脚本。第二轮单点验证:PLC 强制一个 Q 位,机器人输入监控确认;机器人强制一个输出位,PLC I 区确认;整数信号发一个已知值,确认字节序没有翻倍。第三轮断线恢复:拔掉网线 2 到 3 秒再插回,观察 BF 灯、诊断缓冲区和机器人报警,确认能自动恢复,还是需要人工重新分配设备名。
| 验证轮次 | 重点 | 通过标准 |
|---|---|---|
| 静态验证 | 名字、IP、长度、地址表 | 无重叠、无冲突、两边表一致 |
| 单点验证 | 位信号和整数字节序 | 强制一个点只动一个点,整数不翻倍 |
| 断线恢复 | 看门狗和重连 | 恢复后 IO 自动刷新,无持续报错 |
6.2 心跳计数和断线恢复测试
心跳测试不要只发常数。PLC 每 100 毫秒把心跳字加一,机器人原样回传,PLC 侧比较回传值是否在递增。如果回传值停住,说明通信断了或机器人程序没刷新;如果回传值跳变异常,查字节序和地址映射。再配一个超时计时器,比如 1 秒内心跳没变化就置通信故障位,机器人侧也做类似判断。
断线恢复测试要记录恢复时间。拔网线 2 秒,插回后看 PLC 诊断缓冲区是否自动清除、机器人 BF 灯是否熄灭、心跳是否继续递增。如果每次都要重新分配设备名,说明设备名没有保持或网络里存在重复名字。把这些结果写进调试记录,比只写“通信正常”有用得多。血泪经验是:上线前多拔一次网线,比上线后半夜被叫到现场强。希望帮到你。
本文还有配套的精品资源,点击获取