自动控制原理实验系统

关键词: 虚拟 硬件 实验 系统

自动控制原理实验系统(精选8篇)

篇1:自动控制原理实验系统

田晴,张茁

(河北联合大学电气工程学院,河北唐山063000)

摘要:MATLAB的图形用户界面(GUI)为基于对象的可视化编程,本文以此为基础,进行了自动控制原理实验仿真系统的软件设计,仿真实验系统囊括了控制理论的大部分要点,较实验室传统性实验更全面、具体。应用GUIDE的设计,该系统操作简单,知识点表现清晰明了,学生能够在轻松的环境下,且不受地域时域限制,掌握控制理论知识。

篇2:自动控制原理实验系统

线

信息科学与工程学院本科生实验报告

实验名称

预定时间 实验时间 姓名学号 授课教师 实验台号 专业班级

黄挚雄 黎群辉

线性系统的频率响应分析

线

一、目的要求

1.掌握波特图的绘制方法及由波特图来确定系统开环传函。2.掌握实验方法测量系统的波特图。

二、原理简述

(一).实验原理

1.频率特性

当输入正弦信号时,线性系统的稳态响应具有随频率(ω 由0变至 ∞)而变化的特性。频率响应法的基本思想是:尽管控制系统的输入信号不是正弦函数,而是其它形式的周期函数或非周期函数,但是,实际上的周期信号,都能满足狄利克莱条件,可以用富氏级数展开为各种谐波分量;而非周期信号也可以使用富氏积分表示为连续的频谱函数。因此,制系统对正弦输入信号的响应,可推算出系统在任意周期信号或非周期信号作用下的运动情况。

2.线性系统的频率特性

3.频率特性的表达式

(1)对数频率特性:

又称波特图,它包括对数幅频和对数相频两条曲线,是频率响应法中广泛使用的一组曲线。这两组曲线连同它们的坐标组成了对数坐标图。

线 对数频率特性图的优点:

①它把各串联环节幅值的乘除化为加减运算,简化了开环频率特性的计算与作图。

②利用渐近直线来绘制近似的对数幅频特性曲线,而且对数相频特性曲线具有奇对称于转折频率点的性质,这些可使作图大为简化。

③通过对数的表达式,可以在一张图上既能绘制出频率特性的中、高频率特性,又能清晰地画出其低频特性。

(2)极坐标图

(或称为奈奎斯特图)(3)对数幅相图

(或称为尼柯尔斯图)

本次实验中,采用对数频率特性图来进行频域响应的分析研究。实验中提供了两种实验

测试方法:直接测量和间接测量。

直接频率特性的测量

用来直接测量对象的输出频率特性,适用于时域响应曲线收敛的对象(如:惯性环节)。

该方法在时域曲线窗口将信号源和被测系统的响应曲线显示出来,直接测量对象输出与信号源的相位差及幅值衰减情况,就可得到对象的频率特性。

间接频率特性的测量

用来测量闭环系统的开环特性,因为有些线性系统的开环时域响应曲线发散,幅值不易测量,可将其构成闭环负反馈稳定系统后,通过测量信号源、反馈信号、误差信号的关系,从而推导出对象的开环频率特性。

线

信息科学与工程学院本科生实验报告

实验名称 预定时间 实验时间 姓名学号 授课教师 实验台号 专业班级

离散系统的稳定性分析

线

一、目的要求

1.掌握香农定理,了解信号的采样保持与采样周期的关系。2.掌握采样周期对采样系统的稳定性影响

二、原理简述

本实验采用“采样-保持器”LF398 芯片,它具有将连续信号离散后以零阶保持器输出信号的功能。其管脚连接图如 5.1-1 所示,采样周期T 等于输入至 LF398 第8 脚

(PU)的脉冲信号周期,此脉冲由多谐振器

(由 MC1555 和阻容元件构成)发生的方波经单稳电路

(由MC14538 和阻容元件构成)产生,改变多谐振荡器的周期,即改变采样周期。

1. 信号的采样保持:电路如图 5.1-3 所示。

连续信号 x(t)经采样器采样后变为离散信号 x*(t),香农

(Shannon)采样定理指出,离散信号 x*(t)可以完满地复原为连续信号条件为:

ωs≥2ωmax

(5.1-1)

第 1 页

线

式中ωS为采样角频率,且ωs=2п/T,(T为采样周期),ωmax为连续信号x(t)的幅频谱| x(jω)|的上限频率。式

(5.1-1)也可表示为

2.闭环采样控制系统

(1)原理方块图

(2)模拟电路图

第 2 页

线

图 5.1-4 所示闭环采样系统的开环脉冲传递函数为:

从式

(5.1-4)知道,特征方程式的根与采样周期 T 有关,若特征根的模均小于 1,则系统稳定,若有一个特征根的模大于 1,则系统不稳定,因此系统的稳定性与采样周期 T 的大小有关。

三、仪器设备

PC 机一台,TD-ACC+(或TD-ACS)实验系统一套。

四、线路示图(见模拟电路图)

第 3 页

线

五、内容步骤

1.准备:将信号源单元的“ST”的插针和“+5V”插针用“短路块”短接。

2.信号的采样保持实验步骤

(1)按图 5.1-3 接线。检查无误后开启设备电源。

(2)将正弦波单元的正弦信号

(将频率调为 2.5HZ)接至 LF398 的输入端“IN1”。

(3)调节信号源单元的信号频率使“S”端的方波周期为 20ms 即采样周期T = 20ms。

(4)用示波器同时观测 LF398的 OUT1 输出和

IN1 输入,此时输出波形和输入波形一致。

(5)改变采样周期,直到 200ms,观测输出波形。此时输出波形仍为输入波形的采样波形,还未失真,但当 T > 200ms 时,没有输出波形,即系统采样失真,从而验证了香农定理。3.闭环采样控制系统实验步骤

(1)按图 5.1-5 接线。检查无误后开启设备电源。

(2)取“S”端的方波信号周期T = 20ms。

(3)阶跃信号的产生:产生 1V的阶跃信号。

(4)加阶跃信号至 r(t),按动阶跃按钮,观察并记录系统的输出波形c(t),测量超调量Mp。

