Microwin hat 2 Speicher:
V und M
Funktionell sind die weitgehend gleich, allerdings können "V" noch im sog. Datenbaustein initialisiert werden.
Das kann man so eigentlich nicht behaupten.
1. Haben die S7-200 mehr als 2 Speicher. Merker und Variablen sind globale Speicher. Es steht aber jeder SBR sowie dem Main auch noch je 64 Byte lokaler Speicher zur Verfügung (zumindest bei den 22x-CPUen). Und schließlich gibt es noch die 32 Byte des Ablaufsteuerrelais zur Erzeugung von Schrittketten. Ach ja - 4 Akkus gibbet's auch noch. (Nachlesbar im Handbuch vorletzte Seite - PS: oder im Post hier drüber
)
2. Sind Merker auf 32 Byte beschränkt, während bei den Variablen je nach CPU bis zu 10.239 Byte zur Verfügung stehen.
3. Sind (wie MSB geschrieben hat) nur die Variablen im Datenbaustein nullspannungsfest initialisierbar. Bei Merkern und Lokaldaten müßte dafür eine Zuweisung im Programm gemacht werden.
4. Sind Merker (außer MB0-MB13 bei Spannungsausfall) im Gegensatz zu Variablen auch im Programm nicht nullspannungsfest im EEPROM speicherbar.
Ich persönlich mach' es meist so:
Alle variablen Werte (mit einer Ausnahme), vor allem, wo das HMI drauf zugreift, sind (wie der Name ja schon sagt) Variablen.
Merker nutze ich möglichst nur für rein programminterne "Merk"funktionen, mit denen der Benutzer nicht in irgend einer Weise in Berührung kommt (z.B. Flags für die EEPROM-Speicherung)
Die Programmierung des Ablaufsteuerrelais funktioniert auch nur mit den zugehörigen Bits vernünftig. Dafür ist aber so'ne Schrittkette viel angenehmer programmierbar als in der S7-300/400.
Zähler, deren Wert sich sehr häufig ändert, die ich aber trotzdem unter keinen Umständen verlieren möchte (z.B. BS-Zähler), speichere ich
im Merkerbereich MB0-MB13. Den kann man so einstellen, daß diese Werte (nur) im Falle eines Spannungsverlustes der CPU automatisch nullspannungsfest gesichert werden.
Grund: Lt. Siemens kann man ungefähr 1.000.000 Mal auf eine Speicherzelle im EEPROM zugreifen. Bei BS-Zählern müßte ich bei hoher Genauigkeit aber jede Sekunde speichern -> das wären dann nur ungefähr 11,5 Tage.
Mit dem Merkerbereich MB0-MB13 wird dagegen nur dann gespeichert, wenn die CPU spannungsfrei wird. Das dürfte mich normalerweise überleben.
Sonstige Variablen, die ich nullspannungsfest brauche, sichere ich "per Hand" im Programm auf dem EEPROM im Falle einer Änderung dieser Variablen.
Gekapselte Funktionen in SBRs (für mehrfachen Aufruf) werden mit lokalen Variablen (und dann ohne S7-Timer, S7-Zähler und S7-Flanken) ausgeführt. (
Hier ist 'n schönes Beispiel hierfür.)
SBRs, die nur einmal verwendet werden, können beides enthalten. Nach Möglichkeit versuch' ich aber auch hier nur Lokalspeicher zu verwenden und die Übergabe an die globalen Speicher an der Schnittstelle der SBR zu machen. Das entscheide ich dann nach Aufwand/Nutzen.