Domat IDE
Domů
  • Vývojové prostředí Domat IDE
  • Práce s vývojovým prostředím
  • Regulátor (PLC)
  • Založení projektu
  • HMI Editor (web, LCD menu)
  • Tvorba software
  • Zařízení (hardware)
Kontakt
  • Čeština
  • English
Domů
  • Vývojové prostředí Domat IDE
  • Práce s vývojovým prostředím
  • Regulátor (PLC)
  • Založení projektu
  • HMI Editor (web, LCD menu)
  • Tvorba software
  • Zařízení (hardware)
Kontakt
  • Čeština
  • English
  • Vývojové prostředí Domat IDE
    • Často kladené dotazy na technické podpoře
    • Programovací možnosti
    • Komunikační možnosti
    • Hardwarové možnosti
    • Nároky na uživatele
    • Definice formálních pojmů nezbytných pro práci s Merbon IDE
    • Obecný postup při programování regulátorů
  • Práce s vývojovým prostředím
    • Založení sestavy
    • Založení sestavy - zjednodušený mód
    • Klávesové zkratky
    • Ovládání myší
    • Nastavení
    • Vyhledávání proměnných - Najít
    • Archivace projektu
  • Regulátor (PLC)
    • Přiřazení regulátoru (nastavení typu)
    • Aktualizace RT běžícího na regulátoru
    • Aktualizace HW z knihovny
    • Nahrání programu do regulátoru
    • Online změny
    • Vlastnosti regulátoru
    • Konfigurace regulátoru
    • Reboot PLC
    • Dynamické změny
    • Nastavení času
    • Nastavení firewallu
    • Připojení přes proxy
    • Profily
    • Alarmový log
    • Definice činnosti regulátoru PLC
    • Nastavení komunikačního kanálu
    • Vytváření HW proměnných v komunikačním kanálu
    • Automatické přidání zařízení Domat
    • Export zařízení
    • Import zařízení
    • Vazby mezi hardwarovými I/O
    • Mapování globálních proměnných na HW
    • Přístup k proměnným jiného PLC
    • Nastavení Modbus serveru
    • Nastavení BACnet serveru
    • Nastavení SSCP sériové linky
    • OPC server
    • Transformace a konfigurace analogových vstupů
    • Nastavení ukládání dat do databáze (historie)
    • Přehled alarmů
    • Ladění
    • Licencování PLC
    • Přerušení
    • Body přerušení
    • Výjimky z chodu PLC
    • Ruční režim
    • Srovnání HW platform
    • SSL komunikace
    • Stav systému
    • Využití zdrojů PLC
    • Zálohování proměnných
    • Modbus konfigurátor
    • Porovnání lokálního a vzdáleného projektu
    • Syslog protokol
    • Hromadný zápis do proměnných
  • Popis komunikačních protokolů

    • Komunikační protokol MQTT
    • Komunikační protokol BACnet
    • Komunikační protokol Daikin iTC (.NET)
    • Komunikační protokol Hauser (.NET)
    • Komunikační protokol IEC 60870-5-104
    • Komunikační protokol IEC62056-21
    • Komunikační protokol M-bus
    • Komunikační protokol Modbus
    • Komunikační protokol K-Bus
    • Komunikační protokol SoftPLC Link
    • Komunikační protokol SSCP
    • Komunikační protokol Text Parser (.NET)
    • Komunikační protokol wModbus
  • Založení projektu
    • Nový projekt
    • Definice proměnných
    • Autogen - automatické namapování softwarových proměnných na vstupy a výstupy
    • FUPLA editor
    • ST editor
    • Prohlížeč proměnných
    • Grafy (proměnných)
    • Port monitor
    • Výsledky
    • Výstup
    • Hlídané
  • HMI Editor (web, LCD menu)
    • Popis HMI editoru
    • Binární funkce
    • Práce ve zjednodušeném módu
    • Práce v plném módu
    • Uživatelská politika
    • Textové HMI objekty
    • Tvorba definice LCD displeje pro PLC
    • Tvorba textové definice pro terminál
    • Grafické HMI objekty
    • Tvorba grafické definice pro terminál
    • Vytváření stylů
    • Web server
    • Servisní web
    • PLC jako externí webserver
    • Domat Visual
  • Tvorba software
    • Založení sestavy
    • Založení sestavy - zjednodušený mód
    • Programovací jazyky
    • Přístup k proměnným vnořených bloků
    • Nastavení počáteční hodnoty
    • Společné prvky

      • Identifikátory
      • Klíčová slova
      • Mezery
      • Komentáře
      • Literály
      • Proměnné
      • Konstanty
    • Typy dat

      • Elementární datové typy (BOOL, INT, REAL, STRING, atd.)
      • Rodové datové typy
      • Odvozené (uživatelské) datové typy
      • Implicitní konverze elementárních typu
      • Vyhodnocování výrazu z pohledu císelných typu
    • Objektové programování (OOP)
      • Datový typ pointer
      • Datový typ reference
      • Jmenný prostor (namespace)
    • Programové organizační jednotky (POU)
      • Funkce
      • Standardní funkce
      • Funkční blok
      • Standardní funkční bloky
      • Program
    • Jazyk strukturovaného textu (ST)

      • ST editor
      • Příkazy v jazyce ST
      • Operátory jazyka ST
      • ST drivery
    • Jazyk funkčního blokového schématu (FUPLA)

      • FUPLA editor
      • Spojovací čáry v editoru FUPLA
      • Viditelnost vstupů a výstupů na funkcním bloku
    • Knihovny

      • Vytvoření knihovny
      • Použití vlastní (uživatelské) knihovny
      • Knihovní prototypy
      • Basic Analogue Boxes

        • Composition / Decomposition

          • Bit Composition (BD18)
          • Bit Composition 8bit (BD18)
          • Bit Decomposition (BD19)
          • Bit Decomposition 8bit (BD19)
          • Int Composition (BD55)
          • Int Decomposition (BD54)
        • Controllers

          • Direct Acting (cooling)

            • On-Off Control - Cooling (B30)
            • P-Controller - Cooling (B32)
            • PI-Controller - Cooling (B34)
            • PID-Controller - Cooling (B36)
          • Reverse Acting (heating)

            • On-Off Control - Heating (B31)
            • P-Controller - Heating (B33)
            • PI-Controller - Heating (B35)
            • PID-Controller - Heating (B37)
          • Helpers

            • Helper: Muti In Bool
            • Helper: Multi In Bool 8
            • Helper: Multi In Lint
            • Helper: Multi In Real
            • Helper: Multi Out Bool
            • Helper: Multi Out Bool 8
            • Helper: Multi Out Lint
            • Helper: Multi Out Real
        • Mathematics

          • ABS
          • ADD
          • AVG
          • CEIL
          • DIV
          • FLOOR
          • MAX
          • MIN
          • MOD
          • MUL
          • Smart Average (B48)
          • SUB
          • TRUNC_DINT
          • TRUNC_INT
          • TRUNC_LINT
          • TRUNC_SINT
          • TRUNC_UDINT
          • TRUNC_UINT
          • TRUNC_ULINT
          • TRUNC_USINT
          • Compare Functions

            • EQ
            • GE
            • GT
            • LE
            • LT
            • NE
          • Logarithm / Exponential Functions

            • EXP
            • EXP10
            • EXP2
            • EXPT
            • LN
            • LOG
            • SQRT
          • Specials

            • ISINFINITY
            • ISNAN
            • ISNEGATIVEINFINITY
            • ISPOSITIVEINFINITY
          • Time

            • ADD_DT_TIME
            • ADD_LDT_LTIME
            • ADD_TOD_TIME
            • ADD_LTOD_LTIME
            • CONCAT_DATE_TOD
            • DIVTIME
            • MULTIME
            • SUB_DATE_DATE
            • SUB_DT_DT
            • SUB_DT_TIME
            • SUB_TOD_TIME
            • SUB_TOD_TOD
          • Trigonometric Functions

            • ACOS
            • ACOSH
            • ASIN
            • ASINH
            • ATAN
            • ATANH
            • COS
            • COSH
            • SIN
            • SINH
            • TAN
            • TANH
        • Sources

          • B3 Sinusový Generator
          • B4 Pilový Generator
        • Specials

          • Analogue Incremental Counter (B107)
          • Analogue Memory (B105)
          • Analogue Shift Register (B110)
          • Integer Memory (B106)
          • Integer Shift Register (B111)
          • Integrator (B113)
          • RAND
        • Switches

          • Analogue Demultiplexer (B10)
          • Integer Demultiplexer (B12)
          • MUX
          • SEL
        • Time Blocks

          • GETDELTATIME
          • GETDELTATIME4
          • GETDSTOFFSET
          • GETEVALTIME
          • GETEVALTIME4
          • GETLOCALTIME
          • GETTIMEZONEOFFSET
          • GETUTCTIME
          • PLC Time (B99)
          • SETSYSTEMTIME
          • Time+Date to Total Seconds (B97)
          • Total Seconds to Time+Date (B98)
          • Conversions

            • COMPOSEDATETIME
            • CONVERTTOLOCALTIME
            • CONVERTTOUTCTIME
            • DATETOTALDAYS
            • DATETOTALHOURS
            • DATETOTALMILLISECONDS
            • DATETOTALMINUTES
            • DATETOTALSECONDS
            • DECOMPOSEDATE
            • DECOMPOSETIME
            • Time Conversion (B100)
            • TIMETOTALDAYS
            • TIMETOTALHOURS
            • TIMETOTALMILLISECONDS
            • TIMETOTALMINUTES
            • TIMETOTALSECONDS
        • Time Dependent

          • Filter (B86)
          • Pulse Width Modulation (B87)
          • Slew Rate Limit (B84)
          • Variable Slew Rate Limit (B85)
        • Transfer Function

          • LIMIT
          • Limits (B82)
          • Linear Interpolation (B83)
          • Two-Point Function (B80)
          • Four-Point Function (B81)
        • Type Casts

          • BCD_TO_UDINT
          • BCD_TO_UINT
          • BCD_TO_ULINT
          • BCD_TO_USINT
          • DT_TO_DATE
          • DATE_TO_LDATE
          • DATE_TO_DT
          • DATE_TO_LDT
          • DATE_TO_LTOD
          • DATE_TO_TOD
          • DT_TO_LDT
          • DT_TO_LTOD
          • DT_TO_TOD
          • LDATE_TO_DATE
          • LDATE_TO_DT
          • LDT_TO_DATE
          • LDT_TO_DT
          • LDT_TO_LDATE
          • LDT_TO_LTOD
          • LTIME_TO_TIME
          • LTOD_TO_DT
          • LTOD_TO_LDT
          • LTOD_TO_TOD
          • TO_BCD_BOOL
          • TIME_TO_LTIME
          • TO_BCD_BYTE
          • TO_BCD_DWORD
          • TO_BCD_LWORD
          • TO_BCD_WORD
          • TO_BYTE
          • TO_DINT
          • TO_DWORD
          • TO_INT
          • TO_LINT
          • TO_LREAL
          • TO_LWORD
          • TO_REAL
          • TO_SINT
          • TO_STRING
          • TO_UDINT
          • TO_ULINT
          • TO_USINT
          • TO_WORD
          • TOD_TO_LTOD
      • Basic Digital Boxes

        • Counters

          • Pulse Counter (BD30)
          • Down

            • Counter DINT (IEC 61131)
            • Counter INT (IEC 61131)
            • Counter LINT (IEC 61131)
            • Counter UDINT (IEC 61131)
            • Counter ULINT (IEC 61131)
          • Up

            • Counter DINT (IEC 61131)
            • Counter INT (IEC 61131)
            • Counter LINT (IEC 61131)
            • Counter UDINT (IEC 61131)
            • Counter ULINT (IEC 61131)
          • UpDown

            • Counter DINT (IEC 61131)
            • Counter INT (IEC 61131)
            • Counter LINT (IEC 61131)
            • Counter UDINT (IEC 61131)
            • Counter ULINT (IEC 61131)
        • Logical Operations

          • AND
          • NEG
          • NOT
          • OR
          • ROL
          • ROR
          • SHL
          • SHR
          • XOR
        • Sources

          • Pulse Generator (BD2)
        • Specials

          • Alarm Memory Ext. (BD57)
          • Boolean Memory (BD51)
          • Falling Edge Detection (IEC 61131)
          • Flip Flop (BD52)
          • Latch Flip Flop (BD53)
          • Multiple Alarm Memory (BD50)
          • Rising Edge Detection (IEC 61131)
          • RS FlipFlop (IEC61131)
          • Single Alarm Memory (BD49)
          • Single Alarm Memory w. Delay (BD56)
          • SR FlipFlop (IEC61131)
          • Toggle
        • Switches

          • Digital Demultiplexer (BD11)
        • Time Dependent

          • Digital Filter (BD15)
          • Monostable FlipFlop
          • Monostable FlipFlop (Non Resetable)
          • Pulse Encoder (IEC 61131)
          • Switch-Off Delay (BD13)
          • Switch-Off Delay (IEC 61131)
          • Switch-On Delay (BD12)
          • Switch-On Delay (IEC 61131)
          • Switch-On/Off Delay (BD14)
        • Type Casts

          • TO_BOOL
      • Basic String Boxes

        • BYTES_TO_STRING
        • CONCAT
        • DELETE
        • INSERT
        • FIND
        • LEFT
        • LEN
        • LINT_TO_STRING
        • LREAL_TO_STRING
        • MID
        • REPLACE
        • RIGHT
        • STRING_TO_BYTES
        • TO_STRING
      • Communications

        • Emails

          • Send Mail
          • Send Mail Triggered
          • Send Mail Custom
        • Input / Output Functions

          • Close Port
          • Get Port Status
          • Open Port
          • Read Port
          • Write Port
        • SMS

          • Receive SMS
          • Send SMS
          • Send SMS Triggered
      • HVAC

        • Boiler Shifts

          • Bit Rotation (T14)
        • Others

          • E-max (T34)
          • Heat / Cool Recovery Block (T39)
          • Heating Curve (T1)
          • Min / Max Controller (T33)
          • Operating Hours (T32)
          • Power Meter (T36)
          • Pump Switch (T35)
          • Average Power Meter (T37)
        • Physics

          • Dew Point (T28)
          • Enthalpy (T29)
          • Solar Calculator (T40)
        • Time Programs

          • Bool Scheduler (T17)
          • Bool Scheduler Basic (T17)
          • Integer Scheduler (T19)
          • Integer Scheduler Basic (T19)
          • Real Scheduler (T18)
          • Real Scheduler Basic (T18)
        • Valve Controls

          • Three Point Control - Feedback (T6)
          • Three Point Control (T2)
          • Three Point P-Controller (T8)
      • System Function

        • Get Event Trigger Variable
        • Get Exception Error Code
        • Get Startup Flags
        • Mutex Lock
        • Mutex Unlock
        • Resume Normal Tasks
        • Stop Interface Entry Point
        • Alarm Functions

          • Acknowledge Alarm
          • Alarm State Machine
          • Reset Alarm
        • Dynamic Parameters

          • HwConfiguration

            • DateTime Settings
            • Domat DB Parameters
            • Networking
            • Proxy Parameters
            • Restart PLC
            • SSCP Parameters
            • Storage
            • Users Definition
          • Image

            • Alarm

              • GSM
              • SMTP
            • Device

              • BACnet Client Device
              • BACnet Server Device
              • Daikin iTC Device
              • Mbus Device
              • Modbus RTU Device
              • Modbus TCP Device
              • SoftPLC Link Device
              • SSCP TCP Device
            • Channel

              • Serial Channel
              • TCP/UDP Channel
  • Zařízení (hardware)
    • PLC

      • mark130.2
      • mark220
      • mark220LX
      • mark320
      • mark320LX
      • mark520
      • markMX
      • markMX.2
      • markMX.3
      • markMXL
      • Windows RT
      • ICIO205.2
      • IMIO105.2
      • IMIO110.2
      • w750-8101
      • w750-8102
      • w751-9301
      • wCIO
      • wCIOcom
      • wMX
      • wMXcom
    • Terminálová zařízení

      • HT102
      • HT104
      • HT200
      • HT3xx
    • Zařízení

      • ECIO2 - Kompaktní I/O modul, Ethernet
      • EPC102 - Regulátor topení
      • FC010 - Regulátor fancoilu, komunikativní
      • FC013 - Komunikativní regulátor teploty pro topné a chladicí panely a VAV klapku
      • FC015 - Komunikativní regulátor teploty a CO2 pro topné a chladicí panely a VAV klapku
      • FC020 - Komunikativní regulátor fancoilu
      • FCR010 - Regulátor fancoilu, komunikativní
      • FCR011 - Regulátor fancoilu, komunikativní s napájením 230V AC
      • FCR013 - Komunikativní regulátor teploty pro topné a chladicí panely a VAV klapku
      • FCR015 - Komunikativní regulátor teploty a CO2 pro topné a chladicí panely a VAV klapku
      • M090 - Převodník Modbus TCP / DALI
      • M100 - Teplotní čidlo
      • M200 - Modul digitálních výstupů
      • M210 - Modul 8 digitálních výstupů
      • M215 - Modul 8 digitálních výstupů s ručním přeřízením
      • M300 - Modul digitálních výstupů
      • M312, M313 - Triakový výstupní modul PWM
      • M315 - 8 SSR výstupů s ručním přeřízením
      • M320 - Modul 16 digitálních výstupů
      • M325 - Modul 16 digitálních výstupů s ručním přeřízením
      • M400, M401, M410, M411 - Moduly digitálních vstupů
      • M420 - Modul 16 digitálních vstupů
      • M430 - Modul 32 digitálních vstupů
      • M500 - Modul 8 analogových vstupů
      • M504 - Modul analogových vstupů
      • M560 - Modul univerzálních analogových vstupů
      • M580 - Modul pro měření stringových proudů
      • M610 - Modul analogových výstupů
      • M620 - Modul analogových proudových výstupů
      • M710 - Čítačový modul, 4 vstupy
      • MC102 - Regulátor topení
      • MCIO2 - Kompaktní I/O modul
      • MLIO - Malý distribuovaný I/O modul
      • MMIO - Malý kompaktní I/O modul
      • MT020 - Poruchový transparent
      • MTala010 - Alarmové tablo
      • MW100 - Vrátník
      • MW240, MW240-B, MW241 - Malý I/O modul pro řízení
      • MW501 - Modul analogového vstupu
      • MXIO - Kompaktní I/O modul
      • Stelix DIP200 - Čidlo osvitu a pohybu
      • R060 - Převodník Modbus TCP, RTU/MP-Bus
      • R065 - Převodník Modbus TCP/DMX512
      • R091 - Převodník Modbus TCP/DALI
      • R220 - Modul 12 digitálních výstupů
      • R312, R313 - Triakový výstupní modul PWM
      • R320 - Modul 16 digitálních výstupů
      • R330 - Modul 32 digitálních výstupů
      • R420 - Modul 16 digitálních vstupů
      • R430 - Modul 32 digitálních vstupů
      • R500 - Modul univerzálních analogových vstupů
      • R560 - Modul univerzálních analogových vstupů
      • R610 - Modul analogových výstupů
      • R710 - Čítačový modul, 4 vstupy
      • R800 - Modul 8 AI a 8 AO
      • RCIO - Kompaktní I/O modul
      • RMIO - Malý kompaktní I/O modul
      • RXIO - Kompaktní I/O modul
      • UC102 - Regulátor topení, komunikativní
      • UC120 - Komunikativní regulátor topení s výstupem 0..10V
      • UC150 - Regulátor topení s komunikací Ethernet
      • UC200 - Regulátor topení a chlazení, komunikativní
      • UC210 - Regulátor topení, komunikativní
      • UC211 - Regulátor topení a chlazení
      • UC220 - Komunikativní regulátor topení a chlazení s výstupem 0...10V
      • UC250 - Regulátor topení a chlazení s komunikací Ethernet
      • UC300 - Regulátor podlahového topení, komunikativní
      • UI0xx - pokojový ovladač
      • UI0xxBL pokojový ovladač s podsvíceným displejem
      • UI410 - Modul pro měření a hlášení
      • UI415 - Integrátor slunečního osvitu
      • UI3xx - pokojový ovladač
      • UI5xx - pokojový ovladač, ethernet
      • UI6xx - pokojový ovladač, ethernet, PoE
      • UI9xx pokojový ovladač s CO2
      • UI9xxBL pokojový ovladač s CO2 a podsvíceným displejem
      • US100 - Komunikativní regulátor topení s ovládáním žaluzií
      • UX0xx - pokojový ovladac pro řízení topení, vzduchotechniky, klimatizace a žaluzií
      • GW-wModbus
      • GW-wModbus Pro
    • Čidla

      • UT090 - Pokojové čidlo teploty, vlhkosti a CO2
    • Wago moduly

      • w704-2054 - 16× DI nebo 16× DO
      • w750-404 - sestupný/vzestupný čítač
      • w750-404-000-005 - 16bitový vzestupný čítač
      • w750-450 - 4× AI pro měření odporu/teploty
      • w750-451 - 8× AI pro měření odporu/teploty
      • w750-453 - 4× AI pro proud 0...20 mA
      • w750-455 - 4× AI pro proud 4...20 mA
      • w750-457 - 4× AI pro napětí -10...10V
      • w750-458 - 8× AI pro termočlánky
      • w750-459 - 4× AI pro napětí 0...10V
      • w750-471 – 4kanálový analogový vstup; Napětí/proud
      • w750-496 - 8× AI pro proud 0..20mA, 4...20mA a 3,6...21mA
      • w750-497 - 8× AI pro napětí 0...10V ss nebo ±10V ss
      • w750-511 - generátor PWM
      • w750-515 - 4× relé
      • w750-517 - 2kanálový reléový výstup
      • w750-530 - 8× DI
      • w750-553 - 4× AO pro proud 0...20mA
      • w750-555 - 4× AO pro proud 4...20 mA
      • w750-556 - 2× AO pro napětí ±10 V
      • w750-559 - 4× AO pro napětí 0...10V
      • w750-597 - 8× AO pro napětí 0...10 V a ±10 V
      • w750-600 - zakončovací modul sběrnice
      • w750-602 - napájecí modul vnitřních sběrnic (10 A)
      • w750-613 - napájecí modul vnitřních sběrnic (2 A)
      • w750-627 - zakončovací modul pro prodloužení sběrnice
      • w750-628 - modul pro prodloužení sběrnice
      • w750-638 - čítač binárních impulzů
      • w750-642 - rádiový příjímač EnOcean
      • w750-652 - komunikační modul (RS-485, RS-422, RS-232)
      • w750-960 - konektor sběrnice PROFIBUS
      • w750-1400 - 16× DI
      • w750-1405 - 16× DI
      • w750-1406 - 16× DI