(5)调节信号源单元的“S”信号频率使周期为 50ms 即采样周期T = 50ms。系统加入阶跃信号,观察并记录系统输出波形,测量超调量 Mp。

(6)调节采样周期使T = 120ms,观察并记录系统输出波形。

六、数据处理

第 4 页

1典型二阶系统:(R =10K)线

其峰值时间为tp=281.3ms,超调量为39.8%,调节时间为ts=1.375s 2典型二阶系统:(R =50K)

其峰值时间为tp=781.3ms,超调量为10%,调节时间为ts=1.25s 3典型二阶系统:(R =160K)

其峰值时间为tp=2.688s,超调量为0,调节时间为ts=2.531s 4典型二阶系统:(R =200K)

其峰值时间为tp=4s,超调量为0,调节时间为ts=3.281s 随着电阻R的增大,系统响应的峰值时间变长,超调量较小,调节时间也变长,系统的稳态性能变好,但响应速度减小。

七、分析讨论

篇3:自动控制原理虚拟实验系统设计

我校自2006年为电子信息工程专业02级的学生开设这门课以来,由于种种原因,自控原理实验还没有开设,借鉴其他高校的情况,考虑用虚拟实验系统代替实验室, 用软件模拟实际硬件的全部功能。希望解决目前自动控制实验中的一些问题, 在一定程度上提高目前“自动控制原理”实践教学效果。

一、自动控制原理实践教学的现状

1. 电气工程及其自动化专业的特点

电气工程及其自动化专业的特点是:强弱电结合, 电工技术与电子技术结合, 软件与硬件结合, 元件与系统结合。专业面宽, 既具有电气工程方面的专业知识和技能, 又有自动化和信息技术方面的基础知识和基本技能, 可以使学生得到电工电子、信息控制及计算机技术方面的基本训练。电气工程及其自动化专业的培养目标是:培养在电气工程、自动化、电力电子技术、监测与自动化仪表、电子与计算机技术应用等领域内能够从事工程设计、系统分析、系统运行、研制开发等方面的高级工程技术人才[3]。电气工程及其自动化专业具有非常广阔的工程实际应用背景和应用前景, 该专业的毕业生必须具备一定的工程实际应用能力。由于目前我国企业和科研单位一般不具备对大学毕业生进行再培训的条件。所以, 大学应当为学生提供实践训练的机会, 使毕业生能够在某一专业方面具有较强的实际工作能力。因此, 探索新形势下电气工程及其自动化专业学生工程应用素质的培养具有重要的现实意义。

2. 自动控制原理实践教学改革

我校物理科学与电子技术学院, 从1999年设置电子信息工程专业, 一开始学院将专业方向定位于偏弱电方向, 开设了一系列的相关课程, 建设了多个实验室;主要有模拟电子线路实验室、数字电路实验室、电子设计自动化实验室、电工实验室、单片机原理实验室、通信原理实验室、信号与系统实验室、高频电子线路实验室、家用电器实验室、数字信号处理实验室等十多个实验室。后来随着师资力量的加强以及适应市场发展的需要,对原有的专业模式进行改革探索,逐渐形成了以电子信息工程和电气自动化两个方向为主的非师范专业。

我校从02级学生开始开设了“自动控制原理”这门电气工程及自动化专业必修的基础课,实验室方面加大投资新建了PLC实验室、电机控制实验室、过程控制实验室等。但是还有一些实验室未能付与实现。就自动控制原理这门课程来讲,各个高校非常强调实验课程的重要性,但是实验教学中存在的一些问题也比较突出。高校实验室常用的自动控制原理实验仪器主要是模拟实验装置,这样的实验室成本高,仪器耗损大,重复利用率低,已经远远不能适应学科发展。

控制理论学科从深度和广度都在不断向前发展,随着计算机和测试技术的发展,以计算机为核心的测试方式正在冲击着传统测试设备,进而影响着现代实验教学,因此本课程如何及时吸收控制领域的新成果、新技术、摈弃旧的认识,已显得迫在眉睫。

二、基于虚拟仪器的自动控制实验系统设计

1. 虚拟仪器的特点及组成

虚拟实验技术是利用软件和硬件的结合, 取代传统的常规实验仪器设备, 在计算机或计算机网络上进行模拟、仿真各种实验的技术。它是虚拟现实技术 (VR) 。虚拟仪器技术、计算机辅助教学技术 (CAI) 、多媒体计算机技术 (MPC) 等发展的结果, 广泛应用于科学和生产领域[4]。

虚拟实验室最早由美国Unversity of Virginia的William Wolf教授提出,描述一个计算机网络化的虚拟实验室环境[5]。目前,虚拟实验室在发达国家己十分普及。许多发达国家的高校已经把MATLAB与相关课程进行了整合, 为教学带来了极大的灵活性和便利性。

一个最基本的虚拟仪器程序由3部分组成:人机对话的前面板、作为源代码的数据流框图和图表/连接端口,按功能分为3个部分:信号采集与控制,数据分析处理,测试结果的表达。

2. 虚拟仪器程序开发语言

进行虚拟仪器开发,通常可以采用两种编程方法进行软件编程。一种是传统的方法,采用高级语言如VC++,VB, Delphi等编写仪器软件;另一种是面向仪器和测控过程的图形化编程方法,如NI公司的LabVIEW, MATLAB,这些语言很适合虚拟实验平台的软件设计,由此开发出来的教学软件可以设计

成Windows程序风格,使教师和学生更容易操作和应用[6]。LabVIEW建立在易于使用的图形数据流编程语言——G语言上,简化了过程控制和测试软件的开发。但是在对各种算法的支持方面,LabVIEW的工具箱非常有限,这就限制了大型应用程序的快速开发。而MATLAB以强大的科学计算功能、大量稳定可靠的算法库,为数学计算工具方面事实上的标准[7]。但MATLAB也有不足之处,例如界面开发能力较差,并且数据输入、网络通信、硬件控制等方面都比较繁琐。因此LabVIEW通过ActvieX自动化技术与MATLAB进行混合编程,达到了利用MATLAB优化算法库的目的。将LabVIEW与MATLAB有机结合,是一条开发智能虚拟仪器的有效途径。

