ICS的启动和运行依赖两个条件
1)配套的Pulsar系统,即完整的启动的Pulsar软件及完全对应的通道,即使仅仅用于读取已有的迭代Session也需要运行一个与之对应的Pulsar系统;
2)如果需要进行迭代,则需要一个可以响应且能采集的运行中的Pulsar系统,该系统是真实的实际系统或者Socket仿真或依托现有的DSP object进行搭建的系统,即要求至少连接了一个HUB或Demo HUB硬件;
针对第一个限制,Vitrual ICS跳过相关的检测,可以直接进入系统,相关的通道也是直接手动输入,而不是通过从Pulsar系统带入供选择;
针对第二个限制,对上述迭代过程分析,该限制发生在播放和采集阶段,一旦没有HUB硬件是无法播放和采集的,而采集和播放在迭代中实际是同步发生的,为此Virtual ICS在播放的过程中,直接调用外部的程序,来生成(或直接复制拷贝、或远程拷贝等等操作)形成响应文件,跳过从USB连接HUB采集响应sef文件的过程,替代常规ICS的播放和采集过程。
Servotest: 相较于ICS对Pulsar的绑定依赖,Virtual ICS允许迭代过程应用于数学模型(Adams、Simulink等)或程序文件生成sef文件,而不必依赖真正的硬件平台(Pulsar等),对ICS中的同步播放和采集流程进行替换,如图1.1 所示。
Virtual ICS用户界面与ICS大体相同,操作步骤包括:
目标设置、模型设置、系统辨识、迭代过程,其最大不同为步骤二:模型设置,具体包括:
a. Define model executables
b. Define model outputs
c. Define model inputs
依次介绍如下。
“Model Executable”
Virtual ICS的核心在于其选择的可用来生成响应sef文件的 可执行文件,该文件类型通常为.exe .cmd .com,内核主要包括:
a. 等效实际控制系统的数学模型 【目前还没有相应的应用】;
b. 对其输入、输出文件的操作指令,并可基于Web API扩展到对Pulsar的远程控制等。
点击“Browse”选择用以模拟系统的可执行文件,迭代中每次点击“Play”,该可执行文件均会带参数执行,为给定的驱动输入文件生成相应的响应输出,且每一次执行时,程序是知道当前的驱动<inputfile>、响应<outputfile>的sef文件的具体路径。
“Input File”
勾中复选框,为 “Model Executable” 运行前的操作,将Virtual ICS生成的驱动文件复制到该路径。
当点击"Play"时,Virtual ICS自动复制当前驱动文件至所设置的驱动路径,再由exe为其响应路径生成文件。
注意:exe还需负责生成当前环节的迭代文件,用于后续的迭代运算。
** “Output File”**
勾中复选框,为 “Model Executable” 运行后的操作,如果“Model Executable”没有将
“Command Line Argumeents”
即“Model Executable” 的 命令行启动参数,可搭配上方复选框使用。
其中参数<inputfile> 和<outputfile>做为Virtual ICS内置参数,播放时会被自动替换为当前迭代环节的驱动、响应路径。
如果只是通过Virtual ICS在不开Pulsar前提下打开ICS Session则只需要指定一个exe文件和填上<inputfile> <outputfile>(注意中间的空格)即可,如下图所示:
该参数可进一步添加,通过双引号进行参数确定,空格分隔,如使用: <inputfile> <outputfile> "C:\PulsarData\SourceforVirtualICSTest\MandoBrakeLoad",其中 和将替换后作为前两个参数,"C:\PulsarData\SourceforVirtualICSTest\MandoBrakeLoad"作为第三个参数一起传给Model Executable。
“Exit Code”
Virtual ICS会自动对较该值与可执行文件的运行返回值,一致后方可继续操作。
本文例2设为“1”,表示运行正常。
当Virtual ICS在播放时崩溃,导致ReplayClient关闭,则返回“code(0)”,迭代无法进行。如下图所示:
“Channel Name”
设置可执行文件具体输出的通道名称。
此处补充 Virtual ICS内置设定: 辨识阶段的 “Calculate Ststem Matrix” 与 迭代阶段的 “Compute Drive File” 需要满足:
“当前响应文件通道名称” 与 “Define model outputs”中的通道名称一致
本文例2中:由于Virtual ICS的响应文件 是由Pulsar端Datalogger所存储的文件复制而来,所以此处通道名称及顺序 均要与Pulsar端Datalogger所设一致。(Pulsar端设置详见“2.1.4 Run_rICS.ezf”)
“Channel Units”
此处的单位仅用于在检查会话时提供信息,响应文件中会自动设置为目标文件单位。
用于设置可执行文件的具体输入通道。
“Channel Name”,配置驱动文件的通道名。此处命名不再绑定Pulsar端 Controller的Feedback信号,且仅用于检查会话时的信息,并不是实际驱动文件中的通道名称。
但需要注意:驱动文件的通道顺序由此处设置,使用时注意与实际控制器相匹配。
“Channel Units”,此处指定的通道单位,将应用于后续的驱动文件中。
“Channel Scales”,此处手动设置驱动信号的Scale值,如果应用于实际作动器,则Scale应与传感器范围(即作动器Feedback信号的Scale值)相匹配。如果不是,应设置通道Scale高于预期的驱动Amp,避免出现下图1.6 警告,说明此时驱动计算有误。
使用场景:仅Virtual ICS
本例在完全不依赖Pulsar的前提下进行迭代,更多的是演示的意义。
vICSCopy.exe的代码如下,除默认参数<inputfile> <outputfile>,需要再增加一个参数,作为源ICS Session的文件,用于模拟模型的使用和生成响应文件,使用mcc -m vICSCopy.m -d 'C:\PulsarData\VirtualICSModelExe'编译到指定路径。
%%
% 生成exe:mcc -m vICSCopy.m -d 'C:\PulsarData\VirtualICSModelExe'
% 生成的.exe文件运行的电脑上需要安装MCR(Matlab Compiler Runtime)
% Virtual ICS 中点击“Play”时执行可执行文件
% vICS中 “计算SM”与“计算Drive”要求:“响应文件通道名”与vICS——“Define model outputs”一致
% DrivePath,ResponsePath: 由vICS <inputfile> <outputfile> 给出,SourceIcsSessionFolder由vICS的第三个参数给出,示例:
% <inputfile> <outputfile> "C:\PulsarData\SourceforVirtualICSTest\MandoBrakeLoad"
%%
function [out1] = vICSCopy(DrivePath, ResponsePath, SourceIcsSessionFolder)
disp('Current Drive File:')
disp(DrivePath);
disp('Current Response File:')
disp(ResponsePath);
disp('Source Ics Session Folder:')
disp(SourceIcsSessionFolder);
Drive_Folder = '\ICS_DRIV';
Logg_Folder = '\ICS_LOGG';
%% 给定数据源的迭代次数,获取驱动数据
IteratoinNumber = input('Please Input Current Iteration Number to copy Drive File [0 : WhiteNoise.sef , i: Drive[i].sef]:');
if (IteratoinNumber == 0)
driveFile = '\WhiteNoise.sef';
else
driveFile = ['\Drive', num2str(IteratoinNumber), '.sef'];
end
SourceDriveFilePath = fullfile(SourceIcsSessionFolder, Drive_Folder, driveFile);
%% 给定数据源的迭代次数,获取响应数据,通常也可以和上面合二为一
IteratoinNumber = input('Please Input Current Iteration Number to copy Response File [0 : Response0.sef, i : Response[i].sef]:');
responseFile = ['\Response', num2str(IteratoinNumber), '.sef'];
SourceResonseFilePath = fullfile(SourceIcsSessionFolder, Logg_Folder, responseFile);
%% 复制驱动和响应文件
copyfile(SourceDriveFilePath, DrivePath);
disp('Drive Updated:');
disp(DrivePath);
copyfile(SourceResonseFilePath, ResponsePath);
disp('Response Updated:');
disp(ResponsePath);
out1 = 1;
return;
end
Virtual ICS迭代运算内置条件:
辨识阶段的 “Calculate Ststem Matrix” 与 迭代阶段的 “Compute Drive File” 需要满足:
“响应文件通道名称” 与 Virtual ICS——“Define model outputs”中的通道名称一致
a. 启动Virtual ICS;路径:C:\Program Files (x86)\Servotest\Pulsar\VirtualIcs.exe
b. 可加载测试的ICS Session文件:"C:\PulsarData\ICS\ICS Brake\session.stdics"
c. 模型设置部分按上述1.2.1 Define model executables内容,如图所示
命令行中的 “D:\vICS_VirtualICSCopy.exe\Session2” 即要复制的Session路径
d. 点击播放即启动exe,所示
此处输入数值0、0即代表要复制Session的白噪声、白噪声响应文件,输入后回车即可完成替换
e. 迭代过程中点击播放,此处输入数值4、2即代表要复制Session中第4次迭代的驱动文件,第2次迭代的响应文件,输入后回车即可完成替换。
使用场景:Pulsar + Virtual ICS
场景一: 1个Session会话可切换控制Pulsar端的多个子系统
场景二: 迭代端与Pulsar端不在同一台PC,仍可进行异地迭代
具体原理: PulsarReplay.exe 在例1对迭代文件操作的基础上,通过在Pulsar端设置的共享文件夹,又扩展了
Pulsar(Web API版)远程运行 ezf文件 的功能,并且具体执行的Pulsar子系统可以选择。
(注:本例Pulsar为本地端,异地端尚未实践,本示例由Glen提供,原理与之前的多台Slave ICS比较接近。新ICSM具备跨电脑与Pulsar通讯,因此Vitrual ICS这种应用场景意义不大)。
首先进行环境搭建。所需文件如下:
配置Pulsar运行环境;提供数据库。
为本文所用可执行文件提供操作环境。
将文件“ReplayClient.Zip”解压至 “C:\Program Files (x86)\Servotest\ReplayClient”
如图所示。
PulsarReplay.exe 为本例Virtual ICS的可执行文件。使用时需在模型设置步骤(即上文1.2.1)选中
“C:\Program Files (x86)\Servotest\ReplayClient\PulsarReplay.exe”
其作用包括:
1. 将Virtual ICS生成的驱动文件 发送至 →(共享)文件夹,用于Pulsar端Replayer播放
2. 每次“Play”均通过Web API运行"Run_rICS.ezf",进而控制Pulsar
3. 将Pulsar端记录的Response文件 发送至 → Virtual ICS响应文件,用于辨识迭代
新建:共享文件夹(本地Pulsar端可不用设置共享)
该文件夹用于存放 Pulsar端Replayer和Datalogger相关文件,以及"Run_rICS.ezf"
因为本例中 replayclient 是设计用于跨网络工作的,所以当Pulsar端与Virtual ICS端异地时,需要在Pulsar端PC设置一个共享文件夹Xfr,并带有子文件夹rICS。本例所建如图3.3 所示。
配置文件
紧接着修改 replayclient 的配置文件
(路径:"C:\Program Files (x86)\Servotest\ReplayClient\PulsarReplay.dll.config")
如图 3.4 阴影框所示,改为共享文件夹的本地网络名(本地Pulsar端使用绝对路径即可)
<add key="Local_RemoteXfrReplay" value="//BBKCO/Xfr/rICS/Drive.sef"/>
<add key="Local_RemoteXfrResponse" value="//BBKCO/Xfr/rICS/Response.sef"/>
此处设置运行的Pulsar子系统为 “modalSim”:<add key="PulsarSystem" value="modalSim"/>
此处添加运行的ezf文件路径:<add key="RemoteTestEZF" value="D:\xfr\rICS\Run_rICS.ezf"/>
每次播放时replayclient均通过执行此ezf来控制Pulsar,具体控制说明见下文 3.1.4
Virtual ICS播放时调用Client如下图所示
提供了一个Virtual ICS实例,由Virtual ICS加载即可。
此文件负责设置Pulsar端,为Virtual ICS迭代的实际执行机构。每次Virtual ICS播放均会通过replayclient使Pulsar执行该ezf。
为其流程总览
其中 setup4ics.ezf 所示,其设置各自由度Controller的input信号及scale;设置各Amplitude;设置跟踪监测logger为"Acq02"等
此外, “prepareacq” 负责设置主记录logger"Acq01",包括存储路径(共享文件夹\Response.sef);采样频率;采样信号等。具体内容如图3.9 所示。
本文中Virtual ICS响应通道设置均受限此处,其名称、顺序均需与此处一一对应,否则迭代无法正常进行。
最后 “Replay” 负责设置播放器"Replayer",包括设置驱动文件路径(共享文件夹\Drive.sef);Replayer启动等。如图3.10 所示。
了解并完成上述 3.1准备工作后,下面将以一个Virtual ICS实例进行演示。
a. 启动Pulsar,运行子系统 “modalSim” ;
b. 运行 ActionRunners “modaldirect_unpark”完成上压升台;
c. 运行 ActionRunners “modaldirect_setup4ICS”完成迭代播放前准备。
a. 启动Virtual ICS,路径:C:\Program Files (x86)\Servotest\Pulsar\VirtualIcs.exe
b. 可新建Session或加载上述 3.1.3 rICS1.Local.zip的Session,此处新建Session:Test12151
d. 选择目标文件后设置通道,如图3.11 所示
c. 基本操作类似ICS,但需要注意:模型设置部分按上述 1.2.1 Define model executables操作,如下图所示
d. 此处设置响应通道,注意:应与Pulsar端所执行的 Run_rICS.ezf设置一致,如下图所示。
e. 此处设置驱动通道,通道名称可自拟,但需注意Scale值仍需与Pulsar端对应Controller的Feedback信号Scale值一致。
f. 余下操作类似ICS,此处跳至播放环节。点击 "Play"即可启动 “PulsarReplay.exe”,如图3.15 所示。