尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

远距离CAN通讯光纤组网方案详解:从点对点到环网链型

远距离CAN通讯光纤组网方案详解:从点对点到环网链型 去年有个项目两条产线之间隔着三公里厂区中间还要穿过一间塞满变频器柜的配电房。甲方坚持用CAN总线把两边的PLC控制器连起来做联锁理由很朴素CAN总线不是抗干扰很强吗。结果电调一上电总线上的错误帧计数跟秒表一样跳波特率从500k一路降到50k距离从厂区门口缩到一百米才勉强能通信。我拿示波器在总线上量了一轮CAN_H和CAN_L的差分波形已经被线缆电容滤成了圆弧显性电平连1伏都不到这已经不是干扰两个字能解释的了是物理层根本撑不住。这个经历其实特别典型。很多人把CAN当成能跑得远、又抗干扰的万能总线但CAN从诞生那天起是给汽车里面几米长的线束设计的物理层的距离天花板是硬约束。真要跨楼、跨厂区做远距离CAN通讯光纤是目前最靠谱的出路没有之一。可光纤组网也不是两头各接一个转换器就完事现场常见的方案至少有四种点对点、星型、环网、链型。这篇文章就把这四种方案逐个拆开讲清楚包括各自的原理、适用场景、选型权衡和实测中踩过的坑给正在做远距离CAN组网的人一个可以直接照做的参考。1. 先搞清楚为什么CAN铜缆拉不远这跟选光纤有什么关系1.1 ISO 11898那张距离表背后是物理规律而不是厂商拍脑袋做过CAN的人基本都见过这张表1Mbps不超过40米500kbps约100米250kbps约250米125kbps约500米50kbps约1公里5kbps约10公里。很多工程师把这张表当建议值觉得用粗一点的线、质量好一点的屏蔽双绞线距离还能再往上探一探。实际项目里我也这么干过确实能多跑几十米但代价是波特率必须往下降而且降得很快。限制距离的根源有两个。第一个是铜缆的分布电阻和分布电容构成了低通滤波器信号边沿被拉缓。CAN的物理层靠差分电压判断显性和隐性如果边沿太缓采样点落在中间地带误判就来了。第二个更本质的约束来自CAN的仲裁机制。CAN总线是非破坏性逐位仲裁任何节点发送一位的同时要监听总线上的实际电平如果自己发的是隐性位而总线上是显性位说明有更高优先级的节点在发帧自己必须退出。这要求每个位时间内信号都能从总线一端传到另一端并完成回显比较。以1Mbps为例一个位时间只有1微秒。铜缆里的信号传播速度大约是5到6纳秒每米40米线缆一来一回就要400多纳秒接近半个位时间再算上CAN收发器本身几十纳秒的延迟整个传播链路已经逼近极限。所以ISO 11898那张表不是保守而是按物理规律算出来的硬扛没有意义。1.2 距离之外还有三个更要命的问题地电位差、感应干扰和雷击浪涌远距离CAN通讯还有一个容易被忽略的点只要两端的设备不在同一个配电系统里地电位几乎肯定不一样。我在一个水厂项目里实测过两栋楼之间的地电位差能到十几伏而CAN收发器的共模输入范围按ISO 11898是-12V到12V超过了轻则误码重则烧掉收发器。CAN总线再怎么说差分抗干扰也扛不住地环路里的工频电流。电磁干扰是另一个问题。远距离线缆本身就是一根大天线旁边只要有变频器、软启动器或者大功率伺服在工作线缆上感应出来的共模噪声分分钟能让CAN的差分管脚饱和。更麻烦的是雷击架空明线或者长距离穿管走线一旦感应雷打进来不只是通信中断后面挂的一串CAN收发器都可能集体报废。光纤在这三个问题上属于原生免疫光纤是绝缘体不存在地环路不存在电磁感应也不导电雷击浪涌进不来。这也是为什么远距离CAN通讯的工程解决方案里光纤几乎是唯一解。铜缆加隔离中继也能做但隔离中继解决不了距离的物理天花板只能一串串地接力维护成本极高。2. 四种光纤组网方案逐个拆解2.1 点对点光纤转换器解决一对设备拉远最简单点对点方案的结构最简单A端的CAN控制器接一个CAN转光纤转换器B端再接一个光纤转CAN转换器中间用一根光纤连起来。转换器内部通常有一个CAN收发器、一个光电转换芯片和一套透明的位流转发逻辑。CAN总线上出现显性电平它就发光脉冲没有显性电平就不发光或者发另一种波长的光接收端再把光信号还原成CAN电平。这种方案的优点是结构清晰、成本最低、延迟最小。市面上成熟的光纤转换器模块级延迟一般能控制在1微秒以内对绝大多数500kbps以下的CAN网络都没有影响。它特别适合两种场景一是两个设备之间距离超出铜缆能力比如一条河两岸的中控室和泵站二是两段CAN总线之间需要电气隔离比如跨越两个不同的配电区域。但点对点方案有个天然的边界它只解决一条链路的问题。如果A端或者B端后面还要接很多设备那总线末端仍然是铜缆距离瓶颈并没有真正消除。另外如果链路距离超过一公里我建议优先考虑存储转发架构的转换器而不是纯透明的物理层中继。原因放在第四章细说这里先记住结论透明中继的距离受CAN仲裁时序约束不是光纤标称几公里就能跑几公里。2.2 星型光纤Hub集中管理多个远端站的常规打法星型方案的核心设备是一台CAN光纤Hub也叫CAN光纤集线器。Hub有多个光口每个光口通过一根光纤接到远端的一个光纤转换器Hub内部把所有支路的CAN信号做整形、仲裁和广播。常见的有4光口、8光口多台Hub还能级联扩展。为什么电域里CAN不许做星型光纤Hub却可以做因为电域星型最大的问题是分支处阻抗不连续信号反射严重而且每个分支的长度限制了整个网络的时序。光纤Hub在光域里先把每一路光信号还原成CAN电平在内部做一次完整的信号恢复再广播给所有光口相当于每个分支都重新整形了一次分支电容和反射问题就被切断了。星型方案最典型的应用是风电场的风机监控几十台风机每台风机一个控制柜距离中控室从几百米到几公里不等。每台风机放一个CAN转光纤转换器光缆从风机塔筒拉到升压站的中控室接入一台8光口Hub中控室的PLC作为主站统一轮询。这种组网的好处是每个分支独立一台风机断纤不影响其他风机故障定位也方便哪一路光信号丢失一目了然。缺点是Hub本身是单点Hub挂了全网瘫所以重要场合要上双Hub冗余代价是成本直接翻倍。2.3 光纤自愈环网为不许断网的场合准备的冗余设计环网方案是把所有节点的光纤转换器串成一个闭合的环每个节点既能接收也能转发。平时数据走一个方向比如顺时针一旦环上某处断纤或者某个节点掉电两端节点会在几十毫秒内感知到数据自动切换方向从另一侧绕路到达目的地这就是自愈。这里必须说清楚一个容易误会的点CAN协议本身是基于CSMA/CR的广播型总线所有节点共享一条物理总线没有以太网那样的生成树概念。所谓CAN光纤自愈环网并不是把一个CAN帧沿环转发一圈还能自动寻路而是厂商在光纤转换器内部用私有协议维护环网的链路状态。正常工作时主站和从站之间通过逻辑上的总线连接转发报文断纤后环网首尾两侧的转换器通过方向切换把原本断开的逻辑总线重新接起来从站视角看好像只是发生了一次微小的中断。环网方案适合什么场合轨道交通、隧道监控、电力系统这类把可靠性放在第一位的场景。隧道里每隔几百米一个控制箱如果全用星型方案几十根光缆全部要拉回中间的变电所光缆成本高得离谱。环网就只需要一根光缆沿着隧道从头串到尾再绕回来闭合既省光缆又获得自愈能力。代价是环网设备比普通转换器贵不少配置也复杂切换时间一般在10到50毫秒之间。如果上位机的通信超时设定小于切换时间故障瞬间还是会报通讯异常这个必须评估。2.4 链型菊花链组网沿线布站的省纤方案链型方案是把多个光纤转换器沿着一条光缆依次串联每个节点作为中继把信号转发给下一站。名字里带个菊花链因为拓扑看起来就是一串项链。链型最省光纤这是它最大的卖点。一条几百公里的输油管线沿线的压力、流量测点每隔一公里一个如果用星型光缆根数不堪设想链型就从首站一根光纤串到尾站每个测点就近挂上去。高速公路的隧道照明、城市综合管廊、地铁沿线设备也是这种场景的常客。但链型的缺点同样明显。第一中间节点掉电或故障后面所有节点全部失联除非每个节点都带光旁路功能——也就是节点掉电时内部光开关自动把光信号直接旁路过去不经过本节点的处理电路。第二中继次数多了延迟和误码风险累积。每个转换器处理延迟就算只有零点几微秒串上七八个节点对高速率CAN仲裁的影响就很可观。第三故障定位困难整条链哪一段断了得逐段排查光功率很不爽。所以链型方案的选择标准很明确节点数量多、地理分布呈线性、单点可靠性要求不极端、对实时性要求不苛刻的场景。但凡有一个节点是绝对不能掉线的就回到环网或者星型去考虑。3. 选型决策距离、节点数、可靠性、成本怎么权衡3.1 先盘需求别急着挑设备我发现很多人在这个阶段就走错了路上来就问哪个牌子哪个型号好而不是先把需求量化成一张表。其实光纤组网选型的核心就四个变量把它们盘清楚方案基本就锁定了。第一个变量是距离。不是说大概两三公里这种模糊说法要精确到每个节点到汇聚点的光缆路由长度。为什么强调光缆路由而不是直线距离因为现场布纤可能要穿管、绕行实际光缆长度可能比直线距离多出三分之一。第二个变量是节点数决定了用Hub的几光口、环网里挂多少台转换器、链型串多少级。第三个变量是可靠性等级分清断了以后可以慢慢修还是一秒钟都不能断。第四个变量是成本不止设备采购成本还要算施工和维护成本比如星型省设备但费光缆链型省光缆但设备多环网设备贵但施工便宜。表格化之后选型就变成了一道排除题。我把四个维度放在一起对比过做了一张表基本可以直接抄作业方案最大节点数单分支距离上限可靠性特征成本量级点对点2单模最长可达数十公里无冗余链路独立最低星型取决于Hub光口数可级联每分支独立可到数十公里Hub是单点分支互不影响光缆成本高环网通常几十个节点总环长受波特率约束断纤自愈可靠性最高设备成本最高链型理论上几十个实际建议不超过10级总长受中继延迟约束中间节点故障影响后段光缆成本最低3.2 三个真实选型案例复盘案例一风电场。三十台风机风机之间距离三百米到五百米最远的离中控室两公里波特率要求250kbps。现场最终选的是星型方案每台风机一个光纤转换器四芯单模光缆沿电缆沟拉回升压站中控室里放一台8光口Hub分四批接入。为什么不用环网因为风机本身是独立运行的单台停机不影响整个场站甲方对冗余没有硬性要求成本敏感星型故障定位最方便运维工人拉了哪台风机的光缆一看Hub端口指示灯就明白了。案例二隧道监控。三公里的隧道每隔一百米一个设备箱要求断纤后通信不中断。选环网一根12芯光缆沿隧道一侧敷设首尾相接形成环路。为什么不是星型隧道里往中间变电所拉三十根光缆施工量不敢想。为什么不是链型因为隧道监控里包含了消防联动信号要求任何情况下都不能因为某个设备箱断电而丢掉后面的联动信息只有环网能提供这种自愈能力。实测断纤切换时间在20毫秒左右对应用层轮询周期200毫秒来说完全无感。案例三水厂跨地块网络。两个PLC柜相距1.5公里中间要穿过厂区重载车道和一段变电站区域。节点数只有两个不需要冗余波特率500kbps。这种场景用点对点光纤转换器就足够了双端各一个四芯单模光缆直连。算下来包括光缆熔接在内不到五千块的成本一次搞定。提醒一下这里选的是存储转发架构的转换器因为1.5公里对透明中继来说在500kbps下已经超预算了存储转发才能保证两端仲裁互不干扰。4. 部署避坑从选完设备到稳定运行我踩过的坎4.1 终端电阻放哪、放几个光纤段需不需要很多人在光纤组网里最容易犯的错误就是沿用铜缆网络的终端电阻习惯。先说结论光纤链路本身不需要任何终端电阻但两端的CAN电总线段依然必须各自在两端匹配120欧姆终端电阻。具体到点对点场景A端转换器内部如果没有终端电阻那么A端总线必须在A端设备或A端转换器处挂120欧姆B端同理。星型Hub场景更要注意Hub的每个光口在逻辑上都对应一段独立的总线分支每段分支的电气两端都要有终端电阻。有些Hub端口内置了可拨码的终端电阻上电前逐个拨好别偷懒指望反正光纤隔离了电阻就没用了。我用过一个牌子的转换器盒子上有个三位拨码一开始没仔细看说明书以为默认没有终端电阻结果A端总线怎么调都有偶发错误帧。后来把拨码拨到终端位置错误帧立刻清零。这类小细节最容易让人在验收时白忙一晚上。4.2 多模还是单模双纤还是单纤光纤选型看起来是小事选错了后期很麻烦。先看距离500米以内用多模光缆和850nm的LED光模块成本最低施工对接也宽松超过500米必须上单模光缆和1310nm或1550nm的激光模块。很多室外项目直接铺单模因为单模光缆价格并没有比多模贵多少但是传输余量大以后升级不用换缆。再看纤芯数量。点对点如果距离不长可以考虑单纤双向的转换器用WDM波分复用一根纤同时收发两个波长省一半光缆特别适合在原有光缆只剩一两根备用芯的改造项目里见缝插针。但单纤设备比双纤贵而且光模块的接收灵敏度和发射功率要求更高如果不是纤芯资源紧张老老实实双纤最稳。还有一个小建议室外长距离尽量选铠装光缆不是因为怕人踩而是怕老鼠咬和施工时的意外拉伸。我见过一个项目普通软光缆在电缆沟里被鼠咬得千疮百孔最后全换铠装才消停。金属铠装层在两端必须做好接地否则雷雨天气感应电压会把光缆接头盒里的尾纤打坏这个细节很多施工队根本不知道。4.3 波特率、延迟、CAN FD兼容性三个参数必须提前确认选型之前要把支持5kbps到1Mbps这句话仔细拆开看。透明转发型的光纤转换器确实能透传任意波特率因为它是逐位转发不做帧解析。但前面说过透明中继受CAN仲裁时序约束波特率越高能保证仲裁正确的距离就越短。如果厂商标称点对点40km建议先问一句这是存储转发还是透明转发存储转发架构通常意味着帧级延迟可能到百微秒甚至毫秒级对于实时联锁报文延迟预算还得重新算。我做过的某次测试把这个问题暴露得很明显两颗转换器标称都是1Mbps支持20km一种透明转发一种存储转发。透明转发那一对在1Mbps下直接测出仲裁异常接收端偶发CRC错误因为光链路的传播延迟本身就远超位时间两边同时发包时仲裁机制根本来不及比较存储转发那一对跑了一晚上100万帧零错误帧但单帧延迟多了1.2毫秒。所以不是光纤转换器四个字就能一概而论选型时必须搞清楚架构。还有CAN FD的问题。现在越来越多新设备用CAN FD最高波特率可以到5Mbps以上。很多老款光纤转换器只支持经典CAN对CAN FD帧会误判或者丢弃。如果你的系统里有CAN FD设备务必确认转换器支持CAN FD的位速率切换否则上电就是满屏错误帧。4.4 供电、防雷、光缆敷设这些小账光纤转换器在野外现场工作供电质量直接影响寿命。我见过不少远端节点因为用了劣质开关电源纹波大得吓人CAN收发器工作状态始终不稳定。远端节点最好用DC-DC隔离电源输入范围宽一点以应对电压波动输出侧做好滤波。如果现场只有220V交流宁可用带隔离的工业导轨电源也不要图便宜用那种手机充电器壳子的开关模块。防雷不是只在室外架空线才需要。凡是光缆要进出建筑物、或者在不同防雷区之间跨越的光缆的金属加强芯和铠装层两端都要做接地处理同时转换器的供电端建议加装SPD浪涌保护器。很多工程师觉得光纤是玻璃的雷打不进来实际上雷击产生的感应电压会顺着光缆里的金属件一路窜进设备。吃过一次亏之后我在所有室外项目里都会把这一条写进施工规范。光缆敷设的弯曲半径也要盯住施工队。单模光缆的最小弯曲半径一般要求不低于光缆外径的20倍有些工人为了布线好看把光缆弯成直角当时看不出问题时间长了这些弯折点的损耗会越来越大哪天光功率突然不够了排查起来要命。验收的时候拿光功率计逐段测一遍记录在案比出事后再猜强太多。5. 上电之后的调试与验收标准5.1 先分层测光链路、电链路、协议链路一层一层剥光纤组网调试最忌讳一上来就抱着电脑看CAN报文出了问题也不知道出在哪一层。我习惯分三步走。第一步测光链路。用光功率计在接收端测收光功率单模1310nm模块的接收灵敏度一般能做到-30dBm以下但工程上建议收光功率不低于-20dBm留足余量。如果测出来偏低检查法兰盘是不是脏了尾纤是不是弯折过度熔接点是不是有气泡。记住光链路无误不代表后面没问题但光链路有问题后面一定有问题。第二步测电链路。断开远端设备只在转换器的CAN口接一个终端电阻盒用示波器看CAN_H和CAN_L之间的差分波形。正常时隐性电平应该在2.5伏附近显性电平与隐性电平的差应该在1.5到3伏之间。波形边沿如果有明显的圆弧或者振铃说明电总线这段还有问题不要急着用光纤找原因。第三步才轮到协议链路。把两端的控制器都接上用CAN分析仪监听总线。这一层主要看三类现象有没有错误帧、有没有总线关闭Bus-Off、应用层报文有没有周期性丢帧。5.2 错误帧、负载率、丢帧率怎么测才不给自己挖坑错误帧出现要分清是偶发还是持续。偶发错误帧多半是电磁干扰、抖动或者瞬时接地不良持续错误帧基本是物理层硬伤比如终端电阻没配好、波特率不匹配、光模块收发光功率超限。用CAN分析仪抓错误帧时看错误帧的类型也很有用CRC错误多半是位流在传输中被破坏位填充错误则大概率是波特率或采样点设置不对。负载率的计算可以帮你判断网络余量。一帧标准CAN报文11位ID、8字节数据在物理层上大约占用111到135个位时间其中包括帧头、CRC、ACK、结束位以及位填充的增量。负载率就是所有报文占用位时间之和除以采样周期内的总位时间。举个例子1Mbps波特率下假设每10毫秒发一帧8字节标准帧那么一帧约占用130位负载率约1.3%如果20个节点各自都以10毫秒周期上报负载率就接近26%。光链路本身不会增加负载率但存储转发型设备会在极端情况下形成排队延迟导致报文超时。所以验收时除了看平均负载率还要看峰值负载率以及报文的最大响应时间有没有超过应用层超时阈值。丢帧率测试不能只跑几百帧就下结论。我在现场的习惯是跑满一百万帧或者至少持续运行24小时再做统计。曾有一个项目点对点光纤链路平时零丢帧但只要隔壁车间的大功率设备一启动每分钟就丢一两帧。这种间歇性故障短时间测不出来后来在远端节点加装了一台波形记录仪才发现是启动瞬间地电位升高导致转换器供电短暂跌落换了隔离电源问题解除。这类问题不跑长时间测试根本暴露不了。5.3 一个最后的建议把验收数据存档最后分享一个我个人的习惯项目调试完成后把每段光链路的收光功率、每台转换器的供电电压、CAN总线的峰值负载率、24小时错误帧统计、环网切换时间测试记录全部整理成一张验收表格归档到项目资料里。别嫌麻烦。三个月后如果现场报通讯故障这张表格就是排查问题的第一依据——光功率有没有下降、负载率是不是变高了、供电电压是不是异常了一对照就有方向。远距离CAN光纤组网这个事说起来原理不复杂但每个环节都有细小的坑。把四种方案的原理和边界吃透再把现场条件一项项确认清楚做起来其实很顺。希望这篇文章能帮你少走一些弯路。
返回列表