Komunikační protokol MQTT

Od verze Domat IDE 2.8.0.x.

Popis komunikačního protokolu

MQTT je komunikační protokol typu publish/subscribe využívající tzv. brokera pro výměnu zpráv. Klienti na brokera odesílají zprávy v libovolném formátu, který je pak rozposílá ostatním klientům. Klienti si dle topicu vybírají, jaké zprávy chtějí přijímat.

Základní pojmy

  • Broker - server (prostředník) klientů. Jeho úkolem je rozesílat publikované zprávy.

  • Topic - Cesta k hodnotám, které chceme číst/zapisovat.

    • Názvy úrovní jsou libovolné (formát řetězce UTF-8).
    • Úrovně jsou oddělené znakem lomítka (/).
    • Podporuje následující vzorce (wildcard):
      • + - jedna úroveň
        • Např. "budova/mistnosti/+/teplota" vybere všechny topicy teplota na úrovni budova/mistnosti/ (budova/mistnosti/kotelna/teplota, budova/mistnosti/sklad/teplota, atd.)
      • # - více úrovní
        • Např. "budova/mistnosti/#" vybere celou podřazenou hierarchii topiců pod úrovní budova/mistnosti/
  • Příznak Retain - Pokud má zpráva při publikování tento příznak nastavený, je na brokeru uchována pod daným topicem a lze ji číst (subscribe), i pokud nedochází k novým publikacím na daný topic.
  • QoS - Quality of Service. Určuje úroveň ověřování doručení zpráv.
    • 0 - Je odeslána pouze zpráva. Doručení není ověřené
    • 1 - Je odesláno potvrzení o přijetí zprávy (PUBLISH - PUBACK)
    • 2 - Je provedena obousměrná výměna zaručující doručení (PUBLISH - PUBREC - PUBREL - PUBCOMP)

