Plceditorn


Plceditorn används för att skapa plcprogram mha ett grafiskt programmeringsspråk.

Programmeringen sker med funktionsblock som läggs i ett horisontellt nät av noder och
förbindningar från vänster till höger. Signaler eller attribut hämtas upp på den vänstra
sidan av nätet, och värdena skickas vidare med förbindningar från utgångs-pinnar till
ingångs-pinnar på funktionsblocken. Funktionsblocken opererar på värdena och på nätets
högra sida, lagras värdena i signaler eller attribut.

Grafcet sekvenser består av ett vertikalt nät av noder och förbindningar. Ett tillstånd
förflyttas mellan olika steg i sekvensen via förbindningarna. Grafcet och funktionsblock
kan samverka med varandra och kombineras till ett enda nät.

Start

Plceditorn startas från konfiguratören. Välj ut ett objekt av klassen PlcPgm och aktivera
'Functions/Open Program' (Ctrl/L) i menyn, eller aktivera 'Open Program' i popupmenyn för
PlcPgm objektet. Konfiguratören ska inte vara i editeringsmod.

Arbetsmod

Plceditorn kan vara i fyra olika moder: View, Edit, Trace och Simulate. Moden väljs under
'Mode' i menyn.

View
View innebär att plceditorn är i visningsmod. Man kan inte skapa eller modifiera objekt.
Många av menyalternativen som har med editering att göra är dimmade.

Edit
Om man har editeringsprivileger kan man gå över i editeringsmod. Här kan man skapa och
modifiera objekt.

Trace och Simulate
Om man vill felsöka programmet går man in i tracemode. Detta kräver att proview's runtime
miljö är startad på utvecklingsstationen. Simulate fungerar som Trace, man man kan dessutom
sätta värden på signaler.

Felsökning görs numera snabbare och enklare från Xtt. PlcTrace funktionen i Xtt är att
föredra framför Trace-funktionen i plceditorn.

Editering

Plc editorn består av

- en arbetsarea.
- två stycken paletter, en för funktions objekt och en för förbindningar (endast en palett
i taget är synlig).
- ett navigationsfönster, från vilket arbetsarean kan skrollas och zoomas.

Plc editorn


Paletter

Objektspaletten
När man startar plceditorn, visas paletten för funktionsobjekt. När man skapar ett
funktionsobjekt i arbetsarean väljer man ut en klass i paletten.

Förbindningspaletten
När man skapar förbindningar mellan objekt, väljer editorn en lämplig typ av förbindning. Men
i vissa fall krävs att konstruktören påverkar valet av förbindningstyp. Detta görs i
förbindningspaletten som visas genom att 'View/Palette/Connection' aktiveras i menyn. Så
länge menyn är öppen, skapas alla nya kopplingar med den typ som är vald i paletten. När
paletten stängs genom att 'View/Palette/Object' eller 'View/Palette/Plant' aktiveras, väljer
editorn förbindningtypen igen.

Anläggningshierakin
Man kan visa anläggningshierakin genom att akivera 'View/Palette/Plant' i menyn. När man
kopplar funktionsobjekt t ex för att hämta signalvärden, till signaler, kan man här markera
den signal som ska hämtas. Man kan även välja ut signalen i konfiguratören, vilket i många
fall är ett smidigare alternativ.

Navigationsfönster

Längs ner till vänster finns en förminskad bild av plcprogrammet. Den del av arbetsarean
som visas i huvudfönstret är markerad med en rektangel. Genom att flytta på rektangeln (dra
med MB1) skrollar man i huvudfönstret. Man kan även zooma genom att dra med MB2.

Funktionsobjekt

Skapa objekt

För att kunna skapa objekt måste editorn vara i editeringsmod, genom att 'Mode/Edit'
aktiveras i menyn.

Ett objekt i skapas genom att man väljer ut en klass i paletten, och klickar med MB2
(mittenknappen) i arbetsarean.

