# Versatile Automation Random Access Network

Versatile Automation Random Access Network (VARAN) ist eine kabelgebundene Datennetztechnik für lokale Datennetze (LAN) mit dem Haupteinsatzgebiet im Bereich der Automatisierungstechnik. Sie ermöglicht den Datenaustausch in Form von Datenrahmen zwischen allen in einem LAN angeschlossenen Geräten (Steuerungen, Ein-/Ausgabegeräte, Antriebe etc.).
VARAN umfasst die Festlegungen für Kabeltypen und Stecker, beschreibt die physikalische Signalisierung und legt Paketformate und Protokolle fest. Aus Sicht des OSI-Modells spezifiziert VARAN sowohl die Bitübertragungsschicht (OSI Layer 1) als auch die Sicherungsschicht (OSI Layer 2). VARAN ist ein Protokoll nach dem Prinzip Master-Slave. Die VARAN-BUS-NUTZERORGANISATION (VNO) ist für die Pflege des Protokolls zuständig.

## Ziele

Der Aufbau des Systems gewährleistet, dass Sensoren direkt an den Bus angeschlossen werden können und somit keine Subbusse notwendig sind. Die Realisierung kann sowohl in FPGAs, als auch in ASICs erfolgen. Um den Betrieb mit geringem Softwareoverhead zu ermöglichen, ist der Bus als Hardwarelösung realisiert worden.

## Geschichte

Die Firma Sigmatek hat im Jahr 1994 ein Echtzeit-Bussystem zur Verbindung der I/O-Module der damals eingeführten Produktreihe DIAS entwickelt (DIAS-BUS). Dieser Bus ermöglicht Zugriffe auf einzelne Analogwerte oder 16 Ein/Ausgänge in ca. 7 µs. Im Laufe der Zeit wurde dieses Bussystem in einige Servo-Verstärker integriert. Bis heute sind etwa 2 Millionen derartiger Busanschaltungen ausgeliefert. VARAN ist die Weiterentwicklung des DIAS-Busses auf Ethernet-Basis. Die Aktivitäten in Bezug auf Offenlegung und Standardisierung des Systems sind mit der Gründung am 19. Juli 2006 auf die VNO übergegangen.

## Physikalische Grundlagen

Der Bitübertragungsschicht ist kompatibel zur IEEE802.3.
* Es werden CAT5-Leitungen verwendet, die maximale Distanz zwischen 2 Busteilnehmern beträgt 100 m.
* Die physikalische Übertragung erfolgt mit 125 Mbit/s mittels 4B/5B-Kodierung, womit sich ein Datenstrom von 100 Mbit/s ergibt.
* Die Leitungseinkoppelung erfolgt über Transformatoren (galvanische Trennung).
* Es werden Ethernet-PHYs und Transformatoren verwendet.

## Funktionsprinzip
### Grundlagen

Grundlage ist ein Verfahren, den gesamten I/O-Bereich als großes RAM zu betrachten, in dem der Busmanager (z. B. Steuerungs-CPU) beliebig Daten lesen oder schreiben kann. Jeder Client belegt in diesem Speicher seinen eigenen Adressbereich. Für den Austausch von Informationen sind daher nur zwei grundsätzliche Operationen notwendig:
* „Schreibe auf Adresse x die folgenden Daten ...“
* „Lese ab Adresse y folgende Anzahl Bytes ...“.
Dies entspricht den herkömmlichen Read- und Write-Befehlen eines Prozessors, allerdings mit der Erweiterung, dass die Anzahl der zu übertragenden Daten zwischen 1 und 128 Byte beliebig wählbar ist. Es wird jeder Datentransfer immer vom Bus-Manager initiiert und sofort vom Client beantwortet.
Im Netzwerk werden alle Geräte mit einer 16-Bit-Adresse mit jeweils 16 Bit linearem Adressraum angesprochen. Dies ergibt eine theoretische Netzwerkgröße von 65.536 Teilnehmern, wobei die Geräteadressen von 0xFF00 bis 0xFFFF für Konfigurationszwecke reserviert sind. Somit sind maximal 65.280 Teilnehmer möglich.
Mit jedem neuen Protokollpaket sendet der Manager einen inkrementierenden Nachrichtenzähler mit. Antwortet der Client nicht innerhalb der vereinbarten Timeout-Zeit oder ist die Antwort fehlerhaft, wiederholt der Manager dieses Paket sofort, ohne jedoch den Nachrichtenzähler zu erhöhen. Der Client erkennt damit, ob es sich um eine Wiederholung handelt. Die Anzahl der Wiederholungen ist einstellbar.
In der Hochlaufphase vergibt der VARAN-Manager die Adressen an die Busteilnehmer.
Der Ethernet-Querverkehr wird durch den Busmanager getunnelt. Die Übertragung der Ethernet-Pakete im Buszyklus findet während der Zeitintervalle mit geringerer Priorität statt.
Der grundsätzliche Protokollaufbau besteht aus
* SOF (1 Byte) – Start of Frame
* LNG (2 Byte) – Länge des Protokollinhaltes
* CMD (1 Byte) – Protokollkennung (z. B. read, write) und Nachrichtenzähler
* befehlsabhängiger Inhalt (variabel)
* CRC (2 Byte) – 16-Bit CRC
* EOF (1 Byte) – End of Frame

### Befehle

