简介:《EL6631-0010(从站)模块设置.docx》面向使用倍福 EL6631-0010 Profinet 从站模块的自动化工程师与调试人员,围绕模块接入、通信配置及故障排查,提供一份可对照操作的设置文档。包内仅有1个docx文件,压缩包约907KB,篇幅集中、结构按步骤展开,便于现场调试或自学时快速查阅。该文档已获得1031人学习,内容从添加模块、设置Profinet单元、添加与配置通道,到LINK变量、填写第三方设备IP和激活下载均有说明,并针对链接不上问题整理拓扑检查、网线测试、GSDML描述文件确认及厂商IP核对等排查思路。读者可据此理解从站模块与第三方设备通信的关键环节,减少配置反复与排错时间。
1. 版本与环境的坑:EL6631-0010 不是插上线就能通
倍福 EL6631-0010 从站模块的设置,看起来只是 TwinCAT 里点几下右键,实际出问题的地方往往出现在点之前:描述文件版本对不上、通道按 BYTE 还是 WORD 选错、地址栏填成了自己这一侧。我见过最典型的一次,模块第三个红灯闪了三秒又变回红,现场三个人围着机柜查了两个小时网线,最后发现是 GSDML 用的是旧批次。这套环境本身不复杂——一台装了 TwinCAT 3 的工程师站、一个 EL6631-0010 端子、一条到第三方 PROFINET 控制器的网线——但每一步都有明确的先后顺序,顺序错了,后面全是玄学。下面按我实际装机的顺序走一遍,从环境确认到激活验证,包括链接不上时怎么一层层排查。
2. 添加模块与 Profinet 单元:扫描和手动右键两条路
2.1 动手前先把五样东西对齐
我不太建议一上来就开 TwinCAT 右键,先把下面这张表里的东西核对一遍,能省掉后面一半的返工。工业现场的时间成本不在配置本身,而在来回跑机柜。
| 项目 | 要确认的内容 | 我一般的做法 |
|---|---|---|
| 工程师站 | TwinCAT 3 已安装 PROFINET 相关组件 | 安装时在 I/O 组件里勾上 PROFINET,装完重开 IDE |
| 描述文件 | GSDML-V2.33-beckhoff-EL6631-20200116.xml | 从倍福自带目录取,核对文件名日期段 |
| 模块本体 | EL6631-0010,EtherCAT 侧接在耦合器后面 | 上电后看 RUN 灯,常亮再进软件 |
| 通信网线 | EL6631 的 PROFINET 口到第三方控制器 | 优先直连,中间不串交换机 |
| 供电 | 24V,模块与耦合器共地 | 需要断电重连时两边一起断 |
描述文件这一行最容易糊弄过去。GSDML 的 V2.33 是它遵循的规范版本,后面那串 20200116 是发布批次,两批文件名只差日期,导入进去在列表里显示的名字可能一模一样,选错了根本不报错,只会在建链阶段表现成“怎么都不通”。我的习惯是把文件先丢到一个固定目录,用命令行确认一遍再用。
# 确认描述文件落在 TwinCAT 的 PROFINET 配置目录,路径按实际安装盘符改 $gsdml = "C:\TwinCAT\3.1\Config\Io\Profinet\GSDML-V2.33-beckhoff-EL6631-20200116.xml" Test-Path $gsdml Get-Item $gsdml | Select-Object Name, Length, LastWriteTime第一行只是把路径存成变量,方便后面复用;Test-Path返回 True 才说明文件确实在这个位置,TwinCAT 的 PROFINET 设备树启动时会扫这个目录,放错地方在软件里是看不到的;Get-Item打出文件大小和修改时间,用来判断拿到的是不是别人改过的版本。如果你们的工程师站装在 D 盘或者用了非默认安装路径,这一段要跟着改,别直接照抄。
再用一条命令核对文件里的厂商号和设备号,这一步是给后面排查留证据:
# 抓出 GSDML 里的身份信息,和第三方主站组态里选的设备对一下 Select-String -Path $gsdml -Pattern "DeviceIdentity" -Context 0,4Select-String在文件里做文本匹配,-Context 0,4表示匹配行之后再多打四行,因为DeviceIdentity节点下面通常跟着 VendorID 和 DeviceID 两行属性。第三方控制器组态里选设备时,认的就是这两个号,号对不上,名字看着一样也连不通。这条命令不是必须的,但在现场只有一台笔记本、没有串口也没有调试口的时候,它是我唯一的“黑匣子”记录手段。
提示:描述文件不要放在桌面或者下载目录里,TwinCAT 不会去那里扫。放好之后重启一次 IDE,比在设备树里反复刷新可靠。
2.2 添加 EL6631-0010:能扫就别手点
模块加进工程有两条路,一条是扫描,一条是手动添加。原文里写的是“添加 6631 模块,也可以直接 SCAN 扫描出来”,我的顺序是先扫,扫不出来再手动,因为扫描出来的模块带实际识别信息,后面少一层对不上的风险。
扫描的前提是 EtherCAT 侧已经通了。做法是在 EtherCAT 主站设备上右键,选 Scan Boxes,软件会沿着 EtherCAT 链路把挂着的端子一个个读上来。这一步读的是 EtherCAT 层的身份,不是 PROFINET 层,所以只要耦合器和端子供电正常、EtherCAT 线序没接反,基本都能扫到。扫出来之后核对型号是不是 EL6631-0010,别把同系列的其他变体认错。
手动添加的路子是在 Devices 上右键,Add New I/O Device,在弹出的设备树里选 EtherCAT,再选对应的耦合器或者主站,然后在右侧列表里找 EL6631-0010 或者直接输入型号搜索。手动添加的好处是不依赖现场供电状态,坏处是型号、 revision 都要自己选,选错了软件不会拦你。新手上手我建议先扫一遍,看清楚软件识别出来的 revision 号,再回头手动添加时照着填。
这里有个顺序上的坑:先加 EtherCAT 侧的模块,再加 PROFINET 侧的单元,反过来的话 PROFINET 单元会挂在一个不存在的父节点下面,编译直接报错。原文的步骤 1 和步骤 2 就是这个顺序,别调换。
2.3 在 Devices 下挂 Profinet 单元
模块在 EtherCAT 侧出现之后,回到 Devices 根节点,右键,选 Add New I/O Device,这次在设备树里找 PROFINET 这一支,右边选中 EL6631-0010,确认。原文写的是“在 Devices-右击-Profinet 中选中模块 EL6631-0010”,说的就是这个动作。
挂上去之后你会看到设备树里多了一个 PROFINET 单元,它和 EtherCAT 主站是并列的两套体系。这一点很多人第一次配会绕进去:EtherCAT 侧管的是倍福自己的实时总线,PROFINET 侧管的是和第三方控制器之间的那一段,两边的地址、通道、变量是分开的,别指望在 EtherCAT 那边找到 PROFINET 的 IO 映射。
挂完 Profinet 单元,先别急着往下配通道,编译一次。编译能过说明设备树结构是完整的,编译报错说明父节点、描述文件或者组件有问题,这时候排查比配完通道再排查省事得多。我吃过一次亏,通道全配完、变量也链接好了,一编译提示描述文件缺失,前面二十分钟白做。
3. 通道配置:BYTE 还是 WORD,16 个通道怎么摆
3.1 Device Configure 在哪个位置
上一步生成的 PROFINET 单元在设备树里会显示成一个带实例后缀的节点,形如 el6631-0010-xxxx,xxxx 是软件自动生成的编号。单击这个节点,右侧的属性区里找 Device 栏,里面有一项 Device Configure,点开就是通道配置界面。原文的步骤 4 说的就是这个入口。
这个界面长得不复杂,左边是数据类型和数量,右边是生成出来的通道列表。复杂的地方不在界面,在“选什么”。第三方设备通讯给的是 BYTE 就选 BYTE,给的是 WORD 就选 WORD,这句话原文写得很直白,但现场真正容易错的是:厂商给的地址表里可能一半是字节、一半是字,或者写的是“16 个字”,你得自己换算成通道数。
我的做法是把厂商的地址表打印出来,用笔在每一行旁边标上 BYTE 还是 WORD,标完再进软件。听着笨,但比在界面里来回切数据类型、切一次通道列表就重排一次要快。
3.2 BYTE 和 WORD 的换算关系
这一节是整篇里最值得停下来看的一段。选 BYTE 还是 WORD,本质上是在告诉模块“一个通道占多宽”,宽了窄了都不行,因为对端控制器是严格按自己组态里的偏移量来读写的。
| 选择 | 单个通道宽度 | 16 个通道合计 | 对端组态里的典型写法 |
|---|---|---|---|
| BYTE | 1 字节 | 16 字节 | 按字节连续排列的输入/输出区 |
| WORD | 2 字节 | 32 字节 | 按字排列,模拟量或整型数据居多 |
原文以 16 个 WORD 为例,那就是 32 字节的输入加 32 字节的输出,一共 64 字节的数据区。如果你按 BYTE 配了 16 个通道,实际只有 16 字节,对端却按 32 字节去读,多出来的 16 字节读到的就是无效值,而且不会报通信错误,只会表现为“数据不对”。这种故障最难查,因为链路是通的、灯是绿的,所有表面指标都正常。
反过来的情况也存在:对端只给了 8 个 WORD,你在模块里配了 16 个,多出来的通道没有对端写入,值会一直停在初始状态。所以配置之前,通道数量必须和对端地址表逐项对一遍,不是“差不多就行”。
注意:切换数据类型会清空已经配好的通道列表,如果你已经做了变量链接,切一次链接关系就没了。确定类型之后再往下走。
3.3 输入输出分别配一遍
在 Device Configure 里选好数据类型,输入数量填 16,确认之后界面下方会生成 16 个输入通道。输入配完,切到输出页,同样选数据类型、填 16,再生成 16 个输出通道。原文的“继续选输出”就是这一步。
输入和输出的数量不要求对称。有些现场只需要模块往对端送数据,输入侧配 0 个通道也合法;有些只需要读对端数据,输出侧配 0 个。但一旦某一侧配了 0,另一侧的偏移量计算方式可能会变,我的习惯是宁可两边都配上,用不到的那一侧在 PLC 里不链接变量,这样偏移量是固定的,换人接手也看得懂。
配完之后回到设备树,PROFINET 单元下面会多出几个子节点。原文提到“其中第一个,不用设置,是配置后自动生成的”,这句话是对的,第一个节点是配置的容器,你改它反而会打乱已经生成好的通道结构。要改配置就回到 el6631-0010-xxxx 这个节点上,从 Device Configure 重新进。
通道配完,编译一次。这次编译比上一次更重要,因为它会把通道结构展开成实际的 IO 变量,编译不过说明通道数量和模块支持的上限冲突,或者描述文件里定义的模块型号和实际不符。编译通过之后,设备树里应该能看到完整的输入输出变量树,这就是下一步做链接的基础。
4. LINK 变量与第三方 IP:把 IO 接到 PLC 上
4.1 展开 SUBTERM15 里的 16WORD INPUT
通道配好之后,在设备树的 API 节点下面能看到输入区,原文写的是“在 API 的 16WORD INPUT 里面单击出现 SUBTERM15”。SUBTERM15 这个层级是模块内部子终端的概念,16 个 WORD 的输入就挂在这一层下面。
单击 SUBTERM15,右侧会展开它下面的输入变量。原文的操作是“右击 Outputs,出现下面的变量,全选,右击选择多变量链接,链接 IO”。这里说的 Outputs 指的是 SUBTERM15 这个子终端对外提供的输出方向变量,措辞上容易和“模块的输出通道”混淆,实际操作时认准你在哪一层右键就行。
多变量链接的意义在于一次把 16 个变量全部链到 PLC 侧的对应变量上,而不是一个一个点。16 个通道还能忍,32 个、64 个通道的时候一个个点,手会抖,点错一个位置后面全错位,而且错位不会报错。
我的做法是先回 PLC 侧把变量声明好,用结构体的形式,顺序和通道顺序严格对应:
// PLC 侧变量声明,16 个 WORD 与 PROFINET 输入通道一一对应 // 起始地址按实际映射改,这里只是示意偏移关系 TYPE ST_PnetIn : STRUCT wIn01 : WORD; // 对应通道 1 wIn02 : WORD; // 对应通道 2 wIn03 : WORD; wIn04 : WORD; wIn05 : WORD; wIn06 : WORD; wIn07 : WORD; wIn08 : WORD; wIn09 : WORD; wIn10 : WORD; wIn11 : WORD; wIn12 : WORD; wIn13 : WORD; wIn14 : WORD; wIn15 : WORD; wIn16 : WORD; // 对应通道 16 END_STRUCT END_TYPE VAR stPnetIn AT %IB1000 : ST_PnetIn; // 输入区起始地址 stPnetOut AT %QB1000 : ST_PnetOut; // 输出区起始地址 END_VAR结构体里 16 个 WORD 的排列顺序就是链接时的顺序,AT %IB1000和AT %QB1000是给这两块数据指定过程映像区的起始地址,具体数值要按你工程里已经占用的地址段来定,不能照抄。用结构体的好处是多变量链接时软件按成员顺序批量匹配,链接完在结构体里一眼能看出哪个通道对应哪个成员,比一堆PnetIn_1、PnetIn_2强得多。输出侧的声明方式一样,把方向换成 Q 区即可。
链接完成之后,在设备树里选中变量,右侧会显示它链接到了哪个 PLC 变量。这一步值得抽查两三个,尤其是第一个和最后一个,确认没有整体错位。
4.2 输出变量的链接方式
输出的链接方法和输入一致,展开输出侧的子终端,右键,全选变量,多变量链接,指向 PLC 侧的输出结构体。区别在于方向:输入是模块从对端读回来给 PLC,输出是 PLC 写给模块再送给对端。
有一个细节:输出变量在没链接之前是悬空的,编译可能给出警告但不报错,链接之后警告消失。如果你的工程编译完还有一堆“变量未使用”的警告,八成是某一侧的链接没做完。
链接顺序也要注意。多变量链接是按你选中的变量顺序和目标变量的顺序匹配的,如果你先选了 PLC 变量再选 IO 变量,匹配方向可能反过来。我一般是先从 IO 侧发起链接,选中的顺序天然就是通道顺序,不容易乱。
4.3 EL6631X 栏里的 IP 填写
回到 el6631-0010-xxxx 这个节点,右侧属性区里有一栏叫 EL6631X,原文说这一栏里填的就是第三方设备的 IP 号。这一栏在不同 TwinCAT 版本里位置和叫法可能略有差别,但作用是一样的:告诉模块对端控制器在哪个地址上。
填之前先把地址表要过来,别自己猜。现场常见的情况是第三方控制器用的是某个固定网段,工程师站的网卡也在这个网段里,而模块自己的地址又是另一套。这三者之间的关系没理清就开填,填完激活连不上,再回头查就分不清是地址错了还是别的地方错了。
我的习惯是把三个地址写在一张纸上贴在机柜门内侧:第三方控制器地址、模块 PROFINET 侧地址、工程师站网卡地址。三个地址必须在同一网段,子网掩码一致,而且不能有任何两个重复。地址冲突在现场不算罕见,尤其是复制线导入配置的时候。
填完 IP 不要马上激活,先在工程师站上 ping 一下第三方控制器,能通再往下走。ping 不通的时候激活,等于把网络层的问题推到应用层去查,难度翻倍。
# 激活前先确认网络层可达,地址按实际填 ping -c 4 192.168.1.10-c 4是只发四个包,工业现场的网络一般不允许长时间占用,四个包够判断通断了。Windows 下用ping -n 4。通了再激活,不通就先查网线、网口和地址,别急着怀疑模块。
5. 排查:链接不上时的五步定位
这一章是我从原文第八节那五条处理办法里整理出来的,按我实际排查的顺序重排了,因为原文的顺序是从拓扑图开始,而现场往往是先怀疑网线。
5.1 现象:拓扑图里有节点不是绿色
原因:EtherCAT 侧的链路或者模块本身异常。拓扑图反映的是 EtherCAT 层的连接关系,全绿说明每个端子的上下游都识别到了,有红点或者虚线说明某个位置断了、或者模块没上电。
解决:打开拓扑图,先看 EL6631 模块本身是否正常,再看它上游的耦合器和下游有没有别的端子。拓扑不正确的时候不用往下查 PROFINET,因为底层都没通。重点看三点:模块的 RUN 灯亮不亮、EtherCAT 线是不是从 OUT 接到了下一个的 IN、耦合器的供电是否正常。原文写“正常情况下拓扑图全部都是绿色”,这句话可以当判据用。
5.2 现象:拓扑全绿,但 PROFINET 侧始终建不起链
原因:物理层网线问题,或者网口接错。EL6631 上有多个网口,EtherCAT 用的是其中两个,PROFINET 用的是另外的,接错了在拓扑图上完全看不出来,因为 EtherCAT 侧一切正常。
解决:测试第三方设备和本设备之间的网线。我的做法是拿一台笔记本接到第三方控制器那一侧,ping 一下控制器地址,通说明控制器侧没问题;再把笔记本接到模块这一侧,同样 ping 一次。两次都通,问题就在模块的网口选择或者 IP 配置上;有一次不通,就是那段线或者那个网口的问题。直连线和交叉线在这几年设备上基本都能自适应,但老设备上仍然会遇到,换一根线试是最快的验证。
5.3 现象:网线确认没问题,激活后红灯闪几下又变红
原因:描述文件不匹配。原文写得很明确,该模块采用的描述文件是 GSDML-V2.33-beckhoff-EL6631-20200116.xml,用的是倍福自带的那个。现场常见的情况是工程师从别处拷了一份同名但不同批次的文件,导入之后设备树里看着一样,实际建链阶段身份对不上。
解决:回到 2.1 节那两条命令,先确认文件在不在配置目录、再核对DeviceIdentity里的厂商号和设备号。确认无误之后,在 TwinCAT 里把旧的描述文件卸掉再重新导入,不要直接覆盖。覆盖有时候不生效,设备树里还是引用旧的那份。
5.4 现象:以上都正常,链路仍然建不起来
原因:IP 填错,或者对端的地址和模块不在同一网段。原文的第 (4) 条就是这一项——“询问厂商的 IP 是否正确”。这句话看着像推卸责任,实际是最省时间的做法,因为第三方设备的地址有时候会在调试期间被改过,而地址表没同步。
解决:找厂商确认当前地址,同时确认子网掩码和网关。如果对端是新设备还没配地址,那就先按厂商给的默认地址段把模块和工程师站都配过去,等通了再改回现场规划。别在一个不确定的地址上反复激活,激活次数多了模块状态会变得很乱,断电重启反而更快。
5.5 现象:复制线导入配置后连不上
原因:配置是复制过来的,里面的 IP、通道数量、变量链接都还是上一台设备的。原文第 (5) 条专门写了这种情况——“如果是复制线,导入配置链接不上,可以参考该教程,重新配置”。
解决:不要试图在复制来的配置上改,重新配一遍更快。复制配置能省的时间在通道配置那一步,但通道数量一旦和实际对端不一致,省下来的时间会在排查阶段加倍还回去。我的做法是复制过来之后,从 Device Configure 开始逐项核对:数据类型、通道数量、EL6631X 里的地址、变量链接,四项全过一遍再激活。
提示:这五步的顺序不要跳。拓扑图和网线是底层,描述文件和 IP 是中层,复制配置是应用层。跳过底层直接查应用层,查到最后往往发现是线没插好。
6. 激活与验证:第三个红灯读三遍
配置全部做完,点激活按钮,下载配置。原文的描述是“模块的第三个红灯会先闪烁 3S 左右,然后变成绿色,说明配置成功”。这个三秒很关键,它是模块在等对端回应,不是故障,很多人在这三秒里就把电断了,然后误判成配置失败。
我把这个灯的状态整理成一张表,现场对着看比翻文档快:
| 第三个红灯状态 | 含义 | 下一步 |
|---|---|---|
| 闪约 3 秒后转绿 | 配置下载成功,链路已建立 | 不用动,进入数据验证 |
| 持续闪烁不变绿 | 建链失败,对端未响应 | 查对端是否运行、IP 是否同段 |
| 常红不闪 | 配置不匹配或模块故障 | 断电重启,核对描述文件和通道数 |
| 常灭 | 无 PROFINET 通信 | 查网线、网口、供电 |
如果配置未成功,原文给的办法是“将第三方设备和本设备同时断电”。这个动作看着粗暴,实际是把两边的 PROFINET 状态机一起复位,避免一边已经进入旧连接、另一边还在等新连接。断电的顺序是先断本设备再断对端,上电反过来,先给对端上电、等它起来再给模块上电。这个顺序我吃过亏,反过来上电的时候模块会一直等一个还没准备好的对端,红灯闪个不停。
灯绿了不等于数据对。我的验证方法是给对端一个已知值,然后在 TwinCAT 里在线监控。具体做法是让对端把第一个 WORD 强制写成 0x1234,回到 TwinCAT,在 PLC 里在线看stPnetIn.wIn01是不是 0x1234。是,说明通道映射、变量链接、数据类型三层全对;不是但灯是绿的,说明链路通了但映射错了,回头查通道数量和 BYTE/WORD 的选择。这一步能一次分清是链路问题还是映射问题,比逐个变量猜要快得多。
反过来验证输出也是同样的思路:在 TwinCAT 里把stPnetOut.wOut01强制写一个值,让对端去读,对端读到的和写进去的一致,输出链路才算通。输入通了输出没通的情况不少见,尤其是只配了一侧通道的时候。
从那以后我每次激活前都会先把对端的第一个字强制成一个固定值,激活、看灯、再看这个值,三步走完才算这套模块装完。这个习惯是从一次通宵排查里留下来的,那次所有灯都是绿的,所有网线都测过,最后发现是通道数量少配了一个,数据整体错位一个 WORD。希望帮到你。
本文还有配套的精品资源,点击获取