Průběh komunikace dle nastaveného QoS

Tento komunikační protokol je podporovaný na platformách:

  • mark130.2
  • mark220LX
  • mark320LX
  • mark520
  • markMX.2
  • markMX.3
  • markMXL
  • IMIO110.2
  • IMIO105.2
  • ICIO205.2
  • Windows RT
  • Wall - všechny typy

Vytvoření kanálu

Pro vytvoření nového kanálu klikneme pravým tlačítkem myši na PLC a vybereme "Přidat kanál". Na tomto kanálu poté vybereme protokol MQTT.

mqtt_add_channel.png

Vlastnosti kanálu

Název - obvykle se pojmenuje podle zařízení, která jsou na něj připojena, nebo sběrnice v projektu.

Povolit - kanál musí být povolen (True), aby komunikoval.

Interval čtení / zápis - jak často má kanál zakomunikovat. Pro trvalou komunikaci, tj. co nejrychleji za sebou, nechte 0 ms.

Linkový protokol - v aktuální verzi podporovaný pouze TCP

Pauza mezi telegramy - doba neaktivity mezi odesíláním jednotlivých dotazů

  • Je-li nastaveno na vysokou hodnotu (>2s), může dojít k nenavázání spojení s brokerem (záleží na nastavení brokera).

Vytvoření komunikačního zařízení

