接到一个ABB机器人和西门子Smart200的PROFINET配置任务时,我一开始也觉得“不就是两头插根网线嘛”。真到了现场才发现,从GSDML文件到哪里找、设备名称怎么起、PLC侧的I/Q地址怎么避开本体模块、到改完配置后的重启顺序,每一步都有讲究。尤其是PROFINET的设备识别靠的是“设备名称”而不是IP地址,这个概念和老一辈工程师熟悉的IP思维完全是两码事,不搞清楚,折腾一下午都可能连不上。
这篇文章写给现场电气工程师、机器人调试工程师和自动化项目集成商。适用场景是ABB机器人(IRC5或OmniCore控制器)加西门子S7-200 Smart(ST系列,固件V2.5以上)通过PROFINET做PLC和机器人之间的DI/DO数据交换。我会把整个配置链路从头到尾捋一遍,包括两头各自的配置步骤、IO地址映射的视角切换,以及我在实际项目中踩过的坑。
1. 先搞清楚:这趟通讯谁是主站、谁是从站
1.1 为什么这种集成里PLC几乎总是当主站
PROFINET IO定义了两种核心角色:IO Controller(IO控制器,也就是主站)和IO Device(IO设备,也就是从站)。在ABB机器人和西门子PLC集成的绝大多数场景里,PLC永远是IO Controller,机器人永远是IO Device,不管对面是S7-1200、S7-1500还是今天我们说的S7-200 Smart。
原因要从ABB的通信设计说起。机器人的核心任务是跑运动轨迹,它的控制周期被运动插补锁得死死的,不太适合承担总线的轮询调度工作。所以ABB把外部总线支持做成了“设备”选项包,比如Profinet Device、DeviceNet、Profibus DP等,机器人侧通过一块通信板卡或网络接口作为从站接入上层控制系统。从数据流看,PLC定期把输出数据写成报文发给机器人,同时读取机器人反馈回来的输入状态,这个过程完全由PLC主导。
打个比方,PLC像项目经理,机器人像施工队。项目经理把所有任务要求打包发给施工队,施工队定期汇报进度,项目经理汇总后再决定下一步安排。谁发任务、谁做汇报,方向是固定的,别指望施工队追着项目经理要活干,那样整个项目流转就乱套了。
有朋友会问,能不能反过来,让ABB机器人当PROFINET主站、Smart200从站?理论上协议允许,但实际项目中基本没人这么用。S7-200 Smart的PROFINET从站功能本身就不是为这种协作模式优化的,而且ABB机器人做主站时配置的是自己的通信组态工具,跟西门子设备的配合远没有“PLC主站+机器人从站”这条路径成熟。我的建议是别折腾,毕竟现场时间最贵。
1.2 “设备名称+IP”双身份:PROFINET和普通网线通讯的根本区别
这是刚接触PROFINET的人最容易栽跟头的地方。普通TCP/IP通信,比如Modbus TCP,设备之间靠IP地址加端口号寻址,IP通就等于链路通。PROFINET不一样,它在二层通过DCP协议(Discovery and Configuration Protocol)发现设备,识别设备的核心标识不是IP,而是设备名称(Device Name / Station Name)。
控制器上电后,会往网络里广播DCP请求,所有PROFINET设备收到后响应自己的设备名称。IO Controller根据组态时填写的设备名称,把IP地址“分配”或“确认”给对应的从站,然后建立应用关系,开始周期性数据交换。所以这个流程里,设备名称是第一位的,IP地址反而是跟随名称被动态确认的。
实际操作中最典型的错误场景:老工程师拿笔记本电脑PING机器人IP,发现能PING通,转头就在PLC侧报“IO设备无响应”。因为PING通只说明二层三层连通性没问题,PROFINET的AR关系压根没建立起来——设备名称对不上,控制器根本不会认这个设备。
再提醒一点:PROFINET设备名称的命名规范跟DNS类似,建议只用字母、数字和连字符(-),别用下划线(_),也不要用中文。我见过一个项目把设备名称写成ABB_Main,带下划线,怎么查配置都看不出问题,最后把名称改成abb-main,几十秒就建连成功。后面会专门讲这个坑。
1.3 一张拓扑图讲清网络结构
整个系统的物理连接不复杂,但有一个容易忽略的点:S7-200 Smart只有一个内置以太网口,编程和PROFINET通讯走的是同一个物理口。所以不能直接把机器人和PLC用一根网线对接然后电脑就没地方插了,现场必须加一台工业交换机。
推荐的连接方式是:ABB机器人控制柜通信口接到交换机,S7-200 Smart网口接到交换机,调试电脑也接到同一台交换机。这样电脑可以同时访问机器人控制器和PLC,做在线监控、程序下载和报文抓取都方便。
IP地址规划我习惯固定成下面这样,清晰也好记:
| 设备 | IP地址 | 子网掩码 | PROFINET设备名称 |
|---|---|---|---|
| S7-200 Smart PLC | 192.168.0.1 | 255.255.255.0 | plc-smart |
| ABB机器人 | 192.168.0.10 | 255.255.255.0 | abb-robot |
| 调试电脑 | 192.168.0.100 | 255.255.255.0 | 无 |
PLC和机器人必须在同一个网段,这是PROFINET组网的前提。交换机建议用工业级产品,普通家用交换机在车间现场强电磁干扰环境下容易出现偶发丢包,虽然PROFINET有重试机制,但站在调试角度,能少一个变量就少一个。
2. 开工前准备:硬件、软件和最关键的那份GSDML文件
2.1 硬件与选项确认:ABB这端必须有“PROFINET Device”选项
先说ABB侧。不管控制柜是IRC5还是OmniCore,机器人不是出厂默认就能走PROFINET的,必须选装了通信选项包。在RobotStudio里可以看到控制器的选项清单,老型号IRC5柜内的通信板卡上也会标注支持的总线类型。有的机器人出厂时带的是DeviceNet、Profibus DP或者EtherNet/IP,就是没有PROFINET,那这个项目就得先解决硬件选型或加装通信模块的问题,不是光改软件配置能解决的。
如果机器人侧根本没有PROFINET物理接口或有效授权,后面所有步骤都不成立。所以我把这条放在最前面:先确认选项,再动手配置。怎么确认最快?打开RobotStudio连接控制器,查看控制器的系统属性或选项信息,找“PROFINET Device”相关条目;现场柜子里一般也有出厂选型清单,对照着看就行。
Smart200侧以ST60为例。需要确认的是固件版本,V2.5以上才支持作为PROFINET IO Controller去组态第三方从站设备。版本低了,软件里根本看不到PROFINET组态入口。升级固件前一定要做好源程序备份,而且升级过程中不能断电,这个操作值得专门留一个时间窗口,别在快下班的时候搞。
2.2 软件与版本匹配:不是越新越好
软件方面,RobotStudio版本需要跟机器人控制器的系统版本匹配,太新的软件连接太老的控制柜系统,有时候会提示版本不兼容,所以版本选择原则是“能连上就是好版本”。STEP 7-MicroWIN SMART则需要V2.5以上版本,这个软件更新相对简单,从官网下载最新版一般都能覆盖。
有一点容易被忽略:RobotStudio装好后,GSDML文件不一定就在安装目录里现成躺着。很多时候你要么从ABB官网下载,要么找ABB技术支持要,要么在随机附带的资料U盘里翻。而STEP 7-MicroWIN SMART本身也内置了一批常见设备的GSDML,但ABB机器人通常不在里面,所以导入这一步基本绕不开。
2.3 GSDML文件:从哪里拿、拿错了有什么下场
GSDML文件相当于设备的“电子说明书”,用XML描述这个PROFINET设备支持哪些模块、每个模块的输入输出字节数、厂商ID和设备ID等信息。主站组态软件拿到这个文件才能知道怎么跟设备交换数据。
获取路径优先级,我个人的习惯是:
- 第一选择:ABB官网下载中心,搜机器人型号加GSDML关键词,下载前核对控制器型号和通信选项版本。
- 第二选择:RobotStudio软件安装目录或安装包内自带的第三方GSDML文件夹,有些版本会附带。
- 第三选择:直接联系ABB技术支持,报控制柜序列号,让他们发对应版本的GSDML。
拿错了会怎样?有几种典型表现:导入时MicroWIN SMART直接提示“无法解析该GSDML文件”;或者导入成功,但设备列表里找不到对应的ABB设备图形;最隐蔽的是能组态、能下载,但实际运行时IO设备反复报错。后面两种情况最浪费时间,因为问题藏在版本错位里,表面看哪都正常。
提示:导入GSDML前,建议用文本编辑器打开文件,看一眼Device Identity里的VendorID和DeviceID,再对一下机器人通信模块的实际标识。这个操作一分钟不到,但能提前排除一大批版本错位问题。
3. ABB机器人侧配置:在RobotStudio里把机器人“变”成一个PROFINET从站
3.1 连接控制器与配置入口:先备份EIO.cfg,再谈其他
打开RobotStudio,连接上控制器之后,进入配置的路径是:Controller → Configuration → I/O System。这里是ABB机器人所有总线信号的老家,DeviceNet、Profibus、PROFINET的配置都从这里进。
改配置之前的第一件事,永远是备份EIO.cfg文件。这个文件保存了机器人全部IO总线配置、信号映射和设备参数,一旦改错了,最粗暴的还原方式就是把旧的EIO.cfg传回去重启控制器。我在现场的习惯是先导出一份EIO.cfg放在电脑桌面,同时把原始配置界面截图存档,改出问题能快速对照回滚。别嫌这一步啰嗦,我见过有人改完信号映射忘了保存原文件,最后只能对着截图一点点手工还原的场景。
还要提醒一件事:进到I/O System页面第一步不是添加设备,而是先通读一遍现有配置。很多机器人出厂时已经配好了本体的安全IO信号、外围DeviceNet设备等,你对现有结构心里没数就动手加PROFINET,很容易把地址规划搞乱。
3.2 组态PROFINET设备:设备名称、IP与子模块长度
进入I/O System界面后,找到新增总线和设备的入口,选择PROFINET From Device方向。这里“From Device”的字面意思是机器人作为PROFINET从站接入外部系统,方向别选错,选成主站方向配置思路就全乱了。
关键参数按前面规划的来填:
- Station Name(设备名称):填abb-robot,全小写、中间用连字符,符合PROFINET命名规范。
- IP地址:192.168.0.10,子网掩码255.255.255.0。
- 子模块长度:根据项目实际DI/DO点数选,最常见的组合是16位输入加16位输出。如果PLC和机器人之间要交换的状态位、控制位比较多,也可以选32位加32位。
子模块长度这里我多说一句。点位数的规划宁多勿少,因为通讯区长度一旦定下来,后面如果想扩,两头组态都得改,还要重启,非常折腾。我习惯先跟电气设计那边把所有需要交换的信号列一遍,再按字节对齐。比如机器人要回传状态位20个,那就按32位算,PLC侧也按对应的字节数建区,别卡着20个位去配,不划算。
模块顺序还会决定后面的地址偏移顺序,第一个添加的子模块对应地址的低位区,后续模块往后错开。这一步自己心里要有数,后面第5节展开讲。
3.3 信号映射:把机器人的DI/DO绑到PROFINET数据上
配置完设备和子模块后,关键操作是把机器人的实际信号映射到PROFINET数据区。这步的本质和以前配DeviceNet、Profibus时把IO信号跟总线数据位关联是同一个套路。
方向一定要理清楚:
- PLC发出的控制数据,落到机器人侧属于“输入数据”,映射到机器人的DI信号。比如PLC侧输出区第一个字节的bit0,可以映射成机器人的DI_1,用来接收“启动”指令。
- 机器人侧的状态数据,属于“输出数据”,从机器人的DO信号映射到PROFINET的输出区。比如机器人的DO_1“准备好”,映射到PROFINET输出区第一个字节的bit0,PLC那边会在I区对应位置读到它。
这两个方向如果搞反了,调试时你会发现:PLC强制一个Q点输出,机器人那边完全没反应;机器人强制一个DO点为1,PLC那边怎么都监控不到。其实就是视角没切换过来。
信号命名建议直接用有业务含义的名字,比如ready、start、mode_auto,不要全是DI_0、DO_0这种。PLC编程人员看到I4.0只能靠点位表猜含义,你在机器人侧起一个语义明确的信号名,能让整个项目后期省掉很多沟通成本。
3.4 保存配置并重启控制器:一切以生效为准
配置和映射都做完,保存配置后,ABB机器人通常需要重启控制器,或者至少重启IO系统进程,让新配置真正加载进去。有时候界面显示“已保存”但总线设备状态还是灰的,问题就在没有重启之后再看。
重启完成后,到示教器的IO视图里查看PROFINET设备状态。如果这时候PLC侧还没组态,设备显示为断线或错误是正常的——从站没等到主站来认领它。只要确认机器人侧的配置已经生效,就可以放心去PLC那边做组态了。
这里有个实操原则:两头配置不要同时改。先把ABB侧彻底配好并确认生效,再去Smart200侧组态。这样万一后面连不上,排查范围直接从“两边都可能有错”缩成“只查PLC侧和名称一致性”,能省一半时间。
4. Smart200侧配置:让PLC在网络上“看到”机器人
4.1 组态自身:给PLC固定IP,并让PROFINET控制器功能打开
打开STEP 7-MicroWIN SMART,新建工程,选好CPU型号。第一步是在系统块里把PLC的IP地址设为192.168.0.1,子网掩码255.255.255.0。S7-200 Smart的以太网口同时承担编程和PROFINET通讯,IP不固定的话,后面PROFINET组态里设备的地址关系会乱,所以一上来就先固定。
接着找到PROFINET组态页面。S7-200 Smart软件里的PROFINET界面没有TIA Portal那么复杂的拓扑图,更像一个参数列表,字段填对就行。在这页里需要把PLC本身作为IO Controller使能,相当于告诉PLC:“你是主站,去认领下面这些从站设备。”
这个使能选项如果没打开,后面的一切组态都不会生效,PLC只会当这是一台普通能上网的设备。
4.2 添加IO设备:导入ABB的GSDML并配置名称、IP和地址区
在PROFINET组态页面里,找到添加IO设备的入口,导入前面准备的那份ABB GSDML文件。导入成功后,设备列表里会出现ABB机器人的条目,把它添加为当前IO控制器的设备,然后配置关键参数:
- 设备名称:填abb-robot,跟ABB机器人侧填的Station Name完全一致。
- IP地址:192.168.0.10。
- 输入输出地址区:为从站设备分配PLC侧的I区和Q区起始地址。
最后这个地址区分配,是Smart200用户最容易懵的地方。S7-200 Smart不像S7-1500那样有专门的分布式IO地址区,PROFINET从站的数据直接映射到CPU的I区和Q区地址上去。这意味着你必须手动给机器人从站指出“你的数据在I区从哪里开始、Q区从哪里开始”,而且选址必须避开PLC本体IO和扩展模块占用的地址。
比如ST60这款CPU,本体输入输出会占用I0.0起始的一段地址和Q0.0起始的一段地址,具体占多远要看实际接线。所以安全起见,我把机器人从站的输入区从I4.0开始分配2个字节,输出区从Q4.0开始分配2个字节,离本体模块远远的,减少冲突可能。
4.3 编译下载与一致性检查:正常时状态就是“在线”
配置完成后编译工程,确认无错误后下载到PLC。下载完后把PLC切到RUN状态,观察网口的LINK/ACT灯是否正常闪烁,同时回到PROFINET组态页面在线查看设备状态。
正常的状态应该是:IO设备一栏显示机器人已经连接,没有“故障”或“错误”标记。如果显示设备未找到或者报IO设备故障,直接跳到第6节,按排查路径一层层来。
注意:PROFINET组态改动之后,最稳妥的做法是给PLC整柜重新上电一次,而不是仅仅用软件里的热下载。因为部分固件在运行态只加载部分组态变更,PROFINET这条链路有时候必须冷重启才完全重新建连。现场反复下载好几遍都连不上,一次重新上电就恢复的情况我遇到过不止一次。
5. IO地址映射和字节序:这里最容易阴沟翻船
5.1 “输入/输出”视角切换:PLC的I区其实是机器人的DO
这个环节是全文最绕的,但也是最有价值的。先记住一张对照表,能省掉后面一小时的抓狂:
| 从PLC主站视角 | PLC地址区 | 从ABB机器人从站视角 | 实际含义 |
|---|---|---|---|
| PLC读取(输入) | I4.0~I5.7 | 机器人DO区 | 机器人状态反馈到PLC |
| PLC写出(输出) | Q4.0~Q5.7 | 机器人DI区 | PLC控制指令发往机器人 |
翻译成人话:你在PLC程序里看到I4.0变1,说明是机器人那边某个DO信号送过来的“状态”,告诉我们机器人准备好了,不是PLC给机器人的指令。反过来,你在PLC程序里让Q4.0输出1,本质上是PLC在往机器人侧写数据,机器人那边对应的DI信号会变1,它就知道要干活了。
很多第一次做机器人通讯的工程师,看到I和Q就往本机IO上想,然后跑去查PLC接线,这完全是方向性错误。PROFINET映射过来的I/Q点就是软数据,跟物理接线没有任何关系。
5.2 字节序、位号与模块顺序:跟着数据走,而不是跟着感觉走
地址区分配好了,具体位号怎么对位,有几种情况容易乱。
第一种是字节内的位号。Q4.0对应第一个输出字节的bit0,Q4.1对应bit1,后面Q4.7对应bit7,再往后就是下一个字节Q5.0。这个顺序本身是死的,不容易错,但如果你在PLC里是按“字”赋值给机器人,比如MOVW一个16位整数到QW4,那就会出现一个隐藏问题:字数据里哪些位落在Q4.x、哪些落在Q5.x,取决于数据的位排列,这在机器人侧表现可能是DO_1和DO_9交换了位置。
第二种是字节序问题。ABB机器人的PROFINET从站在接收多字节数据时,有的模块配置按字节正好正序,有的则需要字节交换(Byte Swap)。GSDML里的偏移表不是不能看,但对现场调试来说,最快的方式永远是实测:在机器人示教器上强制一个DO输出为1,然后看PLC监控表里到底是I4.0、I4.1还是I5.0变成1。看到哪个点了,就说明实际映射在那个位置,对不上就做个字节交换或者位偏移调整,再测一遍。
第三个是模块顺序问题。当机器人侧添加了多个子模块时,第一个子模块通常占据地址区的低字节,第二个子模块的偏移会往后推。你机器人侧如果先加了一个16位输入模块,又加了一个16位输出模块,那PLC侧的地址分配里,输入区和输出区的起始位置可能不是你想象的那样对齐的。所以组态完先别急着写程序,花五分钟把两头的数据区长度和模块顺序对一遍。
5.3 用监控表验证信号:最朴实也最有效的方法
数据对不对,别猜,用状态表直接验证。STEP 7-MicroWIN SMART里的状态表可以实时监控I区和Q区。把I4.0到I5.7、Q4.0到Q5.7全部拉进监控表,在线运行,然后按下面的流程走一遍:
- 在ABB机器人示教器上进入IO视图,强制机器人侧DO区对应位为1,回到MicroWIN SMART状态表看I区对应位有没有变成1。
- 在MicroWIN SMART状态表里强制Q区某一位为1,回到机器人示教器看DI区对应位有没有变1。
- 两边都确认无误后,再做一轮连续变化测试,比如依次翻转多个位,观察时序和同步性。
如果发现错位,回到配置里调整映射或地址分配,改完重新下载验证,直到全部对位。整个过程二十分钟内应该能完成,但它是整个通讯调试里最值钱的二十分钟,因为这一步验证通过,后面PLC程序和机器人程序的联调就建立在可靠的数据通道上。
我建议把验证结果整理成一张表格存档,连同点位表一起给客户留一份,方便将来维护人员排查问题,也省得半年后有新工程师问你“I4.0到底是啥”。
6. 联调实测:故障定位路径与处理经验
6.1 第一步永远是物理层:网口、网线、指示灯
通讯调不通,别先怀疑配置,从物理层开始排查。检查交换机上两个网口的LINK指示灯是否常亮,ACT灯是否有数据闪烁。如果LINK灯都不亮,检查网线是不是做了交叉线(现在大多数设备网口自动翻转,但不排除老模块和特殊线序),检查网线是否压接牢固,检查交换机端口是否被关了。
PLC侧网口灯也有参考性:S7-200 Smart供电正常且网口检测到链路时,LINK灯会亮,通讯活动时ACT灯闪烁。机器人侧通信模块面板上一般也有状态灯,PROFINET断线或异常会有明显表现。
这里有一个Smart200用户的常见窘境:PLC只有一个网口,你又要在线修改程序,又要让PLC和机器人保持PROFINET通讯。在线下载程序、或者电脑跟PLC频繁交互的瞬间,PROFINET链路可能会短暂中断,这是正常的,下载完会自动重建。但如果你在调试机器人程序时发现PROFINET周期性掉线,可以先让电脑断开PLC的连接,单独观察链路,排除电脑抢占的影响。
6.2 设备名称不匹配:PROFINET最常见错误的典型特征与修正
这是我遇到次数最多的故障。现象非常典型:PLC侧PROFINET组态页面显示IO设备故障或报“设备未找到”之类的信息,机器人侧通信模块状态灯异常,但PING机器人IP又能通。
按前面说的DCP机制,控制器查找的是设备名称,不是IP。名字对不上,一切白搭。排查时先做两件事:
- 打开MicroWIN SMART的PROFINET组态页面,仔细核对设备名称是否和ABB机器人侧填的Station Name一字不差,包括大小写和连字符位置。虽说规范上名称不区分大小写,但“完全一致”仍然是最稳妥的原则。
- 检查名称里有没有下划线或中文等不合法字符。ABB侧有些配置界面并不强制校验字符集,你填了下划线它也可能给你保存下来,但到了PROFINET发现阶段,这不合法字符就可能导致DCP无法正确匹配。
我曾经在一个项目里调试了快一个小时,来回重启了好几轮,最后发现PLC侧名称在复制粘贴时尾巴上带了个空格。去掉空格,重新下载,几十秒内AR关系就建立起来了。这个故障的教训是:配置错误往往藏在最不起眼的地方,复制粘贴完一定要肉眼比对一遍。
6.3 组态与固件版本:S7-200 Smart的PROFINET能力边界
如果名称和IP都没问题还是连不上,就该怀疑版本层面的兼容性。首先确认Smart200固件确实是V2.5以上,这个在前面准备阶段就应该确认过,但如果现场拿到一台别人调过的PLC,很难说固件版本后来又被谁刷回去过。检查方法是查看系统块里的CPU版本信息。
然后是GSDML版本。ABB机器人PROFINET模块基于的PROFINET规范版本,和MicroWIN SMART内置解析器的支持范围不一定完全重合。GSDML版本太高,导入就可能失败;版本太低,组态出来的模块参数跟机器人实际能力不匹配。如果导入就报错,找到更匹配的GSDML版本再试,这是最快的路径。
S7-200 Smart作为IO控制器时,对从站设备类型和数量也有自己的能力边界。现场如果挂着好几个从站设备,Smart200这边的组态容量不一定吃得下,超限时报错也不会太友好。从这个角度说,如果项目里PROFINET从站数量多、数据类型复杂,换S7-1200或S7-1500会更轻松,Smart200更适合点位需求不大的中小场景。真遇到极少数GSDML特性跟Smart200解析器不兼容的情况,可以考虑加一个PN-PN耦合器或者干脆走Modbus TCP过渡,但绝大多数项目用不到这一步,只是提醒你留个后手。
6.4 重启顺序与恢复机制:反复调试时最容易被忽略的坑
配置改了一轮又一轮,两边都保存了,就是连不上,先想想你重启的顺序对不对。我的习惯是:ABB机器人侧先重启控制器,确认机器人侧PROFINET从站设备完成自检、进入等待主站状态,然后给Smart200整柜重新上电,让PLC作为IO Controller重新发起发现流程。顺序反过来的话,PLC一直广播寻找一个还没上线的从站,虽然理论上后面也会自动建立连接,但现场观察时容易把“启动中”误判成“故障”。
现场意外断电后恢复也有讲究。我建议先把交换机和PLC上电,等PLC启动完成,再给机器人控制柜上电。这样整个网络里,主站先就位,从站陆续加入,链路建立过程最干净。如果所有设备同时上电,个别情况下会看到一次闪烁报警,随后又自动恢复,通常问题不大,但频繁这样操作会让人搞不清楚是配置问题还是启动顺序问题。
调试期间还要控制住“每改一次就全部上下电”的冲动。尽量把配置改动攒几处一起改完,然后系统性地重启验证一次。这样每次重启后观察到的状态变化,能准确对应到刚才改的那些参数上,排查起来思路清晰。如果改一个参数就重启一遍,很容易把由于上下电时序导致的临时故障和真正的配置错误混在一起,反而浪费时间。
调试完成后,建议把所有参与设备的IP地址、设备名称、GSDML版本号、PLC地址区分配整理成一张配置记录表,跟点位表放一起。这个项目做完,我最大的体会是:ABB和西门子两头都是老牌工业设备,PROFINET协议本身也很成熟,出问题的地方几乎都在人为配置的细节——GSDML版本、设备名称、IO地址规划这些。尤其是设备名称这个概念,老一辈电工思维里永远只有IP,但这恰恰是PROFINET和普通网线通讯的分水岭。
最后分享一个个人工作习惯:每次改完配置,我都在工程目录下留一个“日期+改了啥”的文本记录,机器人侧和PLC侧都这样保存。调试到第N轮时翻一下记录,很多“灵异故障”其实就是自己前面某一步改过又忘了。另外,强烈建议先拿一个便宜的第三方IO从站把Smart200的PROFINET连接流程练熟,再接真机器人调试,毕竟机器人站在车间里等你,时间成本比什么都贵。