TIA PLC Variablen als Array nicht möglich?

GeorgSei

Level-2
Beiträge
65
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich benötige mal das Schwarm wissen =) Es geht um TIA Portal 18 mit einer CPU 1214C DC/DC/DC

Und zwar habe ich 27 Sensoren die über ein Frame kommunizieren, dieses beinhaltet 27 Bytes. Nun möchte ich einen Befehle mittels eines For Schleife an die 27 Sensoren schicken. Nach jedem Durchlauf soll der nächste Sensor über die Schleifenvariable ausgewählt werden.

Ich habe nun einen Datentyp für den Frame erstellt in diesem sind die 27 Bytes enthalten. Nun habe ich ein zweiten Datentyp erstellt in dem ich ein Array mit den Frame Datentyps erstellt habe. In den PLC Variablen habe ich jetzt den zweiten Datentyp gelegt und dort die Ausgangsadresse hinterlegt.

Datentyp 1.png Datentyp 2.pngPLCVariablen.png

Das ganze habe ich gemacht um in der For Schleife das Array ansteuern zu können. Leider kann ich das Array nicht in meinem SCL Code angeben. Ich kann nur den Übergeordneten Datentyp auswählen

SCL.png

Ist das so überhaupt möglich? Wenn das so nicht geht wie könnte ich das ändern?
 
Du kannst natürlich nur den Datentyp mit dem gleichen Datentyp beschreiben.

Welche Fehlermeldung gibt er dir denn aus?
Es gibt keine Fehlermeldung aber unter "NovionSenden".Novion.Novion[#i] ist es rot gekräuselt und so wie es da steht habe ich es händisch hin geschrieben als Beispiel.

Man kann ja eigentlich mit der Fahne vor den Variablen die Variable in den Code hineinziehen, dies ist nicht möglich ich kann dies nur mit "NovionSenden" machen. Dies bringt mir ja nichts da ich so das Array nicht durchgehen kann.
 
Hast du den Baustein mal übersetzt? Ich hatte schon manchmal in SCL das verhalten, dass etwas als Fehler angezeigt wurde, obwohl es gar keiner war. Kann wohl passieren wenn man oft irgendwelche Datentypen ändert und Syntaxfehler hat.
Nach dem Übersetzen sollte ja ein Fehler in der Zeile mit mehr informationen ausgegeben werden

-chris

EDIT:
Übrigens kannst du dir diese Zeile sparen, das macht die For-Schleife schon von alleine

Code:
#i := #i + 1;
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hast du den Baustein mal übersetzt? Ich hatte schon manchmal in SCL das verhalten, dass etwas als Fehler angezeigt wurde, obwohl es gar keiner war. Kann wohl passieren wenn man oft irgendwelche Datentypen ändert und Syntaxfehler hat.
Nach dem Übersetzen sollte ja ein Fehler in der Zeile mit mehr informationen ausgegeben werden

-chris

EDIT:
Übrigens kannst du dir diese Zeile sparen, das macht die For-Schleife schon von alleine

Code:
#i := #i + 1;
Beim Übersetzen bekomme ich den Fehler

Die eingegebene Adresse ist außerhalb des zulässigen Adressbereichs.

Da muss ich mir wohl noch mal Gedanken machen wie ich das mit dem Array anders machen kann...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ein Frame ist 23 Byte groß und so in der HW Definiert
Anhang anzeigen 78095

Wie gesagt ich kann nicht mal die Lila Fahnen in den Editor ziehen wie es eigentlich üblich ist...
Das ist die Variablentabelle, das hat erstmal nicht mit der Hardware zu tun.

Du hast uns nämlich noch nicht verraten wo du deine 400 Byte Ausgänge unterbringst
 
Moin GeorgSei,

Das lässt TIA auch nicht zu....

Anhang anzeigen 78091

Ich habe die Befürchtung das PLC Variablen nicht als Array ausgegeben werden können.
Doch, das geht.

Also "NovionSenden".Novion[#i] hat den Datentyp "Vacom Frame Byte"?
Und #"Sendeframe Byte" hat auch den Datentyp "Vacom Frame Byte"?

Dann müsste die Zuweisung funktionieren.

Was sagt TIA denn, wenn Du mit der Maus über den Fehler hooverst?


BTW: Deine Variablennamen sind nicht besonders professionell gewählt. In manchen Programmierumgebungen würden sie überhaupt nicht funktionieren. Verzichte doch auf Leerzeichen, Umlaute usw.
 
In die PLC Variabel Tabelle kann man E/A anlegen den in die HW Konfiguration nicht gibts.

Die 1214C hat eine E/A Addressraum von IB0..IB1023/QB0..QB1023.
24 x 28 startend ab QB600, geht bis zu QB1271. Vielleicht ist dass das Problem.

N.B. 28 Distribuierte Geräte mit eine 1214C. Vielleicht zu viel für eine kleine PLC.
 
In die PLC Variabel Tabelle kann man E/A anlegen den in die HW Konfiguration nicht gibts.

Die 1214C hat eine E/A Addressraum von IB0..IB1023/QB0..QB1023.
24 x 28 startend ab QB600, geht bis zu QB1271. Vielleicht ist dass das Problem.

N.B. 28 Distribuierte Geräte mit eine 1214C. Vielleicht zu viel für eine kleine PLC.
(nur den Code) habe ich bei einer projektierten 1500er getestet.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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
 
Musst du dein Programm später dem Kunde zeigen? Bei einigen Kunden ist indirekte Adressierung von Ausgängen explizit nicht erlaubt.
Kannst du nicht einfach 27 x schreiben
Code:
"NovionSenden".Novion[1] := #"Sendeframe Byte";
"NovionSenden".Novion[2] := #"Sendeframe Byte";
...
"NovionSenden".Novion[27] := #"Sendeframe Byte";
Das ist viel übersichtlicher und du siehst sofort, welche Ausgänge es gar nicht gibt. Und kannst später auch mal auf andere Adressen umverdrahten.
So könntest du den Ausgangsadressen auch bessere/individuelle Bezeichnungen geben.

Warum soll das Programm die ganzen Zuweisungen und Berechnungen in der Schleife 27 mal machen? Einmal reicht doch?
Warum wird "Novion Kommandos"."CRC Berechnung".Array[2] und ...Array[3] nichts zugewiesen?
 
Zuletzt bearbeitet:
Zurück
Oben