一、位置比较
步骤:
1、配置比较器;
2、清除比较器;
3、添加/更新比较位置点;
4、开始运动并查看比较状态。
一维低速位置比较功能
设置一维位置比较器
清除一维位置比较点
添加一维位置比较点
读取当前一维比较点位置
查询已经比较过的一维比较点个数
查询可以加入的一维比较点个数

code
public int CompareOneDirect()
{
// 设置一维位置比较器
ushort _cardNo = 0;
ushort _axisNo = 1;
ushort _enableCompare = 1; // 比较功能状态 0 禁止 1 使能
ushort _sourceCompare = 1; // 比较源 0 指令位置计数器 1 编码器计数器
LTDMC.dmc_compare_set_config(_cardNo, _axisNo, _enableCompare, _sourceCompare);
// 清除一维位置比较的点
LTDMC.dmc_compare_clear_points(_cardNo, _axisNo);
// 添加一维位置比较点、
int _pos = 1200; // 比较位置 单位是 pulse
ushort _direct = 1; // 比较模式 0 小于等于 1 大于等于
ushort _action = 2; // 比较点出发功能编号
ushort _actPara = 1;
LTDMC.dmc_compare_add_point(_cardNo, _axisNo, _pos, _direct, _action, _actPara);
// 读取当前一维比较点位置
LTDMC.dmc_compare_get_current_point(_cardNo, _axisNo,ref _pos);
// 查询已经比较过的一维比较点个数
int _pointNum = 0; // 返回已经比较过的点
LTDMC.dmc_compare_get_points_runned(_cardNo, _axisNo,ref _pointNum);
// 查询可以加入的一维比较点个数
int _pointNumRemaind = 0; // 返回可以加入的比较点数
LTDMC.dmc_compare_get_points_remained(_cardNo, _axisNo, ref _pointNumRemaind);
return 0;
}
二维低速位置比较功能
设置二维位置比较器
清除已添加的所有二维位置比较点
添加二维位置比较点
读取当前二维位置比较点位置
查询已经比较过的二维比较点个数
查询可以加入的二维比较点个数
// 设置二维位置比较器
ushort _cardNo = 0;
ushort[] _axisNo =new ushort[20];
ushort _enableCompare = 1; // 比较功能状态 0 禁止 1 使能
ushort _sourceCompare = 1; // 比较源 0 指令位置计数器 1 编码器计数器
LTDMC.dmc_compare_set_config_extern(_cardNo, _enableCompare, _sourceCompare);
// 清除二维位置比较的点
LTDMC.dmc_compare_clear_points_extern(_cardNo);
// 添加二维位置比较点、
int[] _pos = new int[20] ; // 比较位置 单位是 pulse
ushort[] _direct =new ushort[20]; // 比较模式 0 小于等于 1 大于等于
ushort _action = 2; // 比较点出发功能编号
ushort _actPara = 1;
LTDMC.dmc_compare_add_point_extern(_cardNo, _axisNo, _pos, _direct, _action, _actPara);
// 读取当前二维比较点位置
LTDMC.dmc_compare_get_current_point_extern(_cardNo, _pos);
// 查询已经比较过的二维比较点个数
int _pointNum = 0; // 返回已经比较过的点
LTDMC.dmc_compare_get_points_runned_extern(_cardNo, ref _pointNum);
// 查询可以加入的二维比较点个数
int _pointNumRemaind = 0; // 返回可以加入的比较点数
LTDMC.dmc_compare_get_points_remained_extern(_cardNo, ref _pointNumRemaind);
return 0;
一维高速位置比较功能
设置高速比较模式
配置高速比较器
设置高速比较线性模式参数
清除高速位置比较点
添加/更新高速比较位置
读取高速比较参数
控制指定 CMP 端口的输出
读取指定 CMP 端口的电平
public int CompareHcmpDirects()
{
// 设置高速比较模式
ushort _cardNo = 0;
ushort _axisNo = 1;
ushort _cmp = 2; // 告诉比较器 对应的端口 cmp0-cmp3
ushort _cmpMode = 2; // 比较模式 0 禁止 1 等于 2 小于 3 大于 4 队列
LTDMC.dmc_hcmp_set_mode(_cardNo, _cmp, _cmpMode);
// 配置告诉比较器
ushort _hcmp= 0; // // 告诉比较器 对应的端口 cmp0-cmp3
ushort _hcmpSource= 0; // 比较位置源 0 指令位置计数器 1 编码位置计数器
ushort _cmpLogic = 1; // 有效电平 0 低电平 1 高电平
int _time = 20; // 脉冲宽度
LTDMC.dmc_hcmp_set_config(_cardNo, _hcmp, _axisNo, _hcmpSource,_cmpLogic, _time);
// 设置高速比较线性模型
int _increment = 0; // 位置增量 单位是pulse
int _count = 2; // 比较的次数
LTDMC.dmc_hcmp_set_liner(_cardNo, _hcmp, _increment,_count);
//清除高速位置比较点
LTDMC.dmc_hcmp_clear_points(_cardNo, _hcmp);
//添加更新高速比较位置
int _cmpPos = 120; // 队列模式下添加比较位置
LTDMC.dmc_hcmp_add_point(_cardNo, _hcmp, _cmpPos);
// 读取高速比较参数
LTDMC.dmc_hcmp_get_config(_cardNo,_hcmp,ref _axisNo, ref _hcmpSource, ref _cmpLogic, ref _time);
// 控制指定CMP端口的输出
ushort _onOroff = 1; // 设置CMP端口电平 0 低电平 1 高电平
LTDMC.dmc_write_cmp_pin(_cardNo,_hcmp,_onOroff);
// 读取指定 CMP 端口的电平
return 0;
}
二、高速位置锁存
高速单次位置锁存功能
函数介绍
设置指定轴的 LTC 信号
设置锁存方式
从控制卡内读取编码器锁存器的值
从控制卡内读取指定卡内锁存器的标志位
复位指定卡的锁存器的标志位
高速连续位置锁存功能
LTC 触发延时急停功能
