运动控制卡说明书.docx
- 文档编号:12918911
- 上传时间:2023-04-22
- 格式:DOCX
- 页数:36
- 大小:62.44KB
运动控制卡说明书.docx
《运动控制卡说明书.docx》由会员分享,可在线阅读,更多相关《运动控制卡说明书.docx(36页珍藏版)》请在冰豆网上搜索。
运动控制卡说明书
第一章概述
1.1PCI_SERVO4四轴运控卡的软硬件简介
PCI_SERVO4四轴运控卡是基于PC机PCI总线的步进电机或数字式伺服电机的上位控制单元,它与PC机构成主从式控制结构:
PC机负责人机交互界面的管理和控制系统的实时监控等方面的工作(例如键盘和鼠标的管理、系统状态的显示、控制指令的发送、外部信号的监控等等);该卡完成运动控制的所有细节(包括脉冲和方向信号的输出、自动升降速的处理、原点和限位等信号的检测等等)。
每块该卡可控制4轴步进电机或数字式伺服电机,并支持多卡共用,以实现多于四个运动轴的控制;每轴均可输出脉冲和方向信号,以控制电机的运转;同时,可外接原点、减速、限位等开关信号,以实现回原点、保护等功能,这些开关信号由该卡自动检测并作出反应。
另外,该卡还提供了适用于伺服系统的伺服使能和偏差清零信号接口,以及供用户使用的通用I/O接口。
该卡采用先进的专用控制芯片,具有梯形及S形升降速曲线,最高输出频率可达4MHz,带有编码器反馈端口,主要适用于数字式交流伺服系统或闭环的步进电机控制系统。
该卡配备了功能强大、内容丰富的运动控制驱动软件工具。
该卡在插补算法和运动函数的执行效率方面采用了更有效的方法,提高了插补精度、插补速度和实时性。
这些软件工具主要分为示范软件和运动函数库两大类。
利用PCI_SERVO4的示范软件既可以很快地熟悉该卡的软、硬件功能,又可以方便快捷地测试执行电机及驱动系统在完成各种运动时的性能特性。
该卡运动函数库用于二次开发,用户只要用VC++或VisualBasic等支持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.系统软件
✧用户接口函数库
✧WindowsXP设备驱动程序
✧用户示例程序
PCI_SERVO4
正是由于PCI_SERVO4的开放式结构,使之应用范围十分广泛,在由步进电机和数字式伺服电机组成的基于PC机的运动控制系统中,都可以使用PCI_SERVO4作为核心控制单元,例如:
●数控机床、加工中心、机器人等;
●X-Y-Z控制台;
●绘图仪、雕刻机、印刷机械;
●送料装置、云台;
●打标机、绕线机;
●医疗设备;
●包装机械、纺织机械;
等等。
1.4 PCI_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.3PCI_SERVO4接口
PCI_SERVO4控制卡采用100芯SISC接口,外接线可采用屏蔽线缆,以提高控制卡的抗干扰能力。
其中开关量信号(原点、减速、限位以及I/O信号等)采用5DCV光电隔离;脉冲量信号(脉冲、方向、编码器反馈等)采用5DCV高速光电隔离。
2.3.1信号接口定义
PCI_SERVO4卡SISC100的接口定义为:
编号
名称
定义
ZH
编号
名称
定义
51
EX5VX
X轴+5V外部电源正
50
EX5VX
X轴+5V外部电源正
~52
GNDX
X轴+5V外部电源地
49
GNDX
X轴+5V外部电源地
53
SDIRX
X轴方向输出
48
XALRM
X轴报警输入
54
SDATAX
X轴脉冲输出
47
XLMTP
X轴正向限位输入
55
XENABLE
X轴使能输出
46
XLMTM
X轴负向限位输入
56
XINPOS
X轴到位信号输入
45
XORGIN
回原点
57
XSTATE
X轴的准备状态
44
XENCA
X轴编码器A/脉冲+入
58
NC
43
XENCB
X轴编码器B/脉冲-入
59
EX5VY
Y轴+5V外部电源正
42
EX5VY
Y轴+5V外部电源正
60
GNDY
Y轴+5V外部电源地
41
GNDY
Y轴+5V外部电源地
61
SDIRY
Y轴方向输出
40
YALARM
Y轴报警输入
62
SDATAY
Y轴脉冲输出
39
YLMTP
Y轴正向限位输入
63
YENABLE
Y轴使能输出
38
YLMTM
Y轴负向限位输入
64
YINPOS
Y轴到位信号输入
37
YORGIN
65
YSTATE
36
YENCA
Y轴编码器A/脉冲+入
66
NC
35
YENCB
Y轴编码器B/脉冲-入
67
OS1
通用输出(与OS2构成开关型输出)
34
OS2
通用输出(与OS1构成开关型输出))
68
OS3
通用输出(与OS4)
33
OS4
通用输出(与OS3)
69
OS5
通用输出(与OS6)
32
OS6
通用输出(与OS5)
70
OS7
通用输出(与OS8)
31
OS8
通用输出(与OS7)
71
OS9
通用输出(与OS10)
30
OS10
通用输出(与OS9)
72
OS11
通用输出(与OS12)
29
OS12
通用输出(与OS11)
73
OS13
通用输出(与OS14)
28
OS14
通用输出(与OS13)
74
OS15
通用输出(与OS16)
27
OS16
通用输出(与OS15)
75
NC
26
NC
76
IOINP2
通用输入2+
25
IOINP1
通用输入1+
77
IOINN2
通用输入2-
24
IOINN1
通用输入1-
78
IOINP4
通用输入4+
23
IOINP3
通用输入3+
79
IOINN4
通用输入4-
22
IOINN3
通用输入3-
80
IOINP6
通用输入6+
21
IOINP5
通用输入5+
81
IOINN6
通用输入6-
20
IOINN5
通用输入5-
82
IOINP8
通用输入8+
19
IOINP7
通用输入7+
83
IOINN8
通用输入8-
18
IOINN7
通用输入7-
84
NC
17
NC
85
EX5VZ
Z轴+5V外部电源正
16
EX5VZ
Z轴+5V外部电源正
86
GNDZ
Z轴+5V外部电源地
15
GNDZ
Z轴+5V外部电源地
87
SDIRZ
Z轴方向输出
14
ZALARM
Z轴报警输入
88
SDATAZ
Z轴脉冲输出
13
ZLMTP
Z轴正向限位输入
89
ZENABLE
Z轴使能输出
12
ZLMTM
Z轴负向限位输入
90
ZINPOS
Z轴到位信号输入
11
ZORGIN
91
ZSTATE
10
ZENCA
Z轴编码器A/脉冲+入
92
NC
9
ZENCB
Z轴编码器B/脉冲-入
93
EX5VU
U轴+5V外部电源正
8
EX5VU
U轴+5V外部电源正
94
GNDU
U轴+5V外部电源地
7
GNDU
U轴+5V外部电源地
95
SDIRU
U轴方向输出
6
UALRM
U轴报警输入
96
SDATAU
U轴脉冲输出
5
ULMTM
U轴正向限位输入
97
UENABLE
U轴使能输出
4
UORGIN
U轴负向限位输入
98
UINPOS
U轴到位信号输入
3
UORGIN
99
USTATE
2
UENCA
U轴编码器A/脉冲+入
100
NC
1
UENCB
U轴编码器B/脉冲-入
注:
NC为空连接
红色标记的nINPOS(XYZU)硬件连接有错,它和nState共用了一条线
2.3.2接线方法
接线方法可以参看电路图。
第三章运动控制系统的开发
3.1开发Windows下的运动控制系统
利用PCI_SERVO4的动态链接库(DLL),开发者可以很快开发出Windows平台下的运动控制系统。
PCI_SERVO4动态链接库是标准的Windows32位动态链接库,选用的开发工具应支持Windows标准的32位DLL调用。
以下介绍如何利用两种常用的开发工具MicrosoftVisualBasic和MicrosoftVisualC++开发基于Windows平台的运动控制程序
3.1.1开发VisualBasic控制程序
1.概述
2.动态链接库函数调用方法
3.演示示例程序的使用
3.1.2用VisualC++开发控制程序
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文件,这是隐式链接所无法做到的,所以显式链接具有更好的灵活性。
它需要调用WindowsAPI函数加载和释放动态链接库。
方法如下:
✓调用WindowsAPI函数LoadLibrary动态加载DLL;
✓调用WindowsAPI函数GetProcAddress取得将要调用的DLL中函数的指针;
✓用函数指针调用DLL中函数完成相应功能;
✓在程序结束时或不再使用DLL中函数时,调用WindowsAPI函数FreeLibrary()释放动态链接库。
如下是通过显式链接调用pci_servo4.dll中的Pmove1函数的例子:
……
typedefint(*Pmove1_d)(intch,longldata);
……
HINSTANCEhDLL;
Pmove1_dPmove1;
……
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中调用动态链接库函数的标准方法,若要获得更具体的调用方法和帮助,请参考微软VisualStutio开发文档MSDN或相关VC参考书籍中相应部分内容。
3.演示示例程序的使用
参看演示程序。
3.2运动函数库中函数的说明
3.2.1初始化函数、轴设置函数与其设置量获得函数
1)boolinit(void)
目的:
打开板卡获得句柄
语法:
boolinit();
调用例子:
init();
返回值:
如果成功返回0,否则返回1;
注释:
打开板卡获得句柄,如果没有插卡或没有正确安装驱动,提示“设备打不开!
”
2)voidreset()/*复位板卡*/
目的:
复位板卡
语法:
voidreset();
调用例子:
reset();
返回值:
无
3)intInit_Board()/*初始化板卡*/
目的:
Init_Board函数主要初始化控制卡的各个寄存器、各轴的脉冲输出模式(脉冲/方向或者双脉冲,脉冲逻辑)、常速度(2000pps)、梯形速度(初速2000pps,高速8000pps,加减速12500ppss)等等。
该函数在程序中只能调用一次。
语法:
intInit_Board();
调用例子:
Init_Board();
返回值:
如果调用成功,函数返回0,失败返回1。
注释:
如果不调用Init_Board函数初始化,控制卡将不能正常工作。
若需改变脉冲输出模式、速度等初始化数据,可调用其它函数来修改。
4)voidset_r(intch,intudata)/*设置倍率*/
目的:
设置各轴的倍率,因为寄存器的位长所致,速度,加速度等的值在一个范围,比如速度v范围(0-8000pps),如果想范围达到(0-80000),则倍率应至少设为10.
语法:
voidset_r(intch,intudata)/;
调用例子:
set_r(chx,10);/*将x轴的倍率设定为10.(chx=1);
描述:
初始化后倍率为1.如果想改变某个轴的倍率,调用它就可以了.如果ch=0xf,则是一起设置四个轴的倍率。
返回值:
无.
5)intget_r(intch)/*获得某个轴的倍率*/
目的:
获得某个轴的倍率.
调用例子:
intr=get_r(chx);//chx=1
6)voidset_lp(intch,unsignedlongldata)附1
目的:
设置逻辑寄存器的值。
调用例子:
set_lp(chx,0);//chx=1,设置当前逻辑位置为0
描述:
设置逻辑寄存器的值,即逻辑上某个轴所在的位置,如果ch=0xf则为同时设置四个轴,ldata的范围是(-2,147,483,648~+2,147,483,647)
返回值:
无.
注释:
在运行中每输出一个脉冲,逻辑寄存器就加1,这里设置逻辑寄存器实际上就是设置逻辑寄存器的基数。
7)longget_lp(intch)
目的:
获得逻辑寄存器的值
调用例子:
longlp=get_lp(chx)//chx=1
描述:
获得逻辑寄存器的值,即逻辑上某个轴所在的位置
返回值:
逻辑上某个轴所在位置的值
8)voidset_ep(intch,unsignedlongldata)附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)longget_ep(intch)
目的:
获得实际寄存器的值
调用例子:
longep=get_ep(chx)//chx=1
描述:
获得实际寄存器的值。
返回值:
实际寄存器的值
10)voidset_cp(intch,unsignedlongldata)附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)longget_cp(intch)
目的:
读取正向比较寄存器的限位值
调用例子:
longcp=get_cp(chx)//chx=1
描述:
ch为轴号,取值为1,2,3,4。
返回值:
正向比较寄存器的值
12)voidset_cm(intch,unsignedlongldata)附[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)longget_cm(intch)
目的:
读取负向比较寄存器的限位值
调用例子:
longcm=get_cm(chx);//
描述:
ch为轴号,取值为1,2,3,4。
返回值:
负向比较寄存器的限位值
14)voidset_sv(intch,longldata)
目的:
设置初始速度或者是定速驱动中的速度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)unsignedlongget_sv(intch)
目的:
获得所设置初始速度
调用例子:
unsignedlonguldata=get_sv(chx);//chx=1
描述:
获得某个轴的初始速度.
返回值:
某个轴的所设置的初始速度
注释:
它是某个轴的所设置的初始速度值,并非是正在运行时的速度,察看运行时的速度是函数get_v
16)voidset_a(intch,longldata)
目的:
设置加速度参数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的时候
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 运动 控制 说明书