本技术涉及伺服控制,具体而言,涉及一种运动控制器的控制方法、运动控制器和可读存储介质。
背景技术:
1、在相关技术中,codesys(controller development system,工业控制)提供了可编程逻辑控制器(programmable logic controller,plc)的完整开发环境,能够实现快速搭建运动控制器。
2、由于codesys不支持高速io(input/output,输入/输入)的脉冲轴控制,因此基于codesys软件的脉冲轴控制一般采用虚拟轴的方式进行,比如通过功能模块控制虚拟轴,将虚轴的输出转化具体的脉冲进而控制脉冲型伺服驱动器,这种方法需要通过映射变量的方式将虚拟轴中的轴位置、轴控制周期、轴状态信息等映射到脉冲定时器中,实现方法复杂。
技术实现思路
1、本技术旨在至少解决现有技术或相关技术中存在的技术问题之一。
2、为此,本技术的第一方面提出一种运动控制器的控制方法。
3、本技术的第二方面提出一种运动控制器。
4、本技术的第三方面提出一种运动控制器。
5、本技术的第四方面提出一种可读存储介质。
6、有鉴于此,本技术的第一方面提供了一种运动控制器的控制方法,运动控制器包括主控制器和与主控制器通过总线连接的扩展模块,运动控制器的控制方法应用于主控制器,控制方法包括:基于功能模块对应的运动控制接口生成控制组件,控制组件用于通过运动控制接口调用功能模块以生成驱动控制信息;基于数据交互接口生成接口组件,接口组件用于接收驱动控制信息,并将驱动控制信息发送至扩展模块,以供扩展模块根据驱动控制信息生成脉冲驱动信号。
7、在该技术方案中,运动控制器用于生成脉冲驱动信号,脉冲驱动信号用于指示脉冲伺服驱动器驱动电机旋转,在工业自动化领域内,codesys平台由于具有放式、可重构、组件化等特点,且能够支持工业领域常见的工业总线和多种编程语言,因此被广泛应用于运动控制器的控制上。
8、codesys虽然支持广泛的现场总线,但是不支持高速io的脉冲轴,一般的解决办法是采用虚拟轴的方式,通过软件(如codesyssoftmotion软件)提供的功能模块生成并控制虚拟轴,将虚拟轴的输出转化为具体的脉冲进而控制脉冲型运动控制器,其中,需要将虚拟轴中的位置、轴控制周期、轴状态信息等变量映射到硬件控制器的脉冲定时器中,以满足发送脉冲或者pwm调制(pulse-width modulation,脉冲宽度调制)等功能需求。运动控制器包括主控制器和与主控制器通过总线连接的扩展模块,主控制器可以为处理器,拓展模块中包括脉冲生成器。
9、上述使用虚拟轴的方法中映射变量的步骤繁琐,需要额外添加管理脉冲轴状态,导致实现方法复杂,且由于虚拟轴的自身特性,其实际位置等于目标位置,因此无法实现闭环控制。
10、针对上述问题,本技术技术方案提出的运动控制器的控制方法中,定义了两个独立的功能组件,具体包括控制组件和接口组件,其中,运动控制接口为高速io接口,控制组件能够实现主控制器上部署的一个或多个控制模块的功能调用接口,比如计数器接口和脉冲轴控制接口,从而实现系统上层数据和底层数据之间的实时交互。在进行控制时,在编程环境中实例化功能模块的名称即可实现对功能模块的调用,生成具体的驱动控制信息,通过该驱动控制信息能够实现对运动控制器的运动控制。
11、接口组件能够实现主站设备与扩展模块之间的实时数据交互,包括数字输入di(digital input)和数字输出do(digital output),从而将控制组件中得到的驱动控制信号发送给扩展模块,通过扩展模块生成脉冲驱动信号,同时能够通过接口模块获取点击运转过程中的位置、转速、状态等变量,即实现打通基于高速io的整体数据流通道,不需要通过虚拟轴的状态进行转换得到,能够实现电机闭环控制。
12、示例性地,以主控设备的主控芯片,也即上述主控制器为imx6dual芯片,通过fpga(field programmable gate array,现场可编程门阵列)作为扩展模块为例,imx6dual芯片通过串行外设接口(serial peripheral interface,spi)与fpga信号连接,imx6dual芯片上运行一个实时的linux-rt系统,实时性可以控制到60us以内,能够保证系统的高速io性能。在操作系统上面运行了codesys的核心runtime环境,在runtime环境中加载控制组件和交互组件。
13、控制组件调用功能模块,实现运动控制算法规则,得到具体的驱动控制信息。交互模块接收到主控模块生成的驱动控制信息后,通过spi将驱动控制信息发送至fpga上,fpga作为脉冲发生器,给与脉冲驱动器一定频率的脉冲驱动信号,从而驱动电机旋转。
14、本技术技术方案定义了控制组件和接口组件,通过控制组件打通codesys系统上层数据与底层数据之间的数据通道,并通过接口组件实现主控制器主控芯片与外部扩展模块之间的实时数据交互,实现了基于codesys的高速io数据流通道,从而实现了在codesys平台下的高速io的脉冲轴控制,且不需要依赖虚拟轴方法,简化了运动控制器的虚拟轴控制的方法复杂度,并实现了闭环控制。
15、另外,本技术提供的上述技术方案中的运动控制器的控制方法还可以具有如下附加技术特征:
16、在本技术的一些技术方案中,可选地,基于数据交互接口生成接口组件的步骤,包括:获取接口描述文件,接口描述文件中定义有数据交互接口的接口信息;生成第一动态库,第一动态库用于解析接口描述文件,以得到接口信息对应的参数值;在主控制器上加载第一动态库,得到接口组件。
17、在该技术方案中,定义接口描述文件,示例性地,接口描述文件为可扩展标记语言的形式,也即xml文件。示例性地,接口描述文件为iodrvhsio.devdesc.xml。接口描述文件可以用户定义的。
18、在接口描述文件中定义有数据交互接口的接口信息,比如数据交互接口的接口类型、数据交互接口的输入数据和输出数据的数据类型、具体参数信息等。该数据交互接口具体为用于与扩展模块之间进行数据交互的接口。
19、生成第一动态库,该第一动态库可以基于外部库实现,示例性地,第一动态库为libiodrvhsio.so。在主控制器上加载第一动态库之后,就得到了接口组件,部署的接口组件能够对接口描述文件进行解析,从而得到其中定义的参数,并赋值到全局变量中,以供其他接口调用这些参数值,从而实现打通数据交互通路。
20、本技术技术方案通过接口描述文件定义数据交互接口的接口信息,并通过加载动态库的方式部署接口组件,接口组件能够对接口描述文件中的参数进行解析,并赋值到全局变量中供其他接口调用,实现了打通高速io接口的数据通路。
21、在本技术的一些技术方案中,可选地,接口信息包括:数据交互接口的接口类型、数据交互接口的输入参数、数据交互接口的输出参数、计数器参数和脉冲轴参数。
22、在该技术方案中,接口信息具体包括数据交互接口的接口类型moduletype。该接口类型是底层库对接口进行唯一识别的信息,因此在系统中,这项参数不能被重复设置,每个接口仅对应唯一的接口类型。
23、接口信息还包括交互接口的输入参数和输出参数,用于定义输入端口和输出端口的参数。接口信息还包括计数器参数和脉冲轴参数,其中,计数器参数用于脉冲计数,脉冲轴参数用于进行脉冲轴控制。
24、示例性地,在xml文件中按照一定格式定义计数器脉冲轴、以及其他的参数的结构体描述,比如定义<parametersection></parametersection>标识字段定义参数段,在parametersection中定义具体的参数parameter通道,参数通过parameterid进行唯一验证识别,每个connector中的parameterid是唯一的,并且带有其他属性。
25、接口模块可以对xml文件中的参数进行解析,举例来说,接口模块首先根据connector的moduletype类型匹配目标接口的xml文件,然后对其进行解析,根据parameterid读取参数值,并赋值到全局变量中,供其他及接口调用。
26、本技术技术方案通过在接口描述文件中定义接口信息,以供接口组件读取调用,实现了基于codesys的高速io数据流通道,从而实现了在codesys平台下的高速io的脉冲轴控制。
27、在本技术的一些技术方案中,可选地,在主控制器上加载第一动态库的步骤之后,控制方法还包括:对解析到的参数值进行校验,得到参数值对应的校验结果;在校验结果为配置错误的情况下,生成提示信息。
28、在该技术方案中,在主控制器上加载第一动态库,得到接口组件后,接口组件能够对接口描述文件进行解析,并得到其中的接口信息所关联的参数值,包括接口类型、输入参数、输出参数、计数器参数和脉冲轴参数等。
29、在解析得到上述参数后,对其中的每一个参数值均进行校验处理,从而确认这些参数值是否配置正确,如参数格式是否正确、参数是否处于合理的数值范围内以及是否有端口被重复调用,当校验结果为配置正确时,接口组件会将解析到的交互接口相关联的参数信息赋值到全局变量中,供其他接口调用。
30、当校验结果为配置错误时,如出现了某个参数的参数值的数值区间不合理、某个参数值的参数格式不正确或者存在被重复利用的端口,则生成对应的提示信息,提示用户接口描述文件中定义的接口信息存在错误,应当对其进行修正。
31、能够理解的是,在用户定义接口描述文件后,也可以提供对接口描述文件进行快速校验的程序脚本,即在部署接口组件之前,首先对接口描述文件进行校验,从而判断其中定义的接口信息是否正确,并在校验结果为其中存在配置错误的参数项时,如存在数据格式不正确或者存在重复的接口类型时,提示用户进行修改。
32、本技术技术方案对接口描述文件中定义的接口信息进行校验,从而自动对参数错误进行识别,避免出现参数格式不正确或者出现接口重复利用等问题,提高通过高速io实现脉冲轴控制的可靠性。
33、在本技术的一些技术方案中,可选地,控制方法还包括:基于对接口描述文件的解析结果,通过接口组件向扩展模块发送初始化配置参数,初始化配置参数用于指示驱动控制信息对应的参数结构。
34、在该技术方案中,在系统启动后,比如在操作系统上成功运行了codesys了的核心runtime环境时,自动加载接口组件和控制组件。在接口组件被加载成功后,接口组件首先获取task调用周期值,也即运动控制器的控制周期值,并通过串行外设接口spi发送给扩展模块fpga中,以供fpga根据该周期值确定脉冲信号的发送周期。
35、然后,接口组件对接口描述文件进行解析,并根据解析结果,将通过高速io进行脉冲轴控制时需要调用的功能、接口和数据参数信息等参数作为初始化配置参数发送给扩展模块,扩展模块根据初始化配置参数确定通信过程中需要调用的接口和参数结构等。
36、该初始化配置参数仅需要发送一次,当接口描述文件发生更改后,则再次发送调整后的初始化配置参数。
37、本技术技术方案通过接口组件将初始化配置参数发送给扩展模块,从而在主控制器侧和扩展模块侧同步高速io配置参数,提高数据交互效率。
38、在本技术的一些技术方案中,可选地,基于功能模块对应的运动控制接口生成控制组件的步骤,包括:获取运动控制接口对应的接口信息、输入数据类型和输出数据类型;对接口信息、输入数据类型和输出数据类型进行编译处理,得到数据文件;根据数据文件生成控制组件。
39、在该技术方案中,在数据库中定义有所有关键高速io接口,也即运动控制接口的功能模块的及接口信息,通过外部库获取到运动控制接口对应的接口信息,具体包括计数器接口和脉冲轴接口的接口信息,并定义内部的input输入数据类型和output输出数据类型。
40、在得到接口信息、输入数据类型和输出数据类型等数据后,对这些数据进行编译处理,得到编译后的数据文件,示例性地,定义数据文件为cmphsioitf.m4文件。
41、该数据文件中定义有运动控制器的运动控制过程中需要调用的功能模块的接口信息和数据类型,通过这些定义的信息能够确定每一种运动控制功能所需要调用的模块、调用该模块时的接口和数据格式等,使得生成的控制组件能够串联codesys的上层数据中的具体功能实现和底层数据之间的信息交互。
42、本技术技术方案通过对运动控制过程中需要调用的功能模块的接口信息和输入、输出数据类型等信息进行编译得到数据文件,根据该数据文件构建的控制组件能够打通系统上层数据和底层数据,从而生成具体的驱动控制信息并发送给接口组件,实现基于codesys平台的高速io的脉冲轴控制。
43、在本技术的一些技术方案中,可选地,根据数据文件生成控制组件的步骤,包括:根据数据文件,在外部库中构建运动控制功能模块,运动控制功能模块用于生成驱动控制信息;对外部库进行编译处理,得到动态链接库;在运动控制器对应的配置文件中加载动态链接库,得到控制组件。
44、在该技术方案中,数据文件中定义有运动控制需要调用的具体功能模块的接口信息和数据类型,以数据文件具体为cmphsioitf.m4文件为例,在外部库中具体实现cmphsioitf.m4文件中定义的所有接口,从而实现对运动控制算法的部署,从而构建能够生成用于控制运动控制器运动的驱动控制信息的运动控制功能模块。
45、对该外部库进行编译处理,从而生成动态链接库(dynamic link library,dll),并在运动控制器的配置文件中加载编译得到的动态链接库。在codesys平台系统中运行的进程可以调用动态链接库中的函数,从而调用运动控制功能模块,从而实现运动控制算法。
46、本技术技术方案通过生成动态链接库的方式,使得进程可以调用动态链接库中的运动控制功能模块的函数,实现对运动控制过程中所需的功能模块的实时调用,实现了对脉冲式运动控制器的控制。
47、在本技术的一些技术方案中,可选地,方法还包括:接收控制指令信息,控制指令信息指示第一功能模块,功能模块包括第一功能模块;运行控制组件,控制组件基于控制指令信息调用第一功能模块,以生成控制指令信息对应的第一驱动控制信息,并将第一驱动控制信息发送至接口组件;运行接口组件,接口组件获取运动控制器对应的控制周期,根据控制周期将接收到的第一驱动控制信息发送至脉冲伺服驱动器。
48、在该技术方案中,控制指令信息具体为控制运动控制器对电机进行运动控制的指令,控制指令信息中一般携带有位置指令,该位置指令指示特定电机的特定位置,即控制电机运行至目标位置的指令。为了实现对电机的控制,需要调用特定的功能模块,具体为调用第一功能模块。
49、控制组件在接收到上述控制指令信息后,基于控制指令信息中携带的信息定位此次运动控制中需要调用的第一功能模块,并通过定义的第一功能模块的接口信息、输入数据格式和输出数据格式等信息,对第一功能模块进行调用。
50、第一功能模块响应于控制组件的调用,并根据控制指令信息中携带的位置信息等,基于运动控制算法生成与控制指令信息相匹配的第一驱动控制信息,该第一驱动控制信息用于指示运动控制器控制电机运行到目标位置。
51、控制组件在通过调用第一功能模块生成第一驱动控制信息后,将第一驱动控制信息发送到接口组件中,接口组件将接收到的第一驱动控制信息,通过串行外设接口spi发送给扩展模块,扩展模块根据第一驱动控制信息生成对应的脉冲驱动信号,从而完成对运动控制器的控制。
52、示例性地,接口组件在运动控制的周期循环函数中,获取控制塑件发送的驱动控制信息,该驱动控制信息指示了脉冲轴的运动轨迹规划,接口组件按照脉冲控制周期,通过高速io接口周期性将驱动控制信息发送给扩展模块fpga中,同时读取高速io接口的输入至,更新数字输入信息di,实现闭环控制。
53、本技术技术方案实现基于codesys平台的高速io的脉冲轴控制,且不需要依赖虚拟轴方法,简化了运动控制器的虚拟轴控制的方法复杂度,并实现了闭环控制。
54、在本技术的一些技术方案中,主控制器与存储器信号连接,存储器包括第一存储空间,第一存储空间为控制组件和接口组件共享的存储空间;控制组件通过第一存储空间将驱动控制信息发送至接口组件。
55、在该技术方案中,存储器就具体为运行内存,示例性地,存储器可以是随机存取存储器(random access memory,ram),静态随机存取存储器(static ram,sram)、动态随机存取存储器(dynamic ram,dram)、同步动态随机存取存储器(synchronous dram,sdram)、双倍数据速率同步动态随机存取存储器(double data rate sdram,ddrsdram)、增强型同步动态随机存取存储器(enhanced sdram,esdram)、同步连接动态随机存取存储器(synchlink dram,sldram)和直接内存总线随机存取存储器(direct rambus ram,drram)。
56、主控制器与存储器信号连接,从而对其中存储的内存数据进行读取。存储器中包括第一存储空间,该第一存储空间具体为控制组件和接口组件共享的存储控件,也即控制组件和接口组件均可以对第一存储空间内的内存数据进行读、写操作。
57、在控制组件生成驱动控制信息后,控制组件将控制信息写入存储器的第一存储空间内,接口组件按照设定周期,周期性访问第一存储空间,并获取其中存储的驱动控制信息。在获取到驱动控制信息后,接口组件通过高速io接口将驱动控制信息发送给扩展模块,同时读取高速io接口的输入信号,得到电机实时的转速、位置等反馈信息,将这些反馈写入第一存储空间。
58、控制组件读取第一存储空间内的反馈信息,并发送至上层数据的控制模块中,从而实现闭环控制。
59、本技术技术方案的控制组件和接口组件通过共享内存的方式实现数据交互,数据交互的实时性高、延迟低,能够提高脉冲轴控制的实时性。
60、在本技术的一些技术方案中,可选地,主控制器上运行有codesys软件编程工具,控制组件和接口组件均为基于codesys软件编程工具的runtime组件。
61、在该技术方案中,主控制器采用imx6dual硬件平台,在主控制器上运行codesysruntime环境。示例性地,主控制器和扩展模块之间通过spi进行数据通信,最高支持24mhz的频率。扩展模块接收脉冲驱动器的脉冲,作为高速普通io或者计数器使用,接收编码器反馈的值,可以获取变频器的转速等参数;或者作为脉冲发生器,给脉冲驱动器以一定频率发送脉冲,控制电机旋转。
62、本技术第二方面提供了一种运动控制器,包括:生成模块,用于基于功能模块对应的运动控制接口生成控制组件,控制组件用于通过运动控制接口调用功能模块以生成驱动控制信息;以及基于数据交互接口生成接口组件,接口组件用于接收驱动控制信息,并将驱动控制信息发送至扩展模块,以供扩展模块根据驱动控制信息生成脉冲驱动信号。
63、在该技术方案中,运动控制器用于生成脉冲驱动信号,脉冲驱动信号用于指示脉冲伺服驱动器驱动电机旋转,在工业自动化领域内,codesys平台由于具有放式、可重构、组件化等特点,且能够支持工业领域常见的工业总线和多种编程语言,因此被广泛应用于运动控制器的控制上。
64、codesys虽然支持广泛的现场总线,但是不支持高速io的脉冲轴,一般的解决办法是采用虚拟轴的方式,通过软件(如codesyssoftmotion软件)提供的功能模块生成并控制虚拟轴,将虚拟轴的输出转化为具体的脉冲进而控制脉冲型运动控制器,其中,需要将虚拟轴中的位置、轴控制周期、轴状态信息等变量映射到硬件控制器的脉冲定时器中,以满足发送脉冲或者pwm调制(pulse-width modulation,脉冲宽度调制)等功能需求。
65、上述使用虚拟轴的方法中映射变量的步骤繁琐,需要额外添加管理脉冲轴状态,导致实现方法复杂,且由于虚拟轴的自身特性,其实际位置等于目标位置,因此无法实现闭环控制。
66、针对上述问题,本技术技术方案提出的运动控制器的控制方法中,定义了两个独立的功能组件,具体包括控制组件和接口组件,其中,运动控制接口为高速io接口,控制组件能够实现处理器上部署的一个或多个控制模块的功能调用接口,比如计数器接口和脉冲轴控制接口,从而实现系统上层数据和底层数据之间的实时交互。在进行控制时,在编程环境中实例化功能模块的名称即可实现对功能模块的调用,生成具体的驱动控制信息,通过该驱动控制信息能够实现对运动控制器的运动控制。
67、接口组件能够实现主站设备与扩展模块之间的实时数据交互,包括数字输入di(digital input)和数字输出do(digital output),从而将控制组件中得到的驱动控制信号发送给扩展模块,通过扩展模块生成脉冲驱动信号,同时能够通过接口模块获取点击运转过程中的位置、转速、状态等变量,即实现打通基于高速io的整体数据流通道,不需要通过虚拟轴的状态进行转换得到,能够实现电机闭环控制。
68、示例性地,以主控设备的主控芯片,也即上述处理器为imx6dual芯片通过fpga(field programmable gate array,现场可编程门阵列)作为扩展模块为例,imx6dual芯片通过串行外设接口(serial peripheral interface,spi)与fpga信号连接,imx6dual芯片上运行一个实时的linux-rt系统,实时性可以控制到60us以内,能够保证系统的高速io性能。在操作系统上面运行了codesys的核心runtime环境,在runtime环境中加载控制组件和交互组件。
69、控制组件调用功能模块,实现运动控制算法规则,得到具体的驱动控制信息。交互模块接收到主控模块生成的驱动控制信息后,通过spi将驱动控制信息发送至fpga上,fpga作为脉冲发生器,给与脉冲驱动器一定频率的脉冲驱动信号,从而驱动电机旋转。
70、本技术技术方案定义了控制组件和接口组件,通过控制组件打通codesys系统上层数据与底层数据之间的数据通道,并通过接口组件实现处理器主控芯片与外部扩展模块之间的实时数据交互,实现了基于codesys的高速io数据流通道,从而实现了在codesys平台下的高速io的脉冲轴控制,且不需要依赖虚拟轴方法,简化了运动控制器的虚拟轴控制的方法复杂度,并实现了闭环控制。
71、本技术第三方面提供了一种运动控制器,包括:存储器,用于存储程序或指令;处理器,用于执行程序或指令时实现如上述任一技术方案中提供的运动控制器的控制方法的步骤,因此也包括其全部有益效果,为避免重复,在此不再赘述。
72、本技术第四方面提供了一种可读存储介质,其上存储有程序或指令,程序或指令被处理器执行时实现如上述任一技术方案中提供的运动控制器的控制方法的步骤,因此也包括其全部有益效果,为避免重复,在此不再赘述。
1.一种运动控制器的控制方法,其特征在于,所述运动控制器包括主控制器和与所述主控制器通过总线连接的扩展模块,所述运动控制器的控制方法应用于所述主控制器,所述控制方法包括:
2.根据权利要求1所述的控制方法,其特征在于,所述基于数据交互接口生成接口组件的步骤,包括:
3.根据权利要求2所述的控制方法,其特征在于,所述接口信息包括:
4.根据权利要求2所述的控制方法,其特征在于,所述在所述主控制器上加载所述第一动态库的步骤之后,所述控制方法还包括:
5.根据权利要求2所述的控制方法,其特征在于,所述控制方法还包括:
6.根据权利要求1所述的控制方法,其特征在于,所述基于功能模块对应的运动控制接口生成控制组件的步骤,包括:
7.根据权利要求6所述的控制方法,其特征在于,所述根据所述数据文件生成所述控制组件的步骤,包括:
8.根据权利要求1至7中任一项所述的控制方法,其特征在于,还包括:
9.根据权利要求1至7中任一项所述的控制方法,其特征在于,所述主控制器与存储器信号连接,所述存储器包括第一存储空间,所述第一存储空间为所述控制组件和所述接口组件共享的存储空间;
10.根据权利要求1至7中任一项所述的控制方法,其特征在于,所述主控制器上运行有codesys软件编程工具,所述控制组件和所述接口组件均为基于codesys软件编程工具的runtime组件。
11.一种运动控制器,其特征在于,包括主控制器和扩展模块,所述主控制器包括:
12.一种运动控制器,其特征在于,包括:
13.一种可读存储介质,其上存储有程序或指令,其特征在于,所述程序或指令被处理器执行时实现如权利要求1至10中任一项所述的运动控制器的控制方法的步骤。