By Toradex胡珊逢
簡介
CODESYS 是基于 IEC 61131-3 的 PLC 開發(fā)工具,在工業(yè)控制轧邪、交通等領(lǐng)域中有著廣泛的應用。文章將介紹如何在 Toradex 采用 TI AM62 SoC 的 Arm 計算機模塊 Verdin AM62 使用評估版本的 CODESYS。
硬件介紹
Verdin AM62使用 TI AM623/AM625 處理器哗总,具有最多 4 個主頻 1.4GHz 的 Cortex-A53 內(nèi)核真屯,以及一個 400MHz 主頻的 M4F 核心脸候。內(nèi)存采用 LPDDR4,從 512 MB 到 2 GB 可供選擇绑蔫。eMMC 從 4~16 GB运沦。模塊采用 SODIMM DDR4 標準,提供兩路千兆以太網(wǎng)配深、CAN携添、MIPI DSI 顯示、I2C篓叶、SPI烈掠、UART 等接口。
BSP 配置
CODESYS 分為在電腦端使用 IDE缸托,在 GUI 中開發(fā) PLC 應用左敌,和在設備上運行時 runtime 軟件,例如在 Verdin AM62 上的 CODESYS Control for Linux ARM SL俐镐。CODESYS 的運行需要使用 RT-Linux 內(nèi)核矫限。Toradex 發(fā)布的 Linux BSP 采用?Yocto Project?
編譯,可以在生成 BSP 時直接為 Linux 內(nèi)核打上實時補丁京革。修改 local.conf 文件奇唤。
DISTRO="tdx-xwayland-rt"
為了盡可能保證內(nèi)核時實時性,可以裁減 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 網(wǎng)站下載?IDE 開發(fā)工具,安裝成功后再下載 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堡妒。將其復制到開發(fā)板后運行下面命令安裝。
opkg?install?codesyscontrol_linuxarm64_4.13.0.0_arm64.ipk
在 Dependency 目錄下還有一個 deb 格式的 codemeter-lite 安裝文件溉卓。如有你已經(jīng)有 CODESYS 的授權(quán)密鑰皮迟,安裝 codemeter 后搬泥,上面安裝的 codesyscontrol 將不受 30 分鐘的試用時間限制。由于 Verdin AM62 默認不使用 Debian 包管理系統(tǒng)伏尼,可以參考?CODESYS 的網(wǎng)頁說明忿檩,手動解壓 deb 安裝包后復制相關(guān)文件。執(zhí)行下面命令即可啟動 codesysctonrol爆阶,ps aux|grep codesys查看運行情況燥透。當 codesyscontrol 運行后,在同一個網(wǎng)絡中的電腦上的 CODESYSY IDE 就可以發(fā)現(xiàn)該設備辨图。
/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 應用開發(fā)
打開 IDE 后點擊新建項目班套,設置項目名稱和保存路徑。
Device 選擇 CODESYS Control for Linux ARM64 SL故河,這是上面安裝的組件孽尽。
點擊 Scan Network 掃面本地網(wǎng)絡,發(fā)現(xiàn) Verdin AM62 設備忧勿。
首次發(fā)現(xiàn)設備時需要設置一個用戶名和密碼,IDE 將會使用該賬戶和設備通信瞻讽。
創(chuàng)建完畢后使用該帳號登錄鸳吸。
然后就可以看到該設備,后面的 PLC 應用將這上面調(diào)試和運行速勇。
具體的 PLC demo 編寫可以參考我們開發(fā)者網(wǎng)頁的說明晌砾。開啟 web visu 功能后,可以連接到 Verdin AM62 的 IP烦磁,在瀏覽器中查看 PLC 運行情況养匈。
Verdin AM62 實時性能測試
在使用 Yocto Project 編譯鏡像時已經(jīng)添加了 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 持續(xù)運行 1 個小時并統(tǒng)計結(jié)果陨晶。
stress-ng -c 4 --cpu-method all & \
cyclictest -m -Sp98 -D1h -h400 -i200 -q > output
總結(jié)
文章介紹了如何在 Verdin AM62 上使用 CODESYS猬仁,該方法同樣也適用于其他 Toradex Arm 64bit 的模塊,如 iMX8 SoC先誉。關(guān)于 CODESYS 實時性調(diào)教湿刽,可以從 BSP、內(nèi)核裁減褐耳,CPU 親和性設置诈闺,中斷優(yōu)化等方面進行,具體參考下面文檔铃芦。
參考: