天天看点

非标自动化之运动控制卡编程及应用

目 录

一、运动控制简介

二、运动控制系统组成

三、运动控制卡特性

四、运动控制卡选型

五、运动控制卡在高级编程语言中的使用

六、凌华AMP-204C编程流程

一、运动控制简介

简单地说,运动控制就是对机械运动部件的位置、速度等进行实时的控制管理,使其按照规划的运动轨迹和规定的运动参数进行运动。

运动控制卡是基于PCI总线的高集成度、高可靠度的脉冲式运动控制卡。

常用的运动控制卡品牌有研华运动控制卡,凌华运动控制卡,雷赛运动控制卡等

二、运动控制系统组成

非标自动化之运动控制卡编程及应用

运动控制卡:速度曲线规划、路径规划、位置脉冲输出

驱动器: 把普通电能转化为电机所需要的电能

电 机: 产生推动负载的扭矩

位置传感器: 提供机械移动部件实时的位置和速度

2.1 死循环控制系统

非标自动化之运动控制卡编程及应用

特点:

Ø运动控制卡送出速度控制命令,驱动电机运动

Ø在运动控制卡上做PID增益调节,定位精度高

2.2 半死循环控制系统

非标自动化之运动控制卡编程及应用

特点:

Ø运动控制卡送出位置与速度命令

Ø在运动控制卡上做PID增益调节,定位精度比死循环差

2.3 开环控制系统

非标自动化之运动控制卡编程及应用

特点:

Ø运动控制卡送出位置与速度命令

Ø 定位精度最差

三、运动控制卡特性

非标自动化之运动控制卡编程及应用

3.1 点对点运动

•点对点运动是指在预定的速度规划下控制某一轴由 A 位置移动到 B 位置。

非标自动化之运动控制卡编程及应用

3.2 直线插补

、•运动轨迹是直线。为了完成多维直线运动,需要任意2轴, 3轴或甚至6轴都需要进行线性插补。

非标自动化之运动控制卡编程及应用

3.3 圆弧插补

•运动轨迹是圆弧。为了完成多维圆弧运动,需要任意2轴或3轴进行圆弧插补。

非标自动化之运动控制卡编程及应用

3.4 点表运动

运动控制卡开辟一个N字节的缓存区存放大量的位置信息,用户通过相关的函数来达成多线段的连续运动。点表运动包含了一系列的直线插补和圆弧插补指令。

非标自动化之运动控制卡编程及应用

3.5 多轴同步运动

多轴同步运动指用户可以设定某一轴 ( 从轴) 和另一轴( 主轴) 的同步运动关系,这个关系类似机械上的齿轮结构。

非标自动化之运动控制卡编程及应用

3.6 位置比较触发

•用户先确定一个电机运动位置表,运动控制卡会把当前电机运动位置与这个位置表进行比较,一旦位置符合,运动控制器就会发出一个或者一串触发脉冲。

非标自动化之运动控制卡编程及应用

四、运动控制卡选型

4.1 运动控制卡接口选择

运动控制卡一般有PCI、RS232、RS485、网口、USB等几种接口。

如果运算量比较大、功能复杂,选择PCI和工控机比较好,工控机具备PCI卡槽,运动控制卡一般都支持多种高级程序设计语言,利于程序开发。

如果选择HMI(人机界面)配合运动控制卡进行运动控制,则RS232、RS485 和网口是比较好的选择,因为HMI一般都带有这样的接口;另外需要运动控制卡具有标准的通信协议。

如果用单片机/DSP/FPGA做主控进行控制,则RS232是比较好的选择,因为 一般的这样的主控都具有RS232接口,物理上非常方便连接。

4.2 运动控制卡功能选择

运动控制卡一般能实现的功能是比较相似的,一般都包括归零、定速、点位 、直线插补、多轴联动插补和圆弧插补等功能。用户要根据自己的需要进行选择,功能的要求一般是符合自己用就可以,没必要多而全,从软件工程的角度来说,功能越多,可靠性越低,不需要的功能反而是累赘。一般的情况下,功能越多,价格也越高。所以功能的选择上,一般以够用为标准,可以适当考虑未来的扩展。

4.3 运动控制卡性能选择