Modifiera ett objekt

Ett objekt skapas med vissa defaultvärden. Det gäller även vilka in och utgångar som visas
i plceditorn, och som kan förbindas med andra objekt. Vill man ändra på något värde öppnas
objektseditorn för objektet. Objektseditorn öppnas genom att

- dubbelklicka på objektet.
- aktivera 'Open Object' från popupmenyn för objektet.
- välj ut objektet och aktivera 'Functions/Open Object' i menyn.

Från objektseditorn kan man mata in värden på olika attribut. Attributen för ett plc-objekt
är uppdelade i ingångs-attribut, interna attribut och utgångs-attribut.

Ingångar
Ingångs-attributens värden kan hämtas från ett annat funktionsobjekt via en förbindning.
Attributet visas i funktionsobjektet som en ingångspinne. I vissa fall används inte en
ingång, ett and-objekt har t ex 8 stycken ingångar men ofta används inte mer än två av dessa.
Detta åstadkommer man genom med hjälp av 'Used' checkboxen i objektseditorn. Om 'Used' är
ifylld, visas attributet som en ingångspinne, annars inte.

En del ingångsattribut, oftast av analog typ, kan datasättas i objektseditorn. Om 'Used' inte
är markerat för attributet används det datasatta värdet, om 'Used' däremot är markerat,
hämtas värdet från den utgång som attributet är förbundet med. Så här fungerar t ex
gränsvärdena 'Min' och 'Max' i ett Limit objekt. Man kan välja om värdet ska hämtas från ett
annat funktionsobjekt, eller om det ska datasättas. Datasättningen i objekteditorn fungerar
i runtime som ett intialvärde, som sedan kan modifieras på olika sätt.

En del digitala ingångar kan inverteras. Detta görs genom att checkboxen för 'Inverted'
markeras i objektseditorn. I funktionsobjektet visas detta med en rund ring på ingångspinnen.

Interna attribut
Interna attribut kan innehålla konfigureringsvärden som datasätts i utvecklingsmiljön, eller
värden som beräknas i runtime. Den senare typen är ofta inte ändringsbar, och kanske inte
ens synlig i utvecklingsmiljön.

Utgångar
Värdet på ett utgångs-attribut skickas vidare till en ingång med en förbindning. Liksom
för ingångar, kan man välja om en utgångpinne ska visas eller ej, med 'Used' checkboxen
i objektseditorn.

Välja ut objekt

Objekt väljs ut på föjande sätt

- klicka med MB1 på objektet.
- Shift/Click MB1 adderar objektet till listan av utvalda objekt, eller raderar om objektet
redan är utvalt.
- genom att dra med MB1 kan man välja ut ett eller flera objekt. Objekt som har någon del
inom den markerade rektangeln, väljs ut.
- genom att trycka på Shift och dra med MB1 adderar man objekt som ligger inom den markerade
rektangeln till urvalslistan.

Utvalda objekt ritas med röd färg.

Flytta objekt

Enstaka objekt flyttas genom att man placerar markören på dem och drar med MB1.
Flera objekt flyttas genom att man markerar dem drar på ett av objekten med MB1.

Förbindningar

Skapa förbindningar

En utgångpinne och en ingångpinne kopplas på följande sätt

- placera markören på pinnen, eller på ett område i funktionsobjektet nära pinnen, och
tryck på MB2 (mittenknappen).
- Dra markören till den andra pinnen, eller till ett område i funktionsobjektet nära pinnen,
och släpp MB2.

En förbindning skapas nu mellan objekten.

Två ingångar kan kopplas ihop på samma sätt, men någon av de sammankopplade ingångarna,
måste vara kopplad till en utgång, och från denna utgång hämtas värdet till samtliga
sammankopplade ingångar.

