Vad är en dataenhetstyp (DUT)?

En DUT är ett speciellt objekt som tillåter definitionen av en struktur. En struktur fungerar på samma sätt som en standarddatatyp (som Bool eller Real) och gör att variabler kan definieras som en typ av en struktur.

DUT: er definieras genom att använda följande deklaration:

 TYPE: STRUCT END_STRUCT END_TYPE 

Ovanstående skulle definiera en struktur med 2 variabler, definierade i den vanliga metoden för:;

Dessa definitioner skulle sedan vara tillgängliga genom den definierade strukturen, med hjälp av variabelnamnet som definieras som en struktur och sedan variabeln inom strukturen

.

Definiera och använda DUT: er

 TYP Termostat: STRUCT Current_Temp: REAL; Setpoint_Temp: REAL; END_STRUCT END_TYPE 

Ovanstående kod skulle definiera en DUT som heter termostat, koden ska placeras i ett DUT- objekt under applikationsobjektet .

När DUT har konfigurerats som ovan kan du definiera en variabel som strukturtyp var som helst i din applikation

 Var_Global Controller 1: Termostat: = (Setpoint_Temp: = 21); END_VAR 

I exemplet ovan definieras Controller1 som en termostat (DUT gjort tidigare). Det definieras i ett globalt variabelt utrymme, så tillgängligt var som helst i programmet.

Data kan läsas och skrivas från Controller1 med följande som variabelnamn

 Controller1.Current_Temp: = 0; 

Detta skulle ställa Controller1.Current_Temp till 0 (med strukturerad text). Denna variabel kan sedan läsas någon annanstans med samma variabel Controller1.Current_Temp

CoDeSys-guide

Låter bygga exemplet ovan i CoDeSys och kör det med simulatorn. Detta ger ett fungerande exempel på en struktur som sedan kan byggas ut i framtiden.

Steg 1 - Skapa DUT-objektet

För det första, se till att du använder ett projekt som har en enhet läggs till och ett applikationsobjekt.

  1. Högerklicka på applikationen och välj Lägg till objekt och sedan DUT ...
  2. Namnge DUT " termostat " och välj alternativet STRUKTUR
  3. Öppna den nya termostaten DUT

Din navigationsfönster bör se ut enligt följande

Steg 2 - Definiera strukturen

Skriv den följande koden i den öppna termostaten DUT

 TYPE Termostat: STRUCT Status_CurrentTemperature: REAL; Control_TargetTemperature: REAL; Control_Enabled: BOOL; Control_HeaterOutput: BOOL; Param_Deadband: REAL; END_STRUCT END_TYPE 

Det finns några fler variabler än tidigare exempel, men de kommer att användas senare i koden.

Nu är strukturen definierad att vi kan gå vidare och börja använda den

Steg 3 - Använda strukturen

Vi måste definiera en variabel som är termostat- typen. Vi gör det i POU där termostatstrukturen behövs.

  1. Skapa en ny POU med följande konfiguration:, Namn : Uppvärmning, Typ : Program, Språk : Stege
  2. Mellan Var och Var_End lägg till Controller1: Termostat;
 PROGRAM Uppvärmning VAR Controller1: Termostat; END_VAR 

Skapa följande stege-logik med hjälp av variabeln Controller1 som just har definierats

För dem på mobil eller inte kan se bilden är här en textbasversion att följa

Kontakt: Controller1.Control_Enabled

Ruta: LT (Less Than - Parameter1 = Controller1.Status_CurrentTemperature, Parameter 2 = Controller1.Control_SetpointTemperature - Controller1.Param_Deadband)

Spole: Controller1.Control_HeaterOutput

Lägg till en uppgiftskonfiguration till din applikation och i Uppgifter lägg till POU- uppvärmningen .

Bygg din applikation och se till att du inte har några fel. Om du har fel, gå tillbaka och följ de föregående stegen igen och se var du har gått fel.

Steg 4 - Initiera variabel

Som med alla variabler bör initialvärden anges om de används i en kontrollprocess.

Ändra Controller1: Termostat i deklarationen av Controller1 . till det följande

 Controller1: Termostat: = (Control_TargetTemperature: = 21, Param_Deadband: = 0.5); 

Detta kommer att säkerställa att Controller1.Param_DeadBand & Controller1.Control_TargetTemperature initieras med värden när din applikation startar första gången

Steg 5 - Simulera

Nu är vi redo att köra applikationen och se till att allt fungerar som förväntat.

Logga in på PLC (genom att klicka på Online >> Logga in) Se till att du är i simuleringsläge . Ladda ner din applikation till den simulerade PLC.

Klicka på Start, du bör se bilden nedan

  • Control_Enabled = Falsk
  • Status_CurrentTemperature = False
  • Control_TargetTemperature = 21
  • Param_DeadBand = 0, 5
  • Control.HeaterOutput = False

Dubbelklicka på Controller1.Current_Temperature och ändra värdet till 15. Tryck på Ctrl + F7 för att ladda ner det nya värdet till PLC.

Dubbelklicka på Controller1.Control_Enable och ladda ner ett SANT-värde till PLC

Observera att Controller1.Control_HeaterOutput- spolen nu är aktiv.

I deklarationsfönstret (ovanför stegen logik) finns det nu en tabell med 1 post - Controller1 . Expandera variabeln och visa strukturvariablerna i Controller1 . Dessa variabler är de variabler som används i stege-logiken, du kan också manipulera dem här.

Utöka DUT-användning

DUT: er kan vara extremt komplicerade, men också extremt användbara. För att bättre kunna använda dem kan du överväga följande

  • Använd DUT: er med funktionsblock och skicka en hel struktur som ingång till funktionsblocket istället för många enskilda variabler
  • Bygg DUT: er för vanliga instrument som används, till exempel tryck, temperatur etc. Du kan packa dessa i ett bibliotek och använda dem om och om igen
  • DUT: er kan också definieras som Arrays: Controller: Array [0..99] av termostat skapar 100 termostatstrukturer, tillgängliga via Controller [X], där X = nummerkontrollen du vill komma åt variabler av.