使用 Sitara 的专用子系统实现工业自动化通信和处理
投稿人:DigiKey 北美编辑
2019-11-21
为工业自动化系统提供可靠的通信对开发人员提出了独特的挑战。这些系统依赖于多种通信协议,以便在工业环境中使用的各种子系统之间维持可靠实时连接。在工业环境中,常规通用处理器在执行应用软件时,可能无法始终如一地满足实时通信要求。
开发人员需要一个能够轻松适应工业应用多样化需求的开发平台。
本文介绍开发人员如何使用 Texas Instruments 提供的现成开发工具包来加速工业通信解决方案的开发。该套件的核心是 Texas Instruments 的 Sitara 处理器,其集工业应用所需的计算资源和专用通信能力于一体。
工业通信需求
作为先进制造战略的关键推动力,工业通信系统在将各组传感器、电机、执行器与可编程逻辑控制器 (PLC)、人机界面 (HMI) 连接起来时,面临着日益严苛的实时响应和可靠性要求。
除了子系统的多样化集合之外,工业应用可能还涉及性能需求、专用设备和旧有系统的组合,因而需要支持多种联网技术和协议。其结果是,单个环境可能需要支持多种现场总线协议,例如控制局域网 (CAN)、Modbus、Profibus 以及 Profinet、EtherCAT、Sercos III 等工业以太网协议。
与现场总线标准一样,每种工业以太网标准都是为了解决一组特定需求而出现的。每种标准都提供了常规以太网所不具备但工业通信却需要的某种实时性能。不同工业以太网标准实现这种能力的方法可能迥然不同。
例如,Profinet 允许主控制器与网络中的所有设备通信。从设备可以反过来与控制器交换帧,但与其他设备只能进行非周期性通信。对于通信,此协议为常规非实时数据交换提供了标准的传输控制协议/互联网协议 (TCP/IP) 信道。对于实时数据交换,Profinet 实时通道支持控制器和从设备之间的周期性或非周期性交换(图 1 左)。
图 1:Profinet(左)和 EtherCAT(右)的不同工业以太网堆栈可能会提供类似的服务,例如常规以太网,但在较高级协议以及底层媒体访问控制 (MAC) 和数据链接层 (DLL) 服务方面,其支持实时通信的方法明显不同。(图片来源:Texas Instruments)
在 EtherCAT 中,当主机与从机通信时,帧中包含针对每个从机的命令和数据,并从一个节点传输到另一个节点。随着帧的传递,每个从机节点读取指定的命令和数据,并将自己的数据添加到帧上,然后帧继续传递。与 Profinet 一样,EtherCAT 既有常规 TCP/IP 信道来支持以太网兼容通信,又有实时信道来支持对时间敏感的通信(图 1 右)。
尽管不同工业以太网标准依赖于明显不同的机制,但它们都有能力来提供常规以太网所缺少但工业通信所必需的实时性能。然而,当实施这些标准时,开发人员可能会陷入进退两难的境地,因为典型设计选择的性能存在局限性,无法满足其应用的实时性能要求。
实时应用依赖于低延迟响应,在提供命令、输入或其他驱动激励信号之后,响应必须在固定时间内作出。在工业系统所用的基于周期的进程中,低延迟系统可确保进程尽可能在每个周期开始后尽快执行。这些系统中的抖动或其他因素会导致周期发生不可预测的变化,从而侵蚀系统以可靠、一致的方式处理高周期速率进程的能力。
过去,开发人员常常发现自己不得不自行设计硬件解决方案,以应对与工业连接相关的实时挑战。令大多数方法复杂化的原因是,为通用计算而设计的软件和硬件着重于优化应用执行的整体性能,而不是解决实时性能需求。
在软件层面,工业应用开发人员需要低延迟、确定性的响应能力,这通常由实时 Linux 提供,更严格地说是由实时操作系统 (RTOS) 提供。最终,延迟和确定性性能取决于底层硬件平台中使用的处理器。
诸如 Arm® Cortex®-A 内核之类的通用处理器,非常适合执行负责应用的较高级别任务(包括工业自动化相关任务)的软件。典型通用处理器利用多级高速缓存架构和多级指令流水线来加快处理速度(图 2)。
图 2:Arm Cortex-A 等通用处理器的架构使用多层互连和资源来优化应用执行中遇到的各种工作负载的执行。(图片来源:Texas Instruments)
对于工业通信开发人员来说,那样的架构特性会使事情复杂化,难以实现一般工业自动化和实时以太网系统所需的实时性能。每一层的高速缓存、内存和互连都会延长满足基于周期的进程所需的时间(延迟)。因为处理器通过这些层必须达到的程度可能随每个周期而变化,所以响应时间可能会有巨大差异。
过去,面对这一问题的开发人员采用专用硬件、现场可编程门阵列 (FPGA) 或专用集成电路 (ASIC) 来实现系统中时间和性能至关重要的部分。例如,为了支持实时以太网,这种方法意味着要在 FPGA 或 ASIC 中实现 MAC 和其他实时功能。
尽管定制硬件在性能方面可提供非常有效的解决方案,但最终设计的成本和复杂性会大大提高,故该方法仅适用于性能需求超越所有其他考虑因素的应用。对于工业通信,Texas Instruments 通过充分利用其 Sitara 处理器系列的多处理器架构,提供了一种更实用、更具成本效益的解决方案。
工业通信子系统
Sitara 处理器系列集高性能 Arm Cortex-A 应用处理器与一个或多个可编程实时单元和工业通信子系统 (PRU-ICSS) 实例于一体。当 Cortex-A 处理器执行主应用程序时,PRU-ICSS 提供工业以太网协议和其他控制功能所需的实时处理和 IO 能力(图 3)。
图 3:Texas Instruments 的 Sitara 处理器系列产品集通用 Arm Cortex-A 处理器与专门优化的专用可编程实时单元于一体,提供实时应用所需的低延迟、确定性性能。(图片来源:Texas Instruments)
每个 Sitara 可编程实时单元 (PRU) 子系统包含两个 200 兆赫 (MHz) 实时内核(如图 3 所示的 PRU0 和 PRU1),每条指令的运行周期时间为 5 纳秒 (ns)。内核设计有一个小指令集,其处理无需指令流水线,以确保确定性的单周期指令执行。为减少外设操作的延迟,内核通过专用 32 位互连访问共享资源,该互连将其直接与多个外设连接,包括实时以太网所需的管理数据输入/输出 (MDIO) 和介质无关接口 (MII)。此外,每个 PRU 内核通过自己的多达 30 个输入和 32 个输出直接连接到器件的外部引脚(图 4)。
图 4:Texas Instruments 的 Sitara 处理器中集成的 PRU 可直接访问输入和输出引脚以及其他硬件资源,从而减少工业应用中的延迟。(图片来源:Texas Instruments)
利用这种紧密耦合的外设架构,实时内核可以独立运行,避免了典型通用处理系统中须经历多个互连和层所带来的延迟。快速单周期执行和直接访问外设相结合,使子系统能够确定性地执行基于周期的进程,并对外部事件做出快速且可预测的响应。因此,与配套的通用处理器相比,PRU 子系统可以更有效地执行 IO 操作并到达外部引脚(图 5)。
图 5:凭借单周期指令执行和直接访问器件引脚,TI Sitara 处理器内置的可编程实时单元 (PRU) 子系统读写器件引脚信号所需经历的层数要少得多(右),外设操作的速度比配套 Arm Cortex-A 处理器所能达到的速度更快(左)。(图片来源:Texas Instruments)
PRU 内核的高速 IO 和 5 ns 周期时间相结合,提供工业通信所需的低延迟、确定性性能。在更高层次上,此架构提供的灵活机制可优化 Arm Cortex-A 和 PRU 子系统的协调使用,进而最大限度地提高工业应用的性能。
通过酌情使用专用和共享资源,各个内核可单独以最高性能运行,或共同执行复杂的实时任务。适合单个内核的任务可以在该内核上独立运行,而要求更高的实时任务可以在紧密耦合的不同内核之间分担处理负载。PRU 内核直接访问 Cortex-A 内核资源的能力,有助于确保在任何一种工作模式下高性能地执行实时操作和外设交互。
为了在紧密耦合的执行中优化资源分配和管理,Sitara 系统架构在硬件和软件中均提供了协调机制。在硬件级别,包括基于硬件的邮箱和资源锁定寄存器在内的处理器间通信特性有助于确保 Cortex-A 处理器和 PRU-ICSS 的同步。
在软件级别,对 Linux 多处理服务的支持为协调紧密耦合操作中的任务执行提供了标准操作环境。在运行时,Arm Cortex-A 内核上运行的操作系统内核使用标准 RemoteProc(远程进程)控制和 rpmsg(远程进程消息)服务,以及自己的驱动程序和 PRU 固件中的匹配驱动程序,来协调 PRU 系统操作。RemoteProc 服务处理 PRU 固件加载和后续处理,而 rpmsg 框架使用 virtio 虚拟化接口支持应用程序到 PRU 的消息交换(图 6)。
图 6:Texas Instruments 的 Sitara 处理器支持一组标准服务,用于 Arm Cortex-A 主处理器和 PRU 子系统的应用交互与协调。(图片来源:Texas Instruments)
从串行外设接口 (SPI) 等串行通信接口到复杂的工业以太网协议,这种架构能够简化工业连接方案的开发并提升性能的优势变得尤为明显。通过在 Cortex-A 处理器上运行协议软件堆栈,并结合 PRU 固件处理实时服务,TI Sitara 处理器可以高效执行 Profinet 等实时以太网协议(图 7)。
图 7:通过协调 Arm Cortex-A 主处理器中的软件执行和 PRU 子系统中的固件执行,Texas Instruments 的 Sitara 处理器可以同时满足 Profinet 等工业以太网协议的通用处理和实时需求。(图片来源:Texas Instruments)
这种方法提供了一种简单的解决方案,可在单个应用中支持多种协议。开发人员只需在 Sitara 处理器中同时运行每种协议所需的堆栈和固件(图 8)。
图 8:PRU 的固件执行效率和 Arm Cortex-A 处理器的软件执行性能,使得 Texas Instruments 的 Sitara 处理器能够为多种工业通信接口和协议提供并发支持。(图片来源:Texas Instruments)
TI 为几种不同的串行通信协议、现场总线协议和实时以太网协议(包括 EtherCAT、Profinet 和 Sercos III)提供了完整的协议栈。通过同一 Sitara 系统上的协议栈组合,开发人员可以支持典型 PLC 或工业交换机需要支持的多样化连接要求,例如主机侧的工业以太网(如 Profinet)和外设侧的现场总线(如 Profibus 或 IO-Link)。
标准工业以太网软件包以黑盒二进制文件的形式提供,但 TI 为开发人员提供了许多工业通信服务的示例。对于应用开发,系列专用的 TI 处理器软件开发套件(处理器 SDK,例如用于 AM437x Sitara 处理器的处理器 SDK)为相应处理器系列提供了应用程序编程接口 (API)。对于系列专用功能,这些 API 为 GPIO 或 IO-Link 事务之类的低级操作提供了直观的抽象(清单 1)。
复制 /* GPIO LED toggling*/ ...Board_init(boardCfg); GPIO_init(); While(1) { GPIO_write(Board_LED1, GPIO_PIN_VAL_HIGH); Delay(); GPIO_write(Board_LED1, GPIO_PIN_VAL_LOW); Delay(); } /* IO-LINK status */ ...Board_init(boardCfg); ...IOLINK_socGetFwCfg(peripheralNum, &iolink_cfg); ...IOLINK_socSetFwCfg(peripheralNum, &iolink_cfg); ...IOLINK_init(); ...iolinkHandle = IOLINK_open(peripheralNum, &iolinkParams); ...status = IOLINK_control(iolinkHandle, iolinkCmd, &iolinkCmdArg); ...
清单 1:如这些代码片段所示,对于每个 Sitara 系列,Texas Instruments 的处理器 SDK API 可让开发人员专注于功能抽象,而不必花时间处理低级位操作或寄存器访问。(代码来源:Texas Instruments)
加速开发
除了 TI 为在 Sitara 处理器上实现工业通信协议所提供的代码和工具之外,开发人员还可以使用 TI 和第三方协议栈提供商的附加软件包中的协议、驱动程序和 PRU 固件来加速自己的工业通信软件的开发。类似地,TI 的 TMDSIDK437X 工业开发套件 (IDK) 为工业应用提供了基于 Sitara 的全面硬件平台,可加快开发速度(图 9)。
图 9:Texas Instruments 的 TMDSIDK437X IDK 集 Sitara 处理器、存储器和全面的外设、接口、通信通道组合于一体,为开发人员提供一个评估工业通信协议和快速开发工业自动化应用的平台。(图片来源:Texas Instruments)
TI 的 TMDSIDK437X IDK 板包括 1 GB 的双倍数据速率 3 (DDR3) 随机存取存储器 (RAM)、四通道 SPI NOR 闪存和 TI 的 AM4379 Sitara 处理器。AM4379 处理器集 Arm Cortex-A9 处理器和两个 PRU 子系统于一体,每个子系统包含两个 PRU 内核。
在典型的工业自动化网络中,Sitara AM4379 可以扮演多个角色。Sitara AM4379 处理器集成了图形和显示子系统,因而除了用于 PLC、交换机和网关等多协议系统外,还可用于需要 HMI 支持的终端设备。
除了多个外设和通信端口之外,IDK 板还有以太网接口芯片,包括 Texas Instruments 用于工业以太网连接的 TLK105 10/100 Mbps PHY 收发器和 Microchip Technology 用于常规以太网连接的 KSZ9031RNXIA-TR 千兆位 (Gb) 收发器 PHY。
使用该套件实现工业通信应用非常简单,仅需 24 V 电源并将以太网电缆连接到开发系统。
TI 的 PRU-ICSS 工业软件组合为前面提到的工业通信协议提供了软件包。利用 TI 的 Code Composer Studio 集成开发环境 (IDE),开发人员可以快速加载、构建、运行随软件包一起提供的示例应用作为起点,或在生产过程中将其用于自己的应用。
利用 TI 软件和 PRU-ICSS 工业软件包,开发人员可以快速实现复杂的工业自动化系统,例如以太网连接的电机驱动控制器(图 10)。
图 10:Texas Instruments 的 TMDSIDK437X IDK 和 Texas Instruments 软件相结合,可提供一个特别有效的开发平台来快速实现工业系统,例如此处所示的以 EtherCAT 连接的电机控制器。(图片来源:Texas Instruments)
对于电机驱动控制器应用,PRU 子系统会使用 TMDSIDK437X 板的模数转换器 (ADC) 接口或 EnDat 数字双向编码器接口来收集电机位置数据。利用此数据,Arm Cortex-A 处理器执行磁场定向控制 (FOC) 算法来创建一组新的电机控制参数,并通过 Sitara 脉宽调制 (PWM) 通道进行传送。最后,TMDSIDK437X 板上包含的 TI DRV8313 电机驱动器将输出调整后的电机参数。
使用带 TI 软件的 TMDSIDK437X IDK 硬件板,开发人员可以快速实现通过各种接口和通信协议连接的工业自动化应用。对于定制应用,该套件可用作全面参考设计,以帮助加快硬件开发。结合此硬件基础,TI 处理器 SDK 和 PRU-ICSS 工业软件包形成一个开发平台,能够满足基于多种工业通信协议构建的新兴应用需求。
总结
在越来越多的需求当中,高性能执行工业通信协议对于实现先进工业自动化系统至关重要。虽然这些系统需要通用处理器来执行算法和较高级的处理,但通常也需要专用设备来提供低延迟、确定性性能,以支持现场总线和工业以太网连接所采用的实时工业通信协议。
如本文所述,Texas Instruments 的 Sitara 系列提供了满足这些多样化要求所需的通用和实时处理单元。通过结合使用基于 Texas Instruments 的 Sitara 工业开发套件与预构建的通信协议栈,开发人员可以快速部署复杂的工业自动化应用来支持众多工业通信方案。
免责声明:各个作者和/或论坛参与者在本网站发表的观点、看法和意见不代表 DigiKey 的观点、看法和意见,也不代表 DigiKey 官方政策。