
1. 项目缘起为什么人机混行是AGV叉车落地的“鬼门关”做过工厂物流自动化的人都有一个共识单机调试容易整线跑通不难真正让人夜里睡不着觉的永远是人机混行区域的安全保障。我前后参与过四个AGV叉车替换人工叉车的项目从3C电子厂的成品仓到汽车零部件的中转区每一次最耗心血的都不是导航精度也不是调度效率而是“当人突然出现在AGV行驶路径上时系统能不能在撞上之前停下来”。这个问题的本质是安全冗余设计与生产效率之间的博弈。AGV叉车在纯自动化区域可以跑得很快路径规划可以很激进但一旦进入人机混行区就必须切换到一套完全不同的运行逻辑。这套逻辑的核心不是“如何更快”而是“如何确保任何单点故障都不会导致人身伤害”。先把这个场景说清楚。所谓人机混行区域通常包括以下几种典型工况仓库拣选通道人工拣货员推着拣选车在通道内作业AGV叉车需要穿过这些通道去取放托盘。产线上下料口操作工在固定工位进行上下料AGV叉车需要靠近工位对接输送线或料架。装卸货月台外部货车司机、装卸工与AGV叉车共享月台区域人员走动频繁且路径不固定。充电区与维护通道人员需要定期对AGV进行维护、充电这些区域往往空间狭窄。这些场景的共同特点是人的行为不可预测而AGV叉车的运动学特性决定了它不可能像小轿车一样瞬间刹停。一台满载1.5吨的AGV叉车以1.2m/s的速度行驶从触发急停到完全停止制动距离通常在200mm到400mm之间再加上系统响应延迟实际安全距离需要留出至少600mm以上。这个数字在狭窄通道里是非常奢侈的。所以人机混行安全的核心命题就变成了如何在有限的空间内构建一套多层级、多传感器融合的安全防护体系让AGV叉车在任何情况下都不会对人员造成伤害。这套体系需要从感知层、决策层、执行层三个维度同时入手缺一不可。我见过太多项目在验收阶段被安全部门卡住原因往往不是技术不先进而是安全逻辑有漏洞。比如只依赖单一传感器、急停按钮位置不合理、安全PLC的响应时间没有纳入计算、人员培训不到位等等。这些问题在演示阶段看不出来一旦进入真实生产环境就是定时炸弹。接下来的内容我会把这套安全体系拆开揉碎从整体设计思路到具体传感器选型从安全PLC的配置到现场调试的实操细节再到常见问题的排查方法全部基于我实际踩过的坑和验证过的方案来展开。无论你是刚接触AGV叉车安全设计的新手还是正在为项目验收发愁的工程师应该都能从中找到可以直接参考的内容。2. 整体安全架构设计三层防护如何各司其职2.1 安全防护的层级划分逻辑人机混行区域的安全防护绝对不能靠单一手段。我的经验是必须建立三层防护体系每一层都有明确的职责边界和触发条件层与层之间形成冗余。第一层主动预防层。这一层的目标是在人员尚未进入危险区域时就提前感知并减速。核心手段包括激光雷达的区域扫描、视觉系统的人员识别、UWB定位标签的接近预警等。这一层的特点是“提前介入”给AGV留出充足的反应时间。第二层被动响应层。当人员已经进入AGV的行驶路径或危险区域时这一层负责触发减速或停车。核心手段包括安全激光雷达的安全区域监控、安全触边、急停按钮等。这一层的特点是“硬响应”必须符合安全完整性等级要求。第三层物理隔离层。这是最后一道防线当所有电子系统都失效时通过物理手段避免伤害。包括防撞条、机械缓冲装置、区域围栏等。这一层平时不发挥作用但绝对不能省略。这三层的关系可以用一个生活化的类比来理解第一层像是你开车时看到前方有人提前松油门减速第二层像是你发现距离太近猛踩刹车第三层像是安全带和安全气囊在碰撞不可避免时减轻伤害。2.2 安全区域的分级定义与参数计算在实际项目中我会把AGV叉车的运行区域划分为四个安全等级每个等级对应不同的速度限制和传感器配置。安全等级区域定义速度限制传感器配置触发动作S0纯自动化区域无人员进入额定速度通常1.5-2.0m/s导航激光雷达正常行驶S1人员可进入但频率低降至0.8-1.0m/s导航雷达安全雷达预警区减速预警S2人员频繁活动区域降至0.3-0.5m/s安全雷达保护区视觉减速或停车S3人员密集作业区降至0.1-0.2m/s或停车等待安全雷达触边急停立即停车这个分级不是拍脑袋定的而是基于制动距离公式反推出来的。制动距离的计算公式是d v² / (2 × a) v × t_response其中v是行驶速度a是制动减速度t_response是系统响应时间。以一台满载AGV叉车为例制动减速度a取1.5m/s²系统响应时间t_response包括安全雷达响应时间约100ms、安全PLC扫描周期约20ms、驱动器响应时间约50ms合计约170ms。当v1.0m/s时d 1.0²/(2×1.5) 1.0×0.17 0.33 0.17 0.50m。这意味着安全雷达的保护区域至少需要设置到500mm才能确保在人员进入时完全停住。当v0.5m/s时d 0.25/3 0.5×0.17 0.083 0.085 0.168m。保护区域可以缩小到200mm左右。这就是为什么在人机混行区域必须降速——速度每降低一半制动距离会降到原来的四分之一左右。这个账算清楚了你就能理解为什么安全设计里“降速”永远是最有效的手段。2.3 安全控制回路的硬件架构安全控制回路的设计我坚持一个原则安全信号必须走独立回路不能与普通控制信号共用。具体来说安全激光雷达的输出直接接入安全PLC安全PLC的输出直接控制驱动器的安全扭矩关断功能中间不经过任何普通PLC或工控机。这套架构的核心组件包括安全PLC通常选用符合IEC 61508 SIL2或SIL3等级的产品比如西门子的S7-1500F系列、皮尔兹的PSS 4000系列。安全PLC的特点是具有双通道处理架构内部有自诊断功能任何单点故障都能被检测到并导向安全状态。安全激光雷达选用符合IEC 61496-1/-3标准的安全型激光扫描仪比如SICK的microScan3、Keyence的SZ系列。这类雷达的特点是具有安全认证的输出信号能够划分警告区和保护区响应时间通常在80-150ms之间。安全继电器/安全输出模块用于控制驱动器的STO安全扭矩关断功能。当安全PLC判断需要停车时通过安全输出模块切断驱动器的使能信号电机在毫秒级内失去扭矩。急停按钮分布在AGV本体和周边区域采用双通道常闭触点直接接入安全PLC。急停按钮的布置密度要保证人员在任意位置都能在2秒内触达。这里有一个容易被忽略的细节安全PLC的扫描周期必须纳入响应时间计算。有些项目的安全PLC扫描周期设到了50ms甚至100ms加上雷达响应时间和驱动器响应时间总响应时间可能超过300ms这时候如果还按170ms来计算制动距离就会存在严重的安全隐患。我的建议是安全PLC的扫描周期不要超过20ms并且要在调试阶段用示波器实测整个链路的响应时间。2.4 安全逻辑的冗余设计安全逻辑的冗余设计核心是避免单点故障导致安全功能失效。我通常采用以下几种冗余策略传感器冗余在AGV的前端和两侧同时布置安全激光雷达形成交叉覆盖。前端的雷达负责检测正前方的人员两侧的雷达负责检测侧向接近的人员。如果其中一台雷达故障另一台雷达仍然能够覆盖主要危险区域同时系统会发出故障报警并限制AGV的运行范围。信号冗余安全雷达的输出信号采用双通道OSSD1和OSSD2两路信号必须同时有效才能维持AGV的正常运行。如果两路信号不一致安全PLC会立即触发停车。这种设计可以有效检测信号线短路、断路等故障。控制冗余除了安全PLC的控制回路AGV上还保留一套独立的硬件急停回路。即使安全PLC完全失效按下急停按钮仍然能够通过硬件回路切断驱动器使能。这套硬件回路的响应时间更短通常在10ms以内。电源冗余安全回路的供电采用独立的DC 24V电源与普通控制电源分开。这样即使普通电源出现波动或故障安全回路仍然能够正常工作。3. 核心传感器选型与配置实操3.1 安全激光雷达的选型要点安全激光雷达是人机混行安全防护的核心传感器选型时我重点关注以下几个参数扫描角度与覆盖范围。AGV叉车通常需要270°以上的扫描角度才能覆盖前方和两侧。如果只选180°的雷达两侧就会存在盲区人员从侧面接近时无法被检测到。我一般会选择270°或275°的型号安装在AGV的前端中央位置略微向下倾斜3-5°以确保能够扫描到地面上的低矮障碍物和人员脚部。保护区域的可配置性。安全雷达必须支持多区域配置至少能够设置警告区和保护区两个区域。警告区用于触发减速保护区用于触发停车。区域的大小和形状需要根据AGV的速度和制动距离动态调整。有些高端型号还支持根据AGV的行驶方向自动切换区域配置比如前进时使用前向区域后退时使用后向区域。响应时间。安全雷达的响应时间直接影响制动距离的计算。我通常选择响应时间在100ms以内的型号。需要注意的是响应时间包括雷达的扫描周期和信号处理时间选型时要看 datasheet 上的“Response Time”参数而不是“Scan Time”。环境适应性。仓库环境中常见的问题包括灰尘、振动、温度变化、环境光干扰等。安全雷达的防护等级至少要达到IP65工作温度范围要覆盖-10°C到50°C。如果仓库内有叉车尾气或粉尘还需要考虑雷达镜头的自清洁功能或定期清洁维护方案。安全认证。安全雷达必须具有IEC 61496-1/-3的Type 3认证或者IEC 61508的SIL2认证。没有安全认证的雷达只能用于导航和避障不能用于安全防护回路。3.2 视觉系统的辅助作用视觉系统在安全防护中扮演的是辅助角色不能替代安全雷达作为主安全传感器。但视觉系统有其独特优势能够识别人员的姿态和意图区分人和货物甚至能够读取人员的安全帽或反光背心上的标记。我在项目中常用的视觉方案包括RGB-D相机安装在AGV前端上方俯视前方区域。通过深度信息判断人员与AGV的距离通过RGB图像进行人员检测和跟踪。优点是信息丰富缺点是受光照影响大且处理延迟较高通常在100-200ms。双目立体相机通过两个镜头的视差计算深度不需要额外的深度传感器。优点是结构简单缺点是计算量大对纹理稀疏的区域效果差。热成像相机在黑暗或烟雾环境中检测人员不受光照影响。优点是环境适应性强缺点是分辨率低成本高。视觉系统的输出不直接接入安全回路而是接入普通PLC或工控机用于触发预警、调整AGV的行为策略比如提前减速、改变路径以及记录事件视频用于事后分析。3.3 安全触边与防撞条安全触边是最后一道电子防线安装在AGV叉车的车体边缘和货叉前端。当AGV与人员或物体发生接触时触边被压缩内部的两条导电层接触触发急停信号。选型时要注意触发力通常在10N到50N之间。触发力太小容易误触发太大则可能在触发前已经造成伤害。我一般选择20-30N的型号。响应时间触边的响应时间通常在10ms以内远快于雷达。但触边只有在接触后才能触发属于“被动响应”不能作为主要安全手段。安装位置触边需要覆盖AGV的所有可能接触面包括车体前部、后部、两侧以及货叉的上下表面。货叉前端的触边尤其重要因为货叉是最先接触人员的部位。复位方式触边触发后需要手动复位不能自动恢复。这是为了防止AGV在人员尚未离开时自动重新启动。3.4 急停按钮的布置原则急停按钮的布置我的经验是**“伸手可及、醒目易辨、双通道冗余”**。AGV本体上的急停按钮至少布置两个一个在车体前部一个在车体后部。按钮采用红色蘑菇头直径不小于40mm带有黄色背景标识。按钮按下后自锁需要旋转复位。周边区域的急停按钮在人机混行区域的出入口、操作工位、维护通道等位置布置壁挂式急停按钮。按钮高度在1.2m到1.4m之间方便人员快速触达。按钮间距不超过15m确保人员在任意位置都能在2秒内跑到最近的急停按钮。无线急停在一些大型仓库中可以配备无线急停遥控器由现场主管或安全员随身携带。当发现异常情况时可以远程触发急停。无线急停需要采用安全无线通信协议确保信号可靠传输。3.5 传感器融合与数据同步多传感器融合的关键是时间同步和空间标定。时间同步方面我通常采用PTP精确时间协议或硬件触发信号确保所有传感器的数据时间戳对齐。如果时间戳偏差超过50ms融合算法就可能把不同时刻的数据当成同一时刻处理导致误判。空间标定方面需要把每个传感器的坐标系转换到AGV的车体坐标系。标定方法通常是在AGV前方放置一个已知位置的标定板分别用每个传感器测量标定板的位置然后计算坐标变换矩阵。标定完成后需要在现场用实际人员走动来验证融合效果确保每个传感器检测到的人员位置在融合后能够对齐。4. 安全PLC编程与安全逻辑实现4.1 安全逻辑的功能块设计安全PLC的编程与普通PLC有本质区别安全程序必须使用经过认证的安全功能块且程序结构要尽可能简单、清晰、可验证。我通常把安全程序划分为以下几个功能块输入处理块读取安全雷达的OSSD信号、急停按钮的双通道信号、安全触边的信号。每个输入都需要进行双通道一致性检查如果两路信号不一致超过设定时间通常500ms则判定为故障触发安全停车。区域判断块根据安全雷达检测到的人员位置判断人员处于警告区还是保护区。警告区触发减速请求保护区触发停车请求。区域判断需要结合AGV的当前速度和行驶方向动态调整区域的边界。速度监控块监控AGV的实际速度是否超过当前安全等级允许的最大速度。如果超速触发安全停车。速度信号来自驱动器的安全编码器或安全速度监控模块。输出处理块根据上述判断结果控制安全输出模块触发驱动器的STO功能或抱闸。输出信号同样需要双通道冗余确保单点故障不会导致安全功能失效。诊断与报警块监控所有安全组件的工作状态记录故障代码和事件日志。诊断信息通过普通通信接口发送给上位系统用于显示和报警。4.2 安全逻辑的典型流程以下是一个典型的安全逻辑流程用伪代码表示// 安全逻辑主循环扫描周期20ms FUNCTION SafetyLogic: // 读取输入 radar_front_ossd1 : ReadInput(RADAR_FRONT_OSSD1) radar_front_ossd2 : ReadInput(RADAR_FRONT_OSSD2) estop_ch1 : ReadInput(ESTOP_CH1) estop_ch2 : ReadInput(ESTOP_CH2) touch_edge : ReadInput(TOUCH_EDGE) // 双通道一致性检查 IF radar_front_ossd1 ! radar_front_ossd2 THEN TriggerFault(FAULT_RADAR_INCONSISTENT) RequestStop() END_IF IF estop_ch1 ! estop_ch2 THEN TriggerFault(FAULT_ESTOP_INCONSISTENT) RequestStop() END_IF // 急停按钮检查 IF estop_ch1 FALSE OR estop_ch2 FALSE THEN RequestStop() END_IF // 触边检查 IF touch_edge TRUE THEN RequestStop() END_IF // 安全雷达区域判断 IF radar_front_ossd1 TRUE AND radar_front_ossd2 TRUE THEN person_distance : GetRadarDistance() current_speed : GetCurrentSpeed() IF person_distance ProtectionZone(current_speed) THEN RequestStop() ELSIF person_distance WarningZone(current_speed) THEN RequestDecelerate() END_IF END_IF // 速度监控 IF current_speed MaxSpeedForZone(current_zone) THEN RequestStop() END_IF // 输出控制 IF stop_requested TRUE THEN SetOutput(STO_CH1, FALSE) SetOutput(STO_CH2, FALSE) SetOutput(BRAKE, TRUE) ELSE SetOutput(STO_CH1, TRUE) SetOutput(STO_CH2, TRUE) SetOutput(BRAKE, FALSE) END_IF END_FUNCTION这段逻辑的核心思想是任何异常情况都导向停车而不是继续运行。安全设计的原则是“失效导向安全”也就是说当系统出现任何不确定的状态时默认选择最安全的行为——停车。4.3 安全响应时间的实测与验证安全逻辑写完之后必须进行响应时间实测。我通常用以下方法在安全雷达的检测区域边缘放置一个测试目标通常用标准测试棒直径70mm高度500mm。用示波器同时监测安全雷达的输出信号、安全PLC的输出信号、驱动器的使能信号。快速移动测试目标进入保护区记录从雷达输出变化到驱动器使能切断的时间差。重复测试至少10次取最大值作为实际响应时间。这个实测值必须小于安全设计时假设的响应时间。如果实测值偏大需要排查是哪个环节的延迟超出了预期比如雷达的响应时间设置、安全PLC的扫描周期、驱动器的响应时间等。我遇到过的一个典型案例安全PLC的扫描周期设置为50ms雷达响应时间120ms驱动器响应时间80ms总响应时间250ms。但设计时假设的是170ms导致制动距离计算偏小。后来把安全PLC扫描周期降到10ms总响应时间降到210ms仍然偏大最后更换了响应时间更快的雷达80ms总响应时间降到170ms才满足设计要求。4.4 安全程序的验证与确认安全程序写完后不能直接上电运行必须经过验证与确认流程。我通常分三步第一步离线仿真。在安全PLC的编程软件中进行逻辑仿真验证各种输入组合下的输出是否符合预期。重点测试故障场景比如单通道信号丢失、双通道不一致、传感器故障等。第二步台架测试。把安全PLC、安全雷达、驱动器等组件连接成完整回路在台架上进行测试。用测试目标模拟人员进入保护区验证AGV是否能够正确停车。台架测试可以覆盖大部分逻辑功能但不能完全模拟现场环境。第三步现场测试。在AGV实际运行环境中进行测试包括正常行驶、人员突然出现、急停按钮触发、触边触发等场景。现场测试需要安全员在场确保测试过程中不会对人员造成伤害。测试完成后需要形成完整的测试报告作为安全验收的依据。5. 现场调试与常见问题排查实录5.1 安全雷达误触发与漏触发误触发是现场调试中最常见的问题。表现是AGV在没有人员的情况下频繁减速或停车。原因通常有以下几种地面反光某些仓库的地面采用环氧地坪表面光滑激光雷达的光束打到地面后反射回雷达被误判为障碍物。解决方法是调整雷达的安装角度使光束不直接照射到地面或者在雷达下方加装遮光板。灰尘和水雾仓库内的灰尘或清洗后的水雾会散射激光导致雷达检测到虚假目标。解决方法是选择具有灰尘过滤功能的雷达型号或者增加定期清洁维护的频率。雷达区域配置过大保护区域设置得过大导致AGV在正常行驶时也会触发停车。解决方法是根据实测的制动距离重新计算保护区大小并考虑AGV的行驶方向动态调整区域。多台AGV相互干扰多台AGV的激光雷达可能相互照射导致误触发。解决方法是给每台AGV的雷达设置不同的扫描角度或编码或者采用时间同步的方式错开扫描周期。漏触发是更危险的问题表现是人员进入保护区但AGV没有停车。原因可能包括雷达盲区雷达的扫描角度有限某些角度存在盲区。解决方法是增加雷达数量或选择扫描角度更大的型号。人员蹲下或趴下雷达通常安装在离地一定高度的位置如果人员蹲下可能低于雷达的扫描平面。解决方法是把雷达略微向下倾斜或者增加低矮区域的检测手段如安全触边。雷达污染雷达镜头被灰尘或污渍遮挡导致检测能力下降。解决方法是定期清洁雷达镜头并在软件中设置污染检测报警。安全PLC逻辑错误安全逻辑中存在漏洞导致某些情况下没有触发停车。解决方法是仔细审查安全逻辑并进行完整的验证测试。5.2 急停按钮的常见问题急停按钮的问题通常集中在触点接触不良和复位困难两个方面。触点接触不良的表现是急停按钮按下后AGV没有停车或者松开后AGV无法恢复运行。原因可能是触点氧化、弹簧疲劳、接线松动等。解决方法是定期检查急停按钮的触点电阻必要时更换按钮。复位困难的表现是急停按钮按下后无法旋转复位。原因可能是按钮内部的机械结构损坏或者安装时扭矩过大导致螺纹卡死。解决方法是更换按钮并在安装时按照厂家规定的扭矩拧紧。5.3 安全PLC的故障诊断安全PLC的故障诊断信息通常通过LED指示灯和诊断软件来获取。我整理了一个常见故障速查表故障现象可能原因排查方法解决措施安全PLC报通道不一致输入信号线断路或短路用万用表测量输入信号线的通断修复或更换信号线安全PLC报内部故障安全PLC硬件故障查看诊断日志确认故障代码更换安全PLC安全输出无法复位输出回路存在短路或过载测量输出回路的电阻排除短路或过载安全PLC扫描周期超时程序过于复杂或通信负载过高查看扫描周期统计优化程序或减少通信负载安全雷达通信中断通信线缆故障或雷达故障检查通信线缆和雷达状态修复线缆或更换雷达5.4 现场调试的实操心得心得一先静态调试再动态调试。静态调试是指在AGV不移动的情况下用测试目标模拟人员进入保护区验证安全逻辑的正确性。动态调试是指在AGV移动过程中进行测试。先静态后动态可以避免调试过程中发生意外。心得二用标准测试棒不要用手。安全雷达的检测能力与目标的反射率有关人手和标准测试棒的反射率不同。用手测试可能通过但实际人员进入时可能检测不到。我通常用直径70mm、高度500mm的黑色测试棒这是IEC 61496标准规定的测试目标。心得三记录每一次触发事件。安全PLC和AGV控制器都应该记录每一次安全触发事件的时间、位置、触发原因。这些记录对于分析误触发原因、优化安全参数非常有价值。我通常要求系统保存至少30天的触发记录。心得四定期进行安全功能测试。安全功能不是一劳永逸的需要定期测试。我建议每周进行一次急停按钮测试每月进行一次安全雷达保护区测试每季度进行一次完整的安全功能验证。测试结果要记录在案作为安全管理的一部分。心得五人员培训比技术更重要。再好的安全系统如果人员不遵守安全规程也可能发生事故。我通常要求所有进入人机混行区域的人员必须接受安全培训了解AGV的运行规则、急停按钮的位置、异常情况的处理方法。培训后要进行考核合格后才能进入该区域。6. 安全验收与持续改进6.1 安全验收的检查清单安全验收是项目交付前的最后一道关卡。我整理了一份检查清单覆盖了安全系统的各个方面安全雷达检查安装角度、扫描范围、区域配置、响应时间、污染报警功能。安全触边检查触发力、响应时间、安装位置、复位功能。急停按钮检查布置位置、触达时间、双通道信号、复位功能。安全PLC检查扫描周期、安全逻辑、诊断功能、输出控制。驱动器检查STO功能、抱闸功能、响应时间。安全标识检查人机混行区域的警示标识、地面标线、安全通道标识。人员培训检查培训记录、考核结果、安全规程文件。应急预案检查应急处理流程、救援设备、演练记录。6.2 安全数据的记录与分析安全系统运行过程中会产生大量数据包括触发事件、故障记录、运行状态等。这些数据如果只是存着不分析就浪费了。我通常会用这些数据做以下几件事误触发分析统计误触发的频率和原因找出需要优化的传感器配置或安全参数。风险热点识别统计触发事件的位置分布找出人机混行区域中的高风险位置加强安全防护。趋势分析监控安全系统的故障率变化趋势提前发现潜在问题。合规性报告定期生成安全运行报告作为安全管理的依据。6.3 安全系统的迭代升级安全系统不是一成不变的。随着生产需求的变化、人员流动、设备老化安全系统也需要不断迭代升级。我通常建议每年进行一次安全评估根据评估结果决定是否需要调整安全参数、增加传感器、更新安全逻辑。迭代升级时要注意变更管理任何安全相关的变更都需要经过评估、验证、批准流程不能随意修改。变更后需要更新安全文档并对相关人员进行培训。6.4 个人经验总结做了这么多项目我最大的体会是安全设计没有捷径只有把每一个细节都做到位才能真正保障人机混行的安全。那些看起来“差不多就行”的地方往往就是事故的隐患所在。另外安全系统不是越复杂越好。我见过一些项目堆砌了大量的传感器和安全功能结果系统复杂度太高故障率反而上升维护成本也很高。好的安全设计应该是简洁、可靠、可维护的。每一个安全功能都要有明确的目的每一个传感器都要有清晰的职责每一条安全逻辑都要经得起推敲。最后安全文化的建设比技术更重要。技术手段只能解决“能不能”的问题而安全文化解决的是“愿不愿意”的问题。只有当每一个进入人机混行区域的人都真正重视安全、遵守规程技术手段才能发挥最大的作用。