本文转载来自:作者:沃德天帅德布曜布曜德·杨(674210745)群
安装方法:
- 使用nuget搜索 Leal.Core.Net.EtherCAT 作者比较懒只支持.net6/8/9,windows支持X86,X64作者说懒得维护多版本没提供
- 安装WinPcap 可在群文件中下载或者官网下载(https://www.winpcap.org/)
- 安装好之后项目中会有着7个文件(最新版中已取消这7个文件,在.18.0版本之前才会有)

伺服控制:
//初始化主站
EtherCATMaster _etherCATMaster = new EtherCATMaster();
//初始化1个地址为1的驱动器,如果有多个驱动器直接创建对应地址的多个对象即可
EtherCATSlave_CiA402? _axis = new(_etherCATMaster, 1);
//启动网卡,查找从站数量,参数为网卡名称
int Count = _etherCATMaster.StartActivity("EtherCatNet");
//停止网卡
_etherCATMaster.StopActivity();
//伺服使能
_axis.PowerOn();
//伺服去使能
_axis.PowerOff();
//绝对位置运动参数为: 位置 速度 加速度 减速度(单位:Puls)
_axis.MoveAbsolute(postion, speed, speed * 10, speed * 10);
//相对位置运动,参数同上
_axis.MoveRelative(postion, speed, speed * 10, speed * 10);
//扭矩控制,目标扭矩,扭矩斜率
_axis.TorqueControl(1000,100);//扭矩控制,单位为百分比
//速度控制,目标速度,加速度,减速度
_axis.VelocityControl(1000, 100, 100);
//伺服复位
_axis.Reset();
//伺服停止
_axis.Stop(1000000);// 停止减速度
//伺服启动回零
_axis.Home();
//写入寄存器,<写入类型>参数:驱动器地址,索引,子索引,值
_axis.Master.WriteSDO<byte>(1, 0x6060, 0x00, 6);
//读寄存器,<读取类型>参数:驱动器地址,索引,子索引
_axis.Master.ReadSDO<int>(1, 0x6060, 0x00);
//获取输入
_axis.Master.GetInputs(1);//伺服地址
//获取输出
_axis.Master.GetOutputs(1);//伺服地址
//初始化完成后可读取参数
从站名:_axis.SlaveName
从站地址:_axis.SlaveAddr
从站状态:_axis.SlaveState
报警代码:_axis.ErrorCode
状态字:_axis.StatusWord
当前模式:_axis.ModesOperationDisplay
当前位置:_axis.PositionActualValue
当前速度:_axis.VelocityActualValue
控制字:_axis.Controlword
设置模式:_axis.ModesOperation
设置位置:_axis.TargetPosition
设置速度:_axis.ProfileVelocity
设置加速度:_axis.ProfileAcceleration
设置减速度:_axis.ProfileDeceleration
快速停机:_axis.QuickOptionCode
停止代码:_axis.HaltOptionCode
伺服无故障:_axis.AxisState.ReadyToSwitchOn
等待打开伺服使能:_axis.AxisState.SwitchedOn
伺服运行:_axis.AxisState.OperationEnabled
故障:_axis.AxisState.Fault
接通主回路电:_axis.AxisState.VoltageEnabled
快速停机:_axis.AxisState.QuickStop
伺服准备好:_axis.AxisState.SwitchOnDisabled
警告:_axis.AxisState.Warning
远程控制:_axis.AxisState.Remote
目前到达:_axis.AxisState.TargetReached
内部软限位状态:_axis.AxisState.InternalLimitActive
回原点完成输出:_axis.AxisState.HomingAttained
IO控制:
//初始化主站
EtherCATMaster _etherCATMaster = new EtherCATMaster();
//初始化从站
IEtherCATSlave _etherCATSlave = new EtherCATSlave(_etherCATMaster, 1)
//启动网卡,查找从站数量,参数为网卡名称
int Count = _etherCATMaster.StartActivity("EtherCatNet");
//停止网卡
_etherCATMaster.StopActivity();
//创建输入索引
TransmitPDOMapping in1 = _etherCATSlave.AddTxPDOMapping(0, typeof(byte));// Inputs数组 索引0
//创建输出索引
ReceivePDOMapping out1 = _etherCATSlave.AddRxPDOMapping(0, typeof(byte));
//控制输出
out1.Value = (byte)0;
问题汇总:
1.Unable to load DLL ... or one or its 缺少DLL
答:看执行文件夹下 是否存在该DLL 存在则安装一下群文件中的WinPcap 不存在则请参考群主博客(windwos系统 请按x86_x64 将win-..zip中的dll 拷贝到执行文件夹中)
2.EtherCATSlave_CiA402
EtherCATSlave_CiA402_1
EtherCATSlave_CiA402_2的区别
答:性能依次增加 兼容性依次降低(能使用高版本 尽量使用高版本)
3.可以运行的平台
答:win_x86 win_x64 linux_x64 linux_arm linux_arm64
4.支持的.net版本
答:目前只支持net6.0;net8.0;net9.0(不过.net core可以调用.net framework的库(any cpu))
测试驱动器型号
测试成功:
倍福
EK1100
EL1018
EL2008
埃斯顿
E2P-EC
汇川
SV660N
SV630N
SVD60N
SV635N
GL10-RTU-ECTA
GL20-RTU-ECTA
AM600-1616ETNE
雷赛
PM32EC-A0
PM16DI-A0
PM16DO-A0
CL3B-EC
松下
MADLN15BE
MADLN05BE
高创
CDHD2
LDHD2
实点
C2P-EC
信捷
DS5C1
锐特技术
ECT60
繁易
FV5(非标准从站 需重构SetSyncMode:不做操作 SetOperational:强制至OP模式)
测试失败:
凌臣
LC1100
雷赛
EM32DX-E4
新立川
LC10E(不能读取实时位置,转速,扭矩,其他正常,咨询过厂家,属于驱动器BUG)
更新日志:
0.17.19.1
- 添加对win-x64的兼容
- 优化部分问题
- 删除windows系统环境dll ucrtbased.dll及vcruntime140d.dll(正常电脑会自带 如何不自带 根据系统需求 在群文件下载)