3. 自动控制原理虚拟实验系统开发

根据自动控制原理实验教学大纲的要求, 自动控制原理虚拟实验室共设计了十个实验, 内容涉及线性系统时域分析、线性系统的根轨迹、线性系统频域分析、线性系统串联校正、离散系统分析和非线性系统分析。从实验难易层次上可以分为基础性实验和设计性实验, 这样学生可以根据自身学习情况选择适当的实验, 促进了学生的学习。在LabVIEW上设计的系统前面板如下图所示。对应的后面板程序通过ActvieX技术与MATLAB进行混合编程, 利用MATLAB编程方便的特点完成每个实验项目。

本实验系统计划两年内完成,所有的实验可以在计算机上选择进行,后面系统完善以后同学们可以在网络上选择感兴趣的实验项目,并且可以实时地与指导教师交流实验中遇到的问题。

三、结束语

为适应自动控制原理实践教学改革的需要,用虚拟实验系统代替传统实验室, 用软件模拟实际硬件的全部功能,节约成本,可以提高目前“自动控制原理”教学效果,加深对所学知识的理解, 提高动手能力, 锻炼发现问题、分析问题和解决问题的能力。在新的实验系统中,学生对实验的操作更加方便省时, 单位学时内所能完成的实验内容增多了, 提高了实验教学的效率。同时把软件又是仪器的概念引入到了实验系统的设计中, 而不是单一的程序仿真。实验室的功能不再单一, 可面对更多课程的实验及课程设计向学生开放, 为学生提供更多的实践及创新机会。

摘要:为解决我院自动控制原理实践教学中存在的问题, 提出基于虚拟仪器的自动控制原理实验系统设计, 用软件模拟实际硬件的功能, 使系统操作方便。既可以节约成本, 改善现有的实验条件, 又可以提高自动控制原理实验教学效果, 推动实验教学的发展。

关键词:虚拟仪器,自动控制,实验教学

参考文献

[1]王瑛, 蔡勋, 王晶.自动控制原理虚拟试验平台的设计与应用[J].实验技术与管理, 2004, 20 (4) :52-55

[2]曹建荣, 谢秀颖, 徐红东.虚拟仪器技术在自动控制原理实验中的应用[J].实验室研究与探索, 2004, 23 (5) :38-40

[3]李晓, 刘天野.电气工程及其自动化专业工程应用型人才培养研究[J].中北大学学报, 2007, 23 (1) :83-86

[4]陆绮荣.基于虚拟仪器技术个人实验室的构建[M].北京:电子工业出版社, 2006:11-13

[5]邹湘军, 孙健, 何汉武.虚拟现实技术的演变发展与展望[J].系统仿真学报, 2004, (9) :9-11

[6]裴锋, 杨万生.LabVIEW与MATLAB混合编程[J].电子技术应用, 2004, (03) :4-6

篇4:自动控制原理实验系统

摘要:自动控制原理是高等学校控制类专业的专业基础课。传统的自动控制原理实验或者以单纯的Matlab软件仿真来进行,或者利用集成的硬件实验箱来开展实验。文章提出了一种新的实验设计思路,在Matlab软件仿真的基础上,增加对象性实验设计,由学生自己动手搭建实验电路,得出实验数据。不但锻炼了学生的动手能力,而且将理论和实践很好地结合在一起,有助于学生更好地理解抽象的理论知识。

关键词:自动控制原理;对象性实验设计;模拟电路;二阶系统;频率特性

中图分类号:TP391 文献标识码:A 文章编号:1009-2374(2013)05-0017-03

1 概述

自动控制原理是高等院校控制类专业的一门极为重要的专业基础课。其特点是教学内容抽象,数学含量大,计算繁杂,学生不易理解。而该课程实用性强、设计面广,因此实验教学成为帮助学生掌握自动控制理论的重要环节。搞好实验教学,选取合适的实验对象,不仅可以使学生对所学理论有更深刻的理解,同时也可以提高学生的学习兴趣。

2 自动控制原理实验内容设置

为了满足应用型本科的培养目标,我校课程设置实践环节比重较大,该课程实验设置24个学时。同时为了让学生体会到理论与实际的紧密关系,实验课程除了Matlab仿真应用外,增设实际对象操作实验。具体安排如下:

实验一:控制系统的数学模型(2学时)

实验二:典型环节模拟电路及其数学模型(4学时)

实验三:线性系统的动态性能分析(2学时)

实验四:线性系统稳定性和稳态误差分析(2学时)

实验五:典型二阶系统模拟电路及其动态性能分析(4学时)

实验六:线性系统的根轨迹(2学时)

实验七:典型系统频域特性分析(4学时)

实验八:线性系统的频率法串联校正(2学时)

实验九:线性系统的PID控制(2学时)

3 对象性实验的设计

学生对看得见、摸得着的东西兴趣较大,因此实验对象的选取在符合理论仿真的同时,需要具备可观察性和可操作性。上述实验内容中,实验二、实验四、实验七均采用实际对象进行实验,实验对象选择发光二极管或者电机(由于电机对于低电压有死区,因此制作了特殊的驱动电路)。

3.1 典型环节模拟电路及其数学模型

自动控制原理中典型环节为比例、积分、微分、惯性、比例积分和比例微分,研究这些环节的特性主要是观察分析它们的阶跃响应以及其参数的变化对环节的影响。该实验目的是让学生学会使用模拟电路构造典型环节,掌握其特性,并能根据响应曲线建立传递函数。使用实验对象观察这些环节的阶跃响应,比使用示波器直接观察波形更具演示性,而且学生也更容易联想到其他更多的实际对象。

实验过程先进行Matlab仿真,如图1所示,之后再进行实际对象电路搭建实验,如图2所示。

以比例积分环节为例,其模型相当于比例环节和积分环节的并联,其仿真原理图及结果如图3所示。由于仿真为理想情况,所以其输出特性只跟设置的仿真极限参数有关,阶跃设置滞后1秒钟(为了观察到无阶跃的情况)。

