ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

CAN总线远距离光纤组网四种方案与选型实践

CAN总线远距离光纤组网四种方案与选型实践 搞工控的、做车载网络的、调试设备通信的朋友对CAN总线多少都有点复杂情绪。爱它是因为协议不复杂两根差分线就能把几十个节点拽到一个网络里非破坏性仲裁保证了实时性恨它是因为一旦距离超过几百米问题就层出不穷线缆衰减、地电位差、变频器干扰、终端电阻不匹配随便一个都能让总线丢帧丢到你怀疑人生。我最早做一个厂区一公里左右的CAN链路时试过换粗线径屏蔽双绞线、调整单点接地、加磁环土办法全用一遍效果还是不稳定。后来换成光纤组网才算彻底收摊。这篇文章专门聊远距离CAN总线通讯怎么选光纤组网我整理了主流的四条路点对点光纤转换器、总线型光纤中继组网、星型光纤集线器组网、自愈环网光纤组网。每种方案的原理、适用场景、选型参数、实测建议都会讲到最后附上我踩坑后的排查清单。手里有五六个节点的小系统或者十几公里跨度的骨干链路看完基本心里有数。1. 先搞清楚CAN总线远距离通讯的瓶颈到底在哪1.1 电气总线的距离天花板速率和线长是跷跷板很多人刚接触CAN时都拿它跟RS485比觉得CAN抗干扰更强、支持多主机距离应该也差不多。实际上一看ISO 11898-2的表格心里就凉了半截CAN总线的可靠传输距离和波特率是硬绑在一起的。波特率理论最大总线长度1 Mbps40 m500 kbps100 m250 kbps250 m125 kbps500 m50 kbps1 km20 kbps2.5 km10 kbps5 km注意这是理论值现场还要打折扣。原因是CAN协议的非破坏性仲裁机制要求所有节点在同一位的采样窗口内至少要正确读到当前位的电平。距离越长信号在双绞线上的传播延迟越大位时间和传播延迟一冲突仲裁就乱了。想跑更远只能降波特率但降到20kbps甚至10kbps对很多实时性要求高的CANopen、J1939应用来说已经完全没法用。还有一个被很多人忽略的点CAN协议本身有一套完整的错误检测和重发机制CRC校验、位填充、ACK应答都在。想要一文读懂CAN总线协议首先要明白它不是一个串口透传协议它是一套带冲突仲裁、错误恢复、优先级管理的总线协议。正因为机制完善它对物理层的质量要求也苛刻电气链路一旦出现反射、共模干扰协议栈里的错误计数器就会一路飙升最后直接bus off。说到底铜缆在几百米内可以忍到了公里级就是硬伤。1.2 光纤解决的不只是距离还有隔离和干扰光纤能解决CAN远距离通讯的痛点核心在于几个物理特性第一衰减极低。单模光纤在1310nm波长的损耗只有0.2到0.4dB每公里一根20公里链路算上熔接点和法兰盘总损耗也就在10dB上下。而屏蔽双绞线的衰减是随着频率跑的频率越高衰减越厉害到了一公里以上信号早就畸变得没法看了。第二天然的电隔离。光信号传输过程中根本不存在电流回路所以两端设备之间没有地电位差的问题。这一点在跨楼宇、跨厂房的CAN链路里特别值钱。以前铜缆通讯最怕两栋楼的地电位不同严重时甚至烧毁收发器换光纤直接斩断这个病根。第三抗电磁干扰能力极强。光纤本身是绝缘介质变频器、大功率电机、雷击感应产生的电磁脉冲对光纤没有任何影响。我见过一个靠近大型变压器旁的CAN链路用屏蔽双绞线怎么处理都有周期性错误帧换成光纤后一样的位置错误帧直接清零。关于延迟光在纤芯里的传播速度大概是2×10^8米每秒算下来每公里约5微秒往返就是10微秒。这个延迟对125kbps的CAN总线来说完全可接受因为单一位的位时间就是8微秒光纤带来的额外延迟远不会重到破坏仲裁窗口。1.3 选型先做四张需求表别急着买设备我见过太多人一上来就奔着某种方案去最后发现拓扑根本不匹配。在动手之前建议先把自己最基础的四个需求写清楚链路距离总线上任意两端的最大物理距离到底是多少是500米、3公里还是15公里节点数量与分布形态节点是聚在机房还是沿着一条线均匀铺开又或者是围绕中心节点呈放射状可靠性要求断一根纤或某个节点掉电后系统允许业务中断多少时间是否需要自动恢复成本预算这里不光是设备采购价还要算熔纤、施工、后期维护成本这四个问题直接决定了四条方案的取舍。两节点远距离就是点对点转换器沿线线性布点就优先看总线型中继多分支汇聚到中心就考虑星型集线器高可靠冗余需求就得咬咬牙上自愈环网。没有最好的方案只有最合适你现场的方案。2. 方案一点对点CAN光纤转换器最直接的“光替铜”2.1 工作原理把差分电平换成光脉冲点对点方案是整个光纤组网里最简单的形态。两端的CAN控制器不换原来的CAN_H、CAN_L还是照常接到一个光电转换器上。转换器内部把CAN总线的差分信号转换成光信号从光口发出去另一端的转换器收到光信号后再还原成差分电信号然后送到对端设备的CAN收发器里。从系统的角度来看这等于在原来的总线中间切了一刀用一段光纤把断口接上。CAN控制器看到的还是原来那根总线协议栈层面完全没有感知不需要改任何软件。市场上这类产品通常叫CAN光纤转换器、CAN光猫。外形基本是一个工业导轨安装的小盒子一侧是接线端子接CAN_H、CAN_L、电源另一侧是ST或SC光口。选型时最核心的指标就是透明传输能力和波特率自适应能力。2.2 转换器选型这几个参数不能省我用了不少型号总结下来这几个参数一定不能凑合一是波特率支持范围。好一点的产品能自动适应10kbps到1Mbps的任意波特率不需要拨码设置。有些便宜货只支持固定的几个波特率现场一旦波特率不对光链路指示灯亮着CAN通信就是不通排查起来很耗时间。二是终端电阻。转换器本身应该内置120欧终端电阻并且最好带拨码或跳线可以开关。两端如果需要终端电阻直接拨到ON就行省得在端子上外接。三是光口类型和波长。短距离临时链路用多模加850nm没问题几百米的距离完全够。但只要是公里级我直接推荐单模1310nm。现在单模模块和多模模块价格差距已经很小单模还能为以后扩展距离留空间。四是供电范围。工业现场24V直流是主流但总有12V或者不稳定的场合宽压输入9到36V的产品更省心。还要注意极性反接保护这个功能关键时刻能救设备一命。五是接口形式。ST头在振动环境中卡得更紧SC头拆装方便FC头是螺纹旋紧的在电力行业里很常见。如果现场振动明显优先选ST或FC。2.3 实操案例1.8km的变电站链路之前我做过一个项目两个站点之间要走CANopen协议传输环境监控数据物理距离约1.8公里。一开始设计院给的是屏蔽双绞线但现场勘测发现两根线缆要经过一段高压电缆沟干扰风险非常大。后来改方案两套单模1310nm的光纤转换器中间敷设一根4芯单模光缆两端只用了其中一对纤芯。测试的时候用CAN分析仪挂在两端连续跑了48小时抓到的错误帧是0。整个链路延迟很小应用层完全无感知。这就是点对点方案最大的优势简单、便宜、可靠。不过要强调这个方案只解决两个点之间的通讯。如果中间还想再挂节点那就不是点对点转换器的活了得看后面几种方案。3. 方案二总线型光纤组网适合沿线逐点接入3.1 链式拓扑和中继器的转发方式如果现场情况是控制室在一端沿途每隔几百米到一公里就有一个节点要接入比如隧道里的监控设备、皮带沿线的保护开关、高速公路的路侧单元这类线性分布的场景更适合总线型光纤组网。做法是每个现场节点位置放一台CAN光纤中继器。中继器一般有两个光口和一个电口光口一进一出把光链路像串糖葫芦一样连成一串电口接本地的CAN设备。控制室那边放一台带光口的转换器作为总站整条链路从总站出发一路串到最后一个节点。转发方式这块要特别说清楚市面上的中继器分成两类。一类是位转发收到光信号后按位还原再发出去延迟低但对总线上瞬时的信号质量要求高一旦某个节点发出错误电平整条链路的错误传播会比较快。另一类是帧转发把一整帧CAN报文收完整、校验无误后再转发到下一个链路延迟高一些但对错误帧有一定的过滤能力整条总线更稳。我个人的观点是面对公里级链路、现场环境复杂的情况宁可选帧转发的设备。多出来的几微秒延迟相对于整条CAN网络的位定时来说完全在可接受范围内。3.2 中间节点掉电怎么办旁路与环回总线型组网最大的槽点是单点故障。链式结构里如果中间某一台中继器断电或者光模块损坏光信号到它那里就断了它后面所有节点全部失联。这在很多现场是不能接受的。所以选总线型中继设备时一定要问清楚是否有故障旁路功能。旁路的原理是中继器内部有一个继电器或者电子开关当设备掉电或检测到严重故障时自动把两个光口短接让光信号直接跳过这台设备继续往后传。这样一来中间节点坏了后面的节点至少还活着。还有一种成本更高的双光纤环回做法就是用两根纤芯做一个物理上的回路数据可以绕开故障节点从另一个方向走到达。但这就接近自愈环的范畴了放在第五部分细说。3.3 实操案例光伏电站围栏报警CAN链路我做过一个光伏电站的周界报警项目围栏上每隔约800米布一个红外对射报警控制器一共7个节点总长度接近6公里全部要求接入到电站中控室的CAN总线上。这种场景就是典型的总线型光纤组网的活。当时选了6台支持失电旁路的CAN光纤中继器串联成一条光纤干线每台中继器电口接本地的报警控制器。调试时最担心的是某台设备供电异常导致后面全断幸好中继器支持失电旁路实测把中间第4台电断掉第5到第7台仍然能与中控室正常通信只是第4台本身的控制器掉线。这个功能对运维来说非常友好。需要注意中继器整条链路的CAN波特率要保持一致我统一设在125kbps算过负载率在15%左右后面会讲怎么算。4. 方案三星型光纤组网汇聚场景的故障隔离首选4.1 CAN光纤集线器的转发逻辑当现场结构是多个远程节点都要往同一个中心汇聚比如车间不同工位的设备数据统一送到控制室主机星型组网就很有优势。中心位置放一台CAN光纤集线器也叫CAN光纤Hub上面有多个光口每个光口通过一条独立的光纤链路连到远端的CAN光纤转换器转换器再接现场的CAN设备。集线器的工作逻辑是从任何一个光口收到一帧完整的CAN报文后会把这帧报文广播转发到其他所有光口。这里的“广播”只是物理层的转发CAN协议本身的多主机仲裁仍然保留两个节点同时发报文时还是靠CAN协议的位仲裁来决定谁先占用总线。星型结构最直观的好处是故障隔离。某个分支的光纤断了或者远端转换器坏了只影响这一路其他分支照常工作。这个特性和交换机的端口隔离有点像运维排障时非常香。4.2 星型的代价多一级转发多一分延迟星型组网不是完美无缺。CAN光纤集线器多数走帧转发额外的存储转发时间一般在几十微秒级别对低速波特率来说问题不大但如果跑1Mbps高速CAN每一级转发延迟都需要严格评估否则会影响总线时序。还有一点必须明确集线器只是镜像广播并不能像路由器那样隔离冲突域。正常情况下同一时刻只有一个节点发CAN帧仲裁没问题但各个分支的物理层如果质量差异很大某个分支不断产生错误帧集线器广播错误帧后其他分支也会跟着受影响。好在大多数集线器具备一定的错误隔离能力但选型时还是要问清楚。星型还有一个你躲不开的问题中心集线器是单点。集线器挂了全网瘫痪。所以正经场合一定要给集线器配双电源或者UPS并且带故障告警输出。4.3 实操案例车间机器人产线多分支汇聚我参与过一个焊接车间设备联网改造现场有4条产线每条产线有一套CANopen的焊接机器人控制器四个点位到中控室的物理距离都在300到700米之间。走双绞线的话距离和干扰全是雷区全用链式中继又怕一条线上的故障拖累其他产线。最后选的是星型方案中控机旁放一台4光口的CAN光纤集线器四条光纤分别拉到四个产线的远端转换器每个分支独立。后来西边那条产线施工时把光纤挖断了车间里其他三条产线完全不受影响当时在监控室里看着报文那种感觉是真的踏实。如果你的现场结构也是这种“以中心向外放射”的形态星型集线器基本是最优解。5. 方案四自愈环网光纤组网关键链路的兜底方案5.1 环是怎么自愈的在电力、交通、水利这类对可靠性要求极高的行业光纤自愈环网几乎是标配。它的拓扑长成一条首尾相接的环控制室和沿途每个节点都使用支持环网冗余功能的双光口设备光模块一个接顺时针方向另一个接逆时针方向。正常运行时环网协议会选一个主用方向比如所有报文从顺时针方向走一旦某处光纤被挖断或者某节点掉电断点两侧的设备会在极短的时间内检测到链路丢失然后自动把数据切换从另一个方向绕过去全网的通信在几十毫秒内恢复正常。这个倒换过程对站点侧的CAN应用来说基本就是一次瞬间的“网络抖动”很多场景完全无感。代价就是设备贵、配置复杂。支持自愈环的CAN光纤设备单台价格往往是普通中继器的两到三倍而且环网协议需要合理配置否则组不好还会出现广播风暴或者倒换失败。5.2 自愈环设备怎么挑如果是第一次选自愈环设备建议重点盯这几个指标自愈倒换时间这是核心指标常见的有50ms、20ms、还有标称10ms以内的。倒换时间越短CAN应用层受到的冲击越小。环网建链时间设备上电后从光链路正常到环网协议收敛的时间好的产品可以在几百毫秒内完成差的可能要几秒直接影响系统上电恢复速度。协议兼容性一定要确认设备支持CAN2.0A/B、支持CANopen或J1939有些宣称支持CAN的设备实际只支持透明传输不能处理上层协议。工业环境适应能力工作温度范围、EMC认证、防护等级室外安装的还要看光口是否带独立密封。我见过一个项目一味追求低价环网设备结果倒换时间标称50ms实际现场测出来接近300msCANopen主站直接报节点超时。这种关键指标不能光看宣传一定要用实测说话。5.3 实测断纤倒换时间对CANopen的影响之前我们实验室做过一次环网设备测试环境是一台CANopen主站和3台从站分布在光纤环上波特率250kbps。测试时突然拔掉一段光纤用CAN分析仪记录断点前后报文的连续性和时间戳。结果设备倒换时间实测约30ms期间丢失了3帧左右的过程数据报文。因为CANopen的PDO传输默认是周期性的主站在下个周期就收到了新数据所以从应用层看只发生了一次短暂的刷新间隙没有触发报警。如果把波特率降到125kbps每帧变长丢失的报文数量会更少系统表现更稳。如果你的项目要求断纤后完全零丢帧那我直说自愈环网做不到任何冗余方案都有切换时间。这时候你得让上层协议配合比如CANopen主站设置合理的节点超时时间确保切换期间的短暂丢帧不会触发冗余报警。6. 四种方案横向对比与决策思路6.1 一张表看懂四种组网方案对比维度点对点转换器总线型光纤组网星型光纤组网自愈环网光纤组网拓扑形态两点直线链式串联放射状汇聚环形冗余典型部署距离单段可达20km单段可达20km多段串联中心到分支可达20km环周长可达20km以上中间节点掉电影响不涉及后续节点失联除非有旁路仅影响本分支不影响自动倒换断纤故障隔离不涉及断纤点之后全断仅影响故障分支自动恢复通信设备成本低中中偏高高施工复杂度低中中高典型应用场景两点远距离互联隧道、皮带、公路沿线车间多分支汇聚电力、轨交、隧道监控这个表是决策的地图但注意它描述的是“一般情况”。具体项目里如果现场拓扑比较复合也可以把不同方案组合起来用比如主干用总线型末端用星型。6.2 选型先算三笔账距离、成本、运维第一笔是距离账。节点之间只有几百米且数量少铜缆还能扛光纤可以往后放。但如果单段链路超过800米或者链路要跨厂房、跨高压干扰区别犹豫直接光纤起步。超过10公里的骨干链路光纤选型基本只有单模一种答案多模根本不用考虑。第二笔是成本账。四个方案设备价格从低到高大概是1比2比3比4的关系。点对点方案最便宜一对转换器市场价可能在几百元总线型中继每台也就中几百块星型集线器因为光口多价格明显上去自愈环设备价格最高单价经常在两三千上下。施工成本里熔纤是按芯算的星型和环网用的纤芯和熔接点更多预算要留足。第三笔是运维账。星型的故障定位最直观哪一路不通看集线器的端口指示灯就行自愈环可靠性高但配置复杂需要专业工程师维护总线型最怕中间节点故障因此一定要选带失电旁路的产品把运维恶梦提前掐死。6.3 算一次CAN总线负载率组网心里有底选型时除了拓扑负载率也要算这个数字决定了你的波特率设多少才稳。负载率的定义很简单单位时间内实际发送到总线上的位数量除以总线能提供的最大位速率。这里带大家做一次完整计算。假设一条光纤组网的CAN总线上挂10个从站每个从站每100ms发送一帧8字节过程数据报文主站每1秒向每个从站发送一帧请求帧。从站发送帧率10个从站每个每秒10帧一共100帧/秒。 主站请求帧率10个从站每个每秒1帧一共10帧/秒。 总帧率110帧/秒。一帧标准CAN数据帧11位ID8字节数据发送时占用总线大概110位计算方法是SOF占1位、仲裁场12位、控制场6位、数据场64位、CRC场15位、ACK场2位、EOF和帧间隔加一起大约10位总共约110位。总占用带宽110帧/秒 × 110位/帧 12100位/秒。 如果波特率设125kbps负载率就是12100 ÷ 125000约9.7%。这个数很健康。但如果你把从站发送周期从100ms改成20ms每从站每秒50帧十从站就是500帧/秒总带宽变成500 × 110 55000位/秒负载率一下子到44%。这个值已经偏高网络随时可能因为微小的时序波动出现大量重发。这时候两个办法一是把波特率提到250kbps负载率降到22%二是优化报文把多个对象字典数据合并到一帧里减少帧数量。绝大多数场景控制负载率在20%以下长期运行最稳。这项计算在任何光纤组网方案里都适用因为光纤只是替代物理传输介质CAN协议本身的时序约束一点没变。7. 常见问题与排查技巧实录7.1 光纤链路正常CAN报文却错误不断先说一个最常见的坑两侧设备的光口指示灯都亮光链路看起来正常但CAN通信一旦跑起来就是满屏错误帧。这种时候先别怀疑光纤设备按下面的顺序去查。第一确认两端CAN波特率一致很多光纤转换器号称自适应但个别型号只对特定速率自适应当场抓一下总线波形或者用CAN测试工具读一下总线实际波特率。第二检查终端电阻。光纤转换器代替了原来的总线端点通常要承担120欧终端的作用如果设备上带终端电阻开关但没打开整条链路会反射得一塌糊涂。第三用CAN分析仪统计错误类型如果大量出现ACK错误多半是总线上只有一个节点在发、没有其他节点应答如果出现stuffing错误物理层的信号质量问题基本没跑了。我调试时习惯手边放一个便携式CAN测试仪把总线错误率实时打出来这样定位问题比一个个猜快得多。7.2 光功率怎么测链路预算怎么做光纤链路本身的问题眼睛看不出来得用仪器说话。现场判断链路裕量的标准做法是用光功率计测接收端光功率然后和设备标称的接收灵敏度去对比。举个例子某项目中转器的光接收灵敏度是-30dBm实测远端接收光功率只有-29dBm看似能通但这种状态下只要光口进了灰尘或者光缆受温度影响损耗略微变大链路就会间歇性闪断。后来我把法兰盘清理干净、重新熔接两个不合格的熔接点接收光功率回到-18dBm链路余量就健康多了。做链路预算时记住几个经验值单模光缆每公里损耗约0.2到0.4dB一个熔接点损耗约0.1到0.2dB一个法兰盘连接损耗约0.2到0.5dB。把这些加起来再留至少3到5dB的余量整条链路才算过关。7.3 地电位差和电磁干扰的处理有些现场光纤链路通了但设备莫名其妙重启或者偶尔长时间收不到报文。如果光功率正常、CAN错误帧很少就要考虑供电系统的地电位问题。光纤链路本身隔离了两端的地但光纤转换器、工控机这些设备仍然要有接地。如果设备通过开关电源供电开关电源的直流输出负极没有做系统接地而两端又分别接到了不同的参考地一旦两端的电位差大到一定程度干扰就会从电源地耦合进来。我的习惯是在每端配电箱里统一做一点接地并且用带隔离的DC-DC电源给光纤转换器供电这样能彻底把电源侧的地环路切断。电磁干扰方面光缆虽然不怕电磁但光缆外面的铠装和加强件是金属的如果现场有强雷击风险进屋前要按防雷规范做好加强芯接地和浪涌保护别让雷电流顺着光缆加强件进设备柜。7.4 现场验收测试检查单我在项目收尾阶段都会按这个检查单走一遍分享给大家直接抄用光功率计测每一个接收端光功率记录并与链路预算对比。用CAN测试工具统计错误帧连续运行至少24小时错误帧率必须为0。人为制造节点断电测试总线型节点掉电后确认旁路功能是否生效后续节点是否在线。对自愈环网做断纤测试记录倒换时间并对比产品标称值。检查所有光纤转换器、集线器、环网设备的终端电阻开关状态确保每个CAN网段两端有且只有两个120欧终端。检查供电电压波动范围确认设备供电在其标称范围以内并核对极性保护是否有效。这六步走完基本能避免大多数“看似正常、用起来抽风”的隐性问题。8. 写在最后我的一点选型心得做了这么多年的现场通讯我现在的习惯是凡是链路距离超过800米的CAN网络默认先给光纤方案不在铜缆上死磕。光纤组网选型的核心就是先认现场拓扑再谈设备价格。两节点远距离点对点转换器足够简单节点沿一条线铺开总线型中继加旁路功能是性价比首选多分支汇聚到中心星型集线器让故障隔离变得无比轻松对可靠性有硬要求的自愈环网多花的钱买的就是关键时刻不撂挑子的底气。踩过几次坑之后我有一个体会光纤不该被看成“贵价替代品”它其实是远距离CAN通讯最省心的物理层解药。只要前期拓扑想清楚、链路预算做到位、验收检查单逐项跑完光纤组网在实际运行维护中消耗的精力远低于任何一套铜缆方案。最后再分享一个小技巧——不管选哪种方案请一定在关键节点常备一台能实时抓 CAN 错误帧的测试工具现场能不能快速收摊很多时候就差这一台仪器。
返回列表