Twincat3 Variablen der IOs zuweisen

flo_ffb

Level-1
Beiträge
10
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Forumsgemeinde,

dies ist mein erster Beitrag und ich hätte nie gedacht, mich jemals in einem SPS Forum anzumelden. Ich bin eigentlich Maschinenbauer, also habt Nachsicht mit mir ( hoffe ich werd nicht gleich wieder raus geschmissen).
Mein Problem:
ich möchte bei mir daheim privat eine kleine Anlage zum Rösten von Kaffee automatisieren. Hier soll eine Temperatur über eine Gaszufuhr und einen Lüfter geregelt werden.
Für das Ganze habe ich ein paar Module an einen EK1100 Koppler gebaut, in Twincat3 eingerichtet und es kommen auch Werte an.

Programmierung ist jetzt nicht meine Stärke, habe aber Grundkenntnisse noch aus dem Studium oder der Arbeit mir Diadem oder Prüfstandsautomatisierungen.
Mein Problem: Ich hab keine Ahnung wie ich die Zuordnung der Ein- und Ausgänge der Hardware auf die Variablen der PLC bekomme. Ich hab mich bei Beckhoff rauf und runter gelesen, da heißt es über die Task oder die PLC zuweisen.... aber wie???

Kann es mir jemand verständlich erklären? Entweder hier oder am besten auf ner Halbe im Raum FFB- MUC?
Danke schon mal für Eure Hilfe

Gruß
Florian
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du hast IOs im EA-Baum.
Wenn du nun in der PLC Variablen definerst als Eingänge / Ausgänge (z.B. b1 AT %Q* : BOOL; )und das durch den Compiler laufen laesst dann findest du in der PLC-Projekt-Instanz diese Variable.
Jetzt auf einer der beiden Seiten auf die Variable gehen und per "Zuweisung" mit der Gegenstelle verknüpfen.
Dann noch das Projekt aktivieren, die PLC runterladen und los gehts.

Ansonsten: Im Infosys finden sich an den verschiedensten Stellen Beispielprojekte. Such dir eines aus das HW-bezogen ist (und somit auch eine Verknüpfung zur EA hat). Dann siehst du wie es gemacht wird.

Guga
 
Guga hat eigentlich schon alles gesagt, speziell den Hinweis auf Infosys kann ich nur unterstützen. Doch hier das Selbe nur mit etwas Code und Bildern.
Bei TC3 müssen Variablen die mit IOs verknüpft werden sollen speziell deklariert werden. Bei Eingängen muss hinter dem Variablennamen %I* und bei Ausgängen %Q* angehängt werden. Das * bedeutet dabei, dass TwinCAT sich selber um die Adressierung kümmert.
Es ist vom Ablauf egal, ob Du erst alle Variablen die eine Verbindung zu einem IO haben deklarierst und dann das Projekt übersetzt und die benötigten IOs dann mit den Variablen verknüpfst oder erst alle Varioablen deklarierst und es dann machst oder gar erst Dein ganzes Programm schreibst und dann erst die Verknüpfung vornimmst.
Nachdem Du Dein Projekt übersetzt hast kannst Du im Knoten E/A den jeweiligen Ein- und Ausgängen die zugehörigen Variablen aus Deinem SPS-Projekt zuordnen. Sollten noch Variablen dazukommen oder wegfallen deklarierst Du diese bzw. löscht diese und übersetzt Dein Programm erneut, dann stehen die Änderungen im Knoten E/A zur Verfügung.
Bei folgendem Beispiel gibt es eine 8-kanalige DI, eine 8-kanalige DO und eine 8-kanalige AI Karte:
IO01.png
Die Deklaration der Variablen sieht so aus:
Code:
VAR
    b_Input_Test01      AT %I*: BOOL;
    b_Input_Test02      AT %I*: BOOL;


    b_Output_Test01     AT %Q*: BOOL;
    b_Output_Test02     AT %Q*: BOOL;


    i16_Input_Test01    AT %I*: INT;    
    i16_Input_Test02    AT %I*: INT;    