Datatyper
De värden som förflyttas mellan olika objekt via förbindningarna kan vara digitala, analog,
heltals och sträng värden. In och utgångar som kopplas ihop måste vara av samma typ. Om de
är av olika typ måste någon form av objekt som konverterar mellan olika typer användas, t ex
AtoI eller ItoA. Dessa ligger under 'Signals/Conversion' i paletten.

Analoga- och heltalskopplingar markeras med lite tjockare linjer, digitala kopplingar med
lite tunnare.

Dessutom finns det en kopplingstyp för överföring av en objektreferens. Dessa ritas med
tjock streckad linje.

Referenskopplingar
Om editorn har svårt att hitta en väg för kopplingen mellan in och utgångspinnen, pga att
det ligger många objekt ivägen, eller för att de ligger på olika dokument, ritas kopplingen
som en referenskoppling. Referenskopplingar kan även ritas genom att aktivera
'View/Reference connections' i menyn.

Referens förbindning



Exekveringsordning
Förutom att överföra signalvärden, bestämmer förbindningar även exekveringsordningen mellan
olika funktionsobjekt. Om två objekt är sammankopplade via en utgång och en ingång, ska
normalt utgångs-objektet exekveras före ingångs-objektet. Men ibland gör man en återkoppling
i nätet och råkar ut för en exekverings loop. För att kunna bestämma exekveringsordingen
måste man då markera återkopplingen med en koppling av typen ConFeedbackDigital eller
ConFeedbackAnalog. Dessa väljs från kopplings-paletten som visas genom att
'View/Palette/Connection' aktiveras i menyn. Under mappen 'ConPlc' finns bl a feedback
kopplingarna. Dessa ritas med streckade linjer.

Feedback förbindning


Här hittar man även kopplingstypen 'ConExecuteOrder'. I vissa fall vill man styra
exekveringsordningen mellan två funktionsobjekt, trots att de inte är förbundna med varandra.
Man kan då dra en ConExecuteOrder mellan dem (mellan vilka in eller utgångar är egalt).
Kopplingen ska dras från det objekt som ska exekveras först, till det som ska exekveras sist.
I figuren nedan exekveras lagringen av attributet 'Temperaturer' före lagringen av attributet
'Tjocklek'.

Exekveringsordnings förbindning


Hämta och lagra signalvärden

Hämta signal och attributvärden

I funktionsblocksnätets vänstra del hämtas värden på signaler och attribut upp. Upphämtningen
av signaler sker med med objekten GetDi, GetDo, GetDv, GetIi etc. Upphämtning av
attributvärden sker med GetDp, GetIp, GetAp och GetSp. Dessa objekt återfinns under mappen
'Signals' i paletten. När man har skapat ett objekt av den här typen, måste man ange vilken
signal, eller vilket attribut som ska hämtas upp. Detta görs enklast genom att välja ut
signalen/attributet i konfiguratören, och klicka med Ctrl/dubbelclick MB1 på objektet.
Signalen/attributet visas då i objektet, och är det frågan om en insignal visas även
kanalen som signalen är kopplad till.

Det finns ett snabbare sätt att skapa de här objekten. Drar man ut en koppling från en
ingångspinne på ett funktionsobjekt, och släpper den på ett tomt område i arbetsarean skapas
ett generiskt Get objekt av den datatyp som ingången har, dvs en GetDgeneric, GetIgeneric,
GetAgeneric eller GetSgeneric. När man anger den signal eller attribut som Get objektet
ska hämta, omvandlas det generiska Get objektet till ett Get objekt som hämtar den typ av
signal eller attribut som är angivet. Väljer jag ut en Dv i konfiguratören, kommer ett
GetDgeneric att omvandlas till en GetDv när jag klickar med Ctrl/dubbelklick MB1 på den.

Lagra signal och attributvärden

I nätets högra del lagras de beräknade värdena i signaler eller attribut. Lagringen sker med
objekt av typen StoDo, StoDv, StoDp, StoIo etc. Metoden för att ange vilken signal eller
vilket attribut som värdet ska lagra i, är detsamma som för Get objekt, dvs genom att välja
ut signalen/attributet i konfiguratören och klicka med Ctrl/dubbelklick MB1 på objektet.