运动控制卡的性能一般包括通信速度、响应速度和控制速度(脉冲速度)。用户需要根据自己的应用的最高要求,计算自己需要的性能指针,然后预留 20%左右的余量,一般都可以满足未来的要求,没有必要进行个别指标的强 烈追求,需要综合进行考虑,否则会付出不必要的成本。比如步进控制器的 一般接收脉冲的能力是80KHz左右,你选1MHz的脉冲速度,是没有任何意义 的。如果根据整机设计计算出需要达到的精度需要500KHz,那一定要选择满 足这个要求的运动控制卡。

4.4 运动控制卡可靠性选择

用户使用运动控制卡,一定非常关心运动控制卡的稳定性。一个控制系统的 稳定性,是由几个部分组成的,包括电机和驱动的可靠性(比如驱动器)、 整机电子学的可靠性(比如电源)、运动控制卡硬件的可靠性、运动控制卡 嵌入式软件的可靠性、主控软件的可靠性(比如HMI的组态软件,PC软件异 常情况处理等)。一般的能经过市场检验的运动控制卡,在隔离设计(比如 电源隔离、光耦隔离等)、滤波和保护(限位保护、接口保护)等都是有考 虑的,能力上不会有多大的差别。

4.5 运动控制卡价格选择

选择性价比高的运动控制卡

4.6 运动控制卡易用性选择

易用性包括硬件的易用性和软件的易用性。硬件的易用性需要联机方便实用 ,从用户方便实用的角度考虑,比如一个接插件螺丝空位上需要插入十几根电线再拧螺丝是很难的,也不可靠的。软件的易用性包括文文件的质量、例程的质量和软件入手的难度上,重要的是能快速有效的完成自己需要的功能,而不是很复杂很难用。

五、运动控制卡在高级编程语言中的使用

5.1.在VS2010中创建程序

5.1.1.启动Visual Studio 2010,选择“文件”→“新建” →“项目”→“Windows窗体应用程序”

名称可自主选择如“Motion”;

5.1.2.点击方案资源管理器,点击引用,鼠标右键点击选择添加引用,加入需要添加的引用,如研华1245AE加入的引用为“AdvMotAPI.dll”;

非标自动化之运动控制卡编程及应用

5.1.3.至此程序已创建完成可以开始后续的编程工作

5.2. 程序接口规划

5.2.1.界面规划如下图所示

非标自动化之运动控制卡编程及应用

5.3. 程序编写框架

非标自动化之运动控制卡编程及应用

六、运凌华AMP-204C编程流程

6.1 系统&初始化

n I32 APS_initial(I32 *BoardID_InBits, I32 Mode)

- 板卡初始化

nI32 APS_load_parameter_from_flash( I32 Board_ID )

- 从板卡Flash载入参数

nI32 APS_load_param_from_file( const char *pXMLFile )

- 从XML格式文件中载入参数

注意:推荐使用从板卡Flash载入参数

6.2 IO状态获取

n I32 APS_motion_io_status( I32 Axis_ID )

- IO状态获取

非标自动化之运动控制卡编程及应用

注意:

1、在正式操作机构前,必须确认相关IO的状态,比如EL、ALM、ORG、EZ、INP等的状态,因为后面的回零、精确定位等需要用到上述IO。

2、推荐使用多线程来实时监视IO状态变化

6.3 参数设置

n I32 APS_set_axis_param( I32 Axis_ID, I32 AXS_Param_No, I32 AXS_Param )

-按指定的轴参数类型设定轴参数(仅用于I32参数类型)

n I32 APS_set_axis_param_f( I32 Axis_ID, I32 AXS_Param_No, F64 AXS_Param )

- 按指定的轴参数类型设定轴参数(仅用于F64参数类型)

注意:使用函数时,要注意使用和参数值类型对应的函数

6.4 参数保存

n I32 APS_save_parameter_to_flash( I32 Board_ID )

- 保存参数到卡片Flash

n I32 APS_save_param_to_file( I32 Board_ID, const char *pXMLFile )

- 将参数保存到XML文件中

6.5 电机激磁

n I32 APS_set_servo_on( I32 Axis_ID, I32 Servo_on )

- 电机激磁/消磁

注意:SVON信号如果不为ON,则卡片无法发送运动指令

6.6.1 回零参数设置

n I32 APS_set_axis_param( I32 Axis_ID, I32 AXS_Param_No, I32 AXS_Param )

-按指定的轴参数类型设定轴参数(仅用于I32参数类型)

n I32 APS_set_axis_param_f( I32 Axis_ID, I32 AXS_Param_No, F64 AXS_Param )

- 按指定的轴参数类型设定轴参数(仅用于F64参数类型)

注意:使用函数时,要注意使用和参数值类型对应的函数

6.6.2 回零参数保存

n I32 APS_save_parameter_to_flash( I32 Board_ID )

- 保存参数到卡片Flash

n I32 APS_save_param_to_file( I32 Board_ID, const char *pXMLFile )

- 将参数保存到XML文件中

6.6.3 回零运动

n I32 APS_home_move( I32 Axis_ID )

- 开始回零运动

6.6.4 停止运动

n I32 APS_stop_move(I32 Axis_ID)

- 减速停止

n I32 APS_emg_stop(I32 Axis_ID);

- 立刻停止

6.7.1 运动状态监视

n I32 APS_motion_status( I32 Axis_ID )

-运动状态监视

注意:

1、建议在正式运动前开启运动状态监视,以便于在运动之后能够实时监视运动状态变化。

6.7.2 位置&速度监视

n I32 APS_get_command( I32 Axis_ID, I32 *Command )

-指令位置监视

n I32 APS_get_position( I32 Axis_ID, I32 *Position );

-反馈位置监视

n I32 APS_get_error_position( I32 Axis_ID, I32 *Err_Pos )

-偏差位置监视

n I32 APS_get_command_velocity(I32 Axis_ID, I32 *Velocity )

-指令速度监视

n I32 APS_get_feedback_velocity(I32 Axis_ID, I32 *Velocity);

-反馈速度监视

注意:

1、建议在正式运动前开启位置及速度监视,以便于在运动之后能够实时监视位置及速度变化

6.7.3 位置&速度监视

n I32 APS_get_command( I32 Axis_ID, I32 *Command )

-指令位置监视(仅用于I32参数类型)

n I32 APS_get_position( I32 Axis_ID, I32 *Position )

-反馈位置监视(仅用于I32参数类型)

n I32 APS_get_error_position( I32 Axis_ID, I32 *Err_Pos )

-偏差位置监视(仅用于I32参数类型)

n I32 APS_get_command_velocity(I32 Axis_ID, I32 *Velocity )

-指令速度监视(仅用于I32参数类型)

n I32 APS_get_feedback_velocity(I32 Axis_ID, I32 *Velocity)

-反馈速度监视(仅用于I32参数类型)

注意:

1、建议在正式运动前开启位置及速度监视,以便于在运动之后能够实时监视位置及速度变化

6.8 位置重置

n I32 APS_set_command(I32 Axis_ID, I32 Command)

-指令位置重置(仅用于I32参数类型)

n I32 APS_set_position(I32 Axis_ID, I32 Position)

-反馈位置重置(仅用于I32参数类型)

注意:

1、在回零完成后,可以立刻使用位置重置函数。之后,则请谨慎使用位置重置函数。它将改变设备的参考零点位置。

6.9.1 PTP运动

n I32 APS_relative_move( I32 Axis_ID, I32 Distance, I32 Max_Speed )

-相对运动

n I32 APS_absolute_move( I32 Axis_ID, I32 Position, I32 Max_Speed )

-绝对运动

注意:

1、该2条函数可以实现在线变速/变位

6.9.2 JOG运动

n I32 APS_jog_start( I32 Axis_ID, I32 STA_On );

-JOG运动

非标自动化之运动控制卡编程及应用

6.9.3 插补运动

n I32 APS_absolute_linear_move( I32 Dimension, I32 *Axis_ID_Array, I32 *Position_Array, I32 Max_Linear_Speed )

-绝对线性运动

n I32 APS_relative_linear_move( I32 Dimension, I32 *Axis_ID_Array, I32 *Distance_Array, I32 Max_Linear_Speed )

-相对线性运动

n I32 APS_absolute_arc_move( I32 Dimension, I32 *Axis_ID_Array, I32 *Center_Pos_Array, I32 Max_Arc_Speed, I32 Angle )

-绝对圆弧运动

n I32 APS_relative_arc_move( I32 Dimension, I32 *Axis_ID_Array, I32 *Center_Offset_Array, I32 Max_Arc_Speed, I32 Angle )

-相对圆弧运动

6.10 关闭卡片

n I32 APS_close()

-关闭卡片

继续阅读