Citat:
Ursprungligen postat av HappyEndings
Jag är "vanlig" programmerare med lång erfarenhet inom ganska många olika språk.
Hur pass mkt skiljar sig PLC från vanlig programmering? De paradigmer jag är bekant med är imperativ, objektorienterad och funktionell, jag gissar att PLC är något helt annat?
Precis som WeAreMotorhead har svarat och du redan själv har gissat så är det något helt annat.
PLC-programmering kan göras på flera olika sätt (olika språk) med lite olika egenskaper, de är på ett sätt ett mellanting mellan funktionell och imperativ.
Två av språken (FBD (function block diagram) och LD (ladder diagram)) är grafiska språk som simulerar hådrvara på ett sätt som har stora likheter med funktionell programmering, men givetvis finns det även variabler (i PLC-sammanhang kallade minnen (bool) eller register (heltal/flyttal)). Dessa simulerar i stort sett ett nätverk av logiska signaler såsom de skulle kunna byggas med reläer eller logikkretsar. Tankemässigt körs alla dessa deluttryck helt parallellt som om de skulle byggts med hårdvara, i dagens PLC körs dock de olika uttrycken efter varandra och detta kan används för att beräkna värden i flera steg. Skillnaden mellan FBD och LD är i princip att FBD simulerar ett nät av logiska funktioner så som de representeras med logikkretsar medan LD har sina rötter i reläsystem och simulerar dessa. Det är väligt små skillnader i vad som går att göra med dessa båda språken, det handlar mer om hur man grafiskt representerar programmet.
IL (instruction list) är i princip PLC-programmeringens assember. Traditionellt så kan man göra samma saker med IL som med FBD och LD, men det representeras med instruktioner i text.
ST (structured text) liknar mer de högnivåspråk du antagligen känner till väl och följer ganska väl imperativ programmering. Syntaxmässigt är det relativt likt pascal. Många system har inget eller dåligt stöd för ST.
SFC (sequential function chart) är ett annat grafiskt språk som fokuserar på sekventiella problem. Det är lite som att programmera genom att rita ett flödeschema, men SFC har helt andra regler för förgreningar. Här finns exempelvis stöd för alternativa och parallella grenar, men de måste gå ihop igen. Många system har inget eller dåligt stöd för SFC.
I standarden IEC61131-3 har man försökt få till ett sätt att programmera alla PLC från alla leverantörer, men alla leverantörer bygger på med sina egna funktioner och gör allt för att låsa in användaren. Så länge man håller sig till standardfunktioner så ska det i teorin gå att flytta programmet till ett helt annat system från en helt annan leverantör, men det är ändå det som står i standarden som är att rekommendera att lära sig i första hand.
I många moderna system finns det även möjlighet att göra nya funktioner, ungefär som att göra en ny typ av krets att använda i ett digitalt nät av logikkretsar. Dessa kretsar kan ha egna interna minnen/register om så önskas.
Alla leverantörer har äldre varianter av programmeringsspråken. FBD och LD ser relativt lika ut oberoende av leverantör, IL varierar nästan lika mycket som assembler mellan olika processorfamiljer.
Citat:
Ursprungligen postat av HappyEndings
Hur kommer jag igång och lär mig?
Jag jobbar med att ta fram datorbaserade utbildningsmaterial inom bland annat detta området, du kan skicka PM till mig om du är intresserad av mer information.
Citat:
Ursprungligen postat av HappyEndings
Kommer det kräva ngra stora investeringar?
Förslag på roliga projekt som jag kan motivera mig själv med?
Du kan lära dig det mesta helt datorbaserat inklusive simulerade modeller att styra, men det är förstås roligt med ett riktigt PLC och något att styra. De minsta systemen kan fås nya för någon eller ett par tusenlappar och om du till att börja med nöjer dig med att styra lite lampor och använder några strömbrytare som ingångar så kostar förstås inte detta så mycket. Vad ett kommersiellt program för att programmera PLC:t kostar har jag dålig koll på men det kan vara en stor del av kostnaden. Uppåt finns det förstås ingen gräns...