ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

AGV工控机拆解:从外设接口到路径规划的整车技术栈解析

AGV工控机拆解:从外设接口到路径规划的整车技术栈解析 一台AGV小车到底要接多少外设拆开这台国产工控机看看最近一直在写AGV调度相关的代码整天跟路径规划、任务分配打交道。说实话真正把一台整车从电气层面摸透还是在最近拆了一台国产工控机之后。当时项目现场有一台潜伏顶升式AGV报故障后台看是激光雷达通讯超时但排查半天没找到原因最后没办法把这台工控机连带接线端子整个拆下来检查才把问题定位到一条串口线松动上。也就是那次我把这台国产工控机从外壳到板卡从航插到端子排彻底看了一遍。先说结论一台标准的潜伏顶升式AGV外设数量轻松超过20个而工控机就是这些外设的神经中枢。激光雷达、二维码相机、避障传感器、磁导航、安全触边、急停按钮、电机驱动器、举升机构、三色灯、喇叭、充电对接模块……全都得汇聚到这台工控机上。这篇文章就从一台真实拆机的国产工控机出发把AGV的外设体系、接口选型、接线方式和调试踩坑一次说清楚。适合刚入行做AGV电气或软件开发的工程师也适合想了解AGV整车技术栈的爱好者参考。1. AGV外设全景图从传感器到执行器1.1 传感器类外设导航、感知与安全一台AGV要自主跑起来首先要解决三个问题我在哪、前面有没有东西、碰到东西了怎么办。这三个问题靠的就是传感器外设。我在哪这个问题常见方案有激光SLAM、二维码导航、磁导航、惯性导航IMU有些车还会混合使用。以我拆的这台潜伏顶升AGV为例它装了一颗主激光雷达用于SLAM建图和定位、一颗补盲激光雷达用于低矮障碍物检测、一个二维码相机用于二次定位修正托盘对接精度不够时基本靠它、一个磁条传感器预留磁导航模式外加一个IMU模块陀螺仪加加速度计用于补充激光在长走廊、玻璃墙等退化场景下的姿态估计。前面有没有东西主要靠避障传感器。这台车配置了前后两个超声波及光电传感器组还带了一个3D避障相机覆盖车体四周和低矮盲区。需要特别注意的是安全相关的避障不能只靠工控机上的软件判断因为算法再快也有延迟万一程序死机或者进程卡死车还在往前跑就出大事了。所以AGV一定会有独立的安全PLC回路接急停按钮、安全触边、安全激光扫描仪这些信号不进工控机直接进安全继电器或者安全PLC达到PLe安全等级后才会切断驱动器使能。这块在电气图纸上通常叫STO或者安全停车回路跟工控机是两个体系。我拆开这一台时数了一下传感器总数主激光雷达1个、补盲雷达1个、3D避障相机1个、超声传感器4个前后各一组、光电传感器8个防跌落和防撞、二维码相机1个、磁纳传感器1个、IMU 1个、安全扫描仪2个、安全触边2条、急停按钮4个。仅传感器就超过20路信号还没算执行器。1.2 执行器类外设驱动、举升与交互传感器负责输入执行器负责输出。AGV的执行器分三块行走、举升、交互告警。行走部分这台车是双差速驱动结构两个伺服电机驱动器通过CANopen总线挂在工控机上驱动器再带两个带绝对值编码器的伺服电机。编码器是绝对值型这个很关键因为AGV断电再上电之后如果不做回零操作相对值编码器会导致轮子角度丢失车就会跑偏甚至撞墙。绝对值编码器虽然贵一些但省去了每台车每次上电都回零的麻烦。举升部分潜伏顶升式AGV的核心动作是钻到货架底部然后顶起货架。它配的是一个电动举升机构带两个举升电机举升高度80mm左右顶升压力靠霍尔传感器反馈。举升机构必须同时具备硬限位和软限位不然顶到货架还继续往上顶轻则顶翻货物重则损坏电机。交互告警部分包括三色灯红黄绿三色绿是正常运行黄是待机或充电红是故障、蜂鸣器转向和行驶时的声音提示、急停按钮背光指示灯以及一个触控显示屏。这块屏一般也通过串口或者USB接到工控机上用于显示AGV状态、任务日志还能让现场人员手动操作和维护。为了让大家对一台AGV的外设数量有一个直观认识我整理了一个表格这是拆机时我对照实物逐一清点的外设类别具体外设数量信号接口导航定位激光雷达主/补盲2以太网导航定位二维码相机1以太网/USB导航定位IMU惯性单元1串口导航定位磁条传感器1串口/IO安全避障安全激光扫描仪2安全IO/OSSD安全避障超声传感器4IO/串口安全避障光电传感器8IO安全避障安全触边2安全IO安全保护急停按钮4安全回路驱动执行伺服驱动器2CANopen驱动执行举升控制器1IO/CAN交互显示触控屏1HDMI/USB/串口交互告警三色灯1IO交互告警蜂鸣器1IO供电充电充电对接模块1CAN/IO通信调度工业无线模块1以太网这一台车外设加在一起接近30个信号数量超过60路。工控机要同时处理以太网、串口、CAN、IO这几类信号任何一个环节都有可能出问题。2. 为什么是工控机国产方案的优势与接口解析2.1 工控机在AGV中的角色定位很多新手工程师会问AGV控制用PLC不就行了为什么非得塞一台工控机进去这个问题我在项目里经常被问。答案是要看AGV的智能化程度。传统磁导航AGV用PLC就够因为磁导航的逻辑很简单读传感器、纠偏、走直线PLC循环扫描完全扛得住。但现代AGV要做激光SLAM、二维码定位、动态路径规划、多车调度、与上层WMS/MES对接这些东西已经不是PLC的强项了。SLAM建图要做点云匹配路径规划要做图搜索这些算法都跑在Linux系统上需要高CPU性能和大内存工控机就是为了跑这些算法和调度客户端而存在的。我拆的这台国产工控机用的是Intel赛扬J1900四核处理器8GB DDR3内存64GB固态硬盘。说实话这个配置在当下来看不算高但对AGV来讲够用SLAM定位和导航在嵌入式Linux上跑调度客户端在Windows上跑或者反过来看厂家方案两个系统通过虚拟机或者物理隔离分区运行。国产工控机在这个场景里受欢迎的原因很简单成本低、接口全、定制灵活、供货周期短一台普通工业平板同配置的进口品牌价格可能翻两到三倍。工控机的核心优势是接口集成度。我拆的这台一个工控机面板上就集成了6个串口、2个千兆网口、2个CAN口、16路数字量输入、16路数字量输出、4路模拟量输入还带2个PCIe扩展槽和一个Mini-PCIe槽。这样的接口密度意味着绝大部分AGV外设可以直接接到工控机上不需要再加扩展模块既省空间又省成本。而如果用PLC方案光扩展网络模块、CAN模块、串口模块模块成本和接线工作量就会显著增加。2.2 关键接口拆解RS422针脚没那么玄乎拆这台工控机时我最先关注的是串口部分因为AGV上有不少外设是用串口通信的比如IMU、二维码相机、某些型号的磁条传感器。AGV工控机上常见的串口有三种RS232、RS422、RS485。咱们重点说RS422因为热词里这个搜索量很高很多工程师拿到工控机的RS422接口针脚定义图时一头雾水。其实RS422的原理并不复杂。RS232只能点对点通信而且抗干扰能力差传输距离短。RS485可以多点通信但它是半双工的同一时刻只能收或者只能发。RS422呢是四线制的全双工串口通信两根线用于发送T、T-两根线用于接收R、R-发送和接收可以同时进行抗干扰能力强传输距离能到1000米以上所以AGV上一些远距离传感器或者需要实时双向交互的外设会优先用RS422。这里要特别注意针脚定义。不同厂家的工控机RS422针脚并不完全一样。这是我拆机时拍下的一个九针DB9接口定义需要特别强调不同品牌、不同批次的产品可能定义不同接线前务必以设备铭牌或说明书为准不能拿一张网上找的图纸直接套DB9针脚信号名称信号方向说明1GND-信号地2T输出发送差分正3R-输入接收差分负4R输入接收差分正5GND-信号地6T-输出发送差分负7保留-厂家自定义8保留-厂家自定义9屏蔽地-接屏蔽层最坑的一处就在2脚和6脚T和T-。有些厂家的定义会把发送和接收对调如果跟传感器端接线正好接反就会出现数据通不上、偶尔通上但全是乱码的情况。我自己调试时遇到过这种现象排查到怀疑人生最后还是用示波器逐脚打波形才确认是发送接收交叉了。RS422接线时还有四个细节必须注意。第一差分信号的T要接对端设备的RT-接对端设备的R-一定不能接反。第二外壳屏蔽线要单端接地也就是屏蔽层只在一端接地避免形成地环路这个在AGV这种电机频繁启停的工况下特别重要地环路会导致通信误码率飙升。第三RS422的终端电阻长线传输时通常需要在接收端加一个120欧的终端电阻AGV内部线束一般不会太长很多设备出厂默认就带上了但如果你发现通信波形衰减严重可以检查一下终端电阻是否匹配。第四波特率必须两端一致不仅是数值一致校验位、停止位也要一致常见AGV串口通信配置是9600-8-N-1或者115200-8-N-1。2.3 其他关键接口CAN、以太网与数字量IO串口之外AGV工控机上最核心的还有三类接口CAN、以太网、数字量IO。CAN总线在AGV上主要用于连接伺服驱动器、电池BMS和举升控制器。以我拆的这台车为例两个伺服驱动器通过CANopen协议接入工控机波特率500kbps。CAN总线是差分信号抗干扰能力强还支持多主通信非常适合驱动器和控制器之间的实时控制。CAN接线相对简单两根线CAN_H和CAN_L但需要注意的是CAN总线两端需要120欧终端电阻很多调试故障都是因为终端电阻没拨码或者接错位置导致整个CAN网络通信失败。另外CAN线建议使用双绞线不能用普通平行线我之前见过一个项目用的是普通排线代替CAN双绞线结果一旦电机加速CAN通信就丢帧驱动器频繁报错。以太网接口主要用于连接激光雷达、3D避障相机、无线通信模块和触控屏。这台工控机带了两个千兆网口一个专门接激光雷达和相机走的是独立网段避免和调度系统的网络互相干扰另一个接无线模块用于和AGV调度系统通信。这里有一个设计细节值得参考把所有需要大带宽实时数据的传感器放在一个物理网口把调度通信放在另一个物理网口可以有效避免数据拥塞。有些方案用VLAN在一个物理网口上隔离也行但AGV在车间里移动无线信号抖动已经够闹心了能物理隔离尽量避免逻辑隔离。数字量IO在AGV上用来接一些开关量信号比如光电传感器、三色灯、蜂鸣器、到位检测开关、充电极板在位检测等。这台国产工控机自带16路DI和16路DO全部通过端子排引出。DI输入一般是PNP或者NPN两种接法工控机的DI端口通常兼容NPN/PNP但每个通道的公共端接线方式不一样接线前一定要看说明书里DI的内部等效电路否则接错公共端会导致信号永远读不到或者烧坏光耦。DO输出通常用晶体管做开关驱动能力有限一般不能直接驱动继电器或大电流负载需要通过中间继电器转接。很多新手在这里踩坑直接用DO口接继电器线圈结果继电器全带不动或者把DO口烧了。3. 现场拆机从外壳到接线端子3.1 开箱看布局一台工控机内部的乾坤拆这台国产工控机外壳是标准嵌入式箱体大概像一台厚一点的迷你主机铝合金外壳被动散热。拆开顶盖后内部布局非常紧凑主板在下层上面压着一个2.5寸固态硬盘内存条插在主板侧边电源模块独立隔开板卡之间用铜柱固定。最显眼的是主板上密布的接口而且这些接口并不全是直接裸露在机箱外面。比如串口、CAN口和IO口很多工控机是通过内置排线接到前面板或后面板的航插上航插航空插头的好处是防尘防水、抗振动AGV在车间里天天跑普通DB9接口很容易被震松航插拧上之后基本不会掉。拆机时可以看到主板上的串口排母通过一根14Pin排线连接到机箱接口板上接口板上再转接成若干个DB9航插。这种设计的好处是如果某个航插损坏只换接口板就行不用换整块主板现场维护成本低很多。拆机时我还注意到一个细节固态硬盘的位置专门贴了导热垫把热量导到铝合金外壳上。AGV工控机的工作环境一般没有空调夏天车间温度可能到40多度如果散热做不好工控机死机就是家常便饭。很多AGV故障排查到最后发现是工控机过热降频甚至自动关机。所以选型时不能只看CPU性能还要看散热设计这台国产工控机至少在设计上考虑到了这一点。3.2 跟着线束走一遍外设接线实操记录拆机过程中最有价值的环节是顺着AGV的线束把每一个外设的接线关系走一遍。我来还原一下当时记录的接线情况。首先看供电部分。AGV的直流母线是48V但是工控机需要12V或24V供电所以车体上有一个DC-DC电源模块把48V降压到24V给工控机。我再往下看发现这台工控机的电源端口输入的其实是24V内部还有一级DC-DC转成12V、5V给主板和硬盘供电。这里有一个重要提醒AGV上电瞬间电机驱动器会吸收大量电流导致母线电压跌落如果DC-DC模块的余量不够或者滤波电容太小工控机就可能会在电机启动瞬间重启。这也是很经典的AGV故障现象——每次AGV一启动工控机就断电重启。排查这个问题重点要看DC-DC模块的输入范围和输出纹波。然后是传感器接线。激光雷达是POE供电网线里直接走电源一根线同时搞定供电和通信省事不少。二维码相机是USB接口线束采用带屏蔽的USB线长度控制在2米以内太长会导致信号衰减。IMU通过串口和工控机相连信号线用的是屏蔽双绞线屏蔽层按前面说的方法单端接地。接下来是执行器接线。伺服驱动器的CAN通信线是两根双绞线CAN_H和CAN_L绞在一起屏蔽层在驱动器端接地。电机动力线用的是粗线径的三相线而且动力线和信号线在走线时全程分槽铺设中间有隔板。这个细节从AGV电气图纸上也能看到动力线槽和信号线槽绝对不共用这就是为了防干扰。如果发现AGV通信偶尔报错先检查现场是不是有人为了图省事把动力线和信号线绑在一起了这是最常见也最隐蔽的干扰源。3.3 电气图纸怎么读从端子图到线号热词里有agv电气图纸很多想转AGV行业的工程师第一次拿到一摞电气图纸不知道从哪看起。我的经验是别上来就啃原理图先从三个图入手系统拓扑图、端子接线图和线缆表。系统拓扑图告诉你整套电气系统的框架工控机在中间哪根线接到哪个驱动器哪个传感器挂在哪个网口或者串口。这个图是理解一台AGV电气结构的钥匙。端子接线图告诉你每一个端子排上哪个脚接什么信号线号是多少接到哪里去。线缆表则告诉你每一根线束的长度、颜色、规格和两端连接的连接器型号。现场排查问题时最常用的就是端子接线图顺着线号就能找到目标。读端子接线图时有一个关键技巧看线号。正规AGV厂家出图的线号不是随便编的通常包含信号类型和设备编号信息。比如某个线号命名为LD_RX_04大概能猜出这是激光雷达Laser Radar的接收线编号04是第4根线。命名规范虽然不是行业强制标准但同一个厂家的图纸一定是统一规范的看多了就能快速定位。我自己在项目里一般会做一件额外的事拿到图纸后花半天时间建立一张外设信号对照表把每个外设的IP地址、串口号、波特率、CAN节点ID、IO端子号全部整理到一张表格里。这样后续调试或者排障可以少翻很多图也能在最短时间内发现接线和软件配置不一致的问题。4. AGV跑起来需要哪些软件栈算法与调度的配合4.1 AGV技术栈盘点从底层外设到调度系统拆开工控机硬件部分看明白了但如果想真正理解一台AGV还得看软件栈。热词里有agv技术栈有哪些这个话题正好展开说。AGV的软件栈从下到上分四层驱动层、控制层、导航层、调度层。驱动层直接和外设打交道主要是Linux内核的驱动和外设厂商的SDK负责把激光雷达的点云数据读上来、把CANopen报文解析成速度指令、把串口数据转成IMU姿态。这一层最容易出问题的是不同外设厂商的SDK相互冲突比如两个传感器厂商的SDK都依赖同一个版本的第三方库装在一起就崩。所以我在部署AGV工控机系统时会把每个外设的SDK尽量隔离用Docker容器或者systemd服务单独管理避免依赖冲突。控制层负责底盘运动学解算和差速控制。AGV底盘常见的运动模型有差速、舵轮、全向轮、四轮转向不同模型的控制算法差别很大。这台潜伏顶升式AGV是双差速底盘控制层拿到导航层的线速度和角速度指令通过运动学逆解算出左右轮的转速再通过CANopen发给伺服驱动器。导航层主要包含SLAM定位和路径规划。SLAM用激光雷达点云做实时匹配输出AGV在地图中的位置和姿态路径规划在栅格地图上搜索一条从当前位置到目标位置的可行路径。这一层是AGV技术栈中最有技术含量的部分。调度层通常运行在独立的调度服务器上也可以部分运行在工控机上。调度系统负责接收WMS/MES下发的搬运任务分发给具体的AGV在有多台AGV时还要做交通管制和任务优化。调度系统和AGV工控机之间的通信走高频无线一般用自定义TCP协议或者mqtt等协议。4.2 路径规划从A*到多AGV强化学习热词里有一条是三条agv基本a*算法还有一条是多agv路径规划强化学习这两个点结合在一起正好是AGV导航层的核心脉络。单台AGV的路径规划最经典的算法就是A*。A算法的思路是在栅格地图上维护一个开放列表和一个关闭列表每次从开放列表中取出代价f(n)最小的节点进行扩展其中f(n)g(n)h(n)g(n)是从起点走到当前节点的实际代价h(n)是当前节点到终点的启发式估计代价。常用的启发函数有两种曼哈顿距离和欧氏距离。在AGV的栅格地图上如果只允许上下左右四个方向移动用曼哈顿距离如果允许斜向移动用欧氏距离更合适。我用A时一般还会做两个改进一是对h(n)乘以一个加权系数比如1.2让搜索更倾向于朝目标方向扩展搜索速度更快二是对路径做平滑处理去掉冗余转折点因为A*搜索出来的路径经常会有不必要的拐弯直接发给AGV执行会出现原地转向的低效动作。单机A*解决了单车路径问题但车间里往往有多台AGV同时跑问题立刻变得复杂。多台AGV共享同一片地图如果规划不当会出现两个问题冲突和死锁。冲突就是两台车同时抢一个路口死锁就是多台车互相等待导致谁都动不了。多AGV路径规划最常见的做法是分级解决。第一步在调度层做全局路径规划先用A*或者Dijkstra为每台车规划一条全局路径。第二步在路径执行过程中做交通管制基于路径预留和资源锁的机制当一台车驶入某个路段的临界区域时该路段被锁定其他车的路径规划会避开这个路段。第三步如果实在避不开就做时间窗调度计算每台车到达交叉口的时间窗口通过错峰通行的方式解决。多AGV路径规划强化学习是目前的一个热门方向。传统方法在动态环境下一旦有AGV故障、新任务插入或者人工干预就要重新规划计算量会爆发式增长。强化学习的思路是把路径规划建模为一个序列决策问题智能体通过不断与环境交互学习一个策略让AGV在部分可观测的环境下学会避免冲突和解锁死锁。我见过一些应用案例用DQN或多智能体PPO算法训练AGV集群在仿真环境里学习交通规则再迁移到实际车辆上。但要说明的是工业场景落地还是以传统A*加交通管制为主强化学习更多处于研究和预研阶段成本和稳定性都还不能完全取代经典方案。5. 常见问题与排查技巧实录5.1 串口通信不稳定先查线序再看干扰串口通信问题在AGV调试中非常常见。现象是通信时好时坏或者完全不通。排查顺序我的经验是先查线序不换线直接拿万用表量DB9针脚定义确认T、T-、R、R-是否连接正确。查完线序再看干扰最关键的是信号地地环路。AGV上电机启动瞬间如果信号地接的不对地环路会把电机产生的共模干扰引入串口。最简单的方法是断开屏蔽层的车体端接地只在工控机端接地再观察通信是否恢复稳定。5.2 工控机启动后死机或者重启如果你发现AGV工控机频繁死机先别急着怀疑主板坏了。首先检查供电电源纹波用示波器测量工控机输入电源在电机启动瞬间的压降如果压降超过10%那大概率是DC-DC模块余量不足换一个功率更大、输入范围更宽的模块。其次检查散热通道AGV外壳的散热格栅很容易被灰尘堵死特别是车间环境粉尘较多清理散热鳍片往往比换硅脂更有效。另外检查硬盘健康状况AGV频繁断电可能造成固态硬盘掉盘在Linux系统日志里会出现ext4文件系统错误这个问题容易被忽视。5.3 AGV走走停停、路径规划异常有时AGV在直线行驶时频繁停顿或者明明地图上是一段直路规划出来却拐来拐去。这个问题的根源往往不在规划算法而在定位精度上。先用工控机上的导航软件看AGV当前定位位姿是不是在原地抖动如果是多半是激光雷达被遮挡了、雷达上有污渍、或者雷达安装支架松动。定位抖动会导致规划层不停地重新规划路径路径一变控制层就会停车转向这个联动关系要理解清楚。另外检查一下地图里扫地机、高货架这类动态变化的环境是否导致点云匹配退化必要时重新建图。5.4 排查之外我把经验整理成了速查表以下是我在AGV项目中积累的排查经验速查表按照故障现象、优先检查项、次优检查项和常见根因做了整理。这张表在多个现场项目中迭代过覆盖了大部分日常故障推荐按这个顺序排查可以少走很多弯路。故障现象第一优先级检查第二优先级检查常见根因激光雷达通讯超时网线物理连接、POE供电指示灯IP网段配置、雷达安装角度松动接头氧化、POE供电不足串口数据乱码RS422线序、波特率校验位屏蔽层接地、信号地与动力地隔离地环路干扰、发送接收接反电机启动时工控机重启输入电源纹波、DC-DC余量电源线线径、母线电容驱动器启动尖峰导致电压跌落CAN通信丢帧终端电阻、CAN_H/CAN_L导通性双绞线规格、屏蔽层接地终端电阻缺失、CAN线破损定位抖动、规划乱拐雷达表面清洁度、定位位姿显示环境地图陈旧、反光物体变化点云遮挡、动态环境未更新顶升不到位举升限位开关接线、霍尔反馈举升控制器参数、机械阻力限位失效、货物重量超载调度系统频繁断连无线信号强度、漫游配置AP信道干扰、天线方向无线漫游掉包、信号覆盖不足三色灯和蜂鸣器不动作DO口接线、继电器驱动能力DO点配置、PLC安全回路状态DO口过载烧毁、配置错误针对多AGV项目我还要额外补充一个经验在新增一台AGV或者调整地图后如果出现多台车互相顶住不动优先看调度系统的路径资源和死锁检测日志而不要急着去手动挪车因为手动挪车经常会导致其他车辆的位置信息错误反而扩大了混乱。正确的做法是在调度系统里强制下发解锁指令或者清除路径预留必要时把冲突区域的AGV切到手动模式拖移再重新置回自动模式做一次位置校正。结尾这段时间把一台国产AGV工控机从头到尾拆下来再把电气图纸和外设接线逐一对了一遍最大的感受是AGV不是一个算法问题而是一个系统工程。激光SLAM、路径规划确实是它的灵魂但灵魂要寄居在硬件躯体里躯体的神经就是那几十根信号线和接口。很多看似是算法层面的故障根源往往是某个DB9针脚虚焊、某根CAN线没做双绞、某个DC-DC模块余量不足。我个人在实际项目里的体会是如果你打算入行AGV行业无论你是写算法还是做调度都值得花几天时间泡在现场跟着线束走一遍亲手接一次航插量一次RS422的针脚电压。这套功夫在关键时刻能帮你避开很多和同事互相甩锅的尴尬局面。最后再分享一个小技巧每次调试完一台AGV用标签打印机制作一份外设接口速查卡贴在工控机外壳内侧或者AGV维护面板上内容包括串口波特率、CAN节点ID、IP地址、IO端子对应关系。这张卡片在现场排障时能节省大量时间它比任何一份设计文档都好用因为它在车身上永远不用翻电脑。
返回列表