Other Parts Discussed in Post: AM6442, LP-AM243, AM2434

作者:Shaoxing Ke

  1. 摘要:

AM243x 是TI高性能的SitaraTm  MCU产品,片上集成了用于工业以太网通信的2个PRU_ICSSG(Programmable Real-time Unit_Industrial Communication SubSystem Gb) 工业通讯子模块,可实现Profinet RT/Profinet IRT,EtherNet/IP,EtherCAT和IO-Link等通信协议。本文档详细介绍AM64x/AM243x多协议Demo,其中AM64x A53核上跑Linux系统并运行Codesys runtime system,可以用来当作Codesys主站(可以理解为软PLC),LP-AM243评估板用来当作从站,且主从之间可进行多种工业以太网的通信协议切换。由于无须更换硬件,只将不同协议栈固件(Firmware)进行替换就可自由切换不同的通信协议,可帮助客户实现灵活的工业网络配置,并极大改善供应链管理环境,降低BOM数量和系统成本。此外,由于AM64x与AM243x的ALX-17x17mm2封装是管脚兼容的,因此项目开发在硬件和软件算法上扩展性也更强。

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.

应用背景介绍:

       由于拥有千兆以太网,多达4个800Mhz的Cortex-R5F核和丰富外设资源使得 AM243x更加适用于高端应用,例如工厂自动化、机器臂、预测性维护和可持续能源管理等。其中,图1 为工厂自动化中机械臂的实时以太网与控制应用案例。在工厂自动化中多自由度机械臂系统,通过利用AM6442构建的控制器作为一个控制层的PLC,利用多个AM243x集成工业以太网通信和电机控制作为现场层的终端设备,从而实现真正意义上工厂智能化。基于此,本文档将重点介绍AM64x如何实现软PLC的功能,Codesys软件如何实现AM243x的远程I/O控制,以及多协议的切换与应用等。应用场景上的介绍如:Connect and control the factory floor

图1  工厂自动化机械臂的实时以太网与控制应用案例

  1. 环境搭建:

       整个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启动。

     首先在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默认的Linux系统WIC映像文件下载

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

     本文档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。其中,详细的解释可参考:建立与 EVM 的串行连接

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

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需要注意的是,关闭电脑防火墙同时运行时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

  1. 多协议Demo项目搭建

3.1项目介绍与硬件建立

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

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

图18 MCU+SDK的工业通信工具包

     多协议Demo中LP-AM243是以EtherCAT Slave Simple DemoProfinet 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编程与显示

1PN/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}\source\industrial_comms\ethercat_slave\stack\esi

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

2Simple 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项目的开发。

问题总结:

  1. Simple EtherCAT案例上主站扫描LP-AM243的从站显示在设备存储库未找到?

解决方法:将所对应Example的设备描述文件安装到Codesys中的Device Repository.

2.EtherCAT_Master扫描LP-AM243的从站没有任何反应?

解决办法:检查LP-AM243的从站是否正常运行,PHY是否被Disable;检查Codesys Controller是否正常运行;或者通过WireShark抓包分析UDP/IP是否握手。

3.Codesys添加可视化后未显示任何控件?

解决办法:1.检查可视化的安装包是否缺少;2. Codesys授权问题。当首次添加组件时候是可以看到可视化的控件的。

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

 

参考资料:

  1. AM2434产品首页https://www.ti.com.cn/product/cn/AM2434
  2. AM6442产品首页 https://www.ti.com.cn/product/cn/AM6442
  3. LP-AM243 评估板AM243x LaunchPadTm Development Kit User's Guide
  4. AM64x/AM243x 通用评估板用户手册AM64x/AM243x GP EVM User's Guide
  5. AM243x 入门培训Sitara MCU+ Academy for AM243x (1.00.00.04)
  6. AM64x 入门培训Sitara MCU+ Academy for AM64x
  7. Getting Started with EtherCAT
  8. Getting Started with EtherNet/IP
  9. Getting Started with PROFINET RT
  10. Using Codesys Control for PLC Controller Stacks, Enabled by AM64x & RT Linux
Anonymous