Einfache Integration des EtherCAT Protokolls
Industrielle Feldbusse basierend auf Echtzeit-Ethernet-Übertragung gewinnen in der Automatisierung immer mehr an Bedeutung. Entwickler suchen deshalb nach einfacheren und kostengünstigeren Wegen, ihre Systeme mit industriellen Feldbussen auszustatten. Der neue Embedded Prozessor AM3357 von Texas Instruments bietet dabei eine vollständige Integration eines Oberklassen-Prozessors mit der Feldbusschnittstelle.
Die vielfältigen Möglichkeiten zur Skalierung der Rechenleistung und Betrieb ohne externes RAM machen den Baustein für einfache Anwendungen genauso nutzbar wie für komplexe Applikationen bei denen ein voller Speicherausbau und schnelle Bearbeitung von Algorithmen nötig sind. Im Folgenden werden Details des System-on-Chip und der Entwicklungsprozesse anhand des Beispiels EtherCAT dargestellt.
Die AM335x Embedded Prozessor Familie
Obwohl die AM335x Familie von Embedded Prozessoren zu der Value-Line der Sitara Prozessoren von Texas Instruments (TI) gehören, eignen sie sich mit ihrer hohen Rechenleistung für eine große Anzahl von Anwendungen. Dazu gehören im Bereich der Industriellen Automation vor allem PLC/SPS, HMI und Feldbusgeräte. Die große Anzahl der integrierten Schnittstellen muss dabei intelligent auf die Pins des vorhandenen Bausteingehäuses verteilt werden (Pin-Muxing). Es ist nicht möglich alle Schnittstellen zur gleichen Zeit zu verwenden. Typischerweise wird man sich deshalb für bestimmte Anwendungen entscheiden, das Geräteschaltbild entsprechend entwickeln und mit einer passenden Prozessorkonfiguration kombinieren. Das Blockdiagramm zeigt alle integrierten Elemente der AM335x Prozessoren. Für unser Beispiel eines Feldbusgerätes benötigen wir den Hauptprozessor, das PRUSS, sowie Speicher und einige serielle Schnittstellen. Weitere Peripherie, wie die USB Ports, den GigaBit Ethernet Switch, CAN, sowie viele der anderen Schnittstellen werden wir hier nicht im Detail diskutieren – sie sind aber selbstverständlich in der Applikation nutzbar. Da wir in unserem Beispiel kein Display verwenden, können wir im Folgenden den AM3357 besprechen, dem lediglich der 3D-Grafik-Beschleuniger fehlt.
Skalierbare Rechenleistung optimiert Stromverbrauch
Der Hauptprozessor im AM3357 wird durch einen ARM 32-bit Cortex-A8 Kern implementiert. Des Weiteren sind noch zwei Programmable Real-Time Units (PRU) vorhanden. Diese sind eigenständige RISC-Prozessoren mit lokalem Speicher. Die PRUs und das sie umschließende Subsystem (PRUSS) implementieren in unserem Beispiel die Feldbus-Kommunikationsschnittstellen. Dazu später mehr. Die Haupt-CPU verfügt über eine eigene Taktdomäne, die mit bis zu 720MHz arbeitet. Kostengünstigere Varianten mit niedrigeren maximalen Taktraten sind aber ebenfalls verfügbar, da für einfache Slave Anwendungen oft keine solch hohe Rechenleistung notwendig ist. Kleinere Taktraten sorgen dabei auch immer für eine niedrigere Verlustleistung des Bausteins und damit für eine weitere Reduzierung der Systemkosten. Der Cortex-A8 CPU stehen 128kB internes RAM zur Verfügung. Darüber hinaus gehender RAM Bedarf wird im Normalfall durch DDR Speicher am dafür vorgesehenen Interface bereitgestellt. Der Baustein unterstützt DDR2, DDR3 und mDDR. Permanentspeicher kann in der Form von SPI-, NAND- oder NOR-Flash angebunden werden. Der im Baustein integrierte Boot-Loader im internen ROM unterstützt das Starten des Prozessors aus den jeweiligen Speichervarianten. Über eine entsprechende Pin-Konfiguration während des Bausteinresets wird dies entsprechend gesteuert.
Programmable Real-Time Unit Basis für Echtzeit Kommunikation
Echtzeit Protokolle erfordern eine Verarbeitung der Kommunikationsdaten auf den Schnittstellen im Mikro- oder sogar Nanosekundenbereich. Im Prinzip könnte man dafür eine leistungsfähige CPU wie den Cortex-A8 einsetzen – dann würde aber eine konstant hohe CPU Last eine sinnvolle Applikationsanwendung verhindern. Bisher wurde dieses Problem meist durch Aufspaltung der Kommunikationsschnittstelle in Hardware und einen Softwarestack gelöst. Die Hardware wurde mit dedizierten ASICs oder FPGAs implementiert (aufgrund der Inkompatibilität der Echtzeit Protokolle untereinander ist keine gemeinsame Hardwareimplementierung sinnvoll) und der Stack auf dem Applikationsprozessor ausgeführt. Der Stack benötigt meist nur wenige Prozent der CPU Leistung. Diese Aufteilung führt aber zu höheren Systemkosten aufgrund einer höheren Bauteilanzahl und Nachteilen in der Leistung, da die Schnittstellen zwischen Prozessor und Kommunikationseinheit berücksichtigt werden müssen. Um die Integration bei gleichzeitiger Beibehaltung einer universellen Schnittstelle durchführen zu können, wurde bei TI das PRUSS entwickelt. Dieses besteht aus 2 PRUs, die jeweils mit 200MHz getaktet werden. Sie verfügen über MII und serielle Schnittstellen mit direkter Anbindung, um Ethernet und seriell basierte Feldbus-Protokolle implementieren zu können. Die unterste Ebene der Protokollschicht wird dabei in Software (typischerweise Assembler) programmiert, um verschiedene Protokolle mit einem Baustein aufbauen zu können. Die PRU ist ein einfacher RISC-Prozessor, der durch direkte Speicheranbindung, sowie der fehlenden Cache und Interruptfunktionen immer deterministisch arbeitet (ein Befehl entspricht einem Takt, also im Normalfall 5ns). Die beiden MIIs des PRUSS sind zusätzlich so verbunden, dass ein direktes Weiterleiten von Datenpaketen möglich ist. Damit sind die wesentlichen Bedingungen für viele Echtzeit Ethernet Protokolle (z.B. EtherCAT, Profinet, Sercos III, PowerLink) erfüllt und sie können auf einem AM3357 System auch in der Slave-Konfiguration implementiert werden. Hierbei wurde auf eine Aufspaltung der Funktionalität entsprechend des Schichtenmodells geachtet, sodass Kompatibilität zur existierenden Hardware besteht und dies dann zur Verwendung von bestehenden Softwarestacks führt. Der Aufwand zur Implementierung des Gesamtsystems (der Stack und die Applikation werden weiterhin auf dem Applikationsprozessor ausgeführt) wird dadurch minimiert.
Lösungen für die Softwareentwicklung
Im Prinzip kann auf der offenen PRU Architektur ein beliebiges Protokoll implementiert werden. Entwicklerwerkzeuge, wie ein Assembler und die Dokumentation der Prozessorbefehle sind schon länger auf den TI Prozessor Wikis verfügbar. Der Aufwand für eine Norm-konforme Implementierung mit anschließenden Test- und Verifikationszyklen sollte jedoch nicht unterschätzt werden. Aus diesem Grund liefert TI eine Auswahl von industriellen Feldbussen bereits im Industrial Automation Software Development Kit (IA-SDK) mit. Dies enthält die unterste Protokollschicht als PRUSS Software (sogenannte Firmware), einen Stack für die Host CPU und einfache Beispiele zur Anwendung des Protokolls in einer Applikation als C Programm. Mit Hilfe der Beispiele wird auch ein je nach Standard notwendiger Test der Implementierung durchgeführt. Dies erlaubt dem Entwickler ebenfalls eine schnelle Zertifizierung seines Gerätes.
Feldbusse mit AM3357 am Beispiel eines EtherCAT Slave
Wie sich die einzelnen Komponenten aus Hardware, Software und Testverfahren in einem Entwicklungsprozess zusammenfügen, soll im Folgenden am Beispiel eines EtherCAT Slaves dargestellt werden. Selbstverständlich kann die AM335x Familie auch einen EtherCAT Master implementieren. Da die Anforderungen für den Master aber prinzipiell mit jedem Prozessor mit Ethernet-Schnittstelle erfüllt werden können, gehen wir hier nicht näher darauf ein. Zur Darstellung des Beispiels nutzen wir das Blockdiagramm des AM3359 Industrial Development Kit (IDK). Dieses implementiert einen Slave mit mehreren digitalen Ein- und Ausgängen, sowie eine Motoransteuerung für Stepper- oder BLDC-Motoren. Im Zentrum des Blockdiagramms findet sich der AM3359 Prozessor. Die EtherCAT-Schnittstellen werden durch 2 MII Interfaces implementiert, die mit TLK110 Ethernet-Treibern verbunden sind. Die digitalen Ein/Ausgänge werden auf dem IDK über I2C und SPI Schnittstellen mit jeweiligen Treiber-Bausteinen (24V Kompatibilität) realisiert. Die PWM Ausgänge des Prozessors steuern einen DRV8412 Treiber für die direkte Motoransteuerung an. Als Hauptspeicher wird in diesem Fall der DDR2 Speicher auf dem EVM verwendet. Das Programm wird entweder von einer SD-Karte oder aus dem NAND FLASH gebootet. Eine passende Stromversorgungslogik mit einem integrierten Powermanagementbaustein, der alle notwendigen Versorgungsspannungen liefert, ist ebenfalls auf dem IDK implementiert und kann als Beispiel in kundenspezifischen Designs genutzt werden. Die Software des EtherCAT Slaves basiert auf den Komponenten des IA-SDK. Als Betriebssystem wird dabei das TI Sys/Bios 6 verwendet. Mit seinem effizienten Real-time Kernel und modularem Aufbau bietet dieses alle notwendigen Komponenten zur Entwicklung von Anwendungen mit fest definierten Schnittstellen, niedrigem Speicherbedarf und hohen Echtzeit-Anforderungen. Zusätzlich wird die TI Starterware für AM335x genutzt, um dem Programmierer die Arbeit mit den umfangreichen Registern der Prozessor- und Peripherieblöcke zu vereinfachen. Die Starterware enthält auch Peripherieprogrammbeispiele in C, die einfach in Softwaretreiber umgewandelt werden können. Ein Beispiel für solch einen Treiber ist der PRUSS Treiber. Er wird verwendet um die PRU Prozessoren mit Programmcode zu laden, Host Interrupts einzubinden und dann zu starten. Ein Protokollstack verwendet den PRUSS Treiber, um z.B. den EtherCAT PRU Code (Firmware) zu laden. Die EtherCAT Firmware stellt dann eine Registerschnittstelle im RAM Bereich des PRUSS zur Verfügung, die im Wesentlichen identisch zu dem ET1100 EtherCAT-ASIC der Firma Beckhoff ist. Damit kann der kostenlose EtherCAT Slave Sample Stack (SSC) von Beckhoff direkt auf der Cortex-A8 CPU genutzt werden und diese API ansprechen. Der SSC kann mit eigenem Applikationscode erweitert werden, um einen kompletten EtherCAT Slave entsprechend dem Standard zu implementieren. Das SSC Beispiel im TI IA-SDK verknüpft die Ein- und Ausgänge sowie die Motoransteuerung mit EtherCAT-Datenobjekten, sodass diese mit einem Master kontrollierbar sind. Optional kann der SSC bereits höherwertige Protokolle, wie CoE, SoE und FoE bereitstellen.
Verifikation und Test des Protokolls
Üblicherweise werden EtherCAT-Geräte im Labor mit Hilfe des EtherCAT Conformance Tests Tools (CTT) getestet. Das CTT ist ein Windows PC Programm, das von der EtherCAT Technology Group (ETG) lizensiert werden kann. Die Geräte Kompatibilität in einem EtherCAT-Netzwerk kann ebenfalls im Labor mit CTT und EtherCAT Mastern oder in sogenannten Plug-Fests gemeinsam mit anderen Firmen getestet werden. TI hat sich ebenfalls für diese Vorgehensweise mit dem IA-SDK entschieden, obwohl keine eigenen EtherCAT Geräte entwickelt werden. Es soll aber sichergestellt sein, dass EtherCAT-Geräte basierend auf AM3357 und dem IA-SDK über volle Standardkonformität und eine hohe Interoperabilität verfügen. Da der Entwickler die volle Kontrolle über den EtherCAT Stack Source hat und entsprechend Änderungen durchführen kann, muss er jede Implementierung testen und verifizieren. Für eine offizielle Verifizierung stehen hier auch die Zertifizierungslabore der ETG zur Verfügung. Das IA-SDK wird in Verbindung mit dem EVM und der Beispiel-Applikation ebenfalls den Zertifizierungsprozess nach ETG Normen durchlaufen, soweit dies für eine Entwicklungsplattform möglich ist.













