上一篇地址:https://www.guyuehome.com/39877

第四章 伺服驱动器与变频器的基本原理与接线

4.1 伺服驱动器

伺服驱动器又称为“伺服控制器”、“伺服放大器”,是用来控制伺服电机的一种控制器,其作用类似于变频器作用于普通交流马达,属于伺服系统的一部分,主要应用于高精度的定位系统。一般是通过位置、速度和力矩三种方式对伺服电机进行控制,实现高精度的传动系统定位,目前是传动技术的高端产品。本实习所采用的伺服驱动器为迈信EP3E伺服驱动器,具体标签如下图所示。

图4.1 EP3E伺服驱动器参数

伺服驱动器接线图如下图所示。

图4.2 EP3E伺服驱动器接线图

4.2 西门子V20变频器

变频器(Variable-frequency Drive,VFD)是应用变频技术与微电子技术,通过改变电机工作电源频率方式来控制交流电动机的电力控制设备。变频器主要由整流(交流变直流)、滤波、逆变(直流变交流)、制动单元、驱动单元、检测单元微处理单元等组成。变频器靠内部IGBT的开断来调整输出电源的电压和频率,根据电机的实际需要来提供其所需要的电源电压,进而达到节能、调速的目的,另外,变频器还有很多的保护功能,如过流、过压、过载保护等等。西门子V20变频器如下图所示。

图4.3 V20变频器

变频器接线图如下图所示。

图4.4 V20变频器接线图

该变频器采用Modbus协议进行通讯,在进行变频器频率设定及变化时,需要向Modbus相应的寄存器写入数值。但值得注意的是,写入的数值并不是设定的变频器的频率。而实要经过一定的转换,具体转换如下图所示:

图4.5 变频器设定频率计算

其中P2000代表以一个百分比或者16进制值显示/传递的频率值的基准频率;4000是16进制的常量,r2018则是我们写入寄存器的数值。也就是说设定的频率需要先与一个4000的16进制数相除,再乘以P2000所代表的基准频率才得到变频器的设定频率。

第五章 基于Qt的上位机软件设计

5.1 控制器连接模块开发

控制器连接是上位机首先要编写的一个模块。在对控制器进行操作时必须调用链接函数链接控制器,当链接成功后方可通过返回的句柄操作对应的控制器。与控制器链接的连接函数在ZAux库中也有所设计。利用ZMC_OpenEth(ipaddr,&g_haddle)函数链接控制器,返回值为0时表示链接成功,非零则表示失败。

具体连接控制器的模块编写按照如下步骤:

  • 创建新的groupbox,并命名为“控制器连接”;
  • 在groupbox引入combobox控件,并内置两个IP地址,分别是“0.0.1”和“192.168.0.11”;
  • 引入两个pushbutton控件,分别命名为“连接”和“断开”;
  • 编写用于连接的槽函数和断开的槽函数,主要是检测ZMC_OpenEth()函数的返回值,并修改ui上的显示;
  • 编写连接失败后的警告窗口,并将窗口信息提示为“连接失败”;
  • 对groupbox内的控件进行布局,尽可能地美观和人性化;
  • 对控制器连接的功能进行测试,观察其是否能够连接到仿真器和实验室的控制器。

完成上述步骤的控制器连接开发并运行Qt上位机后,可以看到编写完成后的控制器连接界面如下图所示。

图5.1 控制器连接界面

5.2 参数设置模块开发

参数设置主要包括轴参数的初始化和加工速度及加速度方面的设置。实时状态模块主要用以展示XYZ轴三个轴的运动状态和实时速度、位置等,轴的实时状态对反映后期雕刻过程中的运行状态十分有用。

轴参数初始化设置包括XYZ轴的参数初始化设置。具体包括脉冲当量、正负限位和正负限位IO和回零IO等。

按照如下步骤进行轴参数初始化设置的开发:

  • 新创建一个groupbox的对象用以装载各参数文本框;
  • 创建一个QFormLayout的布局并新增六条LineEdit,内容分别对应“脉冲当量”、“正限位”、“负限位”、“正限位IO”等,并给定其默认值;
  • 重复以上过程三次,或者建立循环实现,同时将groupbox的对象分别命名为“X轴”、“Y轴”、“Z轴”。
  • 参数设置的模块开发类似上述轴参数初始化的设置,在此不再赘述。完成上述过程后,可以看到如下的模块显示:

图5.2 参数设置模块展示

