AM243x是TI的高性能Sitara MCU產品,具有兩個PRU_ICSSG(可編程實時Unit_Industrial通信子系統Gb)模塊,能夠用于工業以太網通信,如Profinet RT / Profinet IRT,EtherNet/IP,EtherCAT和IO-Link。本文檔詳細介紹了AM64x/AM243x多協議演示,其中Linux系統和Codesys運行時系統運行在AM64x的A53內核上,作為Codesys主站(可描述為軟PLC)工作,而從協議運行在LP-AM243板上。由于不同協議只需更換不同協議棧的固件即可靈活切換,無需更改硬件,因此大大提高了工業以太網通信實施的靈活性,簡化了供應鏈管理,并降低了系統復雜性和BOM成本。此外,AM64x 和 AM243x ALX-17x17 引腳兼容,這使得項目開發在硬件設計和軟件算法實現方面更具可擴展性。
應用背景介紹:
由于擁有千兆以太網,多達4個800Mhz的Cortex-R5F核和豐富外設資源使得AM243x更加適用于高端應用,例如工廠自動化、機器臂、預測性維護和可持續能源管理等。其中,圖1 為工廠自動化中機械臂的實時以太網與控制應用案例。在工廠自動化中多自由度機械臂系統,通過利用AM6442構建的控制器作為一個控制層的PLC,利用多個AM243x集成工業以太網通信和電機控制作為現場層的終端設備,從而實現真正意義上工廠智能化?;诖耍疚臋n將重點介紹AM64x如何實現軟PLC的功能,Codesys軟件如何實現AM243x的遠程I/O控制,以及多協議的切換與應用等。
環境搭建:
整個Demo環境分為硬件搭建與Codesys軟件安裝。其中,AM64x處理器硬件既可以用來當主站,也可以用來當從站;然而,AM243x處理器硬件用做從站控制器(IO-Link協議除外)。如圖2,對于在 AM64x SITARA 處理器硬件上的 CODESYS 運行時,需要適用于 Linux ARM64 SL 的 CODESYS Control。
圖2 Codesys與主/從站連接的示意圖
2.1硬件環境搭建
硬件環境搭建包括了圖3中AM64x-EVM上電,Boot模式選擇,移植Linux操作系統,以及安裝CODESYS Runtime。同時,也有針對LP-AM243上電,協議棧代碼燒錄,RJ45連接等。
圖3 AM64X-EVM的板子及連接示意圖
AM64x-EVM上電:為了避免高浪涌電流,并防止可能損壞 AM64x-EVM組件,應使用power switch(SW1)進行 AM64x-EVM 開機和關機。如打開AM64x-EVM,首先將AM64x-EVM power switch關閉,其次將12v DC/電源適配器的圓口插入AM64x-EVM(J6)并市電下供應給電源適配器,此時LD6 and LD12亮起,最后將power switch(SW1)打開,LD1, LD2, LD3, LD4, LD6, LD7, LD8, LD9, LD10, LD15, LD24, LD25亮,如圖4所示。
圖4 AM64X-EVM正常上電示意圖
設置SD card boot,如圖5所示。要確保AM64x-EVM斷電后再去設置boot模式。由于AM64-EVM需要運行Linux操作系統軟件包,SD卡必須不小于16GB。
圖5 SD BOOT MODE(BOOTMODE [ 0 : 7 ] (SW2) = 1100 0011;
BOOTMODE [ 8 : 15 ] (SW3) = 0110 1100)
其中所有boot引導模式引腳都有一個弱下拉電阻和一個能夠連接到一個強上拉電阻的開關。 開關設置為“ON”對應邏輯“HIGH”,而“OFF”對應邏輯“LOW”。
移植Linux操作系統,需要將 WIC 映像寫入 SD 卡,并設置SD card boot啟動。
首先單擊“下載”,然后選擇 PROCESSOR-SDK-LINUX-AM64X 或 PROCESSOR-SDK-LINUX-RT-AM64X,接著下載tisdk-default-image-am64xx-evm.wic.xz,如圖6所示。
圖6 AM64x默認的Linux系統WIC映像文件下載
其次,可以使用balenaEtcher,腳本script和bmap-tools等方式將WIC 映像寫入 SD 卡,同時也支持客戶自定義WIC 映像文件。
本文檔SD卡的創建是利用balenaEtcher工具將WIC 映像寫入 SD 卡,如下:
圖7 balenaEtcher工具的界面
1.下載并安裝balenaEtcher工具,如圖7所示。需要使用帶SD/TF卡讀卡器的USB分線器,將下載好的tisdk-default-image-am64xx-evm.wic.xz文件,利用balenaEtcher通過USB燒錄至SD卡內。
2.將micro SD卡插入USB-SD讀卡器并啟動Etcher。選擇要刷入的WIC鏡像,選擇USB SD讀卡器為目標,然后,點擊“Flash”。 Etcher會解壓鏡像并寫入SD卡,如圖8所示。
圖8 將 WIC 映像刷入 SD 卡
3.安裝串口助手Tera Term,并建立與 EVM 的串行調試。Tera Term軟件安裝界面,如圖9所示。當使用 TeraTerm 等串行終端仿真器連接到電腦端口COMx。 配置串口設置為115200波特率,8位,無奇偶校驗,1個停止位,無流量控制,如下圖:
圖9 Tera Term串口安裝界面
配置串口的設置界面選擇,如圖10所示。需要注意的是選擇與EVM板所對應的串口,可以嘗試設置EVM在UART Boot模式下識別串口號,或者在電腦屬性→設備管理→Ports。
圖10 配置串口設置的界面示意圖
2.2 Codesys軟件安裝
安裝CODESYS Runtime。在電腦PC上安裝Codesys Development system,同時需要安裝CODESYS Control for Linux ARM64 SL, 先安裝Codesys Development system需要注意的是,關閉電腦防火墻同時運行時run as administrator,如圖11所示。
圖11 Codesys Development system安裝界面
其后安裝CODESYS Control for Linux ARM64 SL可以直接管理員運行,或者從Codesys Development system的Package Manager進行安裝,最終CODESYS Control for Linux ARM64 SL會在安裝包里面進行顯示,如圖12所示。
當然如果控制器采用的是KUNBUS RevPi hardware,則可以從Codesys官網搜索下載并安裝CODESYS Control for Raspberry Pi MC SL。本文檔是基于AM64x SITARA Processor hardware,因此使用的是CODESYS Control for Linux ARM64 SL安裝包。CODESYS Control for Linux ARM64 SL安裝包顯示已安裝,可查看如圖12所示。此外,若沒有可以點擊圖12右上角選擇“Install”,選擇對應的文件進行安裝。
圖12 Codesys安裝包管理的界面顯示
同時,打開 CODESYS Control for Linux ARM64 SL 4.2.0.0.package 存檔文件,例如 Ubuntu 中文件和存檔管理器,或 Windows 中的 7-zip 解壓縮文件,在文件夾目錄下找到如下兩個文件:
Dependancy/codemeter-lite_7.21.4611.501_arm64.deb
Delivery/codesyscontrol_linuxarm64_4.2.0.0_arm64.deb
將這兩個文件復制并安裝在Linux/codesys下,以上僅操作一次即可。可以通過Ubuntu,也可以通過TeraTerm進行操作。
復制命令:
scp Downloads/codemeter-lite_7.21.4611.501_arm64.deb root@192.168.1.134:~
scp Downloads/codesyscontrol_linuxarm64_4.2.0.0_arm64.deb root@192.168.1.134:~
安裝命令:
按如上操作,已制作了一張帶有 AM64x Linux 映像的 Micro-SD 卡并連接到 EVM 的串行端口,請按照下面列出的步驟將 EVM 引導到 Linux:
1)確保 EVM 已關閉電源。 將 Micro-SD 卡插入 EVM(卡的觸點一側應朝下)。
2)確保為 SD 卡啟動正確設置了 EVM 啟動模式開關,如圖5所示SD card boot。
3)將以太網電纜的一端連接到 EVM,另一端連接到路由器。
4)按照Power Switch(SW1)提供的開機順序打開 EVM 的電源。
此時EVM 應該啟動時,并且啟動進度應該會顯示在串行控制臺輸出中。 在啟動結束時,將出現 Arago 登錄提示。 只需輸入“root”即可登錄,如圖13所示。
圖13 AM64x GP EVM 上的 Linux的調試界面顯示
2.3將協議棧燒錄至LP-AM243 Flash
LP-AM243需要注意的是雙Type-C供電,要求滿足5V/3A的要求,充電頭可以使用USB-C PD 3.0 PPS Wall Charger 25W,或者惠普電腦的Type-C供電。正常供電及上電時序要求,見AM243x LP User's Guide (Rev. A)文檔。
為便于網絡調試,將協議棧代碼燒錄至LP-AM243的Flash上,方法如圖14所示。
圖14 SBL OSPI Boot程序流程
其中,SBL OSPI Boot程序是將MCU初始化并且從OSPI Flash 的 0x80000地址讀取并啟動多核appimage代碼,本文檔以PN_RT_MII的example為例,只需將profinet_device_rt_mii_demo_am243x-lp_r5fss0-0_freertos_ti-arm-clang.appimage路徑修改為下圖文件所對應的位置,最后將XIP image屏蔽,即屏蔽最后一行。因為我們選擇的是通過UART進行Flash燒寫,無須將XIP文件進行操作,如圖15所示。
圖15 default_sbl_ospi.cfg文件內容
啟動window命令符操作燒錄成功的顯示界面,如圖16所示。CCS設置串口并上電啟動,可以看到PN/RT啟動運行成功的顯示界面,如圖17所示。
圖16 Window命令符下程序燒錄的顯示界面
圖17 CCS串口顯示PN/RT啟動成功的界面
詳細燒錄工具如:LP-AM243 Flashing Tools
多協議Demo項目搭建
3.1項目介紹與硬件建立
目前Sitara產品AM243x可支持四種協議,詳細參數及關鍵特性如下表所示。
或可從Industrial Communications Toolkit詳細查看SDK_Example的細節內容,如圖18所示。
圖18 MCU+SDK的工業通信工具包
多協議Demo中LP-AM243是以EtherCAT Slave Simple Demo和Profinet Device Demos兩個例子分別與AM64x-EVM進行連接,具體的連接示意圖,如圖19所示。需要注意的是上位機PC通過路由器與AM64x-EVM的標準以太網CPSW相連,另外是PRU-ICSSG的雙端口網口(最上面的是eth1和eth2),進而與LP-AM243的網口相連,最終搭建好整個的硬件環境。
圖19 多協議的Demo連接示意圖
3.2 Codesys啟動與設置靜態IP地址
在AM64x-EVM上eth1設置靜態IP地址,是為了保證AM64x-EVM與LP-AM243在同一個網段內。如果Codesys掃描不到從站LP-AM243設備,則有可能是沒有設置好靜態IP地址。如果是Codesys掃描不到主站AM64x-EVM設備,則有可能是電腦主機IP地址與CPSW的IP地址不對應,則需要對電腦主機IP進行修改。
首先Codesys啟動在EVM上啟動,如圖13所示。注意先設置Tera Term串口,再進行EVM上電即可。接著設置設置靜態IP地址,如圖20所示。靜態IP地址設置成功如圖21所示。
sudo ip addr add 192.168.1.20/24 dev eth1 (eth1 is top port on GP EVM)
圖20 Tera Term上設置靜態IP地址
圖21靜態IP地址設置為eth1
其次,再AM64x-EVM 啟動Codesys控制器,輸入以下命令行:
root@am64xx-evm:~# cd /var/opt/codesys/
root@am64xx-evm:/var/opt/codesys# /opt/codesys/bin/codesyscontrol.bin /etc/CODESYSControl.cfg
Codesys控制器已成功運行的界面,如圖22所示。如若未成功,EVM斷電重新啟動命令。
圖22 Codesys控制器已成功運行的界面
3.3 Codesys編程與顯示
1)PN/RT Example+LED燈控制
從管理員啟動Codesys前,首先確保圖22已經可以在AM64x-EVM成功運行的。
啟動CODESYS開發系統,新建標準項目,如圖23所示。同時,選擇 CODESYS Control for Linux ARM64 SL (3S - Smart Software Solutions GmbH) 作為設備和選擇結構化文本作為編程語言,如圖24所示。PN_Example2項目可以看到所創建項目結構并填充設備樹的結構,如圖25所示。同時在配置 PROFINET 網絡之前,必須將匹配的設備描述文件安裝到 CODESYS 設備存儲庫中,如圖26所示。
不同Example所對應的設備描述文件所在路徑如下:
${SDK_INSTALL_PATH}sourceindustrial_commsethercat_slavestackesi
圖23 新建Codesys的標準項目
圖24 選擇控制器類型及編程語言
圖25 PN_Example2項目界面
圖26 設備描述文件安裝至Codesys的Device Repository
掃描PROFINET Network并添加主站。雙擊左側Device,可以看到掃描網關設備并選擇連接的 AM64x SITARA 處理器,如圖27所示。如果連接成功,則網關和Device的小圓點標志均會顯示綠色。由于電腦主機與AM64x-EVM是走的標準的Ethernet,因此首先需要先添加Ethernet Adapter,如圖28所示。其次,在左側設備樹中右擊Ethernet添加Device,選擇Profinet IO底下的Master,如圖29所示。
圖27 掃描PN網絡和添加主站設備
圖28 為CODESYS Control for Linux ARM64 SL添加設備
圖29 添加PN-Controller的Device
如圖30所示,點擊Ethernet,并選擇General,選取所設置IP地址的eth1。若eth1顯示與eth2相同則說明靜態IP地址設置不成功,則返回至3.2小節重新啟動Codesys和設置靜態IP地址。
圖30 PN-Controller設置eth1:192.168.1.20
掃描從站和進入run模式。首先點擊工具欄Login in并運行,其次在左側設備樹上右擊PN_Controller進行設備掃描,并且進行設置站名和 IP 地址,進而可以將設備復制到PN_Example2項目中,如圖31和32所示。圖32需要注意的是IP地址為前面所設置的靜態IP,必須保證在同一網段,但需要修改最后一位(否則會與eth1的IP地址產生沖突),如本文設定為IP Address:192.168.1.22;Subnet Mask:255. 255. 255.0。
掃描復制添加過后,需要Login out然后再次Login in并運行,此時Codesys才會讓設備進入在線run模式,如圖33所示。
圖31 PN_controller掃描從站設備
圖32 掃描后進行站名和 IP 地址的設置
圖33 PN/RT設備進入在線run模式
Codesys的可視化編程。如果從站為LP-AM243則RJ45網口旁邊的4個LED燈可以被映射,進行遠程控制。如果從站為TMDS243GPEVM則有8個LED燈可以被映射,進行遠程控制。
在PLC_PRG進行變量定義與程序編寫,如下:
PROGRAM PLC_PRG
VAR
i2c_leds AT %QB0 : BYTE :=0;
i2c_led1 : BOOL :=0;
i2c_led2 : BOOL :=0;
i2c_led3 : BOOL :=0;
i2c_led4 : BOOL :=0;
xSwitch1 : BOOL;
xSwitch2 : BOOL;
xSwitch3 : BOOL;
xSwitch4 : BOOL;
END_VAR
i2c_led1 := xSwitch1;
i2c_led2 := xSwitch2;
i2c_led3 := xSwitch3;
i2c_led4 := xSwitch4;
PLC程序編寫的為4個開關控制4個LED燈。在左側設備樹Application添加Add object,選中Visualization,進入到可視化控件選擇,并將變量i2c_leds和xSwitch1鏈接到Lamp和Switch,如圖34所示。此外,還需要將所定義的i2c_leds變量鏈接到PN_Device的輸出字節上,如圖33中am2434-10上的I/O map上,如圖35所示。
圖34 可視化控件與Codesys定義變量鏈接
圖35 可視化控件與Codesys定義變量鏈接
最終保存PN_Example2項目,Login in和Run可看到直接操作可視化控制Switch可控制LP-AM243上網口旁邊的四個LED燈,如圖36所示。
(a)Codesys上Switch未打開狀態 |
(b)Codesys上Switch打開狀態 |
圖 36 Codesys遠程控制LP-AM243的LED燈
2)Simple EtherCAT+LED燈控制
AM64x-EVM無須更改,僅通過Flash程序操作將Simple EtherCAT的程序燒錄至LP-AM243的板子上,并重復之前的操作如啟動Codesys Controller,設置靜態IP地址,新建Codesys項目和編程。當CCS設置串口并給LP-AM243開發板上電即可看到串口打印信息,如圖37所示。
圖37 LP-AM243的Simple EtherCAT已經啟動
Codesys建立的EtherCAT1工程項目后,所添加的Device為EtherCAT-Master,如圖38所示。同時掃描從站設備,如圖39所示。若掃描不出來從站設備,則需要Login out,然后再次Login in進行設備掃描。若此方法仍無法掃描從站設備,則需要檢查LP-AM243協議棧是否正常跑,以及Codesys Controller是否如圖22所示。
圖38 添加EtherCAT-Master的Device
圖39 掃描從站設備顯示界面
當EtherCAT1工程項目Login in 和run時,導航到“Expert Process Data”選項卡,選擇并設置后將顯示該選項卡,然后選擇“Load PDO Info from Device”,如圖40所示。
Codesys的可視化編程。EtherCAT 過程數據 LED 可以通過將過程輸出圖像中的前 4 位映射到結構化文本程序中的布爾變量來尋址,映射完成后,可以分配/操作程序中的變量。 例如,我們可以在EtherCAT1工程項目中可視化界面中分配它們。
圖40 Load PDO Info from Device操作前
圖40 Load PDO Info from Device操作后
圖41 可視化控件與Codesys定義變量鏈接
如PN/RT Example+LED燈控制一樣,需要定義變量,鏈接變量到輸出的控制字節上,進而實現遠程LED燈控制,如圖42所示。同理,EtherNet/IP也通過更改從站上的協議棧代碼,以及Codesys上的設置與編程即可建立連接,具體可參考資料Using Codesys Control for PLC Controller Stacks, Enabled by AM64x & RT Linux
(a)Codesys上Switch未打開狀態 |
(b)Codesys上Switch打開狀態 |
圖 42 Codesys遠程控制LP-AM243的LED燈
總結:
由于工業現場實際應用的通訊需求,支持多協議的Sitara產品凸顯其競爭力?;诖?,本文檔詳細介紹以Codesys為上位機軟件進行的組網,可實現Profinet RT,EtherNet/IP和EtherCAT。以LP-AM243+AM64x-EVM為硬件,詳細介紹不同協議下利用Codesys組網的要點及注意事項,以及遠程I/O控制的實現,便于客戶快速進行Codesys項目的開發。
審核編輯:郭婷
-
mcu
+關注
關注
146文章
17123瀏覽量
350982 -
以太網
+關注
關注
40文章
5419瀏覽量
171598 -
plc
+關注
關注
5010文章
13271瀏覽量
463055 -
Linux
+關注
關注
87文章
11292瀏覽量
209326
發布評論請先 登錄
相關推薦
評論