Share this

Implementierungsmethode für ein CAN-Bus-PROFIBUS-DP-Bus-Gateway

2026-02-21 10:59:08 · · #1
1 Einleitung Mitte der 1980er-Jahre entstanden Feldbusse mit unterschiedlichen technischen Eigenschaften, um den Anwendungsanforderungen verschiedener Automatisierungsbereiche gerecht zu werden. Jeder Feldbus hat sein eigenes Anwendungsgebiet und strebt danach, dieses zu erweitern, um seine technologische Vormachtstellung auszubauen. Da jedoch jeder Feldbus von einem oder mehreren großen multinationalen Unternehmen unterstützt wird, sind die Interessen dieser Unternehmen eng mit der Entwicklung des jeweiligen Busses verknüpft. Die Folge dieses Wettbewerbs ist die Koexistenz mehrerer Feldbusse. Laut unvollständigen Statistiken existieren weltweit über 200 verschiedene Feldbusse, von denen mehr als ein Dutzend den Markt dominieren [1]. Die Vielfalt der Feldbusse bietet Anwendern zwar eine größere Produktauswahl, führt aber auch zu Kompatibilitätsproblemen zwischen den Geräten. Bei der Erweiterung und Modernisierung von Produktionsstätten werden mitunter Produkte mit anderen Feldbusstandards als die ursprünglich verwendeten Feldgeräte eingesetzt. Da diese Geräte unterschiedliche Feldbusse nutzen, können sie keine Daten austauschen, wodurch die Vorteile komplementärer Funktionen zwischen den Geräten eingeschränkt werden. Angesichts der Tatsache, dass mehrere Busse koexistieren, ist es von großer praktischer Bedeutung, die Verbindung verschiedener Feldbussysteme zu untersuchen. Diese Arbeit befasst sich hauptsächlich mit dem Prinzip der Protokollkonvertierung zwischen PROFIBUS-DP[2]- und CAN[3]-Bussen und entwirft ein Gateway zur Realisierung dieser Verbindung. 2. Schemaentwurf: Bei zwei heterogenen Feldbussen unterscheiden sich deren Sicherungsschicht- und Anwendungsschichtprotokolle grundlegend. Zur Realisierung ihrer Verbindung ist ein Gateway erforderlich, das die Protokollkonvertierung durchführt. Die Protokollkonvertierung erfolgt schichtweise im Gateway. Das Gateway entpackt die von Feldbusgerät 1 gesendeten Daten auf den verschiedenen Protokollschichten und extrahiert schließlich die Benutzerdaten aus der Nachricht. Diese werden dann gemäß Feldbusprotokoll 2 schichtweise verpackt und an das Gerät in Feldbus 2 gesendet. Ein Gateway ist ein Netzwerkverbindungsgerät, das die Sicherungsschicht und höhere Schichten realisiert. Es entspricht einem Protokollkonverter. Es kann bidirektional oder unidirektional sein und dient zur Verbindung von Netzwerken mit unterschiedlichen Protokollen. Im Gegensatz zu einer Brücke erfordert es keine vollständige Konsistenz der Protokolle der Sicherungsschicht und der Anwendungsschicht. Die üblicherweise anzutreffenden Feldbus-Gateways sind Single-CPU-Architekturen. In dieser Architektur muss die CPU die Übertragung und Steuerung der beiden Businformationen sowie die Konvertierung der beiden Busprotokolle durchführen. Die CPU-Last ist hoch und die Steuerung komplex. Die Software verwendet mehrere verschachtelte Architekturen. Dieser Artikel schlägt eine Gateway-Designmethode basierend auf einer Dual-CPU-Architektur vor. Die beiden CPUs im System verarbeiten und steuern die Daten der beiden Busprotokolle jeweils separat und speichern die zu übertragenden Informationen im Dual-Port-RAM, um die gemeinsame Nutzung und Übertragung von Informationen zu ermöglichen. Dieses Schema ist einfach zu steuern, die Software ist unkompliziert und die CPU-Last wird reduziert, wodurch die Zuverlässigkeit erhöht wird. 3 Hardware-Design des Systems Die Hardware des Systems lässt sich funktionsbezogen in drei Teile unterteilen: erstens die CAN-Bus-Schnittstellenschaltung, die die Datenübertragung, den Datenempfang und die Steuerung des CAN-Busses übernimmt; zweitens die PROFIBUS-DP-Bus-Schnittstellenschaltung, die die Datenübertragung, den Datenempfang und die Steuerung des PROFIBUS-Busses übernimmt; Drittens dient die Dual-Port-RAM-Schnittstellenschaltung dem Datenaustausch zwischen den beiden Bussen. 3.1 Hardwarestruktur der CAN-Bus-Schnittstelle Die Gesamtstruktur der CAN-Bus-Schnittstelle ist in Abbildung 1 dargestellt. Die Schaltung besteht im Wesentlichen aus vier Komponenten: dem Mikrocontroller 89C52 (1), dem unabhängigen CAN-Kommunikationscontroller SJA1000, dem CAN-Bus-Transceiver 82C250 und dem Hochgeschwindigkeits-Optokoppler 6N137. Der 89C52 (1) initialisiert den SJA1000 und steuert dessen Kommunikationsaufgaben wie Datenempfang und -übertragung. Er ist außerdem für den Datenaustausch mit der PROFIBUS-Busschnittstelle zuständig. Der 89C52 (1) wurde als CPU gewählt, da er nicht nur mit dem CAN-Steuerchip SJA1000 kompatibel ist, sondern auch über einen integrierten 8-KB-Flash-RAM verfügt, der die Speicheranforderungen des Systems erfüllt und keinen externen Programmspeicher benötigt. Der SJA1000 ist ein CAN-Bus-Controller. Es handelt sich um einen unabhängigen CAN-Controller und einen Ersatz für den PHILIPS CA82C200 CAN-Controller. Er ist software- und pinkompatibel zum PCA82C200. Er verfügt über zwei Betriebsmodi: BasicCAN und PeliCAN. BasicCAN ist der mit dem PCA82C200 kompatible Modus; PeliCAN ist der erweiterte Funktionsmodus, der das CAN 2.0B-Protokoll mit vielen neuen Funktionen unterstützt. Zu den wichtigsten neuen Funktionen des SJA1000 gehören: Empfang und Übertragung von Standard- und erweiterten Nachrichtenstrukturen; ein 64-Byte-Empfangs-FIFO; Einzel-/Doppel-Empfangsfilter mit Empfangsmaske und Empfangscoderegister für Standard- und erweiterte Frame-Formate; ein les- und beschreibbarer Fehlerzähler; programmierbare Fehleralarmgrenzen; das Register für den zuletzt verwendeten Fehlercode; ein Fehlerinterrupt, der für jeden CAN-Bus-Fehler generiert werden kann; ein Interrupt bei Arbitrierungsverlust mit Funktion zur Lokalisierung des verlorenen Arbitrierungssignals; keine erneute Übertragung im Einzelübertragungsmodus bei einem Fehler oder Arbitrierungsverlust; kein Fehlerflag beim Abhören des CAN-Busses im Nur-Lese-Modus. Unterstützung für Hot-Plugging ohne Störungen; softwaregesteuerte Bitratenerkennung; und hardwareseitig deaktivierter CLKOUT-Ausgang. AD0-AD7 des SJA1000 sind mit Port P0 des 89C52(1) verbunden, CS mit P2.7 des 89C52(1). Externe Speicheradressen der CPU, bei denen P2.7 auf 0 gesetzt ist, können den SJA1000 auswählen, und die CPU kann über diese Adressen entsprechende Lese- und Schreibvorgänge auf dem SJA1000 durchführen. RD, WR und ALE des SJA1000 sind mit den entsprechenden Pins des 89C52 verbunden. Um die Störfestigkeit der CAN-Bus-Knoten zu verbessern, sind die TX0- und RX0-Pins des SJA1000 nicht direkt mit den TXD- und RXD-Pins des 82C250 verbunden. Stattdessen erfolgt die Verbindung über einen Hochgeschwindigkeits-Optokoppler 6N137. Dies gewährleistet eine effektive elektrische Trennung der verschiedenen CAN-Knoten am Bus, wobei die beiden im Optokoppler verwendeten Versorgungsspannungen VCC und VDD vollständig isoliert sind. Darüber hinaus verfügt die Schnittstelle zwischen dem 82C250 und dem CAN-Bus über Sicherheits- und Entstörungsmaßnahmen. Die CANH- und CANL-Pins des 82C250 sind jeweils über einen 5-Ω-Widerstand mit dem CAN-Bus verbunden. Dieser begrenzt den Strom und schützt den 82C250 vor Überstromspitzen. Zwei 30-pF-Kondensatoren sind parallel zwischen CANH und CANL sowie Masse geschaltet. Sie filtern hochfrequente Störungen auf dem Bus und bieten einen gewissen Schutz vor elektromagnetischer Strahlung. Zusätzlich ist eine Schutzdiode in Sperrrichtung zwischen den beiden CAN-Bus-Eingängen und Masse geschaltet. Bei hoher negativer Spannung am CAN-Bus bietet der Kurzschluss der Diode einen gewissen Überspannungsschutz. Ein Flankenwiderstand ist an den Rs-Pin des 82C250 angeschlossen. 3.2 PROFIBUS-DP-Busschnittstellenschaltung Die Hardware-Schaltung der PROFIBUS-DP-Busschnittstelle besteht aus vier Komponenten: dem Mikrocontroller 89C52 (2), dem PROFIBUS-DP-Kommunikationscontroller-Protokollchip SPC3, den Optokopplern HCPL7101 und 6N137 sowie der RS485-Bustreiberschaltung. Abbildung 2 zeigt das Schaltbild der Verbindung zwischen PROFIBUS-DP-Kommunikationscontroller und RS485-Bustreiber. Der 89C52 (2) steuert den SPC3 und realisiert so die Konvertierung und Verteilung der PROFIBUS-DP-Busdaten. Der SPC3 integriert die Datenübertragungs- und Empfangsfunktionen der PROFIBUS-DP-Bitübertragungsschicht und kann das PROFIBUS-DP-Protokoll eigenständig verarbeiten. Zusätzlich verfügt der SPC3 über einen 1,5-kB-Dual-Port-RAM als Schnittstelle zwischen SPC3 und dem Benutzerprogramm. Der AT89C52 (2) kann auf den internen RAM des SPC3 zugreifen. Obwohl SPC3 die Datenübertragungsfunktion der physikalischen Schicht integriert hat, verfügt es nicht über eine RS-485-Treiberschnittstelle. Daher wurde eine RS-485-Treiberschaltung hinzugefügt. Um den Einfluss der Bussignale auf die Schaltung zu vermeiden, wird zwischen SPC3 und der RS-485-Bustreiberschaltung eine optische Trennung eingesetzt. Als Trennbaustein für die TxD- und RxD-Signale dient der 12-MΩ-Hochgeschwindigkeits-Optokoppler HCPL710 von Hewlett Packard, für das RTS-Signal der 6N137. 3.3 Schnittstellenschaltung des Dual-Port-RAMs: Die gemeinsame Nutzung und Übertragung von Daten zwischen den beiden Bussen wird durch ein Dual-Port-RAM realisiert. Im System wurde der IDT7130 ausgewählt. Es handelt sich um ein schnelles 1-KB-Dual-Port-SRAM. Dieses Baustein bietet zwei unabhängige Ports mit jeweils unabhängigen Steuer-, Adress- und I/O-Pins und ermöglicht so den unabhängigen asynchronen Lese-/Schreibzugriff auf jede beliebige Speicheradresse. Das automatische Energiemanagement wird durch den CE-Mechanismus (Continuous Entry) gesteuert, der es jedem Port des Chips ermöglicht, in einen Energiesparmodus zu wechseln. Die integrierte Bus-Arbitrierungsschaltung des IDT7130 unterstützt die Bus-Arbitrierungsmodi BUSY und INT. Abhängig vom verwendeten Mikrocontroller-Modell kommt im System ein Interrupt-Arbitrierungsverfahren zum Einsatz. Dieses Verfahren funktioniert, indem jedem Port eine Speicheradresse (Mailbox oder Informationszentrum) zugewiesen wird. Das Interrupt-Flag des linken Ports wird gesetzt, wenn der rechte Port in die Speicheradresse 3FEH schreibt; der linke Port löscht den Interrupt durch Zugriff auf die Speicheradresse 3FE. Analog dazu wird das Flag des rechten Ports gesetzt, wenn der linke Port in die Speicheradresse 3FFH schreibt. Um dieses Interrupt-Flag zu löschen, muss der rechte Port auf die Speicheradresse 3FFH zugreifen. Die Inhalte der Speicheradressen 3FE und 3FF im System erhalten eine neue Bedeutung und definieren zwei Codes: 0FFH und 00H. 0FFH steht für das Senden eines Befehls, der die andere Partei zur Datenübertragung auffordert, während 00H für das Senden der angeforderten Daten steht. Die Verbindung zwischen den beiden CPUs und dem Dual-Port-RAM im System ist in Abbildung 3 dargestellt. Die verbleibenden Speichereinheiten des Dual-Port-RAM sind in vier Hauptbereiche unterteilt. Die Einheiten 0000H–00FFH (256 Einheiten) speichern Daten oder Adressen, die vom CAN-Bus übertragen werden. Benachbarte Einheiten speichern dabei Dateninformationen für eine einzelne CAN-Unterstation. Die Einheiten 0100H–01F9H (250 Einheiten) speichern Daten oder Adressen, die vom PROFIBUS-Bus übertragen werden. Auch hier speichern benachbarte Einheiten Informationen für eine einzelne PROFIBUS-Unterstation. Einheit 03FCH speichert die ID-Nummer der PROFIBUS-Station, die vom CAN-Bus-Gerät gelesen werden soll, und Einheit 03FDH speichert die ID-Nummer der CAN-Station, die vom PROFIBUS-Bus-Gerät gelesen werden soll. Wie im Diagramm dargestellt, ist der Dual-Port-RAM den Adressen 0x7C00H–0x7FFFH im für die CAN-Bus-Kommunikation zuständigen Mikroprozessor und den Adressen 0x2C00H–0x2FFFH im für die PROFIBUS-Bus-Kommunikation zuständigen Mikroprozessor zugeordnet. 4. Systemsoftware-Design Die Gateway-Software lässt sich in zwei Hauptteile unterteilen: einen für die Datenkommunikation über den CAN-Bus und einen für die Datenkommunikation über den PROFIBUS-Bus. Das Programm jeder Seite ist funktionsbasiert in drei Submodule unterteilt: Initialisierungsprogramm des Protokollchips, Datenempfangs-Subroutine und Datensende-Subroutine. Die Datenempfangs-Subroutine wird durch einen externen Interrupt ausgelöst. Das folgende Flussdiagramm verwendet das CAN-Bus-Schnittstellenprogramm des Gateways als Beispiel; das PROFIBUS-Schnittstellenprogramm ist analog und wird daher nicht weiter beschrieben. Das Ablaufdiagramm für die CAN-Bus-seitige Initialisierung und das Sendeprogramm ist in Abbildung 4 dargestellt: Da die Initialisierung des SJA1000 nur im Reset-Modus erfolgen kann, maskiert das Programm zunächst die Interrupts des SJA1000, versetzt ihn in den Reset-Modus und initialisiert ihn anschließend. Die Initialisierung umfasst im Wesentlichen die Einstellung des Betriebsmodus, des Empfangsfiltermodus, des Empfangsmaskenregisters und des Empfangscoderegisters, der Baudratenparameter sowie der Interrupt-Aktivierungsregister. Nach Abschluss der Initialisierung kehrt der SJA1000 in seinen Betriebszustand zurück und führt normale Kommunikationsaufgaben aus. In der Empfangsroutine empfängt das System Daten von der CAN-Unterstation mittels Polling. Das Gateway ermittelt anhand des Inhalts des ersten Bytes des Empfangspufferbereichs, ob es sich bei den empfangenen Daten um tatsächliche Daten oder eine an die PROFIBUS-DP-Station gesendete Datenübertragungsanforderung handelt. Ist das erste Byte des Datenbereichs 00H, bedeutet dies, dass Daten übertragen werden. Daher wird die entsprechende Speichereinheit für diese Station aus der ID-Lookup-Tabelle abgerufen und der Inhalt des zweiten und dritten Bytes des Datenbereichs in dieser Einheit gespeichert. Gleichzeitig wird die ID in 7FFCH abgelegt, um dem anderen Teilnehmer die Nummer der sendenden Station mitzuteilen. Der Inhalt dieses Bytes lautet FFH, was auf eine Datenübertragungsanforderung hinweist. Das zweite Byte des Datenbereichs speichert die Nummer der angeforderten Station und wird anschließend in 7FFCH abgelegt. Das Ablaufdiagramm der CAN-Bus-Schnittstellen-Datenübertragungsroutine ist in Abbildung 5 dargestellt. Das oben beschriebene Übertragungsprogramm wird durch ein Interruptsignal des Dual-Port-RAMs ausgelöst. Nach Empfang des Interruptsignals wird zunächst der Inhalt der Einheit 7FFEH gelesen, um das Interruptsignal zu löschen. Anschließend wird anhand des Inhalts dieser Einheit ermittelt, ob der Dual-Port-RAM Daten oder die ID-Nummer der CAN-Unterstation speichert, die die Datenübertragung anfordert. Der Wert 00H in 7FFEH signalisiert, dass die an die CAN-Unterstation zu sendenden Daten korrekt sind. Daher wird das erste Byte des Sendepuffers auf 00H gesetzt, um der CAN-Unterstation die Datenübertragung zu signalisieren. Anschließend wird der Inhalt der Zelle 7FFDH gelesen, die Datenadresse im Dual-Port-RAM aus der Tabelle entnommen und zwei Bytes dieser Adresse im zweiten und dritten Byte des Ausgabepuffer-Datenbereichs des SJA1000 gespeichert. Gleichzeitig dient 7FFDH als Sende-ID. Ist 7FFDH gleich FFH, bedeutet dies, dass die PROFIBUS-DP-Übertragung von der CAN-Unterstation stammt, deren Daten angefordert wurden. Daher wird FFH einfach im zweiten Byte des Sendepuffer-Datenbereichs des SJA1000 abgelegt, und das erste Byte wird auf FFH gesetzt, um der CAN-Station die ID-Nummer zu signalisieren. Nach Abschluss dieser Schritte werden die Daten schließlich durch Schreiben eines Befehlsworts gesendet. 5. Fazit Die Praxis hat gezeigt, dass das bidirektionale Dual-CPU-Gateway die Konvertierung des CAN-Bus- zum PROFIBUS-DP-Busprotokolls effektiv durchführen und die Probleme der geringen Datenübertragungsrate und der mangelnden Zuverlässigkeit von Single-CPU-Gateways lösen kann. Es erfüllt somit die Anforderungen der CAN-Bus-zu-PROFIBUS-DP-Busprotokollkonvertierung. Es verbindet CAN-Bus- und PROFIBUS-Busgeräte und ermöglicht so eine effiziente Kommunikation zwischen den beiden Feldbussystemen, wodurch Datenaustausch und funktionale Komplementarität erreicht werden. Darüber hinaus müssen Anwender nicht mit den Details der physikalischen Schicht und der Sicherungsschicht der beiden Busse vertraut sein, was die Forschung und Entwicklung von Busprodukten erheblich vereinfacht. Zudem bietet diese Dual-CPU-Architektur wertvolle Erkenntnisse für die Gateway-Entwicklung zwischen anderen Feldbussen und ist eine Methode, die es wert ist, weiterverfolgt zu werden. Referenzen [1] Wu Kuanming. Ausgewählte Anwendungen von Feldbussen. Peking: Beijing University of Aeronautics and Astronautics Press, 2004 [2] Zou Yiren. Entwurf und Entwicklung von Feldbus-Steuerungssystemen. Peking: National Defense Industry Press, 2003 [3] Rao Yuntao. Fieldbus CAN Principle and Application Technology. Peking: Beijing University of Aeronautics and Astronautics Press, 2003 [4] SIEMENS. SPC3 and DPS2 User Description Version 2.0, 2002 [5] PNO. Draft GSD Specification for PROFIBUS-DP GSD Revision 2, 1998 [6] PHILIPS. Semiconductor PCA82C250 CAN controller interface, 1997
Read next

Verwenden Sie eine SPS, um eine Steuermaschine für die Stammkoordinationssignale zu bauen.

Zusammenfassung: Hauptstreckensteuerungssysteme zeichnen sich durch geringe Kosten und kurze Bauzeiten aus. Der Einsatz ...

Articles 2026-02-20