Smarty160484
Level-2
- Beiträge
- 191
- Reaktionspunkte
- 8
Firmware hochrüsten?Wie kann ich das in SCL sonst lösen?
Unabhängig von SCL oder nicht ->... um ein Array of Bool in ein Array of Word zu kopieren.
Wie kann ich das in SCL sonst lösen?
Der FB ist Baustein optimiert und die Arrays sind interne statische Variablen (sollen dort auch bleiben - Bibliotheksfähiger FB)!
Dafür kann man einfach einen eigenen FC schreiben oder schauen, ob die LGF (Library General Funktions) eine solche Funktion bereit hält.ArrayWord[0].%X0 := BitArray[0];
ArrayWord[0].%X1 := BitArray[1];
...;
Was ist denn wirklich im Schaltschrank für eine CPU verbaut? Schreib hier mal die wirkliche MLFB, nicht die aus TIA...Geht nur bis v1.8 laut Hardwarekonfig.
das kann ich erst Montag wenn ich auf Arbeit bin machen.Was ist denn wirklich im Schaltschrank für eine CPU verbaut? Schreib hier mal die wirkliche MLFB, nicht die aus TIA...
sollte aber diese sein!MLFB: 6ES7 511-1AK00-0AB0
Kann ich das auch mit einer FOR Schleife und Index machen? Da ich im Baustein die Array Größe je nach Bedarf (Konstante) ändern kann, kann ich nicht festgelegte Zuweisungen programmieren.Müsste auch mit dem Slice Zugriff funktionieren.
Dafür kann man einfach einen eigenen FC schreiben oder schauen, ob die LGF (Library General Funktions) eine solche Funktion bereit hält.
Eigentlich heißt es Überlagern, aber viele (die ich kenne) sagen einfach Sicht.blöde Frage:
was bedeutet Sicht AT?
TIA-Hilfe schrieb:Variablen mit AT überlagern
Beschreibung
Um auf Datenbereiche innerhalb einer deklarierten Variablen zuzugreifen, können Sie die deklarierten Variablen mit einer weiteren Deklaration überlagern. Sie haben so die Möglichkeit, eine bereits deklarierte Variable mit einem anderen Datentyp anzusprechen. Sie können z. B. die einzelnen Bits einer Variablen vom Datentyp WORD mit einem ARRAY of BOOL ansprechen.
Alternativ können Sie auch die Anweisungen "SCATTER" und "GATHER" verwenden, um Bitfolgen in ein ARRAY of BOOL zu zerlegen oder einzelne Bits zu einer Bitfolge zusammenzufassen. Diese Anweisungen finden Sie in der Task Card "Einfache Anweisungen" im Bereich "Verschieben".
Regeln
Folgende allgemeine Regeln gelten für das Überlagern von Variablen:
- In AWL, KOP, FUP und GRAPH ist das Überlagern in S7-1200 und S7-1500 möglich.
- In SCL ist das Überlagern in allen CPU-Familien möglich.
- Das Überlagern von Variablen ist in folgenden Bausteinen möglich:
- In Codebausteinen mit Standardzugriff
- In Codebausteinen mit optimiertem Zugriff für Variablen mit der Remanenzeinstellung "Im IDB setzen"
- Die Datenbreite der überlagernden Variablen muss gleich oder kleiner als die der überlagerten Variablen sein.
- Die Datenypen VARIANT und INSTANCE können nicht überlagert werden.
- Wenn die überlagerte Variable vom Datentyp STRING, ARRAY of BYTE, ARRAY of CHAR etc. ist, sollte ihre Länge einer geraden Anzahl von Byte entsprechen.
- Bausteine aus Bibliotheken, die als Parameter in der Schnittstelle deklariert sind, können nicht überlagert werden.
- Strukturierte PLC-Variablen, die als Parameter in der Schnittstelle deklariert sind, können nicht überlagert werden.
- Überlagernde Variablen können nicht durch Slice-Zugriffe adressiert werden.
Ein paar Bilder sind oft hilfreich.Kann ja Montag mal Bilder vom Code schicken! bzw. ich packe das als Bibliothek in einer Zip Datei.
Die Array-Zugriffe: ja,Kann ich das auch mit einer FOR Schleife und Index machen?Müsste auch mit dem Slice Zugriff funktionieren.
Leider nein, Serialize und Deserialize wird von seiner CPU noch nicht unterstützt... Serialize/Deserialize wäre auch noch eine Möglichkeit...
Leider nein, Serialize und Deserialize wird von seiner CPU noch nicht unterstützt.
Danach hatte ich nicht geschaut, nur nach dem Baustein an sich.TIA-Hilfe schrieb:Serialize: Serialisieren (S7-1200, S7-1500)
Um größere Strukturen zu serialisieren, können Sie ab der Firmware Version >= 2.0 bei einer CPU der Baureihe S7-1500 den Speicherbereich auch mit optimiertem Zugriff deklarieren.
Mal unabhängig von der Frage, das erste was ich machen würde wäre mal die CPU hochzurüsten auf die V1.8.5Wird bei der 6ES7 511-1AK00-0AB0 V1.6 aber doch....
Wie @hucki bereits geschrieben hat, würde der Zugriff auf ein Array Element in einer for-Schleife gehen, aber der Slice Zugriff nicht. Macht aber bei Word oder Byte etc. wenig Sinn eine for-Schleife zu machen. Aufwand ist hier überschaubar und es ist fürs Ergebnis unerheblich, ob ich es in einem separaten FC abbilde.Kann ich das auch mit einer FOR Schleife und Index machen? Da ich im Baustein die Array Größe je nach Bedarf (Konstante) ändern kann, kann ich nicht festgelegte Zuweisungen programmieren.
Es ist ein Baustein zur Verwaltung von Betriebsmeldungen, Störungen und Farbwechsel fürs HMI (Indikatoren, Ventile, Motor etc.)
Im Baustein kann ich die Anzahl der Meldungen, Störungen und Farbwechsler vorab über Konstanten konfigurieren und durch die Arrays wird das dann im IDB bereitgestellt.
Kann ja Montag mal Bilder vom Code schicken! bzw. ich packe das als Bibliothek in einer Zip Datei.
Wird bei der 6ES7 511-1AK00-0AB0 V1.6 aber doch von TIA angeboten (im Gegensatz zu GATHER_BLK)?!
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?