Dynamické změny
Od verze IDE 2.5.0.x.
Dynamické změny jsou pokročilé funkce, pomocí kterých můžeme měnit buď konfiguraci PLC, nebo samotné vlastnosti komunikačních kanálů nahraných do PLC. Tudíž není potřeba provádět konfiguraci přímo v IDE, ale lze jednotlivé konfigurační proměnné vytáhnout například do HMI.
Domat IDE obsahuje ve FUPLA prohlížeči základní funkční bloky pro dynamické změny.
Funkční bloky pro konfiguraci PLC
DateTimeSettings
DatabaseParameters
Networking
Network Card
ProxyParameters
RestartPLC
SSCPParameters
Storage
UsersDefinition
Funkční bloky pro dynamické změny vlastností komunikačních kanálů
Serial Channel
TCP/UDP Channel
Funkční bloky pro dynamické změny vlastností komunikačních zařízení
BACnet Client Device
BACnet Server Device
Daikin iTC Device
Mbus Device
Modbus RTU Device
Modbus TCP Device
SoftPLC-Link Device
SSCP TCP Device
Funkční bloky pro dynamické změny vlastností alarmových kanálů
GSM
SMTP
Pomocí funkcí popsaných níže je možné naprogramovat v ST vlastní funkční bloky podle toho, co je zrovna v projektu vyžadováno.
Základní funkce
Funkce dynpar.setdynamicparamstr
Slouží k zápisu textových řetezců.
Volání v ST:
WriteResult := dynpar.setdynamicparamstr(id := ParamId, value := ParamToWrite);
Vstupní parametry
- id: string_ref - název parametru
- value: string_ref - hodnota parametru k zapsání
Výstupní parametry
- Žádné výstupní parametry
Návratové hodnoty
- 0 - žádná chyba
- -1 - záznam neexistuje
- -2 - neznámý požadovaný typ (v praxi nemůže nastat)
- -3 - nesoulad velikosti uloženého záznamu a požadovaného záznamu (např. uložen datový typ bool a čteme datový typ int)
- -4 - interní chyba kódu
Funkce dynpar.setdynamicparamint
Slouží k zápisu celočíselné hodnoty.
Volání v ST:
WriteResult := dynpar.setdynamicparamint(id := ParamId, value := ParamToWrite);
Vstupní parametry
- id: string_ref - název parametru
- value: int - hodnota parametru k zapsání
Výstupní parametry
- Žádné výstupní parametry
Návratové hodnoty
- 0 - žádná chyba
- -1 - záznam neexistuje
- -2 - neznámý požadovaný typ (v praxi nemůže nastat)
- -3 - nesoulad velikosti uloženého záznamu a požadovaného záznamu (např. uložen datový typ bool a čteme datový typ int)
- -4 - interní chyba kódu
Funkce dynpar.setdynamicparambool
Slouží k zápisu logické hodnoty.
Volání v ST:
WriteResult := dynpar.setdynamicparambool(id := ParamId, value := ParamToWrite);
Vstupní parametry
- id: string_ref - název parametru
- value: bool - hodnota parametru k zapsání
Výstupní parametry
- Žádné výstupní parametry
Návratové hodnoty
- 0 - žádná chyba
- -1 - záznam neexistuje
- -2 - neznámý požadovaný typ (v praxi nemůže nastat)
- -3 - nesoulad velikosti uloženého záznamu a požadovaného záznamu (např. uložen datový typ bool a čteme datový typ int)
- -4 - interní chyba kódu
Funkce dynpar.setdynamicparamtime
Slouží k zápisu časové hodnoty.
Volání v ST:
WriteResult := dynpar.setdynamicparamtime(id := ParamId, value := ParamToWrite);
Vstupní parametry
- id: string_ref - název parametru
- value: time - hodnota parametru k zapsání
Výstupní parametry
- Žádné výstupní parametry
Návratové hodnoty
- 0 - žádná chyba
- -1 - záznam neexistuje
- -2 - neznámý požadovaný typ (v praxi nemůže nastat)
- -3 - nesoulad velikosti uloženého záznamu a požadovaného záznamu (např. uložen datový typ bool a čteme datový typ int)
- -4 - interní chyba kódu
Funkce dynpar.setdynamicparamdt
Slouží k zápisu data a časové hodnoty.
Volání v ST:
WriteResult := dynpar.setdynamicparamdt(id := ParamId, value := ParamToWrite);
Vstupní parametry
- id: string_ref - název parametru
- value: dt - hodnota parametru k zapsání
Výstupní parametry
- Žádné výstupní parametry
Návratové hodnoty
- 0 - žádná chyba
- -1 - záznam neexistuje
- -2 - neznámý požadovaný typ (v praxi nemůže nastat)
- -3 - nesoulad velikosti uloženého záznamu a požadovaného záznamu (např. uložen datový typ bool a čteme datový typ int)
- -4 - interní chyba kódu
Funkce dynpar.trygetdynamicparamstr
Slouží ke čtení textového řetězce.
Volání v ST:
ReadResult := dynpar.trygetdynamicparamstr(id := ParamId, value => ReturnValue);
Vstupní parametry
- id: string_ref - název parametru
Výstupní parametry
- value: string - vrácená hodnota parametru
Návratové hodnoty
- 0 - žádná chyba
- -1 - záznam neexistuje
- -2 - neznámý požadovaný typ (v praxi nemůže nastat)
- -3 - nesoulad velikosti uloženého záznamu a požadovaného záznamu (např. uložen datový typ bool a čteme datový typ int)
- -4 - interní chyba kódu
Funkce dynpar.trygetdynamicparamint
Slouží ke čtení celočíselné hodnoty.
Volání v ST:
ReadResult := dynpar.trygetdynamicparamint(id:= ParamId, value => ReturnValue);
Vstupní parametry
- id: string_ref - název parametru
Výstupní parametry
- value: int - vrácená hodnota parametru
Návratové hodnoty
- 0 - žádná chyba
- -1 - záznam neexistuje
- -2 - neznámý požadovaný typ (v praxi nemůže nastat)
- -3 - nesoulad velikosti uloženého záznamu a požadovaného záznamu (např. uložen datový typ bool a čteme datový typ int)
- -4 - interní chyba kódu
Funkce dynpar.trygetdynamicparambool
Slouží ke čtení logické hodnoty.
Volání v ST:
ReadResult := dynpar.trygetdynamicparambool(id:= ParamId, value => ReturnValue);
Vstupní parametry
- id: string_ref - název parametru
Výstupní parametry
- value: bool - vrácená hodnota parametru
Návratové hodnoty
- 0 - žádná chyba
- -1 - záznam neexistuje
- -2 - neznámý požadovaný typ (v praxi nemůže nastat)
- -3 - nesoulad velikosti uloženého záznamu a požadovaného záznamu (např. uložen datový typ bool a čteme datový typ int)
- -4 - interní chyba kódu
Funkce dynpar.trygetdynamicparamtime
Slouží ke čtení časové hodnoty.
Volání v ST:
ReadResult := dynpar.trygetdynamicparamtime(id:= ParamId, value => ReturnValue);
Vstupní parametry
- id: string_ref - název parametru
Výstupní parametry
- value: time - vrácená hodnota parametru
Návratové hodnoty
- 0 - žádná chyba
- -1 - záznam neexistuje
- -2 - neznámý požadovaný typ (v praxi nemůže nastat)
- -3 - nesoulad velikosti uloženého záznamu a požadovaného záznamu (např. uložen datový typ bool a čteme datový typ int)
- -4 - interní chyba kódu
Funkce dynpar.trygetdynamicparamdt
Slouží ke čtení data a časové hodnoty.
Volání v ST:
ReadResult := dynpar.trygetdynamicparamdt(id:= ParamId, value => ReturnValue);
Vstupní parametry
- id: string_ref - název parametru
Výstupní parametry
- value: dt - vrácená hodnota parametru
Návratové hodnoty
- 0 - žádná chyba
- -1 - záznam neexistuje
- -2 - neznámý požadovaný typ (v praxi nemůže nastat)
- -3 - nesoulad velikosti uloženého záznamu a požadovaného záznamu (např. uložen datový typ bool a čteme datový typ int)
- -4 - interní chyba kódu
Funkce dynpar.deletedynamicparam
Slouží ke smazání dynamického parametru. Dynamické parametry je možné hromadně smazat při nahrání sestavy.
Volání v ST:
DeleteResult := dynpar.deletedynamicparam(ParamToDelete);
Vstupní parametry
- id: string_ref - název parametru
Výstupní parametry
- Žádné výstupní parametry
Návratové hodnoty
- 0 - žádná chyba
- -1 - záznam neexistuje
- -2 - neznámý požadovaný typ (v praxi nemůže nastat)
- -3 - nesoulad velikosti uloženého záznamu a požadovaného záznamu (např. uložen datový typ bool a čteme datový typ int)
- -4 - interní chyba kódu
Funkce dynpar.commithwconfiguration
Slouží pro uložení celého stromu HW konfigurace do paměti PLC. Nemá žádné parametry.
Volání v ST:
CommitResult := dynpar.commithwconfiguration();
Návratové hodnoty
- 0 - žádná chyba
- -1 - záznam neexistuje
- -2 - neznámý požadovaný typ (v praxi nemůže nastat)
- -3 - nesoulad velikosti uloženého záznamu a požadovaného záznamu (např. uložen datový typ bool a čteme datový typ int)
- -4 - interní chyba kódu
Funkce ReloadApplication
Slouží k restartu PLC. Je možné si podle daného flagu určit jaký typ restartu se má provést. Pokud se nenastaví žádný flag, tak se PLC restartuje standardním způsobem (Warm Restart).
Volání v ST:
RestartResult := reloadapplication(Flag);
Vstupní parametry - Flags (udint)
- 0x00 - Warm Restart
- 0x01 - Cold Restart
- 0x02 - Restart celého systému (reboot)
Výstupní parametry
- Žádné výstupní parametry
Návratové hodnoty
- 0 - žádná chyba
- -1 - záznam neexistuje
- -2 - neznámý požadovaný typ (v praxi nemůže nastat)
- -3 - nesoulad velikosti uloženého záznamu a požadovaného záznamu (např. uložen datový typ bool a čteme datový typ int)
- -4 - interní chyba kódu
Klíče pro konfiguraci PLC
Tyto klíče se dají najít v adresáři projektu v adresáři bin, kde se nachází soubor s příponou .XML, který se dá otevřít v textovém editoru. Tento soubor vzniká nahráním konfigurace do PLC.
Před klíče pro konfiguraci PLC se dává předpona "hwcfg". V XML souboru se pohybujeme po jednotlivých uzlech, kde například pro nastavení IP adresy PLC musíme napsat klíč ve tvaru "hwcfg.hwconfiguration.runtime.lwip.ipv4.@ipaddress".
Tabulka klíčů pro konfiguraci PLC
Networking
Typ klíče | Klíč |
---|---|
IP Address | hwcfg.hwconfiguration.runtime.lwip.ipv4.@ipaddress |
Network Mask | hwcfg.hwconfiguration.runtime.lwip.ipv4.@mask |
Gateway | hwcfg.hwconfiguration.runtime.lwip.ipv4.@gateway |
DNS | hwcfg.hwconfiguration.runtime.lwip.ipv4.@nameserver |
Static/DHCP | hwcfg.hwconfiguration.runtime.lwip.ipv4.@mode |
Network Interface Controller Count | hwcfg.hwconfiguration.runtime.advanced.@niccount |
Enable Configuration over UDP | hwcfg.hwconfiguration.runtime.configservice.@enabled |
Config Service Port | hwcfg.hwconfiguration.runtime.configservice.@port |
Enable HTTP | hwcfg.hwconfiguration.runtime.httpservice.@enabled |
HTTP Port | hwcfg.hwconfiguration.runtime.httpservice.@port |
Enable HTTPS | hwcfg.hwconfiguration.runtime.httpsservice.@enabled |
HTTPS Port | hwcfg.hwconfiguration.runtime.httpsservice.@port |
Redirect HTTP to HTTPS | hwcfg.hwconfiguration.runtime.httpservice.@redirect |
Network Card
Typ klíče | Klíč |
---|---|
Enabled Eth1 | hwcfg.hwconfiguration.runtime.advanced.nic.@enabled |
Ip Configuration | hwcfg.hwconfiguration.runtime.advanced.nic.ipv4.@mode |
IP Address | hwcfg.hwconfiguration.runtime.advanced.nic.ipv4.@ipaddress |
Mask | hwcfg.hwconfiguration.runtime.advanced.nic.ipv4.@mask |
SSCP Parameters
Typ klíče | Klíč |
---|---|
SSCP Address | hwcfg.hwconfiguration.runtime.sscp.@slaveid |
Number of Registrable Groups | hwcfg.hwconfiguration.runtime.sscp.@groupscount |
Number of Variables in Group | hwcfg.hwconfiguration.runtime.sscp.@groupvariablecount |
Enable TCP Server | hwcfg.hwconfiguration.runtime.sscp.tcp.@enabled |
TCP Server Port | hwcfg.hwconfiguration.runtime.sscp.tcp.@port |
Enable SSCP Serial | hwcfg.hwconfiguration.runtime.sscp.serial.@enabled |
SSCP Serial Port | hwcfg.hwconfiguration.runtime.sscp.serial.@port |
SSCP Serial Baudrate | hwcfg.hwconfiguration.runtime.sscp.serial.@baudrate |
SSCP Serial Mode (Server/Router) | hwcfg.hwconfiguration.runtime.sscp.serial.@mode |
Enable SSL Server | hwcfg.hwconfiguration.runtime.sscp.ssl.@enabled |
SSL Server Port | hwcfg.hwconfiguration.runtime.sscp.ssl.@port |
Users Definition
Typ klíče | Klíč |
---|---|
Engineering | hwcfg.hwconfiguration.runtime.sscp.users.user[1].@name |
Full Control | hwcfg.hwconfiguration.runtime.sscp.users.user[2].@name |
Read Only | hwcfg.hwconfiguration.runtime.sscp.users.user[3].@name |
First User | hwcfg.hwconfiguration.runtime.sscp.users.user[first()].@name |
Last User | hwcfg.hwconfiguration.runtime.sscp.users.user[last()].@name |
Database Parameters
Typ klíče | Klíč |
---|---|
Enabled | hwcfg.hwconfiguration.runtime.rcwaredb.@enabled |
Protocol | hwcfg.hwconfiguration.runtime.rcwaredb.urls.url[1].@protocol |
Host | hwcfg.hwconfiguration.runtime.rcwaredb.urls.url[1].@host |
Path | hwcfg.hwconfiguration.runtime.rcwaredb.urls.url[1].@path |
Port | hwcfg.hwconfiguration.runtime.rcwaredb.urls.url[1].@port |
User Name | hwcfg.hwconfiguration.runtime.rcwaredb.urls.url[1].@username |
Password | hwcfg.hwconfiguration.runtime.rcwaredb.urls.url[1].@password |
Certificate Validation | hwcfg.hwconfiguration.runtime.rcwaredb.urls.url[1].@certificatevalidation |
Communication Period | hwcfg.hwconfiguration.runtime.rcwaredb.@updateperiod |
Proxy Parameters
Typ klíče | Klíč |
---|---|
Enabled | hwcfg.hwconfiguration.runtime.proxy.@enabled |
Proxy ID | hwcfg.hwconfiguration.runtime.proxy.@id |
Protocol | hwcfg.hwconfiguration.runtime.proxy.urls.url[1].@protocol |
Host | hwcfg.hwconfiguration.runtime.proxy.urls.url[1].@host |
Path | hwcfg.hwconfiguration.runtime.proxy.urls.url[1].@path |
Port | hwcfg.hwconfiguration.runtime.proxy.urls.url[1].@port |
Certificate Validation | hwcfg.hwconfiguration.runtime.proxy.urls.url[1].@certificatevalidation |
Keep-alive Period | hwcfg.hwconfiguration.runtime.proxy.@keepalive |
Date/Time Settings
Typ klíče | Klíč |
---|---|
UTC Offset | hwcfg.hwconfiguration.runtime.sscp.users.user[1].@name |
Daylight Offsets Number | hwcfg.hwconfiguration.runtime.sscp.users.user[2].@name |
Year 1 | hwcfg.hwconfiguration.timetransformation.daylights.daylight[1].@year |
Year 20 | hwcfg.hwconfiguration.timetransformation.daylights.daylight[20].@year |
First Year | hwcfg.hwconfiguration.timetransformation.daylights.daylight[first].@year |
Last Year | hwcfg.hwconfiguration.timetransformation.daylights.daylight[last].@year |
Offset Start | hwcfg.hwconfiguration.timetransformation.daylights.daylight[1].@start |
Offset End | hwcfg.hwconfiguration.timetransformation.daylights.daylight[1].@end |
Daylight Offsets | hwcfg.hwconfiguration.timetransformation.daylights.daylight[1].@daylightoffset |
NTP Server
Typ klíče | Klíč |
---|---|
Protocol | hwcfg.hwconfiguration.timetransformation.ntp.urls.url[1].@protocol |
Host | hwcfg.hwconfiguration.timetransformation.ntp.urls.url[1].@host |
Path | hwcfg.hwconfiguration.timetransformation.ntp.urls.url[1].@path |
Port | hwcfg.hwconfiguration.timetransformation.ntp.urls.url[1].@port |
Certificate Validation | hwcfg.hwconfiguration.timetransformation.ntp.urls.url[1].@certificatevalidation |
Keep-alive Period | hwcfg.hwconfiguration.timetransformation.ntp.@keepalive |
SD Card
Typ klíče | Klíč |
---|---|
Use for History | hwcfg.hwconfiguration.memorylayout.sdcard.@useforhistory |
History Size | hwcfg.hwconfiguration.memorylayout.sdcard.@historysize |
Klíče pro dynamické změny v image
Klíče pro dynamické změny v image se vypisují v záložce "Výstup" ve formátu
OEM Key "channel>ComPort" -> 9698843FC46A2D1A, datatype: SignedInteger32
kde "channel" je název kanálu a "ComPort" daný parametr, z kterého chceme číst nebo do něj zapisovat. Za klíčem se dále vypíše, jakého datového typu je daný parametr. V tomto případě bychom pro čtení tohoto klíče vybrali funkci dynpar.trygetdynamicparamint a pro zápis dynpar.setdynamicparamint.
U klíčů pro změnu v image je potřeba přidat před vypsané klíče ještě předponu "image". Pro příklad pro změnu komunikačního portu u modbusového sériového kanálu s názvem "modbus_channel" by bylo potřeba napsat klíč ve tvaru "image.modbus_channel>ComPort".
Tabulka klíčů pro dynamické změny vlastností komunikačních kanálů
Serial Channel
Typ klíče | Klíč |
---|---|
Port Number | image."channel_name">ComPort |
Baud Rate | image."channel_name">Baudrate |
Data Bits | image."channel_name">Databits |
Parity | image."channel_name">Parity |
Stop Bits | image."channel_name">Stopbits |
Channel Enable | image."channel_name">Enable |
TCP/UDP Channel
Typ klíče | Klíč |
---|---|
Channel Enable | image."channel_name">Enable |
Tabulka klíčů pro dynamické změny vlastností komunikačních zařízení
Modbus RTU Device
Typ klíče | Klíč |
---|---|
Device Address | image."channel_name"."device_name">Address |
Device Enable | image."channel_name"."device_name">Enable |
Modbus TCP Device
Typ klíče | Klíč |
---|---|
Device Enable | image."channel_name"."device_name">Enable |
IPv4 | image."channel_name"."device_name">Ipv4 |
Port | image."channel_name"."device_name">Port |
Host | image."channel_name"."device_name">Host |
Address | image."channel_name"."device_name">Address |
BACnet Client
Typ klíče | Klíč |
---|---|
IPv4 | image."channel_name"."device_name">Ipv4 |
Port | image."channel_name"."device_name">Port |
Host | image."channel_name"."device_name">Host |
Device Instance | image."channel_name"."device_name">DeviceInstance |
Device Enable | image."channel_name"."device_name">Enable |
BACnet Server
Typ klíče | Klíč |
---|---|
IPv4 | image."channel_name"."device_name">Ipv4 |
Port | image."channel_name"."device_name">Port |
Device Instance | image."channel_name"."device_name">DeviceInstance |
Management Password | image."channel_name"."device_name">MgmtPassword |
Daikin
Typ klíče | Klíč |
---|---|
IPv4 | image."channel_name"."device_name">Ipv4 |
Port | image."channel_name"."device_name">Port |
Host | image."channel_name"."device_name">Host |
Mbus
Typ klíče | Klíč |
---|---|
Primary Address | image."channel_name"."device_name">Primary |
Secondary Address | image."channel_name"."device_name">Secondary |
Use Secondary Address | image."channel_name"."device_name">UseSecondary |
Device Enable | image."channel_name"."device_name">Enable |
Tabulka klíčů pro dynamické změny vlastností alarmových kanálů
SMTP
Typ klíče | Klíč |
---|---|
Server | image."channel_name".Host |
Port | image."channel_name".Port |
Use Authentication | image."channel_name".UseAuth |
Username | image."channel_name".Username |
Password | image."channel_name".Password |
Enable SSL | image."channel_name".Ssl |
Certificate Validation | image."channel_name".CertificateValidation |
GSM
Typ klíče | Klíč |
---|---|
Port Number | image."channel_name".ComPort |
Baud Rate | image."channel_name".Baudrate |
Data Bits | image."channel_name".Databits |
Parity | image."channel_name".Parity |
Stop Bits | image."channel_name".Stopbits |