Funktions-objekt med plc-kod


Ett funktions-objekt där koden skrivs in form av plc-kod i plc-editor, definieras på liknande
sätt som funktions-objeketet med c-kod ovan.

Funktionsobjekt klassen defineras med ett $ClassDef objekt under 'Class' objektet. Namnge
objektet och aktivera Configure-Fo från popup-menyn för objektet. Nu skapas, förutom de
objekt som även skapas för c-kods funktionsobjektet, ett Code objekt av klassen PlcTemplate.
Det här objektet kan öppnas med plc-editorn, och här defineras koden för klassen.

Ingångar, interna attribute och utgångar i funktionsobjektet definieras, på samma sätt som
för funktionsobjektet med c-kod, med $Input, $Intern och $Output attribut.


Definition av funktionsobjekt med plc-kod.

Kod
Genom att aktivera 'Open Program...' i popupmeny för Code objektet öppas plc-editorn. Här kan
man nu skriva koden med funktions-objekts programmering. Koden skapas på samma sätt som ett
vanligt program. Det som tillkommer är att hämta upp värden från ingångar och interna
attribut, och att tilldela värden på utgångar.

Värden på ingångar, interna attribut, och även utgångar, hämtas upp i koden med GetDp, GetIp,
GetAp eller GetSp objekt. Objekten knyts till attribut i objektet genom att attributet väljs
ut i Template objektet för klassen, och 'Connect' aktiveras för Get-objektet. En symbolisk
referens $PlcFo läggs nu in i Get objektet. Den kommer sedan att bytas ut mot en referens
till respektive instans, när koden för instansen kompileras.

Beräknade värden lagras i utgångar eller interna attribut med StoDp, StoIp etc. Dessa
kopplas till attribut på samma sätt ingångarna, genom att välja ut attributen i
Template objektet och aktivera 'Connect'.


Exempel på plc-kod för ett funktionsobjekt

Template koden i Code objektet behöver inte kompileras eller byggas. När en instans
kompileras första gången, kopieras koden från template programmet till instansen.

Om template-koden ändras kommer instansernas kod att uppdateras nästa gång de kompileras
(volymen med instanserna måste uppdateras med UpdateClasses först).