结合蜘蛛手分选训练营,把工业相机、步进/伺服、变频器的基础接线和设置整理成一套可直接对照查的清单。雷赛板卡场景下,优先按雷赛控制卡/接线盒手册 + 驱动器手册核对,不同型号端子号可能不同。
1. 工业相机:触发、供电、共地
工业相机通常有三类线:供电、触发输入、触发输出/IO。
| 模块 | 接线要点 | 常见设置 |
|---|---|---|
| 供电 | 24V+ 接相机 DC_PWR,0V 接 GND,极性不能反 | 确认相机供电电压,GigE 相机还需配置 IP |
| 触发输入 | 触发源输出接相机 OPTO_IN/OPTO_GND | TriggerMode=On,TriggerSource=Line0 |
| 触发输出 | 相机 OPTO_OUT 可控制光源或给 PLC/板卡反馈 | Strobe 输出与曝光同步 |
| 共地 | 相机、电源、PLC/板卡 GND 必须共接 | 避免浮地导致误触发 |
| NPN/PNP | NPN 低电平有效,PNP 高电平有效,注意限流电阻 | 输入前串 1~4.7kΩ 电阻更安全 |
典型接法:
24V电源+ → 相机 DC_PWR 24V电源- → 相机 GND PLC/板卡/传感器 DO → 相机 OPTO_IN PLC/板卡/传感器 COM → 相机 OPTO_GND 相机 OPTO_OUT → 光源触发端 相机 OPTO_GND → 光源 GND注意:相机触发线不要和电机动力线捆在一起;信号线用屏蔽线,屏蔽层单端接地。
2. 步进电机:电源、脉冲/方向、拨码
步进系统通常是:电源 → 驱动器 → 电机,上位机或雷赛板卡发脉冲 PUL + 方向 DIR。
24V/48V电源+ → 驱动器 V+ 24V/48V电源- → 驱动器 V- 驱动器 A+/A-/B+/B- → 步进电机 A+/A-/B+/B- 雷赛板卡 PUL+ → 驱动器 PUL+ 雷赛板卡 PUL- → 驱动器 PUL- 雷赛板卡 DIR+ → 驱动器 DIR+ 雷赛板卡 DIR- → 驱动器 DIR-拨码重点:
- 电流:按电机额定电流设置,不要盲目加大。
- 细分:常见 800/1600/3200 pulse/rev,越细分越平滑,但脉冲频率要求更高。
- 半流/全流:静止时半流可降低发热。
- 使能:ENA 有效时电机脱机,无效时电机锁紧。
雷赛板卡侧一般输出差分脉冲/方向信号,建议用双绞屏蔽线,且脉冲线与动力线分开走线。
3. 伺服电机:主电源、编码器、脉冲指令
伺服比步进多了编码器反馈和使能/报警信号,接线顺序通常是:主电源、编码器、控制信号、使能。
三相/单相AC → 伺服驱动器 R/S/T 或 L1/L2/L3 伺服驱动器 U/V/W → 伺服电机 U/V/W 伺服驱动器 CN2/编码器口 → 电机编码器 雷赛板卡 PUL+/PUL- → 驱动器 PUL+/PUL- 雷赛板卡 DIR+/DIR- → 驱动器 DIR+/DIR- 雷赛板卡 SEVON → 驱动器 SON/使能 雷赛板卡 ALM ← 驱动器 ALM/报警 雷赛板卡 INP ← 驱动器 INP/定位完成驱动器关键参数:
- 控制模式:位置控制,通常设为脉冲+方向。
- 电子齿轮比:让“板卡发多少脉冲 = 电机走多少距离”一致。
- 使能:SON 有效后电机才锁紧。
- 报警清除:ALM 触发后要先排故再复位。
- 增益:空载低速确认方向正确,再接负载调增益。
伺服调试建议:先空载 JOG,确认方向、使能、报警正常,再带载运行。
4. 变频器:主回路、控制回路、基本参数
变频器接线最容易出错的是输入输出接反和不共地。
三相电源 R/S/T → 变频器输入 变频器输出 U/V/W → 三相电机 PE → 接地排 变频器 DI1 → 启动 变频器 DI2 → 停止/复位 变频器 AI1 → 0~10V 速度给定 变频器 GND/COM → 控制信号公共端基本参数:
- 电机铭牌参数:额定电压、电流、功率、频率。
- 控制模式:一般先选 V/f 控制。
- 加减速时间:传送带建议不要太短,避免冲击。
- 最高/最低频率:例如 0~50Hz。
- 启动源:设为端子控制,而不是面板控制。
- 频率源:模拟量或固定频率。
严禁把电源接到 U/V/W,也严禁把电机线接到 R/S/T。
5. 雷赛板卡常见接法
以雷赛 DMC 系列 + ACC 接线盒为例,典型分层是:
工控机/上位机 ↓ USB/PCIe 雷赛控制卡 ↓ 差分脉冲/方向、DI/DO、编码器 接线盒 ACC ↓ 屏蔽双绞线 步进/伺服驱动器 ↓ 电机 / 编码器 / 限位开关要点:
- 控制卡供电要稳定,很多型号推荐外接 12V/24V。
- 脉冲/编码器用差分屏蔽线,屏蔽层单端接地。
- DI 输入通常接 24V 传感器,注意 NPN/PNP 和限流电阻。
- DO 输出接继电器、电磁阀、指示灯时,感性负载要并续流二极管。
- 高速 IO 线尽量短,避免和变频器输出线平行走线。
6. 蜘蛛手分选里怎么对应
| 设备 | 训练营里的作用 | 接线重点 |
|---|---|---|
| 工业相机 | 识别物料位置、触发拍照 | 共地、触发极性、去抖时间 |
| 编码器 | 传送带位置同步 | 接雷赛编码器口,A/B/Z 差分 |
| 伺服/步进 | 蜘蛛手三轴或四轴运动 | 脉冲方向、电子齿轮比、限位 |
| 真空阀/负压表 | 吸盘抓取检测 | DO 控制阀,AI/DI 检测负压 |
| 变频器 | 传送带调速 | R/S/T、U/V/W、DI 启停、AI 调速 |
调试顺序建议:
先查电源和接地 → 再单独点动电机 → 再调相机触发 → 最后做编码器同步抓取。
任何接线改动前都要断电,变频器断电后还要等母线电压降到安全值再操作。
需要我帮你整理一份这几种设备接线后最常见的故障现象和排查顺序吗?比如电机不转、编码器不同步、相机触发异常这些。
结合雷赛板卡,把前面IDeltaController的接口补成一套可落地的 C# 封装。这里按DMC3000 / LTDMC 系列脉冲卡来写;如果你用的是雷赛 EtherCAT 总线卡,API 会换成dmc_set_servo_on、dmc_pmove_unit、dmc_line_unit这类_unit后缀函数。
1. 雷赛 DMC 封装层
publicclassLeadshineDeltaController:IDeltaController{privatereadonlyushort_card;privatereadonlyshort[]_axes;privatereadonlyshort_vacuumDo;privatereadonlyshort_pressureDi;privatereadonlydouble_pulsePerMm;privatebool_connected;publicLeadshineDeltaController(ushortcard,short[]axes,shortvacuumDo,shortpressureDi,doublepulsePerMm){_card=card;_axes=axes;_vacuumDo=vacuumDo;_pressureDi=pressureDi;_pulsePerMm=pulsePerMm;}publicvoidConnect(){intret=DMC3000.dmc_board_init(_card,0);if(ret!=0)thrownewException($"雷赛板卡初始化失败,错误码={ret}");_connected=true;}publicvoidHome(){foreach(varaxisin_axes){DMC3000.dmc_set_homelatch_mode(_card,axis,1,0,0);DMC3000.dmc_reset_homelatch_flag(_card,axis);// 先低速找原点DMC3000.dmc_set_profile(_card,axis,0,500,0.2,0.2,0);DMC3000.dmc_pmove(_card,axis,50000,0);while(DMC3000.dmc_check_done(_card,axis)==0)Thread.Sleep(50);DMC3000.dmc_set_position(_card,axis,0);}}publicvoidMoveTo(doublex,doubley,doublez){double[]pos={x*_pulsePerMm,y*_pulsePerMm,z*_pulsePerMm};DMC3000.dmc_set_vector_profile_multicoor(_card,3,newushort[]{1000,1000,1000},newushort[]{5000,5000,5000},newushort[]{1000,1000,1000},newushort[]{500,500,500});DMC3000.dmc_line_multicoor(_card,3,_axes,pos,0);while(DMC3000.dmc_check_done_multicoor(_card,0)==0)Thread.Sleep(5);}publicvoidMoveSync(int[]axisList,stringconveyorAxis,intsyncTimeMs,doublex,doubley){// 脉冲卡没有 MoveSync,这里用“短距离插补 + 编码器补偿”模拟MoveTo(x,y,GetCurrentZ());}publicvoidEndSync(){// 脉冲卡无同步段,空实现}publicvoidMoveZ(doublez){doublecurrentX=DMC3000.dmc_get_position(_card,_axes[0])/_pulsePerMm;doublecurrentY=DMC3000.dmc_get_position(_card,_axes[1])/_pulsePerMm;MoveTo(currentX,currentY,z);}publicvoidSetVacuum(boolon){DMC3000.dmc_write_outbit(_card,_vacuumDo,on?(ushort)1:(ushort)0);}publicvoidPlace(doublex,doubley,doublez){MoveTo(x,y,z);SetVacuum(false);}privatedoubleGetCurrentZ(){returnDMC3000.dmc_get_position(_card,_axes[2])/_pulsePerMm;}publicvoidDispose(){if(_connected)DMC3000.dmc_board_close();_connected=false;}}2. 雷赛 EtherCAT 总线卡版本
如果是 EMC-E 系列,建议用_unit函数,单位直接是 mm、mm/s。
publicclassLeadshineEtherCatDeltaController:IDeltaController{privatereadonlyshort_cardId;privatereadonlyshort[]_axes;privatereadonlyshort_vacuumDo;privatebool_connected;publicLeadshineEtherCatDeltaController(shortcardId,short[]axes,shortvacuumDo){_cardId=cardId;_axes=axes;_vacuumDo=vacuumDo;}publicvoidConnect(){shortid=0;intret=LTDMC.dmc_board_init_eth("192.168.5.11",refid);if(ret!=0)thrownewException("EtherCAT 控制卡连接失败");_connected=true;}publicvoidHome(){foreach(varaxisin_axes){LTDMC.dmc_set_servo_on(_cardId,axis,1);LTDMC.dmc_home_move(_cardId,axis,0,50);}}publicvoidMoveTo(doublex,doubley,doublez){double[]target={x,y,z};ushort[]axes={_axes[0],_axes[1],_axes[2]};LTDMC.dmc_set_vector_profile_unit(_cardId,0,0,300,2000,2000,100);LTDMC.dmc_line_unit(_cardId,0,3,axes,target,0);while(LTDMC.dmc_check_done_multicoor(_cardId,0)==0)Thread.Sleep(5);}publicvoidMoveSync(int[]axisList,stringconveyorAxis,intsyncTimeMs,doublex,doubley){MoveTo(x,y,GetCurrentZ());}publicvoidEndSync(){}publicvoidMoveZ(doublez){doublex=LTDMC.dmc_get_position_unit(_cardId,_axes[0]);doubley=LTDMC.dmc_get_position_unit(_cardId,_axes[1]);MoveTo(x,y,z);}publicvoidSetVacuum(boolon){LTDMC.dmc_write_outbit(_cardId,_vacuumDo,on?(ushort)1:(ushort)0);}publicvoidPlace(doublex,doubley,doublez){MoveTo(x,y,z);SetVacuum(false);}privatedoubleGetCurrentZ(){returnLTDMC.dmc_get_position_unit(_cardId,_axes[2]);}publicvoidDispose(){if(_connected)LTDMC.dmc_board_close();_connected=false;}}3. 负压检测封装
publicclassLeadshineVacuumMonitor{privatereadonlyushort_card;privatereadonlyshort_di;privatereadonlydouble_minPressure;privatereadonlyint_delayMs;publicLeadshineVacuumMonitor(ushortcard,shortdi,doubleminPressure=-60.0,intdelayMs=100){_card=card;_di=di;_minPressure=minPressure;_delayMs=delayMs;}publicboolIsHolding(){Thread.Sleep(_delayMs);// 如果负压表走模拟量,可用 dmc_get_ad 读取doublepressure=DMC3000.dmc_get_ad(_card,_di);returnpressure<=_minPressure;}}4. 编码器读取封装
publicclassLeadshineEncoder:IEncoder{privatereadonlyushort_card;privatereadonlyshort_axis;publicLeadshineEncoder(ushortcard,shortaxis){_card=card;_axis=axis;}publicdoubleRead(){returnDMC3000.dmc_get_encoder(_card,_axis);}}5. 接线对应关系
| 功能 | 雷赛侧 | 外部设备 |
|---|---|---|
| X/Y/Z 轴 | PUL+/PUL-/DIR+/DIR- | 伺服/步进驱动器 |
| 真空阀 | DO 输出 | 电磁阀 |
| 负压检测 | DI 或 AD 输入 | 负压表 |
| 传送带编码器 | ENC A/B/Z | 增量式编码器 |
| 急停/限位 | DI 输入 | 限位开关、急停按钮 |
6. 调试顺序
- 先装雷赛驱动,确认
DMC3000.dll或LTDMC.dll在输出目录。 - 用雷赛自带调试软件单独点动 XYZ 轴。
- 确认脉冲当量、电子齿轮比、限位信号正常。
- 再调相机触发、编码器同步、真空阀。
- 最后把
IDeltaController接入分拣主流程。
如果你的板卡型号是DMC3000、DMC5000、DMC2610、EMC-E5000这种,把型号发我,我可以把 API 名再精确到对应函数。