运动控制卡说明书.doc_第1页
运动控制卡说明书.doc_第2页
运动控制卡说明书.doc_第3页
运动控制卡说明书.doc_第4页
运动控制卡说明书.doc_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一章 概述1.1 PCI_SERVO4四轴运控卡的软硬件简介PCI_SERVO4四轴运控卡是基于PC机PCI总线的步进电机或数字式伺服电机的上位控制单元,它与PC机构成主从式控制结构:PC机负责人机交互界面的管理和控制系统的实时监控等方面的工作(例如键盘和鼠标的管理、系统状态的显示、控制指令的发送、外部信号的监控等等);该卡完成运动控制的所有细节(包括脉冲和方向信号的输出、自动升降速的处理、原点和限位等信号的检测等等)。每块该卡可控制4轴步进电机或数字式伺服电机,并支持多卡共用,以实现多于四个运动轴的控制;每轴均可输出脉冲和方向信号,以控制电机的运转;同时,可外接原点、减速、限位等开关信号,以实现回原点、保护等功能,这些开关信号由该卡自动检测并作出反应。另外,该卡还提供了适用于伺服系统的伺服使能和偏差清零信号接口,以及供用户使用的通用I/O接口。该卡采用先进的专用控制芯片,具有梯形及S形升降速曲线,最高输出频率可达4MHz,带有编码器反馈端口,主要适用于数字式交流伺服系统或闭环的步进电机控制系统。该卡配备了功能强大、内容丰富的运动控制驱动软件工具。该卡在插补算法和运动函数的执行效率方面采用了更有效的方法,提高了插补精度、插补速度和实时性。这些软件工具主要分为示范软件和运动函数库两大类。利用PCI_SERVO4的示范软件既可以很快地熟悉该卡的软、硬件功能,又可以方便快捷地测试执行电机及驱动系统在完成各种运动时的性能特性。该卡运动函数库用于二次开发,用户只要用VC或Visual Basic等支持DLL调用的开发工具编制所需的用户界面程序,并把它与该卡运动库链接起来,就可以开发出自己的控制系统,例如:数控系统、检测设备、自动生产线等。该卡的运动函数库能够完成与运动控制有关的复杂细节(比如:升降速、直线插补、圆弧插补等),这样就可以大大缩短控制系统的开发周期。1.2PCI_SERVO4的结构PCI_SERVO4控制卡作为开发运动控制系统的平台,其结构是开放式的。该卡插在PC机PCI扩展槽内使用,同时使用控制卡的数量和各卡上的控制轴数可方便地配置;PCI_SERVO4卡提供了功能强大的运动控制函数库,并可以充分利用PC机现有的资源来开发完美的运动控制系统。PCI_SERVO4控制卡的结构示意图如下:1.3PCI_SERVO4的技术特性和使用范围PCI_SERVO4控制卡主要特征有:开放式结构、使用简便、功能丰富、可靠性高等。PCI_SERVO4的特征体现在硬件和软件两个方面:在硬件方面采用PC机的PCI总线方式,适用范围广,卡上无需进行任何跳线设置,所有资源自动配置,在Windows98及Windows2000操作系统中支持即插即用,使用非常方便;PCI_SERVO4的接线方式采用SISC型插头,可使用屏蔽线缆,并且所有的输入、输出信号均用光电隔离,提高了控制卡的可靠性和抗干扰能力;在软件方面提供了丰富的运动控制函数库,以满足不同的应用要求。用户只需根据控制系统的要求编制人机界面,并调用PCI_SERVO4运动函数库中的指令函数,就可以开发出既满足要求又成本低廉的多轴运动控制系统。PCI_SERVO4的技术指标主要有:1. 运动方式 单轴独立运动,速度控制,加速度控制,加速度率控制,任意三轴高精度插补联动,位插补模式运动。 可编程S曲线运动模式,实现平滑的运动过程。 可编程的梯形曲线运动模式,实现高精度的位置控制。 具有捕获原位的功能,实现高精度的位置锁存。2. 输入输出 4路脉冲/方向或正脉冲/负脉冲信号输出接口,速度最高为4MHz。 4路光电隔离驱动器使能信号输出接口。 4路光电编码器信号接口,32位计数器,光电隔离施密特缓冲输入。 8路光电隔离限位开关信号输入接口。 4路光电隔离原位信号输入接口。 4路光电隔离驱动器报警信号输入接口。 4路光电隔离驱动器到位信号输入接口。 8路通用输入接口。 8路通用输出接口。3. 抗干扰措施 四轴电源相互独立 信号输入输出光电隔离4. 通讯方式 标准PCI总线通讯方式5. 系统软件 用户接口函数库 Windows XP设备驱动程序 用户示例程序PCI_SERVO4正是由于PCI_SERVO4的开放式结构,使之应用范围十分广泛,在由步进电机和数字式伺服电机组成的基于PC机的运动控制系统中,都可以使用PCI_SERVO4作为核心控制单元,例如:l 数控机床、加工中心、机器人等;l X-Y-Z控制台;l 绘图仪、雕刻机、印刷机械;l 送料装置、云台;l 打标机、绕线机;l 医疗设备;l 包装机械、纺织机械;等等。1.4PCI_SERVO4的运动控制功能PCI_SERVO4控制卡的运动控制功能主要取决于运动函数库。运动函数库为单轴及多轴的步进或伺服控制提供了许多运动函数:单轴运动、多轴独立运动、多轴插补运动等等。1.4.1单轴运动控制1.4.2多轴独立运动控制1.4.3多轴插补运动控制1.4.4光码盘反馈和其它能力第二章控制卡的安装2.1 硬件安装PCI_SERVO4控制卡对PC机的硬件要求十分简单:能安装Windows2000及以上操作系统,并带有PCI插槽的486以上机型即可,建议使用更高主频的Pentium及以上机型以获取更好的性能。为了整个控制系统的可靠性,建议使用工控PC机。PCI_SERVO4卡基于PCI总线,因此卡上无需进行跳线设置。为了保证安全,插卡时应按照下列步骤操作:1) 关PC机,并切断电源;2) 打开PC机箱,选择未用的扩展槽,并插入PCI_SERVO4控制卡;3) 固定PCI_SERVO4控制卡,并盖好PC机;4) 连接PCI_SERVO4与电机驱动器等;5) 接上电源,并启动PC机。2.2软件安装2.2.1驱动程序安装和使用插入运动控制卡,启动电脑,进入操作系统后,计算机提示找到新硬件,如果没有提示则打开设备管理器,右键选择“扫描硬件改动”,扫描后会提示找到新硬件,按要求加载安装信息文件和驱动程序,根据提信息,打开驱动文件所在的文件夹,找到所编制的安装文件Pci9052.inf,然后根据安装文件提供的驱动序信息,系统自动安装驱动程序Pci9052.sys。安装后重新启动系统,所安装的驱动程序便可以正常的工作了。驱动的使用方法可以参考示例程序。2.2.2运动函数库安装和使用可以参考4.1.2章的DLL的显示链接和示例程序。2.3 PCI_SERVO4接口PCI_SERVO4控制卡采用100芯SISC接口,外接线可采用屏蔽线缆,以提高控制卡的抗干扰能力。其中开关量信号(原点、减速、限位以及I/O信号等)采用5DCV光电隔离;脉冲量信号(脉冲、方向、编码器反馈等)采用5DCV高速光电隔离。2.3.1信号接口定义PCI_SERVO4卡SISC100的接口定义为:编号名称定 义ZH编号名称定 义51EX5VXX轴+5V外部电源正50EX5VXX轴+5V外部电源正52GNDXX轴+5V外部电源地49GNDXX轴+5V外部电源地53SDIRXX轴方向输出48XALRMX轴报警输入54SDATAXX轴脉冲输出47XLMTPX轴正向限位输入55XENABLEX轴使能输出46XLMTMX轴负向限位输入56XINPOSX轴到位信号输入45XORGIN回原点57XSTATEX轴的准备状态44XENCAX轴编码器A/脉冲+入58NC43XENCBX轴编码器B/脉冲-入59EX5VYY轴+5V外部电源正42EX5VYY轴+5V外部电源正60GNDYY轴+5V外部电源地41GNDYY轴+5V外部电源地61SDIRYY轴方向输出40YALARMY轴报警输入62SDATAYY轴脉冲输出39YLMTPY轴正向限位输入63YENABLEY轴使能输出38YLMTMY轴负向限位输入64YINPOSY轴到位信号输入37YORGIN65YSTATE36YENCAY轴编码器A/脉冲+入66NC35YENCBY轴编码器B/脉冲-入67OS1通用输出(与OS2构成开关型输出)34OS2通用输出(与OS1构成开关型输出)68OS3通用输出(与OS4)33OS4通用输出(与OS3)69OS5通用输出(与OS6)32OS6通用输出(与OS5)70OS7通用输出(与OS8)31OS8通用输出(与OS7)71OS9通用输出(与OS10)30OS10通用输出(与OS9)72OS11通用输出(与OS12)29OS12通用输出(与OS11)73OS13通用输出(与OS14)28OS14通用输出(与OS13)74OS15通用输出(与OS16)27OS16通用输出(与OS15)75NC26NC76IOINP2通用输入2+25IOINP1通用输入1+77IOINN2通用输入2-24IOINN1通用输入1-78IOINP4通用输入4+23IOINP3通用输入3+79IOINN4通用输入4-22IOINN3通用输入3-80IOINP6通用输入6+21IOINP5通用输入5+81IOINN6通用输入6-20IOINN5通用输入5-82IOINP8通用输入8+19IOINP7通用输入7+83IOINN8通用输入8-18IOINN7通用输入7-84NC17NC85EX5VZZ轴+5V外部电源正16EX5VZZ轴+5V外部电源正86GNDZZ轴+5V外部电源地15GNDZZ轴+5V外部电源地87SDIRZZ轴方向输出14ZALARMZ轴报警输入88SDATAZZ轴脉冲输出13ZLMTPZ轴正向限位输入89ZENABLEZ轴使能输出12ZLMTMZ轴负向限位输入90ZINPOSZ轴到位信号输入11ZORGIN91ZSTATE10ZENCAZ轴编码器A/脉冲+入92NC9ZENCBZ轴编码器B/脉冲-入93EX5VUU轴+5V外部电源正8EX5VUU轴+5V外部电源正94GNDUU轴+5V外部电源地7GNDUU轴+5V外部电源地95SDIRUU轴方向输出6UALRMU轴报警输入96SDATAUU轴脉冲输出5ULMTMU轴正向限位输入97UENABLEU轴使能输出4UORGINU轴负向限位输入98UINPOSU轴到位信号输入3UORGIN99USTATE2UENCAU轴编码器A/脉冲+入100NC1UENCBU轴编码器B/脉冲-入注:NC为空连接红色标记的nINPOS(X Y Z U)硬件连接有错,它和nState共用了一条线2.3.2接线方法接线方法可以参看电路图。第三章运动控制系统的开发3.1开发Windows下的运动控制系统利用PCI_SERVO4的动态链接库(DLL),开发者可以很快开发出Windows平台下的运动控制系统。PCI_SERVO4动态链接库是标准的Windows 32位动态链接库,选用的开发工具应支持Windows标准的32位DLL调用。以下介绍如何利用两种常用的开发工具Microsoft Visual Basic和Microsoft Visual C+开发基于Windows平台的运动控制程序3.1.1开发Visual Basic控制程序1. 概述2. 动态链接库函数调用方法3. 演示示例程序的使用3.1.2用Visual C+开发控制程序1. 开发环境用户可以使用VC6.0或更高版本,来进行Windows平台下运动控制系统开发。2. 动态链接库函数调用方法在VC中调用动态链接库DLL中函数有两种方法:1) 隐式调用隐式调用需要如下文件: DLL函数声明头文件PCI_SERVO4.h; 编译连接时用的导入库文件PCI_SERVO4.lib; 动态链接库文件PCI_SERVO4.dll; 设备驱动程序PCI_SERVO4.sys;注:对于以上的调用方法可以参考MFC中关于对DLL调用的那一章2) 显式调用显式调用只需要如下文件: 动态链接库文件PCI_SERVO4.dll; 设备驱动程序PCI_SERVO4.sys。显式链接是应用程序在执行过程中随时可以加载DLL文件,也可以随时卸载DLL文件,这是隐式链接所无法做到的,所以显式链接具有更好的灵活性。它需要调用Windows API函数加载和释放动态链接库。方法如下: 调用Windows API函数LoadLibrary动态加载DLL; 调用Windows API函数GetProcAddress取得将要调用的DLL中函数的指针; 用函数指针调用DLL中函数完成相应功能; 在程序结束时或不再使用DLL中函数时,调用Windows API函数FreeLibrary()释放动态链接库。如下是通过显式链接调用pci_servo4.dll中的Pmove1函数的例子:typedef int (*Pmove1_d)(int ch,long ldata); HINSTANCE hDLL;Pmove1_d Pmove1;hDLL =LoadLibrary(pci_servo4.dll);/加载动态链接库pci_servo4.dll文件;Pmove1= (Pmove1 _d )GetProcAddress(hDLL, Pmove1);/获得pci_servo4.dll中函数Pmove1的指针Pmove1(chx,1000);/执行Pmove1函数FreeLibrary(hDLL);/卸载pci_servo4.dll文件在例子中使用类型定义关键字typedef,定义指向和pci_servo4.dll中相同的函数原型指针,然后通过LoadLibray将pci_servo4.dll加载到当前的应用程序中并返回当前pci_servo4.dll文件的句柄,然后通过GetProcAddress函数获取导入到应用程序中的函数指针,函数调用完毕后,使用FreeLibrary卸载pci_servo4.dll文件。注:以上在两种方法均为VC中调用动态链接库函数的标准方法,若要获得更具体的调用方法和帮助,请参考微软Visual Stutio开发文档MSDN或相关VC参考书籍中相应部分内容。3. 演示示例程序的使用参看演示程序。3.2运动函数库中函数的说明3.2.1初始化函数、轴设置函数与其设置量获得函数1) bool init(void)目 的:打开板卡获得句柄语 法:bool init();调用例子:init();返 回 值:如果成功返回0,否则返回1;注 释:打开板卡获得句柄,如果没有插卡或没有正确安装驱动,提示“设备打不开!” 2) void reset()/*复位板卡*/目 的:复位板卡语 法:void reset();调用例子:reset();返 回 值:无3) int Init_Board()/*初始化板卡*/目 的:Init_Board函数主要初始化控制卡的各个寄存器、各轴的脉冲输出模式(脉冲/方向或者双脉冲,脉冲逻辑)、常速度(2000pps)、梯形速度(初速2000pps,高速8000pps,加减速12500ppss)等等。该函数在程序中只能调用一次。语 法:int Init_Board();调用例子:Init_Board();返 回 值:如果调用成功,函数返回0,失败返回1。注 释:如果不调用Init_Board函数初始化,控制卡将不能正常工作。若需改变脉冲输出模式、速度等初始化数据,可调用其它函数来修改。4) void set_r(int ch,int udata)/*设置倍率*/目 的:设置各轴的倍率,因为寄存器的位长所致,速度,加速度等的值在一个范围,比如速度v范围(0-8000pps),如果想范围达到(0-80000),则倍率应至少设为10.语 法:void set_r(int ch,int udata)/;调用例子:set_r(chx,10);/*将x轴的倍率设定为10.(chx=1);描 述:初始化后倍率为1.如果想改变某个轴的倍率,调用它就可以了.如果ch=0xf,则是一起设置四个轴的倍率。返 回 值:无.5) int get_r(int ch)/*获得某个轴的倍率*/目 的:获得某个轴的倍率.调用例子:int r=get_r(chx);/chx=16) void set_lp(int ch,unsigned long ldata) 附1目 的:设置逻辑寄存器的值。调用例子:set_lp(chx,0);/chx=1,设置当前逻辑位置为0描 述:设置逻辑寄存器的值,即逻辑上某个轴所在的位置,如果ch=0xf则为同时设置四个轴, ldata的范围是(-2,147,483,648+2,147,483,647)返 回 值:无.注 释:在运行中每输出一个脉冲,逻辑寄存器就加1,这里设置逻辑寄存器实际上就是设置逻辑寄存器的基数。7) long get_lp(int ch) 目 的: 获得逻辑寄存器的值调用例子:long lp=get_lp(chx)/chx=1描 述:获得逻辑寄存器的值,即逻辑上某个轴所在的位置返 回 值:逻辑上某个轴所在位置的值8) void set_ep(int ch,unsigned long ldata) 附1目 的: 设置实际位置寄存器。调用例子:set_ep(chx,0)/chx=1,设置当前实际位置为0描 述:设置实际位置寄存器,既某个轴所在的位置,如果chx=0xf则为同时设为四个轴,ldata的范围是(-2,147,483,648+2,147,483,647)返 回 值:无注 释:在运行中,运动卡接收到编码器一个脉冲,实际寄存器(EP)就加1,这里设置实际位置寄存器实际上就是设置寄存器的基数。运行中可以选择逻辑寄存器(LP)或者实际位置寄存器(EP)与限位寄存器(COMP+/COMP-)比较来限定位置。9) long get_ep(int ch)目 的: 获得实际寄存器的值调用例子:long ep=get_ep(chx)/chx=1描 述:获得实际寄存器的值。返 回 值:实际寄存器的值10) void set_cp(int ch,unsigned long ldata) 附1目 的: 设置正向比较寄存器COMP+的值.调用例子: (chx,1000)/chx=1,设定正相限位为1000,正相输出1000个脉冲后停止描 述:设置正向比较寄存器COMP+的值,作为正方向的软件限位,在运行中也可以改写COMP+的值返 回 值:无注 释:执行函数set_SLMT来使能软件限位,调用函数set_CMPEP或set_CMPLP来确定与COMP+比较的是实际位置还是逻辑位置。Ldata范围(-2,147,483,648-2,147,483,647)。执行clr_SLMT取消软件限位,本函数失效。11) long get_cp(int ch) 目 的: 读取正向比较寄存器的限位值调用例子:long cp=get_cp(chx)/chx=1描 述:ch为轴号,取值为1,2,3,4。返 回 值:正向比较寄存器的值12) void set_cm(int ch,unsigned long ldata) 附1目 的: 设置负向比较寄存器COMP-的值调用例子:set_cm(chx,-1000);/chx=1;描 述:设置负向比较寄存器COMP-的值,作为负方向的软件限位,在运行中也可以改写COMP-的值返 回 值:无注 释:执行函数set_SLMT来使能软件限位,调用函数set_CMPEP或set_CMPLP来确定与COMP-比较的是实际位置还是逻辑位置。Ldata范围(-2,147,483,648-2,147,483,647)。执行clr_SLMT取消软件限位,本函数失效。13) long get_cm(int ch)目 的: 读取负向比较寄存器的限位值调用例子:long cm=get_cm(chx);/描 述:ch为轴号,取值为1,2,3,4。返 回 值:负向比较寄存器的限位值14) void set_sv(int ch,long ldata)目 的: 设置初始速度或者是定速驱动中的速度SV调用例子:set_sv(chx,1000);/chx=1,sv=1000描 述:ch为轴号,取值为1,2,3,4,0xf。如果ch=0xf ,则同时设定四个轴,ldata:参数值返 回 值:无注 释:在倍率为1(set_r(chx,1)的时候,ldata的范围是0-8000. ldata的范围是倍率为1的范围乘以倍率,如:倍率为5的时候,ldata的范围为0-40000(5*8000).15) unsigned long get_sv(int ch)目 的:获得所设置初始速度调用例子:unsigned long uldata=get_sv(chx);/chx=1描 述:获得某个轴的初始速度.返 回 值:某个轴的所设置的初始速度注 释:它是某个轴的所设置的初始速度值,并非是正在运行时的速度,察看运行时的速度是函数get_v16) void set_a(int ch,long ldata)目 的: 设置加速度参数A调用例子:set_a(chx,8000)/chx=1,ldata=8000描 述:ch为轴号,取值为1,2,3,4,0xf。如果ch=0xf ,则同时设定四个轴,ldata:参数值返 回 值:无注 释:在倍率为1(set_r(chx,1)的时候,ldata的范围是0-8000. ldata的范围是倍率为1的范围乘以倍率,如:倍率为5的时候,ldata的范围为0-40000(5*8000).17) unsigned long get_a(int ch)目 的:读取当前运行中当前的加速度调用例子:unsigned long a=get_a(chx);/chx=1描 述:返 回 值:当前运行中当前的加速度18) void set_d(int ch,long ldata)目 的: 设置减加速度D调用例子:set_d(chx,8000);/chx=1,ldata=8000描 述:ch为轴号,取值为1,2,3,4,0xf。如果ch=0xf ,则同时设定四个轴,ldata:参数值返 回 值:无注 释:如果设定手动减速则需要设定减加速度,否则减加速度等于加速度值.倍率问题同上.19) unsigned long get_d(int ch)目 的: 读取当前运行中当前的减加速度调用例子:unsigned long d=get_d(chx);/chx=1描 述:ch为轴号返 回 值:减加速度值d20) void set_k(int ch,long ldata)目 的:设定在轴运行在S曲线加减速过程中的加速度率的值k,调用例子:set_k(chx,1000);/chx=1,ldata=1000描 述:ch为轴号,取值为1,2,3,4,0xf。如果ch=0xf ,则同时设定四个轴,如果ch=0xf,则为同时设定四个轴返 回 值:无注 释:k=62.5e6*SD.Rch /ldata; 1/k为加速度率,所以ldata与加速度率成正比关系的,在倍率为1时,为最小请设为1000;最大不超过62.5e6;.21) unsigned long get_k(int ch)目 的:获得加速度率调用例子:unsigned long k=get_k(chx);/chx=1;描 述:获得此轴的加速度率返 回 值:加速度率k22) void set_ao(int ch,int shift_pulse)目 的: 设置拖拽输出的点数调用例子:set_ao(chx,100);/chx=1,shift_pulse=100描 述:ch为轴号,取值为1,2,3,4,0xf。如果ch=0xf ,则同时设定四个轴,shiift_pulse 拖拽点数,如果ch=0xf则为同时设定四个轴。返 回 值:无注 释:所谓拖拽点数就是当进行快速运动时,减速到初始速度后剩余未输出的点数,以初始速度值完成剩余的点数的输出。23) int get_ao(int ch)目 的:获得所设定的拖拽点数调用例子:int ao=get_ao(chx);/chx=1;描 述:返 回 值:拖拽点数24) void set_v(int ch,long ldata)目 的: 设置运行速度调用例子:set_v(chx,8000);/chx=1,ldata=8000;描 述:ch为轴号,取值为1,2,3,4,0xf。如果ch=0xf ,则同时设定四个轴,ldata:运动速度,速度大小为ldata倍率返 回 值:无25) unsigned long get_v(int ch)目 的:读取当前运行的速度调用例子:unsigned long v=get_v(chx);/chx=1.描 述:返 回 值:当前运行的速度26) void set_curve(int ch,int mode)目 的:设置快速运动曲线的类型调用例子:set_curve( chx,0);/chx=1,mode=0描 述:ch为轴号,取值为1,2,3,4,0xf。如果ch=0xf则为同时对四个轴的设定。mode是运动曲线形状,mode=0为梯形加速曲线,mode=1为s行加速运动曲线。mode为其他值时为无效的设定,运动曲线为最后一次设定的值。返 回 值:无注 释:3.2.2运动指令函数3.2.2.1单轴运动函数单轴运动是指各轴的运动之间没有联动关系,可以是单个轴运动,也可以是多个轴同时按各自的速度运动。点位运动、连续运动和回原位运动都属于单轴运动。单轴运动可以分为点位运动和连续运动。在点位运动中可以设置轴的运动曲线,按照事先设置好的运动数据(初速度、加速度、减速度、加速度率、最高速度、运动距离)和选择运动曲线模式(梯形曲线、S型曲线,见图2-3),自动的计算出加速点和减速点,快速而柔和的到达终点,也可以选择以一定的速度匀速到达终点;连续运动是指被控轴以各自的速度按给定的方向一直运动,直到碰到限位开关或调用制动函数才会停止,连续运动可以选择起始速度曲线(恒速曲线、梯形加速曲线、S型加速曲线);回原位运动是指被控轴以各自的速度按给定的方向一直运动,直到碰到原位信号、限位开关信号或调用制动函数才会停止。27) void pmove1(int ch,unsigned long ldata)目 的:单个轴定长运动调用例子:pmove(chx,1000);/chx 向正向输出1000个脉冲描 述:ch为轴号,取值为1,2,3,4。ldata为运动长度,它为正时输出正方向脉冲,为负时输出负方向脉冲。此轴做常速运动还是快速运动与设定的初始速度(sv),运行速度(v),加速度(a),加速度率(k),减速度(d),以及曲线的类型设定等有关。例如:如果要常速运行可以设定sv=v就可以了。如果想快速运行,则要设定好sv,v,a,k,set_curve等.例如:set_sv(chx,1000) set_v(chx,1000)pmove(chx,2000)以上程序为chx轴以1000pps的速度正方向运动2000个脉冲快速运动可以参看所给的例子返 回 值:无28) void pmove2(int ch1,long ldata1,int ch2,long ldata2)目 的:两个轴定长运动调用例子:pmove2(chx,1000,chy,-200);/chx向正方向输出1000个脉冲,chy向负方向输出200个脉冲描 述:同上返 回 值:无29) void pmove3(int ch1,long ldata1,int ch2,long ldata2,int ch3,long ldata3)目 的:三个轴定长运动调用例子:同上描 述:返 回 值:无30) void pmove4(int ch1,long ldata1,int ch2,long ldata2, int ch3,long ldata3,int ch4,long ldata4)目 的:四个轴定长运动调用例子:同上描 述:同上返 回 值:无31) void vmove1(int ch,int dir)目 的:单个轴连续运动调用例子:vmove1(chx,1);/chx=1,dir=1 轴1正方向运动描 述:ch为轴号,取值为1,2,3,4。Dir0正方向输出脉冲返 回 值:无32) void vmove2(int ch1,int dir1,int ch2,int dir2)目 的:两个轴连续运动调用例子:vmove(chx,1,chy,-1);/chx正方向输出脉冲,chy负方向输出脉冲描 述:同上返 回 值:无33) void vmove3(int ch1,int dir1,int ch2,int dir2, int ch3,int dir3)目 的:三个轴连续运动调用例子:同上描 述:同上返 回 值:无34) void vmove4(int ch1,int dir1,int ch2,int dir2, int ch3,int dir3,int ch4,int dir4)目 的:四个轴连续运动调用例子:同上描 述:同上返 回 值:无35) void hmove1(int ch,int dir)目 的:单个轴回原点运动调用例子:同上描 述:当运动到原点是停止运动,并可通过read_orign_flag函数察看是否被原点终止运动返 回 值:无36) void hmove2(int ch1,int dir1,int ch2,int dir2)37) void hmove3(int ch1,int dir1,int ch2,int dir2,int ch3,int dir3)38) void hmove4(int ch1,int dir1,int ch2,int dir2,int ch3,int dir3,int ch4,int dir4)3.2.2.2插补运动函数插补运动是指两轴或三轴按照一定的算法进行联动,被控轴同时启动,并同时到达目标位置。插补运动以矢量速度运行,矢量速度分为常矢量速度、梯形矢量速度、S型矢量速度。本运动控制卡可进行线性插补运动、圆弧插补运动和位模式插补运动:线性插补运动是指两个轴或三个轴以矢量速度作线性联动,每个被控轴的运动速度为矢量速度在该轴上的分速度,各个被控轴同时启动,并同时到达目标位置;圆弧插补运动是两个轴以矢量速度沿给定圆弧作联动,每个被控轴的运动速度为矢量速度在该轴上的分速度,由于矢量速度的方向在不断改变,各被控轴的运动分速度也在不断改变。各个被控轴同时启动,并同时到达目标位置,并且两个轴的合成运动轨迹为给定的圆弧;位模式插补驱动是把高位CPU(PC机)计算的插补数据以数据包的形式接收后,以指定的驱动速度连续输出插补脉冲。同线性插补和圆弧插补相比,位插补驱动不是由几个参数和指令来产生的一特定的运动控制(如直线,圆弧等),它需要由上位机提供所有的插补数据。这种插补模式有很大的适应性,它对插补数据没有任何形式的限制,这无疑为实现样条插补,特殊函数曲线插补提供了方便,使得本运动控制卡在运行复杂轮廓曲线时有很大的优越性,尤其适用于仿形机上的应用。由于位插补需要大量的插补数据,因此如何生成和管理这些数据就成为位插补模式应用的关键。一般来讲,插补数据都是由上位机提前生成的,这样,如何计算生成插补数据,如何确定复杂运动轨迹的插补速度等等的问题已成为位插补模式应用的关键。39) void set_p(int ch,long ldata)目 的:设置插补的终点调用例子:set_p(chx,5000);/chx=1,ldata=5000.轴chx的终点是50000描 述:ch为轴号,取值为1,2,3,4,0xf。当ch=0xf时为同时设定四个轴,ldata为插补的终点。返 回 值:无40) void set_cb_sv(long ldata)目 的:设置常矢量初始速度或常速度调用例子:set_cb_sv(1000)/1000为矢量速度描 述:矢量常速度为轴的合成速度返 回 值:无41) unsigned long get_cb_sv()目 的: 获得设定的常矢量速度调用例子:unsigned long sv= get_cb_sv()/描 述:返 回 值:设定的矢量常速度sv42) void set_cb_trapezoid(long sv ,long v ,long a)目 的: 设定插补梯形曲线调用例子:set_cb_trapezoid(1000,8000 ,5000)/初始速度1000,速度8000,加速度5000描 述:设置插补运行梯形曲线的参数:初始速度sv,最大速度v,加速度a返 回 值:无43) void get_cb_trapezoid(long *sv,long *v,long *a)目 的:获得插补梯形曲线的设定值调用例子:long sv,v,a; get_cb_trapezoid(&sv,&v,&a);描 述:获得插补运行梯形曲线的参数:初始速度sv,最大速度v,加速度a返 回 值:无44) void set_cb_scurve(long sv,long v,long a,long k)目 的:设置插补s曲线调用例子:set_cb_scurve(1000,8000,5000,62500);/初始速度1000,最大速度8000,加速度5000,加速度率62500描 述:设置插补运行s形曲线的参数:初始速度sv,最大速度v,加速度a,加速度率k返 回 值:无45) void get_cb_scurse(LineData *ld)目 的: 获得插补设定的s曲线的初速度sv,最大速度v,加速度a,加速度率k调用例子:LineData ld; get_cb_scurse(&ld); sv=ld.sv; v=ld.v; a=ld.a; k=ld.k;描 述:LineData 为定义的数据结构,在包涵的loaddll.h文件中。结构为structlong sv;long v;long a;long d;long k;int s;/ 是否是s曲线,s曲线时s=1;否则s=0 返 回 值:无46) void con_cb_line2(int ch1,long p1,int ch2,long p2)目 的: 两轴插补做常速直线运动调用例子:con_cb_line2(chx,1000,chy,5000);描 述:可以任意两个轴做插补运动.ch1,ch2轴号,p1,p2插补的结束点坐标(输出点数)。插补的速度由函数set_cb_sv确定.返 回 值:无47) void con_cb_line3(int ch1,long p1,int ch2 ,long p2 ,int ch3,long p3)目 的: 三轴插补做常速直线运动调用例子:con_cb_line3(chx,1000,chy,5000,chz,8000);描 述:可以任意三个轴做插补运动。同上返 回 值:无48) void fast_cb_line2(int ch1,long p1,int ch2,long p2)目 的: 两轴插补做快速直线运动调用例子:fast_cb_line2(chx,1000,chy,5000)描 述:可以任意两个轴做插补运动.ch1,ch2轴号,p1,p2插补的结束点坐标(输出点数)。插补快速运行的曲线由函数set_cb_trapezoid或set_cb_scurve来确定是梯形加速还是s型加速曲线返 回 值:无49) void fast_cb_line3(int ch1,long p1,int ch2, long p2 ,int ch3,long p3)目 的: 三轴插补做快速直线运动调用例子:fast_cb_line3(chx,1000,chy,5000,chz,8000);描 述:可以任意三个轴做插补运动,同上返 回 值:无50) void set_cir_data(CirData *cd)目 的:设置圆弧插补的参数调用例子:CirData cd; cd.ch1=chx; cd.ch2=chy; cd.dp=100;/减速脉冲set_cir_data(&cd);描 述:CirData为定义的数据结构,在包涵的loaddll.h文件中。结构为structint ch1;/轴1int ch2;/轴2long cx;/圆心xlong cy;/圆心ylong endx;/结束xlong endy;/结束yint dir;/旋转方向,顺时针为1,逆时针为0long sv;/初始速度long v;/运行速度long a;/加速度long dp;/减速脉冲 返 回 值:无51) void cir_con_move()目 的:匀速圆弧插补运动调用例子:cir_con_move();描 述:设置完圆弧插补参数后,执行此函数进行匀速圆弧插补,查补速度为初始速度sv返 回 值:无52) void cir_fast_move()目 的:快速圆弧插补运动调用例子:cir_fast_move();描 述:设置完圆弧插补参数后,执行此函数进行快速圆弧插补,查补速度曲线为set_cir_data设定的值返 回 值:无53) int read_ZONEm()目 的: 圆弧插补驱动中表示正在驱动所在的象限调用例子:int zone=read_ZONEm();/描 述:圆弧插补中的0-7象限返 回 值:返回正在驱动所在的象限,比如,在2象限中函数返回254) int read_CNEXT()目 的: 表示可以写入连续插补的下一个数据调用例子:int next=read_CNEXT();描 述:在执行连续插补时,第一个插补命令运行后,运行此函数,返回0则不可以写下一个插补数据和命令,返回1可以写入下一个插补数据和命令返 回 值:3.2.2.3制动函数在运动过程中,如果需要暂停或中止某个轴或某几个轴的运动,可以调用制动函数来完成。制动函数可分为立即制动和光滑制动两种。立即制动:在运动中,执行此函数后立即停止脉冲驱动信号的输出;光滑制动:在梯形曲线运动或S曲线运动中,执行了此函数后,输出脉冲将按照事先设置好减加速度值减速到初始速度值后,再停止脉冲的输出。如果执行光滑减速时的速度已经等于或小于初始速度值,则会立即停止驱动脉冲的输出。55) void sudden_s

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论