摘要:
AM243x 是TI高性能的Sitara??MCU產(chǎn)品,片上集成了用于工業(yè)以太網(wǎng)通信的2個PRU_ICSSG(Programmable Real-time Unit_Industrial Communication SubSystem Gb) 工業(yè)通訊子模塊,可實現(xiàn)Profinet RT/Profinet IRT,EtherNet/IP,EtherCAT和IO-Link等通信協(xié)議。本文檔詳細(xì)介紹AM64x/AM243x多協(xié)議Demo,其中AM64x A53核上跑Linux系統(tǒng)并運行Codesys runtime system,可以用來當(dāng)作Codesys主站(可以理解為軟PLC),LP-AM243評估板用來當(dāng)作從站,且主從之間可進(jìn)行多種工業(yè)以太網(wǎng)的通信協(xié)議切換。由于無須更換硬件,只將不同協(xié)議棧固件(Firmware)進(jìn)行替換就可自由切換不同的通信協(xié)議,可幫助客戶實現(xiàn)靈活的工業(yè)網(wǎng)絡(luò)配置,并極大改善供應(yīng)鏈管理環(huán)境,降低BOM數(shù)量和系統(tǒng)成本。此外,由于AM64x與AM243x的ALX-17x17mm2封裝是管腳兼容的,因此項目開發(fā)在硬件和軟件算法上擴(kuò)展性也更強(qiáng)。
Abstract:
AM243x is TI's high-performance Sitara MCU product with two PRU_ICSSG(Programmable Real-time Unit_Industrial Communication SubSystem Gb) modules capable for industrial Ethernet communication, such as Profinet RT/Profinet IRT, EtherNet/IP, EtherCAT and IO-Link. This document introduces the AM64x/AM243x multi-protocol demo in details, in which the Linux system and Codesys runtime system run on the A53 core of AM64x and work as the Codesys master (can be described as soft PLC), while slave protocols run on LP-AM243 board. Since different protocols can be flexibly switched only by replacing the firmware of different protocol stacks without hardware change, it greatly increases the flexibility of the industrial Ethernet communication ‘s implementation, simplifies the supply chain management, and reduces the system complexity and BOM costs. In addition, AM64x and AM243x ALX-17x17 are pin compatible, which makes the project development more scalable in both hardware design and software algorithms implementation.
應(yīng)用背景介紹:
由于擁有千兆以太網(wǎng),多達(dá)4個800Mhz的Cortex-R5F核和豐富外設(shè)資源使得AM243x更加適用于高端應(yīng)用,例如工廠自動化、機(jī)器臂、預(yù)測性維護(hù)和可持續(xù)能源管理等。其中,圖1 為工廠自動化中機(jī)械臂的實時以太網(wǎng)與控制應(yīng)用案例。在工廠自動化中多自由度機(jī)械臂系統(tǒng),通過利用AM6442構(gòu)建的控制器作為一個控制層的PLC,利用多個AM243x集成工業(yè)以太網(wǎng)通信和電機(jī)控制作為現(xiàn)場層的終端設(shè)備,從而實現(xiàn)真正意義上工廠智能化。基于此,本文檔將重點介紹AM64x如何實現(xiàn)軟PLC的功能,Codesys軟件如何實現(xiàn)AM243x的遠(yuǎn)程I/O控制,以及多協(xié)議的切換與應(yīng)用等。應(yīng)用場景上的介紹如:Connect and control the factory floor
圖1 工廠自動化機(jī)械臂的實時以太網(wǎng)與控制應(yīng)用案例
環(huán)境搭建:
整個Demo環(huán)境分為硬件搭建與Codesys軟件安裝。其中,AM64x處理器硬件既可以用來當(dāng)主站,也可以用來當(dāng)從站;然而,AM243x處理器硬件用做從站控制器(IO-Link協(xié)議除外)。如圖2,對于在 AM64x SITARA 處理器硬件上的 CODESYS 運行時,需要適用于 Linux ARM64 SL 的 CODESYS Control。
圖2 Codesys與主/從站連接的示意圖
2.1硬件環(huán)境搭建
硬件環(huán)境搭建包括了圖3中AM64x-EVM上電,Boot模式選擇,移植Linux操作系統(tǒng),以及安裝CODESYS Runtime。同時,也有針對LP-AM243上電,協(xié)議棧代碼燒錄,RJ45連接等。
圖3 AM64X-EVM的板子及連接示意圖
AM64x-EVM上電:為了避免高浪涌電流,并防止可能損壞 AM64x-EVM組件,應(yīng)使用power switch(SW1)進(jìn)行 AM64x-EVM 開機(jī)和關(guān)機(jī)。如打開AM64x-EVM,首先將AM64x-EVM power switch關(guān)閉,其次將12v DC/電源適配器的圓口插入AM64x-EVM(J6)并市電下供應(yīng)給電源適配器,此時LD6 and LD12亮起,最后將power switch(SW1)打開,LD1, LD2, LD3, LD4, LD6, LD7, LD8, LD9, LD10, LD15, LD24, LD25亮,如圖4所示。
圖4 AM64X-EVM正常上電示意圖
設(shè)置SD card boot,如圖5所示。要確保AM64x-EVM斷電后再去設(shè)置boot模式。由于AM64-EVM需要運行Linux操作系統(tǒng)軟件包,SD卡必須不小于16GB。
圖5 SD BOOT MODE(BOOTMODE [ 0 : 7 ] (SW2) = 1100 0011;
BOOTMODE [ 8 : 15 ] (SW3) = 0110 1100)
其中所有boot引導(dǎo)模式引腳都有一個弱下拉電阻和一個能夠連接到一個強(qiáng)上拉電阻的開關(guān)。 開關(guān)設(shè)置為“ON”對應(yīng)邏輯“HIGH”,而“OFF”對應(yīng)邏輯“LOW”。
移植Linux操作系統(tǒng),需要將 WIC 映像寫入 SD 卡,并設(shè)置SD card boot啟動。
首先在https://www.ti.com/tool/PROCESSOR-SDK-AM64X#downloads
單擊“下載”,然后選擇 PROCESSOR-SDK-LINUX-AM64X 或 PROCESSOR-SDK-LINUX-RT-AM64X,接著下載tisdk-default-image-am64xx-evm.wic.xz,如圖6所示。
圖6 AM64x默認(rèn)的Linux系統(tǒng)WIC映像文件下載
其次,可以使用balenaEtcher,腳本script和bmap-tools等方式將WIC 映像寫入 SD 卡,同時也支持客戶自定義WIC 映像文件,詳情見Create SD Card。
本文檔SD卡的創(chuàng)建是利用balenaEtcher工具將WIC 映像寫入 SD 卡,如下:
圖7 balenaEtcher工具的界面
1.下載并安裝balenaEtcher工具,如圖7所示。需要使用帶SD/TF卡讀卡器的USB分線器,將下載好的tisdk-default-image-am64xx-evm.wic.xz文件,利用balenaEtcher通過USB燒錄至SD卡內(nèi)。
2.將micro SD卡插入USB-SD讀卡器并啟動Etcher。選擇要刷入的WIC鏡像,選擇USB SD讀卡器為目標(biāo),然后,點擊“Flash”。 Etcher會解壓鏡像并寫入SD卡,如圖8所示。
圖8 將 WIC 映像刷入 SD 卡
3.安裝串口助手Tera Term,并建立與 EVM 的串行調(diào)試。Tera Term軟件安裝界面,如圖9所示。當(dāng)使用 TeraTerm 等串行終端仿真器連接到電腦端口COMx。 配置串口設(shè)置為115200波特率,8位,無奇偶校驗,1個停止位,無流量控制,如下圖:
圖9 Tera Term串口安裝界面
配置串口的設(shè)置界面選擇,如圖10所示。需要注意的是選擇與EVM板所對應(yīng)的串口,可以嘗試設(shè)置EVM在UART Boot模式下識別串口號,或者在電腦屬性→設(shè)備管理→Ports。其中,詳細(xì)的解釋可參考:建立與 EVM 的串行連接。
圖10 配置串口設(shè)置的界面示意圖
2.2 Codesys軟件安裝
安裝CODESYS Runtime。在電腦PC上安裝Codesys Development system,軟件下載鏈接:https://us.store.codesys.com/codesys.html,同時需要安裝CODESYS Control for Linux ARM64 SL, 軟件下載鏈接:https://us.store.codesys.com/codesys-control-for-linux-arm-sl-bundle.html。先安裝Codesys Development system需要注意的是,關(guān)閉電腦防火墻同時運行時run as administrator,如圖11所示。
圖11 Codesys Development system安裝界面
其后安裝CODESYS Control for Linux ARM64 SL可以直接管理員運行,或者從Codesys Development system的Package Manager進(jìn)行安裝,最終CODESYS Control for Linux ARM64 SL會在安裝包里面進(jìn)行顯示,如圖12所示。
當(dāng)然如果控制器采用的是KUNBUS RevPi hardware,則可以從Codesys官網(wǎng)搜索下載并安裝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”,選擇對應(yīng)的文件進(jìn)行安裝。
圖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
將這兩個文件復(fù)制并安裝在Linux/codesys下,以上僅操作一次即可??梢酝ㄟ^Ubuntu,也可以通過TeraTerm進(jìn)行操作。
復(fù)制命令:
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 引導(dǎo)到 Linux:
1)確保 EVM 已關(guān)閉電源。 將 Micro-SD 卡插入 EVM(卡的觸點一側(cè)應(yīng)朝下)。
2)確保為 SD 卡啟動正確設(shè)置了 EVM 啟動模式開關(guān),如圖5所示SD card boot。
3)將以太網(wǎng)電纜的一端連接到 EVM,另一端連接到路由器。
4)按照Power Switch(SW1)提供的開機(jī)順序打開 EVM 的電源。
此時EVM 應(yīng)該啟動時,并且啟動進(jìn)度應(yīng)該會顯示在串行控制臺輸出中。 在啟動結(jié)束時,將出現(xiàn) Arago 登錄提示。 只需輸入“root”即可登錄,如圖13所示。
圖13 AM64x GP EVM 上的 Linux的調(diào)試界面顯示
2.3將協(xié)議棧燒錄至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) 文檔。
為便于網(wǎng)絡(luò)調(diào)試,將協(xié)議棧代碼燒錄至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路徑修改為下圖文件所對應(yīng)的位置,最后將XIP image屏蔽,即屏蔽最后一行。因為我們選擇的是通過UART進(jìn)行Flash燒寫,無須將XIP文件進(jìn)行操作,如圖15所示。
圖15 default_sbl_ospi.cfg文件內(nèi)容
啟動window命令符操作燒錄成功的顯示界面,如圖16所示。CCS設(shè)置串口并上電啟動,可以看到PN/RT啟動運行成功的顯示界面,如圖17所示。
圖16 Window命令符下程序燒錄的顯示界面
圖17 CCS串口顯示PN/RT啟動成功的界面
詳細(xì)燒錄工具如:LP-AM243 Flashing Tools
多協(xié)議Demo項目搭建
3.1項目介紹與硬件建立
目前Sitara產(chǎn)品AM243x可支持四種協(xié)議,詳細(xì)參數(shù)及關(guān)鍵特性如下表所示。
或可從Industrial Communications Toolkit詳細(xì)查看SDK_Example的細(xì)節(jié)內(nèi)容,如圖18所示。
圖18 MCU+SDK的工業(yè)通信工具包
多協(xié)議Demo中LP-AM243是以EtherCAT Slave Simple Demo和Profinet Device Demos兩個例子分別與AM64x-EVM進(jìn)行連接,具體的連接示意圖,如圖19所示。需要注意的是上位機(jī)PC通過路由器與AM64x-EVM的標(biāo)準(zhǔn)以太網(wǎng)CPSW相連,另外是PRU-ICSSG的雙端口網(wǎng)口(最上面的是eth1和eth2),進(jìn)而與LP-AM243的網(wǎng)口相連,最終搭建好整個的硬件環(huán)境。
圖19 多協(xié)議的Demo連接示意圖
3.2 Codesys啟動與設(shè)置靜態(tài)IP地址
在AM64x-EVM上eth1設(shè)置靜態(tài)IP地址,是為了保證AM64x-EVM與LP-AM243在同一個網(wǎng)段內(nèi)。如果Codesys掃描不到從站LP-AM243設(shè)備,則有可能是沒有設(shè)置好靜態(tài)IP地址。如果是Codesys掃描不到主站AM64x-EVM設(shè)備,則有可能是電腦主機(jī)IP地址與CPSW的IP地址不對應(yīng),則需要對電腦主機(jī)IP進(jìn)行修改。
首先Codesys啟動在EVM上啟動,如圖13所示。注意先設(shè)置Tera Term串口,再進(jìn)行EVM上電即可。接著設(shè)置設(shè)置靜態(tài)IP地址,如圖20所示。靜態(tài)IP地址設(shè)置成功如圖21所示。
sudo ip addr add 192.168.1.20/24 dev eth1 (eth1 is top port on GP EVM)
圖20 Tera Term上設(shè)置靜態(tài)IP地址
圖21靜態(tài)IP地址設(shè)置為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已經(jīng)可以在AM64x-EVM成功運行的。
啟動CODESYS開發(fā)系統(tǒng),新建標(biāo)準(zhǔn)項目,如圖23所示。同時,選擇 CODESYS Control for Linux ARM64 SL (3S - Smart Software Solutions GmbH) 作為設(shè)備和選擇結(jié)構(gòu)化文本作為編程語言,如圖24所示。PN_Example2項目可以看到所創(chuàng)建項目結(jié)構(gòu)并填充設(shè)備樹的結(jié)構(gòu),如圖25所示。同時在配置 PROFINET 網(wǎng)絡(luò)之前,必須將匹配的設(shè)備描述文件安裝到 CODESYS 設(shè)備存儲庫中,如圖26所示。
不同Example所對應(yīng)的設(shè)備描述文件所在路徑如下:
${SDK_INSTALL_PATH}\source\industrial_comms\ethercat_slave\stack\esi
圖23 新建Codesys的標(biāo)準(zhǔn)項目
圖24 選擇控制器類型及編程語言
圖25 PN_Example2項目界面
圖26 設(shè)備描述文件安裝至Codesys的Device Repository
掃描PROFINET Network并添加主站。雙擊左側(cè)Device,可以看到掃描網(wǎng)關(guān)設(shè)備并選擇連接的 AM64x SITARA 處理器,如圖27所示。如果連接成功,則網(wǎng)關(guān)和Device的小圓點標(biāo)志均會顯示綠色。由于電腦主機(jī)與AM64x-EVM是走的標(biāo)準(zhǔn)的Ethernet,因此首先需要先添加Ethernet Adapter,如圖28所示。其次,在左側(cè)設(shè)備樹中右擊Ethernet添加Device,選擇Profinet IO底下的Master,如圖29所示。
圖27 掃描PN網(wǎng)絡(luò)和添加主站設(shè)備
圖28 為CODESYS Control for Linux ARM64 SL添加設(shè)備
圖29 添加PN-Controller的Device
如圖30所示,點擊Ethernet,并選擇General,選取所設(shè)置IP地址的eth1。若eth1顯示與eth2相同則說明靜態(tài)IP地址設(shè)置不成功,則返回至3.2小節(jié)重新啟動Codesys和設(shè)置靜態(tài)IP地址。
圖30 PN-Controller設(shè)置eth1:192.168.1.20
掃描從站和進(jìn)入run模式。首先點擊工具欄Login in并運行,其次在左側(cè)設(shè)備樹上右擊PN_Controller進(jìn)行設(shè)備掃描,并且進(jìn)行設(shè)置站名和 IP 地址,進(jìn)而可以將設(shè)備復(fù)制到PN_Example2項目中,如圖31和32所示。圖32需要注意的是IP地址為前面所設(shè)置的靜態(tài)IP,必須保證在同一網(wǎng)段,但需要修改最后一位(否則會與eth1的IP地址產(chǎn)生沖突),如本文設(shè)定為IP Address:192.168.1.22;Subnet Mask:255. 255. 255.0。
掃描復(fù)制添加過后,需要Login out然后再次Login in并運行,此時Codesys才會讓設(shè)備進(jìn)入在線run模式,如圖33所示。
圖31 PN_controller掃描從站設(shè)備
圖32 掃描后進(jìn)行站名和 IP 地址的設(shè)置
圖33 PN/RT設(shè)備進(jìn)入在線run模式
Codesys的可視化編程。如果從站為LP-AM243則RJ45網(wǎng)口旁邊的4個LED燈可以被映射,進(jìn)行遠(yuǎn)程控制。如果從站為TMDS243GPEVM則有8個LED燈可以被映射,進(jìn)行遠(yuǎn)程控制。
在PLC_PRG進(jìn)行變量定義與程序編寫,如下:
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個開關(guān)控制4個LED燈。在左側(cè)設(shè)備樹Application添加Add object,選中Visualization,進(jìn)入到可視化控件選擇,并將變量i2c_leds和xSwitch1鏈接到Lamp和Switch,如圖34所示。此外,還需要將所定義的i2c_leds變量鏈接到PN_Device的輸出字節(jié)上,如圖33中am2434-10上的I/O map上,如圖35所示。
圖34 可視化控件與Codesys定義變量鏈接
圖35 可視化控件與Codesys定義變量鏈接
最終保存PN_Example2項目,Login in和Run可看到直接操作可視化控制Switch可控制LP-AM243上網(wǎng)口旁邊的四個LED燈,如圖36所示。
(a)Codesys上Switch未打開狀態(tài) |
(b)Codesys上Switch打開狀態(tài) |
圖 36 Codesys遠(yuǎn)程控制LP-AM243的LED燈
2)Simple EtherCAT+LED燈控制
AM64x-EVM無須更改,僅通過Flash程序操作將Simple EtherCAT的程序燒錄至LP-AM243的板子上,并重復(fù)之前的操作如啟動Codesys Controller,設(shè)置靜態(tài)IP地址,新建Codesys項目和編程。當(dāng)CCS設(shè)置串口并給LP-AM243開發(fā)板上電即可看到串口打印信息,如圖37所示。
圖37 LP-AM243的Simple EtherCAT已經(jīng)啟動
Codesys建立的EtherCAT1工程項目后,所添加的Device為EtherCAT-Master,如圖38所示。同時掃描從站設(shè)備,如圖39所示。若掃描不出來從站設(shè)備,則需要Login out,然后再次Login in進(jìn)行設(shè)備掃描。若此方法仍無法掃描從站設(shè)備,則需要檢查LP-AM243協(xié)議棧是否正常跑,以及Codesys Controller是否如圖22所示。
圖38 添加EtherCAT-Master的Device
圖39 掃描從站設(shè)備顯示界面
當(dāng)EtherCAT1工程項目Login in 和run時,導(dǎo)航到“Expert Process Data”選項卡,選擇并設(shè)置后將顯示該選項卡,然后選擇“Load PDO Info from Device”,如圖40所示。
Codesys的可視化編程。EtherCAT 過程數(shù)據(jù) LED 可以通過將過程輸出圖像中的前 4 位映射到結(jié)構(gòu)化文本程序中的布爾變量來尋址,映射完成后,可以分配/操作程序中的變量。 例如,我們可以在EtherCAT1工程項目中可視化界面中分配它們。
圖40 Load PDO Info from Device操作前
圖40 Load PDO Info from Device操作后
圖41 可視化控件與Codesys定義變量鏈接
如PN/RT Example+LED燈控制一樣,需要定義變量,鏈接變量到輸出的控制字節(jié)上,進(jìn)而實現(xiàn)遠(yuǎn)程LED燈控制,如圖42所示。同理,EtherNet/IP也通過更改從站上的協(xié)議棧代碼,以及Codesys上的設(shè)置與編程即可建立連接,具體可參考資料Using Codesys Control for PLC Controller Stacks, Enabled by AM64x & RT Linux
(a)Codesys上Switch未打開狀態(tài) |
(b)Codesys上Switch打開狀態(tài) |
圖 42 Codesys遠(yuǎn)程控制LP-AM243的LED燈
總結(jié):
由于工業(yè)現(xiàn)場實際應(yīng)用的通訊需求,支持多協(xié)議的Sitara產(chǎn)品凸顯其競爭力?;诖耍疚臋n詳細(xì)介紹以Codesys為上位機(jī)軟件進(jìn)行的組網(wǎng),可實現(xiàn)Profinet RT,EtherNet/IP和EtherCAT。以LP-AM243+AM64x-EVM為硬件,詳細(xì)介紹不同協(xié)議下利用Codesys組網(wǎng)的要點及注意事項,以及遠(yuǎn)程I/O控制的實現(xiàn),便于客戶快速進(jìn)行Codesys項目的開發(fā)。
問題總結(jié):
Simple EtherCAT案例上主站掃描LP-AM243的從站顯示在設(shè)備存儲庫未找到?
解決方法:將所對應(yīng)Example的設(shè)備描述文件安裝到Codesys中的Device Repository.
2.EtherCAT_Master掃描LP-AM243的從站沒有任何反應(yīng)?
解決辦法:檢查LP-AM243的從站是否正常運行,PHY是否被Disable;檢查Codesys Controller是否正常運行;或者通過WireShark抓包分析UDP/IP是否握手。
3.Codesys添加可視化后未顯示任何控件?
解決辦法:1.檢查可視化的安裝包是否缺少;2. Codesys授權(quán)問題。當(dāng)首次添加組件時候是可以看到可視化的控件的。
4.安裝CODESYS Control for Linux ARM64 SL時,顯示無法安裝?
解決方法:需要安裝CODESYS Edge Gateway for Linux 4.1.0.0,下載鏈接: https://store.codesys.com/en/codesys-edge-gateway-for-linux.html
審核編輯:湯梓紅
-
mcu
+關(guān)注
關(guān)注
146文章
16922瀏覽量
349995 -
ti
+關(guān)注
關(guān)注
112文章
7957瀏覽量
212054
發(fā)布評論請先 登錄
相關(guān)推薦
評論