Übertragen von Daten von PLC-Lab zu Codesys

Fragen zur Software PLC-Lab
Antworten
vtreg
SPSTreff-Fortgeschrittener User
Beiträge: 19
Registriert: 30 Nov 2023, 16:38

Übertragen von Daten von PLC-Lab zu Codesys

Beitrag von vtreg »

Hallo zusammen,

ich versuche aus meinem PLC-Lab-Modell Variablen in INT8 übertragen. Mit Datentype "bool" funktioniert das hervorragend, aber wie soll ich Veriablen in Codesys definieren, damit es auf INT oder REAL Variablen funktioniert?

Hier Beispiel meines Codes aus Codesys. Veriablen mit %IX0.0 das funktioniert, aber bei WORD oder REAL Compiler meldet Fehler. Kann jemand helfen?

PROGRAM MeinBA
VAR
// Input
ConvOn AT %IX0.0: BOOL;
ConvVelShell AT %IX0: WORD;

// process output (actuators)
LampOn AT %QX0.0: BOOL;
ConvVelActual AT %QB1: REAL;
END_VAR

Benutzeravatar
mhj
Site Admin
Beiträge: 350
Registriert: 09 Jan 2010, 11:35
Kontaktdaten:

Re: Übertragen von Daten von PLC-Lab zu Codesys

Beitrag von mhj »

Hallo,

für die Übertragung von `INT` und `REAL` Variablen in CODESYS, stellen Sie sicher, dass Sie die richtige Adressierung verwenden:
`%IW...` für `INT` und `%ID...` oder `%QD...` für `REAL`.

vtreg
SPSTreff-Fortgeschrittener User
Beiträge: 19
Registriert: 30 Nov 2023, 16:38

Re: Übertragen von Daten von PLC-Lab zu Codesys

Beitrag von vtreg »

danke! das habe ich jetzt angepasst, das funktioniert aber leider immer noch nicht, Fehler beim kompilieren: C0066: Cannot compare type 'BOOL' with type 'INT'

so variablen in Codesys definiert

ConvVelShell AT %IW0: INT;
ConvVelActual AT %QW0: INT;

in PLC-Lab heißen sie gleich und Adresse als: IW0 und QW0 eingegeben.

Sollte vielleicht diesen Datentyp irgendwie in PlcLabConnector auch definieren?

Hat jemand vielleicht ein Projekt mit PLC-Lab und Codesys als Muster, wo Variablenaustausch stattfindet?

Benutzeravatar
mhj
Site Admin
Beiträge: 350
Registriert: 09 Jan 2010, 11:35
Kontaktdaten:

Re: Übertragen von Daten von PLC-Lab zu Codesys

Beitrag von mhj »

Hallo,

das Mapping der Variablen auf die Absolutadressen scheint jetzt zu funktionieren.

Die Fehlermeldung deutet darauf hin, dass Sie versuchen, eine Bool-Variable mit einer INT Variable vergleichen und das ist nicht erlaubt.

Welche SCL Zeile erzeugt die genannte Fehlermeldung?

Benutzeravatar
mhj
Site Admin
Beiträge: 350
Registriert: 09 Jan 2010, 11:35
Kontaktdaten:

Re: Übertragen von Daten von PLC-Lab zu Codesys

Beitrag von mhj »

Vorschlag:

Erzeugen Sie eine globale Variablentabelle mit dem Namen "I" und eine globale Variablentabelle mit dem Namen "Q". Hier tragen Sie jeweils das Mapping für die Ein- und Ausgänge ein.

Beispiel für die globale Variablentabelle "I":

Code: Alles auswählen

VAR_GLOBAL
    S0 AT %IX0.0: BOOL; //S0 ist mit E0.0 verknüpft
    S1 AT %IX0.1: BOOL; //S1 ist mit E0.1 verknüpft
    Sensorwert1 AT %IW10: INT; //Sensorwert ist mit QW10 verknüpft  
END_VAR
Beispiel für die globale Variablentabelle "Q":

Code: Alles auswählen

VAR_GLOBAL
    Q0 AT %QX0.0: BOOL; //Q0 ist mit A0.0 verknüpft
    Q1 AT %QX0.1: BOOL; //Q1 ist mit A0.1 verknüpft  
END_VAR

Jetzt können Sie global auf die Variablen zugreifen.
Eingangsvariablen über "I." und Ausgangsvariablen über "Q."
Beispiel:

Code: Alles auswählen

IF I.S0 THEN
  Q.Q0:=1;
END_IF
IF I.S1 THEN
  Q.Q0:=0;
END_IF

vtreg
SPSTreff-Fortgeschrittener User
Beiträge: 19
Registriert: 30 Nov 2023, 16:38

Re: Übertragen von Daten von PLC-Lab zu Codesys

Beitrag von vtreg »

hallo mhj,
danke schön für den Code.
Ich bekomme wieder Schwierigkeiten. Wenn ich z.B. " Sensorwert1 AT %IW10: INT; " in Programm direkt deklariere, dann funktioniert das auch, aber wenn ich diese unter VAR_GLOBAL in GVL deklariere, dann sagt mir Debugger, dass Sensorwert1 nicht definiert ist.
Ich versteh nicht, warum werden Globale Variable in PLC_PRG nicht sichtbar :(

Eingaben in PLC_PRG:
//Sync the PLC-Lab data with the inputs and outputs
PlcLabSync(Inputs:=TRUE, Outputs:=TRUE);
test01 := Sensorwert1;

Benutzeravatar
mhj
Site Admin
Beiträge: 350
Registriert: 09 Jan 2010, 11:35
Kontaktdaten:

Re: Übertragen von Daten von PLC-Lab zu Codesys

Beitrag von mhj »

Wenn Sensorwert1 in der globalen Variablentabelle "GVL" definiert ist, dann müssen Sie "GVL." davor schreiben:

(Wie im obigen Beispiel mit "I.S0" auch schon beschrieben)

Code: Alles auswählen

test01 := GVL.Sensorwert1;

Benutzeravatar
Weiss_MHJ
Site Admin
Beiträge: 674
Registriert: 13 Apr 2010, 16:34
Kontaktdaten:

Re: Übertragen von Daten von PLC-Lab zu Codesys

Beitrag von Weiss_MHJ »

Guten Tag,

Sie sollten sich in einigen Tutorials einlesen, damit Sie die theoretischen Voraussetzungen für die Programmierung haben.
Hier z.B. ein Link bzgl. der Variablen:
https://www.codesys-blog.com/programmie ... variablen/

Gruß

vtreg
SPSTreff-Fortgeschrittener User
Beiträge: 19
Registriert: 30 Nov 2023, 16:38

Re: Übertragen von Daten von PLC-Lab zu Codesys

Beitrag von vtreg »

danke schön für die Erklärung und für den Link zum Tutorials. Mit "GVL davor schreiben" wusste ich nicht. Ich muss wirklich in das Thema tiefer einsteigen.

Antworten