将电路连接好如图4所示,设置比例系数和积分时间常数后,闭合开关相当于给系统阶跃输入,电机将会以某一速度(由比例系数决定)缓慢提速(提速快慢由积分时间常数决定),当到达最大速度时(由电路饱和电压决定),速度不再增加。 对于发光二极管则是以某一亮度缓慢变亮,达到某一亮度后停止增加。为了让学生对实验结果有量的概念,将转速及光照强度在实验模块上设计电路测量并显示出来,进行记录,以便与仿真结果进行比对。

3.2 典型二阶系统模拟电路及其动态性能分析

该实验的主要目的是为了让学生掌握典型二阶系统模拟电路的构成,学会运用模拟电子元件构造控制系统;掌握二阶系统动态性能指标实测的方法;能够定量分析阻尼系数、自然频率与最大超调量Mp和调节时间之间的关系;学会根据系统阶跃响应曲线确定传递函数。

典型二阶控制系统实验电路由一个非周期性环节和一个积分环节串联等效而成。在实验中为了实现参数的线性调节,非周期性环节使用一个积分环节的反馈回路构造。根据典型积分环节的模拟电路构成,得到如图5所示的二阶控制系统模拟电路。

该电路对应的方框图如图6所示:

由系统方框图推导出该二阶系统闭环传递函数为:

将该二阶系统模拟电路的闭环传递函数与典型二阶控制系统传递函数的标准式比较,可以得出二阶系统的阻尼比为,无阻尼自然振荡频率为。

同样将电路按照图2方式接入实验对象,可观察到改变阻尼系数(R2的值)后得到二阶系统的阶跃响应:无阻尼时,电机转速忽高忽低,呈振荡状态;欠阻尼时电机转速忽高忽低,但逐渐稳定到某值;临界阻尼和过阻尼时电机转速逐渐升高到某值稳定下来。其仿真原理图及结果如图7所示:

3.3 典型系统频域特性分析

该实验的主要目的是为了让学生加深了解模拟典型环节及二阶系统频率特性的物理概念;掌握模拟典型环节及二阶系统频率特性的实测方法;学会根据频率特性建立系统传递函数;了解实际频率特性与理想特性的不同,并确定近似条件。

频域特性分析的方法是对典型环节输入幅值固定、频率可变的正弦信号,观察输出的特性。由于实验对象本身不是纯比例环节,具有固有频率,因此要达到演示效果必须设置输入频率在对象固有频率范围内(小范围频率特性)。

以惯性环节为例(呈低通特性),输入频率较低的正弦信号,电机的转速也将按正弦规律高低变化,而且会产生相位差(由正弦的频率和惯性环节的参数决定);当频率高到某值的时候,惯性环节输出电压驱动的电机两个方向的最大转速减小,相位差变大;当频率再高,惯性环节输出接近零,电机将不会转动。

4 结语

在自动控制原理实验中引入实验对象具有较强的演示效果,而且比较贴近于生活实际和工程实际。如此一来,不仅提高了学生对实验的兴趣,给学生留下比较深刻的印象,而且锻炼了学生的工程实践能力,在今后的学习和工作中可以很容易地联系到工程实际对象。该实验在我校已对两届学生实施,效果良好,目前正在进一步设计其他实验内容的对象化,使自动控制原理实验更具趣味性,以获得更好的教学效果。

参考文献

[1] 宋乐鹏.改革自动控制原理实验教学注重学生工程素质培养[J].中国冶金教育,2009,(1):65-66.

[2] 刘艳.基于虚拟仪器的“自动控制原理”实验教学改革探索[J].林区教学,2009,(11):9-10.

[3] 张栋.自动控制原理实验教学改革探索与实践[J].实验室科学,2011,(10):37-40.

[4] 王秀霞.自动控制原理综合实验系统的设计[J].实验室研究与探索,2009,28(10):62-63.

[5] 胡寿松.自动控制原理[M].北京:科学出版社,2001:13-14.

基金项目:该课题受桂林电子科技大学信息科技学院院内教改项目:《自动控制原理与仿真实验教改研究》的资助。项目号:桂电信科2010SJY04

作者简介:于新业(1979-),男,桂林电子科技大学信息科技学院讲师,硕士,研究方向:模式识别与智能控制;马姝靓(1981-),女,桂林电子科技大学信息科技学院讲师,硕士,研究方向:控制理论与控制工程;易艺(1983-),男,桂林电子科技大学信息科技学院实验师,研究方向:智能仪器系统。

篇5:自动控制原理实验电路图总结

(1)比例环节的模拟电路如下图所示。

G(S)= R2/R1

(2)惯性环节的模拟电路如下图所示,G(S)=  K/TS+1

K=R2/R1,T=R2C

(3)积分环节的模拟电路如下图所示。

G(S)=1/TS T=RC

(4)微分环节的模拟电路如下图所示。,G(S)= TS T=RC

(5)比例+微分环节的模拟电路如下图所示。(未标明的C=0.01uf)

G(S)= K(TS+1)K=R2/R1,T=R2C

(6)比例+积分环节的模拟电路如下图所示。

G(S)=K(1+1/TS)K=R2/R1,T=R2C

二阶系统的结构图如下图4-1所示。

图4-1 二阶系统的结构图

1/T2C(s)其闭环传递函数为:(s) R(s)s2(K/T)s1/T2其中:n=1/T;,=K/2

图4-3 二阶系统模拟电路

其中,T=RC,K=R2/R1。由原理得:n=1/T=1/RC;=K/2=R2/2R1。改变比值R2/R1,可以改变二阶系统的阻尼比。改变RC值可以改变无阻尼自然频率n。

取R1=200K,R2=100K和200K,可得实验所需的阻尼比。电阻R取100K,电容C分别取1f和0.1f,可得两个无阻尼自然频率n。

(1)典型二阶系统的结构图如图6-2所示。相应模拟电路图如图6-3所示。

图6-2 系统模拟电路图

图 6-3 系统结构图

(2)系统传递函数

取R3=500k,则系统传递函数为

G(s)U2500 2U1s10s500若输入信号u1(t)U1sint,则在稳态时,其输出信号为

u2(t)U2sin(t)

