TIA PLC Variablen als Array nicht möglich?

Das Array enthält 28 Elemente vom Typ "Vacom Frame Byte". "Vacom Frame Byte" wiederum enthält 24 Byte.
Das Kommt daher da ich das Array von 0 bis 27 definiert habe, das habe ich mal auf 0 bis 26 geändert ^^

Das Vacom Frame Byte ist 24 Byte lang ich vergesse immer das Byte 0 mit zuzählen :eek:

Die Fehlermeldung kommt halt höchstwahrscheinlich weil die Ausgänge in der Hardware nicht definiert sind. Nur in der Tabelle anlegen reicht nicht, die müssen auch physisch zugewiesen werden
Stimmt ich habe die Sensoren in der HW Konfig noch gar nicht hinterlegt... Dabei ist mir auch schon der nächste Problem aufgefallen 😭

Musst du dein Programm später dem Kunde zeigen? Bei einigen Kunden ist indirekte Adressierung von Ausgängen explizit nicht erlaubt.
Nein die Programme werden nie dem Kunden gezeigt, zum glück :D

Kannst du nicht einfach 27 x schreiben
Code:
"NovionSenden".Novion[1] := #"Sendeframe Byte";
"NovionSenden".Novion[2] := #"Sendeframe Byte";
...
"NovionSenden".Novion[27] := #"Sendeframe Byte";
Könnte man, ist das aber nicht umständlicher als mit einer Schleife? Durch das neue Problem was ich jetzt gefunden habe, wird es aber wohl darauf hinauslaufen es so zu machen =)

Warum soll das Programm die ganzen Zuweisungen und Berechnungen in der Schleife 27 mal machen? Einmal reicht doch?
Das ist richtig bei dem Beispiel Kommando ist das nicht nötig aber wenn Sich im Frame ein Byte ändert, muss er ja die CRC Berechnung neu machen daher ist diese vor der Schleife.

Warum wird "Novion Kommandos"."CRC Berechnung".Array[2] und ...Array[3] nichts zugewiesen?

Die Kommandos ändern sich bisher nur in den Bytes 0, 1, 4 und 5 der Rest sind in den Bytes nur Nullen. Daher müssen nur die Bytes übergeben werden.

DANKER erst einmal für eure Hilfe!
 
Zuviel Werbung?
-> Hier kostenlos registrieren

Um diesen Screenshot richtig zu interpretieren benötigt man zusätzliche Information.
Implizit (aus den vorangegangenen Posts) würde ich vermuten, dass Du auf die IO-Range einer 1200er anspielst?
Oder geht es darum, dass die Hardware nicht projektiert ist (denn der Index 0 scheint nicht darauf zu verweisen, dass die Range überschritten wurde; es sei denn, in der Variablentabelle wurde direkt eine zu hohe Adresse angewählt (Das geht aber aus diesem Screenshot nicht hervor)).
 
Nein die Programme werden nie dem Kunden gezeigt, zum glück :D
Ändert nichts daran, dass es leserlicher geht.
Um diesen Screenshot richtig zu interpretieren benötigt man zusätzliche Information.
Implizit (aus den vorangegangenen Posts) würde ich vermuten, dass Du auf die IO-Range einer 1200er anspielst?
Oder geht es darum, dass die Hardware nicht projektiert ist (denn der Index 0 scheint nicht darauf zu verweisen, dass die Range überschritten wurde; es sei denn, in der Variablentabelle wurde direkt eine zu hohe Adresse angewählt (Das geht aber aus diesem Screenshot nicht hervor)).
Ich hatte die größte 1214 DCDCDC in V18 angelegt und die Anfangsadresse so gelegt wie ganz oben dargestellt.. das geht über den Bereich der 1214 hinaus
 
Nach ein bisschen denken habe ich diesen Rat an GeorgSei:

Definitiv nicht die 28 Feldgeräte über ein FOR Schleife aktualisieren.
Und definitiv nicht die 28 Feldgeräte als 1 grossen Array aufsetzen.
Dies ist eine Falle den ich mehrmals gesehen habe Anfänger reinfallen.
Man denkt es ist effizienter, mehr modern, bla bla bla... ist es aber nicht.

Ich schlage vor:
In die Hardware Konfiguration, die 28 Geräte hineinfügen und die E/A Adressen wählen die in das Adressraum für die 1214C passen.
Die E/A in die Variabeltabelle mittels UDT definieren. edit: Gebe jeden Gerät dieselbe symbolische Name wie in die elektrische Schaltpläne. Nicht nur eine zufälligen Nummer.
1 Standard FB der alles was 1 Gerät anbelangt aktualisiert. Die FB E/A Parameter mittels UDT definieren.
In OB1 oder irgend FC die FB 28 mal aufrufen und pro Instanz ein Instanz-DB definieren. Die E/A übegeben wie normal.
Das ist die 'normale' Weise. Keine FOR Schleife. FOR Schleifen haben Anwendungen, aber nicht für dies.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Wie auch immer das ganze dann per Bluetooth? kommunizieren soll, stellt sich mir die Frage, ob das überhaupt in einem SPS-Zyklus für alle Getäte passieren kann, oder ob nicht 1 Getät schon mehr als einen Zyklus braucht...
 
Zurück
Oben