RS-485 / Modbus :
5.9.1. Általános
5.9.2. Műszaki paraméterek
5.9.3. Modbus extension hozzáadása
5.9.4. Kommunikáció beállítása
5.9.5. Új eszköz hozzáadása
5.9.6. Eszköz exportálása
5.9.7. Eszköz importálása
5.9.20. Modbus RTU memóriatérkép.
5.9.21. Modbus RTU eltolási érték
5.9.22. Modbus RTU adattípusok
5.9.23. Modbus RTU (FC01) (0xxxx) Read coil status
5.9.24. Modbus RTU (FC02) (1xxxx) Read input status
5.9.25. Modbus RTU (FC03) (4xxxx) Read holding register
5.9.26. Modbus RTU (FC04) (3xxxx) Read input register
5.9.27. Modbus RTU (FC05) (0xxxx) Write single coil
5.9.28. Modbus RTU (FC06) (4xxxx) Preset single register
5.9.29. Modbus RTU (FC15) (0xxxx) Force multiple coil
5.9.30. Modbus RTU (FC16) (4xxxx) Preset multiple registers
5.9.30 Vásárlás
- BUSZ bővítő csatlakozó IN (szalagkábeles)
- BUSZ bővítő csatlakozó OUT (szalagkábeles)
- DC 24V tápfeszültség csatlakozó
- BUSZ bővítő csatlakozó (csavaros)
- BUSZ lezáró ellenállás kapcsoló
- RGB LED
- Funkció gomb
- Adat GND
- RS-485/Modbusz csatlakozó
Kommunikáció:
- RS-485
- Modbus RTU
- Modbus ASII
- RS-232 *
MEGJEGYZÉS: *Az eszköz műszaki adatlapja megemlíti az eszköz RS-232-es adatok feldolgozásának képességét, de ezt még nem teszteltük.
Tápfeszültség: DC 24 V
Energiafogyasztás (max.): 1 W
Sorkapocs max.: 1,31 mm²
Meghúzási nyomaték: 0,2 Nm
Általános:
Környezeti hőmérséklet: 0-40 °C
Páratartalom: 5-90% relatív páratartalom
Méret (Szé x Ma x Mé): (54x90x60)mm
DIN: 3TE
Védettség: IP-20
Súly (N/B): 0,1kg/0,235 Kg
Harmonizált szabvány: EN61000-6-3
Védelmi osztály: III
Lépjen be az Eszközök (Devices) menübe:
Kattintson az új eszköz hozzáadása gombra:
A megnyíló ablakban az Keressen helyi bővítményeket (1 Search for local extensions) gombra kattintva megindul az eszközök keresése, megjelenik egy figyelmeztető ablak (2.).
Ha a rendszer megtalálta az extensiont, akkor megjelenik a sorozatszáma. (3). Valamint az IP-cím mezőben(6) a local mint elérési útvonal.
Ha még nincs meg az eszköz, akkor offline módban is létrehozható.
A Bővítmény hozzáadása offline módban (4 Add extension offline) jelölőnégyzet kipipálása után megjelenik egy legördülő ablak, ahol választhatunk a bővítmények közül.
Az offline módban létrehozott eszközök ugyanúgy használhatók a programozásban mint az oneline eszközök.
Ha létrehozta az eszközt adjon neki egy egyedi nevet (5), ezzel a névvel fog fent megjelenni az eszközlistában.
A beállítások végeztével kattintson a Bővítmény hozzáadása (7 Add extension) gombra.
Lépjen be az Eszközök (Devices) menübe:
- Válassza ki a modbus extensiont.
- Nyissa le a konfiguráció alatti fület .
A legördülő ablak két területre oszlik.
1.Terület:
Ez a terület a soros busz beállítására szolgál.
Az itt található paramétereknek meg kell, hogy egyezzenek a buszon található összes eszközzel.
A mai eszközök többségében ez már szabadon konfigurálható, de néhány régbbi eszköz csak fix beállításokkal üzemel.
Ezeket a beállításokat minden eszközön el kell végezni, a beállítás módja mindig a gépkönyvekben található.
Megjegyzés: nagyobb gépeknél célszerű a gépek beállítását a beüzemelővel közösen elvégezni.
Átviteli sebesség (Baudrate): 50, 75, 110, 124, 150, 200, 300, 600, 1200, 1800, 2400, 4800, 9600, 19200, 38400, 57600, 115200 (Baud)
Adatbitek (Databits): 5, 6, 7, 8
Stop bitek száma (Stopbits): 1, 2
Paritás (Parity): Páros (Even), Páratlan (Odd), Egyik sem (None)
Stopbyte: Az üzenet végét jelző karakter.
Az üzenetek közötti minimális idő: Ha nincs Stopbyte megadva, akkor az üzenetek között minimális időnek kell eltelnie ahhoz, hogy felismerhető legyen az üzenet hossza.
2. Terület:
Itt két a adatpontot aktiválhatunk, ami megjelenik a programozói területen az eszköz alatt:
TL1: A Modbusz extension hőmérséklete (Onboard Temperature )
UL1: A Modbusz extension tápfeszültsége (Supply Volatage)
Ha végzett a beállításokkal kattintson a Mentés (Save) gombra.
Lépjen be az Eszközök (Devices) menübe:
Kattintson az új soros eszköz hozzáadás gombra:
Név (Name): A Modbus eszköz neve.
Leírás (Description): Rövid leírás ,megjegyzés.
Fix címet használ ? (Use fixed address?):* Kipipálva megjelenik Cím megadása beviteli mező.
Cím (Address): A Szolga (slave) eszköz címe.
Protocol:** Ha Egyik sem (None)-t választ, akkor kézzel kell megadni az RS-485 parancssort.
Ha elkészült kattintson a Mentés (Save) gombra.
*MEGJEGYZÉS: A Modbus RTU megköveteli, hogy az eszközcímet minden üzenet elejéhez hozzáfűzzék. Ha kiválasztja a Fix címet használ dobozt, minden üzenet automatikusan beszúrja a címet az üzenet első helyére. Ha a pipa nincs beállítva, a címet, manuálisan kell beállítani minden egyes üzenethez.
**MEGJEGYZÉS: A Modbus protokoll CRC hibaészlelési módszert használ. Minden üzenet végéhez két bájtot fűz. A végberendezések összehasonlítják a CRC bájtokat, hogy észleljék, történt-e hiba az átvitel során. Válassza az Egyik sem (None)-t, ha a végeszközök nem rendelkeznek CRC-ellenőrzéssel. A hiányzó CRC azt okozhatja, hogy figyelmen kívül hagyja az összes bejövő üzenetet a végeszközön.
Lépjen be az Eszközök (Devices) menübe:
Kattintson a Konfiguráció mentése ( Save configuration) gombra, majd a megnyíló ablakban a szintén a Konfiguráció mentése gombra.
A konfiguráció letöltődik a böngészőbe, .cson kiterjesztéssel.
Megjegyzés: Mentéskor az összes létrehozott eszköz egyszerre kerül elmentésre. Célszerű egyesével létrehozni és elmenteni az eszközöket, a későbbi hasznosítás végett.
Lépjen be az Eszközök (Devices) menübe:
Kattintson a Konfiguráció mentése ( Save configuration) gombra, majd a megnyíló ablakban a a Fájl kiválasztása gombra. Válassza ki egy .cson kiterjesztésű fájlt, majd kattintson a Konfiguráció feltöltése (Upload Configuration) gombra.
Megjegyzés: Egy .cson fájl akár több eszközt is tartalmazhat. A
- Az információkat a Slave eszközben négy különböző táblázat tartalmazza.
- Minden tábla 9999 értéket tartalmaz.
- Minden tekercs vagy érintkező 1 bit, és 0000 és 270E közötti adatcímmel rendelkezik
- Minden regiszter 1 szó = 16 bit = 2 bájt, és az adatcíme 0000 és 270E között van
Modbus RTU | Tárolt értékek | Kezdő cím | Ír | Olvas |
adattípus | ||||
Digitális kimenetek | Bináris értékek (bit) | 00001-09999 | x | x |
Digitális bemenetek | Bináris érték (bit) | 10001-19999 | x | |
Analóg bemenetek | Analóg értékek, változók (bájt) | 30001-39999 | x | |
Analóg kimenetek | Analóg értékek, változók (bájt) | 40001-49999 | x | x |
FONTOS! A legtöbb leírásban a más elnevezéseket használnak.
A fenti táblázatot a könnyebb megértés miatt módosítottam
Az adattípusok többségének elnevezésében közrejátszott, hogy régen főleg reléket használtak:
- Digitális kimenet: (0xxx) tekercs (coil)
- Digitákis bemenet: (1xxx) diszkrét bemenet (discrete input) vagy kapcsoló (contact)
- Analóg bemenet: (3xxx) bemeneti regiszter (input regiszter)
- Analóg kimenet: (4xxx) szó-változók (holding register)
A regiszterek címét az eltolási értékkel határozzuk meg.
Mindegyik tábla más eltolással rendelkezik. 1, 10001, 30001 és 40001
Például a 40001 első Holding Regiszter rendelkezik a 0000 Adatcímmel .
A két érték közötti különbség az eltolás .
Adat típus | Formátum | Tartomány | |||
16-bit előjel nélküli integer | egész szám | 0 | -tól | 65 535 | -ig |
16-bit előjeles integer | egész szám | -32 768 | -tól | 32 767 | -ig |
32-bit előjel nélküli integer | egész szám | 0 | -tól | 4 294 967 295 | -ig |
32-bit előjeles integer | egész szám | -2 147 483 648 | -tól | 2 147 483 647 | -ig |
32-bit lebegőpontos szám |
Ez a parancs a digitális kimenetek olvasására szolgál.
RS-485 buszon megjelenő adatsor: 11 01 00 13 00 25 0E 84
Ez a parancs a 17-es szolga eszközről kéri a 20 – 56 -ig „tekercsek”(coil-ok) tartalmát. (0:KI vagy 1:BE)
11: (17) Szolga cím
01: (1) Funkciókód (FC01: olvassuk a digitális bemenetek állapotát)
00 13: (19) Az első olvasandó bemenet adatcíme. (19,+1 (eltolás) = 20)
00 25: (37) Kért bemenetek száma, (37) (jelen esetben olvassa be a 20–56-ig a digitális bemenetek állapotát)
0E 84: CRC (ciklikus redundancia ellenőrzés) a hibaellenőrzéshez.
Válasz: 11 01 05 CD 6B B2 0E 1B 45 E6
11: (1) Szolga cím
01: (1) Funkciókód (FC01: olvassuk a digitális bemenetek állapotát)
05: (5) Adatbájtok száma. (37 tekercs 8 bit/bájt= 5 bájt)
CD: (205) Tekercsek 27–20 ig (1100 1101)
6B: (107) Tekercsek 35–28 ig (0110 1011)
B2: (178) Tekercsek 43–36 ig (1011 0010)
0E: (14) Tekercsek 51–44 ig (0000 1110)
1B: (27) Tekercsek 56–52 ig (0001 1011)
45 E6: CRC (ciklikus redundancia ellenőrzés) a hibaellenőrzéshez.
MEGJEGYZÉS:
Piros szám: HEXadecimális
Fekete szám: DECimális
Lila szám: BINáris
A Bitek sorrendje: Tekercsek 27–20 (1100 1101): 27:1, 26:1, 25:0, 24:0, 23:1, 22:1, 21:0, 20:0
Az utolsó Byte-ban az első 3 Bit 0, mivel csak 37 bitet kérdeztünk le és 5x8= 40, így a hiányzó 3 bit 0-val töltődik fel.
Ez a parancs a digitális bemenetek olvasására szolgál.
RS-485 buszon megjelenő adatsor: 11 02 00 C4 00 16 BA A9
Ez a parancs a 17-es szolga eszközről kéri a 10197 – 10218 -ig a bemenetek tartalmát. (0:KI vagy 1:BE)
11: (17) Szolga cím
02: (2) Funkciókód (olvassuk a bemenetek állapotát)
00 C4: (196) Az első olvasandó bemenet adatcíme. (196, + 10001 (eltolás) = 10197 bmenet)
00 16: (22) A kért bemenetek száma. (olvassa ki a 197-től 218 -ig, 22 bemenet)
BA A9: CRC (ciklikus redundancia ellenőrzés) a hibaellenőrzéshez.
Válasz:
11 02 03 AC DB 35 20 18
11: (17) Szolga cím
02: (2) Funkciókód (olvassuk a bemenetek állapotát)
03: (3) Adatbájtok száma (22 bemenet, 8 bit/byte = 3 bájt)
AC: (172) Bemenetek 10204–10197 (1010 1100)
DB: (219) Bemenetek 10212–10205 (1101 1011)
35: (53) Bemenetek 10218–10213 (0011 0101)
20 18: CRC (ciklikus redundancia ellenőrzés) a hibaellenőrzéshez
MEGJEGYZÉS:
Piros szám: HEXadecimális
Fekete szám: DECimális
Lila szám: BINáris
A Bitek sorrendje: Bemenetek 10204–10197 (1010 1100): 10204:1, 10203:0, 10102:1, 10101:0,…….. 10197:0
Az utolsó Byte-ban az első 2 Bit 0, mivel csak 22 bitet kérdeztünk le és 3x8= 24, így a hiányzó 2 bit 0-val töltődik fel.
Ez a parancs analóg kimenet(ek) olvasására szolgál.
Példánkban egy N4D8C12 12 csatornás relékártya egyes reléjének állapotát fogjuk kiolvasni.
RS-485 buszon megjelenő adatsor: 01 03 00 01 00 01 D5 CA
Ez a parancs a 1-es szolga eszköz 40002. regiszterét olvassa ki.
01: (1) Szolga cím
03: (3) Funkciókód (FC03 analóg kimenet(ek) olvasása)
00 01: (1) Az első kért regiszter adatcíme. (40001,+1 (eltolás) = 40002)
00 01: (1) * Kért regiszterek száma, jelen esetben 1 ( 40002-40002)
D5 CA: CRC (ciklikus redundancia ellenőrzés) a hibaellenőrzéshez.
Válasz: 01 03 02 00 01 79 84
01: (1) Szolga cím
03: (3) Funkciókód (FC03 regiszter(ek) olvasása)
02: (2) Adatbájtok száma. (1* regiszter x2 bájt= 2 bájt)
00 01: (1) A 40002 regiszter tartalma 1
* MEGJEGYZÉS: ha a kért regiszterek száma több (pl.3 ) ,akkor itt jelenne meg sorban a többi regiszter tartalma:
00 08 (8) A 40003 regiszter tartalma 8
00 3F (63) A 40004 regiszter tartalma 63
79 84: CRC (ciklikus redundancia ellenőrzés) a hibaellenőrzéshez.
MEGJEGYZÉS:
Piros szám: HEXadecimális
Fekete szám: DECimális
Comexio stúdióban az alábbi beállításokat kell elvégezni, a tolmácskód automatikusan létrejön , de igény esetén módosítható. (LUA programnyelv)
Név (Name): Parancs egyedi neve.
Leírás (Description): Rövid megjegyzés.
Digitális: Itt kehet megadni, hogy az adatpont aminek a változására lefusson a parancs digitális, vagy analóg legyen.
Comexio bemenet: Itt most kimenetet (Output) kell választani.
Funkció kód: Maga a parancs jelen esetben FC03 modbus regiszter olvasása ( Read Holding Regiszter)
Regiszter cím: Az regiszter adatcíme. (40001,+1 (eltolás) = 40002)
Regiszterek száma: A kiolvasandó regiszterek száma.
MEGJEGYZÉS: Az eszköz címe, amit az eszköz létrehozásakor megadtunk automatikusan kiíródik a paransor elé a buszra, de a tolmácskódban nem látszik. Valamint a CRC-se látható.
Parancs ablak beállítása:
Válasz ablak beállítása:
Comexio stúdióban az alábbi beállításokat kell elvégezni, a tolmácskód automatikusan létrejön , de igény esetén módosítható. (LUA programnyelv)
Név (Name): Parancs egyedi neve.
Leírás (Description): Rövid megjegyzés.
Digitális: Itt lehet megadni, hogy az adatpont amit a programban használni szeretnénk digitális, vagy analóg legyen.
Comexio bemenet: Itt most bemenetet (Input) kell választani.
Válasz hossza: Alapértelmezett=0, ebben az esetben figyelmen kívül hagyja a rendszer.
Feladat: Itt válassza a fenti parancsablakban létrehozott parancsot.
MEGJEGYZÉS: Az eszköz címe, amit az eszköz létrehozásakor megadtunk automatikusan kiíródik a paransor elé a buszra, de a tolmácskódban nem látszik. Valamint a CRC-se látható.
Válasz elemzése:
Válaszban a 01 03 02 bájtsorozatnak meg kell jelennie a végeszköztől érkező üzenetben.
function rs_interpreter (v) a függvény v értékével tér vissza, ezt az értéket veszi fel a létrehozott adatpont.
answerBytes = comexio.string2byteArray(v) az eszköz válasza egy tömbbe van írva az egybájtos értékekkel.
valueBytes = trade.tableChunk (answerBytes, 4, 5) a válaszból nekünk csak a 4-es 5-ös bájton lévő adatra van szükség, mert ez a regiszter tartalma 01 03 02 00 01 79 84, ezért csonkoljuk a tömböt .
returncomexio.byteArray2dec (valueBytes) a csonkolt két bájt tartalmát decimálissá alakítjuk.
end a függvény vége
Trigger hatására :
Kiolvasásra kerül a regiszter:
Ez a parancs az analóg bemenet(ek) olvasására szolgál.
RS-485 buszon megjelenő adatsor 11 04 00 08 00 01 B2 98
Ez a parancs a17-es szolga eszközről kéri az 3009 -es analóg bemeneti regiszter tartalmát.
11: (17) Szolga cím
04: (4) Funkciókód (analog bemeneti regiszter olvasása)
00 08: (8) Az első kért regiszter adatcíme. (8, + 30001 (eltolás) = 30009)
00 01: (1) A kért regiszterek száma. (olvassa ki a 30009-regisztert)
B2 98: CRC (ciklikus redundancia ellenőrzés) a hibaellenőrzéshez.
Válasz: 11 04 02 00 0A F8 F4
11: (17) Szolga cím
04: (4) Funkciókód (olvassuk el az analóg bemeneti regisztert)
02: (2) Adatbájtok száma (1 regiszter x 2 byte = 2 bájt)
00 0A: A 30009 regiszter tartalma
F8 F4: A CRC (ciklikus redundancia ellenőrzése).
MEGJEGYZÉS:
Piros szám: HEXadecimális
Fekete szám: DECimális
Ez a parancs egy digitális kimenet írására szolgál.
RS-485 buszon megjelenő adatsor: 11 05 00 AC FF 00 4E 8B
Ez a parancs a 17-es szolga eszköz 173. „tekercsét”(coil)-t kapcsolja be.
11: (17) Szolga cím
05: (5) Funkciókód (egy coil írása)
00 AC: (172) Az első kért regiszter adatcíme. (172,+1 (eltolás) = 173)
FF 00: (65280) Írás (FF 00: BE, 00 00: KI )
4E 8B: CRC (ciklikus redundancia ellenőrzés) a hibaellenőrzéshez.
Válasz: 11 05 00 AC FF 00 4E 8B
11: (17) Szolga cím
05: (5) Funkciókód (egy coil írása)
00 AC: (172) Az első kért regiszter adatcíme. (172,+1 (eltolás) = 173)
FF 00: (65280) Írás (FF 00: BE, 00 00: KI )
4E 8B: CRC (ciklikus redundancia ellenőrzés) a hibaellenőrzéshez.
MEGJEGYZÉS:
Piros szám: HEXadecimális
Fekete szám: DECimális
Ez a parancs egy analóg kimenet írására szolgál.
Példánkban egy N4D8C12 12 csatornás relékártya egyes reléjét fogjuk váltani (Toggle)
RS-485 buszon megjelenő parancs: 01 06 00 01 03 00 D8 FA
Ez a parancs a 1-es szolga eszköz 40002. regiszterbe ír 3-at
01: (1) Szolga cím
06: (6) Funkciókód (FC06 egy analóg kimenet írása)
00 01: (1) Az regiszter adatcíme. (40001,+1 (eltolás) = 40002)
03 00: (768) Beírandó érték: 768
D8 FA: CRC (ciklikus redundancia ellenőrzés) a hibaellenőrzéshez.
Válasz:
01: (1) Szolgacím
06: (6) Funkciókód (FC06 egyanalóg kimenet írása)
00 01: (1) Az regiszter adatcíme. (40001,+1 (eltolás) = 40002)
03 00: (768) Beírt érték: 768
D8 FA: CRC (ciklikus redundancia ellenőrzés) a hibaellenőrzéshez.
MEGJEGYZÉS:
Piros szám: HEXadecimális
Fekete szám: DECimális
Comexio stúdióban az alábbi beállításokat kell elvégezni, a tolmácskód automatikusan létrejön.
Név (Name): Parancs egyedi neve.
Leírás (Description): Rövid megjegyzés.
Digitális: Itt kehet megadni, hogy az adatpont digitális vagy analóg bemenettel rendelkezzen.
Comexio bemenet: Itt adható meg, hogy modbius bemenetet vagy kimenetet akarunk létrehozni.
Funkció kód: Maga a parancs jelen esetben FC06 egy modbus regiszter írása
Regiszter cím: Az regiszter adatcíme. (40001,+1 (eltolás) = 40002)
MEGJEGYZÉS: Az eszköz címe, amit az eszköz létrehozásakor megadtunk automatikusan kiíródik a paransor elé a buszra, de a tolmácskódban nem látszik. Valamint a CRC-se látható.
Adat: Fix érték választása esetén, trigger hatására a mezőbe írt érték lesz beírva a regiszterbe.
Adat: Bemenet választása esetén az adatponthoz kapcsolt analóg érték írodik be a regiszterbe, változás esetén.
Ez a parancs több digitális kimenet írására szolgál.
RS-485 buszon megjelenő adatsor: 11 0F 00 13 00 0A 02 CD 01 BF 0B
Ez a parancs a 17-es szolga eszköz 20. -tól 29. tekercsét írja.
11: (17) Szolga cím
0F: (15) Funkciókód (FC15 több tekercs írása)
00 13: (19) Az regiszter adatcíme. (19,+1 (eltolás) =20)
00 0A: (10) Az írandó tekercsek száma: 10
02: (2) Adatbájtok száma (10 tekercs 8bit/ byte = 2 bájt)
CD: (205) Tekercsek 27–20 (1100 1101)
01: (1) Tekercsek 29–28 (0000 0001)
BF 0B: CRC (ciklikus redundancia ellenőrzés) a hibaellenőrzéshez.
A Bitek sorrendje: Kimenetek 27–20 (1100 1100): 27:1, 26:1, 25:0, 24:0, 23:1, 22:1, 21:0, 20:0
Az utolsó Byte-ban az első 6 Bit 0, mivel csak 10 bitet kérdeztünk le és 4x8= 16, így a hiányzó 6 bit 0-val töltődik fel.
Válasz 11 0F 00 13 00 0A 26 99
11: (17) Szolga cím
0F: (15) Funkciókód (FC15 több tekercs írása)
00 13: (19) Az regiszter adatcíme. (19,+1 (eltolás) =20)
00 0A: (10) Az írt tekercsek száma: 10
26 99: CRC (ciklikus redundancia ellenőrzés) a hibaellenőrzéshez.
MEGJEGYZÉS:
Piros szám: HEXadecimális
Fekete szám: DECimális
Lila szám: BINáris
Ez a parancs több analóg kimenet írására szolgál.
RS-485 buszon megjelenő adatsor: 11 10 00 01 00 02 04 00 0A 01 02 C6 F0
Ez a parancs a 17–es szolga eszköz 40002. és 40003. kimeneti regiszterét írja.
11: (17) Szolga cím
10: (16) Funkciókód (FC16 több analóg kimenet írása)
00 01: (1) Az első regiszter adatcíme. (1,+40001 (eltolás) =40002)
00 02: (2) Az írandó regiszterek száma: 2
04: (4) Adatbájtok száma (2 regiszter *2 byte = 4 bájt)
00 0A: (10) A 40002 Regiszterbe írandó szám: 10
01 02: (258) A 40003 Regiszterbe írandó szám: 258
CF F0: CRC (ciklikus redundancia ellenőrzés) a hibaellenőrzéshez.
Válasz: 11 10 00 01 00 02 12 98
11: (17) Szolga cím
10: (16) Funkciókód (FC16 több analóg kimenet írása)
00 01: (1) Az első regiszter adatcíme. (1,+40001 (eltolás) =40002)
00 02: (2) Az írt regiszterek száma: 2
12 98: CRC (ciklikus redundancia ellenőrzés) a hibaellenőrzéshez
MEGJEGYZÉS:
Piros szám: HEXadecimális
Fekete szám: DECimális