分为:硬件驱动、上位机软件编程、线程与实时性、安全逻辑、干扰与接地、调试排错六大块,覆盖 PCIe 脉冲卡、USB 卡、EtherCAT 总线卡共性要点。
一、硬件与驱动安装(上位机 PC 侧)
驱动版本必须匹配 SDK 版本SDK 库文件(
LTDMC.dll)、驱动、调试软件 MCTuner 必须一套;版本不一致会出现:初始化失败、函数返回 0 但轴不动、随机报错。不要混用新旧版本。
PCIe 卡:工控机 BIOS 关闭 PCIe 省电、ASPM 节能,否则运行中偶发卡失联。
USB 卡:禁止接集线器,直连工控机后置 USB 口;避免 USB 休眠,设备管理器关闭 USB 选择性暂停。
EtherCAT 总线卡:网卡使用 Intel 工业网卡,禁用网卡节能、巨帧,固定 IP,不要用普通消费网卡。
卡号、轴号识别多卡时 PCIe 卡号不一定对应插槽物理顺序,必须用 MCTuner 读取实际卡号;轴号从 0 开始,程序不要写死卡号 0,要做自动扫描识别雷赛智能。
先硬件验证,再写上位机程序先用官方 MCTuner 调试软件,完成:轴运动、回零、限位、IO 全部测试通过,再开发自己的上位机,排除硬件问题。
二、编程 API 调用顺序
调用顺序不能颠倒
dmc_board_init()初始化卡 → 设置脉冲模式/脉冲当量 → 设置速度加减速 → 运动指令 → 结束dmc_board_close()释放资源
运动指令前必须设置脉冲输出模式(脉冲 + 方向 / CW‑CCW 双脉冲),否则电机乱转、方向反、不动雷赛智能。
参数单位区分普通 DMC 卡:函数参数单位是脉冲数; EMC‑E 单元版本:带
_unit后缀函数,单位 mm/s,不要混用两套函数,会出现巨大定位偏差。每次调用 API 务必读取错误码
short err = dmc_get_last_error();
上位机必须把错误码 + 错误描述记录日志;不要只判断函数返回值,部分函数返回成功,但硬件存在报警。
程序退出务必关闭卡
dmc_board_close(),异常崩溃没有关闭会导致驱动占用,重启软件识别不到卡,需要重启电脑。
三、线程安全(上位机最常见 BUG)
同一控制卡不允许多线程同时调用 API,必须加互斥锁(临界区)保护所有运控函数调用。
现象:随机丢脉冲、运动错乱、IO 读写异常、程序卡死。UI 线程绝对不要直接调用运动 API,单独开运动工作线程处理运动逻辑,UI 只做状态读取与显示。
状态查询不要死循环高频轮询不要毫秒级疯狂读位置、IO;加延时,高频读取占用 CPU,Windows 非实时系统,会挤占运动响应。
Windows 不是硬实时系统
运动轨迹、插补、脉冲全部在控制卡硬件内部执行,上位机只下发指令,不要在上位机做闭环插补。
上位机只负责下发点位、读取状态;运动过程卡硬件独立跑,上位机卡顿不会打断已经下发的运动。
重点:运动启动后,上位机死机,电机仍然会继续运行到位,安全逻辑不能完全依赖软件!
四、安全逻辑
软件限位 + 硬件限位双重保护
硬件:正负限位、原点接入控制卡 DI;
上位机:软件行程限制,下发运动指令前先校验目标位置,禁止超程点位下发。
急停逻辑急停信号优先硬件 DI 接入控制卡,触发硬件急停,卡内部立刻停止脉冲输出;上位机软件急停只是辅助,不能只靠软件停止。
报警处理伺服报警、驱动器报警 DI 输入到控制卡,上位机实时检测;报警触发立刻停止所有轴运动,禁止新运动指令下发。
上电 / 复位逻辑上电开机后,轴位置是未知,禁止直接执行绝对定位,必须先回原点;否则直接跑飞撞机。
五、通讯、干扰、接地(上位机‑控制卡‑驱动器链路)
脉冲差分优先:长距离接线,必须差分驱动;单端模式极易受干扰,出现丢脉冲、跑位、定位不准雷赛智能。
共地:控制卡 IO GND、驱动器 GND、工控机 GND 单点共地;不同设备之间地电位差会造成信号乱跳。
动力线(电机强电)和脉冲信号线分开走线,不同线槽;脉冲线用双绞屏蔽线,屏蔽层单端接地,远离接触器、变频器、开关电源。
IO 输入输出:DI/DO 是光耦隔离,外部 24V 电源不要和 PC 电源共地;感性负载(继电器、电磁阀)必须加续流二极管,否则干扰控制卡,造成上位机随机失联。
六、常见坑点汇总
表格
| 现象 | 上位机侧原因 |
|---|---|
| 下发指令电机不动 | MCTuner 测试正常,程序脉冲模式没设置;dll 版本不匹配;卡号写错;参数单位混淆脉冲 /mm |
| 随机跑位,定位不准 | 多线程并发调用 API 无锁;干扰;脉冲当量设置错误;没有做脉冲模式设置 |
| 程序运行一会,控制卡失联 | PCIe/USB 节能;dll 资源未释放;强电干扰冲击控制卡 |
| UI 卡顿,运动还在跑 | 正常现象,运动在卡硬件执行;UI 不要阻塞工作线程 |
| 重启软件识别不到卡 | 程序异常退出没有执行dmc_board_close(),驱动被占用,需要重启电脑 |
七、EtherCAT 总线卡额外注意
EtherCAT 主站运行在控制卡,不要用 PC 网卡做软主站,Windows 实时性不足。
上位机只下发运动指令,总线周期由控制卡硬件维护。
从站驱动器节点 ID、对象字典参数,必须先用 MCTuner 扫描配置保存,上位机上电自动加载配置。
八、工程建议
上位机架构:UI 线程(界面)+ 独立运动线程(锁保护调用 API);
所有运动指令下发前做参数合法性校验;
完整日志:记录下发点位、错误码、IO 状态;
安全逻辑硬件优先,软件只做二次防护。

