《机电控制系统仿真与软件设计》详解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
机械与车辆学院
《机电控制系统仿真与软件设计》
报告
(2014-2015学年第一学期)
课程设计题目:水塔水位机电控制系统设计与仿真
一、课程设计性质和目的
机械电子工程专业是一个对实践、应用能力要求很强的专业,机电控制系统设计与仿真课程学习的目的是让学生借助MATLAB软件来研究机电控制系统的设计方法,与传统控制系统设计采用直接编写程序代码不同的是,本课程是在MATLAB/SIMULINK中设计出控制系统模型,再通过Embedded Coder将控制系统模型生成可执行的C代码,然后加载至MCU中去,采用这种新颖的方法,不用再专注于繁琐程序代码的编写工作,而可以将精力花费在控制算法的研究上。通过学习本课程让学生也了解现代控制行业发展趋势及控制系统实现的先进方法。
二、课程设计的内容及要求
在Proteus中建立起水位控制系统仿真模型,如图所示:B表示为下限水位传感器,C表示为上限水位传感器,D1为指示灯,电机为泵。
图1 水位控制系统仿真模型
下限水位传感器B接单片机P1.0管脚,上限水位传感器接单片机P1.1管脚,指示灯D1接单片机P1.3管脚,电机由单片机P1.2经过光耦和继电器来控制。
工作过程是:
(1)水位未到下限水位时,泵工作抽水,同时D1指示灯常亮,水位超过下限水位继续上升。
(2)当水位上升到上限水位时,泵停止工作,同时D1指示灯灭,
(3)如果下限水位传感器未动作,而上限水位传感器却动作了,则泵停止工作,同时指示灯D1开始按一定时间间隔闪烁报警。
(4)根据上述的控制要求在SIMULINK中,运用Stateflow工具箱建立起该控制系统的模型,并进行仿真运行分析,达到控制系统要求后,再通过SIMULINK菜单code选项,c/c++ code/build model,生成嵌入式C代码。然后在Keil 中对生成的C代码进行I/O配置和适当修改,编译成HEX文件,最后将该HEX 文件加载至Proteus仿真平台就可以验证代码的正确性了。
三、课程设计的进度及安排
表1 课程安排
四、MATLAB/Stateflow学习
通过MATLAB是一种科学计算软件,专门以矩阵的形式处理数据。MATLAB 将高性能的数值计算能力和强大的数字可视化功能集成在一起,提供了大量的内置函数,因而被广泛地应用于科学计算、控制系统、信息处理等领域的分析仿真和设计工作;而Stateflow是集成于Simulink中的图形化设计与开发工具,主要用于针对控制系统中的复杂控制逻辑进行建模和仿真,即适用于对事件响应系统进行建模和仿真。Stateflow和Simulink结合起来,可以创建确定性监管控制系统。利用Stateflow可视化的模型和直观的仿真能力,可以清晰、简洁地反映出动态逻辑关系。它的基础是有限状态机理
论,它通过状态图、流程图的创建,对事件驱动系统进行建模和仿真。
此次课程设计是基于MATLAB/Stateflow软件上的一次实践,利用Stateflow可视化的模型和直观的仿真能力,对水塔进行逻辑图的绘制,建立动态系统模型进行仿真。然后对仿真出来的代码进行修改和添加。这样就不需要花太多时间从事代码的开发,可以让设计者腾出更多的精力进行顶层控制策略的设计。采用Stateflow 进行系统建模,直观、逻辑关系清晰、简便,RTW 生成执行代码正确,可以大大缩短系统开发周期。
五、水位控制系统模型
首先在matlab2013a\simulink下建立起水塔水位控制模型如图2所示,并保存。
图2 simulink下建立控制模型
In1、In2为控制输入端(P1.0口、P1.1口的按键输入),设定信号名称为delay,该信号作为stateflow中状态之间变换的转换条件(等效按键的按下产生的脉冲)。Out1、Out2为模型的输出端。(电机和指示灯的输出端口)在stateflow菜单view下的Model Explorer中设定输入、输出。输入High_a,port为1,数据类型DataType为uit8,输入low_b,port为1,数据类型DataType为uit8,输入delay触发Trigger为Falling(因为单片机中,设置是按键按下时产生一个下降沿)。输出为M、led,port分别为1、2,数据类型DataType 为uit8如图所示。
图3 Model Explorer输入输出设定
Chart模块为stateflow模块,定义了High_a、Low_b两个输入变量、M、led 两个输出端口。
图4 stateflow建模
初始状态:有4种不同的情况High_a和Low_b都为1;High_a和Low_b都为0;
High_a为1,Low_b为0;High_a为0,Low_b为1。这4种状态将直接进入四种不同的固定状态,执行相应的命令。
四种固定状态:
(1)状态A为(工作状态):水位在水位的下限Low_b下,输入信号High_a和Low_b
都为1。M(抽水电机工作状态),此时led=1(指示灯亮)。
(2)状态A1为(故障状态):水位在水位的下限High_a以上,未到达水位上限
Low_b。,此时motor=0(电机停止),led闪烁(由子状态来实现)A4、A5状态间的转移以delay条件实现亮灭。
图5 A1模型
(3)状态A2为(中间状态):电机和指示灯都保持原来的运行状态不变。
(4)状态A3为(停机状态):水位在水位的下限Low_b以上,也到达水位上限
High_a。M(抽水电机停止状态),此时led=0(指示灯灭)。
(5)delay 事件(delay为转移条件用fail(下降边沿触发)。
(6)状态1、状态2、状态3之间的转移条件为水位传感器 B、C 来决定。(即由输
入信号High_a和Low_b决定)当输入信号High_a和Low_b都为1,进入状态A执行命令。完毕后进入中间状态A2,等待下一个输入信号(High_a 和Low_b)的变化,再选择进入相应的状态执行命令。
图6 状态及状态转换