Kommunikation mit Accuload Flow Computern

Die Kommunikation zu Accuload und deren Steuerung ist relativ einfach. Das Protokoll und deren Befehle werden hier anhand eines typischen Ablaufs beschrieben. Darüber hinaus gibt es auch eine gute  Protokollspezifikation, die von FMC zur Verfügung gestellt wird [http://info.smithmeter.com/literature/docs/mn06130l.pdf].

Diese Beschreibung gilt im Wesentlichen auch für die Kommunikation zu Microload Flow Computern. Microloads haben einen begrenzen Funktionsumfang (single Arm/meter, kein Blending), das wirkt sich aber nicht auf die Kommandos aus. Der Accuload IV ist mit dem Accuload III.NET bezüglich der Kommunikation kompatibel. Bei der Implementation habe ich nur eine Besonderheit entdeckt, die ist aber irrelevant. 

Der Accuload III.net von FMC hat zusätzlich zu den seriellen Anschlüssen einen Ethernet Anschluss. Accuload III Geräte senden Telegramme nur auf vorhergehende Anfrage (Polling).

In dieser Beschreibung wird auf die technische Anbindung des Accuload über TCP/IP eingegangen. Diese unterscheidet sich von der seriellen nur dadurch, dass sie ohne die Steuerzeichen <STX> und <ETX> und die Checksumme <LRC> auskommen.

Bei der TCP/IP Kommunikation (Terminal Host) kennzeichnet zusätzlich ein Asterix den Beginn jedes Telegramms und CR (carriage return) und LF (line feed) das Ende des Telegramms. Bei der TCP/IP Socket Kommunikation ist der Accuload der TCP-Server und horcht auf dem Port 7734. Zum Zugriff benötigt man also einen TCP-Client. Zum Anfang genügt hier auch der in der Software FMC Accumate enthaltene Terminal Emulator.

Terminal Emulator

Das Telegrammformat ist „A1A2<text>“, wobei A1A2 die Armadresse (in den Beispielen 01) angibt und in <Text> den Platz für Befehle und Parameter darstellt. Die Steuerzeichen (*, CR, LF) lassen wir der Einfachheit halber weg.

Um den aktuellen Status abzufragen, wird das EQ (Enquire Status) Kommando genutzt.

01EQ
010008000000000000

Die Antwort bedeutet Program Value Changed, wobei das Bitfeld der Antwort gemäß mn06130l.pdf interpretiert werden muss.

Die Füllfreigabe  oder das Preset übergibt man mit SB (Authorize and Set Batch), hier werden 1.887 Liter für die Beladung autorisiert und mit OK bestätigt:

01SB 001887
01OK

Eine EQ-Statusabfrage liefert dann 011008000000000001, enthält also die Kennzeichen Authorized, Preset in progress

Am Accuload Display kann man jetzt eine Vorwahlmenge von bis zu 1.887 Litern eingeben.

ALIII Preset

Wenn diese bestätigt wurden, ändert sich der Status auf 015809000000000000, enthält also das die Kennzeichen Released, Transaction in Progress, Authorized.

Die eingegebene Menge lässt sich mit RP (Request Preset Amount) abfragen:

01RP
01RP 1887

Eine Statusabfrage liefert 015808000000000000, enthält also das die Kennzeichen Released, Transaction in Progress, Authorized.

Am Accuload Display kann man die Beladung starten.

ALIII ready for loading

Wenn die Menge fließt, dann liefert eine Statusabfrage 015809000000000000, enthält also das die Kennzeichen Flowing, Released, Transaction in Progress, Authorized.

Wenn man während der Beladung Details wie Menge, Durchfluss und Temperatur ermitteln möchte was, dann kann man das mit RT (RT - Request Transaction Volume), LT (Load Average Temperature) und RQ (Request Flow Rate) RQ durchführen:

01RT R
01RT R 00 01 10

01LT R
01LT 01 01 -2.8

01RQ
01RQ 150

Nach dem Erreichen der gewünschten Füllmenge liefert eine Statusabfrage 01000090000000000, enthält also das die Kennzeichen Batch done, Transaction in Progress.

Wenn dann am Accuload mit der Print Taste der Urbelegsdruck ausgelöst wird, dann wechselt der Status auf 010609000000000000, enthält also die Kennzeichen Batch Done, Transaction Done. Vor der Abfrage der Messdaten werden die Status-Flags zurückgesetzt:

01RE BD
01OK

01RE TD
01OK

Jetzt liegen die Messdaten der Transaktion im mit der höchsten Sequenznummer im Transaktionsspeicher. Um die Messdaten auszulesen, muss zunächst die höchste Sequenznummer (SV – Extendend Services: 0x0405 Search Transaction Log “most recent sequence number”) abgefragt werden:

01SV <$4><$5><$0><$1>
01SV <$84><$5><$0><$0>..<$4><$82>

Mit dieser kann man anschließend die Transaktionsdaten und die Daten für die einzelnen Batches auslesen.

SV (Extendend Services: 0x0404 Read Transaction Log (for sequence number, batch=0))

01SV <$4><$4><$0><$0><$4><$82><$0><$0>

01SV <$84><$4><$0>…

Das SV Telegramm ist binär und es kann über das Terminal Programm von FMC nicht eingegeben werden. Deshalb hier kein Beispiel, sondern nur die Struktur:

Transaction #

unsigned int

Batchcount

unsigned int

8 Fields for Transaction End Date/Time

unsigned int

5 numeric prompt responses

unsigned long Int

Number of Transaction Alarms

unsigned int

20 Transaction Alarm Log

char[10]

transaction average values

meter factor

float

temperature

float

density

float

pressure

float

CTL

float

CPL

float

24 Transaction Additive Volume

double

volume totals

IV

double

GV

double

GST

double

GSV

double

Mass

double

6 product volume totals

IV

double

GV

double

GST

double

GSV

double

Mass

double

Transaction Start Time (text)

char[22]

Transaction End Time (text)

char[22]

5 alphanumeric prompt responses

char[20]

Driver Card Info

char[48]

 

SV (Extendend Services: 0x0404 Read Transaction Log (for sequence number, batch=1))

01SV <$4><$4><$0><$0><$4><$82><$0><$1>

01SV <$84><$4><$0>

Das SV Telegramm ist binär und es kann über das Terminal Programm von FMC nicht eingegeben werden. Deshalb hier kein Beispiel, sondern nur die Struktur:

Product Delivered

unsigned int

Recipe Delivered

unsigned int

HM Class Product

unsigned int

Additives Delivered (bit map)

unsigned long int

load average values for the batch

Rate

float

Meter  Factor

float

Temperature

float

density

float

Pressure

float

CTL

float

CPL

float

Meter Pulses

double

volume totals for the batch

IV

double

GV

double

GST

double

NSV

double

MASS

double

24 Batch Additive Volume

double

Number of Batch Alarms

unsigned int

10 Transaction Alarm Log

char[8]

Batch Products 1 upto 6:

Product x load average values for the batch

Rate

float

Meter  Factor

float

Temperature

float

density

float

Pressure

float

Vapor Press

float

CTL

float

CPL

float

CCF

float

Batch Product x Reference Density

float

Batch Product x Relative Density

float

Batch Product x API Density

float

Batch Product x Meter Pulses

double

Product x volume totals for the batch

IV

double

GV

double

GST

double

NSV

double

MASS

double

Batch last density sample

float

Batch contaminant percentage

float

Batch load arm (for bay-based transactions)

unsigned int

 

Nach dem Zurücksetzen der Statusflags meldet eine Abfrage mit dem EQ-Telegramm nur noch den Status 010008000000000000 Power Program Value Changed.

Sonstiges

Um remote Datum und Uhrzeit zu setzen kann das SD (Set Date and Time) Telegramm benutzt werden.

Wenn bei den EQ-Telegrammen z.B. gemeldet wird, dass der Accuload im Status "Power failure occurred" hat, dann ist dieseiner von vielen möglichen Alarmen. Mit dem EA (Enquire Alarms) Befehl kann man die aktuell anliegenden Alarme abrufen und je nach Alarm auch mit AR (Alarm Reset) quittieren.

Die Zählersummenstände lassen sich mit dem VT (Non-resettable Total) abfragen. Hier sind die Werte für G (Gross (GV), M (Mass) für die Produkte (x=01..24) und die Additivmengen Ax (x=01..24) interessant:

01VT G Px

01VT M Px

01VT Axx

Der Accuload muss für den Betrieb die hier beschriebene Steuerung im „Remote Control“-Modus laufen. Dazu sind folgende Parameter anzupassen: 710,715,720,725/3.