Vytvoříme zařízení pod daným kanálem a vyplníme jeho vlastnosti.

Vlastnosti zařízení

  • Název - obvykle se pojmenuje podle zařízení, která jsou na něj připojena, nebo sběrnice v projektu.
  • Povolit - kanál musí být povolen (True), aby komunikoval.
  • Interval čtení / zápis - jak často má zařízení zakomunikovat. Pro trvalou komunikaci, tj. co nejrychleji za sebou, nechte 0 ms.
  • Je specifický box - informace o tom, zda je zařízení z knihovny, nebo ho lze upravovat.

Konfigurace subscription

  • QoS - Viz. QoS
  • Retain podle publikace - je-li True, tak zprávy s příznakem retain budou přijaty s hodnotou platnou v okamžiku jejich publikování
  • Zpracování retain - Určuje zpracování zpráv s příznakem Retain (Viz. Retain)
    • Přijmout vše - Veškeré zprávy s příznakem Retain jsou zpracované
    • Přijmout nové - Pouze zprávy odlišné od již přijatých s příznakem Retain jsou zpracované
    • Ignorovat retain - Zpráva je vždy zpracována jako kdyby neměla příznak Retain
  • Ignorovat lokální - Je-li True, čtecí skupiny budou ignorovat zprávy publikované z tohoto zařízení.

