kld8dll动态连接库的说明.doc_第1页
kld8dll动态连接库的说明.doc_第2页
kld8dll动态连接库的说明.doc_第3页
kld8dll动态连接库的说明.doc_第4页
kld8dll动态连接库的说明.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

哈尔滨科利达智能控制技术有限公司KLD-ST08动态连接库说明书1.1 KLD- ST08运动控制器简介KLDST08运动控制器是以IBM-PC及其兼容机为主机,提供标准的ISA总线接口的产品,该运动控制器提供C语言函数库实现复杂的控制功能,用户能够将这些控制函数灵活的与自己的控制系统所需的数据处理、界面显示、用户接口等部分集成在一起,建造符合特定应用要求的控制系统,以适应各种应用对象的要求,该控制器用户可以在Windows98、Windows2000、Windows XP等系统下正常使用,用户可以用高级语言比如:VC+, VB调用此动态连接库。KLDST08将八轴电机控制集成在同一个运动控制器上,具有功能强、性能高、价格低、使用方便等特点,适用于脉冲控制的步进和伺服电机等多种控制场合。采用该运动控制器进行控制时,用户需要一台IBM-PC或其兼容机、一套运动控制器及配套的连接电缆和接口端子板、电机及驱动器和外部接口电源等硬件。运动控制器提供八路脉冲信号(每轴一路)输出,16路限位开关(每轴两路)输入以及备用的另外四个外部输入信号,八路电机位置到达反馈信号(每轴一路)输入,八路电机方向信号(每轴一路)输出。1.2 KLD动态连接库函数介绍KLD公司提供的动态连接库一共有三个文件,一个是头文件kld.h,一个是kld.dll,另外一个是kld.lib。通过调用动态连接库的这些函数,可以实现对步进电机和伺服电机的控制,用户进行二次开发的时候可以减少很多的工作量,方便用户。在KLD-ST08运动控制器驱动函数库中总共有12个函数,这些函数可粗分类为初始化函数、运动控制函数、手指驱动函数和检测函数。每个函数的详细介绍在本书的附录中给出。在用户编制自己的程序时,我们建议用户参考我们所提供的动态连接库的调用方法,这将使你省去很多例行工作。1.2.1 初始化函数初始化函数为KLD_InitDevice(),该函数是空函数,没有返回值,具体代码如下:void KLD_InitDevice();用户在用高级语言对KLDST08控制器编程时,首先在程序初始化时必须调用此函数对控制器进行初始化,然后才可以调用其他的函数,否则其他函数不起作用。1.2.2 运动控制函数 动态连接库库函数提供两种运动控制函数:速度控制模式和位置控制模式。速度控制模式的函数为:void KLD_Velocity (int axis, int direction,unsigned long freq)该函数的第一个参数axis为轴号,取值范围1-8。第二个参数direction为axis轴的方向只能取0、1(0代表正向,1代表负向),第三个参数freq为速度参数,参数范围是(0-10000),单位为脉冲频率(Hz 脉冲数/秒)。位置控制模式的函数为:void KLD_Position (int axis, int direction, unsigned long freq, unsigned long pulse_number)该函数的第一个参数axis为轴号,取值范围1-8。第二个参数direction为axis轴的方向只能取0、1(0代表正向,1代表负向),第三个参数freq为速度参数,参数范围是(0-10000),单位为脉冲频率(Hz 脉冲数/秒),第四个参数pulse_number为位移参数,参数范围是(0-65536),单位为脉冲个数。例如:用户输入下面代码KLD_ Velocity (1, 0,2000),它的意义就是1轴以脉冲频率2000的速度正转。KLD_ Position (2, 1, 3000, 20000)它的意义就是2轴以脉冲频率3000的速度反转直到2轴控制器发完20000个脉冲。电机停止函数为:void KLD_ Motor_Off(int axis)该函数的axis参数为1-8,表示要命令哪个轴的电机停止。 例如:用户输入下面代码 KLD_ Motor_Off(4)它的意义就是代表命令电机4停止。1.2.3 手指驱动函数手指驱动部分工包括两个函数void KLD_Hand_Open(int axis,unsigned int pulse_number)void KLD_Hand_Close(int axis,unsigned int pulse_number)如果需要使用以下两个函数,则需要更换一根44芯的轴卡线。手指张开函数为:void KLD_Hand_Open(int axis,unsigned int pulse_number)第一个参数axis表示手指号,取值范围为1-2。第二个参数pulse_number为脉冲数,参数范围是(0-30000)。例如:用户输入以下代码KLD_Hand_Open(1,20000);表示1号手指向张开方向运动20000个脉冲。手指关闭函数为:void KLD_Hand_Close (int axis,unsigned int pulse_number)第一个参数axis表示手指号,取值范围为1-2。第二个参数pulse_number为脉冲数,参数范围是(0-30000)。例如:用户输入以下代码KLD_Hand_Close(1,20000);表示1号手指向闭合方向运动20000个脉冲。1.2.4 检测函数检测目标位置是否达到函数为:unsigned int KLD_ReadAState(int axis)该函数的axis参数表示轴号,其取值范围为1-8。当参数等于1时,表示检测1轴电机的目标位置是否达到,如果达到返回值为1,否则为0。其他轴同1轴一样。例如:用户输入以下代码unsigned int a= KLD_ReadAState(1)当a1时表明1轴电机已经到达目标位置,a0时表明电机还没有到达目标位置。检测限位开关函数为:unsigned int KLD_ReadBState(int channel)该函数的channel参数表示限位号,其取值范围为1-20,当参数等于1时,表示检测1轴电机左限位开关;当参数等于2时,表明检测1轴电机的右限位开关;当参数等于3时,表明检测2轴电机的左限位开关;当参数等于4时,表明检测2轴电机的右限位开关;当参数等于5时,表明检测3轴电机的左限位开关;当参数等于6时,表明检测3轴电机的右限位开关;当参数等于7时,表明检测4轴电机的左限位开关;当参数等于8时,表明检测4轴电机的右限位开关。其余依此类推。如果机器人的手臂碰到限位开关时,返回值为0,否则返回值为1。例如:用户输入以下代码unsigned int bKLD_ReadBState(2)当b0时表明1轴电机已经碰到右限位开关,a0时表明1轴电机正常运动没有碰到限位开关。检测当前脉冲剩余量的函数为:unsigned int KLD_ReadCurrentlyFreq(int axis);该函数的axis参数表示轴号,其取值范围1-8,可返回相应轴计数器中未发完的剩余的脉冲数量。该函数可用作该轴电机空间位置的计算。例如:用户输入以下代码unsigned int a= KLD_ReadCurrentlyFreq(1);表示返回相应1轴相应剩余的脉冲数量。当a=0时表示电机已处于停止状态。检测外部限位输入端口的函数为:unsigned int ReadPort(unsigned int PortNO);该函数的PortNO参数取值范围1-3,其参数意义如下: PortNO=1代表端口地址:0x279PortNO=2代表端口地址:0x27DPortNO=3代表端口地址:0x27C以上三个地址是限位端口地址,该函数可返回该端口所有的八个限位的状态。例如:用户输入以下代码unsigned int a= ReadPort(1);表示返回0x279端口的限位状态。其涵义同限位检测函数相同。检测外部限位输入端口位的函数为:unsigned int ReadLimit_8255_1b(int channel)unsigned int ReadLimit_8255_2a(int channel)unsigned int ReadLimit_8255_2b(int channel)以上三个函数channel参数为位置号,取值范围1-8,意义如下:channel=1表示该端口的0位channel=2表示该端口的1位channel=3表示该端口的2位channel=4表示该端口的3位channel=5表示该端口的4位channel=6表示该端口的5位channel=7表示该端口的6位channel=8表示该端口的7位可返回相应外部限位端口相应位的状态。例如:用户输入以下代码unsigned int a=ReadLimit_8255_1b(8);表示返回8255_1的B口的PB7的位状态1.3 KLD动态连接库函数调用方法1.3.1 VC调用动态库函数的方法下面叙述VC调用动态连接库的具体步骤如下:1 将文件kld.dll拷贝到应用程序debug目录下。例如:用户的程序在D盘根目下的KLD文件夹下,则该文件应该拷贝到D:KLDdebug文件夹中。2 将Dll的导入库lib文件加入应用程序的工程中,可以使用Project|Add To Project|File菜单项弹出的对话框来选择相应的LIB文件,也可以用另外的方法,在Project|Settings.弹出对话框中选择Link标签,在其中的“Object/Linkraray Modules”输入指定的lib文件名。在应用程序编译链接时就可以找到这个导入库文件。3 在要调用动态链接库中函数的那个类的头文件处添加如下代码,然后就可以在这个类中调用这些函数了。#include “kld.h”;其中kld.h中是对链接库内部函数的说明,其内容如下:extern C_declspec(dllimport) void KLD_InitDevice();extern C_declspec(dllimport) void KLD_Velocity(int axis, int direction, unsigned long freq);extern C_declspec(dllimport) void KLD_Motor_Off(int axis);extern C_declspec(dllimport) void KLD_Position(int axis, int direction, unsigned long freq, unsigned long pulse_number);extern C_declspec(dllimport)unsigned int KLD_ReadAState(int axis);extern C_declspec(dllimport)unsigned int KLD_ReadBState(int channel);externC_declspec(dllexport)unsigned int ReadLimit_8255_1b(int channel);externC_declspec(dllexport)unsigned int ReadLimit_8255_2a(int channel);externC_declspec(dllexport)unsigned int ReadLimit_8255_2b(int channel);extern C _declspec(dllexport)void KLD_Hand_Open(int axis,unsigned int pulse);extern C _declspec(dllexport)void KLD_Hand_Close(int axis,unsigned int pulse);extern C _declspec(dllexport)unsigned int KLD_ReadCurrentlyFreq(int axis);extern C _declspec(dllexport)unsigned int ReadPort(unsigned int PortNO);4 VC调用动态链接库的例程:我们建立了以CFormView类为基类的对话框的非常简单的程序,在CkldView类的头文件处我们加入了如下代码:#include “kld.h” 初始化时调用初始化函数,具体代码如下:void CKldView:OnInitialUpdate()CFormView:OnInitialUpdate();GetParentFrame()-RecalcLayout();ResizeParentToFit();KLD_InitDevice();然后在对话框上加了两个按钮,一个是开始,一个是停止。void CKldView:OnKldstart() KLD_Velocity(1,0, 3000);void CKldView:OnKldend () KLD_Motor_Off(1);程序编译运行后,电机运行良好。1.3.2 VB调用动态库函数的方法下面叙述VB调用动态连接库的具体步骤如下:1.将文件kld.dll和kld.lib都拷贝到指定文件夹下。例如:用户想拷贝到D盘根目下的KLD文件夹下,则该文件应该拷贝到D:KLD。2在VB的工程中加入类模块,在类模块中加入下列代码:Declare Sub KLD_InitDevice Lib D:KLDkld.dll Declare Sub KLD_Velocity Lib D:KLDkld.dll (ByVal axis As Integer, ByVal direction As Integer, ByVal freq As Long)Declare Sub KLD_Motor_Off Lib D:KLDkld.dll (ByVal motor As Integer)Declare Sub KLD_Position Lib D:KLDkld.dll (ByVal axis As Integer, ByVal direction As Integer, ByVal freq As Long, ByVal pulse_number As Long)Declare Function KLD_ReadAState Lib D:KLDkld.dll (ByVal axis As Integer) As IntegerDeclare Function KLD_ReadBState Lib D:KLDkld.dll (ByVal channel As Integer) As IntegerDeclare Function ReadLimit_8255_1b Lib D:KLDkld.dll (ByVal channel As Integer) As IntegerDeclare Function ReadLimit_8255_2a Lib D:KLDkld.dll (ByVal channel As Integer) As IntegerDeclare Function ReadLimit_8255_2b Lib D:KLDkld.dll (ByVal channel As Integer) As IntegerDeclare Function KLD_Hand_Open Lib D:KLDkld.dll (ByVal axis, ByVal pulse);Declare Function KLD_Hand_Close Lib D:KLDkld.dll (ByVal axis, ByVal pulse);3.VB调用动态链接库的例程: 我们在用VB建立了非常简单的程序,实现电机的起停的,具体代码如下:建立一个工程后,加入一个类模块,在类模块中加入下列代码:Declare Sub KLD_InitDevice Lib D:KLDkld.dll Declare Sub KLD_Velocity Lib D:KLDkld.dll (ByVal axis As Integer, ByVal direction As Integer, ByVal freq As Long)Declare Sub KLD_Motor_Off Lib D:KLDkld.dll (ByVal motor As Integer)然后在窗体初始化时调用初始化函数,这样控制卡就初始化了Private Sub Form_Load()Call KLD_InitDevice ()End Sub再加入两个按钮:一个是电机开始运行,一个是电机停止运行。Private Sub KLDstart_Click()Call KLD_Velocity (1,0,2000)End SubPrivate Sub KLDend_Click()Call KLD_Motor_Off(1)End Sub1.3.3 用户用其他高级语言调用动态连接库 如果用户用其他高级语言比如DELPHI等进行开发,请参考相关资料,

温馨提示

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

评论

0/150

提交评论