【技术实现步骤摘要】
用于生成源代码的方法和计算机系统
[0001]本专利技术涉及从框图生成可执行代码,尤其是用于给控制器编程。
技术介绍
[0002]控制器用于大量应用中,以检测过程的物理参数和/或借助连接的执行器影响过程;这例如可以是制动过程的防抱死控制。决定过程动态特性的时间常数通常以1ms或更短的循环时间为条件,因此需要控制器的实时能力。出于成本原因,控制器通常具有存储器很小且计算能力有限的微控制器,因此可执行代码的大小和效率非常重要。
[0003]为了加快控制器的设计,控制策略通常借助计算环境如MATLAB/Simulink中的模型来开发。因此,可以首先仿真过程和/或控制器或概括来说控制器的特性并检查希望特性的存在。模型尤其可以是框图,其包括执行诸如计算的操作的块,一个块例如能够从多个输入信号计算一个输出信号。通常,框图是循环执行的,所有块都持续保存在存储器中,每个块在每个时间步长中执行一次。尤其是一个块可以在每个时间步长中对于来自前置块的输入信号应用一个或多个操作,以便生成当前步长的输出信号。框图附加地也可以包括用于描述离散特性的子模型,在该子模型中定义一定数量的或多个状态和过渡条件。可以借助代码生成器直接从模型中生成用于对控制器进行编程的源代码。例如可从文件“Production Quality Code Generation from Simulink Block Diagrams”中(计算机辅助控制系统设计1999年国际研讨会论文集,夏威夷Kohala海岸,由H.Hanselmann等人撰写)已知用于生成生产质量 ...
【技术保护点】
【技术特征摘要】
1.用于从框图的一个或多个块生成源代码的方法,该框图包括至少两个非虚拟块和在两个非虚拟块之间的至少一个信号连接,源代码的生成包括将框图转换为中间表示,逐步优化中间表示并将优化的中间表示编译成源代码,其中,非虚拟块的转换包括创建块输出变量的关联,其中,对于具有访问多组元变量的第一块的转换包括检查由该块和一个相邻块组成的块对是否具有等值赋值,所述块对要么由第一块和第一块的前置块组成、要么由第一块和第一块的后续块组成,如果第一块的多组元变量的至少一部分被不改变地复制到后续块的多组元变量的一部分中,则存在等值赋值,其中,如果存在等值赋值,则替换变量关联,在其中要么第一块的变量的所述部分的关联被后续块的变量的相应部分的关联替换,要么第一块的输出变量的关联被数据存储
‑
变量的关联替换,并且其中,转换包括删除如下赋值,在所述配置中在两边存在同一变量的关联。2.根据权利要求1所述的方法,其特征在于,针对以下块类型中的一种或多种检查等值赋值:从数据存储
‑
变量进行读取的DataStore
‑
Read
‑
块、向数据存储
‑
变量进行写入的DataStore
‑
Write
‑
块、选择性地将一个输出与多个输入之一连接的Switch
‑
块、模型化向总线的输出的Bus
‑
Outport
‑
块、模型化输出的Outport
‑
块和/或将输入信号延迟一个时间步长后重新输出的Delay
‑
块,其中,在DataStore
‑
Read
‑
块的情况下,将该DataStore
‑
Read
‑
块与后续块一起加以考虑,并且在存在等值赋值时,将DataStore
‑
Read
‑
块的输出变量的关联通过数据存储
‑
变量的相应部分的关联替换,和/或在DataStore
‑
Write
‑
块、Switch
‑
块、Bus
‑
Outport
‑
块、Outport
‑
块和/或Switch
‑
块的情况下,将相应块与前置块一起加以考虑,并且在存在等值赋值时,将前置块的输出变量的关联通过第一块的变量的关联替换。3.根据权利要求1或2中任一项所述的方法,其特征在于,一个框图包括多个块,其块类型相应于待检查等值赋值的块类型,并且对于所述多个块中的每个块根据块类型进行等值赋值检查并且在存在等值赋值时,替换变量关联。4.根据前述权利要求中任一项所述的方法,其特征在于,所述多组元变量是包括同一数据类型的多个变量的向量、包括多个向量的矩阵、包括任意数据类型的多个变量的结构或结构的向量。5.根据前述权利要求中任一项所述的方法,其特征在于,框图是分层定义的,较高层级中的一个块能够包括较低层级的多个块,较低层级的多个块分配给较高层级的一个块,并且如果对DataStore
‑
Read
‑
块检查等值赋值,则在综合性的分层块、尤其是在原子性分层块中搜索访问同一数据存储
‑
变量的DataStore
‑
Write
‑
块。6.根据权利要求5所述的方法,其特征在于,如果在所述综合性的分层块中找到访问同一数据存储
‑
变量的DataStore
‑
Read
‑
块和DataStore
‑
Write
‑
块,则检查所述DataStore
‑
Read
‑
块和DataStore
‑
Write
‑
块是否至少部分地在信号流中连接,使得数据存储
‑
变量的被读入DataStore
‑
Read
‑
块中的部分与数据存储
‑
变量的在DataStore
‑
Write
‑
块中被写入的部分具有非空交集,其中,至少一个块位于DataStore
‑
Read
‑
块和DataStore
‑
Write
‑
块之间的信号流中,一个或多个位于其间的块包括至少一个非虚拟处理块,该处理块处理输入变量以生成输出变量,并且作为附加条件检查所述一个或多个位于其间的块是否具有如下处理顺序,使得所述至少一个处理块在DataStore
‑
Write
‑
块之前执行,并且如果满足所述附加条件,则将DataStore
‑
Read
‑
块的输出变量的与交集相对应的部分通过数据存储
‑
变量的与交集相对应的部分替换。
7.根据权利要求5至6中任一项所述的方法,其特征在于,如果最...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。