Styrteknik : Funktioner och funktionsblock PLC2B:1 Variabler och datatyper Allmänt om funktioner och funktionsblock Programmering av funktioner Programmering av funktionsblock
Styrteknik : Funktioner och funktionsblock PLC2B:2 Variabler i GX IEC Developer Global and Local Variables Variables contain the values of inputs, outputs or internal memory locations in the PLC. There are two types of variables: Global Variables Local Variables Global variables are defined for the entire project. They are accessible from any POU body, action or transition, and they make it possible to exchange data between all the sub-programs that go to make up the project. Local variables (VAR) are only accessible within the one specific program organisation unit (POU) in which they are declared. Thus, they cannot be used for exchanging data between POUs.
Styrteknik : Funktioner och funktionsblock PLC2B:3 Globala och lokala variabler OBS adressen är inte definierad i den lokala variabellistan.
Styrteknik : Funktioner och funktionsblock PLC2B:4 Variable declarations Each variable declaration has the following elements: Class, Identifier, Data type, Initial value (automatically), Comment (optional), Remark (optional).
Styrteknik : Funktioner och funktionsblock PLC2B:5 Varje variabel har en Class och en Type. Type visar vilken typ av data som variabeln innehåller. Class indikerar vad man göra med variabeln. Observera det finns tre olika typer av POU:er PRG = PROGRAM FUN = FUNCTION FB = FUNCTION BLOCK
Styrteknik : Funktioner och funktionsblock PLC2B:6 Variabelnamn och adresser Identifiers and Absolute Addresses Each variable is given a symbolic address, i.e. a name. This is referred to as the identifier; it consists of a string of alphanumeric characters and underline characters. The identifier must always begin with a letter or an underline character. Spaces and mathematical operatorcharacters (e.g. +, -, *) are not permitted. Examples of identifiers: FAULT ZEROSIG LIM_SW_5 When global variables are declared absolute addresses can be assigned that reference the memory location of the variable in the CPU or a physical input or output. When local variables are declared in the header of the POU they are automatically assigned a suitable memory location in the CPU.
Styrteknik : Funktioner och funktionsblock PLC2B:7 When you define global variables you must specify the hardware addresses for each individual variable. The address declarations are shown in the table below. X Bit device W Word device D Double word device Andra typer av device i FX-serien: labels (P), Step flags (S)
Styrteknik : Funktioner och funktionsblock PLC2B:8 Absoluta adresser för: räknare, Counter tidskretsar ,Timer Se kap 6.10 Ref manual Exempel räknaren C20: CC20 = Räknarens ”identitet”, räknaren som ska används, 1 Bit CS20 = Status på utgången, 1 Bit CN20 = Aktuellt räknarvärde, 1 Word eller Double Word? Motsvarande beteckningar för tidskretsarna. Exempel kommer på senare föreläsning.
Styrteknik : Funktioner och funktionsblock PLC2B:9 Från menykommadot: Extras/Options
Styrteknik : Funktioner och funktionsblock PLC2B:10 Datatyperna INT och DINT använder 2-komplement-representation
Styrteknik : Funktioner och funktionsblock PLC2B:11 Allmänt om funktioner och funktionsblock Genom att använda funktioner och funktionsblock förenklas programmeringen och det blir enklare att få ett strukturerat och lättförståeligt PLC-program. Skriv egna funktioner (FUN) och egna funktionsblock (FB) för att strukturera programmet. Använd editor IL, LD, ST eller FBD för att skriva programkoden. Använd färdiga funktioner och funktionsblock för Timer, Counter etc. Funktioner och Funktionsblock är enklast att använda med någon av de grafiska editorerna LD eller FBD.
Styrteknik : Funktioner och funktionsblock PLC2B:12 Exempel 1: Funktion för att styra ljuset i ett rum med hjälp av 3 strömbrytare. Se PLC 1B:22. Lösning med LD: Gränssnitt med PLC:n FX1S
Styrteknik : Funktioner och funktionsblock PLC2B:13 Skapa en ny POU som består av en funktion Definition av POU:ns namn. POU:n är en FUN (Function). Funktionen ska beskrivas med editorn Function Block Diagram (FBD). Funktionen ska ge ett resultat av datatypen BOOL.
Styrteknik : Funktioner och funktionsblock PLC2B:14 Skriv funktionen Definiera insignalerna lokalt Definition av Insignalen A Den lokala headern med def för A,B och C
Styrteknik : Funktioner och funktionsblock PLC2B:15 Funktionen testas med en program POU Under Function Block finns den nya symbolen för three_sw Signalerna ansluts till laborationsplattan
Styrteknik : Funktioner och funktionsblock PLC2B:16 Task my_main anropar POU:n test_three_sw POU test_three_sw anropar POU:n three_sw POU three_sw Programmet kräver 33 programsteg (program steps)
Styrteknik : Funktioner och funktionsblock PLC2B:17 Melsec-koden i PLC:n (28 programsteg ~33?) M8000 Run-indikering CALL P_30 Anrop av subrutinen P_30 Skriv ett FBD-diagram för subrutinen!
Styrteknik : Funktioner och funktionsblock PLC2B:18 Program med två funktioner Programmet använder funktionen three_sw 2 gånger. Samma subrutin används . Programmet kräver 45 programsteg, jfr föregående blad. Att använda funktioner innebär: Programmet blir enklare att förstå, strukturerat. Funktionen har ingen minnesfunktion => alltid samma utdata för ett visst indata. Antalet programsteg ökar inte så snabbt .
Styrteknik : Funktioner och funktionsblock PLC2B:19 Exempel 2: I en luftsluss finns en begränsad mängd syre som ska räcka till de personerna som vistas i luftslussen. Skriv en funktion MUL_MAX som ger en signal när syret är slut! Funktionen ska ha följande ingångar: en_in BOOL Enableingång antal_inne INT Personer inne i luftslussen antal_sec INT Antal sekunder med personer i luftslussen maxvarde INT Maxvärde för produkten av antal_inne och antal_sec Funktionen ska ge en utsignal av typen BOOL när syret är slut. Tips: Test av funktionen, förslag En lösning kommer att visas nästa vecka, prova innan!
Styrteknik : Funktioner och funktionsblock PLC2B:20 Exempel 3: Skriv en funktion ROOM_FULL som kontrollerar att det inte finns för många personer i maskinprogrammets källarkrypin på högskolan. Funktionen ska ha följande ingångar: RST BOOL Nollställer antalpersonerräknaren CNT_D BOOL Minskar antalpersonerräknaren med 1 CNT_U BOOL Ökar antalpersonerräknaren med 1 MAX_NR INT Max tillåtet antal personer i lokalen Funktionen ska ge en utsignal av typen BOOL när lokalen är full. Lokalen får inte innehålla negativa studenter. Funktionens Header med Insignaler VAR_INPUT Interna variabler VAR Kan exemplet lösas med en funktion?? Varför inte? Program som använder funktionen
Styrteknik : Funktioner och funktionsblock PLC2B:21 Funktionen ROOM_FULL, förslag till lösning. Hela programmet kräver 53 programsteg.
Styrteknik : Funktioner och funktionsblock PLC2B:22 Program med funktionen ROOM_FULL. Programmet kräver 53 programsteg. Subrutinen P_30 använder registret D129. Om programmet använder flera funktioner av typen ROOM_FULL kommer innehållet i D129 att förstöras!!! Exemplet måste lösas med ett Function Block . DEN HÄR LÖSNINGEN ÄR FEL!
Styrteknik : Funktioner och funktionsblock PLC2B:23 Ny lösning med ett funktionsblock. Program med Function Block ROOM_FULL_DEMO. Programmet kräver 53 programsteg, dvs exakt samma som i föregående bild. Subrutinen P_30 använder registret D129. För varje ny ”instansiering” av funktions-blocket skapas en ny subrutin. I de nya instanserna används andra register. Vilka skillnader finns för denna lösning jämfört med den föregående? SANNOLIKT RIKTIG LÖSNING!
Styrteknik : Funktioner och funktionsblock PLC2B:24 Program med två funktionsblock av typen ROOM_FULL_DEMO. Programmet kräver 103 programsteg. Varje instansiering ger ny programkod och ny subrutin.
Styrteknik : Funktioner och funktionsblock PLC2B:25 För ett FUNKTIONSBLOCK (FB) gäller: Godtyckligt antal ingångar Godtyckligt antal utgångar Funktionsblocket måste instansieras med ett eget namn Funktionsblock kan innehålla andra funktionsblock och funktioner. För ett FUNKTIONER (FUN) gäller: Godtyckligt antal ingångar 1 utgång med samma namn som funktionen Funktionsblock kan innehålla andra funktioner.
Styrteknik : Funktioner och funktionsblock PLC2B:26 Exempel 4: Skriv ett funktionsblock room_full_fb som kontrollerar att det inte finns för många personer i maskinprogrammets källarkrypin på högskolan. Funktionsblocket ska följa IEC-standarden. Funktionsblocket ska ha följande ingångar: RST BOOL Nollställer antalpersonerräknaren CNT_D BOOL Minskar antalpersonerräknaren med 1 CNT_U BOOL Ökar antalpersonerräknaren med 1 MAX_NR INT Max tillåtet antal personer i lokalen Funktionsblocket ska ha följande utgångar: ROOM_FULL BOOL Hög nivå när lokalen är full CNT_VALUE INT Antal personer i lokalen
Styrteknik : Funktioner och funktionsblock PLC2B:27 I exemplet kan räknaren CTUD (FB) användas M7 ettställs när räknarvärdet (CV) är >=3. M27 ettställs när räknarvärdet <=0. Räknaren räknar uppåt vid positiv flank på X0 Räknaren räknar nedåt på positiv flank på X1. X4 nollställer räknarvärdet. X5 läser in PV som räknarvärde.
Styrteknik : Funktioner och funktionsblock PLC2B:28 POU:n som använder funktionsblocket room_full_fb