MCS达动控制函式库范例手册(V.5.0)
更新时间:2024-05-19 05:50:01 阅读量: 综合文库 文档下载
- MCS控制推荐度:
- 相关推荐
MCS 运动控制函式库范例手册
MCS
运动控制函式库
范例手册
(适用于运动控制函式库 V.5.0 版或以上版本)
版本:V. 5.0
日期: 2010.5
WWW.SZMCS.COM
MCS 运动控制函式库范例手册
目
录
1. 运动控函式库范例内容说明........................................................................................ 1 2. Group 参数与机构、编码器参数设定.......................................................................... 2
3. 插值时间调整............................................................................................................... 3
4. 启动与结束运功控制函式............................................................................................ 4
5. 系统状态设定............................................................................................................... 7
6. 读取运动速度、坐标与运动命令资讯.......................................................................10
7. 运动状态检视............................................................................................................. 12
8. 加、减速段使用时间设定.......................................................................................... 14
9. 进给速度设定............................................................................................................. 15
10. 直线、圆弧、圆、螺线运动(一般运动)............................................................. 16
11. 点对点运动............................................................................................................... 19
12. JOG 运动....................................................................................................................21
13. 定位控制................................................................................................................... 22
14. 原点复归运动........................................................................................................... 24
15. 运动暂停、持续、弃值............................................................................................ 26
16. 强迫延迟执行运功命令............................................................................................ 27
17. 速度强制控制........................................................................................................... 28
18. 软件过行程检查与硬件极限开关检查..................................................................... 29
19. 连续运动功能设定................................................................................................... 32
20.读取与清除错误状态..................................................................................................33
21. 齿轮齿隙与间隙补偿................................................................................................34
22. 如何完成 6 轴连续运动............................................................................................ 35
23. 编码器(Encoder)计数值触发中断服务函式功能..................................................... 39
i
MCS 运动控制函式库范例手册
24. 门锁(Latch)编码器计数值与 INDEX 讯号触发中断服务函式功能........................ 41 25. 近端节点(Local I/O)讯号控制与触发中断服务函式功能........................................ 43 26. 计时器计时终了触发中断服务函式功能................................................................. 48
27. Watch Dog 功能......................................................................................................... 50
28. 设定与读取 Remote I/O 输出、入接点讯号............................................................ 52
29. 读取 Remote I/O 讯号传输状态................................................................................53
30. Remote I/O 输入接点讯号触发中断服务函式.......................................................... 55
31. Remote I/O 资料传输错误触发中断服务函式.......................................................... 57
32. 规划 DAC 类比电压输出......................................................................................... 59
33. ADC 电压输入单次转换............................................................................................60
34. ADC 电压输入连续转换............................................................................................62
35. ADC 比较器中断功能控制........................................................................................ 64
36. ADC 标签 Channel 触发中断服务函式功能............................................................. 67
ii
MCS 运动控制函式库范例手册
1. 运动控制函式库范例内容说明
安装光盘中所提供的范例皆为 console mode 类型,使用者可将这些范例整合到自 己的应用程序中。MCCL 最多能支持 12 张 MTC 运动控制卡与 72 个 groups,但为了 增加这些范例的可读性,大部分的范例只使用 1 张运动控制卡(运动控制卡编号使用
CARD_INDEX 来表示)与 1 个 group(group 编号使用 g_nGroupIndex 来表示)。
1
MCS 运动控制函式库范例手册
2. Group 参数与机构、编码器参数设定
相关函式
MCC_SetSysMaxSpeed() MCC_GetSysMaxSpeed() MCC_SetMacParam() MCC_GetMacParam() MCC_SetEncoderConfig() MCC_CloseAllGroups() MCC_CreateGroup() MCC_UpdateParam()
范例程序
InitSys.cpp
内容说明
本范例说明 group、机构与编码器参数的设定过程。先使用 MCC_SetSysMaxSpeed() 设定进给速度的上限,接着使用 MCC_SetMacParam()与 MCC_SetEncoderConfig()设定 各轴的机构与编码器参数,最后再使用 MCC_CreateGroup()建立一新的 group。
有关 group 使用方式与机构参数更详细的说明请参考”MCS 运动控制函式库使用
手册”。
2
MCS 运动控制函式库范例手册
3. 插值时间调整 相关函式
MCC_InitSystem()
MCC_GetCurPulseStockCount()
范例程序
CheckHWStock.cpp
内容说明
较小的插值时间拥有较佳的运动控制性能,插值时间可设定的最小值为 1ms,但 并非所有 PC 皆适用 1ms 的插值时间,这与 PC 的性能有关。为了获得最适当的插值 时间,可以使用 MCC_GetCurPulseStockCount()读取 MTC 运动控制卡上的 pulse 库存 笔数。在持续运动过程中 pulse 库存笔数必须大于或等于 60,才能保证稳定的运动性 能。若库存笔数出现等于 0 的现象,则必须延长插值时间(插值时间为 MCC_InitSystem() 所需的参数之一)。另外,若人机操作画面的显示出现迟滞的现象,也必须延长插值时 间。
3
MCS 运动控制函式库范例手册
4. 启动与结束运动控制函式库 相关函式
MCC_InitSystem() MCC_CloseSystem() MCC_GetMotionStatus()
范例程序
InitSys.cpp
内容说明
本范例说明在完成 group 参数与机构参数的设定后,使用 MCC_InitSystem()启动 运动控制函式库,所需的参数请参考”MCS 运动控制函式库使用手册”。下面说明范 例的内容。
Step 1:给定控制卡硬件参数
SYS_CARD_CONFIG stCardConfig[MAX_CARD_NUM]; ..
stCardConfig[CARD_INDEX].wCardAddress = BASE_ADDRESS stCardConfig[CARD_INDEX].wCardType stCardConfig[CARD_INDEX].wIRQ_No
= wCardType; = IRQ_NO;
Step 2:启动运动控制函式库
nRet = MCC_InitSystem( INTERPOLATION_TIME, // 插值补间时间设为 10 ms
stCardConfig,
// 硬件参数
// 只使用 1 张 MTC 卡
1);
4
MCS 运动控制函式库范例手册
if (nRet == NO_ERR)// 启动运动控制函式库成功 {
/*
使用者可于此执行其它初始化的动作,例如设定位移单位、进给速度。
}
*/
Step 3:
MCC_CloseSystem()被使用来关闭 MCCL 与驱动程序函式库,两种方式可用来关 闭系统:
i. 全部运动命令执行完成才关闭系统 需检查系统是否处于停止状态,
MCC_GetMotionStatus() 的函式传回值若为 GMS_STOP,则系统处于停止状态。
while ((nRret = MCC_GetMotionStatus(g_nGroupIndex)) != GMS_STOP) {
MCC_TimeDelay(1); // Sleep 1 ms
// 因使用”while’’命令,为避免系统死锁,影响系统的操作 // 需呼叫 MCC_TimeDelay ()释放 CPU 的使用权。
}
MCC_CloseSystem();
// 结束 MCCL 与驱动程序函式库
5
MCS 运动控制函式库范例手册
ii. 直接结束运动控制库
只需呼叫 MCC_CloseSystem()即可,系统将立刻停止运作。
6
MCS 运动控制函式库范例手册
5. 系统状态设定
相关函式
MCC_SetUnit() MCC_GetUnit() MCC_SetAbsolute() MCC_SetIncrease() MCC_Get_CoordType() MCC_SetAccType() MCC_GetAccType() MCC_SetDecType() MCC_GetDecType() MCC_SetPtPAccType() MCC_GetPtPAccType() MCC_SetPtPDecType() MCC_GetPtPDecType() MCC_SetServoOn() MCC_SetServoOff() MCC_EnablePosReady() MCC_DisablePosReady()
范例程序
SetStatus.cpp
内容说明 此范例说明如何改变系统状态。未特别设定系统状态,系统将使用预设状态
运作,
7
MCS 运动控制函式库范例手册
系统的预设状态可参阅”MCS 运动控制函式库参考手册”。下面说明函式的内容。
MCC_SetUnit(UNIT_MM, g_nGroupIndex);
// 使用 mm 为位移量单位
MCC_SetAbsolute(g_nGroupIndex); // 使用绝对坐标型态表示各轴位置
// 使用’T’型曲线为直线、圆弧、圆运动的加速型式
MCC_SetAccType(‘T’, g_nGroupIndex);
// 使用’S’型曲线为直线、圆弧、圆运动的减速型式
MCC_SetDecType(‘S’ , g_nGroupIndex);
// 使用’T’型曲线为点对点运动的加速型式
MCC_SetPtPAccType('T'', 'T', 'T', 'T', 'T', 'T', g_nGroupIndex);
// 使用’S’型曲线为点对点运动的减速型式
MCC_SetPtPDecType('S', 'S', 'S', 'S', 'S', 'S', g_nGroupIndex);
MCC_SetServoOn(0, CARD_INDEX); // 启动第 0 轴伺服系统
// 开启 Position Ready 输出接点功能
MCC_EnablePosReady(CARD_INDEX);
启动伺服系统需呼叫 MCC_SetServoOn() ,系统才能正常运作;是否需呼 叫
8
MCS 运动控制函式库范例手册
MCC_EnablePosReady()视实际情况而定。
9
MCS 运动控制函式库范例手册
6. 读取运动速度、坐标与运动命令信息
相关函式
MCC_GetCurFeedSpeed() MCC_GetFeedSpeed() MCC_GetCurPos() MCC_GetPulsePos() MCC_GetCurCommand() MCC_GetCommandCount()
范例程序
GetStatus.cpp
内容说明
MCC_GetCurFeedSpeed()用来读取目前的进给速度,MCC_GetSpeed()则可以用来 读取目前各轴的进给速度。MCC_GetCurPos()用来读取各轴目前位置之直角坐标值, MCC_GetPulsePos()则用来读取各轴目前位置之马达坐标值(或称为 pulse 坐标值)。直 角坐标值与马达坐标值可以利用机构参数换算而得,也就是马达坐标值 =直角坐标 值 × (dfGearRatio / dfPitch) × dwPPR。使用 MCC_GetCurPos()与 MCC_GetPulsePos() 所读取之各轴坐标值,只有在该轴有实际对应至硬件输出 Channel 时才有意义。
下面为使用范例:
Step 1:宣告变量
double
dfCurPosX, dfCurPosY, dfCurPosZ, dfCurPosU, dfCurPosV, dfCurPosW,
dfCurSpeed;
double dfCurSpeedX, dfCurSpeedY, dfCurSpeedZ, dfCurSpeedU, dfCurSpeedV,
dfCurSpeedW;
10
MCS 运动控制函式库范例手册
long
lCurPulseX, lCurPulseY, lCurPulseZ, lCurPulseU, lCurPulseV, lCurPulseW;
Step 2:读取目前的进给速度
dfCurSpeed = MCC_GetCurFeedSpeed(g_nGroupIndex);
Step 3:读取目前各轴的进给速度
MCC_GetSpeed( &dfCurSpeedX, &dfCurSpeedY, &dfCurSpeedZ,
&dfCurSpeedU, &dfCurSpeedV, &dfCurSpeedW, g_nGroupIndex);
Step 4:读取各轴目前位置之直角坐标值
MCC_GetCurPos( &dfCurPosX, &dfCurPosY, &dfCurPosZ,
&dfCurPosU, &dfCurPosV, &dfCurPosW, g_nGroupIndex);
Step 5:读取各轴目前位置之马达坐标值
MCC_GetPulsePos(&lCurPulseX, &lCurPulseY, &lCurPulseZ,
&lCurPulseU, &lCurPulseV, &lCurPulseW, g_nGroupIndex);
使用 MCC_GetCurCommand()可以获得目前正在执行的运动命令相关的信息,包括运 动 命 令 类 型 、 运 动 命 令 编 码 、 进 给 速 度 、 目 的 点 位 置 坐 标 等 。 使 用 MCC_GetCommandCount()可以获得运动命令缓冲区中库存且尚未执行的运动命令之 数目。
11
MCS 运动控制函式库范例手册
7. 运动状态检视
相关函式
MCC_GetMotionStatus()
范例程序
MotionFinished.cpp
内容说明
利用 MCC_GetMotionStatus()的函式传回值可检视机器目前的运动状态。若函式 传回值为 GMS_RUNNING,表示机器处于运动状态;若函式传回值为 GMS_STOP, 表示机器处于停止状态,运动命令缓冲区中已无命令;若呼叫 MCC_HoldMotion()成 功,此时 MCC_GetMotionStatus()的函式传回值为 GMS_HOLD,表示机器处于暂停状 态 , 仍 有 运 动 命 令 尚 未 执 行 完 成 ; 若 MCC_GetMotionStatus() 的 函 式 传 回 值 为 GMS_DELAYING,表示因呼叫 MCC_DelayMotion(),系统目前处于运动延迟状态。 下面为使用范例:
Step 1:宣告读取运动状态参数
int nStatus;
Step 2:启动伺服
MCC_SetServoOn(0, CARD_INDEX); MCC_SetServoOn(1, CARD_INDEX);
Step 3:直线运动,后执行运动状态读取
MCC_Line(20, 20, 0, 0, 0, 0, g_nGroupIndex);
12
MCS 运动控制函式库范例手册
Step 4:等待 MCC_Line()执行完,产生后 GMS_STOP 后方跳出循环,再继续执行下 面的命令
while (MCC_GetMotionStatus(g_nGroupIndex) != GMS_STOP); {…….}
Step 5:延迟运动命令,此时运动状态为 GMS_DELAYING MCC_DelayMotion(10000); // delay 10000 ms
Step 6:再次运动改变运动状态
MCC_Line(50, 50, 0, 0, 0, 0, g_nGroupIndex);
Step 7:当按下 H 键,运动暂停,状态呈现 GMS_HOLD
nRet = MCC_HoldMotion(g_nGroupIndex);
Step 8:当按下 C 键,将继续未完成之运动,状态呈现 GMS_RUNNING
nRet = MCC_ContiMotion(g_nGroupIndex);
printf(\
13
MCS 运动控制函式库范例手册
8. 加、减速段使用时间设定
相关函式
MCC_SetAccTime() MCC_SetDecTime() MCC_GetAccTime() MCC_GetDecTime() MCC_SetPtPAccTime() MCC_SetPtPDecTime() MCC_GetPtPAccTime() MCC_GetPtPDecTime()
范例程序
AccStep.cpp
内容说明 一般运动(包括直线、圆弧、圆运动)与点对点运动的加、减速时间默认值
为 300
毫秒,但可使用 MCC_SetAccTime()、MCC_SetDecTime()、MCC_SetPtPAccTime()、
MCC_SetPtPDecTime()调整加、减速的时间,使这些运动有较为平顺的加、减速过程。
不同速度应采用不同的加、减速时间。使用 MCCL 时,使用者需自行设计各种速 度下的加、减速时间,适当的加、减速时间会因为使用不同的马达与机构而有所差异。 加、减速时间可以利用下面的公式获得:
运动时的加速时间 = 要求的速度 / 要求的加速度 运动时的减速时间 = 要求的速度 / 要求的减速度
14
MCS 运动控制函式库范例手册
9. 进给速度设定
相关函式
MCC_SetFeedSpeed() MCC_GetFeedSpeed() MCC_SetPtPSpeed() MCC_GetPtPSpeed()
范例程序
SetSpeed.cpp
内容说明 在进行直线、圆弧、圆运动前需先设定进给速度,所设定的进给速度不
应超过
MCC_SetSysMaxSpeed()的设定值。
使用 MCC_SetFeedSpeed()设定直线、圆弧、圆、螺线运动的进给速度,例如呼叫
MCC_SetFeedSpeed (20, g_nGroupIndex) 时,表示进给速度为 20 mm/sec 或 20 inch
/sec,依所使用的单位而定。
使用 MCC_SetPtPSpeed()来设定点对点运动的速度,第一个参数为”各轴最大速度 的百分比再乘以 100”,范围从 0 ~ 100。例如执行 MCC_SetPtPSpeed(50, g_nGroupIndex) 时,表示要求各轴的点对点运动速度为(RPM × Pitch / GearRatio) × 50%。RPM、Pitch、
GearRatio 定义在机构参数中。
15
MCS 运动控制函式库范例手册
10. 直线、圆弧、圆、螺线运动(一般运动) 相关函式
MCC_SetAbsolute() MCC_SetFeedSpeed() MCC_Line() MCC_ArcXY() MCC_CircleXY()
范例程序
GeneralMotion.cpp
内容说明
在完成 group、机构与编码器参数设定、启动系统、设定进给速度的上限、开启 伺服回路(使用步进马达时不需此动作)与设定进给速度后,即可进行直线、圆弧、圆、 螺线运动。在使用圆弧函式时需注意给定的参数是否合理 (起始点、参考点与目的点 等三点的位置不能在同一直在线)。下面为函式使用范例。
Step 1:使用绝对坐标型态表示各轴位置并设定进给速度
MCC_SetAbsolute(g_nGroupIndex); MCC_SetFeedSpeed(10, g_nGroupIndex);
Step 2:执行直线运动命令
MCC_Line(10, 10, 0, 0, 0, 0, g_nGroupIndex);
Step 3:执行圆弧命令,请注意需避免起始点、参考点与目的点在同一直在线
nRet = MCC_ArcXY(10, 20, 20, 20, g_nGroupIndex);
16
MCS 运动控制函式库范例手册
if (nRet != NO_ERR) {
/*
利用传回值了解错误发生的原因,如果参数错误则传回值为 PARAMETER_ERR。
}
*/
可以利用函式的传回值了解错误发生的原因,传回值的意义请参考”MCS 运动控 制函式库参考手册”。行进的轨迹如下图所示。
y (10, 20)
(20, 20) (10, 10) x
(0 , 0 )
Step 3:执行圆命令
MCC_CircleXY(25, 20, 0, g_nGroupIndex);
运动命令的执行过程是运动函式先将运动命令(OP Code)置于各 group 专属的运 动命令缓冲区中,MCCL 再同时从不同 group 的运动命令缓冲区中撷取运动命令依序 执行。这两个动作并不是同步动作,也就是并不需等到前一笔运动命令执行完成,即 可将新的运动命令送到运动命令缓冲区中。
17
MCS 运动控制函式库范例手册
MCC_Line(10, 10, 0, 0, 0, 0, 0) available. MCC_ArcXY(10, 20, 20, 20, 0) MCC_CircleXY(25, 20, 0, 0) P u t O P C ode 1 O P C ode 2 O P C ode 3 E x e c u te
G e t Asynchronization
若运动命令缓冲区已满,则函式的传回值为 COMMAND_BUFFER_FULL_ERR,
此笔运动命令将不被接受。预设每个运动命令缓冲区拥有 10000 个运动命令储存空间。 上图显示对 group 0 运动命令缓冲区的操作过程,可看出属于同一个 group 的运动命 令将被依序执行。
因为各个 group 拥有专属的运动命令缓冲区,因此可同时执行属于不同 group 的
运动命令,更详细的说明请参考”MCS 运动控制函式库使用手册”。
18
MCS 运动控制函式库范例手册
11. 点对点运动
相关函式
MCC_SetAbsolute() MCC_SetPtPSpeed() MCC_PtP()
范例程序
PtPMotion.cpp
内容说明
在完成 group、机构与编码器参数设定、启动系统、设定进给速度的上限、开启 伺服回路(使用步进马达时不需此动作)与设定进给速度后,即可执行点对点运动。下 面为函式使用范例。
Step 1:使用绝对坐标与设定进给速度
MCC_SetAbsolute(g_nGroupIndex); MCC_SetFeedSpeed(20, g_nGroupIndex);
Step 2:设定各轴使用最大速度的 20%运动,也就是(RPM × Pitch / GearRatio) × 20% MCC_SetPtPSpeed(20, g_nGroupIndex);
Step 3:各轴使用不同动的方式运动至(10, 20) MCC_PtP(10, 20, 0, 0, 0, 0, g_nGroupIndex);
点对点运动采用不同动的运动方式,也就是各轴使用各自的速度运动,各轴在同
19
MCS 运动控制函式库范例手册
时启动后并不一定会同时到达目的点,这点与一般运动不同。一般运动使用同动的运 动方式,各轴同时启动后会同时到达目的点。下图为点对点运动的运动轨迹,此时各 轴的速度相同。
y
(10, 20)
(0 , 0 ) x
20
MCS 运动控制函式库范例手册
12. JOG 运动
相关函式
MCC_SetUnit() MCC_JogPulse() MCC_JogSpace() MCC_JogConti()
范例程序
JogMotion.cpp
内容说明
MCC_JogPulse()使用 pulse 为单位,对特定轴进行微动动作,但移动的 pulse 数不 能超过 2048。MCC_JogSpace()使用单位与一般运动相同,对特定轴进行吋动动作。 MCC_JogConti() 则可运动至机构参数所设定的工作区间边界。 MCC_JogSpace() 与 MCC_JogConti()所需的参数包括速度比例,设定方式与点对点运动类似。下面为使用 范例。
Step 1:使用 mm 为位移量单位
MCC_SetUnit(UNIT_MM, g_nGroupIndex); Step 2:使 X 轴移动 100 pulses MCC_JogPulse(0, 100, g_nGroupIndex) ;
Step 3:使用速度为(RPM × Pitch / GearRatio) × 10%,使 X 轴移动 -1mm 距离 MCC_JogSpace(-1, 40, 0, g_nGroupIndex);
Step 4:使用速度为(RPM × Pitch / GearRatio) × 10%,使 X 轴移动至工作区间的右边 界
MCC_JogConti(1, 10, 0, g_nGroupIndex);
21
MCS 运动控制函式库范例手册
13. 定位控制
相关函式
MCC_SetInPosMaxCheckTime() MCC_EnableInPos MCC_SetInPosToleranceEx MCC_GetInPosStatus
范例程序
InPosCheck.cpp
内容说明 本范例程序利用编码器的计數值(实际机台位置)与目标位置之误差,检查每
一个
运动轴是否满足定位确认条件。 当运动命令执行完成将开始检视是否满足定位条
件,若检视时间超过设定值,如
还存在某些运动轴的位置误差无法满足定位条件,则纪錄此现象,并停止执行其它运 动命令。使用者可以强制马达产生误差并观察运作情况。此项功能的使用步骤如下:
Step 1:设定定位确认最长的检查时间,单位ms
MCC_SetInPosMaxCheckTime(1000, g_nGroupIndex);
Step 2:设定定位控制模式
MCC_SetInPosMode( IPM_ONETIME_BLOCK, g_nGroupIndex);
Step 3:设定各轴误差值,单位为 mm 或 inch
MCC_SetInPosToleranceEx(0.5, 0.5, 1000, 1000, 1000, 1000, g_nGroupIndex);
22
MCS 运动控制函式库范例手册
Step 4:启动定位控制功能 MCC_EnableInPos(g_nGroupIndex);
Step 5:读取各轴定位控制状态,正确到位状态为 0xff(255)
MCC_GetInPosStatus(&byInPos0, &byInPos1, &byInPos2, &byInPos3, &byInPos4, &byInPos5, g_nGroupIndex);
Step 6:抓取错误代码
nErrCode = MCC_GetErrorCode(g_nGroupIndex);
23
MCS 运动控制函式库范例手册
14. 原点复归运动
相关函式
MCC_SetHomeConfig() MCC_Home()
MCC_GetGoHomeStatus() MCC_AbortGoHome()
范例程序
GoHome.cpp
内容说明
原点复归的程序将依照原点复归参数中 SYS_HOME_CONFIG 的设定内容,可以 使用 MCC_SetHomeConfig()设定原点复归参数(请参考”MCS 运动控制函式库使用手 册”)。
利用 MCC_GetGoHomeStatus()可获得原点复归程序是否已经完成,另外在原点复 归运动过程中可呼叫 MCC_AbortGoHome()强迫停止原点复归运动。
目前 MCCL 所提供的原点复归功能,一次只能针对一张运动控制卡,如需操作多 张运动控制卡,则需使用 MCC_GetGoHomeStatus()来确定目前进行的原点复归运动已 经完成,才能对下一张运动控制卡呼叫 MCC_Home()进行原点复归的动作。下面为使 用范例:
Step 1:设定原点复归参数
SYS_HOME_CONFIG
stHomeConfig;
stHomeConfig.wMode = 3; //
设定原点复归模式
24
MCS 运动控制函式库范例手册
stHomeConfig.wDirection
= 1;
// //
设定往负方向做原点复归运动Nor mal Open
stHomeConfig.wSensorMode
stHomeConfig.nIndexCount
stHomeConfig.dfAccTime
stHomeConfig.dfDecTime
stHomeConfig.dfHighSpeed
stHomeConfig.dfLowSpeed
stHomeConfig.dfOffset
Step 2:设定原点复归参数
= 0; = 0;
= 300;
// ms
= 300;
// ms
= 10;
// mm/s
= 2;
// mm/s
= 0;
for (WORD wChannel = 0;wChannel < 6;wChannel++)
MCC_SetHomeConfig(&stHomeConfig, wChannel, CARD_INDEX);
Step 3:原点复归,0xff 表示该轴不需进行原点复归动作
MCC_Home(0, 0xff, 0xff, 0xff, 0xff, 0xff, CARD_INDEX);
Step 4:如果有需要可使用此函式,停止原点复归运动
MCC_AbortGoHome();
Step 5:利用函式传回值判断原点复归运动是否已经完成, nStatus 的值若为 1, 表示原 点复归运动已经完成
nStatus = MCC_GetGoHomeStatus();
25
MCS 运动控制函式库范例手册
15. 运动暂停、持续、弃置
相关函式
MCC_ HoldMotion() MCC_ContiMotion() MCC_AbortMotionEx()
范例程序
CtrlMotion.cpp
内容说明
MCC_HoldMotion()用来暂停目前正在执行的运动命令,MCC_ContiMotion()则用 来继续执行被暂停执行的运动命令,因此 MCC_ContiMotion()需与 MCC_HoldMotion() 搭配使用,且需使用在相同的 group 中。MCC_AbortMotionEx()则用来设定减速停止 的时间并弃置被暂停或执行中的运动命令。
目前若无执行中的运动命令,呼叫 MCC_HoldMotion() 时的函式传回值将为 HOLD_ILLGEGAL_ERR ; 先 前 若 呼 叫 MCC_HoldMotion() 不 成 功 , 呼 叫 MCC_ContiMotion()时的函式传回值将为 CONTI_ILLGEGAL_ERR。无论目前运动状 态为何,呼叫 MCC_AbortMotionEx()皆会使运动(减速)停止并清除运动命令缓冲区中 的库存命令。
26
MCS 运动控制函式库范例手册
16. 强迫延迟执行运动命令
相关函式
MCC_InitSystem() MCC_DelayMotion()
范例程序
DelayMotion.cpp
内容说明
可以使用 MCC_DelayMotion()强迫延迟执行下一个运动命令,延迟的时间以 ms 为计时单位;下面的范例中,在执行完第一笔运动命令(Line)后,将延迟 3000 ms,才 会再执行下一笔运动命令。
Step 1:插值时间设为 INTERPOLATION_TIME
nRet = MCC_InitSystem(INTERPOLATION_TIME, stCardConfig, 1);
Step 2:开始运动命令
MCC_Line(10, 10, 0, 0, 0, 0, g_nGroupIndex);
Step 3:延迟 3000 ms 才执行下一笔命令,请观察运动状态
MCC_DelayMotion(3000);
27
MCS 运动控制函式库范例手册
17. 速度强制控制
相关函式
MCC_SetOverrideSpeed() MCC_GetOverrideRate() MCC_OverridePtPSpeed() MCC_GetPtPOverrideRate()
范例程序
OverrideSpeed.cpp
内容说明
MCC_OverrideSpeed()可用来设定直线、圆弧、圆、螺线运动速度强制比例,所 需的参数为更新速度为原来速度之百分比 × 100。MCC_GetOverrideRate()则用来获得 目前的速度强制比例。下面为使用范例。
Step 1:设定直线、圆弧、圆、螺线运动的进给速度为 20 mm/ sec
MCC_SetFeedSpeed(20, g_nGroupIndex); MCC_Line(10, 10, 0 ,0 ,0 ,0 ,0, g_nGroupIndex)
Step 2:设定运动速度强制比例,也就是目前的速度将变为 20 ×150% = 30 mm /sec
MCC_OverSpeed(150, g_nGroupIndex);
Step 3:读取强制比例,dfRate 应等于 150 dfRate = MCC_GetOverrideRate(g_nGroupIndex);
28
MCS 运动控制函式库范例手册
18. 软件过行程检查与硬件极限开关检查
相关函式
MCC_SetOverTravelCheck() MCC_GetOverTravelCheck() MCC_EnableLimitSwitchCheck() MCC_DisableLimitSwitchCheck() MCC_GetLimitSwitchStatus()
范例程序
CheckOT.cpp
内容说明
MCCL 提供软件过行程检查功能(或称为软件极限保护功能),当启动软件过行程 检查功能后,若任一轴的行进范围将超出工作区间,系统将停止运动(并产生一错误记 录)。此时若要使系统恢复正常状态,必须先清除系统中的错误纪录,然后才能往反方 向移动。机构参数中的 dfHighLimit、dfLowLimit 分别用来设定软件左右极限的位置; MCC_SetOverTravelCheck()用来启动与关闭此项功能,MCC_GetOverTravelCheck()则 用来检查目前的设定状态。下面为使用范例。
Step 1:启动 X 轴软件过行程检视功能
MCC_SetOverTravelCheck (1, 0, 0, 0, 0, 0, g_nGroupIndex);
Step 2:OT0 ~ OT5 的值若为 1 表示已设定过行程检查功能,否则为 0 MCC_GetOverTravelCheck( &OT0,
&OT1, &OT2, &OT3, &OT4, &OT5,
g_nGroupIndex);
29
MCS 运动控制函式库范例手册
Step 3:读取可能产生的错误讯息
nErrCode = MCC_GetErrorCode(g_nGroupIndex);
利用 MCC_GetErrorCode()的传回值可判断目前是否因系统位置将超出软件极限 而无法运动(因内部已产生错误记录)。传回值若为 0xF301 ~ 0xF306,则依序代表 X 轴 ~ W 轴出现此种情形,此状况下可依下面范例使系统回复正常状态。
Step 4:清除系统中的错误纪录, 使系统回复正常状态
MCC_ClearError(g_nGroupIndex);
MCCL 也提供硬件极限开关(Limit Switch)检查功能,要使极限开关能正常运作, 除 了 必 须 正 确 设 定 极 限 开 关 的 配 线 方 式 外 , 尚 必 须 呼 叫 MCC_EnableLimitSwitchCheck()
, 如
此
wOverTravelUpSensorMode
与
wOverTravelDownSensorMode 的 设 定 才 能 生 效 。 但 wOverTravelUpSensorMode 与 wOverTravelDownSensorMode 如设定为 2,则呼叫 MCC_EnableLimitSwitchCheck()并 无任何意义。
若使用 MCC_EnableLimitSwitchCheck(1),则只有在碰触到该轴运动方向的极限 开关时(例如往正方向移动且触到正向极限开关,或往负方向移动且碰触到负向极限开 关),才会停止该 Group 之运动;若呼叫 MCC_EnableLimitSwitchCheck(0),则只要碰 触到极限开关(不管行进方向),皆会停止该 Group 之运动。
利用 MCC_GetErrorCode()的传回值可判断目前是否因碰触到极限开关而无法运 动(因内部已产生错误记录)。传回值若为 0xF701 ~ 0xF706,则依序代表 X 轴 ~ W 轴 出现此种情形,此状况下可依下面范例使系统回复正常状态。
30
MCS 运动控制函式库范例手册
a.
若之前呼叫:MCC_EnableLimitSwitchCheck(0)
则:MCC_ClearError() ? MCC_DisableLimitSwitchCheck() ? 反方向退出 Limit
Switch
b. 若之前呼叫:MCC_EnableLimitSwitchCheck(1)
Limit Switch 则:MCC_ClearError() ? 反方向退出
31
MCS 运动控制函式库范例手册
19. 连续运动功能设定
相关函式
MCC_EnableBlend() MCC_DisableBlend() MCC_CheckBlend()
范例程序
SetBlend.cpp
内容说明
Velocity
Velocity
C ommand 1 C ommand 2 C ommand 1 T i m e C ommand 2
T i m e
由图中可以看出开启平滑运动功能后的运动情形,第一笔运动命令在达到等速段 后不经减速段,而直接加速至第二笔运动命令的等速段(如右图之实线所示),如此命 令的执行时间较快,但各笔命令的连接处会有轨迹失真的状况存在。
呼叫 MCC_EnableBlend() 与 MCC_DisableBlend() 可分别开启与关闭速度连续功 能。呼叫 MCC_CheckBlend()则可获得目前的状态设定,若函式传回值为 0,表示已开 启速度连续功能;若函式传回值为 1,则表示此时关闭速度连续功能。
32
MCS 运动控制函式库范例手册
20. 读取与清除错误状态
相关函式
MCC_GetErrorCode() MCC_ClearError()
范例程序
ErrorStatus.cpp
内容说明
系统错误发生后,若已排除错误状况,仍必须呼叫 MCC_ClearError(),来清除系 统中的错误记录,否则无法正常继续执行往后的运动。通常在系统运作中使用者应随 时读取目前的错误代码,以检查在系统运作时是否发生错误。下面为使用范例,另外 也可参阅”软件过行程检查与硬件极限开关检查”此节关于这两个函式的使用方式。
此部分与范例程序不同,使用者可以参考以下写法去处理错误产生。
if (MCC_GetErrorCode(g_nGroupIndex)) {
/*
在此排除错误状况
*/
MCC_ClearError(g_nGroupIndex);// 清除系统中的错误记录
}
33
MCS 运动控制函式库范例手册
21. 齿轮齿隙与间隙补偿
相关函式
MCC_SetCompParam() MCC_UpdateCompParam()
范例程序
Compensate.cpp
内容说明
MCCL 所提供的齿轮齿隙与间隙补偿功能,能弥补机台在传动时因齿轮、螺杆制 造上的缺陷所造成的误差,如齿隙误差、背隙误差,详细的说明请参考”MCS 运动控
制函式库使用手册”。
34
MCS 运动控制函式库范例手册
22. 如何完成 6 轴连续运动
相关函式
MCC_CreateGroup() MCC_SetFeedSpeed() MCC_EnableBlend() MCC_Line()
范例程序
SyncLine.cpp
内容说明
当 1 个 group 已使用 MCC_EnableBlend()开启连续运动功能后(满足路径与速度连 续条件),如多次呼叫 MCC_Line()时,虽能达到 6 轴同动要求(也就是 6 轴同时启动且 同时静止),但只有前 3 轴也就是 X、Y、Z 轴能满足路径与速度连续的条件,而后三 轴也就是 U、V、W 轴仅能满足同动要求。
如需 6 轴同运且满足路径与速度连续的条件,则可使用 2 个 group,第 1 个 group 负责前 3 轴的轨迹规划,而第 2 个 group 负责后三轴的轨迹规划。但为了满足 6 轴同 动要求,第 2 个 group 的速度可使用第 2 个 group 要求移动的距离与第 1 个 group 要 求移动的距离之比值,再乘上第 1 个 group 的进给速度而换算得到。此过程的程序代 码如下,此时使用者需呼叫 fnAsynLine()代替使用 MCC_Line()。
Step 1:宣告 fnSyncLine 函式
void fnSyncLine(double x, double y, double z, double u, double v, double w, double
dfXYZSpeed);
35
MCS 运动控制函式库范例手册
Step 2:设定并使用两个 Groups nt g_nGroupIndex0 = -1; int g_nGroupIndex1 = -1; // set group parameters
MCC_CloseAllGroups();
g_nGroupIndex0 = MCC_CreateGroup(0, 1, 2, -1, -1, -1, CARD_INDEX); if( g_nGroupIndex0 < 0 ) {
printf(\return; }
g_nGroupIndex1 = MCC_CreateGroup(3, 4, 5, -1, -1, -1, CARD_INDEX); if( g_nGroupIndex1 < 0 ) {
printf(\return; }
Step 3:启用平滑运动
MCC_EnableBlend(g_nGroupIndex0); MCC_EnableBlend(g_nGroupIndex1);
Step 4:呼叫 fnSyncLine 函式 fnAsynLine(10, 20, 30, 40, 50, 60, 10); fnAsynLine(40, 50, 60, 10, 20, 30, 10);
36
MCS 运动控制函式库范例手册
Step 5: fnSyncLine 函式定义
void fnSyncLine(double x, double y, double z, double u, double v, double w, double dfXYZSpeed)
{
double dfDistance0, dfDistance1, dfUVWSpeed;
dfDistance0 = x * x + y * y + z * z;
if (dfDistance0 && dfXYZSpeed) {
dfDistance1 = u * u + v * v + w * w; // 换算后三轴应有的速度
dfUVWSpeed = dfXYZSpeed * sqrt(dfDistance1/ dfDistance0);
MCC_SetFeedSpeed(dfXYZSpeed, g_nGroupIndex0);
// 由 group 的定义得知,第 1 个 group(也就是 g_nGroupIndex0)会将此 // 命令由前三轴输出
MCC_Line(x, y, z, 0, 0, 0, g_nGroupIndex0);
MCC_SetFeedSpeed(dfUVWSpeed, g_nGroupIndex1);
// 由 group 的定义得知,第 2 个 group(也就是 g_nGroupIndex1)会将此
// 命令由后三轴输出
MCC_Line(u, v, w, 0, 0, 0, g_nGroupIndex1); }
37
正在阅读:
高考英语作文必背句_ss03-08
新版高考地理优选习题提分练:仿真模拟练(二) Word版含解析12-22
2019年中国微电网技术行业全景调研及行业前景预测报告(定制版)03-05
企事业单位档案管理基础09-19
公卫执业医师资格考试模拟试题02-22
个人自我评价要怎么写通用5篇03-26
干燥过滤器的原理05-11
区间上的二次函数、二次方程和二次不等式08-30
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 范例
- 手册
- 控制
- MCS
- 5.0
- 落地式脚手架搭设验收表
- 纱线疵点的分级
- 人民版历史选修1《欧洲各国的宗教改革》word教案
- 孩子最爱听的40句话
- 贵州化工工程师《基础知识》:相干光获得考试试卷
- 作文学案一 - 审题方法
- 建设美丽校园 新区第二实验小学
- 病理生理学 期末考试练习题(必备)
- 2017年-毛概各章重点复习资料大全
- 大学物理(下)考试题库
- 2018版中国物流装备市场现状调研预测分析报告目录
- 河北工程大学2015-2016学年本科教学质量报告 - 图文
- 教学案例
- 城市管理学小抄(已排版)
- 空调系统毕业设计计算说明书 - 图文
- 2017-2023年中国二手汽车市场运营格局及投资潜力研究预测报告(
- 恒好激光雕刻切割软件操作说明书V6.0 - 图文
- 五年级数学上册用字母表示数专项练习题168
- 班主任工作计划
- 九上《陈涉世家》