Om man drar ut en koppling från en utgångspinne på ett funktionsobjekt skapas generiska
Sto objekt, som omvandlas till Sto objekt av lämplig typ när de kopplas till en signal eller
ett attribut. Vill man lagra värden med Set eller Reset (t ex SetDo eller ResDo) kan man inte
använda den här metoden utan objektet hämtas från paletten.

Generiska Get och Sto objekt


Underfönster

Vissa objekt innehåller underfönster, t ex CSub, SubStep, Trans, Order. Att objeket har ett
underfönster markeras med att vissa delar av funktionsobjektet ritas med tjock grå linje.
Ett underfönster kan öppnas på olika sätt:
- genom att välja ut objektet och aktivera 'Functions/Subwindow' i menyn.
- genom att aktivera 'Subwindow' från popupmenyn för objektet.
- genom att klicka på objektet med Shift/dubbelklick MB1.

Man skapar ett nytt underfönster på följande sätt (det faktum att man endast kan ha en
editeringssession öppen åt gången, gör skapandet en smula omständligt)

- skapa objektet som ska innehålla underfönstret.
- spara.
- öppna underfönstret.
- lämna editeringsmod i huvudfönstret.
- gå in i editeringsmode i underfönstret.

Kontrollera exekveringsordningen

I vanliga fall ska man inte behöva fundera så mycket på i vilken ordning olika
funktionsobjekt i ett fönster exekverar. Genom att signaler I/O-kopieras, dvs varje tidbas
i plcprogrammet, tar en kopia av alla signalvärden före exekveringen som inte förändras
under exekveringen, kommer lagring och hämtning av signalvärden inte att påverkas av
exekveringsordningen mellan enskilda hämtnings och lagrings objekt.

Om man däremot lagrar och hämtar värden från attribut som inte I/O-kopieras kan
exekveringsordningen vara av betydelse för funktionen.

Exekveringsordningen bestäms av förbindningarna mellan funktionsobjekten. De vanliga
förbindningarna är både signalöverförande och exekveringsordnings-bestämmande. Gör man en
återkoppling, måste man välja en kopplingstyp som är signalöverförande, men inte
exekveringsordnings-bestämmande. De olika feedback-kopplingarna är av denna typ. Dessutom
finns det en typ av koppling som är exekveringsordnings-bestämmande men inte
signalöverförande, ConExecuteOrder. Med den här kan man styra exekveringsordningen mellan
olika funktionsobjekt utan att överföra några signalvärden.

Exekveringsordningen för funktionsobjekten i ett plcfönster visas med
'View/Show execute order' i menyn. Den siffra som visas på varje funktionsobjekt anger den
ordning i vilken de exekveras. De objekt som inte har någon siffra, har inte någon
exekverbar kod.

Exekveringsordningen mellan olika PlcPgm styrs av attributet ExecuteOrder i PlcPgm objektet.
ExecuteOrder avgör hur exekveringen inom en plc tråd ordnas. Lägre värden på ExecuteOrder
exekverar före högre värden.

Kompilering

Innan ett plc-fönster kan exekveras måste det kompileras. Samtidigt utförs en syntax kontroll
av plc-koden. Om syntaxen inte är korrekt, skrivs felmeddelanden i meddelandefönstret.
Felmeddelandet kan vara av typen Error eller Warning. Error är ett allvarligare fel som måste
åtgärdas. Genom att klicka på pilen framför felmeddelandet i meddelandefönstret, letas det
felaktiga objektet upp i plceditorn.

Efter syntaxkontrollen genereras c-kod som skickas till c-kompilatorn. Om det
finns objekt med egendefinierad c-kod, t ex CArithm eller DataArithm, kan c-kompilatorn
hitta fel som skrivs ut i terminalfönstret. Kontrollera alltid i terminalfönstret att
kompileringen gick bra.

