6 Programmastructuren 6.1 Lineair programmeren Een lineair programma heeft een eenvoudige structuur. Alle instructies worden geprogrammeerd in. Deze bouwsteen wordt continu doorlopen waarbij het gehele lineaire programma uitgevoerd wordt in iedere CPU cyclus. 1 klepsturing Pomp Voordelen: Dit is de meest eenvoudige manier van programmeren en komt overeen met modellen voor vast bedrade relaiscircuits. Nadelen: Omdat alle instructies in één bouwsteen wordt opgeslagen is deze programmeermethode enkel geschikt voor kleine programma s die door 1 persoon worden geschreven. Aangezien alle instructies in 1 bouwsteen staan worden alle instructies iedere cyclus uitgevoerd, ook deze die niet gebruikt worden. Deze methode maakt geen efficiënt gebruik van de CPU. Als er identieke programmadelen zijn, bv 5 identieke motoren starten, moeten deze programmadelen steeds opnieuw worden ingevoerd. Dit maakt het programma lang en onoverzichtelijk. Bij het testen van het programma zijn we genoodzaakt het hele programma in 1 keer te testen. Het is niet mogelijk om delen van het programma afzonderlijk te testen. KHLim dep IWT MeRa 25/141
6.2 gepartitioneerd programmeren Gepartitioneerd programmeren is het programma opsplitsen in partities of bouwstenen waarbij in iedere bouwsteen de logica geprogrammeerd is voor een bepaalde groep van taken. De instructies die in geprogrammeerd zijn, bepalen de uitvoering van de opgedeelde bouwstenen. Deze opgedeelde bouwstenen kunnen FC s of FB s zijn. Deze bouwstenen fungeren dan als subroutine in het cyclische programma. Als de organisatiebouwsteen een andere bouwsteen oproep, wordt de opgeroepen bouwsteen doorlopen tot op het einde waarna het systeem terugkeert naar de plaats in het programma waar de bouwsteen werd opgeroepen (in ) FC2 FC2 FC3 FC3 Voordelen: Aangezien iedere taak in een aparte bouwsteen wordt geprogrammeerd is het mogelijk om met meerdere mensen aan 1 programma te werken. Ook is het testen van het programma eenvoudiger aangezien we bouwsteen per bouwsteen kunnen testen zodat fouten makkelijker te lokaliseren zijn. Aangezien we in de bouwstenen oproepen kunnen we de bouwstenen alleen dan oproepen als dit noodzakelijk is. Hierdoor kunnen we de CPU efficiënter benutten. Bv meten van de temperatuur in een traag proces dient slechts 1 maal per minuut te gebeuren. Nadelen: Als er identieke programmadelen zijn, bv 5 identieke motoren starten, moeten deze programmadelen nog steeds opnieuw worden ingevoerd met de bijhorende in- en uitgangen. Dit maakt het programma lang. KHLim dep IWT MeRa 26/141
Voorbeeld in STEP7 Oproepen van een FC KHLim dep IWT MeRa 27/141
6.3 gestructureerd programmeren In een gestructureerd programma gaan we algemene oplossingen zoeken die voor meerdere taken gebruikt kunnen worden. Door specifieke informatie aan deze bouwstenen toe te voegen in de vorm van parameters, is het gestructureerde programma in staat om de algemene bouwstenen meerdere malen in te zetten in hetzelfde programma. Dit doen we door bij iedere oproep andere actuele parameters toe te kennen. Bv We maken 1 bouwsteen voor het starten en stoppen van een motor. De adressen van startknop, stopknop en thermiek vervangen we door formele parameters. Voor iedere motor in de installatie roepen we nu deze bouwsteen 1 maal op, waarbij we aan de formele parameters de bij deze motor horende in- en uitgangsadressen toekennen. Parameters motor 1 Parameters motor 2 Parameters motor 3 Voordelen: We kunnen algemeen inzetbare bouwstenen aanmaken die we in een library opslaan en in meerdere projecten kunnen inzetten. Dit bespaart veel programmeerwerk. KHLim dep IWT MeRa 28/141
Voorbeeld in STEP7 Aanmaken van geparametreerde FC Formele parameters van FC2 Het programma wordt geschreven met de formele parameters i.pl.v. met adressen van in- en uitgangen Oproepen geparametreerde FC Bij het oproepen van de bouwsteen gaan we actuele parameters toekennen aan de formele parameters. Deze actuele parameter is de gewenste in- / uitgang / merker / timer / counter Bij iedere oproep van de bouwsteen kunnen we andere parameters toekennen KHLim dep IWT MeRa 29/141