篇6:自动控制原理实验系统

系统调用的原理

1.1 概述

系统调用是一个软中断,中断号是0x80,它是上层应用程序与Linux系统内核进行交互通信的唯一接口。通过int 0x80,就可使用内核资源。不过,通常应用程序都是使用具有标准接口定义的C函数库间接的使用内核的系统调用,即应用程序调用C函数库中的函数,C函数库中再通过int 0x80进行系统调用。

所以,系统调用过程是这样的:

应用程序调用libc中的函数->libc中的函数引用系统调用宏->系统调用宏中使用int 0x80完成系统调用并返回。

另外一种访问内核的方式是直接添加一个系统调用,供自己的应用程序使用,这样就不再使用库函数了,变得更为直接,效率也会更高。

1.2 相关的数据结构

在说具体的调用过程之前,这里先要说几个数据结构。

1.2.1 系统调用函数表

系统调用函数表sys_call_table是在sys.h中定义的,它是一个函数指针数组,每个元素是一个函数指针,它的值是各个系统提供的供上层调用的系统函数的入口地址。也就是说通过查询这个表就可以调用软中断0x80所有的系统函数处理函数。

1.2.2 函数指针偏移宏

这是一系列宏,它们的定义在unistd.h中,基本形式为#define _NR_name value,name为系统函数名字,value是一个整数值,是name所对应的系统函数指针在sys_call_table中的偏移量。

1.2.3 系统调用宏

系统调用宏_syscalln(type,name)在内核的unistd.h文件中定义的,对它展开就是: type name(参数列表){ 调用过程; }; 其中,n为参数个数,type为函数返回值类型,name为所要调用的系统函数的名字。在unistd.h中共定义了4个这样的宏(n从0到3),也就是说,0.11核中系统调用最多可带3个参数。那么下面就说这个宏干了什么,也就是说上面的那个“调用过程”是怎么样的呢?在这个宏中嵌入了汇编代码,做的工作就是int 0x80,其中将字符串“_NR_”和name连接,组成一个宏并将这个宏的值,也就是被调用的系统函数在sys_call_table中偏移量送到eax寄存器中;同时指明系统函数将来的返回值放到eax中。

1.3 系统调用处理过程

下面我再说一下系统调用的核心软中断int 0x80具体干了什么。这条指令会引起CPU的软件中断,cpu会根据中断号找到中断处理程序。这个中断处理程序是在System_call.s中。在中断处理程序的工作过程大致是这样的:

1.3.1 将寄存器ds,es,fs以及存有参数的edx,ecx,ebx入栈,再ds,es,指向内核段,fs指向用户段。

1.3.2 根据eax中的偏移值,在函数表sys_call_table中找到对应的系统函数指针(函数的入口地址)。并利用call指令调用系统函数,返回后,程序把返回值加入堆栈。

1.3.3 检查执行本次系统调用的进程的状态,如果发现由于某种原因原进程没处在就绪状态或者时间片到了,就会执行进程调度函数schedule()。1.3.4 通过执行这次调用的程序的代码选择符判断它是不是普通用户程序,如果是就调用信号处理函数。若不是就直接弹出栈内容,并返回 添加一个系统调用的实验

2.1 实验内容

在linux0.11版本中添加两个系统调用,并编写一个简单的应用程序测试它们。

第一个系统调用是iam(),其原型为:

intiam(const char * name);完成的功能是将字符串参数name的内容拷贝到内核中保存下来。要求name的长度不能超过23个字符。返回值是拷贝的字符数。如果name的字符个数超过了23,则返回“-1”,并置errno为EINVAL。

第二个系统调用是whoami(),其原型为:

intwhoami(char* name, unsigned int size);它将内核中由iam()保存的名字拷贝到name指向的用户地址空间中,同时确保不会对name越界访存(name的大小由size说明)。返回值是拷贝的字符数。如果size小于需要的空间,则返回“-1”,并置errno为EINVAL。

2.2 代码添加修改步骤

2.2.1 在unistd.h中添加系统调用接口

#define __NR_whoami 72 #define __NR_iam 73 intwhoami(void);intaim(void);

2.2.2 在exit.c文件中添加系统调用处理函数的实现

系统调用的函数可以在其他.c文件中添加或在新建文件中添加,只要编辑进image都是可以的,这里为了调试方便就在exit.c文件中添加了。

#define MAX 23 char N_MAX[26];

intsys_whoami(char* name, unsigned int size){ if(strlen(N_MAX)>size)return-EINVAL;

int i;

for(i=0;N_MAX[i]!=';i++){

put_fs_byte(N_MAX[i],&name[i]);}

returnstrlen(N_MAX);}

