




已阅读5页,还剩95页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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 CONFIGstCardConfig MAX CARD NUM stCardConfig CARD INDEX wCardAddress BASE ADDRESS stCardConfig CARD INDEX wCardType wCardType stCardConfig CARD INDEX wIRQ No IRQ NO Step 2 启动运动控制函式库 nRet MCC InitSystem INTERPOLATION TIME 插值补间时间设为 10 ms stCardConfig 硬件参数 1 只使用 1 张 MTC 卡 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 宣告变量 doubledfCurPosX dfCurPosY dfCurPosZ dfCurPosU dfCurPosV dfCurPosW dfCurSpeed doubledfCurSpeedX dfCurSpeedY dfCurSpeedZ dfCurSpeedU dfCurSpeedV dfCurSpeedW 10 MCS 运动控制函式库范例手册 longlCurPulseX lCurPulseY lCurPulseZ lCurPulseU lCurPulseV lCurPulseW Step 2 读取目前的进给速度 dfCurSpeed MCC GetCurFeedSpeed g nGroupIndex Step 3 读取目前各轴的进给速度 MCC GetSpeed Step 4 读取各轴目前位置之直角坐标值 MCC GetCurPos Step 5 读取各轴目前位置之马达坐标值 MCC GetPulsePos 使用 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 Motion status d r status 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 0 0 x 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 MCC ArcXY 10 20 20 20 0 MCC CircleXY 25 20 0 0 available O P C ode 1 O P C ode 2 O P C ode 3 E x e c u te P u tG 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 读取各轴定位控制状态 正确到位状态为 0 xff 255 MCC GetInPosStatus 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 CONFIGstHomeConfig stHomeConfig wMode 3 设定原点复归模式 24 stHomeConfig wDirection 1 设定 NorstHomeConfig wSensorMode 0 stHomeConfig nIndexCount 0 stHomeConfig dfAccTime 300 ms stHomeConfig dfDecTime 300 ms stHomeConfig dfHighSpeed 10 mm s stHomeConfig dfLowSpeed 2 mm s stHomeConfig dfOffset Step 2 设定原点复归参数 0 MCS 运动控制函式库范例手册 往负方向做原点复归运动 mal Open for WORD wChannel 0 wChannel 6 wChannel MCC SetHomeConfig Step 3 原点复归 0 xff 表示该轴不需进行原点复归动作 MCC Home 0 0 xff 0 xff 0 xff 0 xff 0 xff 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 29 MCS 运动控制函式库范例手册 Step 3 读取可能产生的错误讯息 nErrCode MCC GetErrorCode g nGroupIndex 利用 MCC GetErrorCode 的传回值可判断目前是否因系统位置将超出软件极限 而无法运动 因内部已产生错误记录 传回值若为 0 xF301 0 xF306 则依序代表 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 的传回值可判断目前是否因碰触到极限开关而无法运 动 因内部已产生错误记录 传回值若为 0 xF701 0 xF706 则依序代表 X 轴 W 轴 出现此种情形 此状况下可依下面范例使系统回复正常状态 30 MCS 运动控制函式库范例手册 a 若之前呼叫 MCC EnableLimitSwitchCheck 0 则 MCC ClearError MCC DisableLimitSwitchCheck 反方向退出 Limit Switch b 若之前呼叫 MCC EnableLimitSwitchCheck 1 则 MCC ClearError 反方向退出 Limit Switch 31 MCS 运动控制函式库范例手册 19 连续运动功能设定 相关函式 MCC EnableBlend MCC DisableBlend MCC CheckBlend 范例程序 SetBlend cpp 内容说明 VelocityVelocity C ommand 1 C ommand 2 C ommand 1 C ommand 2 T i m eT 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 Groups create error n n return g nGroupIndex1 MCC CreateGroup 3 4 5 1 1 1 CARD INDEX if g nGroupIndex1 COMP0 判断是否因第 0 个 channel 的比较条件成立而触 发 放弃目前正在执行与运动缓冲区中所有的运动命令 MCC AbortMotionEx 0 g nGroupIndex ENC ISR MCC DisableENCCompTrigger CHANNEL INDEX 关闭计数值触发中断功 能 上面的范例显示在开启编码器计数值触发中断服务函式功能后 将进行直线运 动 待 编 码 器 的 计 数 术 值 等 于 20000 pulses 时 将 停 止 未 完 成 的 直 线 运 动 MCC AbortMotionEx 第一参数设为 0 使减速时间为零 可以让停止后编码器位置接 近 20000 40 MCS 运动控制函式库范例手册 24 闩锁 Latch 编码器计数值与 INDEX 讯号触发中断服务函式功能 相关函式 MCC SetENCRoutineEx MCC GetENCValue MCC SetENCLatchType MCC SetENCLatchSource MCC EnableENCIndexTrigger 范例程序 GetENCLatch cpp 内容说明 MCCL所 提 供 的 闩 锁 Latch 编 码 器 计 数 值 功 能 可 使 用 MCC SetENCLatchSource 指定触发条件 来源 在满足触发条件与闩锁模式后 使用 MCC SetENCLatchType 设定触发模式 可将编码器的计数值纪录在闩锁缓存器内 使用 MCC GetENCLatchValue 可以读取闩锁缓存器内的纪录值 下面为使用范例 Step 1 设定编码器计数值闩锁模式 ENC TRIG FIRST第一次满足触发条件即 latch 计数值不再变动 ENC TRIG LAST触发条件满足时即 latch 计数值且随条件一再满足即一再 latch 新的计数值 MCC SetENCLatchType ENC TRIG LAST CHANNEL INDEX CARD INDEX Step 2 设定编码器触发源 共有 15 种触发来源 条件 可做为闩锁计数值的条件 设 定时可同时取多个条件的联集 此时选取编码器 index 讯号为触发来源 条件 MCC SetENCLatchSource ENC TRIG INDEX0 CHANNEL INDEX CARD INDEX 41 MCS 运动控制函式库范例手册 由上面的范例可以看出使用编码器 INDEX 讯号做为触发来源 条件 为了在编码 器 INDEX 讯号发生后 立即使用 MCC GetENCLatchValue 读取闩锁缓存器内的纪 录值 可以使用编码器 INDEX 讯号触发中断函式功能 要使用此项功能首先需串接 自订的中断服务函式并开启 Step 3 宣告中断服务函式 void stdcall ENC ISR Function ENCINT EX pstINTSource Step 3 串接中断服务函式 MCC SetENCRoutineEx ENC ISR Function CARD INDEX Step 4 开启编码器 index 讯号触发中断服务函式功能 MCC EnableENCIndexTrigger CHANNEL INDEX CARD INDEX Step 4 定义中断服务例程 void stdcall ENC ISR Function ENCINT EX pstINTSource if pstINTSource INDEX0 判断是否由 INDEX 讯号所触发 读取闩锁缓存器内的纪录值 MCC GetENCLatchValue 更详细的说明请参考 MCS 运动控制函式库使用手册 42 MCS 运动控制函式库范例手册 25 近端接点 Local I O 讯号控制与触发中断服务函式功能 相关函式 MCC SetServoOn MCC SetServoOff MCC EnablePosReady MCC DisablePosReady MCC EnablePosReady MCC GetLimitSwitchStatus MCC GetHomeSensorStatus MCC SetLIORoutineEx MCC SetLIOTriggerType MCC EnableLIOTrigger 范例程序 LIOTrigger cpp 内容说明 MCCL 提供对近端接点 Local I O 包括 servo on off position ready 输出讯号的控 制函式 另外也提供对 home sensor 与 hardware limit switch 输入讯号的检视函式 某些极限开关输入接点的讯号能触发使用者自订的中断服务函式 可以触发中断 服务函式的极限开关包括 a MTC 601 605 6000 6005 共 7 点 Channel 0 Limit Switch Channel 1 Limit Switch Channel 2 Limit Switch 43 MCS 运动控制函式库范例手册 Channel 3 Limit Switch Channel 4 Limit Switch Channel 5 Limit Switch Channel 1 Lim
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农业银行2025资阳市笔试英文行测高频题含答案
- 交通银行2025本溪市秋招笔试专业知识题专练及答案
- 建设银行2025九江市秋招无领导模拟题角色攻略
- 工商银行2025周口市秋招英文面试题库及高分回答
- 交通银行2025渭南市秋招笔试价值观测评题专练及答案
- 邮储银行2025乌兰察布市秋招无领导小组面试案例题库
- 建设银行2025黄南藏族自治州信息科技岗笔试题及答案
- 农业银行2025合肥市秋招笔试热点题型专练及答案
- 班组建安全和培训课件
- 中国银行2025松原市秋招笔试创新题型专练及答案
- 新人教版高一语文必修1第一单元测试试卷及答案
- 《电化学储能电站消防验收规范》
- 2024秋新人教版物理8年级上册教学课件 1.1 长度和时间的测量
- 化学专业职业生涯规划书
- 合规岗位招聘笔试题及解答2025年
- 癌症的预防与治疗
- 《特种设备重大事故隐患判定标准》培训
- 2024-2025学年广东省广州四中教育集团九年级(上)月考语文试卷
- 大学英语四级考试阅读理解真题及答案详解(全套)
- 国家电网公司招聘高校毕业生应聘登记表
- 工程预决算书
评论
0/150
提交评论