Új hozzászólás Aktív témák
-
And
veterán
válasz kip.kop #1486 üzenetére
Ajánlom figyelmedbe ezt a dokumentációt: [link]. A 126. oldaltól láthatod a modbus kommunikáció megvalósítását Twido-n. A megoldás lényege az EXCHx utasítás (134. oldaltól), ill. a %MSGx belső funkcióblokk két állapotjelző bitje, a %MSGx.D és a %MSGx.E. A kommunikáció megkezdése előtt definiálni kell egy adott hosszúságú táblázatot, amely tartalmazza az összes szükséges paramétert. A 131. oldalon találod a táblát, amely három részre van osztva: vezérlő-, adási- és vételi táblázat. Utána szépen ki van fejtve, hogy az egyes elemeknek mi a szerepük. A korábban már megismert 3-as (és 4-es, mivel a kérés itt is ugyanúgy néz ki) funkciókód bővebb leírása a 145. oldalon van. A control table tartalma itt kötött, a transmission table tartalmában állítható be a lekérdezett slave címe, a slave-ből kiolvasandó regisztertömb kezdőcíme és a tömb hossza. Példaprogram a 140. oldalon, ezt átalakítva a neked szükséges feladatra úgy, hogy a DigitalT és DigitalRH nevű adatregisztereket olvassuk ki a slave egységből:
LD 1
[%MW0 := 16#0106 ]
[%MW1 := 16#0300 ]
[%MW2 := 16#4003 ]
[%MW3 := 16#0008 ]
[%MW4 := 16#0002 ]
LD 1
AND %MSG2.D
[EXCH2 %MW0:9]
END
Az első két word a control table, mint írtam, itt a tartalmuk kötött, lásd a funkciókód leírásnál. A %MW2..%MW4 a transmission table, itt adjuk meg a slave címét (64dec = 0x40), a modbus kérés funkciókódját (0x03), a kezdő regisztert (8, ami a DigitalT regiszter 7-es címe plusz egy), ill. a lekérdezett tartomány hosszát (2 db. word). A %MW5-től kezdődik a reception table, amelynek tartalma a slave válasza után áll be, ha nincs hiba a kommunikáció során. Utóbbi vételi tábla a következőket fogja tartalmazni:
%MW5: 0x4003, a slave címe és a válasz kódja, ezek a válaszban szintén megjelennek,
%MW6: 0x0004, az 'Rx offset' által beiktatott 0x00 (MSByte) és a kiolvasott byte-ok száma (LSByte), ami 4, hiszen két darab 16-bites word-öt kértünk le,
%MW7: ebben kapod meg az első lekért regiszter tartalmát, vagyis a DigitalT-t,
%MW8: ebben pedig a másodikat, azaz a DigitalRH-t.
A %MSG2.D bit jelentése: 'communication complete', ez azért kell, hogy a kontroller (több lehetséges üzenet kezelése esetén) csak akkor kezdje el küldeni az aktuális adatkérést a buszon, ha az előző már befejeződött.
Természetesen a hardverek megfelelő összekötéséről és a Twido portjának beállításáról a hw-konfigurációnál (lásd: 139. o.) előzőleg gondoskodnod kell. Az adattábla meg bárhol kezdődhet, nem csak %MW0-nál (a példában %MW0:9), és nem csak a 2-es számú (EXCH2 és %MSG2), egyébként opcionális portot lehet igénybe venni a feladathoz. Az alap, programozáshoz is felhasznált 8-pólusú mini-din aljzat az 1-es számú port. E port használatához az aljzat DPT-jelét GND-re kell húzni (128. o.), ill. az A-B adatvonalakra megfelelő fel- és lehúzó ellenállásokat kell kötni (129. o.).
Új hozzászólás Aktív témák
- gban: Ingyen kellene, de tegnapra
- Az USA nem akarja visszafogni Kína növekedését
- Kormányok / autós szimulátorok topicja
- Xbox Series X|S
- BestBuy topik
- VR topik (Oculus Rift, stb.)
- Apple AirPods Pro (2. generáció) - csiszolt almaságok
- League of Legends
- Ukrajnai háború
- Call of Duty: Modern Warfare III (2023)
- További aktív témák...
- Új Hp Pavilion 15-eh Fémházas Szuper Laptop 15,6" -30% AMD Ryzen 7 5700U 8Mag 16/1TB FHD MATT
- ATI RADEON RX 480 -8 gb DDR5 256 bit videokártya
- Geforce GTX 460-1 gb DDR5 256 bit videokártya
- Geforce G 210 -1 gb videokártya
- Díszdobozos Lenovo Yoga Slim 7i Pro "Kis Gamer" Ultrabook 14" -40% i5-11300H 16/512 QHD+ 2,8K OLED