1. 产品概述
WMX3 是软赢科技推出的高性能软运动控制器,它突破了传统运动控制卡的硬件限制,将运动控制算法完全运行在 PC 的 CPU 上,通过标准工业以太网(EtherCAT/CC-Link IE TSN)连接伺服驱动器和 I/O 模块。
核心特点:
- 纯软件实现:无需专用运动控制芯片
- 高性价比:只需普通 PC + 以太网卡 + 伺服系统
- 多轴与高实时性:最多 128 轴,最小周期 0.125ms(RTX 实时版)
- 开放 API:支持 C/C++、C#、Python 等语言开发
它属于软运动控制器(Soft Motion Controller)类别,适合需要灵活定制和高性能的自动化应用。
2. 版本对比
特性 | WMX3 RTX 实时版 | WMX3 Windows 版 |
---|---|---|
实时性 | 高(RTX 子系统,独占 CPU 核心) | 一般(Windows 调度) |
控制周期 | 0.125ms ~ 8ms | 8ms |
最大轴数 | 128 轴 | 128 轴 |
通信总线 | EtherCAT / CC-Link IE TSN | EtherCAT |
适用场景 | 高速高精度多轴联动 | 低速点到点、简单同动 |
系统要求 | Windows + RTX 许可证 | Windows 7/10 |
3. 核心功能
3.1 运动控制
- 控制模式:位置模式 (PP)、速度模式 (PV)、扭矩模式、轮廓位置 (CSP)、电子齿轮、电子凸轮
- 插补功能:直线、圆弧、螺旋、样条、PVT 等
- 加减速曲线:梯形、S 曲线、加加速度控制
3.2 同步与触发
- 多轴同步输出
- 位置比较触发(硬件级输出)
- 事件触发运动
3.3 回零与补偿
- 多种回零方式(原点开关、限位开关、编码器零点)
- 反向间隙补偿、螺距误差补偿、平面度补偿
3.4 I/O 控制
- 支持数字量输入 / 输出
- 支持模拟量输入 / 输出(需硬件支持)
4. 硬件与环境要求
最小配置(Windows 版):
- CPU:Intel J1900 或更高
- 内存:2GB
- 网卡:千兆以太网(建议 Intel)
- 操作系统:Windows 7/10(64 位)
- 软件:WMX3 安装包
推荐配置(RTX 实时版):
- CPU:Intel Core i5/i7(4 核及以上)
- 内存:8GB+
- 网卡:Intel 82574L / I210 等稳定型号
- RTX 许可证
外部设备:
- EtherCAT 伺服驱动器(支持 CoE)
- 电源线、EtherCAT 网线
- 限位开关、原点开关(可选)
5. 安装与配置
-
安装 WMX3 软件
- 运行安装包,按提示安装
- 安装完成后,会注册系统服务和 API 库
-
配置 EtherCAT 网络
- 打开
WMX3 Configurator
- 扫描从站设备
- 配置轴映射、I/O 映射
- 保存配置并下载到控制器
- 打开
-
测试通信
- 使用诊断工具检查各轴状态
- 确认无通信错误
6. 从 0 到 1 的 C# 开发 Demo
假设我们要控制 1 个轴 进行点到点运动:
6.1 创建项目
- Visual Studio 新建 C# 控制台项目
- 引用
WMX3ApiCLR.dll
(.NET 接口)
6.2 编写代码
cs
using System;
using WMX3ApiCLR; // 软赢提供的.NET API
class Program
{
static void Main(string[] args)
{
IntPtr handle = IntPtr.Zero;
try
{
// 1. 连接控制器
int ret = WMX3ApiCLR.WMX3_OpenEtherCAT("192.168.1.100", out handle);
if (ret != 0) throw new Exception("连接失败: " + ret);
Console.WriteLine("连接成功!");
// 2. 初始化轴(轴号0)
WMX3ApiCLR.WMX3_Reset(handle, 0);
// 3. 设置速度与加速度
WMX3ApiCLR.WMX3_SetVel(handle, 0, 1000); // 1000 pulse/s
WMX3ApiCLR.WMX3_SetAcc(handle, 0, 5000); // 5000 pulse/s²
WMX3ApiCLR.WMX3_SetDec(handle, 0, 5000); // 5000 pulse/s²
// 4. 绝对运动到10000脉冲位置
Console.WriteLine("开始运动到10000...");
WMX3ApiCLR.WMX3_MoveAbs(handle, 0, 10000);
// 5. 等待到位
while (true)
{
uint status = 0;
WMX3ApiCLR.WMX3_GetStatus(handle, 0, out status);
if ((status & 0x01) != 0) // 到位标志位
break;
System.Threading.Thread.Sleep(10);
}
Console.WriteLine("运动完成!");
// 6. 回零
Console.WriteLine("开始回零...");
WMX3ApiCLR.WMX3_Home(handle, 0);
// 7. 等待回零完成
while (true)
{
uint status = 0;
WMX3ApiCLR.WMX3_GetStatus(handle, 0, out status);
if ((status & 0x02) != 0) // 回零完成标志位
break;
System.Threading.Thread.Sleep(10);
}
Console.WriteLine("回零完成!");
}
catch (Exception ex)
{
Console.WriteLine("错误: " + ex.Message);
}
finally
{
if (handle != IntPtr.Zero)
WMX3ApiCLR.WMX3_Close(handle);
}
}
}
6.3 运行效果
- 程序连接到 WMX3 控制器
- 轴 0 以 1000pulse/s 速度运动到 10000 脉冲位置
- 到位后自动回零
- 控制台输出各步骤状态
7. 进阶应用建议
- 多轴联动 :使用
WMX3_MoveLinear
等插补 API - 事件触发:注册事件回调处理限位、到位等信号
- 电子齿轮 / 凸轮:用于同步跟随场景
- 误差补偿:添加反向间隙补偿提升定位精度
8. 总结
WMX3 是一款功能强大、灵活开放的软运动控制器,特别适合需要高轴数、高精度、定制化的自动化场景。通过 C# 等高级语言的 API,可以快速实现复杂的运动控制逻辑,大大降低开发门槛。