intsys_iam(char *name){

char c;charstr[100];memset(str,',sizeof(str));int i;

for(i = 0;i <= MAX;i++)

{ if((c=get_fs_byte(&name[i]))!=')

{ str[i] = c;

} else break;}

if((c!= ')||(i>MAX))

{ return-EINVAL;}

memset(N_MAX,',sizeof(N_MAX));

for(i=0;str[i]!=';i++){

N_MAX[i]=str[i];} return i;} 2.2.3 在system_call.s汇编代码中修改系统调用的个数

#If 0 nr_system_calls = 72 #else

nr_system_calls = 74 #endif

2.2.4 测试代码的编写test.c的代码如下:

#define __LIBRARY__ #include _syscall1(int,iam,char*,name)_syscall2(int,whoami,char*,name, unsigned int,size)

int main(){ int a = 0;char bb[26] = “champion”;char cc[26] = “";

a = iam(bb);printf(”a=%d“, a);

a = whoami(cc,8);printf(”iam=%sn“,cc);return(1);} 系统调用相关代码的分析

3.1 初始化软件中断门。

3.1.1 函数调用层次

初始化软件中断门,就是把0x80软件中断的处理函数system_call挂载到中断向量表idt中,以确保发生软件中断时会运行system_call函数,这个函数在system_call.s实现。初始化的流程如下:

main()sched_init()set_system_gate(0x80, &system_call)_set_gate

3.1.2 初始化宏_set_gate的原型

/* 传入的四个参数说明如下:

gate_addr =&idt[0x80]软件中断门的地址。type= 15type为门类型 dpl = 3dpl为请求特权级

addr = &system_call = 0x7119通过查找system.map可以查到中断处理程序的地址 */

#define _set_gate(gate_addr,type,dpl,addr)__asm__(”movw %%dx,%%axnt“

”movw %0,%%dxnt“ ”movl %%eax,%1nt“ ”movl %%edx,%2nt“ : : ”i“((short)(0x8000+(dpl<<13)+(type<<8))), ”o“(*((char *)(gate_addr))), ”o“(*(4+(char *)(gate_addr))), ”d“((char *)(addr)),”a“(0x00080000))3.1.3 分析初始化宏_set_gate的实现

 __asm__格式为嵌入式汇编的格式,分析可知代码有5个传入的参数%0,%1,%2,%3,%4如下: %0,立即数

”i“((short)(0x8000+(dpl<<13)+(type<<8)))这样,%%edx中高16位为addr的高16位,而低16位的P位为1(因为是0x8000),DPL位段为DPL(因为dpl<<3),而D位加上类型位段则为type(因为type<<8)其余各位皆为0

%1 是用内存地址,并且可以加偏移量 ”o“(*((char *)(gate_addr))), gate_addr =&idt[0x80]

%2 是用内存地址,并且可以加偏移量 ”o“(*(4+(char *)(gate_addr))), gate_addr =&idt[0x80]

%3,edx做为参数 ”d“((char *)(addr)), &system_call = 0x7119 edx = &system_call = 0x7119

%4,eax做为参数 ”a“(0x00080000))eax = 0x00080000

 __asm__格式为嵌入式汇编的格式,分析可知四条命令含义如下:

”movw %%dx,%%axnt“

先将%%dx的低16位移入%%ax的低16位

这样,在%eax中就形成了所需要的中断门的第一个长整数,其高16位为_KERNEL_CS,而低16位为addr的低16位。

”movw %0,%%dxnt“

字操作

16位操作,操作低16位,高16位已经有调用函数的地址.”movl %%eax,%1nt“

双字操作,为门的0--31位赋值

”movl %%edx,%2nt“

双字操作,为门的32--63位赋值

3.2 以_syscall1为例,分析系统调用入口宏的含义。

其中_syscall1是一个宏,在include/unistd.h中定义。将_syscall1(int,close,int,fd)进行宏展开,可以得到:

#define _syscall1(type,name,atype,a)type name(atype a){ long __res;__asm__ volatile(”int $0x80“ : ”=a“(__res): ”0“(__NR_##name),”b“((long)(a)));

if(__res >= 0)return(type)__res;errno =-__res;return-1;}

 传入参数说明:

其中type表示系统调用的返回值类型,name表示该系统调用的名称,atype、a分别表示第1个参数的类型和名称;可以有n个系统调用的传入参数,它们的数目和_syscall后面的数字一样大。

 调用接口宏含义说明:

它先将宏__NR_##name存入EAX,将参数fd存入EBX,然后进行0x80中断调用。调用返回后,从EAX取出返回值,存入__res,再通过对__res的判断决定传给API的调用者什么样的返回值。__NR_##name就是系统调用的编号,在include/unistd.h中定义;在上面的例子中,我们添加了两个自己的系统调用接口,如下:

#define __NR_whoami 72 #define __NR_iam 73

3.3 对_system_call函数的分析

 处理流程图

 处理流程分析 _system_call: cmpl $nr_system_calls-1,%eax # 调用号如果超出范围的话就在eax中置-1 并退出。jabad_sys_call push %ds # 保存原段寄存器值。push %es push %fs pushl %edx # ebx,ecx,edx中放着系统调用相应的C 语言函数的调用参数。pushl %ecx# push %ebx,%ecx,%edx as parameters pushl %ebx # to the system call movl $0x10,%edx# set up ds,es to kernel space mov %dx,%ds # ds,es指向内核数据段(全局描述符表中数据段描述符)。mov %dx,%es movl $0x17,%edx # fs points to local data space mov %dx,%fs# fs指向局部数据段(局部描述符表中数据段描述符)。

# 下面这句操作数的含义是:调用地址 = _sys_call_table + %eax * 4。参见列表后的说明。# 对应的C 程序中的sys_call_table在include/linux/sys.h中,其中定义了一个包括72 个 # 系统调用C 处理函数的地址数组表。call _sys_call_table(,%eax,4)pushl %eax# 把系统调用号入栈。

movl _current,%eax# 取当前任务(进程)数据结构地址。

# 下面查看当前任务的运行状态。如果不在就绪状态(state 不等于0)就去执行调度程序。# 如果该任务在就绪状态但counter值等于0,则也去执行调度程序。cmpl $0,state(%eax)# state jne reschedule cmpl $0,counter(%eax)# counter je reschedule

3.4 用户态和内核态之间的传递数据

在内核中主要提供了四个函数实现内核态和用户态的数据传递:copy_to_user(),copy_from_user(),get_fs_byte(),put_fs_byte();上面测试用例中使用的是对字节的操作get_fs_byte(),put_fs_byte()。

通过bochs环境如何验证系统调用

1.1 Bochs+Linux0.11调试环境建立。

可以分为两个部分的工作:搭建调试环境和Bochs命令的使用;这两部分网上资料较多,就不在此描述了。

1.2 测试程序的修改和添加方法。

1.2.1 使用mount命令访问文件系统hdc-0.11.img 要想把测试程序test.c运行起来,一定要放入文件系统才行,也就是一定要把test.c程序放进hdc-0.11.img中去才行,可以用如下的方法打开文件系统:

losetup /dev/loop1 hdc-0.11.img losetup-d /dev/loop1

losetup-o 512 /dev/loop1 hdc-0.11.img

mkdir/mnt/tempdir mount-t minix /dev/loop1 /mnt/tempdir

说明:用losetup的-d选项把hdc-0.11.img文件与loop1的关联解除,用losetup的-o选项,该选项指明关联的起始字节偏移位置。由上面分区信息可知,这里第1个分区的起始偏移位置是1 * 512 字节。

在把第1个分区与loop1重新关联后,我们就可以使用mount命令来访问其中的文件了。在对分区中文件系统访问结束后,最后请卸载和解除关联。umount /dev/loop1 losetup-d /dev/loop1 1.2.2 编译test.c测试程序

把测试程序放到/mnt/tempdir/user/root目录下,这样就可以任意修改test.c文件的内容,并可以把修改的内容保存到hdc-0.11.img文件系统中去了。

1.3 通过bochs调试观察,是如何把0x80的中断函数system_call的地址挂载上去的。1.3.1 通过添加do_nothing()函数,然后在此函数设置断点,可以查看0x80中断处理函数是如何放到中断向量表中去的。

加入调试辅助代码如下:

因为set_system_gate是一个宏,没有办法添加断点,所以就添加了一个函数do_nothing(),在此处设置断点,以方便观察后面宏的运行情况;并且加入了几个nop命令,以方便观察运行情况。

voidsched_init(void){ do_nothing();set_system_gate(0x80,&system_call);} 1.3.2 修改_set_gate宏如下,加入了nop命令,以便调试观察。

#define _set_gate(gate_addr,type,dpl,addr)__asm__(”nop nt“ ”nop nt“ ”nop nt“ ”nop nt“ ”movw %%dx,%%axnt“ ”movw %0,%%dxnt“ ”nop nt“ ”nop nt“ ”movl %%eax,%1nt“ ”movl %%edx,%2nt“ ”nop nt“ ”nop nt“ ”nop nt“ ”nop “ : : ”i“((short)(0x8000+(dpl<<13)+(type<<8))), ”o“(*((char *)(gate_addr))), ”o“(*(4+(char *)(gate_addr))), ”d“((char *)(addr)),”a"(0x00080000))

1.3.3 可以看到运行的效果如下:

在system.map中,看到do_nothing的线性地址是0x6c1d,可以在此处设置断点。

Figure 1设置断点

Figure 2程序运行到_set_gate宏

Figure 3查看此时寄存器中的数值

调试测试程序test.c和sys_whoami和sys_iam函数 1.4.1 调试系统调用处理函数sys_whoami和sys_iam. 在system.map文件中,找到编译kernel后,函数sys_whoami和sys_iam所在的线性地址。如下所示: 00008dba T sys_iam 00008e57 T sys_whoami  在bochs启动kernel后,在0x8dba和0x8e57处设置断点,然后运行test程序,就会进入系统调用处理函数,运行到设置的断点处,后面可以单步运行,以调试sys_whoami和sys_iam,达到测试系统调用的目的。

如下图所示: 1.4

1.4.2 在linux0.11的系统中编译运行test程序

在运行起来的linux0.11的系统中,通过make test命令编译test.c文件,使生产test应用。运行test程序后,iam()函数就会通过get_fs_byte()函数把“champion”字符串存入到内存中;

篇7:自动控制原理实验系统

开课学院及实验室:电气信息学院电气信息专业实验中心

实验时间:2014 年 04

月 13

王中义 学

*** 成绩

学生所在学院

电气信息学院

年级/ / 专业/ / 班级测控 1 班 课

可编程控制器原理及应用 课

6001449 实验项目名称

十字路口交通灯(带强通控制)单、双流程控制实验 项

实验代码 1 指

郑萍 项

一、实验目的

1、通过熟悉编程软件及可编程控制器输入模拟装置的面板上各部分的作用,初步掌握可编程控制器从编程到运行的全过程操作。了解和掌握计数器、定时器的使用方法、STL 指令编程方法,并通过十字路口交通灯控制(带强通控制)的程序设计、编辑与运行,熟练掌握基于 STL 指令的顺序控制程序的设计方法,初步掌握模块化的编程思想,并进一步提高运用多种方法进行程序设计、分析和调试的能力。

2、完成带强制通行的十字路口交通灯控制程序设计及调试。

二、实验原理

根据十字路口交通灯控制系统结构流程分析 I/O 信号:

输入 I 信号:启动 X5,停止 X6; 输出 O 信号:南北绿灯 Y0,南北黄灯 Y1,南北红灯 Y2,东西绿灯 Y4,东西黄灯 Y5,东西红灯 Y6,画出 PLC 的 I/O 接线图,根据 I/O 地址就可以进行编程设计。在设计之前画出控制波形图和状态转移图,在此基础上就可有序地编写梯形图。

1)十字路口交通灯波形如图 1.1 所示:

第组 启动 X5 南北绿灯 Y0 南北黄灯 Y1 南北红灯 Y2 东西绿灯 Y4 东西黄灯 Y5 东西红灯 Y6 10S

5S

3S

2S 图 1.1

十字路口交通灯波形图

2)基于 PLC 控制的十字路口交通灯控制模拟接线图如图 1.2 所示:

3)

十字路口交通灯控制的单流程状态转移图如图 1.3 所示:

S0 M8002 C0 C1 Y6 S20Y0 T0 Y6 S21 T1 T2 Y0 C0 Y6 S22 Y1 T3 X5 K5 K5 T0 C0 T2 K3 K20 T3 启动 K50 东西红灯 南北绿灯 闪三次后 转

南北红灯 东西红灯 南北黄灯 南北绿灯 T2 T1 T1 T1 C0 Y4 S23T4 Y2 T4 K50 东西绿灯 Y2 S24 T5 T6 Y4 C1 K5 K5 C1 T6 K3 南北红灯 东西绿灯 闪三次后 转

移 T6 T5 T5 T5 Y5 S25 Y2 T7 K20 T7 东西黄灯 南北红灯

C1 东西红灯 清

零 计数器

图 1.3 单流程状态转移图 RST RST RST RST RST 图 1.2 基于 PLC 控制的十字路口交通灯控制模拟接线图 L

N GND

24V

RUN

COM

X5 X6

Y0

Y1

Y2

Y4

Y5

Y6

COM1 PLC(FX2-32MR)

~南北绿灯

南北黄灯

南北红灯

东西绿灯

东西黄灯

东西红灯

同学们可先选择一种进行基于 STL 指令的编程练习,对所编的梯形图下载到 PLC 中进行运行,同时在编程平台上监控运行情况,根据运行情况修改程序,最后实现十字路口交通灯控制的全部功能。