Kompileringen utförs genom att 'File/Build' aktiveras i menyn.

Om man vill kontrollera syntaxen utan att generera kod, aktiverar man 'File/Syntax'. Här
körs inte c-kompilatorn, så eventuella c-kods fel upptäcks inte.

Klipp och klistra

Plc editorn innehåller en pastebuffer. Pastebufferten är gemensam för alla fönster, vilket
gör att man kan kopiera mellan olika fönster. Med funktionerna 'Edit/Copy' och 'Edit/Cut'
i menyn kopieras utvalda objekt till paste bufferten (vid Cut tas de även bort ur
arbetsarean). Funktionen 'Edit/Paste' kopierar pastebufferten till arbetsarean. De kopierade
objekten flyttas nu med markören, och man placerar dem på rätt plats och klickar på MB1 för
att låsa fast dem.

Cut, Copy och Paste kan även aktiveras från tangentbordet med Ctrl/X, Ctrl/C och Ctrl/V.

Speciella plcobjekt

Här beskrivs ett antal objekt som har speciella funktioner i plcprogrammet.

Document
Dokumentobjekt används för att dela in koden i sidor vid utskrift. När man öppnar ett nytt
fönster innehåller det ett dokumentobjekt. Via objektseditorn kan man ändra dimension på
documentet, och ange signatur och sidnummer. Övriga uppgifter i dokumenthuvudet fylls i
automatiskt. Dokument objekt finns under mappen 'Edit' i objektspaletten.

ShowPlcAttr
ShowPlcAttr kan användas som som en utökning av dokumenthuvudet. I detta objekt skriv info
om volym, scantid och resetobjekt för Grafcet ut.

Head, Title, Text och BodyText
Dessa objekt används för att skriva förklarande texter i dokumenten. Head, Title och Text
innehåller enradiga texter av olika storlek på max 79 tecken. BodyText innehåller en
flerradig text på max 1023 tecken. Objekten återfinns under'Edit' i objektspaletten.

Point
Point objektet är en fri kopplingspunkt som kan användas som förgrening av förbindningar
eller för att styra layouten på förbindningar. Point finns under 'Edit' i objektspaletten.

Grafcet
Grafcet sekvenser är uppbyggda med speciella Grafcet objekt som InitStep, Step, Trans och
Order. Kopplingarna mellan objektet följer bestämda regler. De vertikala pinnarna på ett
Step objekt ska t ex kopplas till Trans objekt, och den horisontella pinnen ska kopplas
till ett Order objekt. Här följer ett exempel på hur men enkelt skapar en Grafcet sekvens.

Börja med att skapa ett InitStep objekt. Dra ut en förbindning från den undre pinnen och
släpp den i arbetsarean under InitStep objektet. Nu skapas ett Trans objekt som är
förbundet med InitStep objektet. Dra en koppling från Trans objektets undre koppling och
släpp den i arbetsarean under Trans objektet. Här skapas nu ett Step objekt. Drar man ut
en koppling från Step objektets under pinne skapas ett Trans objekt till. Vill man ha en
förgrening drar man ut ytterligare en koppling från Step objektets nedre pinne. Nu skapas
en förgrening med speciella StepDiv förbindningar. Om man pss skapar en förgrening
från ett Trans objekt genom att dra ut två stycken kopplingar från den undre pinnen, bildas
en parallellförgrening med TransDiv förbindningar som markeras med dubbla linjer.
Drar man ut en koppling från den horisontella pinnen på ett Step objekt skapas ett Order
objekt osv. Som synes kan man mycket snabbt bygga upp avancerade sekvenser på det här sättet.

ScanTime
ScanTime hämtar upp den verkliga scantiden, dvs tiden sedan senaste scan.

FirstScan
FirstScan är sann första varvet plc't exekverar efter uppstart av ProviewR. Den är även sann
först varvet efter en mjuk omstart.

