采用现场可编辑逻辑门阵列实现电子齿轮输出的方法技术领域
本发明涉及一种采用现场可编辑逻辑门阵列实现电子齿轮输出的方法。
背景技术
在伺服系统中一般采用光电编码器的输出信号作为位置反馈信号,当电机旋转时,根据光电编码器产生的脉冲数来对电机进行精确的定位。在实际应用中,上位机并不需要伺服系统那样精密的位置控制。例如2500线光电编码器电机,电机旋转一圈,光电编码器反馈为2500个正交脉冲,但上位机只需要认定一圈250个正交脉冲。此时,伺服驱动器对应的电子齿轮输出就需要设置成1:10,将2500个正交脉冲改为250个正交脉冲输出给上位机。因此,电子齿轮功能实际是一种任意比例分频功能。
通常伺服驱动器电子齿轮输出功能大多预先计算好电子齿轮分频数据,并将数据放入RAM等存储器中。在正常使用过程中,通过光电编码器的反馈脉冲对RAM存储器进行不断地查表,将表格中对应的数据以正交脉冲形式输出,用以实现电子齿轮功能。此方法在硬件方面需要有一个快速读取、至少有14位地址的存储器,并将14个地址的对应引脚、数据的对应引脚与现场可编辑逻辑门阵列(简称FPGA)连接;在软件方面,需要在上电初始化内将电子齿轮比以数据的形式写入存储器中。因此可以看出该方法对硬件性价比不是很好,软件初始化耗时;而且对于非脉冲形式编码器(如旋转变压器、绝对式编码器)的反馈信号就显得无能为力,必须先将反馈形式转换成脉冲形式才行。
对于非脉冲形式编码器,其在数字电路中,反馈信号以二进制数据出现,通过在单位时间内读取开头和结尾的数据,并对其求出增量,就可以知道单位时间内电机旋转了多少位置及旋转方向。再对增量乘以电子齿轮比,加入上一次单位时间剩下的小数数据,合成新的整数加小数数据,将整数提取出来,在本次单位时间内平均发送出整数个脉冲,以这种形式完成电子齿轮输出功能。该方法在硬件方面省去了存储器和对应的FPGA引脚,在软件方面省去了上电初始化的操作。该方法对于脉冲输入形式也能实现,不过没有该方法直接、实时。对FPGA的宏单元资源要求极大,需要做出多个乘法,除法计算及存储能够描述该小数数据的资源,在FPGA宏单元资源利用方面性价比不是很好。
发明内容
本发明所要解决的技术问题是提供一种采用现场可编辑逻辑门阵列实现电子齿轮输出的方法,本方法可适用于脉冲形式编码器和非脉冲形式编码器实现电子齿轮输出功能,通过现场可编辑逻辑门阵列能够快速反应、处理及输出上位机所需脉冲信号,提高了硬件资源利用的性能。
为解决上述技术问题,本发明采用现场可编辑逻辑门阵列实现电子齿轮输出的方法包括如下步骤:
步骤一、设定公式 (1)
式(1)中:B1为非脉冲形式编码器在单位时间内输出的二进制数据增量、A1为单位时间所对应的现场可编辑逻辑门阵列的晶振次数、C1为现场可编辑逻辑门阵列输出的脉冲个数、D1为常数,其值为A1B1/C1;
步骤二、非脉冲形式编码器输出的二进制数据传输至现场可编辑逻辑门阵列,现场可编辑逻辑门阵列中设置第一寄存器,初始值为0,现场可编辑逻辑门阵列在每次晶振触发操作时,第一寄存器内加入二进制数据增量B1;
步骤三、比较第一寄存器内的二进制数据增量B1和现场可编辑逻辑门阵列的晶振次数A1,如果D1≤B1≤- D1,现场可编辑逻辑门阵列输出一次脉冲,并且根据≥D1或≤-D1选择输出脉冲为正转脉冲或反转脉冲,同时第一寄存器加上或减去D1,使第一寄存器始终保持在(-D1 ,D1)范围内;
步骤四、单位时间内现场可编辑逻辑门阵列输出的脉冲个数C1与非脉冲形式编码器输出的二进制数据增量B1相等;
步骤五、设定公式 (2)
式(2)中:B2为电子齿轮比值的分子、A2为伺服驱动器接收到的脉冲个数、C2为现场可编辑逻辑门阵列输出的电子齿轮脉冲个数、D2为电子齿轮比值的分母;其中,伺服驱动器接收到的脉冲个数A2是步骤四中的现场可编辑逻辑门阵列输出的脉冲个数C1或直接由脉冲形式编码器输出的脉冲个数;
步骤六、在现场可编辑逻辑门阵列中设置第二寄存器,初始值为0,伺服驱动器在接收到A2的每个脉冲时,对第二寄存器进行加上或减去电子齿轮比值分子B2的操作;
步骤七、将第二寄存器与电子齿轮比值的分母D2进行比较,如果D2≤B2≤- D2,现场可编辑逻辑门阵列输出一次脉冲,并且根据≥D2或≤-D2选择输出正转脉冲或反转脉冲,同时第二寄存器加上或减去D2,使第二寄存器始终保持在(-D2 ,D2)范围内;
步骤八、根据式(2),现场可编辑逻辑门阵列输出电子齿轮脉冲C2,并且对此脉冲C2进行转换成上位机能够识别的脉冲形式,进行输出。
进一步,在A1次晶振结束后,第一寄存器内的数据清零,根据式(1)的意义,A1次B1的叠加减去C1次D1的叠加等于零,此时修改二进制数据增量B1,从而改变单位时间内现场可编辑逻辑门阵列输出的脉冲个数C1。
进一步,在A2次脉冲后,第二寄存器内的数据清零,根据式(2)的意义,A2次B2的叠加减去C2次D2的叠加等于零,此时变更电子齿轮比值,避免第二寄存器数据紊乱。
由于本发明采用现场可编辑逻辑门阵列实现电子齿轮输出的方法采用了上述技术方案,即本方法首先在现场可编辑逻辑门阵列中设置第一寄存器,根据公式将非脉冲形式编码器输出的二进制数据增量加入第一寄存器,并使其与现场可编辑逻辑门阵列的晶振次数相关,从而得到非脉冲形式编码器的脉冲个数;然后在现场可编辑逻辑门阵列中设置第二寄存器,根据公式将非脉冲形式编码器的脉冲个数或脉冲形式编码器的脉冲个数加入第二寄存器,并且与已设置的电子齿轮比值的分子、分母相关,从而由现场可编辑逻辑门阵列按电子齿轮比值输出脉冲,实现电子齿轮输出。本方法可适用于脉冲形式编码器和非脉冲形式编码器实现电子齿轮输出功能,通过现场可编辑逻辑门阵列能够快速反应、处理及输出上位机所需脉冲信号,提高了硬件资源利用的性能。
附图说明
下面结合附图和实施方式对本发明作进一步的详细说明:
图1为本方法的流程框图。
具体实施方式
实施例如图1所示,本发明采用现场可编辑逻辑门阵列实现电子齿轮输出的方法包括如下步骤:
步骤一、设定公式 (1)
式(1)中:B1为非脉冲形式编码器在单位时间内输出的二进制数据增量、A1为单位时间所对应的现场可编辑逻辑门阵列的晶振次数、C1为现场可编辑逻辑门阵列输出的脉冲个数、D1为常数,其值为A1B1/C1;其中二进制数据增量也可以是负数,脉冲个数为正转脉冲和反转脉冲之和;
步骤二、非脉冲形式编码器输出的二进制数据传输至现场可编辑逻辑门阵列,现场可编辑逻辑门阵列中设置第一寄存器,初始值为0,现场可编辑逻辑门阵列在每次晶振触发操作时,第一寄存器内加入二进制数据增量B1;现场可编辑逻辑门阵列是一个并行运算系统,每一次晶振都能使现场可编辑逻辑门阵列操作一次;
步骤三、比较第一寄存器内的二进制数据增量B1和现场可编辑逻辑门阵列的晶振次数A1,如果D1≤B1≤- D1,现场可编辑逻辑门阵列输出一次脉冲,并且根据≥D1或≤-D1选择输出脉冲为正转脉冲或反转脉冲,同时第一寄存器加上或减去D1,使第一寄存器始终保持在(-D1 ,D1)范围内;
步骤四、单位时间内现场可编辑逻辑门阵列输出的脉冲个数C1与非脉冲形式编码器输出的二进制数据增量B1相等;
步骤五、设定公式 (2)
式(2)中:B2为电子齿轮比值的分子、A2为伺服驱动器接收到的脉冲个数、C2为现场可编辑逻辑门阵列输出的电子齿轮脉冲个数、D2为电子齿轮比值的分母;其中,伺服驱动器接收到的脉冲个数A2是步骤四中的现场可编辑逻辑门阵列输出的脉冲个数C1或直接由脉冲形式编码器输出的脉冲个数;
步骤六、在现场可编辑逻辑门阵列中设置第二寄存器,初始值为0,伺服驱动器在接收到A2的每个脉冲时,对第二寄存器进行加上或减去电子齿轮比值分子B2的操作;
步骤七、将第二寄存器与电子齿轮比值的分母D2进行比较,如果D2≤B2≤- D2,现场可编辑逻辑门阵列输出一次脉冲,并且根据≥D2或≤-D2选择输出正转脉冲或反转脉冲,同时第二寄存器加上或减去D2,使第二寄存器始终保持在(-D2 ,D2)范围内;
步骤八、根据式(2),现场可编辑逻辑门阵列输出电子齿轮脉冲C2,并且对此脉冲C2进行转换成上位机能够识别的脉冲形式,进行输出。
进一步,在现场可编辑逻辑门阵列A1次晶振结束后,第一寄存器内的数据清零,根据式(1)的意义,A1次B1的叠加减去C1次D1的叠加等于零,此时可以修改二进制数据增量B1,从而改变单位时间内现场可编辑逻辑门阵列输出的脉冲个数C1。
本方法中,对于非脉冲形式编码器来说,A1次晶振作为其脉冲信号的计数周期,如果不是在A1次晶振结束后第一寄存器清0,即第一寄存器内的数据不为0时改变增量B1,则第一寄存器内的数据将不再起到正确作用,现场可编辑逻辑门阵列输出的脉冲个数C1将不再正确,同时脉冲C1不能正确反映单位时间的输出脉冲。
对于非脉冲形式编码器,其在数字电路中,反馈信号以二进制数据出现,通过在单位时间内读取开头和结尾的数据,并对其求出增量,就可以知道单位时间内电机旋转了多少位置及旋转方向。要使式(1)具有实际应用意义,则需将单位时间内现场可编辑逻辑门阵列的晶振次数定义为A1即可。举例:通讯周期为100ms,现场可编辑逻辑门阵列的外部晶振频率为100MHz,则A1=100MHz*100ms=10000,即单位时间100ms内,外部晶振震荡了10000次,现场可编辑逻辑门阵列进行了10000次并行操作。
进一步,由于电子齿轮比值在现场可编辑逻辑门阵列中以二进制数据的形式存在,是可以随时改变的。因此在A2次脉冲后,第二寄存器内的数据清零,根据式(2)的意义,A2次B2的叠加减去C2次D2的叠加等于零,此时才可以考虑变更电子齿轮比值,同时避免第二寄存器数据紊乱。此功能在实际应用中,需要在A2次脉冲或其倍数时,才能修改电子齿轮比值,此功能可用于在上电初始化时设置电子齿轮比值,提高了电子齿轮比值设置的灵活性。同样,如果不是在A2次晶振结束后,即第二寄存器内的数据不为0时,改变电子齿轮比值的分子B2、分母D2,则第二寄存器内的数据将不再起到正确功能,现场可编辑逻辑门阵列输出的脉冲个数C2将不再正确,电子齿轮输出将会出现少输出脉冲或多输出脉冲的现象。
本方法完全可以实现只采用现场可编辑逻辑门阵列实现电子齿轮输出的算法,适用于非脉冲形式编码器和脉冲形式编码器反馈的伺服系统。在运行过程中并未使用到乘法、除法、小数运算等极消耗现场可编辑逻辑门阵列宏单元资源的运算,也未使用外部存储器这种极消耗现场可编辑逻辑门阵列引脚资源的方法,相较于传统的电子齿轮输出方法提高了硬件的性价比。伺服系统中电子齿轮输出工作需要对每一个输入脉冲进行计算、加以分频操作并及时输出,如果交由伺服系统中单片机、DSP这类顺序处理芯片,会消耗许多运算资源。本方法将电子齿轮输出交由现场可编辑逻辑门阵列实现,通过其并行运行操作的特点,能够实现电子齿轮的快速反应、处理和输出。