Parametry TCP

  • Adresa zařízení - adresa IP nebo název hostitele brokera, se kterým chceme komunikovat (například mqtt.test.com, 192.168.1.250..)
  • Ověřovat certifikát - možnost povolení ověření certifikátu. Pokud není certifikát ověřen, spojení se nenaváže - je-li tato volba True, v PLC musí být nahrány potřebné certifikáty a klíče a PLC musí mít přístup k příslušným certifikačním autoritám.
  • Port zařízení - port brokera, se kterým chceme komunikovat.
  • SSL povoleno - povolení šifrované komunikace. Pokud je povolena, v PLC musí být nahrány potřebné certifikáty a klíče.

Parametry zařízení MQTT

  • Název klienta - Název, pod kterým se PLC hlásí brokeru.
  • Uživatel - Uživatelské jméno pro přihlášení (pokud vyžadováno brokerem).
  • Heslo - Heslo pro přihlášení (pokud vyžadováno brokerem).
  • Časový limit KeepAlive - Maximální interval pro odesílání zpráv ping pro udržení spojení.
  • Časový limit QoS - Doba čekání pro potvrzení QoS zprávy před chybou komunikace a resetem komunikace.
  • Interval vypršení relace - Doba, po kterou broker a klient uchovávají nepotvrzené zprávy.

