By Toradex 胡珊逢
简介
CODESYS 是基于 IEC 61131-3 的 PLC 开发工具,在工业控制、交通等领域中有着广泛的应用。文章将介绍如何在 Toradex 采用 TI AM62 SoC 的 Arm 计算机模块 Verdin AM62 使用评估版本的 CODESYS。
硬件介绍
Verdin AM62使用 TI AM623/AM625 处理器,具有最多 4 个主频 1.4GHz 的 Cortex-A53 内核,以及一个 400MHz 主频的 M4F 核心。内存采用 LPDDR4,从 512 MB 到 2 GB 可供选择。eMMC 从 4~16 GB。模块采用 SODIMM DDR4 标准,提供两路千兆以太网、CAN、MIPI DSI 显示、I2C、SPI、UART 等接口。
BSP 配置
CODESYS 分为在电脑端使用 IDE,在 GUI 中开发 PLC 应用,和在设备上运行时 runtime 软件,例如在 Verdin AM62 上的 CODESYS Control for Linux ARM SL。CODESYS 的运行需要使用 RT-Linux 内核。Toradex 发布的 Linux BSP 采用 Yocto Project
编译,可以在生成 BSP 时直接为 Linux 内核打上实时补丁。修改 local.conf 文件。
DISTRO="tdx-xwayland-rt"
为了尽可能保证内核时实时性,可以裁减 BSP 中的 wayland 显示、Qt demo 等组件,添加用于测试实时性能的 cyclictest。
IMAGE_INSTALL:remove = " weston wayland-qtdemo-launch-cinematicexperience"
DISTRO_FEATURES:remove= "wayland"
IMAGE_INSTALL:append = " rt-tests"
最后使用 bitbake 命令编译镜像,并使用 Toradex Easy Installer将其烧录到 Verdin AM62 模块。
bitbake tdx-reference-multimedia-image
CODESYS IDE 安装
从 CODESYS 网站下载 IDE 开发工具,安装成功后再下载 64bit 的 CODESYS Control for Linux ARM SL。这是后缀为 package 的文件,需要在 CODESYS IDE 中按照下图打开 CODESYS Installer 导入 package 文件进行安装。
安装完毕后可以看到以下目录 C:\Program Files\CODESYS 3.5.20.20\CODESYS\CODESYS Control for Linux ARM64 SL。
Verdin AM62 软件安装
在 Verdin AM62 上需要安装来自 C:\Program Files\CODESYS 3.5.20.20\CODESYS\CODESYS Control for Linux ARM64 SL\Delivery\linuxarm64 目录下的 codesyscontrol_linuxarm64_4.13.0.0_arm64.ipk。将其复制到开发板后运行下面命令安装。
opkg install codesyscontrol_linuxarm64_4.13.0.0_arm64.ipk
在 Dependency 目录下还有一个 deb 格式的 codemeter-lite 安装文件。如有你已经有 CODESYS 的授权密钥,安装 codemeter 后,上面安装的 codesyscontrol 将不受 30 分钟的试用时间限制。由于 Verdin AM62 默认不使用 Debian 包管理系统,可以参考 CODESYS 的网页说明,手动解压 deb 安装包后复制相关文件。执行下面命令即可启动 codesysctonrol,ps aux|grep codesys
查看运行情况。当 codesyscontrol 运行后,在同一个网络中的电脑上的 CODESYSY IDE 就可以发现该设备。
/etc/init.d/codesyscontrol start
ps aux|grep codesys
root 710 9.2 1.9 892328 39456 pts/0 SLl 08:04 0:00 /opt/codesys/bin/codesyscontrol.bin /etc/codesyscontrol/CODESYSControl.cfg
PLC 应用开发
打开 IDE 后点击新建项目,设置项目名称和保存路径。
Device 选择 CODESYS Control for Linux ARM64 SL,这是上面安装的组件。
点击 Scan Network 扫面本地网络,发现 Verdin AM62 设备。
首次发现设备时需要设置一个用户名和密码,IDE 将会使用该账户和设备通信。
创建完毕后使用该帐号登录。
然后就可以看到该设备,后面的 PLC 应用将这上面调试和运行。
具体的 PLC demo 编写可以参考我们开发者网页的说明。开启 web visu 功能后,可以连接到 Verdin AM62 的 IP,在浏览器中查看 PLC 运行情况。
Verdin AM62 实时性能测试
在使用 Yocto Project 编译镜像时已经添加了 rt-tests 工具,下面使用 cyclictest 测试实时性能。测试时把 AM62 4 个核心的时钟均设置到最高的 1.4 GHz。
# echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
# cpufreq-info |grep current
current policy: frequency should be within 200 MHz and 1.40 GHz.
current CPU frequency is 1.40 GHz (asserted by call to hardware).
current policy: frequency should be within 200 MHz and 1.40 GHz.
current CPU frequency is 1.40 GHz (asserted by call to hardware).
current policy: frequency should be within 200 MHz and 1.40 GHz.
current CPU frequency is 1.40 GHz (asserted by call to hardware).
current policy: frequency should be within 200 MHz and 1.40 GHz.
current CPU frequency is 1.40 GHz (asserted by call to hardware).
stress-ng 把所有核心的负荷加满,使用 cyclictest 持续运行 1 个小时并统计结果。
stress-ng -c 4 --cpu-method all & \
cyclictest -m -Sp98 -D1h -h400 -i200 -q > output
总结
文章介绍了如何在 Verdin AM62 上使用 CODESYS,该方法同样也适用于其他 Toradex Arm 64bit 的模块,如 iMX8 SoC。关于 CODESYS 实时性调教,可以从 BSP、内核裁减,CPU 亲和性设置,中断优化等方面进行,具体参考下面文档。
参考:
https://www.ti.com/lit/pdf/SPRADH0