END_VAR
Zum Verknüpfen öffnest Du im Knoten E/A den entsprechenden Eingang und machst einen Rechtklick auf diesen. Aus dem Kontextmenü wählst Du dann "Change Link" aus.
IO02.png
Nun werden Dir, je nach Einstellung, z.B. alle gefundenen und noch nicht verknüpften Variablen angezeigt.
IO03.png
Aus der Liste wählst Du jetzt die gewünschte Variable aus, z.B. mit einem Doppelklick. Wenn ein I/O verknüpft ist ändert sich sein Symbol.
IO04.png
Soweit Du es möchtest, kannst Du TwinCAT den Namen des Eingangs so ändern lassen, dass dieser dem Pfad der verknüpften Variable entspricht. Dafür wählst Du den Eingang mit einem Rechtsklick aus und im Kontextmenü dann "Take name over...". Bezogen auf mein Beispiel würde der Eingang dann z.B. "MAIN.b_Input_Test01" heißen. Natürlich kannst Du die Eingänge auch selber benennen.
Nun noch die Konfiguration aktivieren
IO5.png
einloggen und das SPS Programm starten und dann sollte es laufen.
 
Zuletzt bearbeitet:
Je nachdem, wie viele IOs man zuweisen muss, ist der Weg über Pragmas einfacher, die kann man z.B. auch mit Excel "teilautomatisiert" erstellen:

//Fehler Not-Aus
{attribute 'TcLinkTo' := 'TIID^Device 1 (EtherCAT)^BUS_KOPPLER_A (EK1100)^Sicherheit +S1 (EL1018')^Channel 5^Input'}
SAFE_FEHLER_NOTAUS AT %I*:BOOL;

Beispiel aus einer Anlage von uns.

Viele Grüße

Ps: (EL1018') bitte das Hochkomme entfernen
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@ oliver.toon: Danke für Deine Erklärung. Habs verstanden. Das werd ich mal probieren. Auch den anderen Danke für die Rückmeldung.

Fahr morgen in den Urlaub nach Kroatien, hab die Module und den Laptop schon eingepackt. Campingplatz mit Stellplatz direkt am Meer, da machts Programmieren dann Spaß.

Ich werde berichten. Ich werde mal aufskizzieren, wie ich mir das vorstelle. Spannend wird die Regelung der Heizung. Kaffeebohnen verhalten sich normalerweise endotherm, ab nem gewissen Punkt beim Rösten aber exotherm. Das rechtzeitig zu erkennen, nachzuregeln und vorallem in der PLC umzusetzen wird ne Herausforderung. Aber eins nach dem andern. Jetzt ist erstmal Urlaub angesagt
 
Hallo,

ich stehe im Moment vor dem Problem, meine IOs im PLC so zu definieren, dass die Vernüpung im Systemmanager "nicht mehr notwendig" ist.
{attribute 'TcLinkTo' := 'TIID^Device 1 (EtherCAT)^BUS_KOPPLER_A (EK1100)^Sicherheit +S1 (EL1018')^Channel 5^Input'}
das Fettgedruckte wird wohl die Lösung, und doch verstehe ich es nicht.

Vieleicht kann mir jemand auf die Sprünge helfen.

Ich lege mal eine Beispielprojekt eines BC9020 bei.

Ich habe natürlich die Möglichkeit jede einzelne Variable in den Klemmen einzeln im PLC zu definieren.
Die Verknüfung zu welcher Klemme steht in einer Excel-Tabelle.

Vieleicht kann mir jemand den Anfang mal vorgeben ?
 

Anhänge

  • Systemmanager BC.PNG
    Systemmanager BC.PNG
    24,6 KB · Aufrufe: 35
@cas:
So 100%ig verstehe ich nicht alles was du willst.
#1: BC9020 = TC2 (wenn du den BC nicht in der Funktion nur als BK nutzen willst).
#2: Für ein Mapping muss Target und Quelle der Verknüpfung bekannt sein.
In TC3 erfolgt das über das Attribut welches vor der Variable geschrieben wird. D.h. die Variable ist dann das eine Ende der Verknüpfung, die im Attribut bezeichnete EA-Stelle ist dann das andere Ende.
Du musst den String textuell lesen, die ^ sind dann immer der Sprung vom Parent zum Child.
In deinem Fall ist der EA-Baum dann aufgebaut wie (mit -> als Sprung vom Parent zum Child).
Device 1 (EtherCAT)->BUS_KOPPLER_A (EK1100)->Sicherheit +S1 (EL1018')>Channel 5->Input

Wenn du nun den EA-Baum entsprechend diesem Text konfiguriert hast gibt es entsprechend am EtherCAT-Master mit dem Namen Device 1 (EtherCAT) einen EK1100 mit Namen...
Typos sind hier übrigends blöd. Es muss exakt passsen :-)

Hoffe das hilft dir

Guga
 
Schön wäre es wenn der umgekehrte weg auch irgenwie Klappen würde!
bVarIn1 AT%I* : BOOL; // linked manually

sTcLinkTo:= FC_GetTcLink(adr(bVarIn1)); :confused:


Ist so was eigentlich irgenwie möglich?



 
Zurück
Oben