因为一个异步函数调用子系统可以抢占或由其他模型代码被抢占,出现不一致当多个信号元素连接到一个异步块。问题是,信号传递的函数调用子系统可以被写入或读取过程中抢占时发生。因此,一些旧的,一些新的数据。这种情况也会发生在某些情况下与标量信号。例如,如果一个信号是一个双(8个字节),读或写操作可能需要两个机器指令。
请注意
操作系统集成技术,展示了在这一节中使用的块在中断模板块库。图书馆提供的块在起点的例子来帮助你开发自定义块的目标环境。
的仿真软金宝app件®率过渡块旨在处理抢占问题发生在数据传输块之间以不同的速率运行。在讨论这些问题基于时间的调度和代码生成。
您可以自动处理速度过渡问题通过选择模型configuratoin参数自动处理数据传输速度过渡。这样为你省去了手动插入率过渡块以避免无效率转换,包括无效的asynchronous-to-periodic和asynchronous-to-asynchronous率转换,在多重速率的模型。对于异步任务,仿真软件引擎配置插入块数据完整性在数据传输金宝app而不是决定论。
为异步率过渡,过渡块提供数据的完整性,但不能提供决定论。因此,当你插入率过渡块明确,首先必须明确块参数确保确定性数据传输(最大延迟)。
当你插入一个率两个街区之间的过渡块来维护数据完整性和优先级分配给相关的任务块,代码生成器假设更高优先级的任务可以抢占低优先级任务和低优先级任务不能抢占更高优先级的任务。如果相关的优先任务块没有分配或任务的优先级为两块都是一样的,代码生成器假设任务可以抢占其他任务。
周期性任务的优先级分配的仿真软件引擎,按照参数中指定金宝app解算器的选择部分的解算器面板的配置参数对话框。当定期取样时间约束参数设置为无约束
,该模型基本利率优先级设置为40
。重点subrates然后盈亏1
从基准利率优先级,根据设置的参数更高的优先级值表示任务优先级越高。
你可以通过使用参数手动分配优先级定期取样时间属性。仿真软件金宝app引擎不分配一个优先级异步块。例如,函数调用的优先级子系统连接回一个异步中断块分配的异步中断块。
块参数金宝app仿真软件任务优先级的异步中断块指定优先级(必需)每中断数量为参数输入VME中断编号。优先级阵列设置子系统连接到每一个中断的优先级。
为任务同步块,如果RTOS (VxWorks的例子®)是目标,明确块参数更高的优先级值表示任务优先级越高。参数金宝app仿真软件任务优先级指定块优先级相对于连接块(除了指定一个操作系统生成的任务优先级代码)。
的vxlib1
库提供了两种类型的速度过渡块作为一个方便。这些只是预配置内置的实例仿真软件速度过渡块:金宝app
保护率过渡块:率过渡块与块配置参数保证数据传输过程中数据的完整性选择和确保确定性数据传输清除。
不受保护的速度过渡块:过渡块,配置了保证数据传输过程中数据的完整性清除。
率转换,包括异步任务,您可以维护数据的完整性。然而,你不能实现决定论。您可以选择使用率过渡块或有针对性的过渡块。
考虑下面的模型,其中包括速度过渡块。
您可以使用速度过渡块以下模式:
维护数据完整性,没有决定论
无保护的
或者,您可以使用有针对性的速度过渡块。以下块可用于示例RTOS (VxWorks):
保护速度过渡块(读者)
保护速度过渡块(作家)
不受保护的速度过渡块
考虑下面的模型中,两个函数触发相同的子系统。
两个任务必须有平等的优先事项。当优先级相同,结果取决于他们是否定期发射或异步,和一个诊断设置。下面的表和笔记描述这些结果:
金宝app支持样本时间和优先级函数调用子系统与多个触发器
异步优先级= 1 |
异步优先级= 2 |
异步优先未指明的 |
周期性的优先级= 1 |
周期性的优先级= 2 |
|
---|---|---|---|---|---|
异步优先级= 1 |
金宝app支持(1) |
||||
异步优先级= 2 |
金宝app支持(1) |
||||
异步优先未指明的 |
金宝app支持(2) |
||||
周期性的优先级= 1 |
金宝app支持 |
||||
周期性的优先级= 2 |
金宝app支持 |
通过使用模型configuratoin参数控制这些结果相同优先级的任务;设置这个诊断没有一个
如果相同优先级的任务不能抢占对方的目标系统。
对于这种情况,无条件地发出警告信息如下:
函数调用子系统<名称>有多个异步触发不指定优先级。数据完整性不会维护如果这些触发器可以抢占一个另一个。
空的细胞在上面的表代表多个触发不同的优先级,这是不支持的。金宝app
代码生成器提供了绝对时间管理函数调用子系统连接到多个定时器设置中断的情况TriggerA
和TriggerB
(时间源,分辨率)是相同的。
假设所有下列条件适用于上面所示的模型:
函数调用子系统由两个异步触发触发器(TriggerA和TriggerB)有相同的优先级设置。
每个触发器设置时间和定时器的源属性通过调用函数ssSetTimeSource
和ssSetAsyncTimerAttributes
。
触发子系统包含一个块,需要运行或绝对时间(例如,一个离散时间积分器)。
异步函数调用子系统有一个全局变量,clockTick #
(#
与子系统相关的任务ID)。这个变量存储绝对时间的异步任务。有两种方法可以处理时间:
如果时间设置为源SS_TIMESOURCE_BASERATE
代码,代码生成器产生定时器的函数调用子系统,从基准利率更新时钟周期变量时钟周期。数据完整性是维持如果TriggerA和TriggerB分配相同的优先级。
如果时间源SS_TIMESOURCE_SELF
,生成的代码TriggerA和TriggerB更新相同的硬件时钟的时钟周期变量。
这个词的大小可以设置时钟周期变量直接或建立根据设定的模型配置参数应用程序生命周期(天)TriggerA设置的计时器分辨率和TriggerB S-functions(必须相同)。看到定时器在异步任务和控制内存分配时间计数器为更多的信息。
挥发性
关键字当您选择块参数数据传输期间确保数据完整性,生成的代码率转换块定义挥发性
全球缓冲区和信号,并使用它们来保护数据传输的完整性。没有额外的保护,或保护率转换块,可以显式地适用挥发性
传输数据。有关更多信息,请参见保护全球数据常量和不稳定类型限定符(嵌入式编码)。