Definice prototypu

  • ID modelu - volně definovatelné, poznámka pro konkrétní typ zařízení.
  • ID verze přístroje - volně definovatelné, poznámka pro konkrétní verzi zařízení.
  • ID výrobce - volně definovatelné, poznámka pro jméno výrobce zařízení.
  • Zámek pro linkový protokol - má být False.
  • **Verze prototypu **- volitelný text, formát "Vx_y"
  • Stav - poznámka pro fázi vývoje.

Informace o zařízení

  • Model - volně definovatelné, poznámka pro název hardwaru.
  • Verze - volně definovatelné, poznámka pro verzi hardwaru.
  • Výrobce - volně definovatelné, poznámka pro název výrobce
  • Cesta kategorie - cesta, kde se zobrazí prototyp zařízení v menu "Přidat zařízení z knihovny", používá se pro lepší orientaci ve stromu uživatelsky definovaných zařízení.

Editor zařízení

Po otevření editoru zařízení je zde možnost klasického přidání skupiny a datových bodů. Další možností pro vytváření datových bodů je z editoru šablony, popsáno dále.

Postup pro přidání skupiny:

  • Pravým kliknutím na pracovní plochu v editoru zařízení otevřeme kontextové menu
  • Vybereme "Přidat skupinu"
  • Vyplníme parametry skupiny

Vlastnosti skupiny

  • Název - jméno skupiny.
  • Interval čtení/zápis - jak často má skupina zakomunikovat. Pro trvalou komunikaci, tj. co nejrychleji za sebou, nechte 0 ms.
  • Typ skupiny - volba mezi ReadOnly (pouze pro čtení, Subscribe) a WriteOnly (pouze pro zápis, Publish).

Parametry skupiny MQTT (ReadOnly)

  • Topic - viz. Topic
  • Šablona těla zprávy
    • SimpleJPath
      • Slouží pro práci s hodnotami ve formátu JSON
    • TextFormatter
      • Slouží pro práci s hodnotami v obecných textových formátech

Parametry skupiny MQTT (WriteOnly)

  • Will zpráva - označuje skupinu jako zapisovací pro tzv. Will zprávu. Jedná se o speciální typ zprávy, kterou broker hned po přijetí neposílá ostatním klientům. Místo toho ji má uloženou až do okamžiku odpojení daného klienta, teprve pak ji publikuje dál.
  • Topic - viz. Topic
  • QoS - viz. QoS
    • Poznámka: S nastaveným QoS 1 nebo 2 je frekvence publikování zpráv několikanásobně vyšší než u QoS 0. Jedná se o vlastnost driveru.
    • Není-li toto chování chtěné, například kvůli omezené rychlosti připojení nebo limitu počtu zpráv za vteřinu brokera, nastavte na kanále vyšší interval Pauza mezi telegramy (např. 500ms).
  • Retain - Zpráva bude publikovaná s příznakem Retain
  • Typ obsahu - Určuje hlavičku zapsanou do zprávy. Příjemci podává informaci o typu obsahu.
    • None - žádná hlavička
    • Text - obecný text (text/plain)
    • Json - formát JSON (application/json)
    • Xml - formát XML (application/xml)
    • Raw - binární data (application/octet-stream)
  • Šablona těla zprávy
    • SimpleJPath
      • Slouží pro práci s hodnotami ve formátu JSON
    • TextFormatter
      • Slouží pro práci s hodnotami v obecném textovém formátu

Šablona SimpleJPath

Textové pole slouží pro vytváření šablony samotné. Panel vpravo nahoře umožňuje vytváření a linkování proměnných z kontextového menu (pravé kliknutí -> Přidat datový bod), zároveň zobrazuje výsledný vzorec JPath hledaných hodnot. Panel vpravo dole slouží k vytváření vazby klíčů na datové body, popsáno dále. Možnost "Zobrazit všechny znaky" zapne vykreslování neviditelných znaků (mezera, tabulátor, nový řádek...) v textovém poli. V šabloně SimpleJPath jsou názvy mapovaných proměnných ohraničené složenými závorkami v uvozovkách. Při publikování je též možné mapovat více proměnných znakem svislé čáry (|), např. "{promenna_1|promenna2}", naformátované hodnoty datových bodů se pak zapíší za sebe. Příklad šablony SimpleJPath

