




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目第一章概 第二章软件安 第三章应用软件开发方法和函数列 基于WINDOWS平台的应用软件开发简 第四章运动控制功能和相关函 回零运 第五章MAC-3002SSP4调试软 选项设 轴状态....................................................................................轴状 轴数 日 单轴运 多轴运 直线插 圆弧插 第六章编程举 VISUALC++6.0环境下的软件开发介 VISUALBASIC6.0环境下的软件开发介 VISUALC++6.0编程举 VISUALBASIC6.0编程举 使用BorlandC++Builder与Delphi开 第七章函数说 设置函 回零函 功能描 语法定 参数描 返回 功能描 语法定 参数描 返回 功能描 语法定 参数描 返回 功能描 语法定 参数描 函数名索 MAC-3002SSP4PCI总线的高性用户在得到运动控制卡的同时也会得到我们提供的Windows98/Me/2000/XP等别于函数库等基础软件)还随卡提供一个集多种运动控制功能的调试软件MAC2SSPMAC2SSPMAC-3002SSP4控制卡的软硬件功能,又可以方便快捷地测试电机驱动系统在执行各种运动时的性能特性。MAC-3002SSP4APIMAC-3002SSP4平台上开发用户应用软件并不是一件很难的事情,您只要用VisualC++或VisualBasicMAC-3002SSP4运动函数库中的相关函数,就可以对本手册为MAC-3002SSP4软件使用手册(硬件方面的内容请参考第三章概述用MAC-3002SSP4函数库开发自己的应用软件的方法,并给出运动MAC2SSP调试软件,以及如何用此软件演示函数库中各个函数的功能,并对电机驱动系统或运动台执行这些运动功能时的效果进试。1MAC-3002SSP4控制卡驱动程序的过程与安装其它PCI卡,如网卡、声卡请认真参照MAC-3002SSP4硬件使用手册)2.12.13、出现如图2.1c所示的框,选择“显示已知设备驱动程序的列表,从中22.1 2.1d5、出现如图2.1e所示的框;32.1 2.1如果是Windows2000WindowsXP系统请选择光盘驱动器中的中的win2k_xp中的MAC3002SSP4.inf文件,如果是Windows98或WindowsME系统,请选择选择光盘驱动器中的Drivers中的win98中的MAC2SSP4.inf42.16、出现如图2.1h所示 52.1MAC-3002SSP4CD光盘放入光驱中,运行光盘中的Setup.exea2.262.22.272.22.282.2至此安装全部完成,包括调试软件、软件使用说明书、VC/VB例程、开发需要的h文件、.bas文件、.lib文件、.dll文件等都已经到了您指定的安装位置,以默认的安装位置(C:\ProgramFiles\MAC3002SSP4)为例,进入“C:\ProgramFiles\MAC3002SSP4”,VC/VB例程位于samplesh文件、.bas文件、.lib文件、.dll文件位于DLL中,同时在Drivers中还有一份驱动程序备9windows3.14MAC-3002SSP4运动控制卡再根据控制指令发出相应的指令信号给电机驱动12DLL运动函数库,包括控制卡初始化函数、单轴及多轴控制函数、输入/输的功能,使用方便,用户不需要了解硬件电路的细节以及运动和插补的计算细3.1MAC-3002SSP46PC机上存在的控制设置反馈 设置ALM设置ERC发出ERC清除ERC信号(对电平方式设置EL 通用I/O通用I/OEL,SD,ORG,ALM,INP信号应用滤波器,忽略4微秒以下脉冲开始速度曲线为S形的(相对/绝对)这类函数共有6个,用于设置速度模式下的运动参数和指令,其中的停止在速度模式下,开始S22-4轴相对或绝对位置的直线插补运动,速度曲线分为梯形和S形。开始速度曲线为S开始S3.4.2中提供的函数进行设以手动编作为输入的控制运动函数共有3个。分别实现由手动编脉冲 轴的IO点1、加速时间和时间可以相同,也可以不同;单位p表示pulse即脉冲数,单位s表示second即秒;速度使用p/s即脉冲数/秒的方式来表示。对于单一轴,0X轴,1Y轴,2Z轴,3UZ,U10的表示对应轴不选定,具体见AxesXYZU0否否否否1是否否否2否是否否3是是否否4否否是否5是否是否6否是是否7是是是否8否否否是9是否否是否是否是是是否是否否是是是否是是否是是是是是是是PC机上可能会同时存在多块卡,因此应用软件需要设置使哪块ssp2_initial函数完成初始化操作,该函数没有参数,返回值是目前本地机器上存在的MAC-3002SSP4控制卡的个数,在调用这个初始化函数的同时,如果机ssp2_set_current_card函数来将任意存在的卡设置为当前卡,通过调用ssp2_get_current_card来查询当前卡,如果要对卡进行软复位,可以调用ssp2_reset函数。ssp2_close函数关闭来释放资源,及时的释放系统资源MAC-3002SSP4卡采用脉冲指令控制步进/伺服电机驱动器,但由于市面上的众输出进行正确的设定,系统才能正常工作。用户在调用运动函数之前应先调用式。ssp2_set_out_mode函数中,各种脉冲输出模式对应参数数值如下表:举例(C代码)ssp2_set_out_mode(0,1),表示设置X轴的脉冲输出模式为表中对应数值为1的模式。ssp2_set_out_mode7.2MAC-3002SSP4可以接收反馈编(EA/EB)的位置回馈信号,由于反馈编(EA/EB)的输出存在不同信号模式,所以要指定反馈编的信号输入模式,可以调用ssp2_set_encoder_mode函数完成该工作。090˚1倍频(当EA输入相位超前时向上计数190˚2倍频(当EA输入相位超前时向上计数290˚4倍频(当EA输入相位超前时向上计数3ssp2_set_encoder_mode函数的后3个参数分别用来设置是否接收编脉冲、是否反转编的计数方向和是否过滤小于4微秒的信号。举例(C代码)ssp2_set_encoder_mode(1,0,1,0,1)表示设Y轴的反馈编码器MAC-3002SSP4的回馈计数器的输入源可以是反馈编(EA/EB)的输出,也可以是脉冲输出或者是手动编码器(PA/PB)ssp2_set_feedback_mode函数来进行指定。0反馈编EA/EB输12 举例(C代码)ssp2_set_feedback_mode(2,2)Z轴的回馈计数器输入源为手动编PA/PB输入。ssp2_set_feedback_mode7.2设置手动编脉冲(PA/PB)输入模以调用ssp2_set_hand_puls_mode函数完成该工作。090˚1190˚2290˚43ssp2_set_hand_puls_mode3个参数分别用来设置是否接收手动编的脉冲输入、是否反转手动编的计数方向和是否过滤小于4微秒的信号。举例(C代码)ssp2_set_hand_puls_mode(3,3,1,0,1)表示设U轴的手动编脉使用过滤功能,过滤小于4微秒的信号。用户还可以通过调用ssp2_set_hand_ratio函数来设置编脉冲的倍率和分割n*m/204843个脉冲(i*3*512/2048i*3/4)ssp2_set_hand_puls_mode7.2设置函数1-65535脉冲数/的速度倍率都会被设置为1.0。ssp2_set_move_ratio函数设定速度倍率,由于内部计算电路不能假设您设定的数值为m=300/n,将m四舍五入为整数K,您实际得到的倍率为300/K,为了设定准确,我们推荐设定的数值符合如下要求:300/接近整数,例如:20(300/20=15.00)。举例(C代码)ssp2_set_move_ratio(2,20);Z20倍,如果上是以2000脉冲数/秒为启动速度,10000脉冲数/秒为运行速度来运动。MAC-3002SSP4卡在执行单轴控制时,可以进行位置模式和速度模式运动。在运行速度,以运行速度持续运动一段时间后开始,最后停止在目标位置。在速个指定的位移。如图4.3.1a所示:图4.3.1Positionp;FL:初始速度,单位:p/s;FHTaccTdec:时间,单位举例(C代码)ssp2_start_pt_move(1,0,-20000,100,3000,1,2);Y100为作恒速运动,如图4.3.1b所示:图4.3.1可以通过调用ssp2_get_current_speed函数来指定轴当前速度,的速度 mand函数来指定轴当前命令计数器中的计数7.10ssp2_set_target_position,在使用ssp2_set_target_position函数时,注意一种特殊情况,如果新的目标位置ssp2_get_motion_status运动状态检测函数查询当前的运动状态。例如:返回值0表示运动完成,10表示低速运动,11表示正在加速,等等。具体请参阅7.9运动状态监视函数。如果卡上的对应中断功能被设置激活状态,MAC-3002SSP4PC机执行相应的控形,在此种情况下,三角形的中点加速状态会突变为状态,所以该瞬间对电机驱动系统的冲击会比梯形曲线时要大,如图4.3.1c:图4.3.12≤(变速时间* )/(运行速度–初始速度)≤65536对于S形速度曲线运动2≤(变速时间 )/(运行速度–初始速度(变速时间* )/(运行速度–初始速度)接近整数对于S形速度曲线运动(变速时间* )/(运行速度–初始速度)接近整数ssp2_get_current_speed7.3的磨损。在梯形速度曲线上(4.3.1a)运动的不平滑主要表现在四个瞬间:起图4.3.2和梯形加速运动相似,S形加速运动可以通过调用ssp2_start_ps_move实现。S形加速运动过程中也可调用ssp2_set_target_position函数实时改变目标位置。调用S形加速运动函数时需提供九个参数:Positionp;FL:初速度,单位:p/s;FH:运行速度,单位:p/s;Tacc:加速时间,单位s;Tdec:时间,单位s;Tsacc:加速过程中,Ss;Tsdec:过程中,S形曲线部分所使用的时间,单位过程中S时间,在每一S段中,加速度为线性变化而速度呈抛物线变化,Tsacc和Tsdec的含义如图4.3.2a中所示。举例(C代码)ssp2_start_ps_move(0,1,10000,100,3000,1,2,0.5,0.4);X轴以100为初始速度,30001秒,其中的两段曲线加速部分时间Tsacc都是0.5秒,在过程中,时间为2秒,其中的两段曲线部小,Tsdec最大为Tdec1/2,都不能设置为0,单位为秒。S形曲线的目的是产生平滑运动,但是如果因为位移太短或加速太慢等FH时,理论上加速段将突然切得加段的过渡保持平滑,如图4.3.2b所示:
MAC-3002SSP4S形速度曲线在指定的加速时间该轴遇到信号或限位信号才会按启动时的速度曲线停止或立即停止,速度模式运动如图4.3.3所示:ssp2_start_vt_movessp2_start_vs_move设置S形速度曲线,其参数与前两节中所述相似,在持续运动时用户可以调用ssp2_change_speed果调用ssp2_sd_stop控制卡脉冲速度将至FL值后停止,如果调用ssp2_emg_stop控制卡将立刻停止发脉冲。在执行连续运动过程中,可以调用ssp2_change_speed实时改变速度,但是要注意S形速度模式运动中对运行速度的改变最好在加速已经完成的恒速段进行。4.3.3a4.3.3b演示梯形/S形速度模式运动时的加速、变速和停止过程的
图4.3.3 图4.3.3ssp2_get_current_speed7.4Ddec=1/2*(FH+FL)*Tdec,其中,Dacc、Ddec分别为加速段位移和段位移;FH、FL为运行速度和初速度;Tacc和Tdec为加时间。以上也完全适于S曲线的情况。因此,S形情况下的加位移与S段参数的设置并无直接关系,尽管把S段时间设置得长点那么位移就加长了,但实际上TaccS段的时间,意味着减少线性段的时可以使用ssp2_sd_stop,ssp2_emg_stop来停止或立即停止当前的运动,在MAC-3002SSP4控制卡可以控制多轴电机执行同时但独立的运动,也可以执行如要多轴同时但独立地运动,用户需先调用ssp2_set_tr_move_all函数来指定各ssp2_start_move_all函数开始各轴运动,指定的轴就会2个以上的轴均可进行直线插补,插补工作由控制卡上硬件PC机只需设置插补运动速度、加速度、终点位置等数据,而无需介入插补24.3.2a图4.3.22X、YP0P1,两轴同时开始,同时到达,且运动轨迹为线段P0P1,向量速度为:图4.4.2S形,可以分别调用函数ssp2_start_tline_move和ssp2_start_sline_move来实现。有X,Y,U轴参与插补,则X轴为主控轴,其他为从轴;有Z,U轴参与参与插补,则Z例(C代码)intAxes=9定义为X轴和U轴参与插补,(1,410)intpos[4];此函数使得X,U轴执行直线插补运动,其相关参数为:X=30000p;U=40000对于主控轴X轴高速度T形加速时间=0.1sMAC-3002SSP42轴梯形/S形变速圆弧插补功能,参加插补的轴可图4.3.3ABCD轴XYXYXYXY00000009018027011的圆弧插补为例,实际的运动轨迹如图4.3.3b所示:图4.3.3的点都在距离圆心11±0.5范围内。举例(C代码intAxes=3定义为X轴和Y轴参与插补,(1,21ssp2_start_tarc_move(Axes,0100,100,200,200,10,300,1.0,0);此函数使得X,Y轴执行圆弧插补运动,其相关参数为:位置的方式为相对方式(第二个参数为0)。X100脉冲Y100脉冲所在处,运动的终点是相对X轴当前位置200脉冲,相对Y轴当前位置200脉冲所在处。速时间是1秒。速度变化轮廓为梯形。 置回零模式、org、ez信号的逻辑、ez信号的计数,以及是否输出erc信号等,然后ssp2_home_move函数完成回零运动,针对不同情况的要求可以采用不同的回0ORG输入信号导通(ON)时,输出ERC信号。1ORG(ON)时,输出ERC2在低速运动的情况下,ORG(ON)EZ当EZ计数器结束向上计数时相关轴立即并停止。3在以低速运动的情况下,ORG(ON)EZ后,当EZ计数器结束向上计数时,相关轴并停止。456运动,当EL信号关闭(OFF)时,运动立即停止。EL(OFF)时,输出ERC7运动,当EZ计数器结束向上计数时,运动立即停止。89标有“*”的位置指示EL限位停止的情况下的ERC信号的输出。1.>4.5.0<传感器:EL(EL输入有效时立即停止),ORG>4.5.04.5.0速),ORG>如图4.5.0d:4.5.04.5.14.5.14.5.24.5.2低速操作<传感器:EL,ORG,EZ(EZ1)>4.5.34.5.3高速操作<传感器:EL,ORG,EZ(EZ1)>4.5.3低速操作<传感器:EL,ORG,EZ(EZ1)>4.5.44.5.4高速操作<传感器:EL,ORG,EZ(EZ1)>4.5.44.5.4低速操作<传感器:EL,ORG,EZ(EZ1)>4.5.54.5.5高速操作<传感器:EL,ORG,EZ(EZ1)>4.5.34.5.5低速操作<传感器:EL>4.5.64.5.6高速操作<传感器:EL>4.5.64.5.6低速操作<传感器:EL,EZ(EZ1)>4.5.74.5.7高速操作<传感器:EL,EZ(EZ1)>4.5.74.5.7低速操作<传感器:EL,EZ(EZ1)>4.5.8-4.5.8高速操作<传感器:EL,EZ(EZ1)>4.5.8-4.5.8高速操作<传感器:EL,ORG)>高速操作<传感器:EL,ORG,EZ(EZ1)>高速操作<传感器:EL,ORG,EZ(EZ1)>高速操作<传感器:EL,EZ(EZ1)>MAC-3002SSP445个比较器,4个计数器分别正向运动脉冲时,计数器将加1,当输出一个反向运动脉冲时,计数器将减1。该 mand命令计数器的内容, mandmand7.10回馈计数器是一个 OUT输出信号和DIR输出信号变成EA信号和EB信号,如图4.6.2a:4.6.2在双脉冲模式下,EA的脉冲使反馈位置计数增加,而EB脉冲使反馈位置计4.6.2这种模式下,EA脉冲信号超前或滞后EB90度,而这种超前或滞后,就表示电机的运转方向,当EAEB信号时,回馈计数器加计数;EA信数,回馈计数器的值为EB反馈脉冲数的4倍。数,回馈计数器的值为EB反馈脉冲数的2倍。馈计数器值为EB反馈脉冲数。ssp2_get_position和ssp2_set_position对回馈计数器进行和设置操作,设置操作后,回馈计数器也是在设置数据的基础上器输出之间的偏差、指令脉冲与手动编脉冲信号之间的偏差、反馈编信号与手动编脉冲信号之间的偏差。同样可以通过函数对其进行和设置操作。1/2,可以通过调用ssp2_set_general_mode函数来指定使用计数脉冲。通过ssp2_get_general_counter,ssp2_set_general_counter函数可以对其进行和设置操MAC-3002SSP4EL限位输入信号接口之外,还可以使用软限限位比较器,这两个比较器都是28位的可逆比较器,设定范围-134,271,728此比较器预置寄存器的状态可以通过调用ssp2_check_continucmp_buffer01,2时,表示寄存器内有数据,000写数据1写数据21的比较真ssp2_set_continu_cmp7.11位置比较函数。每一个位置模式运动都有一个目标位置,即该次运动最终将要到达的位置,MAC-3002SSP4控制卡允许用户在位置模式运动(即定长运动)过程中实时修改目标1)如果在加速或低速操作过程中,新的目2)如果在过程中,新的目标位置比原来3)如果相关轴已经过新的目标位置,或者2:位置重设不能在插补操作过程中执行。MAC-3002SSP4允许在运动中实时修改速度设定值,速度可在工作中改变。所4.7.2在加速 相关轴的过程中使用小的FH,直至此轴达到正确速度,3)在加速 完成后改变FH,轴将继续加速或,直至达到新的速度 4.7.2SRDY5个信号的功能以及在控制卡上的接口进行描述,其中INPALM是伺服驱动器状态的输入,ERC是控制卡输出到伺服驱动器的信号,用来清除伺服驱动器中偏差计数器的内容,SVON伺服驱动使能信号是控制卡输出给伺服驱动器的控制信号,用来控制是否打开伺服,SRDY是伺服驱动器发给控制INP即伺服定位完成信号,是伺服驱动器发给控制卡的状态信号,当伺服电机发出一个伺服到位INP信号,反馈给控制卡表明伺服电机已经完成运动。ssp2_set_inpMAC-3002SSP4INP信号反应,INP信号的有效电平逻辑(INP信号默认是负逻辑有效INP信号响应,MAC-3002SSP4控制卡将在定长运动脉冲发完后,不管伺服定位是否完成,都将立刻翻转卡上的运动完成标识即ssp2_get_motion_status将返回停止状态,INPINP信号变为信号是否有效可以通过ssp2_get_io_status函数来。请参阅ALM伺服信出错,MAC-3002SSP4ALM信号时,将立即停止发出脉冲,该过程ALM信号有效电平逻辑和信号有效时的动作的设置可以ssp2_set_alm函数来完成(ALM信号默认是负逻辑有效,默认有效时立即停止),ALM信号状态可以通过ssp2_get_io_status函数来。 7.2 伺服驱动器依赖电机目标位置和当前电机实际位置之间的误差来驱动电机运EC信号是控制卡输出给伺服驱动器的控制信号,当伺服驱动器接收到该信号时会立即清除误差并停止电机运转。电机会继续运行直到INP信号有效即误差计数达到允许范围内,这时如果给伺服驱动器发出一个ERC信号就可将电机停止,且将误差。ERC信号可以在运动中ssp2_snd_erc函数来输出ERC信号;ERCssp2_set_erc函数来进信号有效后,需要手动的调用ssp2_clr_erc来清除掉电平信号。SVON是控制卡输出给伺服驱动器的控制信号,当SVON信号为无效状态时,电机进入伺服状态。MAC-3002SSP4运动控制卡通过数字输出口的一个位来输出一个SVONssp2_set_svon函数来控制SVON信号的输出,默认1(1)SVON无效,用户也可以根据自己的实际情况来SRDYSRDY信号为有效时,表示伺服驱动器也不会按该命令运动,MAC-3002SSP4运动控制卡通过数字输的一个位,来接收SRDY信号,用户可以调用ssp2_get_srdy函数来SRDY信号的状SRDY0(0)时表ssp2_get_srdy7.2MAC-3002SSP4发出令脉冲控制电运动,也可通过手动编发出脉冲制电机运动手里的回零功能是在手动编脉冲的驱动下一直运动到命令计数器或回馈计数器0MAC-3002SSP4控制卡可以分别实现由硬件和软件控制的正负限位,硬件的限位功能主要是通过EL、SD、ORG信号来实现限位,软限位则是通过调用相应的(ON)FH速运动中遇到运动方向的EL轴不会在导通(ON)的EL信号所对应的方向开始移动。可以通过调用ssp2_set_el来规定当EL信号有效时轴立即停止还是停止。相关函数:ssp2_set_el请参阅7.2设置函数。硬件SD信硬件SD信号作为信号,如果SD信号被允许,且SD信号在操作过程中导1FL速进给的过程中,SDFHSD信号导通(ON)时,相关轴将到FL速度。之后,或者在过程中,如果SD信号关闭(OFF),则相关轴将加速到FH速度。图:4.10.22、停在以低速操作的过程中,当SD信号导通(ON)时,相关轴停止。在以高速操作的过程中,当SD信号导通(ON)时,相关轴将到FL速度,然后停止。如果在过程中SD信号关闭(OFF),则相关轴将加速到FH速度。动。停止后,相关轴将输出一个INT信号。如图4.10.2b:4.10.2ssp2_set_sd7.2零位信号在回零运动中使用比较多,ORG4.5回零运动,默认ORG信号的逻辑。请参阅7.7回零函数。ssp2_set_soft_limit可以设置正负软限位值,ssp2_enable_softlimit函n,那么当命令计数器计数大于n时,控制卡会根据设置的限位响应动作自动作出响应,而且控制卡对往正方向的设置的负限位值为-n时,当命令计数器值小于-n时控制卡会根据设置的限位响应ssp2_disable_softlimit函ssp2_disable_softlimit7.11MAC-3002SSP4控制卡上具有双层预置结构,卡上每个轴可以最多同时存储三个运动的资料,且以先进先出为原则操作,如图4.11所示:并被作为当前数据使用。当控制卡正在操作时,数据仍然作为预置寄存器数据ssp2_check_continuous_buffer函数来判断预置寄存器第二预置寄存第一预置寄存1器由“设定”转为“未确定”状态时,可以设置控制卡输出一个INT信号。MAC-3002SSP4控制卡具有间隙补偿和打滑校正功能,这些功能以校正速度输 p函数来设置校正量和校正方法 p7.2如果您不打算使用此功能,则冲个数设为0或1。这时控制卡将在输出脉如要使用此功能,则冲个数设为2至7,这时控制卡将在输出指定个脉冲以后
操作后,立即添加一个反向操作脉冲和一个正向操作脉冲,如图4.14所示。
MAC-3002SSP4控制卡提供可以定制的中断功能。MAC-3002SSP4控制卡发出旦相应的情况发生就会发出对应的中断,另一类是可定制的中断,这一类中断可以调用ssp2_set_irq_event函数定制哪些情况发生中断,当符合条件时就会发生相应的中断。当中断发生时,底层的驱动程序会自动完成对中断的基本处理,用种中断。用户也可以调用ssp2_set_irq_enable函数或使能中断功能,不论是事件中断还是错误中断都是在使能了中断功能的情况下才会发生,如果用户了中ssp2_set_irq_event7.2设置函数;MAC-3002SSP4MAC2SSP是哈工大博实精密公司为了便于用户熟悉MAC-3002SSP4控制卡运各种运动时的性能特性,第二章中对MAC-3002SSP4的安装已有描述,安装完成Windows“开始”->“程序”->“MAC3002SSP4系列伺服电机控制卡”菜单中找到MAC2SSP的启动程序MAC2SSPMAC-3002SSP4PC机上后启动计算机,即MAC2SSP软件,该软件提供单轴运动、信号设置和直线插补、圆弧插补、MAC2SSP5.0所示图5.1图信号和设置选项,对于非伺服驱动器可以不设置此页。如图5.1.1所示:
据、空闲脉冲数,如图5.1.2所示:在设置界面中选择进入“回零设置”界面,此界面设置回零参数,5.1.3所
1、回零中的EZ信号逻辑,ORG信号逻辑,回零完成后是否输出ERC3、校正速度(FA)4.54、手动发出ERC和清除ERC及关注哪些中断,如图5.1.4所示:相关的选项和数值,如图5.1.5所示:
偏差计数器、通用比较器、偏差比较器相关的选项和数值,如图5.1.6所示:
5.2.1所示界面中用户可以看到轴的IO通过手动刷新,如图5.2.2所示:在此界面中可以看到单轴按位置模式和速度模式(10秒)运动时的时间-速图5.2.3所示:16进制的数字,第一个数字为定制中断码,第7.9err_sts(错误中断码)int_sts(定制中断码)会出现如图5.4所示界面。图图图2前面我们已经对MAC-3002SSP4卡的函数库和控制功能作了一些简单的介绍,本章中我们通过几个例程来介绍在VisualBasic6.0和VisualC++6.0环境中如何开发应用程序,您可以在计算机中MAC3002SSP4\samples 如果您对VisualC++,VisualBasic等程序语言一点都不了解的话,我们建议您VisualBasic等程序语言进行过运动应用软件的开发,并有一定的经验,那么可以浏览索引中的函数,并找到所需要的函数描述页码,跳转到“第七章运动函数说PC机上安装有你所需要的开发工具,如:VisualC6.0VisualBasicMAC-3002SSP4Win32系统作为多任务操作系统允许多个进程同时运行,当多个进程同时示例一:脉冲输出模式选择,单轴持续/S形/ERC,O,EZ三:在运行期间,改变速度,改变目标位置,软件限位功能,位置。示例四:两轴/三轴四轴直线,梯形S形插补。示例六:运动接口状态,通用IO使用。注:由于VisualBasic是线程不安全的,所以示例七的VisualBasic版没有使用线程中断,而是使用了计时器进行,在VisualBasic开发中也不建议使用本章中余下部分将详细描述如何在VisualC++6.0VisualBasic6.0环境中编写一个简单的程序,通过这个程序您可以了解到如何利用MAC-3002SSP4运动VisualC++6.0程序,MAC2SSPVCMAC-3002SSP4运动函数之前,做好下以确定MAC-3002SSP4运动控制经正常工作;路径为3MAC2SSPvXXX.libXXX为版本号,下同)MAC2SSPvXXXh文件拷贝到该下,此文件在MAC3002SSP4\DLL下;4、将运动函数到你的工程项目中,将MAC2SSPvXXX.lib加入到工程中在调用运动函数的文件头部代码中加入#include“MAC2SSPvXXXh”语句;当你将运动函数到你的项目中后,你就可以象调用其它API函数一样调用开头文件MAC2SSPvXXXh了解每个函数的具体定义。VC的MAC3002SSP4\Samples\vc下,只要你将控制卡及其驱动软件安装好,并安装好VC编译器,即可直接运行这些源代码。VisualBasic6.01MAC-3002SSP4长运动,以确定MAC-3002SSP4运动控制经正常工作。2、建立自己的工作,如:d:\vbMacsp4(注。此名可以自己指定 下此文件在 4、运行VB并建立一个工程,然后保存此新建的工程在 d当您将运动函数到你的工程项目中后,就可以象调用其它API函数一样直打开模块文件MAC2SSPvXXX.bas了解每个函数的具体定义。VB的MAC3002SSP4\Samples\vb下,只要你将控制卡及其VB(注:我们提供VisualC++6.0VisualCMFC6.3和“停止”(命名为IDC_BTN_STOP),如图6.3b;6.3在安 下MAC3002SSP4\DLL目录下找到MAC2SSPvXXX.hMAC2SSPvXXX.lib文件拷贝到 选择“工程”“设置”,在Link库模板”中增加MAC2SSPvXXX.libtest.cpp#includeCTestDlg类中添加private变量DWORDm_cardarrary[16];在CTestDlg::OnInitDialog()函数中添加代码:CStringstr;if(0=={}{
if(-1==err){}}在CtestDlg中添加一个成员函数OnCancel,在OnCancelssp2_set_move_ratio(0,1);//设置X动速度100,运行速度3000,加速时间1秒,时间2秒) 时间2经过1秒的时间加速到3000脉冲数/秒,并最终用2秒的时间到100脉冲数会停止脉冲输出,如下图6.3c:6.3VisualBasic6.0 VisualBasic称修改为CB_Stop;6.4把该工程保存在 下MAC3002SSP4\DLL 到test 选择“工程”“添加模块”“现存”,找到test目录下的双击窗口控件,在Form_Load中添加代码DimerrAsLongDimiAsIntegerFori=0To15m_cardarray.v(i)=0Nextierr=ssp2_initialIferr=0ThenMsgBox初始化失败,错误码&errvbOKOnly提示err=ssp2_enum_cards(VarPtr(m_cardarray))Iferr=-1ThenMsgBox寻找卡失败,错误码&errvbOKOnly提示"EndIfEnd选择UnLoad,在Form_Unload中添加代码双击“启动”按钮,在CB_Start_Click中添加代码ssp2_sd_stop 停止脉冲输出,如图6.46.4BorlandC++BuilderDelphi对于C++Builder,由于Borland在隐式调用时使用不同的lib格式,所以不能MAC2SSPvXXX.lib库文件。虽然可以使用转换工具生成C++Builder格式,但是依然会存在转换不成功或者转换错误的,这里我们推荐在C++Builder中采取显式调用。对于Delphi,可以依照Pascal语法对动态连接库函数的,其函数原型的可以参考MAC2SSPvXXXh或MAC2SSPvXXX.bas文件。工大博实精密公司为用户提供一个功能齐全的函数库,包括1379个函数。在 ssp2_set_current_card设置当前卡;ssp2_get_current_card当前卡; intssp2_enum_cards(DWORD*card_array)intssp2_initial()intintssp2_set_current_card(intcard_number)intssp2_get_current_card()intVisualssp2_enum_cards(ByValpcard_arrayAsLong)AsLongssp2_initial()AsLongssp2_close()Asssp2_get_current_card()AsLongssp2_reset()AsLong00,取值范围:0返回当前卡的编号,0-15表示当前卡的编号,-1表0无错误,-1参数越界,-2返回当前卡的编号,0-15表示当前卡的编号,-1当MSDN的GetLastErrorssp2_close函数来释放资源,以便于以后使 设置ALM 设置ERC 发出ERC 清除ERC 设置EL信号操作模式 倍率 16位通用I/O输出 16位通用I/O intssp2_set_out_mode(intAxis,intintssp2_set_encoder_mode(intAxis,intmode,intenable,intinverse,intfilter)intssp2_set_feedback_mode(intAxis,intmode)intssp2_set_general_mode(intAxis,intmode)intssp2_set_error_mode(intAxis,intmode)intssp2_set_hand_puls_mode(intAxis,intinput_mode,intenable,intinverse,intintssp2_set_home_mode(intAxis,inthome_mode,intorg_logic,intez_logic,intez_count,interc_out)intssp2_set_alm(intAxis,intLogic,intmode)intssp2_set_inp(intAxis,intLogic,intenabled)intssp2_set_erc(intAxis,intLogic,intTimer)intssp2_snd_erc(intAxis)intssp2_clr_erc(intintssp2_set_sd(intAxis,intLogic,intmode,intintssp2_set_el(intAxis,intintssp p(intAxis,intmode,intbcomp,intspeed)intssp2_set_suppress_vibra(intAxis,inttu1,inttu2)intssp2_set_move_ratio(intAxis,doubleratio)intssp2_set_idle_pls(intAxis,intpulse)intssp2_set_irq_enable(intAxis,intenabled)intssp2_set_irq_event(intAxis,intIrqEvent)intssp2_set_svon(intAxis,intLogic)intssp2_get_srdy(intintssp2_set_general_io(DWORDvalue)DWORDssp2_get_general_io()intssp2_set_hand_ratio(intAxis,intspd,intVisualssp2_set_out_mode(ByValAxisAsLong,ByValmodeAsLong)AsLongssp2_set_encoder_mode(ByValAxisAsLong,ByValmodeAsLong,ByValenableAsLong,ByValinverseAsLong,ByValfilterAsLong)AsLongssp2_set_feedback_mode(ByValAxisAsLong,ByValmodeAsLong)AsLongssp2_set_general_mode(ByValAxisAsLong,ByValmodeAsLong)AsLongssp2_set_error_mode(ByValAxisAsLong,ByValmodeAsLong)AsLongssp2_set_hand_puls_mode(ByValAxisAsLong,ByValinput_modeAsLong,ByValenableAsLong,ByValinverseAsLong,ByValfilterAsLong)AsLongssp2_set_home_mode(ByValAxisAsLong,ByValhome_modeAsLong,org_logicAsLong,ByValez_logicAsLong,ByValez_countAsLong,ByValerc_outAsLong)AsLongssp2_set_alm(ByValAxisAsLong,ByValLogicAsLong,ByValmodeAsAsssp2_set_inp(ByValAxisAsLong,ByValLogicAsLong,ByValenabledAsAsssp2_set_erc(ByValAxisAsLong,ByValLogicAsLong,ByValTimerAsLong)Asssp2_snd_erc(ByValAxisAsLong)AsLongssp2_clr_erc(ByValAxisAsLong)Asssp2_set_sd(ByValAxisAsLong,ByValLogicAsLong,ByValmodeAsssp2_set_el(ByValAxisAsLong,ByValmodeAsLong)As p(ByValAxisAsLong,ByValModeAsLong,ByValbcompAsLong,ByValSpeedAsLong)AsLongssp2_set_suppress_vibra(ByValAxisAsLong,ByValtu1AsLong,ByValtu2AsLong)AsLongssp2_set_move_ratio(ByValAxisAsLong,ByValratioAsDouble)AsLongssp2_set_idle_pls(ByValAxisAsLong,ByValpulseAsLong)AsLongssp2_set_irq_enable(ByValAxisAsLong,ByValenabledAsLong)AsLongssp2_set_irq_event(ByValAxisAsLong,ByValIrqEventAsLong)AsLongssp2_set_svon(ByValAxisAsLong,ByValLogicAsLong)AsLongssp2_get_srdy(ByValAxisAsLong)AsLongssp2_set_general_io(ByValvalueAsLong)AsLongssp2_get_general_io()AsLongssp2_set_fltr_mode(ByValAxisAsLong,ByValfilterAsLong)AsLongssp2_set_hand_ratio(ByValAxisAsLong,ByValspdAsLong,ByValratioAsLong)Asssp2_set_feedback_mode,回馈计数器输入源,各数据含义见4.2.3与PA/PB,2,EA/EB与PA/PBEA/EB输入,2手动编PA/PB输入,3时钟计数的1/2ssp2_set_alm设置ALM输入有效的停止方式(0:立即停止,1:减ssp2_set_sd设置SD输入有效的停止方式(0:只,1:停止)ssp2_set_el设置EL输入有效的停止方式(0:立即停止,1:停止)ssp2_set_fltr_modeEL,SD,ORG,ALM,INP信号应用滤波器,忽略4微秒以下脉冲(1:过滤,0:不过滤) ssp2_set_encoder_mode(1转换EA/EB输入的方向,0不转换)ORG信号的输入逻辑,0负逻辑,1EZ信号的输入逻辑,0下降沿,1指定用于回零操作的EZ计数值,单位:脉冲,取值范围:0-是否输出ERC信号,0:不输出ERC信号,1:输出ERC0:12微 1:102微 2:409微 3:1.6毫4:13毫 5:52毫 6:104毫 7:电平输01设置间隙/打滑补偿的脉冲数,单位:脉冲,取值范围:0-ssp2_set_move_ratio速度倍率,取值范围:0.07-1000低电平有效,1位 当满足比较器的条件时。当满足比较器的条件时。当满足比较器的条件时。当满足比较器的条件时。13当用CLRSD输入导通(ON)当±DRCSTA输入导通(ON)31(0不应用过滤器,1通用IO16当设置为0时当做分频为1设置间隙/打滑补偿的速度,单位:脉冲/对于ssp2_get_general_io函数,返回的内容是从通用IO口的内容平为1,对于其意义参见4.8.5。0 intssp2_start_pt_move(intAxis,intmode,intposition,intFL,intFH,doubleTacc,doubleTdec)intssp2_start_ps_move(intAxis,intmode,intposition,intFL,intFH,doubleTacc,doubleTdec,doubleTsacc,doubleTsdec)intssp2_resume_move(intAxis,intresume_mode,intVisualssp2_start_pt_move(ByValAxisAsLong,ByValmodeAsLong,ByValpositionAsLong,ByValflAsLong,ByValfhAsLong,ByValtaccAsDouble,ByValtdecAsDouble)Asssp2_start_ps_move(ByValAxisAsLong,ByValmodeAsLong,ByValpositionAsLong,ByValflAsLong,ByValfhAsLong,ByValtaccAsDouble,ByValtdecAsDouble,ByValTsaccAsDouble,ByValTsdecAsDouble)Asssp2_resume_move(ByValAxisAsLong,ByValresume_modeAsLong,ByValstop_modeAsLong)AsLong目标位置的指定方式,0相对位置,1 初始速度,单位:脉冲数/秒,取值范围:1运行速度,单位:脉冲数/秒,取值范围:1停止方式,0立即停止,1停0 开始速度曲线为S形的速度模式运动 intssp2_start_vt_move(intAxis,intFL,intFH,doubleintssp2_start_vs_move(intAxis,intFL,intFH,doubleTacc,doubleTsacc)intssp2_change_speed(intAxis,intnew_speed,doubleTacc)intssp2_get_current_speed(intAxis)intssp2_sd_stop(intAxis,doubleTdec)intssp2_emg_stop(intAxis)Visualssp2_start_vt_move(ByValAxisAsLong,ByValflAsLong,ByValfhAsssp2_start_vs_move(ByValAxisAsLong,ByValflAsLong,ByValfhAsssp2_change_speed(ByValAxisAsLong,ByValnew_speedAsLong,ByValtaccAsDouble)AsLongssp2_get_current_speed(ByValAxisAsLong,speedAsLong)AsLongssp2_sd_stop(ByValAxisAsLong,ByValtdecAsDouble)AsLongssp2_emg_stop(ByValAxisAsLong)AsLong初始速度,单位:脉冲数/秒,取值范围:-65535至65535,符号表示运动方向,负号为反向运动,正号为正向运动,同时要求FL运行速度,单位:脉冲数/秒,取值范围:-65535至0执行了不允许的操作(您可能在位置模式运动中调用了intssp2_start_tline_move(intAxes,intmode,int*position_array,intFL,intFH,doubleintssp2_start_sline_move(intAxes,intmode,int*position_array,intFL,intFH,doubleTacc,doubleTsacc)Visualssp2_start_tline_move(ByValAxesAsLong,ByValmodeAsLong,ByValposition_arrayAsLong,ByValflAsLong,ByValfhAsLong,ByValtaccAsDouble)Asssp2_start_sline_move(ByValAxesAsLong,ByValmodeAsLong,ByValposition_arrayAsLong,ByValflAsLong,ByValfhAsLong,ByValtaccAsDouble,初始速度,单位:脉冲数/秒,取值范围:165535(针对主控轴)4.4.2运行速度,单位:脉冲数/秒,取值范围:165535(针对主控轴)4.4.2目标位置的指定方式,0相对位置,1 0ssp2_start_tarc_move开始任意2轴梯形变速圆弧插补运动,其圆心和目位置ssp2_start_sarc_move2S形变速圆弧插补运动,其圆心和目位置intssp2_start_tarc_move(intAxes,intmode,intc1_offset,intc2_offset,inte1_offset,inte2_offset,intFL,intFH,doubleTacc,intdirect)intssp2_start_sarc_move(intAxes,intmode,intc1_offset,intc2_offset,inte1_offset,inte2_offset,intFL,intFH,doubleTacc,doubleTsacc,intdirect)Visualssp2_start_tarc_move(ByValAxesAsLong,ByValmodeAsLong,ByValc1_offsetAsLong,ByValc2_offsetAsLong,ByVale1_ffsetAsLong,ByVale2_offsetAsLong,ByValflAsLong,ByValfhAsLong,ByValtaccAsDouble,ByValdirectAsLong)Asssp2_start_sarc_move(ByValAxesAsLong,ByValmodeAsLong,ByValc1_offsetAsLong,ByValc2_offsetAsLong,ByVale1_ffsetAsLong,ByVale2_offsetAsByValflAsLong,ByValfhAsLong,ByValtaccAsDouble,ByValtsacc运行方向,0顺时针方向,1启动速度,单位:脉冲数/秒,取值范围:1至运行速度,单位:脉冲数/秒,取值范围:1至S速时间,单位: 圆心位置和目标位置的指定方式,0相对位置,10 intssp2_home_move(intAxis,intdirect,intFL,intFH,intFA,doubleTacc,doubleVisualssp2_home_move(ByValAxisAsLong,ByValdirectAsLong,ByValflAsLong,ByValfhAsLong,ByValfaAsLong,ByValtaccAsDouble,ByValtdecAsDouble)As回零的方向,0正向,1初始速度,单位:脉冲数/秒,取值范围:1至运行速度,单位:脉冲数/秒,取值范围:1至校正速度,单位:脉冲数/秒,取值范围:1至0 进行由手动编输入控制的速度模式运动 进行由手动编输入控制的位置模式运动 进行由手动编输入控制的回零运动intssp2_start_ppls_move(intAxis,intmode,intposition,intspeed_limit)Visualssp2_start_vpls_move(ByValAxisAsLong,ByValspeed_limitAsLong)AsLongssp2_start_ppls_move(ByValAxisAsLong,ByValmodeAsLong,ByValAsLong,ByValspeed_limitAsLong)Asssp2_start_pls_home_move(ByValAxisAsLong,ByValhome_typeAs轴号,取值范围:03目标位置的形式:0相对位置,1限速,单位:脉冲数/秒,取值范围:1目标位置,单位:脉冲,取值范围 回零点方式,00;1:直到回馈计数器的值变为00 intssp2_get_motion_status(intAxis)intssp2_get_irq_status(int*int_card,int*int_axes,DWORD*err_sts,DWORD*int_sts,boolwait=false)Visualssp2_get_motion_status(ByValAxisAsLong)AsLongssp2_get_io_status(ByValAxisAsLong)AsLongssp2_get_irq_status(int_cardAsLong,int_axesAsLong,ByValerr_stsAs轴号,取值范围:03轴对应的位被置为1,如果没有发生中断,这其值为0 含当ALM输入导通(ON)当CSTP输入导通(ON)发生EA/EB至 保 含计数值由CLRSD输入导通 至 保0无错误(ssp2_get_motion_status除外对于ssp2_get_motion_status045等待6789对于ssp2_get_io_status位0123478914-注意:ssp2_get_irq_status函数的wait参数用于表示是否一直等待到有中断发生VB在编写多线程的程序时会存在一定的问题,因此在不适于以拥塞等待的形式调用ssp2_get_irq_statusVB调用该函数时wait 通用计数 intssp2_get_position(intintssp2_set_position(intAxis,intnumber) mand(intAxis) mand(intAxis,intnumber)intssp2_get_error_counter(intAxis)intssp2_set_error_counter(intAxis,intnumber)intssp2_get_general_counter(intAxis)intssp2_set_general_counter(intAxis,intnumber)intssp2_get_target_position(intAxis)intssp2_set_target_position(intAxis,intnew_position)intssp2_get_rest_pulse(intAxis)intssp2_get_rampdown_position(intVisualmand(ByValAxisAsLong)Asmand(ByValAxisAsLong,ByValnumberAsLong)AsLongssp2_get_error_counter(ByValAxisAsLong)AsLongssp2_set_error_counter(ByValAxisAsLong,ByValnumberAsLong)AsLongssp2_get_general_counter(ByValAxisAsLong)AsLongssp2_set_general_counter(ByValAxisAsLong,ByValnumberAsLong)AsLongssp2_get_target_position(ByValAxisAsLong)AsLongssp2_set_target_position(ByValAxisAsLong,ByValnew_positionAsLong)Asssp2_get_rest_pulse(ByValAxisAsLong)AsLongssp2_get_rampdown_positionByValAxisAsLong)AsLong轴号,取值范围:03
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年房地产行业城市更新项目认证考试-城市更新绿色施工技术与管理考核试卷
- 2025年制造业数字化转型资格考试-数字供应链供应商协同管理考核试卷
- 解析卷-人教版八年级上册物理《物态变化》专题攻克试题(含详细解析)
- 2025年急诊急救技术应用专项能力测试(床旁CT护理)考核试卷
- 解析卷-人教版八年级物理上册第4章光现象专项攻克试题(详解)
- 小学低年级学生计算能力的培养及算法的优化
- 考点解析人教版八年级上册物理物态变化《升华和凝华》专项训练试题(详解版)
- 校长在国旗下讲话:从“建队初心”到“节约践行”不是说说而已
- 达标测试人教版八年级物理上册第5章透镜及其应用-透镜必考点解析试题(含答案解析)
- 2025年建筑工地高空作业安全合同协议
- 奇正藏药消痛贴膏培训
- 《肺癌早期筛查与干预》课件
- 洗护行业数据分析
- 牙膏级磷酸氢钙装置生产工艺流程介绍
- 部编版小学五年级语文下册非连续性文本阅读训练(含答案)
- 2025年中国移动初级解决方案经理学习考试题库大全-上(单选题)
- 充电桩知识培训课件
- 警务英语培训课件
- 历年合同法司法考试真题详细解释与答案(2024-2025年)
- 《外科常见疾病》课件2
- 儿童急性淋巴细胞白血病指南2024版解读
评论
0/150
提交评论