====== 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. ====== 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|