Twincat: PLC Control



Relevanta dokument
Programmerbar logik. Kapitel 4

Klassdeklaration. Metoddeklaration. Parameteröverföring

Exempel på ett litet Ada-program

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Föreläsning 3: Booleans, if, switch

Variabler och konstanter

Föreläsning 6: Introduktion av listor

SMD 134 Objektorienterad programmering

Imperativ programmering. Föreläsning 2

Programmering A. Johan Eliasson

Programmeringsteknik med C och Matlab

Att bekanta dig med NetBeans programmeringsmiljö och skriva några enkla program med programmeringsspråket Java.

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

Tentamen i. för D1 m fl, även distanskursen. fredag 13 januari 2012

Programmering A C# VT Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Tentamen OOP

Grundläggande programmering med C# 7,5 högskolepoäng

Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 Mikrodatorteknik

Översikt över Visual Basic

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Outline. For. I istället för att följa det normala ordningen, man ändra den. I i Java får man inte göra hopp hur som helst

Snabbguide Visma Compact API Version 5.1 Copyright Visma Spcs AB Visma Compact API

Styrteknik 4.5/7.5 hp distans: Programmering med IEC PLC1B:1. Styrteknik

GRUNDER I VHDL. Innehåll. Komponentmodell Kodmodell Entity Architecture Identifierare och objekt Operationer för jämförelse

Föreläsning 4. Val, boolska värden, läsbarhet, osv

Grunderna i stegkodsprogrammering

Logik och kontrollstrukturer

TDDC77 Objektorienterad Programmering

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Introduktion till PHP

Användarhandledning Version 1.2

Föreläsning 1 & 2 INTRODUKTION

Objektorienterad programmering i Java

F4. programmeringsteknik och Matlab

Lathund. C för inbyggda system

TDDI02. Programmeringsprojekt. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

2.4. Teckensträngar och logiska uttryck

DUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

TDIU01 - Programmering i C++, grundkurs

Föreläsning 4: Poster

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

Styrteknik : Funktioner och funktionsblock

PROGRAMMERING 2 GRUNDLÄGGANDE SEMANTIK 4

Design av interaktiv multimedia. Läs i förväg om det som övningarna kommer att beröra. Träna hemma både före och efter övningarna.

Hjälpmedel för kompilatorkonstruktion, DVB004

Parameteröverföring. Exempel. Exempel. Metodkropp

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Programmering för språkteknologer II, HT2014. Rum

Inledande programmering med C# (1DV402) 27+15=42 1 (22)

Instuderingsfrågor, del B

TENTAMEN TDDB53. Programmering i Ada för MI (provkod TEN2) den 7 april 2010 kl Institutionen för datavetenskap, IDA Olle Willén mars 2010

Beräkningsvetenskap föreläsning 2

OOP Objekt-orienterad programmering

DD1361 Programmeringsparadigm. Carina Edlund

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

Visual Basic, en snabbgenomgång

Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc

Remanent minneshantering TC2

Introduktion till programmering SMD180. Föreläsning 2: Variabler, uttryck och satser

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Föreläsning 7. Nyckelord I Java. Uttryck. Uttryck, Operatorer Och Kontrollflöden

Kurslitteraturen. C-nivå Villkorssatser [kap 8] if & elif & else and & or Loopar [kap 9] for

Typsystem. Typsystem... Typsystem... Typsystem... 2 *

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Typsystem. DA2001 (Föreläsning 23) Datalogi 1 Hösten / 19

KOMPLETTERANDE HEMTENTAMEN TDDB53

For-sats/slinga. Notis

Java, klasser, objekt (Skansholm: Kapitel 2)

Sätt att skriva ut binärträd

"if"-satsen. Inledande programmering med C# (1DV402)

Att använda pekare i. C-kod

Algoritmanalys. Genomsnittligen behövs n/2 jämförelser vilket är proportionellt mot n, vi säger att vi har en O(n) algoritm.

Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT Lars Larsson Algoritmer 1

1 Funktioner och procedurell abstraktion

Skizz till en enkel databas

Objektorienterad programmering D2

Lösningar till tentauppgifterna sätts ut på kurssidan på nätet idag kl 19. Omtentamen i Programmering C, 5p, fristående, kväll,

Övningar Dag 2 En första klass

Repetition C-programmering

Backcode. Jonathan Crusoe TDP019 Projekt: Datorspråk Linköpings universitet

TDDC77 Objektorienterad Programmering

Introduktion C-programmering

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten 2010

Institutionen för datavetenskap 2014/15

Tentamen, EDAA20/EDA501 Programmering

VHDL och laborationer i digitalteknik

Tentamen Programmeringsteknik II och NV2 (alla varianter) Skriv bara på framsidan av varje papper.

Introduktion till Jasmine 1.2 ODQL

DSV A Procedurell programmering 5 poäng Tentamen

IHC Win Programmering

Programmering C: Tentamen of 5 Prioritet och associativitet hos operatorerna i C De viktigaste operatorerna: Prioritet Kategori Operator

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

Statistikens grunder 1 och 2, GN, 15 hp, deltid, kvällskurs

Tentamen i Programmering grundkurs och Programmering C

Komponentvisa operationer,.-notation Multiplikation (*), division (/) och upphöj till (ˆ) av vektorer följer vanliga vektoralgebraiska

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det rik

Transkript:

