配置AUTOSAR客户机-服务器通信
在仿真金宝app软件®AUTOSAR的客户机-服务器通信模型,可以模拟和代码生成。信息使用的仿真软件模块和高层工作流,明白了金宝app客户机-服务器接口。
AUTOSAR建模服务器和客户端,你可以做以下的:
AUTOSAR服务器和客户端从ARXML代码导入到一个模型。
从仿真软件模块配置AUTOSAR服务器和客户端。金宝app
这个话题提供了AUTOSAR服务器和客户端配置的例子,从仿真软件模块开始。金宝app
AUTOSAR服务器配置
这个例子展示了如何配置一个金宝app仿真软件的功能块作为AUTOSAR服务器。
如果您将文件复制到一个工作文件夹,搭配MATLAB®文件与模型文件。
你想打开一个模型创建和配置一个AUTOSAR服务器,或打开示例模型
mControllerWithInterface_server.slx
。添加一个金宝app仿真软件的功能块模型。示例模型提供了两种金宝app仿真软件的功能块,
doOverride
和readData
。配置金宝app仿真软件的功能块来实现服务器功能。配置一个函数原型,实现服务器功能的算法。
在这个例子中模型的内容金宝app仿真软件的功能块命名
readData
实现一个服务器命名函数readData
。内容包括:
触发块
readData
代表一个触发器为服务器端口功能。在触发块的属性,触发类型被设置为函数调用
。同时,选择对待仿真软件功能金宝app被选中。参数尺寸。块
人事处
和参数输出港块数据
,犯错
,NegCode
,相应的函数原型(数据、犯错、NegCode) = readData(凤凰社)
。请注意
配置服务器函数参数时,必须指定信号数据类型、端口尺寸和信号的类型信号的属性标签的尺寸和外港块。AUTOSAR配置服务器验证失败如果没有信号属性函数参数。
块实现
readData
函数算法。在这个例子中,提供一些简单的块数据
,犯错
,NegCode
输出值与最小的操作。一个常数块代表一个应用程序错误的价值定义为服务器的功能。的价值人事处
通过调用者将被忽略。在现实的应用程序中,该算法可以执行更复杂的操作,例如,选择一个执行路径的基础上,通过价值人事处
生产应用程序所需的输出数据,检查错误条件。
当服务器功能在仿真软件,建立了金宝app金宝app仿真软件的功能块模型为AUTOSAR配置。例如,配置AUTOSAR的当前模型或块复制到一个AUTOSAR模型。
模型是一个AUTOSAR模型的例子,金宝app仿真软件的功能块
readData
已经被复制。在有意义的地方人事处
输入值readData
函数,模型数据传输线金宝app路CurVal
提供了一个输入值,用于函数算法。配置一个AUTOSAR服务器所需的元素,在一般订单创建,是:
AUTOSAR客户机/服务器(c)接口
一个或多个AUTOSAR c接口处理客户机请求的操作
AUTOSAR服务器端口接收客户端请求服务器的操作
为每个服务器操作,AUTOSAR服务器运行的执行客户机请求
打开AUTOSAR字典。查看AUTOSAR c接口模型中去c接口视图。示例模型已经包含客户机-服务器接口。
如果一个c接口模型中不存在,创建一个。
在c接口视图中,单击添加按钮
。这个动作打开对话框添加接口。
在对话框中,将新的c接口,并指定操作的数量你打算与接口。离开其他参数的默认值。点击添加。新界面出现在c接口视图。
下c接口,创建一个或多个AUTOSAR服务器操作的c接口处理客户机请求。每个操作对应于一个仿真软件服务器功能模型。金宝app
扩大c接口和扩大个人c接口,您想要添加一个服务器操作。(在示例模型,扩大
CsIf1
)。查看操作界面,选择操作。示例模型已经包含了AUTOSAR服务器操作命名doOverride
和readData
。如果服务器操作模型中不存在,创建一个。(如果您的c接口包含一个占位符操作命名
Operation1
,您可以安全地删除。)在业务视图中,单击添加按钮
。该操作将会打开添加操作对话框。
在对话框中,输入操作名称。指定相应的仿真软件的名称服务器功能。金宝app
如果相应的仿真软件服务器函数参数,选择功能金宝app金宝app仿真软件的功能列表。这一行动会导致自动创建AUTOSAR操作参数基于仿真软件服务器函数参数。金宝app点击好吧。操作及其参数出现在视图的操作。
检查参数列出AUTOSAR服务器的操作。扩大操作,扩大个人操作(例如,
readData
),并选择参数。模型参数对应列出服务器函数原型。金宝app查看AUTOSAR服务器端口模型中,服务器端口视图。扩大AtomicComponents,扩大单个组件配置,并选择ServerPorts。示例模型已经包含一个AUTOSAR服务器端口命名
体育运动
。如果一个服务器端口不存在在你的模型中,创建一个。
在服务器端口视图中,单击添加按钮
。该操作将会打开对话框添加端口。
在对话框中,将新服务器端口,并选择您配置一个服务器的c接口操作。点击添加。新港口出现在服务器端口视图。
对每个AUTOSAR服务器操作,配置一个AUTOSAR服务器运行的执行客户机请求。查看AUTOSAR runnable模型中,选择可运行的。模型已经包含了一个服务器运行的例子
readData
,名叫Runnable_readData
。如果一个合适的服务器可运行尚不存在在你的模型中,创建一个。
在运行的视图中,单击添加按钮
。这一行动新runnable表添加一个条目。
选择新的可运行和配置它的名称和符号。(在示例模型,象征的名字
Runnable_readData
是函数名readData
)。创建一个operation-invoked事件触发服务器上运行的。(示例模型定义的事件
event_readData
服务器运行的Runnable_readData
)。下事件,点击添加事件。选择新事件。
为事件类型中,选择
OperationInvokedEvent
。进入事件名称。
下事件属性,选择一个触发值对应的服务器端口和c运行之前创建的服务器功能。(在示例模型,触发价值选择
Runnable_readData
是sPort.readData
,结合服务器端口体育运动
与操作readData
)。点击应用。
这一步完成了AUTOSAR服务器的配置的AUTOSAR字典视图配置。
切换到代码映射编辑器视图的配置和映射模型AUTOSAR服务器运行的服务器功能。金宝app
打开代码映射编辑器。选择功能选项卡。
选择仿真软件服务器功能金宝app。将功能映射到一个AUTOSAR runnable,点击可运行的场和从列表中选择相应的可运行的可用的服务器可运行。在示例模型,仿真软件的功能金宝app
readData
映射到AUTOSAR runnable吗Runnable_readData
。
验证AUTOSAR组件配置,单击验证按钮
。如果报告错误,解决错误,重试验证。重复,直到验证成功。
生成C和ARXML代码模型。
配置一个AUTOSAR服务器后,配置相应的AUTOSAR客户机调用,如前文所述配置AUTOSAR客户端。
配置AUTOSAR客户端
配置一个AUTOSAR服务器之后,所述AUTOSAR服务器配置,配置相应的AUTOSAR客户机调用。这个例子展示了如何配置一个函数调用者块作为AUTOSAR客户机调用。示例使用示例模型mControllerWithInterface_client.slx
。
你想打开一个模型创建和配置一个AUTOSAR的客户,或打开示例模型
mControllerWithInterface_client.slx
。添加一个函数调用者块模型。示例模型提供了一个仿真软件功能块命名金宝app
readData
,它坐落在里面Runnable3_Subsystem
。配置函数调用者块调用相应的金宝app仿真软件的功能块。双击打开它,并编辑块参数来指定服务器函数原型。
在模型的例子中,
readData
函数调用者参数指定一个函数原型readData
服务器功能AUTOSAR服务器示例中使用,AUTOSAR服务器配置。这是readData
从服务器功能的例子。的函数调用者参数包括函数原型和论证规范字段。原型必须匹配的函数名操作名称指定相应的服务器的操作。看到的操作创建步骤AUTOSAR服务器配置。参数类型和尺寸也必须匹配服务器函数参数。
请注意
如果你想模拟函数调用在这一点上,你必须把函数调用者块在常见的模型或与相应的测试工具金宝app仿真软件的功能块。对于这个例子仿真不是必需的。
当函数调用完全形成于仿真软件,建立了金宝app函数调用者块模型为AUTOSAR配置。例如,配置AUTOSAR的当前模型或块复制到一个AUTOSAR模型。
提示
如果你创建(或复制)函数调用者块模型中映射和配置AUTOSAR组件之前,您可以选择的软件填充AUTOSAR操作参数,而不是手动创建参数。参数为您创建,配置完整的AUTOSAR端端口和一个完全映射模型函数调用者,使用AUTOSAR组件快速开始创建一个默认的组件。金宝app有关更多信息,请参见在仿真软件创建AUTOSAR软件组件金宝app。
模型是一个AUTOSAR模型的例子,函数调用者块
readData
已经被复制。块连接到港口、外港、信号线路匹配函数参数的数据类型和尺寸。请注意
无论何时添加或更改函数调用者块的AUTOSAR模型,更新函数调用者AUTOSAR配置。打开代码映射编辑器。在对话框中,单击更新按钮
。这个动作负载或更新数据传输模型,函数调用者,数值类型在你的金宝app模型。更新后,函数调用者出现在补充道函数调用者标签的代码映射编辑器。
配置一个AUTOSAR客户端所需的元素,一般应该创建顺序,有:
AUTOSAR客户机/服务器(c)接口
匹配的一个或多个AUTOSAR操作仿真软件服务器AUTOSAR服务器中定义的函数模型金宝app
AUTOSAR客户端端口接收客户端请求服务器c提供的操作界面
打开AUTOSAR字典。查看AUTOSAR c接口模型中去c接口视图。模型已经包含客户机-服务器接口命名的例子
csInterface
。如果一个c接口AUTOSAR配置中还不存在,创建一个。
在c接口视图中,单击添加按钮
。这个动作打开对话框添加接口。
在对话框中,将新的c接口,并指定操作的数量你打算与接口。离开其他参数的默认值。点击添加。新界面出现在c接口视图。
下c接口创建一个或多个AUTOSAR操作匹配仿真软件服务器AUTOSAR服务器中定义的函数模型。金宝app
扩大c接口和扩大个人c接口,您想要添加一个AUTOSAR操作。(在示例模型,扩大
CsInterface
)。查看操作界面,选择操作。示例模型已经包含一个AUTOSAR操作命名readData
。如果一个AUTOSAR操作模型中不存在,创建一个。(如果您的c接口包含一个占位符操作命名
Operation1
,您可以安全地删除。)在业务视图中,单击添加按钮
。该操作将会打开添加操作对话框。
在对话框中,输入操作名称。指定相应的仿真软件的名称服务器功能。金宝app离开金宝app仿真软件的功能设置为
没有一个
,因为客户端模型不包含仿真软件服务器功能块。金宝app点击好吧。新操作出现在视图的操作。
添加AUTOSAR操作参数。
扩大操作,扩大个人操作(例如,
readData
),并选择参数。在参数视图中,单击添加按钮
一次为每一个函数参数。例如,对于
readData
,单击添加四次按钮,为参数人事处
,数据
,犯错
,NegCode
。每一个条目单击创建一个新的观点。选择每个参数条目并设置参数的名字和方向匹配函数原型。
查看AUTOSAR客户端口模型中,客户端端口视图。扩大AtomicComponents,扩大单个组件配置,并选择ClientPorts。模型已经包含一个例子AUTOSAR客户端端口命名
cPort
。如果一个客户端端口不存在在你的模型中,创建一个。
在客户端端口视图,单击添加按钮
。该操作将会打开对话框添加端口。
在对话框中,将新客户港口,并选择一个c接口。点击添加。新港口出现在客户端端口视图。
这一步完成了AUTOSAR客户机的配置的AUTOSAR字典视图配置。
切换到代码映射编辑器视图的配置和映射模型函数调用者一个AUTOSAR端端口和c操作。金宝app
打开代码映射编辑器。选择函数调用者选项卡。
选择模型函数调用者。金宝app点击ClientPort场和从列表中选择一个端口可用AUTOSAR的客户端端口。点击操作场和从列表中选择一个操作可用AUTOSAR c操作。在示例模型,模型函数调用者金宝app
readData
映射到AUTOSAR客户端口cPort
和c操作readData
。
验证AUTOSAR组件配置,单击验证按钮
。如果报告错误,解决错误,重试验证。重复,直到验证成功。
生成C和ARXML代码模型。
AUTOSAR的客户机-服务器配置错误处理
AUTOSAR定义了一个应用程序错误状态的客户机-服务器错误处理机制。AUTOSAR服务器返回错误状态,与一个值匹配一个预定义的可能的错误。一个AUTOSAR端接收并响应错误状态。AUTOSAR的软件组件,它遵循客户机-服务器错误处理指南可能提供了错误状态AUTOSAR基本软件,如诊断事件管理器(民主党)。
在仿真金宝app软件中,您可以:
进口ARXML实现客户机-服务器错误处理代码。
为客户机-服务器配置错误处理界面。
生成C和ARXML客户机-服务器错误处理代码。
如果你进口ARXML实现客户机-服务器错误处理代码,进口商创建相应的错误状态端口服务器报警(函数调用者块)的位置。
在仿真软件中实现AUTOSAR客户机-服务器错误处理:金宝app
定义可能的错误状态值,仿真软件的AUTOSAR服务器返回的数据类型。金宝app定义一个或多个范围0 - 63错误代码,包容性。底层存储的数据类型必须是一个unsigned 8位整数。范围必须的数据
出口
。例如,定义一个枚举类型appErrType
:classdef(枚举)appErrType < uint8枚举成功(0)错误(1)COMM_MODE_LIMITATION(2)(4)溢出(3)下溢VALUE_MOD3结束(5)方法(静态= true)函数备注说明= getDescription()备注说明=“应用程序错误类型的定义。”;结束hdrFile = getHeaderFile()函数hdrFile = ";结束函数retVal = addClassNameToEnumNames retVal = false ();结束dataScope = getDataScope()函数dataScope =“导出”;结束结束结束
请注意
仿真软件金宝app的数据类型定义代表可能的错误的模型并不直接影响进口和出口的AUTOSAR可能的错误ARXML代码。修改导出的c接口或c操作可能的错误,使用AUTOSAR属性功能。这个主题提供例子。
定义一个错误状态输出参数金宝app仿真软件的功能块模型AUTOSAR服务器。配置错误状态参数作为唯一函数输出或将其添加到其他输出。例如,这里有一个金宝app仿真软件的功能块,返回一个错误状态值输出
犯错
。的金宝app仿真软件的功能块实现一个算法返回错误状态。
参考模型中可能的误差值类型。在参数输出港块参数错误输出港,指定错误状态的数据类型,在本例中,
appErrType
。集港维1,信号类型来真正的
。配置AUTOSAR属性错误论点的客户机-服务器接口。打开AUTOSAR词典,扩大c接口,并导航到参数AUTOSAR的操作。要添加一个参数,单击添加按钮
。配置参数名和设置方向来
错误
。创建一个端口在每个错误函数调用者块模型AUTOSAR客户机调用。例如,这里有一个函数调用者块模型的调用
fcnWErr
。在函数调用者块参数,指定相同的错误状态数据类型。
配置错误的AUTOSAR属性参数匹配AUTOSAR字典中的信息,参数看来,步骤4所示。
生成C代码函数反映了函数签名和配置中定义的逻辑模型来处理可能的错误。
appErrType fcnWErr (real_T x1, x2 real_T) {appErrType rty_err_0;如果(…)= = 0.0){rty_err_0 =…;其他}{rty_err_0 =…;}返回rty_err_0;}
此外,在本例中,使用的类定义枚举类型构建生成头文件appErrType.h
类型定义,包含可能的错误。
导出ARXML代码包含可能的错误定义,和引用。
<可能的错误> <应用程序错误…> <字>成功< /字> <错误代码> 0 < /错误代码> < /应用程序错误> <应用程序错误…> <字>错误< /字> <错误代码> 1 < /错误代码> < /应用程序错误>…<应用程序错误…> <字>下溢4 < /字> <错误代码> < /错误代码> < /应用程序错误> <应用程序错误…> <字>VALUE_MOD35 < /字> <错误代码> < /错误代码> < /应用程序错误> < /可能的错误>
您可以通过编程方式使用AUTOSAR属性函数来修改出口ARXML代码中可能的错误,和设置方向c操作参数的属性错误
。
下面的例子说下溢和VALUE_MOD3 c接口命名的可能的错误fcnWErr
。
> > arProps = autosar.api.getAUTOSARProperties (bdroot) > > (arProps, fcnWErr, PossibleError) ans = ' fcnWErr /成功' ' fcnWErr /错误' ' fcnWErr / COMM_MODE…”“fcnWErr /溢出”> >得到(arProps, fcnWErr /溢出,“错误代码”)ans = 3 > >添加(arProps,‘fcnWErr’,‘PossibleError’,‘下溢’)> >设置(arProps‘fcnWErr /下溢’,‘errorCode’, 4) > >添加(arProps,‘fcnWErr’,‘PossibleError’,‘VALUE_MOD3’) > >设置(arProps‘fcnWErr / VALUE_MOD3’,‘errorCode’, 5) > >得到(arProps, fcnWErr, PossibleError) ans = ' fcnWErr /成功' ' fcnWErr /错误' ' fcnWErr / COMM_MODE…”“fcnWErr /溢出”‘fcnWErr /下溢’‘fcnWErr / VALUE_MOD3’
您还可以访问c操作可能的错误。下面的示例列出可能的错误操作fcnWErr
c接口上fcnWErr
。
> > arProps = autosar.api.getAUTOSARProperties (bdroot) > > (arProps ' fcnWErr / fcnWErr ', ' PossibleError ') ans = ' fcnWErr /成功' ' fcnWErr /错误' ' fcnWErr / COMM_MODE…”“fcnWErr /溢出”
下面的示例集c的方向操作参数犯错
来错误
。
> > arProps = autosar.api.getAUTOSARProperties (bdroot) > >设置(arProps fcnWErr / fcnWErr犯错”,“方向”、“错误”)> >得到(arProps fcnWErr / fcnWErr犯错”,“方向”)ans =错误
AUTOSAR服务器运行的并发性约束
以下块和建模模式不符合AUTOSAR服务器可运行的并发执行。
块,在仿真软件®功能:金宝app
块与国家,如单位延迟。
与零交点逻辑块,如触发子系统,使子系统。
Stateflow®图表。
其他仿真软件金宝app的功能模块。
Noninlined子系统。
遗留的C函数调用与副作用。
在仿真软件建模模式®功能:金宝app
写入内存数据存储(例如,per-instance-memory)。
写信给全球块信号(例如,静态内存)。
执行并发约束AUTOSAR服务器可运行,使用runnable属性canBeInvokedConcurrently
。房地产位于可运行的AUTOSAR字典视图。
当canBeInvokedConcurrently
被设置为真正的
服务器运行的,AUTOSAR验证检查块和建模模式不兼容的服务器运行的并发执行。如果一个模金宝app型®函数包含一个不兼容的块或建模模式,验证报告错误。如果canBeInvokedConcurrently
被设置为假
不检查块和建模、验证模式不兼容的服务器运行的并发执行。
你可以设置canBeInvokedConcurrently
来真正的
只有一个AUTOSAR服务器运行的——也就是说,与一个可运行OperationInvokedEvent
。房地产canBeInvokedConcurrently
不支持与其他事金宝app件触发可运行,如定时事件。如果canBeInvokedConcurrently
被设置为真正的
nonserver runnable, AUTOSAR验证失败。
以编程方式设置可运行属性canBeInvokedConcurrently
,使用AUTOSAR属性功能集
。下面的示例设置可运行属性canBeInvokedConcurrently
来真正的
AUTOSAR服务器运行的命名Runnable_readData
。
open_system (“mControllerWithInterface_server”)arProps = autosar.api.getAUTOSARProperties (“mControllerWithInterface_server”);SRPath =找到(arProps [],可运行的,“名字”,“Runnable_readData”)
SRPath =1 x1单元阵列{' SWC_Controller / ControllerWithInterface_ar / Runnable_readData '}
invConc =得到(arProps,“SWC_Controller / ControllerWithInterface_ar / Runnable_readData”,…“canBeInvokedConcurrently”)
invConc =逻辑0
集(arProps,“SWC_Controller / ControllerWithInterface_ar / Runnable_readData”,…“canBeInvokedConcurrently”,真的)invConc = (arProps“SWC_Controller / ControllerWithInterface_ar / Runnable_readData”,…“canBeInvokedConcurrently”)
invConc =逻辑1
配置和映射AUTOSAR服务器和客户端编程
以编程方式配置AUTOSAR AUTOSAR客户机-服务器接口的属性,使用AUTOSAR属性等功能集
和得到
。
以编程方式配置仿真软件对AUTOSAR AUTOSAR映射信金宝app息客户端和服务器,使用这些功能:
例如脚本使用AUTOSAR财产和地图功能,看看AUTOSAR的客户机-服务器配置接口。
另请参阅
金宝app仿真软件的功能|函数调用者|触发|参数尺寸。|参数输出港