老规矩文末照例留了口令彩蛋看到最后的朋友自己去拆。先把正事说透——西门子1200PLC之间走Profinet无线通讯这事我帮人调过不少回也踩过不少坑。很多人一上来就问“两台S7-1200能不能直接走Profinet无线”能但前提是你得搞清楚两件事第一1200之间怎么建立Profinet IO关系第二无线链路怎么在不破坏Profinet报文的前提下把数据送过去。这篇文章就把这两件事掰开揉碎讲清楚顺便把一套可以直接抄作业的例程完整走一遍。这套内容适合谁做自动化改造的电气工程师、现场设备维护人员、以及正在学Profinet组态但从来没碰过无线的朋友。你不需要懂太深的射频知识也不需要背Profinet协议栈只要跟着例程把I-Device组态和无线链路配对搞定现场完全够用。1. Profinet通讯的基础I-Device模式与数据交换原理想搞懂1200PLC之间的Profinet无线通讯第一步不是碰无线设备而是先把有线状态下的Profinet IO关系建立起来。很多人在这一步就卡住了原因不是不会点鼠标而是没理解S7-1200之间做Profinet通讯到底用的是哪套机制。1.1 I-Device智能从站模式主从关系一句话讲清两台S7-1200之间要想建立Profinet IO关系绕不开I-Device模式也就是智能从站模式。有人问能不能把一台1200直接当普通IO设备挂到另一台1200下面不行S7-1200本身是一个完整的PLC它不是ET200SP那种纯IO从站它有CPU、有程序、有自己的处理逻辑。所以要让它作为从站接入另一台PLC的Profinet IO系统就必须启用I-Device功能让这台PLC“兼职”做从站既跑自己的程序又向外提供IO数据区。打个比方车间主任要跟工段长对接生产任务但工段长自己也有活要干不能光站着听主任派活。I-Device就是让工段长一边干自己的活一边在固定的窗口期接收主任下达的任务单、回报完成情况。两边不用打电话不用写纸条数据自动按周期同步。这里有个硬性条件S7-1200的固件版本必须V4.0以上组态软件用TIA博途V13 SP1以上的版本因为I-Device功能是从这个版本开始完整支持的。我建议直接用TIA V15.1或者V16、V17老版本不是不行但操作路径差异比较大网上很多教程截图对不上容易把人带偏。1.2 数据交换的本质传输区方向千万别搞反I-Device模式下主站和从站之间的数据交换靠的是“传输区”Transfer Area。这个传输区是Profinet IO的组态概念简单说就是双方各划出一块IO地址区通过周期报文互相映射。映射关系是这样的从站的输入区I区 ← 主站的输出区Q区从站的输出区Q区 → 主站的输入区I区这个方向是很多人第一次配置时最容易搞反的地方。你站在主站那边想我往Q区写数据这数据就会出现在从站的I区里从站程序读I区就能拿到主站发来的东西。反过来从站往自己的Q区写数据主站那边在自己的I区就能读到。说白了Profinet IO的“输入”“输出”是站在IO控制器主站视角定义的。我见过有人在组态里把传输区配置成8个字节结果发现从站那边收到的数据总是错位折腾半天才发现是方向理解反了把发送区和接收区填颠倒了。这个问题在无线通讯场景下更容易被忽略因为两边PLC的程序都在正常跑但数据根本没对上。传输区的大小可以根据实际需要配置常用的是32字节或64字节。现场PLC之间交互的无非是启停指令、状态反馈、产量计数、报警代码32字节基本够用。如果你的项目数据量特别大比如要传配方、传几百个浮点数那I-Device就不太合适了建议考虑S7通信PUT/GET后面我会专门对比。2. 无线通讯链路Profinet无线化的关键设计有线状态下通讯原理搞清楚了接下来才是重头戏——怎么把中间的网线换成无线链路还不能让Profinet报文出错。这一步是整篇例程的核心也是现场最容易出幺蛾子的地方。2.1 无线链路原理你的“无线网线”必须是透明的先明确一个概念Profinet RT通讯走的是标准以太网帧报文里带了VLAN优先级标签对时延和丢包都极其敏感。市面上很多家用无线路由器压根干不了这活因为它们默认开了NAT、DHCP、防火墙还会对数据包做转发处理报文经过它就被“折腾”变形了Profinet IO设备轻则闪断重则直接掉站。正确的做法是用工业级无线终端无线网桥来搭链路把它当成一根“透明网线”用。所谓透明就是无线终端只负责把以太网帧原封不动地从A端搬到B端不修改MAC地址、不修改IP、不做任何路由和地址转换。主站PLC发送的Profinet报文在无线链路里怎么进去的就怎么出来从站侧完全感知不到中间有一段无线电波。说实话这个“透明”二字就是Profinet无线通讯和普通无线组网最大的区别。很多人在现场用两台普通工业AP配对结果发现PLC之间时通时断一看抓包报文里多了无线网桥自己加的东西或者广播域被隔离了组态直接失效。我常用的方案是选一对支持二层桥接的工业无线终端一端设置成AP模式并关闭DHCP、关闭NAT另一端设置为客户端模式两个终端组成一个透明的二层链路。这样做还有个好处Profinet的实时报文优先级VLAN优先级6能被无线设备识别转发时优先处理时延能压到2~5毫秒。这个时延水平对Profinet RT来说完全够用因为IO更新周期一般在8毫秒以上。2.2 硬件选型与现场布置要点硬件选型上不建议用那种几百块钱的商用网桥不是说不能用而是稳定性没法保证。工业现场有变频器、伺服驱动器、大功率电机电磁环境比家里复杂得多普通网桥的抗干扰能力和温度适应范围都不够。至少选支持IEEE 802.11n/ac协议、带有线千兆网口、支持WPA2-PSK加密的工业无线终端发射功率最好可调天线用外置全向或定向天线方便现场调整。现场布置有几个硬性要求都是我用过的教训天线位置要尽量避开变频柜和动力电缆距离至少1米以上。曾经有个项目无线终端就装在变频柜侧面通讯总是不稳定信号强度显示满格但丢包率高得吓人。后来把天线用延长线引出远离柜体问题立刻消失。两端天线之间最好可视中间不要有金属墙体、铁皮隔断。如果实在没法直视那就要考虑加中继或者换点位。无线通讯不像有线穿一堵墙信号可能就掉一半别指望它能穿好几层楼。供电要稳定。无线终端看着功耗不大但工业级设备启动瞬间电流不小如果和PLC共用开关电源的一个支路容易在PLC启动时造成电压跌落。尽量单独供电或者用带隔离的DC-DC模块。3. 完整例程实操两台S7-1200组网与配置下面进入正题整套例程的完整配置。我尽量按博途里的实际操作顺序来讲你跟着做就行。环境我用的是TIA博途V16S7-1200固件V4.4这个组合验证过稳定。3.1 硬件清单与网络拓扑规划准备的材料如下主站PLCS7-1200 CPU 1215C DC/DC/DC6ES7 215-1AG40-0XB0固件V4.4从站PLCS7-1200 CPU 1214C DC/DC/DC6ES7 214-1AG40-0XB0固件V4.4启用I-Device工业无线终端一对支持二层透明桥接网线若干长度按现场定标准超五类以上即可博途软件V16装有S7-1200 V4.0以上版本支持包网络拓扑是这样的主站PLC的PN口用网线接到无线终端A设为AP模式从站PLC的PN口用网线接到无线终端B设为客户端模式A和B之间通过无线电波建立链路。整个链路对PLC来说就是一根虚拟网线。IP规划要给两台PLC和两个无线终端都安排好建议统一在192.168.0.x网段主站PLC192.168.0.1子网掩码255.255.255.0 从站PLC192.168.0.2子网掩码255.255.255.0 无线终端A192.168.0.10仅用于管理不需要与PLC通讯 无线终端B192.168.0.11仅用于管理不需要与PLC通讯做这一步时我额外提醒一句不要给PLC设置自动获取IPProfinet IO设备必须使用固定IP否则一旦无线链路抖动导致PLC重启IP可能漂移整个IO系统就乱了。3.2 从站组态步骤启用I-Device并配置传输区在博途里新建项目先添加从站PLC也就是1214C那台。具体操作如下打开“设备视图”选中CPU的Profinet接口X1在下方属性窗口找到“以太网地址”设置IP为192.168.0.2。然后找到“操作模式”这里最关键把“IO设备”勾选上意思就是这台PLC要作为智能从站参与Profinet IO通讯。勾选IO设备后会出现“已分配的IO控制器”选项这时候可以先不选因为主站还没有组态进项目选不了。接着在这个界面下面找到“传输区”配置区域添加传输区。我习惯添加两个传输区一个用来接收主站数据一个用来发送数据给主站第一个传输区选“输入”32字节名称可以叫“从站接收区”这个区域对应从站的I地址区默认从I0.0开始长度32字节。主站往自己的Q区写数据就会自动映射到这个I区。第二个传输区选“输出”32字节名称叫“从站发送区”对应从站的Q地址区默认从Q0.0开始长度32字节。从站程序往Q区写数据主站就能在自己的I区读到。组态完传输区把从站程序里的数据交换逻辑写上。比如主站发来的启动命令从站程序直接读IB0的bit0位就行// 从站PLC程序 IF 从站接收区.DBX0.0 THEN // 主站发来的启动命令 // 执行启动逻辑 END_IF;博途里I-Device的传输区会自动映射到IO地址但直接用I/Q地址写程序可读性很差我推荐在程序里建一个背景DB然后通过“MOVE”指令把IB0、QB0的数据搬进DB里。3.3 主站组态步骤GSD文件导入与IO设备分配主站的组态需要用到从站PLC的GSD文件。所谓GSD文件就是Profinet设备的“身份证”里面描述了设备支持哪些模块、传输区大小、诊断信息等。打开西门子官方支持网站搜索S7-1200在“产品支持”里找到GSDML文件下载对应你固件版本的XML文件。下载后在博途菜单栏选择“选项”-“管理GSD文件”将下载好的XML文件安装进去。安装完成后在右侧硬件目录的“其他现场设备”-“PROFINET IO”-“PLC”-“Siemens AG”下就能找到对应的S7-1200条目。把这个条目拖拽到网络视图里然后紧接着做三件事分配IO控制器、设置设备名称、分配IP地址。分配IO控制器很简单在从站设备上右键“分配IO控制器”选择我们已经组态好的主站PLC。设备名称必须和从站PLC里设的Profinet设备名完全一致比如都叫plc_slave。Profinet IO是靠设备名寻址的名字对不上主站永远找不到从站。IP地址要和实际一致192.168.0.2这一点也容易出错很多人设备名对了但IP不对导致通讯起不来。最后把主站发送区和接收区的地址对应关系写清楚。我在主站程序里建了三个DB块主站发送DB1里面放32字节数据用于发给从站 主站接收DB3里面放32字节数据用于存储从站发来的信息主站程序的发送逻辑就一句话把DB1里的数据整体搬到QB0开始的输出区接收逻辑是把IB0开始的输入区搬到DB3// 主站PLC程序 MOVE_BLK(IN:主站发送DB.data, COUNT:32, OUT:主站输出Q区); MOVE_BLK(IN:主站输入I区, COUNT:32, OUT:主站接收DB.data);到这一步有线的Profinet IO通讯已经建立起来了。编译、下载、在线监控把主站和从站都切到RUN如果一切正常主站设备视图里从站模块应该显示绿色方块没有诊断信息。3.4 数据块与控制字/状态字的设计通讯通了接下来要干正事设计一套能在无线链路上稳定传输的数据结构。工业现场最忌讳直接把IO地址裸露在程序里维护的人根本看不懂。我习惯在两端PLC各建一个发送DB和一个接收DB然后用控制字、状态字的方式来管理数据。控制字和状态字是工业通讯的老套路了。主站向从站发送的数据第一个字2字节定义成控制字控制字的每一位都有明确含义bit0是允许运行、bit1是启动、bit2是停止、bit3是复位故障。从站向主站返回的数据第一个字定义成状态字bit0是准备好、bit1是运行中、bit2是故障、bit3是本地/远程切换状态。设计成表格就是这样位控制字含义主站→从站状态字含义从站→主站bit0允许运行准备好bit1启动运行中bit2停止故障bit3复位故障本地/远程状态bit4-15备用备用这样设计的好处是两端PLC程序里只需要判断控制字的某一位数据含义一目了然后期排查问题也快。无线通讯最大的风险是链路易受干扰有了控制字和状态字你甚至可以在主站侧做一个通讯超时标志比如超过500ms没收到状态字变化就判断链路异常输出报警。4. 常见问题与排查实录这部分是干货中的干货。无线Profinet通讯不像有线那样插上就通它的问题往往藏得很深。我按实际工程中从高到低的出镜率整理了几个典型问题和排查方法。4.1 IO设备掉站、通讯中断的排查顺序掉站是无线Profinet通讯最典型的故障表现为主站设备视图里从站状态变成红色或者时红时绿不停闪烁。遇到这种情况我的排查顺序永远是先物理层再链路层最后才是组态层别一上来就怀疑程序。物理层看三样东西无线终端供电是否正常、天线连接是否紧固、天线周围是否有新增大功率设备或金属遮蔽物。曾经有个项目连续一周频繁掉站排查到最后发现是车间新装了一台大功率变频器正好在无线链路中间干扰直接拉满。链路层看无线终端的信号强度和丢包率。工业级无线终端一般都有管理界面能看到RSSI、重传率、协商速率。信号强度高于-60dBm且重传率低于1%才算健康低于-70dBm就要考虑调整天线方向或者缩短距离。组态层检查设备名是否一致、IP是否冲突、传输区方向是否正确。这里有个容易被忽略的点主站和从站的PN口如果接的是同一个交换机要注意交换机是否启用了STP生成树协议。STP在链路切换时会阻塞端口几十秒足够让Profinet IO全部掉站。无线场景下某些无线终端桥接链路偶尔会触发STP收敛建议把PLC所接交换机的STP关掉或者在交换机上把这两个端口配置为边缘端口。4.2 常见诊断代码速查TIA博途的在线诊断能给出具体的错误代码排查起来方便很多。下面这个表格是我现场遇到最多的几组代码诊断代码含义处理建议8204IO设备不可用/通讯中断检查无线链路信号、PLC供电、网线连接8205参数分配错误检查GSD文件版本是否与固件匹配重新分配8206组态错误检查设备名称、传输区大小是否一致8207设备不存在Profinet设备名或IP地址配置错误820CIO访问错误检查从站程序是否在访问未组态的IO地址在线诊断的位置是在主站项目树选中从站设备右键“在线与诊断”在“诊断状态”页面能看到这些代码和详细描述。出现8204时先别急着查协议90%的情况是无线链路质量差导致看门狗超时。Profinet IO有看门狗机制如果连续3个IO更新周期没收到报文设备就被判定为故障。无线链路如果经常丢包IO周期设置得太短比如1毫秒、2毫秒那是神仙也救不了必须把更新周期放宽。4.3 无线稳定性调优实录这里分享一个我实测过的调优过程。某项目主站和从站距离约80米中间隔了一个车间通道按说不算远。最初我把IO更新周期设为8毫秒无线终端协商速率很高信号强度-58dBm看着一切完美。实际运行后掉站频率大约每小时一次每次几秒钟又恢复。当时我首先怀疑是无线干扰查了一圈信道发现周围有其他无线设备占用了同一信道就手动固定到5.8G频段的一个干净信道干扰问题解决但掉站偶尔还有。后来用Wireshark抓包分析发现Profinet报文在网络里的实际往返时延波动较大无线链路本身时不时有几十毫秒的延迟尖峰8毫秒的更新周期在这种时延波动下太脆弱了。最终我把IO更新周期改成16毫秒传输区大小保持在32字节不变同时在无线终端上开启了802.11e QoS映射让Profinet的高优先级报文排队时被优先发送。调完之后连续运行一个月没再出现过一次掉站。所以调优的核心思路是无线通讯不要追求极限周期稳定压倒一切。16~32毫秒的更新周期对多数现场工艺来说完全够用。5. 扩展玩法与收尾经验例程做到这一步你想必已经能跑通基本的Profinet无线通讯了。最后再分享两个方向算是这几年在这个领域摸爬滚打的一点心得。5.1 除了I-Device什么时候该用S7通信I-Device模式解决的是周期IO数据交换它的优点是实时性好、有完整的IO诊断、组态直观缺点是数据量受传输区大小限制而且必须有明确的主从关系。如果你的项目数据量特别大比如要传配方、传几百个浮点数、或者通讯的主动权在两端都要随机发起那建议换成S7通信PUT/GET指令。S7通信是TCP/IP之上的应用层协议两端PLC各自建立连接用PUT和GET指令主动读写对方的数据块。它的灵活性比I-Device强可以做非对称通讯、大数据量传输但实时性和诊断能力弱一些而且组态时要手动管理连接资源。无线场景下我推荐非实时数据走S7通信周期性控制信号走I-Device比如现场设备启停用I-Device配方下发用S7通信。有一点要记住S7通信也是基于IP网络的同样需要无线链路稳定。如果无线链路质量差S7通信不会像Profinet IO那样频繁爆出诊断但数据会静默丢失从程序上看就是数据块里的值不更新或者乱跳。这种情况比掉站更隐蔽排查起来更费劲。5.2 关于无线Profinet通讯的一点个人体会做无线Profinet项目这几年最大的体会就是别把无线当有线用。有线链路只要物理上通带宽、时延、抖动基本都是可预测的但无线链路本质上是在分享一个不稳定的介质随时可能受到干扰、遮挡、频率占用等因素影响。所以设计时一定要留余量距离留余量、周期留余量、天线位置留余量这三样都留了后期基本就能安心睡觉。如果你也准备在手头的项目里用这套方案我建议先在一个隔离的小环境里把例程完整跑通别直接上现场。等通讯建立起来、数据交换正常了再挪到现场实测无线距离和信号质量。宁可在地面多花一天调参数也不要在天上出了问题再爬高去碰天线。行该讲的都讲透了。文末的口令彩蛋已经放好复制口令去对应App里找一找就当是给看完这篇例程的朋友一点小回报。祝你在工控这条路上少踩坑多留余量。