TIA effektiv arbeiten mit TIA, hirarchische Variablen und Intellisense

Maagic7

Level-2
Beiträge
386
Reaktionspunkte
180
Zuviel Werbung?
-> Hier kostenlos registrieren
Beim Thema von Gestern. "effektiv arbeiten mit TIA - wie macht ihr das", sind wir auf das mappen der E/As's auf UDTs zu sprechen gekommen.
Ich hatte dann noch gefragt, ob das ähnlich ist wie in CodeSys. Ich hab's nun ausprobiert. Es funktioniert leider nicht genau so wie ich mir das
vorgestellt hatte. man muss wieder Umweg nehmen.



I. Problem
man muss sich immer Unmengen an Variablen Merken, TIA wie auch Codesys macht es einem da mit den Variablenlisten nicht gerade einfach.
Das ist z.B. in Step7 Classic wesentlich besser gelöst.
Man bräuchte also eine saubere Unterstützung über das Intellisense, so dass man extrem schnellen Zugriff auf seine Variablen hat.

Hier kommt nun die Möglichkeit der hirarchischen Deklaration von UDTs zum tragen

Das Problem: bei TIA ist, dass diese UDT's nicht frei in der Unteradressierung sind und warum auch immer, so ein zusammengesetzter Typ nur auf E/A und nicht
auf Merkerbereiche gemappt werden kann.

Man muss dann einen Umweg über einen DB gehen statt über die Variablentabelle

II. Prinzipielle vorgehensweise.

1. unter PLC Datentypen die Typen für die Aktoren definieren

Pumpe mit Schützansteuerung:
udt_PumpeSchütz
MS_ok : BOOL; // Motorschutzschalter ok
TR_ok : BOOL; // Trocklaufschutz ok
QRM : BOOL; // Rückmeldung Schütz
End_UTD

udt_Valve
B_OPEN : BOOL; // Sensor Ventil offen
B_CLOSED: BOOL; // Sensor Ventil geschlossen
Q : BOOL; // Ansteuerung Ventil
END_UTD

Dann einen neuen DB anlegen Name "o" für Object oder "m" für Maschine
dort dann für jeden Aktor eine Variable eintragen

VP1 : udt_PumpeSchuetz; // Vakuumpumpe 1
VP2 : udt_PumpeSchuetz; // Vakuumpumpe 2
Y1 : udt_Valve; // Ventil 1
Y2 : udt_Valve; // Ventil 2
Y3 : udt_Valve; // Ventil 3

============================================================

jetzt kann man ausgehend von seinem Object mit Intellisense auf die komplette Maschine zugreifen,
ohne sich überhaupt noch ein Signal merken zu müssen.

Was man jetzt noch 1x händisch erledigen muss, ist das mapping der E/A's auf die Object-Signale,
am besten man macht eine Bibliothek mit den Standard UDTs und jeweils eine zugehörige Mapping-Funktion,
die nur noch die E/A Adressen und den UDT übergeben bekommen.

U E0.0
= o.VP1.MS_ok

U E0.1
= o.VP1.TR_OK

U o.VP1.Q
= A0.0

ab jetzt kann man getrost jede Variablentablle und jedes suchen vergessen. Das wird über das Intellisense erledigt!!!

Bei CodeSys/TwinCat ist das aber so wie mir gezeigt wurde wesentlich ausgereifter. Dort kann man die einzelnen E/A's direkt in der Variablentabelle
den Strukturen zuordnen.

Ist hier jemand dabei, der parallel CodeSys/TwinCat programmiert und das nutzt??
 
Ich kenne dieses Mappen von E/A Daten auf Datenbausteinen auch, bzw. habe es schon oft gesehen. Ich frage mich dann aber immer was dass soll ?
Ich sehe da ehrlich gesagt keine Vorteile zur direkten Adressierung an den Formalparametern der Bausteine , ganz im Gegenteil es entsteht noch mehr Code weil ja schließlich irgendwo gemappt werden muss.
Wer keine Probleme mit der Zykluszeit hat, der könnte sich dann meiner Meinung nach viel Arbeit sparen, in dem er die Adressen für ein Objekt einfach in der Instanz konfiguriert und dann per peek oder poke drauf zugreift. Das habe ich schon einige male gemacht und funktioniert ganz zuverlässig.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
I per peek oder poke drauf zugreift.

Das meinst du nicht im Ernst oder?
Damit hebelst du ja die viel gelobte "Optimierung" und die Vorteile der symbolischen Adressierung (Wenn man sei dann einmal komplett nutzt) wieder aus.

Ich versorge auch ganz gerne mal Bausteine mit einem Datentyp, das macht die Schnittstellen etwas kleiner. Nachteil, man hat u.U. mehr Mühe heruszufinden, wo eine Variable im FB genau herkommt, bzw. wie sie übergeben wurde. Aber wenn man seine Variablen zumindest im Stamm gleich benennt, kann man inzwischen bei TIA auch im gesamten Programm nach Text suchen. Eine Krücke, aber immerhin.
 
