AM64x/AM243x多协议Demo搭建与详解

描述

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集成工业以太网通信和电机控制作为现场层的终端设备,从而实现真正意义上工厂智能化。基于此,本文档将重点介绍AM64x如何实现软PLC的功能,Codesys软件如何实现AM243x的远程I/O控制,以及多协议的切换与应用等。

环境搭建:

整个Demo环境分为硬件搭建与Codesys软件安装。其中,AM64x处理器硬件既可以用来当主站,也可以用来当从站;然而,AM243x处理器硬件用做从站控制器(IO-Link协议除外)。如图2,对于在 AM64x SITARA 处理器硬件上的 CODESYS 运行时,需要适用于 Linux ARM64 SL 的 CODESYS Control。

Linux

图2 Codesys与主/从站连接的示意图

2.1硬件环境搭建

硬件环境搭建包括了图3中AM64x-EVM上电,Boot模式选择,移植Linux操作系统,以及安装CODESYS Runtime。同时,也有针对LP-AM243上电,协议栈代码烧录,RJ45连接等。

Linux

图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所示。

Linux

图4 AM64X-EVM正常上电示意图

设置SD card boot,如图5所示。要确保AM64x-EVM断电后再去设置boot模式。由于AM64-EVM需要运行Linux操作系统软件包,SD卡必须不小于16GB。

 

 

Linux

   

Linux

 

 

图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所示。

Linux

图6 AM64x默认的Linux系统WIC映像文件下载

其次,可以使用balenaEtcher,脚本script和bmap-tools等方式将WIC 映像写入 SD 卡,同时也支持客户自定义WIC 映像文件。

本文档SD卡的创建是利用balenaEtcher工具将WIC 映像写入 SD 卡,如下:

Linux

图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所示。

Linux

图8 将 WIC 映像刷入 SD 卡

3.安装串口助手Tera Term,并建立与 EVM 的串行调试。Tera Term软件安装界面,如图9所示。当使用 TeraTerm 等串行终端仿真器连接到电脑端口COMx。 配置串口设置为115200波特率,8位,无奇偶校验,1个停止位,无流量控制,如下图:

Linux

图9 Tera Term串口安装界面

配置串口的设置界面选择,如图10所示。需要注意的是选择与EVM板所对应的串口,可以尝试设置EVM在UART Boot模式下识别串口号,或者在电脑属性→设备管理→Ports。

Linux

图10 配置串口设置的界面示意图

2.2 Codesys软件安装

安装CODESYS Runtime。在电脑PC上安装Codesys Development system,同时需要安装CODESYS Control for Linux ARM64 SL, 先安装Codesys Development system需要注意的是,关闭电脑防火墙同时运行时run as administrator,如图11所示。

Linux

图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”,选择对应的文件进行安装。

Linux

图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所示。

Linux

图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所示。

Linux

图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所示。

Linux

图15 default_sbl_ospi.cfg文件内容

启动window命令符操作烧录成功的显示界面,如图16所示。CCS设置串口并上电启动,可以看到PN/RT启动运行成功的显示界面,如图17所示。

Linux

图16 Window命令符下程序烧录的显示界面

Linux

图17 CCS串口显示PN/RT启动成功的界面

详细烧录工具如:LP-AM243 Flashing Tools

多协议Demo项目搭建

3.1项目介绍与硬件建立

         目前Sitara产品AM243x可支持四种协议,详细参数及关键特性如下表所示。

Linux

或可从Industrial Communications Toolkit详细查看SDK_Example的细节内容,如图18所示。

Linux

图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的网口相连,最终搭建好整个的硬件环境。

Linux

图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)

Linux

图20 Tera Term上设置静态IP地址

Linux

图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断电重新启动命令。

Linux

图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

Linux

图23 新建Codesys的标准项目

Linux

图24 选择控制器类型及编程语言

Linux

图25 PN_Example2项目界面

Linux

图26 设备描述文件安装至Codesys的Device Repository

扫描PROFINET Network并添加主站。双击左侧Device,可以看到扫描网关设备并选择连接的 AM64x SITARA 处理器,如图27所示。如果连接成功,则网关和Device的小圆点标志均会显示绿色。由于电脑主机与AM64x-EVM是走的标准的Ethernet,因此首先需要先添加Ethernet Adapter,如图28所示。其次,在左侧设备树中右击Ethernet添加Device,选择Profinet IO底下的Master,如图29所示。

Linux

图27 扫描PN网络和添加主站设备

Linux

图28 为CODESYS Control for Linux ARM64 SL添加设备

 

 

Linux

   

Linux

 

 

图29 添加PN-Controller的Device

如图30所示,点击Ethernet,并选择General,选取所设置IP地址的eth1。若eth1显示与eth2相同则说明静态IP地址设置不成功,则返回至3.2小节重新启动Codesys和设置静态IP地址。

Linux

图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所示。

Linux

图31 PN_controller扫描从站设备

Linux

图32 扫描后进行站名和 IP 地址的设置

Linux

Linux

图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所示。

Linux

图34 可视化控件与Codesys定义变量链接

Linux

图35 可视化控件与Codesys定义变量链接

最终保存PN_Example2项目,Login in和Run可看到直接操作可视化控制Switch可控制LP-AM243上网口旁边的四个LED灯,如图36所示。

 

 

Linux


(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所示。

Linux

图37 LP-AM243的Simple EtherCAT已经启动

Codesys建立的EtherCAT1工程项目后,所添加的Device为EtherCAT-Master,如图38所示。同时扫描从站设备,如图39所示。若扫描不出来从站设备,则需要Login out,然后再次Login in进行设备扫描。若此方法仍无法扫描从站设备,则需要检查LP-AM243协议栈是否正常跑,以及Codesys Controller是否如图22所示。

Linux

图38 添加EtherCAT-Master的Device

Linux

图39 扫描从站设备显示界面

当EtherCAT1工程项目Login in 和run时,导航到“Expert Process Data”选项卡,选择并设置后将显示该选项卡,然后选择“Load PDO Info from Device”,如图40所示。

Codesys的可视化编程。EtherCAT 过程数据 LED 可以通过将过程输出图像中的前 4 位映射到结构化文本程序中的布尔变量来寻址,映射完成后,可以分配/操作程序中的变量。 例如,我们可以在EtherCAT1工程项目中可视化界面中分配它们。

Linux

图40 Load PDO Info from Device操作前

Linux

图40 Load PDO Info from Device操作后

Linux

图41 可视化控件与Codesys定义变量链接

如PN/RT Example+LED灯控制一样,需要定义变量,链接变量到输出的控制字节上,进而实现远程LED灯控制,如图42所示。同理,EtherNet/IP也通过更改从站上的协议栈代码,以及Codesys上的设置与编程即可建立连接,具体可参考资料Using Codesys Control for PLC Controller Stacks, Enabled by AM64x & RT Linux

 

 

Linux


(a)Codesys上Switch未打开状态
 

Linux


(b)Codesys上Switch打开状态

 

图 42 Codesys远程控制LP-AM243的LED灯

总结:

由于工业现场实际应用的通讯需求,支持多协议的Sitara产品凸显其竞争力。基于此,本文档详细介绍以Codesys为上位机软件进行的组网,可实现Profinet RT,EtherNet/IP和EtherCAT。以LP-AM243+AM64x-EVM为硬件,详细介绍不同协议下利用Codesys组网的要点及注意事项,以及远程I/O控制的实现,便于客户快速进行Codesys项目的开发。

审核编辑:郭婷

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
评论(0)
发评论
xjd69 2023-04-11
0 回复 举报
AM64X-EVM 具体是哪块板 收起回复

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分