如果在应用程序开发前,就可以考虑到那些既重要又容易疏漏的细节,这样可以避免很多不必要的问题产生,从而大大缩短程序的开发周期。本文总结以往的经验,以雷赛运动控制卡DMC2410B为例,为客户在开发应用程序时的初始化过程给出了一些参考与建议(其他产品与此类似),其中包括运动控制卡的初始化、特殊参数的设置及各种信号的设置,如图1虚线框内所示,这些处理过程必须加载至应用程序的初始化过程中,不同编程环境下,应用程序的初始化过程略有不同,例如在VB6.0编程环境下,须在Form_Load()函数中做程序的初始化处理,而在VC6.0编程环境下,须在OnInitDialog()函数中做程序的初始化处理。
图1 DMC2410B控制卡应用程序开发流程
图1所示的控制卡初始化过程中,实线框内所示的参数设置或特殊信号的设置必须在初始化过程中加以处理,而虚线框内的信号在未选择使用时,可以不用设置,而当选择使用这些信号时,必须进行正确设置。下面对这些初始化过程的方法及必要性做出简要的说明。
一、 初始化运动控制卡
相关函数:WORD d2410_board_init (void)
函数功能:为控制卡分配系统资源并初始化控制卡;
若在应用程序中未初始化控制卡,则系统无法为控制卡分配资源,导致控制卡无法正常使用,程序在运行时提示错误,弹出如图2所示对话框:
图2 未初始化控制卡时的错误提示
注意:程序在结束运行时,必须关闭运动控制卡,以释放系统资源,否则控制卡将一直占用系统资源,导致再次运行该应用程序时产生错误。关闭控制卡的方法及说明如下:
相关函数:Void d2410_board_close (void)
函数功能: 释放控制卡占用的系统资源。当程序结束时必须调用此函数,它与d2410_board_init() 函数是一个相反的过程。
二、 脉冲参数设置
脉冲参数包括指令脉冲类型、脉冲输出有效电平以及方向控制逻辑电平,这些参数需根据电机驱动器的类型及参数来设置,若设置错误时,则会造成控制卡正常发出脉冲,而电机无法正常运转、运转方向错误或只能朝同一个方向运转等现象。以下为脉冲参数设置的相关函数及说明:
相关函数:Void d2410_set_pulse_outmode (WORD axis, WORD outmode )
函数说明:设置指定轴的脉冲输出方式。
参数说明:axis 指定轴号
特殊信号包括限位信号、原点信号、急停信号等,对这些特殊信号未进行设置或设置错误时,会导致控制卡无法正常输出脉冲、电机无法正常运转、原点回归错误等现象,下面分别对这些信号的设置及用途加以说明:
1. 限位信号的设置
相关函数:Void d2410_config_EL_MODE (WORD axis, WORD el_mode)
函数功能:设置限位信号的有效电平及制动方式。
参数说明:axis 指定轴号;
el_mode 限位信号的有效电平和制动方式:
0-立即停、低电平有效;1-减速停、低电平有效;
2-立即停、高电平有效;3-减速停、高电平有效;
限位信号的有效电平需根据所使用的限位开关的类型进行设置,DMC2410B控制卡默认为低电平有效,若有效电平设置错误,则控制卡会认为相应轴遇到限位信号而停止输出脉冲。
2. 原点信号的设置
相关函数:Void d2410_set_HOME_pin_logic (WORD axis, WORD org_logic, WORD filter)
函数功能:设置原点信号的有效电平以及允许/禁止滤波功能。
参数说明:axis 指定轴号;
org_logic 原点信号的有效电平:0-低电平有效;1-高电平有效;
filter 允许/禁止滤波功能:0-禁止;1-允许;
原点信号的有效电平需根据所使用的原点开关的类型进行设置,DMC2410B控制卡默认为低电平有效,若有效电平设置错误,则会导致回原点运动无法启动、回原点方向相反、未遇到原点信号时回原点动作立即结束等现象。
3. 急停信号的设置
相关函数:Void d2410_config_EMG_PIN (WORD cardno, WORD enable, WORD emg_logic)
函数功能:急停信号设置。急停信号有效时会立即停止所有轴脉冲的输出。
参数说明:cardno 卡号
enable 电平设置使能:0-电平设置无效;1-电平设置有效;
emg_logic 急停信号的有效电平:0-低电平有效;1-高电平有效;
急停信号的有效电平需根据所使用的急停开关的类型进行设置,DMC2410B控制卡默认为低电平有效,若有效电平设置错误,则控制卡会认为收到急停信号而停止所有轴的脉冲输出。
四、 伺服专用信号的设置
伺服专用信号是针对伺服电机和驱动器而设置的,包括伺服使能信号、报警信号、误差清除信号、零相信号、编码器反馈输入模式等,当无特殊要求时,可以选择不用控制卡去控制这些信号,但若选择使用这些信号时,必须在程序的初始化过程中进行正确的设置,否则会导致控制卡无法正常输出脉冲、伺服电机无法正常运转、编码器反馈计数无法读取或计数错误等现象,下面分别对这些信号的设置加以说明:
1. 伺服使能(Sevon)信号的设置
伺服使能信号的有效电平是通过控制卡的拨码开关进行设置,如图4所示,DMC2410B控制卡默认为高电平有效,若此电平设置错误,则会出现控制卡正常输出脉冲,而伺服电机的轴未锁紧而无法运转的情况,此信号端子可用软件控制,其相关函数及说明如下:
相关函数:Void d2410_write_SEVON_PIN (WORD axis, WORD on_off);
函数功能:输出对指定轴的伺服使能端子的控制
参数说明:axis 指定轴号
on_off 设定伺服使能电平状态:0-低电平;1-高电平。
图4 伺服使能信号电平的设置
2. 伺服报警(Alarm)信号的设置
相关函数:Void d2410_config_ALM_PIN (WORD axis, WORD alm_logic, WORD alm_action)
函数功能:设置伺服报警信号的逻辑电平及其工作方式
参数说明:axis 指定轴号
alm_logic ALM信号的有效电平:0-低电平有效;1-高电平有效;
alm_action ALM信号的制动方式:0-立即停止;1-减速停止;
ALM信号的有效电平需根据伺服驱动器进行设置,DMC2410B控制卡默认为低电平有效,若此电平设置错误,则控制卡会认为相应轴发出报警信号而停止输出脉冲。
3. 伺服误差清除(ERC)信号的设置
相关函数:Void d2410_config_ERC_PIN (WORD axis, WORD enable, WORD erc_logic,
WORD erc_width, WORD erc_off_time)
函数功能:设置允许/禁止ERC 信号及其有效电平和输出方式
参数说明:axis 指定轴号
enable: 0-不自动输出ERC 信号
1-自动输出ERC 信号
erc_logic 设置ERC信号的有效电平:0-低电平有效;1-高电平有效;
erc_width ERC信号的有效输出宽度:单位:us
erc_off_time ERC信号的关断时间:单位:us
伺服电机是根据位置误差计数器运转的,若将位置误差计数器清零,则伺服电机立即停止运行,而误差清除(ERC)信号便是用来清除位置误差计数器的,若此信号的模式及有效电平设置错误,当控制卡正常输出脉冲时,而伺服驱动器的位置误差计数器一直处于清零状态,故电机无法运行。
4. 伺服零相(EZ)信号的设置
相关函数:Void d2410_config_EZ_PIN (WORD axis, WORD ez_logic, WORD ez_mode)
函数功能:设置指定轴的 EZ 信号的有效电平及其作用。
参数说明:axis 指定轴号
ez_logic EZ信号的有效电平:0-低电平有效;1-高电平有效;
ez_mode EZ信号的工作方式:0-EZ 信号无效;1-EZ 是计数器复位信号;
EZ信号可以用来精确回原点运动及复位编码器反馈位置计数器,若此信号的有效电平及工作方式设置错误,则控制卡会一直复位编码器反馈位置计数器,导致无法读取编码器的反馈位置。
5. 编码器反馈输入模式的设置
相关函数:Void d2410_counter_config (WORD axis, WORD mode)
函数功能:设置编码器输入口的计数方式。
参数说明:axis 指定轴号
mode 编码器反馈输入模式:
0-非 A/B 相脉冲(脉冲+方向);
1-1倍 A/B 相脉冲信号;
2-2倍 A/B 相脉冲信号;
3-4倍 A/B 相脉冲信号;
DMC2410B控制卡的反馈位置计数器能接收两种模式的脉冲输入:非A/B相(脉冲+方向)模式和A/B相输入模式,这需要根据编码器的类型进行设置,若此模式设置错误,则会造成计数器无法计数或只能朝一个方向计数以及计数值错误等现象。
总结:
综上所述,若在应用程序的开发过程中未对控制卡进行正确初始化处理时,会给整个开发过程带来很多不必要的麻烦,而细致全面的初始化过程则可以在程序开发的初期避免这些问题和麻烦的产生,从而使整个程序开发过程事半功倍!
因此,建议大家自己创建一个初始化函数,将上面描述的各项相关参数包容到其中,然后在应用程序里边再调用,以方便当前项目开发和后续其他的项目开发。