1. 为什么需要在Linux系统上安装SIMPACK
简而言之,若需要实现基于Simpack的硬件在环(HiL)和软件在环(SiL)系统,其实时仿真Realtime模块仅完整支持Linux系统。
Realtime模块的常见应用包括驾驶模拟器、舒适度模拟器,或与发动机测试平台进行接口。下图为Simpack官方文档的实例,笔者也搭建了一套以Simpack Realtime为核心的类似系统。
Realtime求解器本身经过优化,可以在多个核心上并行运行,而动画和记录器分别在单独的核心上运行。动画和记录器都通过用户数据报协议(User Datagram Protocol,UDP)与Realtime模块求解器通信。求解器与Realtime目标通信,而Realtime目标可以与外部硬件进行接口。Simpack Realtime可与多个不同的目标一起使用,以连接外部硬件/软件执行HiL/SiL模拟,例如dSPACE、Concurrent SIMulation Workbench和Simulink。
在Linux系统中,Realtime支持各个Target,包括:
- Target 'dspace'
- Targets 'concurrent' and 'concurrent-rfactor'
- Target 'udp-general'
- Target 'sensowheel'
- Target 'logitech-g27'
- Target 'sensowheel-g27'
- Target 'rfactor-pro'
- Target 'android-udp'
- Target 'sfunction'
- Target 'simat'
Windows系统仅支持以下Target:Logitech G27方向盘、Matlab/Simulink SIMAT。其中, Matlab/Simulink SIMAT就是比较常用的Simpack-Simulink联合仿真。
2. Ubuntu系统中安装SIMPACK2021x的操作步骤
解压安装包,生成文件夹的名称为DS Simulia SimPack 2021x Win Linux X64。
1)安装 SIMPACK。
在 .../DS Simulia SimPack 2021x Win Linux X64/install文件夹下,首先修改spck-2021x-build107-linux64-installer.bin的文件权限,允许文件作为程序执行。
之后,在终端中运行
sudo ./spck-2021x-build107-linux64-installer.bin
将跳出熟悉的Simpack安装界面。
选择确认安装——“是”。
选择安装路径。
勾选Simpack 2021x与OLicense Server。
正在安装中。
2)安装Olicense Server
SIMPACK安装完毕后,会跳出许可证允许文件作为程序执行程序的安装界面。
正常选择安装。
安装结束后,取消勾选Launch OLicense-Server,Finish。
同时,也取消勾选 Launch Simpack now。
3)Crack许可证文件
将Crack文件夹Crack下的 olicenseserver.lin 替换掉OLicense-Server安装路径下的文件。
若权限不足,则使用chmod +777指令修改对应文件夹权限。
- /opt文件夹处使用
sudo chmod +777 Optimum/
- /opt/Optimum文件夹处使用
sudo chmod +777 OLicenseServer/
获得文件夹修改权限后,可以删除原有olicenseserver.lin文件,再复制新的Crack文件夹的olicenseserver.lin文件到相应位置。
Tips: 如果端口 80 被 IIS 或其他 Web 服务器占用,请将 "olicenseserver.ini" 从 SolidSQUAD\ChangePort 文件夹覆盖到安装 olicenseserver.lin 的目录。
在OLicenseServer安装目录中,本例为/opt/Optimum/OLicenseServer,修改olicenseserver.lin的文件权限,允许文件作为程序执行。并在终端中运行:
sudo ./olicenseserver.lin
大部分情况下,将会遇到如下错误:
olicenseserver.lin: loadlocale.c:130: _nl_intern_locale_data: Assertion `cnt < (sizeof (_nl_value_type_LC_TIME) / sizeof (_nl_value_type_LC_TIME[0]))' failed.
这个错误与 Linux 系统上的区域设置(locales)有关。这意味着在加载 olicenseserver.lin 时,程序试图访问一个不存在的本地化数据。为解决此问题,请在终端中输入:
gedit ~/.bashrc
在打开的.bashrc文件的最后一行,补充如下段落:
export LC_ALL=C
export LC_CTYPE=C.UTF-8
如下图第133、134行。
再次启动终端,在 /opt/Optimum/OLicenseServer中输入
sudo ./olicenseserver.lin
将会出现localhost:80端口已被打开。
4)导入许可证文件
打开网络浏览器,导航到 "http://localhost:80" 以打开 OLicenseServer 控制界面。 如果使用 "ChangePort" 配置,请导航到 "http://localhost:81"。 在导入许可证操作中,从 SolidSQUAD 目录选择 SIMPACKAG_SSQ.olixml,点击导入并等待多个 "accepted" 消息。
关闭 Web 界面。
5)在Simpack前处理GUI界面中输入License地址
若Simpack没有在桌面上生成快捷方式,则可以在/opt/Simpack-2021x/run/bin/linux64/simpack-gui中找到GUI前处理界面。
可以通过搜索gui后,右键选择运行,或者使用以下命令:
cd /opt/Simpack-2021x/run/bin/linux64
./simpack-gui
Simpack后处理程序,位于/opt/Simpack-2021x/run/bin/linux64/simpack-post。
可以通过搜索post后,右键选择运行,或者使用以下命令:
cd /opt/Simpack-2021x/run/bin/linux64
./simpack-post
根据以上程序打开方式,打开 Simpack前处理界面,在 DSLS 错误提示上选择忽略, 转到 "Extras - Licensing",选择 "OLicense" 作为许可证类型,选择 "localhost:80" 作为许可证服务器。 如果使用 "ChangePort" 配置,请将 "localhost:81" 用作许可证服务器。
此时,顺利进入Simpack GUI界面,可以继续建模计算,完成安装。
注意:每次重启开机时,Olicenseserver可能不会自动启动,需要手动进入OLicenseServer安装目录,即/opt/Optimum/OLicenseServer中输入
sudo ./olicenseserver.lin
再启动Simpack前处理GUI界面程序。
3. 桌面上的“一键启动” Simpack
如果想实现Ubuntu桌面上的“一键启动” Simpack,并自动在后台启动并保持 OLicenseServer 进程,而不必一直开着一个显示信息的终端窗口。主要分为两个步骤:
- 准备启动脚本
- 创建桌面快捷方式(.desktop 文件)
首先,在例如/home/.../Documents等目录,创建静默启动OLicense与SIMPACK的脚本文件,并命名为start_simpack.sh,如下。请根据SIMPACK与OLicense文件的实际所在目录进行修改。
#!/usr/bin/env bash
# 1. 启动 OLicenseServer(如果已经在运行,则跳过)
# 检查进程是否已存在
pgrep OLicenseServer > /dev/null 2>&1
if [ $? -ne 0 ]; then
echo "OLicenseServer is not running, start it now..."
# 进入 OLicenseServer 目录
cd /opt/Optimum/OLicenseServer
# 以后台方式启动,并将输出重定向到日志文件
nohup ./OLicenseServer &> ~/OLicenseServer.log &
# 给点时间让 OLicenseServer 完成初始化
sleep 3
else
echo "OLicenseServer is already running."
fi
# 2. 启动 Simpack GUI
cd /opt/Simpack-2021x/run/bin/linux64
./simpack-gui
上述命令行文件保存后,需要使用chmod +x /home/.../Documents/start_simpack.sh命令,以使具有可执行权限。
主要字段说明
-
nohup:可避免因关闭终端导致进程退出
-
pgrep:通过进程名判断 OLicenseServer 是否已经在运行。
-
将输出重定向到
~/OLicenseServer.log
,如果想保留更详细的日志、或指定其他路径,可自行修改 -
如果你希望看到启动信息,可以去查看
~/OLicenseServer.log
之后,在桌面上新建文件start_simpack.desktop,并写入以下命令行:
[Desktop Entry]
Version=1.0
Type=Application
Name=Start SIMPACK in 15s
Comment=One-click to start SIMPACK
Exec=/home/yaoyao/Documents/start_simpack.sh
Icon=/opt/Simpack-2021x/resources/images/icon_simpack.svg
Terminal=false
Categories=Utility;Application;
主要字段说明
-
Exec=
:指定刚才编辑好的脚本绝对路径; -
Terminal=false
:表示无需在终端中打开; -
Name=Start SIMPACK
:显示名称 (我添加了15s是为例提醒启动所需时长稍长); -
Icon=
:可指定自定义图标路径。
保存该命令行文件后,同样需要使用chmod +x ~/Desktop/start_simpack.desktop,并在桌面上右击使其“可执行”/“可运行”/“允许启动”。
这样即实现了,Ubuntu环境中一键启动SIMPACK仿真GUI(前处理)界面。
避免 Ubuntu 中的字体与编码库缺失报错
为了避免以下报错,引起SIMPACK后处理字体显示不全:
QIconvCodec::convertFromUnicode: using ASCII for conversion, iconv_open failed
QIconvCodec::convertToUnicode: using ASCII for conversion, iconv_open failed
WARNING: Could not find fonts "Utopia" or "Arial" - some texts will be invisible
-
安装缺少的字体
错误提示显示缺少字体 "Utopia" 或 "Arial",通过安装字体包解决:
sudo apt-get install ttf-mscorefonts-installer
sudo apt-get install fonts-ubuntu fonts-dejavu fonts-freefont-ttf
-
检查并安装缺少的编码库
QIconvCodec::convertFromUnicode: using ASCII for conversion, iconv_open failed
的错误,通常与系统中缺少字符编码库有关。尝试安装以下编码相关的库:
sudo apt-get install libicu-dev
sudo apt-get install libiconv-hook1
-
确保系统的语言和区域设置正确
有时字符编码问题也与系统的区域设置有关。
sudo dpkg-reconfigure locales