Dokument Förklaring Dat. Revision KI-221-003-003 Kom igång med trukturerad Text 080402 1.0 Twincat: PLC Control Kom igång med Strukturerad Text (ST) programmering 1. Kod exempel. a. Exemplen som demonstreras visas i kursiv text. b. Nyckelord visas i Blå text c. Kommentarer för kod visas med grön text. 2. Säkerhet och krav. a. Ansvarig person skall se till att applikationen eller användandet av de beskrivna produkterna följer de brukliga kraven för säkerhet, inkluderat relevanta lagar, förordningar, riktlinjer och standarder. b. Denna dokumentation är endast avsedd att användas av utbildade specialister i Automatisering vilka är familjära med applicerbara nationella standarder. 1

Bakgrund och generell beskrivning av Strukturerad text (ST) Programmeringsspråket strukturerad text består av instruktioner som påminner mycket om högnivåstråket tex PASCAL eller C. ST programmering är en del av IEC 61131 standarden. Ett litet program för att räkna upp en variabel till 10 kan se ut såhär. IF isumma <= 9 THEN isumma:=isumma + 1; Anrops prioritet I ST finns det olika operander man kan använda för sina villkor. I tabellen nedan visas de i prioritetsordning. Operand Symbol Prioritet Inom paranteser (uttryck) Högsta prioritet Funktionsanrop Funktionsnamn(parametrar) Exponent EXPT Negering NOT Multiplikation Division Modulo * / MOD Summera Subtrahera + - Jämförelser <,>,<=,>= Lika med Ej lika med = <> Boolean AND AND Boolean XOR XOR Boolean OR OR Lägsta prioritet 2

Instruktioner. I ST finns ett antal instruktioner; tex IF THEN, WHILE DO, CASE OF. Dessa finns listade i tabellen nedan med exempel. Instruktion Exempel Tilldelning A:=B; CV:=CV+1; C:=SIN(X); Anropa funktionsblock MyTimer(IN:=TRUE, PT:=T#1s); A:=MyTimer.Q; RETURN RETURN IF IF D<0.0 THEN C:=A; ELSEIF D=0.0 THEN C:=B; ELSE C:=D CASE CASE i OF 1: BOOL1:=TRUE; 2: BOOL2:=TRUE; ELSE BOOL1:=FALSE; BOOL2:=FALSE; END_CASE FOR FOR I:=1 TO 100 BY 2 DO IF ARR[i]=70 THEN J:=I; EXIT END_FOR WHILE WHILE J<= 100 AND ARR[J] <> 70 DO J:=J+2; END_WHILE REPEAT REPEAT J:=J+2; UNTIL J= 101 OR ARR[J]= 70 END_REPEAT EXIT EXIT; Tom instruktion ; 3

Lite mer om tilldelningsoperanden (:=). När man ska tilldela en variabel ett värde använder man operanden tilldelning (:=). På den vänstra sidan av tilldelningsoperanden har man en variabel som får värdet av uttrycket på höger sida. Exempel: Var1 := Var2 * 10; Efter exekvering av denna rad kommer Var1 har ett värde som är tio gånger så stort som Var2. Lite mer om anrop av fuktionsblock (FB) I strukturerad text anropar man funktionblock genom att skriva namnet på funktionsblockets instansnamn och tilldela funktionsblockets in parametrar värden inom parentesen. I följande exempel anropas en timer, mytimer, med värden för in parametrarna IN och PT. Den returnerade variabeln Q tilldelas variabeln A. Den returnerade variabeln adresseras genom att man använder namnet på funktionsblockets instans följt av en punkt och variabelns namn. mytimer(in:=true, PT:=T#1s, Q=>, ET=> ); A:=myTimer.Q; T#1s eller T#1000ms är så man skriver en sekund i TwinCAT PLC Control. Exekvering med exempel Skillnaden mellan strukturerad text och liknande högnivåspråk är att programmet skrivet i strukturerad text kommer exekveras cykliskt hela tiden uppifrån och ner till skillnad från högnivåspråket som mer eller mindre kommer att exekveras en gång per händelse uppifrån och ner. Detta ställer lite andra krav på tankegången och programmeringen. 4

Följande exempel startar en timer mytimer, när variabeln bstart går hög och bdone är låg. När timern har gått ut sätts variabeln bdone. (*Timern startar med variabeln bstart*) mytimer(in:=bstart, PT:=T#1s, Q=>, ET=> ); (*Om timerns tid löpt ut så sätt bdone till "ett"*) IF mytimer.q THEN bdone:=true; Detta exempel fungerar bra, fast bara en gång! Problematiken är att bdone aldrig blir låg. Det vill vi ju naturligtvis uppnå i detta exempel. Lösningen på detta är att använda t.ex. en ELSE sats. (*Timern startar med variabeln bstart*) mytimer(in:=bstart, PT:=T#1s, Q=>, ET=> ); (*Om timerns tid löpt ut så sätt bdone till "ett" annars till "noll"*) IF mytimer.q THEN bdone:=true; ELSE bdone:=false; 5

Övrigt. I strukturerad text så är det viktigt att skapa sina instansnamn av tex funktionsblock innan man använder dessa I sin kod. Gör man detta innan kodningen börjar så underlättar det en hel del vid programmeringen och misstag undviks. Några exempel på instansiering av FB och deklaration av variabler. PROGRAM MAIN (*Deklarationsdelen för variabler i PLC Control*) VAR fbtimer:ton; (*Instansnamn för en timer*) fbcounter:ctu; (*Instansnamn för en räknare*) fbtrig_r:r_trig; (*Instansnamn för flank trigger*) fbax1_mc_power:mc_power; (*Instansnamn för et fb till motioncontrol*) btest:bool; (*Variabel av typen Bool*) ivalue:int; (*Variabel av typen Integer*) END_VAR 6