Klíče

Pro přidání klíče klikneme pravým tlačítkem na vlastnost objektu a vybereme "Přidat klíč". Vlastnosti objektů, které lze využít jako klíče jsou automaticky podbarveny.

Klíčů se dá využít pro získání hledané hodnoty z pole objektů. V následujícím příkladu je použit pro vybrání hodnoty temperature z objektu v poli, pouze pokud se vlastnost city rovná řetězci "Frankfurt".

Příklad použití klíčů SimpleJPath

Možnost "Považovat za řetězec/hodnotu"

Chceme-li například publikovat hexadecimální hodnotu jako řetězec, klikneme pravým tlačítkem na mapovaný datový bod v editoru a vybereme "Považovat za řetězec."

Vybraná hodnota se zobrazí v panelu vpravo dole, který u publish skupin SimpleJPath slouží pro tento účel.

Výsledná hodnota ve zprávě pak bude zapsaná jako řetězec, tedy např. "hodnota": "0xFF00" místo "hodnota": 0xFF00. Pokud není publikovaná hodnota zaručeně číslo v desítkové soustavě anebo binární true/false, např. u formátovačů Hexadecimal či Mapping, tak je nutné tuto hodnotu nastavit jako řetězcovou, jinak může být struktura výsledného JSONu neplatná!

Šablona TextFormatter

Textové pole slouží pro vytváření šablony samotné. Pole Start marker a End marker slouží pro nastavování znaků, které v šabloně označují proměnnou. Panel vpravo umožňuje vytváření a linkování proměnných z kontextového menu (pravé kliknutí -> Přidat datový bod). Možnost "Zobrazit všechny znaky" zapne vykreslování neviditelných znaků (mezera, tabulátor, nový řádek...) v textovém poli. V šabloně TextFormatter jsou volně nastavitelné znaky co označují proměnnou, nemusí být v uvozovkách. Text lze uspořádat v podstatě do jakéhokoliv neměnného textového formátu (CSV, XML, Line Protocol, apod.) Při publikování je též možné mapovat více proměnných znakem svislé čáry (|), např. [promenna_1|promenna2], naformátované hodnoty datových bodů se pak zapíší za sebe (má stejný efekt jako [promenna_1][promenna_2]). Je též možné vytvářet statické šablony pro publikování, čili neměnný text (bez mapovaných proměnných). Příklad šablony TextFormatter

V další části definujeme datové body, do nichž bude driver načítat hodnoty, vyčtených při komunikaci skupiny.

Vlastnosti datového bodu

  • Název - jméno proměnné, pod ním bude proměnná identifikovaná v programu
  • Skupina - vybereme skupinu, do níž proměnná přísluší.
  • Typ skupiny - vyplní se automaticky po vybrání skupiny.
  • Typ mapované kom. hodnoty - výběr mezi BuiltIn a Bit. Typ Array není u MQTT podporovaný!
  • Typ ST - vybereme typ proměnné, která vznikne touto definicí.
  • Transformace - Mezi načtením hodnoty a přiřazením do proměnné je možné hodnotu přepočítat - transformovat. Využívá se to např. v případě, že se přenáší analogová hodnota (teplota), pro větší rozlišení násobená 10 nebo 100 (formát tzv. HVAC Integer).

Autogen

  • Povolit autogen - Povolením Autogenu (automatického generování) se při kompilaci automaticky vytvoří globální proměnné a namapují se na vstupní a výstupní proměnné. Teprve s globálními proměnnými je možné pracovat v programech a vkládat je do žebříčků FUPLA. Pokud není Autogen povolen, je nutné globální proměnné vytvářet a přiřazovat vstupním a výstupním proměnným manuálně. Doporučuje se nastavit Povolit Autogen = True.

Mapování

  • IO => ST - mapování vstupní proměnné na globální proměnnou ("vstup - výstup na strukturovaný text či FUPLA").
  • ST => IO - mapování globální proměnné na výstupní proměnnou ("strukturovaný text či FUPLA na vstup - výstup").

Parametry datových bodů zařízení MQTT

Obecné parametry formátovačů

  • Prefix - Po vyplnění se tento řetězec bude u subscribe očekávat před hodnotou. U publish se bude před hodnotu dodatečně zapisovat.
  • Suffix - Po vyplnění se tento řetězec bude u subscribe očekávat za hodnotou. U publish se bude za hodnotu dodatečně zapisovat.
  • Automatické mezery  - pokud je True, tak mezi hodnotou a prefixem/sufixem je u publish doplněna mezera. U subscribe se mezery budou očekávat mezi specifikovaným prefixem/sufixem
  • Vynutit znaménko - (pouze publish) - číselná hodnota se vždy zapisuje se znaménkem (např. "+45" místo "45")
  • Minimální délka - (pouze publish) - minimální délka výsledného textu čísla (doplněno nulami na začátku, pokud je počet nul čísla menší než nastavená hodnota)
    • Doplnit mezerami - (pouze publish) - doplní mezerami místo nul
  • Počet desetinných míst - (pouze publish) - počet zapisovaných desetinných míst čísla. Pokud je hodnota vyšší než dovoluje přesnost datového typu, je doplněno nulami

