KNX protokol
Podporované typy a verzie zariadení
Konfigurácia komunikačnej linky
Parametre protokolu linky
Konfigurácia komunikačnej stanice
Konfigurácia meraných bodov
Literatúra
Zmeny a úpravy
Revízie dokumentu
Podporované typy a verzie zariadení
Protokol KNX je otvorený štandard používaný pri automatizácii budov. Implementácia KNX využíva Falcon SDK vyvíjaný nadáciou KNX. Vzhľadom na to, že tento SDK je vyvíjaný v jazyku C#, prepojenie na D2000 KOM proces je riešené cez samostatný modul d2knx, ktorý sa štandardne nachádza v adresári protdll a komunikuje s D2000 KOM procesom cez TCP spojenie.
Pre každú komunikačnú linku, na ktorej sú stanice s KNX protokolom, je spustená jedna inštancia modulu d2knx, ktorá vyžaduje samostatné KNX rozhranie. KNX rozhranie môže byť pripojené cez USB rozhranie alebo môže byť dostupné po sieti cez IP adresu.
Poznámka k modulu d2knx:
Modul d2knx je aplikácia, ktorá k svojmu behu potrebuje nainštalované ".NET Core 3.1". Odporúčame vyskúšať jej funkčnosť manuálnym spustením v príkazovom riadku.
Po spustení bez parametrov vypíše nápovedu a zoznam dostupných KNX USB zariadení a následne skončí.
Vyžadované parametre sú:
- IP adresa - adresa, na ktorej d2knx počúva (napr. 127.0.0.1 alebo 0.0.0.0 alebo konkrétna IP adresa počítača, kde je modul d2knx spustený, napr. 172.16.0.1)
- port - TCP port, na ktorom d2knx počúva
- debug - voliteľný parameter, ktorý aktivuje pomocné ladiace výpisy
Príklady ručného spustenia d2knx:
- d2knx 127.0.0.1 4011 debug
- d2knx 0.0.0.0 4012
Príklad výstupu:
EIB/KNX interface module
(c) 2020 Ipesoft
Usage : knx ListenIP ListenPort [debug]
Example: knx 127.0.0.1 4011
Available interfaces:
Device 0 Path \\?\hid#vid_16d0&pid_0490#6&34ad9346&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}, Name Tapko USB Interface
Konfigurácia komunikačnej linky
- Kategória komunikačnej linky: TCP/IP-TCP.
- IP adresa je adresa, na ktorej počúva modul d2knx. Ak je modul d2knx spúšťaný D2000 KOM procesom, odporúčaná adresa je 127.0.0.1 (localhost). Je možné prevádzkovať modul d2knx na vzdialenom počítači, v tom prípade treba nakonfigurovať IP adresu vzdialeného počítača.
Pozn: je možné nakonfigurovať aj viacero IP adries (oddelených čiarkou alebo bodkočiarkou). Tak je možné v redundantných D2000 systémoch nakonfigurovať pripájanie sa D2000 KOM procesu napr. k nezávisle spusteným d2knx modulom (každý z nich je spustený na jednom z aplikačných serverov), čo zabezpečuje funkčnosť komunikácie pri výpadku KNX USB adaptéra na jednom serveri bez potreby prehadzovania redundancie D2000. - Číslo portu je číslo TCP portu, na ktorom počúva modul d2knx.
- Číslo linky je nepoužité, nastavte hodnotu 0.
Parametre protokolu linky
Dialóg konfigurácia linky - záložka Parametre protokolu.
Ovplyvňujú niektoré voliteľné parametre protokolu. Môžu byť zadané nasledovné parametre protokolu linky:
Tab. č. 1
Parameter | Popis | Jednotka / rozmer | Náhradná hodnota |
---|---|---|---|
KNX Driver Program | Konfigurácia spúšťania modulu d2knx procesom D2000 KOM. Ak je tento parameter prázdny, modul d2knx nie je spúšťaný (predpokladá sa iný mechanizmus jeho spúšťania). Parameter obsahuje tieto symbolické mená:
| - | #PROTDIR#d2knx #HOST# #PORT# |
KNX Interface Type | Typ KNX adaptéra, ktoré modul d2knx otvára:
| - | USB interface by position |
KNX Interface ID | Identifikácia otváraného KNX adaptéra, ktorá závisí od vybraného typu KNX rozhrania - viď popis parametra KNX Interface Type. Môže to byť poradové číslo USB rozhrania, časť jeho názvu alebo cesty, prípadne IP adresa KNX routra. | - | 0 |
IP Interface Port | Ak KNX Interface ID = "IP interface", tak tento parameter udáva číslo portu (TCP alebo UDP), na ktorom KNX router komunikuje. Štandardné číslo portu je 3671. | - | 3671 |
IP Interface Protocol | Ak KNX Interface ID = "IP interface", tak tento parameter udáva, či je na komunikáciu s KNX routrom použitý UDP alebo TCP protokol:
| Automatic | Automatic |
IP Interface NAT | Ak KNX Interface ID = "IP interface" a komunikuje sa cez UDP protokol, tak tento parameter udáva, či samá použiť pr komunikácii preklad adries (NAT). | YES/NO | NO |
KNX Interface Address (x.y.z) | KNX adresa, ktorú je možné nastaviť KNX rozhraniu po jeho otvorení. Ak nie je zadaná, použije sa existujúca adresa KNX rozhrania. | - | - |
Driver Debug | Zapnutie ladiacich informácii modulu d2knx. | YES/NO | NO |
Full Debug | Zapnutie ladiacich informácií o čítaných/zapisovaných hodnotách. | YES/NO | NO |
Konfigurácia komunikačnej stanice
- Komunikačný protokol: KNX Protocol.
- Adresa stanice:
- GROUP - Merané body na stanici s adresou GROUP bude dostávať všetky hodnoty typu Group address z komunikácie.
- area.line.device - (napr. 1.3.99) kde area je 0..15, line je 0..15, device je 0..255. Merané body na stanici s konkrétnou adresou budú dostávať hodnoty iba pokiaľ boli poslané KNX zariadením s touto adresou.
Parametre protokolu stanice
Môžu byť zadané nasledovné parametre protokolu stanice:
Parameter | Popis | Jednotka / rozmer | Náhradná hodnota |
---|---|---|---|
Read Group Addresses | Spôsob explicitného čítania meraných bodov typu Group address:
| Never Once Always | Once |
Read Group Priority | Priorita čítania použitá pri explicitnom čítaní meraných bodov typu Group address:
| - | USB interface by position |
Read Group Timeout | Timout na odpoveď pri explicitnom čítaní meraných bodov typu Group address. Hodnota 0 znamená defaultný timeout definovaný KNX ovládačom. | ms | 0 |
Konfigurácia meraných bodov
Možné typy hodnôt bodov: Ai, Ci, Di, TiR,TxtI, Ao, Co, Dout, ToR, TxtO
Adresa meraného bodu má formát [+]MemoryArea Position[:StringLength] [Count]
- Znak "+" sa používa pre pamäte obsahujúce celočíselné hodnoty a znamená, že hodnota bude interpretovaná ako Unsigned číslo (8, 16 alebo 32-bitové číslo bez znamienka).
Ak nie je znak "+" nájdený, hodnota je interpretovaná ako Signed číslo (8, 16 alebo 32-bitové číslo so znamienkom).
Pre pamäte obsahujúce bity alebo float hodnoty je "+" ignorované. MemoryArea špecifikuje typ pamäte:
MemoryArea Popis typu pamäte Veľkosť dát %IGNORE Meraný bod bude ignorovaný.
Pozn: za %IGNORE môžu nasledovať ľubovolné znaky, napr. %IGNORE +%R1- %I InputBit (Discrete inputs, prístup po 1 bite) 1 bit %IB InputByte (Discrete inputs, prístup po 1 byte) 1 byte %Q OutputBit (Discrete outputs, prístup po 1 bite) 1 bit %QB OutputByte (Discrete outputs, prístup po 1 byte) 1 byte %T TemporaryBit (Temporary references, prístup po 1 bite) 1 bit %TB TemporaryByte (Temporary references, prístup po 1 byte) 1 byte %M MemoryBit (Internal references, prístup po 1 bite) 1 bit %MB MemoryByte (Internal references, prístup po 1 byte) 1 byte %S SBit (System status references, prístup po 1 bite) 1 bit %SSB SByte (System status references, prístup po 1 byte) 1 byte %SA SABit (System status references A, prístup po 1 bite) 1 bit %SAB SAByte (System status references A, prístup po 1 byte) 1 byte %SB SBBit (System status references B, prístup po 1 bite) 1 bit %SBB SBByte (System status references B, prístup po 1 byte) 1 byte %SC SCBit (System status references C, prístup po 1 bite) 1 bit %SCB SCByte (System status references C, prístup po 1 byte) 1 byte %G GlobalBit (Discrete globals, prístup po 1 bite) 1 bit %GB GlobalByte (Discrete globals, prístup po 1 byte) 1 byte %AI AnalogInput (Analog input registers, prístup po 2 bytoch) 2 bytes %AQ AnalogInput (Analog output registers, prístup po 2 bytoch) 2 bytes %R Registers (System register reference, prístup po 2 bytoch) 2 bytes %RD Registers Double (System register reference, 2 registre ako double word) 4 bytes %RF RegistersFloat (System register reference, 2 registre ako float) 4 bytes %L LocalSubblock (Local registers, prístup po 2 bytoch) 2 bytes %P ProgramBlockData (Program registers, prístup po 2 bytoch) 2 bytes Poznámka: poradie bytov and wordov v protokole je little-endian: B1 B2 pre 2-bajtové typy, B1 B2 B3 B4 pre 4-bajtové typy.
- Position udáva pozíciu objektu v rámci typu pamäte. Je to kladné 16-bitové číslo (1-65535).
Pozn: pre typy pamäte %RD a %RF sú platné pozície iba 1-65534, keďže sa jedná iba o celočíselnú/float interpretáciu dvoch za sebou idúcich registrov. - StringLength udáva dĺžku reťazca v znakoch. Tento parameter je povolený iba pre typ pamäte %R. Každý register je interpretovaný ako 2-znakový reťazec (formát little endian). Tj. meraný bod s adresou %R1000:4 číta 4-znakový reťazec z registrov 1000 a 1001.
- Count udáva počet objektov. Tento parameter má zmysel iba vtedy, ak je nakonfigurovaný Cieľový stĺpec štruktúry. Udáva počet objektov, ktoré budú načítané a zapísané do štruktúry.
- príklady adries:
%R 1 20
+%R 100
+%AI25
%AQ1 5
%IB 12
%R12111:80
Poznámky k Fanuc Robot R-30iA/R-30iB
Podľa dokumentácie FANUC Robot series R-J3/R-J3iB/R-30iA CONTROLLER CIMPLICITY HMI for Robots OPERATOR’S MANUAL, kapitola 6 - ADDRESS ASSIGNMENT TO POINTS, podkapitola 6.1 - READING AND WRITING I/O SIGNALS (%I, %Q, %M, %AI, %AQ) sú rôzne typy I/O signálov mapované na premenné SRTP protokolu takto:
Robot controller I/O signal | PLC address | Príklad |
---|---|---|
Digital Input DI[x] | %Qx | DI[1] <=> %Q1 |
Digital Output DO[x] | %Ix | DO[1] <=> %I1 |
Robot Input RI[x] | %Q(5000+x) | RI[1] <=> %Q5001 |
Robot Output RO[x] | %I(5000+x) | RO[1] <=> %I5001 |
UOP Input UI[x] | %Q(6000+x) | UI[1] <=> %Q6001 |
UOP Output UO[x] | %I(6000+x) | UO[1] <=> %I6001 |
SOP Input SI[x] | %Q(7000+x) | SI[0] <=> %Q7001 |
SOP Output SO[x] | %I(7000+x) | SO[0] <=> %I7001 |
Weld Input WI[x] | %Q(8000+x) | WI[0] <=> %Q8001 |
Weld Output WO[x] | %I(8000+x) | WO[0] <=> %Q8001 |
Wire Stick Input WSI[x] | %Q(8400+x) | WSI[0] <=> %Q8400 |
Wire Stick Output WSO[x] | %I(8400+x) | WSO[0] <=> %Q8400 |
Group Input GI[x] | %AQx | GI[1] <=> %AQ1 |
Group Output GO[x] | %AIx | GO[1] <=> %AI1 |
Analog Input AI[x] | %AQ(1000+x) | AI[1] <=> %AQ1001 |
Analog Output AO[x] | %AI(1000+x) | AO[1] <=> %AI1001 |
PMC keep relay DO[x] (x : 10001 – 10144) Ka.b | %Ix %I((a*8)+b+10001) | DO[10001] <=> %I10001 K2.5 <=> %I10022 |
PMC internal relay DO[x] (x : 11001 – 23000) Ra.b | %M(x-11000) %M((a*8)+b+1) | DO[11001] <=> %M1 R2.5 <=> %M22 |
PMCdata table GO[x] (x : 10001 – 12000) D(a*2), D((a*2)+1) | %AI(x-6000) %AI(a+4001) | GO[10001] <=> %AI4001 D4, D5 <=> %AI4003 |
Podľa rovnakého dokumentu, podkapitola 6.2 - READING FROM AND WRITING TO REGISTERS (%R) je štandardné mapovanie registrov z radiča robota na adresy v PLC :
Robot controller data | PLC address | Príklad |
---|---|---|
Register | %Rx | R[1] <=> %R1 |
Hodnoty v registroch sú 16-bitové čísla so znamienkom, desatinné časti sú odrezané.
Dokumentácia ďalej uvádza, že toto štandardné mapovanie je možné zmeniť pomocou systémovej premennej $SNPX_ASG. Táto umožňuje nastaviť multiplikátor pri prevode a zmeniť mapovanie registrov. Jeden register môže byť mapovaný do jednej premennej %R (16-bitové číslo so znamienkom), do dvoch za sebou idúcich premenných %R (32-bitové číslo so znamienkom, použite v adrese meraného bodu %RD) alebo do dvoch za sebou idúcich premenných %R ako reálne číslo (32-bitové float číslo , použite v adrese meraného bodu %RF).
Štandardné mapovanie registrov R zabezpečuje nastavenie $SNPX_ASG[1]:
Položka | Hodnota |
---|---|
$ADDRESS | 1 |
$SIZE | 10000 |
$VAR_NAME | 'R[1]@1.1' |
$MULTIPLIFY | 1.000 |
Pri tomto nastavení budú registre R[1] .. R[10000] mapované na registre %R1 .. %R10000 ako 16-bitové čísla so znamienkom.
Štandardné mapovanie pozičných registrov PR (určených na ukladanie pozícii robota) zabezpečuje nastavenie $SNPX_ASG[2]:
Položka | Hodnota |
---|---|
$ADDRESS | 11000 |
$SIZE | 100 |
$VAR_NAME | 'PR[1]' |
$MULTIPLIFY | 0.000 |
Pri tomto nastavení budú jednotlivé zložky polohy (X, Y, Z, W, P, R atď) uložené ako 32-bitové float čísla na adresách %RF11000, %RF11002, %RF11004 atď (50 registrov na jeden PR, celkove 100 registrov na PR[1] a PR[2]. Viac detailov viď podkapitola 6.3 READING FROM AND WRITING TO POSITION REGISTERS (%R).
Štandardné mapovanie registra aktuálnej pozície POS zabezpečuje nastavenie $SNPX_ASG[3]:
Položka | Hodnota |
---|---|
$ADDRESS | 12000 |
$SIZE | 100 |
$VAR_NAME | 'POS[0]' |
$MULTIPLIFY | 0.000 |
Pri tomto nastavení budú jednotlivé zložky aktuálnej polohy (X, Y, Z, W, P, R atď) uložené ako 32-bitové float čísla na adresách %RF12000, %RF12002, %RF12004 atď (50 registrov na jeden POS, celkove 100 registrov na POS[0] a POS[1]. Viac detailov viď podkapitola 6.4 READING AND WRITING THE CURRENT POSITION (%R).
Mapovanie ALM registrov obsahujúcich históriu alarmov je možné nastavením $SNPX_ASG[x]:
Položka | Hodnota |
---|---|
$ADDRESS | 12100 |
$SIZE | 300 |
$VAR_NAME | 'ALM[1]' |
$MULTIPLIFY | 1.000 |
Pri tomto nastavení budú jednotlivé zložky histórie alarmov (AlarmID, Alarm number, Alarm severity, Alarm message) prístupné na nakonfigurovaných adresách (100 registrov na jeden ALM, tj. 300 registrov pokryje 3 alarmy). Viac detailov viď podkapitola 6.5 READING ALARM HISTORY (%R).
Mapovanie PRG registrov obsahujúcich stav vykonávania programu (program execution status) je možné nastavením $SNPX_ASG[x]:
Položka | Hodnota |
---|---|
$ADDRESS | 12400 |
$SIZE | 18 |
$VAR_NAME | 'PRG[1]' |
$MULTIPLIFY | 1.000 |
Pri tomto nastavení budú jednotlivé zložky stavu vykonávania programu (Program name, Line number, Execution status, Calling program name) prístupné na nakonfigurovaných adresách (18 registrov na jeden PRG). Viac detailov viď podkapitola 6.6 READING THE PROGRAM EXECUTION STATUS (%R).
Mapovanie rôznych systémových premenných je takisto možné nastavením $SNPX_ASG[x]. Príklad:
Položka | Hodnota |
---|---|
$ADDRESS | 12420 |
$SIZE | 2 |
$VAR_NAME | '$mcr.$genoverride' |
$MULTIPLIFY | 1.000 |
Pri tomto nastavení bude v registroch 12420 a 12421 systémová premenná OVERRIDE (položka $genoverride systémovej premennej $mcr) ako 32-bitový integer (adresa %RD12420, prístup na čítanie aj zápis). Viac detailov viď podkapitola 6.7 READING FROM AND WRITING INTO SYSTEM VARIABLES (%R).
Mapovanie komentárov k registrom, pozičným registrom a I/O je takisto možné nastavením $SNPX_ASG[x]. Príklad:
Položka | Hodnota |
---|---|
$ADDRESS | 12440 |
$SIZE | 160 |
$VAR_NAME | 'R[C1]' |
$MULTIPLIFY | 1.000 |
Pri tomto nastavení budú v registroch %R12420 až %R12599 komentáre k registrom R1 až R4 (40 registrov, t.j. 80 znakov na komentár - adresy %R12440:40, %R12480:40, %R12520:40 a %R12560:40). Podobne je možné nakonfigurovať komentáre k iným typom objektov (napr. 'PR[C1]', 'DI[C2]', 'GI[C1]', 'GO[C1]' atď). Viac detailov viď podkapitola 6.8 READING AND WRITING THE COMMENT OF REGISTERS, POSITION REGISTERS, AND I/O (%R).
Mapovanie hodnôt I/O a stavu simulácie je takisto možné nastavením $SNPX_ASG[x]. Príklad:
Položka | Hodnota |
---|---|
$ADDRESS | 12430 |
$SIZE | 4 |
$VAR_NAME | 'RO[S1]' |
$MULTIPLIFY | 1.000 |
Pri tomto nastavení budú v registroch %R12430 až %R12433 stavy simulácie výstupov RO[1] až RO[4]. Podobne je možné nakonfigurovať stavy simulácie iných typov objektov (napr. 'DI[S1]', 'DO[C2]', 'DO[S1]', 'RI[S1]' atď) ako aj hodnoty týchto objektov (napr. 'DI[1]', 'DI[2]', 'UO[1]', 'SI[1]' atď). Viac detailov viď podkapitola 6.9 READING AND WRITING THE VALUE AND SIM STATUS OF I/O (%R).
Literatúra
https://en.wikipedia.org/wiki/KNX_(standard)
Zmeny a úpravy
-
Revízie dokumentu
- Ver. 1.0 - 13. marec 2020 - Vytvorenie dokumentu.
Súvisiace stránky: