基于模型的高安全性应用程序开发环境-SCADE的嵌入式软件开发环境

摘要:在嵌入式控制系统中,PID控制器得到了广泛的应用。鉴于实时性和同步性的要求,传统的PID控制器通常采用手工编程的方式来实现。这种实现方式耗时耗力,可靠性低,后期验证和测试程序复杂。为了解决该方法的不足,本文研究了基于模型的高安全性应用开发环境——SCADE。按照SCADE的软件编程流程,完成了PID控制器的设计、开发和性能测试,并通过了代码的效率测试。验证了 SCADE 在嵌入式软件开发中的优越性。

本文引用地址:

关键词:SCADE;PID;造型; 模拟; 代码生成

在过程控制和运动控制系统中,特别是在嵌入式控制系统中,PID(比例-微分-积分)控制器因其结构简单、物理意义明确、不需要精确的系统模型而被广泛使用。. 鉴于嵌入式控制系统设计的严格要求,传统的嵌入式PID控制器通常采用手工编程的方式实现。这种实现方式耗时耗力,可靠性低。为解决传统设计方法的不足,本文研究了基于模型的高安全应用开发环境-SCADE的技术特点,并在该环境下完成了PID控制器的设计与仿真,并对生成的代码进行了分析和分析。效率测试。最终,

1 SCADE软件设计流程

SCADE(Safety-Critical Application Develooment Environment)是Esterel Teclmologies开发的一套高安全性嵌入式软件开发环境。针对嵌入式软件的特点,采用Correct By Construction的设计理念,提供基于模型的图形,涵盖了从需求分析到代码实现的整个软件开发过程。

SCADE提供一系列开发工具包,实现直观的图形化需求建模、基于模型的仿真验证、标准C代码自动生成、开发文档自动生成等功能。其严谨的建模理论和经过高安全标准认证的代码生成器KCG,确保了软件需求和产品代码之间的高度同步。软件设计流程如图1所示。

2 PID控制器设计

在模拟量控制系统中,控制器最常用的规律是PID控制。传统的 PID 控制系统由 PID 控制器和被控对象组成,如图 2 所示。

PID控制器是线性控制器。它根据给定值和实际输出值形成控制偏差。偏差的比例(P)、积分​​(I)和微分(D)线性组合形成控制变量到被控变量。控制对象。其控制律为

式中,u(t)为进入被控对象的控制变量;e(t) 是误差信号,e(t)=r(t)-y(t),r(t) 是给定的参考输入值。由于计算机控制是一种采样控制,控制量是根据采样时的偏差值直接计算出来的,必须进行离散处理。将公式 (1) 离散化得到:

SCADE中PID控制器由公式(2)构造,结果如图3所示,其中控制参数Kp、Ki、Kd和误差ek为输入,uk为输出,t为采样时间。

3 PID控制系统实现

在该控制系统中,被控对象传递功能

, 其中 J=0.0067, D=0.10 离散化后:

SCADE中通过公式(3)构造的控制对象如图4所示,其中Uk为输入,Yk为输出。

最后,由PID控制器和被控对象按照图2所示结构图构建闭环控制系统。

4 仿真分析

使用 SCADE Editor 完成系统建模后,进入模型的仿真分析阶段。SCADE 提供了一系列验证机制来保证软件需求模型描述的正确性和安全性,包括模型静态检查、仿真、覆盖分析、形式验证等。本文首先使用 SCADE 模型的静态检查功能,确保模型没有基本的语言语义错误,然后使用 SCADESimulator 进行仿真分析验证控制率,然后通过 SCADE 内置的代码生成器生成 C 代码进一步分析和测试代码的效率。

4.1 模型仿真

根据PID的特性,Kp影响系统的响应速度和精度,Ki影响系统的稳态精度,Kd影响系统的动态特性。因此,PID控制参数被设置为获得Kp=8.0,Ki=0.0,Kd=0.5。设置阶跃响应r=1.0,采样时间为0.005秒。输入相应的控制参数,调用SCADE Simulator仿真环境,得到的系统阶跃响应仿真曲线如图5所示(横坐标单位ms)。

4.2 代码测试

SCADE内置的代码生成器KCG可以自动生成ANSI C的嵌入式产品代码,代码完全是面向工程的产品代码,无需任何修改即可直接嵌入到产品中。由于SCADE模型基于严格的数学理论,可以保证代码运行结果与仿真结果完全一致,代码生成器通过了军工、航天、能源等行业相关标准的认证。

此前,软件设计人员手动编写代码,在后期验证阶段花费大量时间来验证程序的正确性和规范性。使用 SCADE 后,只要模型级仿真测试正确,后面部分的代码单元测试就可以省略。此外,SCADE 提供了模型级别的覆盖分析,代码覆盖分析也可以在模型级别进行。这样可以在很大程度上节省验证工作和验证时间。

为了完成代码的效率测试和分析,在前一系统正确仿真结果的基础上pid控制器参数整定与实现,通过SCADE KCG自动生成C代码。生成的软件代码可以直接在VC等C语言开发工具下编译。添加main函数后,代码就可以直接运行了。这里在main函数中加入了clock函数,计算程序执行一定步数所需要的时间。主要功能如下:

编译并运行代码。在相同的环境下,将生成的代码与手写代码进行对比。结果如表1所示:

从表1可以看出,当SCADE生成的代码和手写代码运行同步次数相同时,所花费的时间基本相同,代码执行效率略高。

通过分析 SCADE 生成的代码,发现代码中的每个变量在作用域内只赋值一次,并且代码中没有递归调用、没有无限循环、没有动态指针、没有动态内存分配。因此,在相同的测试标准下,SCADE生成的代码的失败率远小于手写代码,相应的安全性也更高。

5 结论

本文研究了基于模型的软件开发环境SCADE的技术特点和开发过程,完成了SCADE下PID控制系统的设计、仿真和测试。案例研究表明,使用 SCADE 进行嵌入式软件开发将软件开发过程的重点从编码阶段推进到设计阶段,这使得在早期设计阶段更容易发现缺陷。模型设计完成后,代码由代码生成器自动生成,可以大大减少开发时间和成本,提高开发效率。而且,SCADE生成的代码满足一系列安全特性,可读性好pid控制器参数整定与实现,与手写代码一样高效。所以,

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论