Meny


File/Save                               Spara
File/Print/Documents                       Skriv ut alla dokument.
File/Print/Overview                       Skriv ut en översikt på ett blad.
File/Print/Selected documents                       Skriv ut utvalda dokument.
File/Syntax                            Gör en syntaxkontrol av koden.
File/Compile                            Kompilera programmet.
File/Plc Attributes                       Öppna objektseditorn för PlcPgm objektet.
File/Delete Window                       Ta bort plcfönstret.
File/Save Trace                         Spara traceobjekt.
File/Restore Trace                      Återskapa sparade traceobjekt.
File/Close                              Stäng fönstret.
Edit/Undo Delete                        Ångra borttagning av objekt.
Edit/Undo Select                        Nollställ utvalslistan.
Edit/Cut                                Klipp ut utvalda objekt.
Edit/Copy                               Kopiera utvalda objekt till paste bufferten.
Edit/Paste                              Kopiera pastebufferten till arbetsarean.
Edit/Connect                            Koppla utvalt objekt till utvald signal eller attribut
                           i konfiguratören.
Edit/Delete                             Ta bort utvalda objekt.
Edit/Change Text                        Ändra text i utvalt textobjekt.
Edit/Expand Object                       Expandera utvalt objekt.
Edit/Compress Object                       Komprimera utvalt objekt.
Search/Object                           Sök på objektsnamn.
Search/String                           Sök efter textsträng.
Search/Next                             Sök vidare med samma textsträng.
View/Palette/Object                       Visa funktionsobjekts paletten.
View/Palette/Connection                       Visas förbindnings paletten.
View/Palette/Plant                       Visa anläggningshierarkin.
View/Reference connections                       Skapa förbindningar som referenskopplingar.
View/Grid Size                          Sätt gridstorlek.
View/Show Grid                          Visa griden.
View/Zoom/In                            Zooma in.
View/Zoom/Out                           Zomma ut.
View/Zoom/Reset                         Återställ till ursprunglig zoomningsgrad.
View/Show Execute Order                       Visa exekveringsordning för funktionsobjekten.
View/Redraw                             Dra om förbindningar och rita om fönstret.
Functions/Open Object                       Öppna objektseditorn för utvalt objekt.
Functions/Subwindow                       Öppna underfönster för utvalt objekt.
Mode/View                               Visningsmod.
Mode/Edit                               Editeringsmod.
Mode/Trace                              Felsökningsmod.
Mode/Simulate                           Simuleringsmod.

Musfunktioner

Arbetsarean

Klick MB1                               Välj ut objekt. Klick i tomt område nollställer utvalslistan.
Shift/Klick MB1                         Addera objekt till utvalslistan.
Dubbelklick MB1                         Öppna objektseditorn.
Shift+Ctrl/Dubbelklick MB1                       Kopiera till pastebuffer. Klick på ett objekt
                         kopierar objektet, klick i tomt område kopierar utvalda objekt.
Drag MB1                                På objekt: flytta objekt eller flytta utvalda objekt.
                               I tomt område: välj ut objekt inom markerad rektangel.
Shift/Drag MB1                          Addera objekt inom markerad rektangel till utvalslistan.
Klick MB2                               Skapa objekt.
Dubbelklick MB2                         Ta bort. Klick på ett objekt tar bort objektet, klick
                        på tomt område i arbetsarean tar bort utvalda objekt.
Shift+Ctrl/Klick MB2                       Paste. Kopiera pastebufferten till arbetsarean.
Shift+Ctrl/Dubbelklick MB2                       Klipp ut. Klick i objekt tar bort objektet, klick
                        på tomt område tar bort utvalda objekt. Borttagna objekt läggs
                        i pastebufferten.
Press MB3                               Popupmeny.

Navigationsfönster

Drag MB1                                Skrolla arbetsarean.
Drag MB2                                Zooma arbetsarean.