Einarbeiten in TwinCAT

Zuviel Werbung?
-> Hier kostenlos registrieren
Das ist schon nicht schlecht. Ich bräuchte nur etwas was ich in ST üben kann.

Probiers doch mal mit ner simplen Ampelschaltung.

Folgendes Szenario:
Du hast eine gerade Straße mit einem Fußgängerüberweg. An diesem steht eine Ampel. Solange kein Fußgänger über die Straße will, bleibt die Ampel für den Verkehr grün. Wenn nun ein Fußgänger über den berühmten gelben Taster an der Ampel signalisiert dass er über die Straße will, dann springt die Ampel für den Verkehr auf rot und die Fußgängerampel auf grün. Dies bleibt für 2 Min erhalten. Danach springt die Fußgängerampel wieder auf rot und nach einer kurzen Verzögerung die Verkehrsampel auf grün.
 
Als ich mit dem ersten Projekt fertig war habe ich dieses als Bibliothek in meinen folge Aufgaben mit eingebunden, damit ich den dort generierten Taktbaustein nutzen kann. Jetzt ist das Problem wenn ich normal einen FB einfüge werden immer bei VAR_IN, OUT,...die Zuordnungen von diesem Taktbaustein eingetragen.
Macht er auch nachdem ich die Bibliothek wieder aus dem Projekt entfernt habe.
 
Zuletzt bearbeitet:
Ich will jetzt auch mal ne Variablenstruktur anlegen und habe dazu folgenden Code geschrieben.
Code:
VAR_GLOBAL

TYPE PER:
    STRUCT
    RM_KS_DT_REF        :BOOL(*    Rückmeldung Kontaktschalter Drehtisch in Referenzposition*) ;
    RM_KS_PRES        :BOOL(*    Rückmeldung Kontaktschalter Teil in Pressstaion*);
    RM_KS_UEST        :BOOL(*    Rückmeldung Kontaktschalter Teil in Übergabestation*);
    RM_LS_AST            :BOOL(*    Rückmeldung Lichtschranke Aufgabestation*);
    RM_LS_BF            :BOOL(*    Rückmeldung Lichtschranke an Bandförderer*);
    RM_MS_BF            :BOOL(*    Rückmeldung Motorschutz Bandförderer*);
    RM_MS_DT            :BOOL(*    Rückmeldung Motorschutz Motor Drehtisch*);
    RM_MS_KOMP        :BOOL(*    Rückmeldung Motorschutz Motor Komperssor*);
    RM_NOT_AUS        :BOOL(*    Rückmeldung Not Aus hat ausgelöst*);
    RM_SI_LAST            :BOOL(*    Rückmeldung Sicherung Laststrom*);
    RM_SI_SEN            :BOOL(*    Rückmeldung Sicherung Sensorik*);
    RM_SI_V_AST        :BOOL(*    Rückmeldung Sicherung Ventile Aufgabenstation*);
    RM_SI_V_PRES        :BOOL(*    Rückmeldung Sicherung Ventil Presse*);
    RM_SI_V_UEST        :BOOL(*    Rückmeldung Sicherung Ventil Übergabestation*);

    A_M_BF                :BOOL(*    Ansteuerung Motor Bandförderer Ein*);
    A_M_DT_L            :BOOL(*    Ansteuerung Motor Drehtisch Links Ein*);
    A_M_DT_R            :BOOL(*    Ansteuerung Motor Drehtisch Rechts Ein*);
    A_M_KOMP            :BOOL(*    Ansteuerung Motor Kompressor*) ;
    A_V_AST_AS        :BOOL(*    Ansteuerung Ventil Aufgabestation Arbeitsstellung Ein*);
    A_V_AST_GS        :BOOL(*    Ansteuerung Ventil Aufgabestation Grundstellung Ein*);
    A_V_PRES            :BOOL(*    Ansteuerung Ventil Presse Ein*);
    A_V_UEST_AS        :BOOL(*    Ansteuerung Ventil Übergabestation Arbreitsstellung Ein*);
    A_V_UEST_GS        :BOOL(*    Ansteuerung Ventil Übergabestation Grundstellung Ein*);
    END_STRUCT
END_TYPE;
END_VAR
Aber ich bekomme immer noch Fehlermeldungen. Ich hoffe ihr könnt mir helfen.

In der Hilfe hab ich nur folgendes Beispiel zur Struktur gefunden.
Code:
 TYPE <Strukturname>:
    STRUCT
 <Variablendeklaration 1> . .  <Variablendeklaration n>
    END_STRUCT
END_TYPE
 
Zuletzt bearbeitet:
Siehe Anhang
Hab jeweils Doppelklick darauf gemacht
 

Anhänge

  • Fehler1.JPG
    Fehler1.JPG
    205,1 KB · Aufrufe: 39
  • Fehler2.JPG
    Fehler2.JPG
    204,6 KB · Aufrufe: 22
Zuviel Werbung?
-> Hier kostenlos registrieren
Hmm das bringt dann auch nichts. Du kannst ja mal zu Testzwecken einfach den Code von mir in ein leeres Projekt in die Globalvariablen einfügen und testen.
 

Anhänge

  • Unbenannt.JPG
    Unbenannt.JPG
    208 KB · Aufrufe: 13
Aber von Grund auf ist es schon möglich eine Struktur in den Globalvariablen anzulegen? Oder ist das einfach nicht Möglich?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Aber von Grund auf ist es schon möglich eine Struktur in den Globalvariablen anzulegen? Oder ist das einfach nicht Möglich?

Ich würde mal vermuten, dass er das nicht mag. Schieb doch dein STRUCT in den Reiter "Datentypen". Dort kannst du dann ein neues Objekt einfügen, dem du dann den Namen deiner STRUCT gibst. Dann erscheint auch sofort der STRUCT-Rumpf.
 
Und was ist dann der Unteschied wenn ich die Struktur z.B. anstatt in den Globalen Variablen in Main aufrufe? Oder besser gesagt welche Variablen sollte man alsGlobale Variablen anlegen?
Kann das sein, das dann andere Geräte nur auf diese zugreifen bzw. abfragen können?
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Und was ist dann der Unteschied wenn ich die Struktur z.B. anstatt in den Globalen Variablen in Main aufrufe?

Deine ganze Datei kann mehrere Programme, FBs und FUNs enthalten. Wenn du die Variable vom Typ Struktur im Main deklarierst, dann kannst du die Variable nur dort verwenden. Eine Variable vom Typ Struktur, die in den Globalen Variablen deklariert wurde kann in allen Bausteinen verwendet werden.
 
Oder besser gesagt welche Variablen sollte man alsGlobale Variablen anlegen?

Du solltest nur solche Variablen als Globale Variablen deklarieren, die du auch wirklich in mehreren Programmen bzw. FBs bzw. FUNs benötigst (z.B. Initialisierungsvariablen, Logger-Variablen, Debug-Variablen, etc.).

Kann das sein, das dann andere Geräte nur auf diese zugreifen bzw. abfragen können?

Was meinst du mit "andere Geräte"?
 
Zurück
Oben