5.3 实时状态模块开发

实时状态模块由于在显示雕刻机运行状态方面有重要的作用,因此该模块所在的groupbox继承于widget_right,与OpenGL3D模块在同一个展示界面。

  • 按照如下步骤进行该模块的开发工作:
  • 创建一个groupbox的对象用以装载各个参数文本框
  • 创建一个QFormLayout的布局并新增三条横排内容,内容分别对应“状态”、“位置”、“速度“等,其中这三个的内容对应全局私有变量;
  • 重复以上过程三次,或者建立循环实现,同时将groupbox的对象分别命名为“X轴”、“Y轴”、“Z轴”。
  • 建立好上述显示模块后,后续还需要编写定时器事件,每隔一定时间更新上述各轴的实时状态,运行状态示例如下所示:

图5.3 实时状态模块展示

5.4 手动模式开发

手动模式的开发旨在能够利用按键实现雕刻平台XYZ轴各个方向的移动。这也为实现手动对刀实现了可实现的可能性。

按照如下步骤进行手动控制的开发:

  • 新建一个groupbox对象,并命名为“手动控制”;
  • 新建一个PushButton对象,这里以X轴正运动方向举例;
  • 写出对应该PushButton对象的槽函数,包含pressed和released两种方式。按下时调用ZAux辅助函数库中的ZAux_Direct_Single_Vmove()函数,进行点动控制;
  • 类似X轴正运动方向点动的开发,建立for循环实现XYZ轴共六个按键,并编写相对应的槽函数;
  • 调用FontAwesome开源字体库,给pushbutton对象增加图标,FontAwesome网页如下图所示;
  • 对上述按键进行布局,这里采用网格布局;

图5.4 FontAwesome开源字体库

以上完成后,可以看到手动模式的ui界面如下图所示:

图5.5 手动控制ui界面

经测试后,发现手动控制的效果良好,能够根据按键按下进行相应方向的移动,并由于编写过加减速模块,因此手动控制时可以看出在XYZ轴移动时,可以看出其存在加减速效果。

5.5 自动模式开发

自动模式的开发旨在能够在完成对刀之后,直接导入写好的G代码文件,按照指令自动完成各种雕刻任务。

按照如下步骤进行自动模式的开发:

  • 新建一个PushButton对象,并命名为“导入文件”;
  • 新建一个LineEdit对象,用来显示文件路径,新建一个TextEdit对象,用来显示文件内容;
  • 新建六个PushButton对象,分别为“启动”、“暂停”、“继续”、“坐标清零+清屏”、“对刀点记忆”和“对刀点恢复”;
  • 新建Label对象:G代码总数、进度、已用时间、剩余时间,并设置好进度条的取值范围;
  • 写出所有PushButton对象的槽函数,均采用clicked方式。在“导入文件”的槽函数中,首先将G00设置为默认值,并且默认坐标移动为绝对值,将已用时间、剩余时间等信息均置零。然后根据获取文件信息、获取文件名字、获取文件后缀、获取文件绝对路径,逐行读取文件并放入文本框中,最后关闭文件。“暂停”的槽函数中,调用ZAux辅助函数库中的ZAux_Direct_MovePause函数停止刀具的运动;“继续”的槽函数中,调用ZAux辅助函数库中的ZAux_Direct_MoveResume函数来继续刀具的运动;“坐标清零”的槽函数中,调用ZAux辅助函数库中的ZAux_Direct_MoveAbs函数对刀具的三维坐标进行清零处理;“对刀点记忆”的槽函数中,调用ZAux辅助函数库中的ZAux_Direct_GetDpos函数来获取轴位置,再放回刀点记忆的数组中,若想要恢复对刀点,则同样调用ZAux_Direct_MoveAbs函数来进行恢复坐标;
  • 调用FontAwesome开源字体库,给pushbutton对象增加图标;
  • 对上述按键进行布局,这里采用网格布局。

以上完成后,可以看到自动模式的ui界面如下图所示:

图5.6 自动控制ui界面

导入一个简单的雕刻图案作为测试,可以发现对刀完成启动后,自动模式能实时显示G代码总数、已用时间(G代码已运行行数)和剩余时间(G代码未运行行数),同时进度条也能清楚地提醒用户当前的进度,剩下的三维显示部分在OpenGL3D界面展示中。

预告

下一篇将介绍基于Qt的上位机软件设计(下)以及G代码的生成与使用作品展示