dSPACE AutomationDesk 使用简介
一、介绍
AutomationDesk是一种用于创建和管理任何类型自动化任务的软件工具。在dSPACE工具链中,它主要用于dSPACE硬件上的自动化测试。
二、应用领域
与ECU开发过程并行的还有ECU测试过程。测试开发、测试执行和结果分析、报告生成需要创建大量数据。使用AutomationDesk可以管理测试所需的所有数据。
用户可以创建和指定控制流和测试参数,执行测试并记录结果。所有执行结果都存储在内部。它们可以作为XML数据导出,并动态存储在HTML或PDF文件中。搜索特定的信息,可以很容易找到。因为整个项目的视图结构化,保证能够识别和重现相关测试现象。
三、实现原理
以ControlDesk为例,可以通过COM API访问ControlDesk的相关控件或变量等。
COM(Component Object Model)组件对象模型是基于Windows平台的一套组件对象接口标准。
COM提供跟编程语言无关的方法实现一个对象。无论在AutomationDesk、python文件、或者用C、C#等其他语言写的脚本、跑在内部或者外部解释器上,都是通过COM应用程序编程接口访问操作相关软件的控件或变量。
四、界面及控制栏介绍
如上图,是打开AutomationDesk其中一个ControlDeskAccessExample例程的界面。
例程位置一般在C:\Users\UserName\Documents\dSPACE\ AutomationDesk\Demos路径。不确定的话可以右击AutomationDesk软件,点击属性,查看起始位置找到相关路径。
1、Project Manager & Library Browser
Project Manager: 工程管理窗口提供了工程元素的层次结构。如上图能看到一些变量、测试序列、以及执行测试序列后生成的报告。
Library Browser: 库浏览器为自动化任务提供了广泛的元素。有用于创建基本元素的控制流的自动化块,也有用于定义项目特定参数和变量的数据对象。包括几个标准库,用于访问平台、访问串行接口或使用诊断工具,还可以创建自己的自定义库来集成用户定义的库元素。
其中较常用的为控制流以及相关平台接口,如ControlDesk Access、ModelDesk Access。控制流能帮助实现自动化测试逻辑,访问平台接口能够将平时操作各软件的动作进行自动化。
2、controldeskaccesslib
如上图点开controldeskaccesslib文件,可以看到ControlDesk Access用python是如何实现的,以StartControlDesk为例,可以看到用GetApplicationObject()访问ControlDesk应用并返回一个COM对象,通过操作这个COM对象的属性Visible为True,达到打开ControlDesk的目的。
3、Sequence Hierarchy
Sequence Hierarchy:序列层次结构浏览窗口,和右边工作区的测试序列的元素一一对应,如上图,在窗口对Repeat自动化块进行缩放,右边也会相应的进行缩放。
4、Data Object Editor
Data Object Editor:数据对象编辑器,可以查看和编辑选定图元的数据对象。如上图点中OpenProjectAndExperiment序列,包含两个数据对象,可以在Editor窗口看到。在Reference name一栏可以看到,ProjectFileFullPath数据对象关联了ControlDeskProjectPath数据对象。ControlDeskProjectPath存储的便是要打开的文件路径。
数据对象下方的箭头表示这个数据对象是输入(箭头向右)还是输出(箭头向左)数据,上方箭头是表示关联了相关的数据对象。
5、Control Flows
点击if控制流,可以看到Conditon的 Data Objects,点击Value栏里的三个小点,可以看到if的判断条件是如何表示的。
如图,这里是用的是python的表达式,其中要用python获取AutomationDesk数据对象的值,需要加前缀_AD_。其余有判断条件的控制流也是类似的判断形式。
五、访问平台模型变量
1、MAPort & MAPortConfiguration
知道如何使用控制流、数据对象、如何操控软件的API之外,做自动化常用的还要访问模型里的变量。如上图,sdf文件是模型变量的数据文件,分配运行在SCALEXIO实时机平台上。要在AutomationDesk访问具体变量,那便要配置平台,指定具体的sdf文件。
这需要用到XIL API Convenience或者XIL API库里的模型访问端口(Model Access Port)或者MAPort文件夹,它提供了方便的自动化块,用于访问平台进行读、写、捕获和模拟。
在访问平台之前,先添加Mapping、MAPort、MAPortConfiguration三个变量。
新建一个序列,将刚新建的对象拉动,分别映射到对应的自动化块里的对象。要访问平台首先需要用InitMAPort初始化一个MAPort对象,通过访问操作MAPort对象就达到操作平台一样的效果。MAPortConfiguration是配置具体平台和具体变量文件的数据对象,双击点开MAPortConfiguration。
将Platform name和Variable file,对应上ControlDesk里的平台和文件。
2、Vendor
InitMAPort自动化块里Vendor则是用于选择XIL API的版本以及实现XIL API的供应商,双击Vendeor可以看到,默认填dSPACE。填好MAPortConfiguration以及Vendor,则InitMAPort自动化块便会将初始化好的MAPort data object对象放在MAPort里。
3、Read
那如何进行读取,用Read自动化块作为例子,指定要读取的变量路径是输入一个字符,输出要读取的变量值是一个变量类型,所以在序列创建对应的两个变量分别关联读取和输出两个值。
如图,字符里输入平台模型变量里的路径。
更改DET对应的关/开变量值,Read自动化块读取的值也跟着0/1变化,正确读取。
4、ReadValues
若要批量读取,则可使用ReadValues自动化块,其中VariablePool需要关联Mapping数据对象,Mapping里可以批量填写映射变量路径(Identifier)和变量的别名(Alias),在读取时在Values字典型数据对象中,字符使用别名即可。将模型变量写入值与读取值同理操作。
另外需要注意,一个MAPort数据对象对应一个平台,如若不再使用记得释放MAPort对象,方便其余平台映射使用。
六、总结
了解AutomationDesk的操作原理,界面以及控制栏工具的使用,如何去访问读写具体的模型变量这三点,大部分dSPACE相关的自动化测试执行任务均可通过编程逻辑在AutomationDesk里实现。