Die HMI von Kinco haben verschiedene interne Speicherbereiche und es ist gar nicht so leicht, zu verstehen, wofür welcher Speicher eigentlich gut geeignet ist. Wir helfen euch mit ein paar Insights und Tipps.
Wie viel Speicher haben die HMI eigentlich
Die Kinco HMI haben drei Arten von physischem Speicher eingebaut:
1. Flash
Das ist der nicht flüchtige Speicher des HMI, in aktuellen günstigen Modellen oft etwa 128 MB NAND-Flash, in den Modellen der Future Serie auch deutlich mehr. Auf dem NAND-Flash wird alles gespeichert, was auch bei einen Neustart erhalten bleiben soll und für den Betrieb des HMI notwendig ist. Das ist vor allem das eigentliche Projekt, meist etwa 10 - 20 MByte groß und die darin enthaltenen Bilder in eurem Projekt. Zusätzlich wird im Flash vom System noch einiges abgelegt wie z.B. die Datalogging-Datenbanken oder eure Logs (wenn ihr das nicht anders konfiguriert). Ihr könnt den Flash-Speicher auch wie ein Laufwerk nutzen, über FTP und eigene Dateien auf dem HMI ablegen, z.B. PDF-Dateien, die angezeigt werden sollen. Ihr habt aber auch die Möglichkeit im Projekt über die Variablenbereiche auf den Flash-Speicher zuzugreifen, um z.B. Systemparameter zu speichern. Dazu legt Kinco im Flash eine eigene Datei an, in der eure Variablen gespeichert sind. Zu den adressierbaren Speicherbereichen später mehr.
Flashspeicher hat den Vorteil, dass die Daten dort nicht verloren gehen und auch relativ schnell geladen werden können. Großer Nachteil von Flash ist, dass er nicht beliebig oft beschrieben werden kann. Nach wenigen Millionen Schreibzyklen geht der Speicher kaputt. Das klingt viel, wenn man aber im Millisekunden-Takt auf den Speicher schreibend zugreifen würde, hat man diese Grenze schnell erreicht. Auch kann Flash oft nicht besonders schnell beschrieben werden. Daher nutzt das HMI für schnelle Schreibvorgänge andere Speicher.
Wählt ihr übrigens bei Funktionen wie dem Speicher für historische Ereignisse oder dem Datenlogger "HMI" als Speicherort, so werden diese Daten im Flash-Speicher des HMI abgelegt.
2. RAM
Der RAM-Speicher, in der Green Series z.B. 128 MByte DDR3-Speicher ist der flüchtige Arbeitsspeicher eures HMI. Hier werden alle Daten gehalten, die das HMI im Betrieb braucht und auf die es schnell lesend und schreibend zugreifen muss. Beim Start eures Projekts wird dieses vom Flash zur Ausführung in den RAM geladen, das betrifft z.B. auch die Bilder in eurem Projekt.
Ein Teil des RAMs ist auch über die lokalen Adressbereiche adressierbar. Dazu später mehr.
Der RAM-Speicher des HMI kann sehr schnell gelesen und geschrieben werden, ist allerdings flüchtig. Bei einem Neustart des HMI sind daraus alle Daten verschwunden und müssen neu eingelesen werden.
3. Batteriegepufferter SRAM
Um die Vorteile von Flash und RAM zu verbinden, haben die HMI von Kinco zusätzlich einen kleinen batteriegepufferten SRAM-Speicher. Dieser Speicher lässt sich so schnell und oft beschreiben wie RAM, aber behält auch bei einem Neustart seine Daten. Der Stromverbrauch des Speichers zum Halten der Daten ist außerdem so gering, dass eine kleine Lithium-Knopfzelle die Daten bei Stromausfall jahrelang halten kann.
Im SRAM des HMI liegt die Uhrzeit und ihr könnt zusätzlich über den Rezeptspeicher des HMI darauf zugreifen. Die Kinco HMI haben meist etwa 256 kB dieses SRAM-Speichers.
4. Externer Speicher
Wir hatten euch erzählt, dass das HMI drei physische Arten von Speicher hat. Das war richtig und ein bisschen gelogen. Die HMI haben über einen USB-Host-Anschluss die Möglichkeit zusätzlich einen externen Speicher z.B. USB-Stick oder Flash-Festplatte anzuschließen. Einige HMI haben zusätzlich einen SD-Karten-Slot.
Auf dem externen Speicher kann das HMI einerseits Logging-Daten und andere Daten ablegen, ihr könnt aber auch z.B. PDF-Dateien auf dem HMI zur Verfügung stellen oder sogar den externen Speicher über eigene Variablenbereiche ansprechen. Über welche Variablenbereiche welcher Speicher adressierbar sein soll, konfiguriert ihr im HMI.
Wie funktionieren die internen Variablenbereiche des HMI?
Die Kinco HMI haben folgende Variablenbereiche:
1. LW/LB - lokales Word / Bit im RAM
Der LW oder LB-Speicher des HMI liegt im RAM und kann von LW0 bis LW10255 und LB0 bis LB9999 adressiert werden. Anders als in vielen anderen Systemen, sind LW und LB im Kinco separat und sind NICHT der gleiche Speicher, der nur anderes adressiert wird. Den LW-Bereich kann man über LW.B nämlich auch Bit-weise adressieren.
In den Bereichen ab LW9000 und LB9000 beginnen die Systemvariablen, die bestimmte interne Systemfunktionen im HMI zur Verfügung stellen.
Da der LW und LB-Bereich im RAM liegt, ist er auch flüchtig und kann schnell und quasi beliebig oft beschrieben werden. Bei Neustart des HMI verliert er normalerweise seine Werte. Daher werden die Systemvariablen bei Änderung vom System selber auch im Flash gespeichert.
Ein Word im HMI sind ja bekanntlich 16 Bit und damit 2 Byte. 10.256 adressierbare Words sind damit 20.512 Byte und damit nur etwa 20 kByte des RAM von ganzen 128 MB, die hier adressiert werden können. Da inzwischen deutlich mehr RAM verfügbar ist als noch in den ersten HMI-Generationen, hat Kinco irgendwann mit dem ELW-Speicher einen größeren Bereich davon adressierbar gemacht. Der ELW-Speicher reicht von 0 bis 134.217.727 und kann damit theoretisch 256 MByte an Massendaten aufnehmen.
2. FRW, FRB, FRWI, FRBI - Flash Speicher
Die Adressbereiche FRW, FRB, FRWI und FRBI liegen alle im Flash des HMI und können für Daten genutzt werden, die relativ selten geschrieben aber öfter gelesen werden und bei Neustart erhalten bleiben sollen. Das könnten z.B. Konfigurationsdaten des Projekts sein.
FRW und FRWI sind dabei eigentlich der gleiche Speicherbreich. FRWI ist dabei sozusagen ein Fenster auf den FRW-Bereich, der über den Zeiger LW9000 verschoben wird. Ein Beispiel: Hat LW9000 den Wert 0, dann liegen FRW und FRWI genau übereinander und haben den gleichen Wert. Hat LW9000 allerdings den Wert 100, dann schaut die Adresse FRWI0 als "Fenster" auf den Adressbereich FRW0. Damit lassen sich sehr einfach Zeigerfunktionen realisieren.
Es gibt noch andere relative Speicherbereiche wie RWI oder ERWI, die genauso funktionieren und auch den Zeiger LW9000 nutzen. Da das eher unpraktisch ist, dass alle Adressbereiche den gleichen Zeiger nutzen, hat Kinco irgendwann die Funktion "Indexregister nutzen" eingeführt, mit der sich beliebige Adressbereiche über konfigurierbare Zeigeradressen verschieben lassen. Sehr nützlich für dynamische Adressierung.
3. RW, RWI, RB und RBI - Rezeptspeicher
Die Speicherbereiche RW, RWI, RB und RBI liegen im Rezeptspeicher des HMI und damit im batterie-gepufferten SRAM-Speicher. Damit behalten diese Bereiche nach einem Neustart ihren Wert und können trotzdem beliebig häufig und auch schnell beschrieben werden. Damit eignen sie sich sehr gut für Projektdaten, die sich im Prozess schnell ändern können, aber auch bei Neustart erhalten bleiben sollen wie z.B. Zustandsvariablen.
Übrigens liegen hier auch die Rezeptspeicheradressen, wenn ihr in den Rezeptbereichen solche Adressbereiche anlegt.
4. ERW und ERWI
Dieser Speicher ist gleich dreimal vorhanden, als ERW0, ERW1 und ERW2. ERWI funktioniert wieder als relative Adresse auf ERW über Zeiger LW9000. Wo genau ERW liegt, könnt ihr in den HMI-Einstellungen unter "Erweiterter Speicher" festlegen. Es ist ein erweiterter Speicher, den ihr entweder auf einer SD-Karte (falls das HMI das unterstützt) oder auf einem USB-Speicher ablegen könnt. Einige wenige HMI haben sogar 2 USB-Host-Anschlüsse, deshalb könnt ihr hier USB 1 oder 2 wählen.
Wählt ihr für den Speicher ERW0 z.B. USB-Speicher 1 als Speicherort, wird auf dem USB-Speicher eine Datei abgelegt, in der die ERW0-Daten gespeichert werden. Diese könnt ihr dann in eurem Projekt normal adressieren. Nehmt ihr dann den USB-Stick mit an ein anderen Gerät und wählt auch dort die gleiche Konfiguration für ERW0, könnt ihr die Daten aus dem Projekt direkt übernehmen. Das ermöglicht eine Vielzahl von Anwendungen, die euch z.B. das Kopieren von Rezeptdaten oder Parametern zwischen Projekten über USB-Sticks ermöglichen (über die Funktion Datenübertragung z.B.) oder sogar über USB-Sticks erst bestimmte Funktionen auf dem HMI freischalten.
Die ERW-Funktion ermöglicht euch auch zu prüfen, ob ein Speicher angeschlossen ist. Schreibt ihr in ERW eine Zahl z.B. über ein Makro und erhaltet diese beim Auslesen nicht zurück, wisst ihr, dass kein Speicher angeschlossen ist und könnt dazu eine Fehlermeldung generieren.
Wie ihr seht, stellen euch die verschiedenen internen Speicheradressen im HMI jede Menge Möglichkeiten zur Verfügung. In Verbindung mit den externen Adressen der angeschlossenen SPS sind eurer Kreativität hier keine Grenzen gesetzt.
Euer spstiger