Global Write: Mit einem Global Write werden alle Busteilnehmer angesprochen. Dieses Kommando dient unter anderem der Adressvergabe, dem globalen Reset der Busteilnehmer und der Aussendung des Sync-Befehls. Dieser dient der Synchronisierung aller Clients und wird am Anfang jedes Buszyklus gesendet.
Memory Read: Dieser Befehl liest Daten aus dem Speicher eines Busteilnehmers. Der Befehl enthält die Startadresse und die Anzahl der zu lesenden Bytes. Der Client sendet daraufhin die angeforderten Daten.
Memory Write: Dieser Befehl schreibt Daten in den Speicher eines Busteilnehmers. Der Befehl enthält die Startadresse, die Anzahl der zu schreibenden Bytes und die zu speichernden Daten. Der Client sendet nach Empfang der Daten eine Quittierung.
Memory Read/Write: Dieser Befehl erlaubt das Lesen und Schreiben innerhalb eines einzigen Befehls. Das hat den Vorteil, dass der Protokolloverhead nur einmal gesendet werden muss, was die Zykluszeit weiter reduziert.
Control Read: Dieser Befehl erlaubt einen Lesezugriff auf den Kontrollbereich eines Busteilnehmers. Informationen im Kontrollbereich sind z. B. Kalibrierdaten oder das Typenschild eines Busteilnehmers.
Control Write: Schreibender Zugriff auf den Kontrollbereich eines Busteilnehmers
Control Read/Write: Vereinigung der beiden Befehle Control Read und Control Write in ein Protokollpaket mit dem Ziel, den Overhead zu verringern.
Foreign Package Request/Response: Mit diesem Kommando können fremde Pakete durch das VARAN-Bussystem transportiert werden. Insbesondere TCP/IP oder Pakete anderer Protokolle lassen sich mit diesem Befehl an die entsprechende Zielstation senden oder von dieser abholen.

### Hot Plug and Play

Während des Betriebes einer Maschine ist es möglich, Busteilnehmer vom Netzwerk zu trennen oder hinzuzufügen, ohne die laufende Echtzeit-Kommunikation zu beeinflussen. In der Applikationssoftware ist definierbar, ob ein Teilnehmer als zwingend erforderlich gelten soll.

## Der Busmanager

Die Koordination des gesamten Datenverkehrs übernimmt der Bus-Manager. Das Interface zur CPU ist als RAM ausgeführt, in dem Datenobjekte zur Kommunikation mit den Clients angelegt werden. Jedes Datenobjekt besteht aus einem Descriptorfeld und einem Datenfeld. Das Descriptorfeld enthält unter anderem die anzusprechende Adresse, die Anzahl der zu übertragenden Bytes, die Kennung für Read und Write und die zulässige Retry-Anzahl. Hier wird außerdem festgelegt, was im Fehlerfall geschehen soll. Das anschließende Datenfeld enthält die zu sendenden bzw. die empfangenen Daten. Der Bus-Manager verfügt über mehrere, nach Prioritäten gestufte Bereiche zur Aufnahme solcher Objekte.
Oberste Priorität haben Realtime (RT)-Objekte. Der Bus-Manager sendet am Beginn jedes Buszyklus einen SYNC-Befehl und arbeitet anschließend die Liste der RT-Objekte ab. Diese Abarbeitung kann durch IRQ-Objekte unterbrochen werden. Nach Abarbeitung der RT-Objekte werden die Objekte in der Liste für zyklische, jedoch nicht zeitkritische Datenübertragungen bearbeitet.

## Anschlusstechnik
### Standardstecker

Für Anwendungen außerhalb bzw. innerhalb des IP geschützten industriellen Umfeldes (IP65) kann ein Standard-Netzwerkstecker (RJ-45) oder FM45 (Feldsteckverbinder) verwendet werden.

### Industriestecker

Für Anwendungen im industriellen Umfeld (Schutzart IP67) mit integrierter Spannungsversorgung (24 V) gibt es zertifizierte Steckverbindungen.

## Bustopologie

* Es können sowohl Stern- als auch Baum- und Linienstrukturen realisiert werden

## Performance

Das Schreiben der Sollwert und Lesen der Istwerte für einen Drive dauert über VARAN zirka 5 Mikrosekunden bei je 16 Byte Sollwert- und Istwert-Daten. Für den Einsatz von Aktoren und Sensoren ergibt sich eine Aktualisierungszeit von rund 2 Mikrosekunden. Diese Zeiten erhöhen sich – wie bei allen Echtzeit-Ethernet-Systemen – um zirka 1 Mikrosekunde pro durchlaufenem Verteilerknoten. Eine Baumstruktur ist daher bei der Auslegung einer Linienstruktur vorzuziehen.
Die Verbindung der Busteilnehmer erfolgt über Standard-CAT-5-Leitungen. Gekreuzt oder nicht gekreuzt ist dabei egal, da der PHY-Baustein in jedem Busteilnehmer ein Auto-Crossover bereitstellt. Bei einer Übertragungsrate von 100 Mbit/s lassen sich beim VARAN-Bus (ohne Verwendung von Verstärkern) Leitungslängen bis 100 m für Echtzeitanwendungen realisieren.
| Datenmenge | Zykluszeit | Kommentar |
| 1 Byte | 2,45 µs | z. B. 8 digitale Ein- oder Ausgänge |
| 2 Byte | 2,59 µs | z. B. 16 digitale Eingänge, 1 analoger Messwert oder 1 analoger Sollwert |
| 16 Byte | 4,55 µs | z. B. 8 analoge Messwerte oder Soll- und Istwerte für 1 Drive |
| 128 Byte | 20,23 µs | z. B. 64 analoge Messwerte mit einer Auflösung von 16 Bit |