Dynamické změny
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.
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.
Důležité
- pomocí níže uvedených metod nelze zjistit aktuální hodnoty nastavené v konfiguraci/image PLC
- nastavené hodnoty je potřeba „potvrdit“ zavoláním
dynpar.commithwconfiguration(); - nastavení se projeví až po restartu, který lze vyvolat voláním:
reloadapplication(0);
dynpar.setdynamicparamstr
Popis
Funkce slouží k zápisu textových řetězců.
Použití v ST
WriteResult := dynpar.setdynamicparamstr(id := ParamId, value := ParamToWrite);
Vstupy
- id: string_ref - název parametru
- value: string_ref - hodnota parametru k zapsání
Výstupy
- Žá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
dynpar.setdynamicparamint
Popis
Funkce slouží k zápisu celočíselné hodnoty.
Použití v ST
WriteResult := dynpar.setdynamicparamint(id := ParamId, value := ParamToWrite);
Vstupy
- id: string_ref - název parametru
- value: int - hodnota parametru k zapsání
Výstupy
- Žá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
dynpar.setdynamicparambool
Popis
Funkce slouží k zápisu logické hodnoty.
Použití v ST
WriteResult := dynpar.setdynamicparambool(id := ParamId, value := ParamToWrite);
Vstupy
- id: string_ref - název parametru
- value: bool - hodnota parametru k zapsání
Výstupy
- Žá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
dynpar.setdynamicparamtime
Popis
Funke slouží k zápisu časové hodnoty.
Použití v ST
WriteResult := dynpar.setdynamicparamtime(id := ParamId, value := ParamToWrite);
Vstupy
- id: string_ref - název parametru
- value: time - hodnota parametru k zapsání
Výstupy
- Žá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
dynpar.setdynamicparamdt
Popis
Funkce slouží k zápisu data a časové hodnoty.
Použití v ST
WriteResult := dynpar.setdynamicparamdt(id := ParamId, value := ParamToWrite);
Vstupy
- id: string_ref - název parametru
- value: dt - hodnota parametru k zapsání
Výstupy
- Žá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
dynpar.trygetdynamicparamstr
Popis
Funkce slouží ke čtení textového řetězce.
Použití v ST
ReadResult := dynpar.trygetdynamicparamstr(id := ParamId, value => ReturnValue);
Vstupy
- id: string_ref - název parametru
Výstupy
- 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.
Použití v ST
ReadResult := dynpar.trygetdynamicparamint(id:= ParamId, value => ReturnValue);
Vstupy
- id: string_ref - název parametru
Výstupy
- 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
dynpar.trygetdynamicparambool
Popis
Funkce slouží ke čtení logické hodnoty.
Použití v ST
ReadResult := dynpar.trygetdynamicparambool(id:= ParamId, value => ReturnValue);
Vstupy
- id: string_ref - název parametru
Výstupy
- 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
dynpar.trygetdynamicparamtime
Funkce slouží ke čtení časové hodnoty.
Použití v ST
ReadResult := dynpar.trygetdynamicparamtime(id:= ParamId, value => ReturnValue);
Vstupy
- id: string_ref - název parametru
Výstupy
- 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
dynpar.trygetdynamicparamdt
Popis
Funkce slouží ke čtení data a časové hodnoty.
Použití v ST
ReadResult := dynpar.trygetdynamicparamdt(id:= ParamId, value => ReturnValue);
Vstupy
- id: string_ref - název parametru
Výstupy
- 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
dynpar.deletedynamicparam
Popis
Funkce slouží ke smazání dynamického parametru. Dynamické parametry je možné hromadně smazat při nahrání sestavy.
Použití v ST
DeleteResult := dynpar.deletedynamicparam(ParamToDelete);
Vstupy
- id: string_ref - název parametru
Výstupy
- Žá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
dynpar.commithwconfiguration
Popis
Funkce slouží pro uložení celého stromu HW konfigurace do paměti PLC. Nemá žádné parametry.
Použití 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).
Použití v ST
RestartResult := reloadapplication(Flag);
Vstupní parametry - Flags (udint)
- 0x00 - Warm Restart
- 0x01 - Cold Restart
- 0x02 - Restart celého systému (reboot)
Výstupy
- Žá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 |
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 protokolů
Modbus Serial
| 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 |
| Device Address | image.„channel_name“.„device_name“>Address |
| Device Enable | image.„channel_name“.„device_name“>Enable |
Modbus TCP
| Typ klíče | Klíč |
|---|---|
| Channel Enable | image.„channel_name“>Enable |
| 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 |
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 |
IEC
| 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 |
Mbus
| 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 |
| 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 |
Modbus Server Serial
| 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 |
| Device Address | image.„channel_name“.“device_name“>Address |
Modbus Server TCP
| Typ klíče | Klíč |
|---|---|
| Channel Enable | image.„channel_name“>Enable |
| IPv4 | image.„channel_name“.„device_name“>Ipv4 |
| Port | image.„channel_name“.„device_name“>Port |
| Device Address | image.„channel_name“.„device_name“>Address |
| 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 |