三、实验设备、仪器及材料

提供三菱 FX2N 可编程控制器、模拟板、计算机。详细内容见实验指导书。

四、实验 步骤(按照实际操作过程)

先做验证性实验,掌握调试技术,再完成设计性实验。、验证性实验步骤 1)

学习用 SFC 语言编制用户程序的方法:

a)

单流程的程序编制方法,见图 1.3; b)

双流程(并行分支与汇合)的程序编制方法,见图 1.4; 2)

编写图 3 或图 4 的梯形图; 3)

将编好的程序下载到可编程控制器; 4)

运行操作:完成对十字路口交通灯控制的程序调试 5)

细心体会和掌握 STL 指令编制顺序控制程序的方法和优越性。、设计性实验步骤 1)设计带强制通行的十字路口交通灯控制:东西、南北强制通行。

要求如下:

在正常的十字路口交通灯控制运行时,如果东西强制通行开关接通,则进入强制通行状态。此时东西绿灯常亮,而南北红灯常亮;东西强制通行结束后,东西强制通行开关关闭,恢复正常运行。此时应从南北绿灯亮、东西红灯亮开始循环工作。

南北强制通行情况与东西强制通行相似,其运行状态相反。

2)硬件设计:在图 1.2 上添加强制通行开关,并标出其输入地址; 3)软件设计:仔细思考,尽可能以优化的方式进行编程设计; 4)编程操作:将所设计的梯形图程序下载到可编程控制器; 5)运行调试:完成对十字路口交通灯控制程序的调试。

五、实验过程记录((数据、图表、计算等))

依照十字路口交通灯的波形图设计顺序功能图,并将该功能图用 GX Developer 的 SEC 输入,并调试该程序,仿真图如下图所示:

六、实验 结果分析 及 问题讨论

篇8:自动控制原理实验系统

随着计算机技术的发展,采用NI公司的Labview的语言系统,开发出基于Labview虚拟实验系统,结合第三方公司的数据采集卡,从而实现在课堂上进行模拟实验,并且结合学校原有的硬件电路设备进行硬件实验的综合实验系统,达到显著提高教学效果和实验效果。

虚拟实验系统的交互式式接口和良好的界面的特点可以完成模拟实验,以便更好地帮助学生理解、消化、吸收学习内容,重点解决教学和实验过程中的一些难点问题。

1 总体设计

本设计的主要内容是:应用Labview编程语言实现包含“自动控制原理”课程常见4个虚拟实验系统。

考虑到涉及的程序较多不好管理,因此,添加了登陆系统和主程序。在正确的登陆以后,进入到主程序,在主程序中包含了所有的“自动控制原理”课程常见实验,可以对它们进行有选择性的操作。为了方便观察实验的输入输出数据,最后添加了输出报表部分。

1.1 一阶系统典型环节虚拟实验设计过程

1.1.1面板设计

启动Labview,进入仪器编辑环境,建立仪器的面板,如图一所示,面板主要控件如下。2个Numeric控件,分别输入时间常数T和放大倍数K的值;一个XY Graph控件,是为了显示一阶系统惯性环节的单位阶跃响应曲线;一个OK Button控件,功能是为了实现功能退出到主程序界面。

1.2 二阶系统瞬态响应虚拟实验设计过程

本系统为自动控制原理中二阶系统瞬态响应的虚拟实验系统,当给二阶系统的两个结构参数和分别输入不同值时,可以求出该二阶系统的动态性能指标:超调量Mp、峰值时间tp和调节时间ts,并且可以输出该二阶系统的单位阶跃响应曲线。如图二所示。

1.3 系统校正虚拟实验设计过程

本系统为自动控制原理中系统校正的虚拟实验系统,对于预先给定的受控对象,算出其性能指标,目的是和系统要求满足的性能指标进行对比;由理论推导得出满足要求的性能指标的校正网络后,绘制出系统校正前后的阶跃响应曲线。如图三所示。

1.4 登入系统的设计

本实验设计了一个简单的登入系统,其前面板设计如图四所示。

2 结束语

本实验系统基于Labview语言,充分利用了其灵活、开放、用软件代替仪器功能的特点,人机界面友好,学生使用方便,并且具有良好的可扩展性,不仅能方便地进行软件模拟实验,而且能够很好地与硬件实验电路相结合,进行硬件实验。

将基于Labview的自动控制虚拟实验系统应用于“自动控制原理”的教学,使学生能直观地领会理解自动控制原理课程的分析方法和处理结果,对调动学生的学习积极性以及提高学生的实验效果和实验兴趣都有正面的作用。

参考文献

[1]申焱华,王汝杰,雷振山.LabVIEW入门与提高范例教程[M].北京:中国铁道出版社,2006.

[2]杨乐平,李海涛,杨磊.LabVIEW程序设计与应用(第二版)[M].北京:电子工业出版社,2004.

[3]张锐,陈励军.自动控制原理与应用[M].北京:国防工业出版社,2003.

[4]温红艳,高静涛.基于虚拟仪器的实验研究[J].武汉工业学院学报,2005,(03):33-35.

[5]周泌,汪乐宇,陈祥献,等.虚拟仪器系统软件结构的设计[J].计算机测量与控制,2000,8(01):21-24.

[6]吴志锋,陈汉平.基于Web的虚拟仪器技术[J].仪表技术,2001,(05):41-43.

[7]杨乐平,里海涛,赵勇.LabVIEW高级程序设计[M].北京:清华大学出版社,2001.

[8]张毅,等.虚拟仪器技术分析与应用[M].北京:机械工业出版社,2004.

[9]杨乐平,李海涛,肖相生.LabVIEW程序设计与应用[M].北京:电子工业出版社,2005.

[10]蔡周春,缪姝妹,王辉.基于LabVIEW的自动控制原理实验系统的设计[J].工业控制计算机,2012,(04):39-40.

注:本文为网友上传,旨在传播知识,不代表本站观点,与本站立场无关。若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:66553826@qq.com

上一篇:电气自动纠偏控制系统 下一篇:自动排水控制系统