Formátovač

  • None
    • Hodnota je ignorována
  • Integer - Převod celočíselné hodnoty

    • Obecné parametry: Prefix, Suffix, Automatické mezery, Vynutit znaménko, Minimální délka, Doplnit mezerami (viz. výše)
    • Kompatibilní se všemi celočíselnými i neceločíselnými datovými typy
      • Při použití s desetinnými čísly je hodnota zaokrouhlena!
    • Převáděná textová hodnota čísla může být řetězcem ("hodnota": "16") nebo volným číslem ("hodnota": 16)
  • FloatingPoint - Převod desetinného čísla

    • Obecné parametry: Prefix, Suffix, Automatické mezery, Vynutit znaménko, Minimální délka, Doplnit mezerami, Počet desetinných míst (viz. výše)
    • Kompatibilní se všemi celočíselnými i neceločíselnými datovými typy
      • Při použití s celočíselnými datovými typy je hodnota zaokrouhlena!
    • Převáděná textová hodnota čísla může být řetězcem ("hodnota": "16.9") nebo volným číslem ("hodnota": 16.9)
  • Hexadecimal - Převod čísla mezi zápisem šestnáctkové a desítkové soustavy

    • Obecné parametry: Prefix, Suffix, Automatické mezery, Doplnit mezerami (viz. výše)
    • Hexadecimální prefix - Žádný, 0x, nebo 0X. Zapisuje se před číslo - např. 0xAB3C
    • Velká písmena - je-li True, zapisuje velkými písmeny (např. 00AB3C)
    • Kompatibilní se všemi celočíselnými i neceločíselnými datovými typy
  • Date - Převod řetězce datumu

    • Obecné parametry: Prefix, Suffix, Automatické mezery (viz. výše)
    • Kompatibilní s datovými typy datumu
    • Formátovací řetězec
      • d - dny
      • M - měsíce
      • y - roky
  • Time - Převod řetězce času

    • Obecné parametry: Prefix, Suffix, Automatické mezery (viz. výše)
    • Kompatibilní s datovými typy času
    • Formátovací řetězec
      • h - hodiny
      • m - minuty
      • s - vteřiny
      • f - desetinná část vteřiny (podporováno až na 9 míst)
  • DateTime - převod řetězce datumu a času

    • Obecné parametry: Prefix, Suffix, Automatické mezery (viz. výše)
    • Kompatibilní s datovými typy datumu, času a DT
    • Formátovací řetězec
      • d - dny
      • M - měsíce
      • y - roky
      • h - hodiny
      • m - minuty
      • s - vteřiny
      • f - desetinná část vteřiny (podporováno až na 9 míst)
    • Příklad: 2024-10-09_14:09:06.1255 -> yyyy-MM-dd_hh:mm:ss.ffff
  • Mapping - Mapování stavů

    • Obecné parametry: Prefix, Suffix, Automatické mezery (viz. výše)
    • Umožňuje mapovat číselné hodnoty na textové při publikování anebo opačně při zápisu
    • Kompatibilní se všemi celočíselnými datovými typy
    • Bez ohledu na datový typ mapované proměnné je maximální podporovaný rozsah mapování -2147483648 až +2147483647, čili rozsah datového typu LINT.
    • Příklad mapování:
  • Length - Délka řetězce

    • Nelze použít u publish
    • Typ měření
      • Délka vyrovnávací paměti - počet bajtů pole, které tvoří řetězec
      • ASCII řetězec - délka po převedení na řetězec ASCII (v tomto formátu jsou znaky kódované fixně jedním bajtem)
      • UTF-8 řetězec - délka po převedení na řetězec UTF-8 (v tomto formátu jsou znaky kódované v proměnné délce 1-4 bajtů)
      • UTF-16LE řetězec - délka po převedení na řetězec UTF-16 - malý endian (v tomto formátu jsou znaky kódované v proměnné délce 2 nebo 4 bajtů)
      • UTF-16BE řetězec - délka po převedení na řetězec UTF-16 - velký endian (v tomto formátu jsou znaky kódované v proměnné délce 2 nebo 4 bajtů)
  • Raw - Přímé kopírování bajtů
    • Varování: jelikož tento formátovač může produkovat neplatné nebo řídící znaky, jeho použití v publikované zprávě s dalším textem (např. JSON) může mít za následek obsah, který zprávu pravděpodobně znehodnotí!
    • Přímo kopíruje bajty, ze kterých se proměnná skládá. Např. text "abc1" -> 0x61626331 (kódování ASCII)
    • Offset dat (Parser) - Číslováno od 0; určuje, na kolikátém bytu začínají data proměnné. 
    • Bitový offset (Parser) - Posouvání v bajtu mezi jednotlivými bity. Např. pro čtení nebo zápis 3. bitu v bajtu. Počítá se od 0, tedy pro čtení 4. bitu (bit 3) bude Bitový offset = 3. Nastavuje se v intervalu 0 až 7.
    • Délka Multibyte (Parser) - Kolik bajtů se má zapisovat/číst z/do proměnné
    • Pořadí Multibyte (Parser) - V tomto řetězci je možné zvolit pořadí bajtů, v jakém se budou z telegramu mapovat na datový typ proměnné. Řeší se tím různé varianty formátů typu "rotate", "non-rotate", "byte swap", "word swap", "Intel byte order" atd. Výchozí hodnota je "12345678", obvykle ji není nutné měnit.

Poznatky z testování

Testováno na brokerech:

  • RabbitMQ
    • V současné době nepodporuje QoS 2. Klienti, kteří se pokouší připojit s QoS 2 jsou okamžitě odpojeni. Jedná se o vlastnost brokera samotného.
  • LavinMQ
  • EMQX
  • HiveMQ
  • Mosquitto
Next
Komunikační protokol BACnet