赵 炯,张 涛,刘思江,凌从高
(同济大学机械与能源工程学院,上海 201804)
“自动控制原理”课程的教学通常采用讲授法,讨论法和联系法等。由于该课程理论性比较强,学生对于教师所讲授的知识难以融会贯通。因此,如何使用更先进的教学方法来提高教学的效果是摆在我们面前的重要问题。
本文介绍的便携式“自动控制原理”课堂教学演示模型,旨在直观地演示该课程中的知识,提高课堂教学效果。按照功能不同,本教学模型可以分为三个组成部分:①被控运动装置;②单片机数据采集与控制装置;③操作界面与显示软件。
被控运动装置是整个模型的基础,主要包括执行元件、被控装置和检测元件等。其结构设计要考虑原材料,设计方案的加工难度,采用的工艺不能太复杂,系统的精度不能太高,能在实验室简单的条件下制作出来即可。由于采用直线运动来显示被控物体的运动状态,简单直观。据此,设计了由无刷直流电机、电机驱动器、转盘、绕线轮、标记物和标尺等元件组成的被控装置。其结构如图1所示。
图1 被控装置机械结构
电机驱动器从单片机获取电机控制信号,驱动电机,带动旋转编码器、转盘和绕线轮转动;旋转编码器输出脉冲,经单片机捕捉和处理后可以计算出电机的实际转速,进一步换算出标记物的实际位置,传给操作界面与显示软件,从而显示被控装置的运行状态和输出信号跟随状况。绕线轮旋转在电机的带动下,使得标记物在标尺内上下运动,演示时可以直观地看到其在控制信号作用下的运动过程。
为了降低加工制作成本,装置的箱体选用尺寸、强度、重量合适的工具箱,并在其基础上进一步加工过线孔、元件安装底板和固定支撑座等。完成整个装置的装配,可达到便携美观的目的。
单片机数据采集与控制装置,主要用于处理操作界面发送的控制命令和参数,处理产生控制信息,驱动被控装置运动及采集被控装置当前的运动状态,反馈给上位机显示[1]。
被控运动装置采用PWM脉宽调制技术来控制电机电压,以达到控制转速的目的,而实际运行速度和位置调节是通过旋转编码器返回脉冲计算(反馈脉冲分为A、B、Z三相),通过USB与PC机通信来完成的[2]。而在外部设备设计选型时选用带有USB控制器的MCU,是初学设计开发人员的首选。这样不仅可以大大简化硬件电路、减小外设体积,而且还可以大大降低开发的难度。C8051F340就是顺应这种需求而推出的一种新型USB控制器芯片,它是Silicon Laboratorics公司最新推出的可提供USB功能的混合信号微控制器。该公司还为USB驱动提供了USBXpress开发套件,使得USB主机和从机驱动程序开发可以快捷、高效地完成。
单片机数据采集与处理装置结构原理图如图2所示。
图2 采集与处理硬件原理图
主机通过JTAG口将程序烧写到单片机上,并通过Mini USB接口与单片机相连,使用labVIEW编写的软件与其进行通信。然后通过接口电路便电机驱动器驱动电机转动,同时使用旋转编码器将采集到的数据通过Mini USB接口发往主机。
USB外设开发除了硬件设计外,大部分工作集中在固件编程和PC机端驱动程序以及用户应用程序的开发上。USB Xpress提供完整的Windows设备驱动,INF驱动安装文件,一般利用API实现USB通信的原理框图如图3所示[3]。
图3 单片机与PC机的USB通信原理框图
单片机端,需要先调用USB器件驱动程序,然后编写应用程序,而应用程序通过USB器件驱动程序实现访问USB底层硬件。借助USB Xpress提供的USB器件API,即 USB_F340.LIB,可以方便的实现C8051F340单片机作为USB器件的通信。在软件编程时,需将USB Xpress提供的API函数的封装库USB_F340.LIB调入编译软件的链接器中,并在主程序中用“include”命令包含USB_API.h头文件(申明了USB Xpress提供的10个API函数),从而实现对USB数据包的读写[4]。单片机利用API实现USB通信流程如图4所示。
图4 单片机利用API实现USB通信流程
当C8051F340单片机作为器件对主机进行读写操作时其机制不同。当单片机对主机进行写操作时,直接调用Block_Write()函数即可;当单片机对USB主机进行读操作时,读操作的实现流程依赖于USB总线处于何种工作方式。例如,当USB总线处于中断传输模式时,只有USB API中断发生时,USB器件才能获取USB主机数据,完成对主机的读操作,几Block_Read()函数调用一般放在USB API中断服务程序中进行。通信协议定义如表2所示。
表2 通信协议定义
操作界面与显示软件,通过USB接口连接单片机采集与被控装置,从单片机中读取被控对象的状态信息,并以直观的形式予以显示,同时可通过操作界面直接向单片机传输操作信息,进行系统设置与控制。
操作界面与显示软件具体完成:①定义控制模式和产生不同类型的输入信号;②设置系统控制参数和显示被控装置实际运行状态等信息;③绘制显示系统的时间响应和频率响应曲线,并据此分析系统的各项控制性能指标。
我们在对操作界面的功能分析的基础上,选用了LabVIEW来开发上位机应用程序。LabVIEW它内置信号采集、测量分析与数据显示功能,摒弃了传统开发工具的复杂性,为用户提供强大功能的同时还保证了系统的灵活性[5]。LabVIEW将广泛的数据采集、分析与显示功能集中在同一个环境中,开发人员可在此平台上无缝地集成一套完整的应用方案。利用LabVIEW软件开发USB应用程序,不仅可以获得良好人机交互的GUI界面,还可以加快开发进程。
在PC机上安装 SiUSBXp.dll,可以实现在PC机上通过LabVIEW软件编写的GUI程序与作为USB器件的C8051F340单片机之间的通信。Lab-VIEW软件编写的GUI程序可以通过LabVIEW中的CLF节点(LabVIEW高级子模块中的调用库函数节点)调用USBXpress提供的USB主机API,达到访问USB底层硬件的目的。
首先在LabVIEW软件的程序面板中放置一个空的调用库函数节点,CLF节点可见LabVIEW程序框图中函数面板—互联接口—库和可执行程序—调用库函数节点。空的调用库幽数节点是设有任何作用的,需要对它进行有效设置。通过双击空的调用库函数节点可产生如图5所示的调用库函数节点配置对话框。
图5 LabVIEW调用SiUSBXp.dll库函数节点
此时,需先在“库名或路径”框中设置USB主机API函数的封装库SiUSBXp.dll的路径,然后在“函数名”下拉菜单中选择当前想要调用的SI_GetNum-Devices()函数,在“线程”框中选择“在UI线程中运行”,在“调用规范”框中选择“stdcall(WINAPI)”,最后在“参数”菜单中进行相应设置。所有设置完毕,得到图5所示的名为“SI_GetNumDevices”的调用库函数节点。
可以方便地将USB主机API函数中所有需要用到的函数生成为Labview可以直接调用的调用库函数节点形式,来实现对USB底层硬件的访问[6]。
主机调用API实现USB通信的流程如图6所示。上位设计软件如图7所示。
图6 上位机USB通信
图7 LabVIEW软件设计图
通过界面,用户可以选择控制模式为开环/闭环,并设定输入信号类型和相应参数。给定输入信号后,界面将绘制输入信号曲线,并实时将编码器采集得到的实际位移值绘制成曲线,通过对比系统的输入输出位移随时间变化的,可以分析系统的时域响应[7]。另外,也可以对比开环控制和闭环控制效果。也可通过界面选定系统控制模式为在开环控制,可以给系统输入不同的正弦信号(幅值、频率和相位可自由输入组合)通过旋转编码器采集的数据,绘制Bode图和Nyquist图,分析系统的零频幅值、复现频率域复现带宽,谐振频率、截止频率和截止带宽等频率特征量,测试系统的频域特性。
通过在课堂上对于该系统的演示,学生依次进行了操作,对于闭环情况进行调整pid,观察波形,调出理想的波形。学生普遍认为亲自操作对于理论的学习会有进一步的加深,理论结合实际才可以学习得更加透彻。
本文设计了一套由单片机控制模块、被控模块和演示软件组成的教学模型。学生通过实际的操作演示可以提高动手能力,并加深对于开闭环控制、传递函数和频率时间响应等“自动控制原理”课程中的一些重要概念。
[1]Dhivya Praba Srinivasan.Automation of Squid Based Vibrating Sample Magnetometer using Labview[J].Amsterdam,Procedia Engineering,Volume 38,2012,P.130-137
[2]李海春,蔡燕与姜文涛,基于LabVIEW的电机转速监测系统的设计[J].西安,电子科技,2012.v.25;No.279(12):P.80-82+85.
[3]夏建芳与赵世富,虚拟仪器与单片机串口通信的实现[J].太原,机械工程与自动化,2006(02):P.136-137.
[4]Jui-Hong Horng.Hybrid MATLAB and LabVIEW with neural network to implement a SCADA system of AC servo motor[J].Amsterdam ,Advances in Engineering Software,Volume 39,Issue 3,March 2008,P.149-155
[5]Xin Wang,Zhike Zhao.Research on Broken rotor bar Fault Diagnosis of Induction Motor Based on LabVIEW[J].Amsterdam ,Procedia Engineering,Volume 15,2011,P.2550-2
[6]庄瑞荣与吴先球,基于LabVIEW的步进电机控制[J].西安,现代电子技术,2012.v.35;No.363(04):P.202-204.
[7]黄章华,陆华忠与李灌辉,基于LabVIEW和单片机的步进电机控制系统设计[J].西安,现代电子技术,2007.No.256(17):P.179-181.