Auf den ersten Blick macht das auch nicht wirklich Sinn. Zumal man den Umweg über den DB gehen muss.

Bei großen Anlagen soll dass die Arbeit erleichtern, wenn man z.B. 100 Ventile und 50 Pumpen hat.
Copy&Paste und Struktur VP1 durch VP2 ausgetauscht, fertig. Programm fehlerfrei erstellt!
Ausserdem hat man mit dem Maschinen-Object eine extrem schnelle übersicht über die ganze Anlage.

MaschienObject öffnen, in dem Fall den DB "o", auf StatusBeobachten und man hat ohne Variablentabellen zu erstellen und Programmbausteine zu oeffenen, den kompletten Status
der Anlage auf dem Bildschirm. Dann Rechtsklick Querverweis und man ist im Programm schon an der gesuchten Stelle. Liste der Programmbausteine oder Variablenlisten druchsuchen und hoffen, das man schnell was findet gehört dann der Vergangenheit an. Ich hab mir das mit TwinCat schon zeigen lassen. Dies so zu machen ist extrem genial. Da findet selbst der Halblaie recht schnell den Einstieg in einem fertigen Programm.

Ein grasser Nachteil von TIA (wie auch CodeSys) gegebnüber Step7 classic ist die Bausteinüberischt. Wenn man in Step7 mit den FB's anfängt und Gerät für Gerät einen eigen FB bekommt, dann kann man in der Bausteinliste die Maschien von oben nach unten druchgehen. Und sieht eben auch noch die Kommentare der FB's dazu. So lässt sich relativ schnell ein Object/Gerät finden. Diese Möglichkeit fällt so bei TIA weg und man ist wieder nur am Suchen. In einer Liste mit 200-300 Bausteinen ist das kein Spass mehr. Vor allem, wenn ich das Programm schreibe und mein Kollege ist auf der Baustelle.
 
Ein grasser Nachteil von TIA (wie auch CodeSys) gegebnüber Step7 classic ist die Bausteinüberischt. Wenn man in Step7 mit den FB's anfängt und Gerät für Gerät einen eigen FB bekommt, dann kann man in der Bausteinliste die Maschien von oben nach unten druchgehen. Und sieht eben auch noch die Kommentare der FB's dazu. So lässt sich relativ schnell ein Object/Gerät finden. Diese Möglichkeit fällt so bei TIA weg und man ist wieder nur am Suchen. In einer Liste mit 200-300 Bausteinen ist das kein Spass mehr. Vor allem, wenn ich das Programm schreibe und mein Kollege ist auf der Baustelle.

Da würde ich empfehlen, doch mal die Bausteine zu sortieren und in Ordner zu Packen. Diese noch logisch benennen und schon ist es wesentlich übersichtlicher.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Da würde ich empfehlen, doch mal die Bausteine zu sortieren und in Ordner zu Packen. Diese noch logisch benennen und schon ist es wesentlich übersichtlicher.

Ist mit auch klar, dass man das in Ordner packen kann.
z.B. Pumpen, Ventile, Schrittketten oder eben nach Anlagenteilen Fördertechnik, Bearbeitungsstationen ...

Ich bin nur mal am rausfinden was alles geht, wenn man es ausreizt, ob das dann wirklich mit TIA Sinn macht ist was anderes.
Ziel sind immer 2 Dinge:
1. schnell und fehlerarm zu programmieren
2. schneller und sauber Status

bei Step7 steht sich das z.B. im Weg und dort verbieten sich UDTs mit Steuersignalen als ANY an Bausteine zu übergeben, da man praktisch keinen vernüftigen Status dafür hat.
Bei TIA bin ich noch am probieren, wie sich das im Status verhält.
 
Ein grasser Nachteil von TIA (wie auch CodeSys) gegebnüber Step7 classic ist die Bausteinüberischt. Wenn man in Step7 mit den FB's anfängt und Gerät für Gerät einen eigen FB bekommt, dann kann man in der Bausteinliste die Maschien von oben nach unten druchgehen. Und sieht eben auch noch die Kommentare der FB's dazu. So lässt sich relativ schnell ein Object/Gerät finden. Diese Möglichkeit fällt so bei TIA weg und man ist wieder nur am Suchen. In einer Liste mit 200-300 Bausteinen ist das kein Spass mehr. Vor allem, wenn ich das Programm schreibe und mein Kollege ist auf der Baustelle.

Deine Listenansicht bekommst du, indem du unten auf Übersicht und dann den Reiter Details oder Liste wählst.
Alternativ über die Portalansicht -> PLC-Programmierung -> Reiter "Details oder Liste"

Listenansicht.jpg
 
Ich kenne dieses Mappen von E/A Daten auf Datenbausteinen auch, bzw. habe es schon oft gesehen. Ich frage mich dann aber immer was dass soll ?

Dann kann man z.B. nicht genutzte Eingänge oder Ausgänge an einer Stelle auskommentiert wenn diese in einer Maschine mal nicht vorhanden sind!

Gruß Hausen
 
Zurück
Oben