Fórum témák
» Több friss téma |
Milyen adatszerkezetet használsz a kommunikációhoz?
Most ismerkedek a modbuszal. Azt gondoltam hogy a következő lesz a felépítése az adatcsomagnak. - 1 byte tipus azonosító - 2 byte NOD sorszám - 56 byte adat küldés - 56 byte adatfogadás Ha jól értelmeztem a működést. Eddigi értelmezésem szerint be lehet állítani a 128 byte hosszban hogy mit ír és mit olvas az eszköz. És mivel egy adatszerkezetet szeretnék használni így raktam eddig össze. Van olyan eszköz ahova a master küldene ki adatot és van olyan amikor a master vár adatot. Pl egy hőmérséklet szenzortól. Az első byte tipus azonosítóval határoznám meg hogy a slave miként kezelje az adatokat. Ez 16 típusú slavet jelent 0-F, ami szerintem elég sok. Utána a 2 byte a címnek ami 256 címet jelent ez megint csak bőven lefedi az RS485 max NOD számát (32 vagy 128). A maradék helyet pedig felosztottam kettőbe. Mivel a 128 byte-os adatcsomagból 5 esetleg 9 byte elmegy a kezelésre ezért 118 az amivel lehet garázdálkodni. Ebből elmegy 3 a címzésre marad 115 ezt pedig ketté vettem így lett 56 hogy 8-al osztható legyen. Az Én logikám nem mindig kikezdhetetlen így ha valamit másképpen javasolsz a tapasztalataid alapján azt jó néven veszem.
Szia! Mindig az a jó (optimális), ami a feladathoz a legjobban illeszkedik és a legkevesebb vesződséggel jár. Ha te ezt tanulásnak is szánod, akkor máris nem számít a vesződség, mert az is haszon a végén.
A lényeg, hogy a MODBUS készen van, ha leprogramozod, akkor nem kell kitalálni semmit, mert gyakorlatilag lefedi a teljes kommunkációs igényt a fastól a felhasználói adatok továbításáig. Hogy aztán ezek az adatok mit jelentenek a készüléknek, rendszernek, az már a felhasználó dolga. Ha meg tudod érteni a MODBUS felépítését, akkor onnantól könnyű dolgod van. Ha szeretnél egyedi protokollt faragni, akkor az is megérthető és szép játék.
Legelőször azon gondolkodtam hogy sajátot találok ki. Ajánlották a modbust hogy az már ki van találva és régóta jól működik. Most azon vagyok hogy ezt a működő protokollt valamennyire megtanulom. Azért valamennyire mert teljesen szerintem semmilyen rendszert nem lehet. Ha sikerült megtanulni akkor már tudni fogom hogy mikre kell odafigyelni. Adatellenőrzés, CRC, adatismétlés, nyugtázás ... meg biztos még sok minden van ami csak menet közben derül ki.
Tegnap este kezdtem el az arduinos kódot bogarászni. Először nagyon bonyolultnak tűnt. Mára már talán kezd tisztulni a dolog. Bár jobb lenne ha találtam volna magyar nyelvű leírást a használathoz. Ameddig nem tervezek olyan eszközt aminek az adatbuszát egyedire kell alakítani mondjuk adatvédelem miatt addig szerintem nem készítek saját protokollt. Számolgattam hogy 56 byte -on elég sok infót át tudok lökni egyik eszközről a másikra. Pl 224 ki vagy bemenet, 14 hőmérési értéket előjelhelyesen 2 tizedes pontossággal (de ebbe szerintem bármilyen szenzor értéke belefér)
A MODBUS nem bonyolult és nem kell az egészet megvalósítani, elég néhány fontos részét. (3, 6, 16 kódok és a CRC). Utána nem merül fel a kérdés, hogy mennyi adat elég mire, mert nyitott a lehetőség nagyobb mennyiségek gyors kezelésére. Normál esetben néhány bájt elég a forgalomhoz, de pl. adatgyűjtéshez jól jönnek mondjuk a 200bájtos könnyen kezelhető csomagok...
Nincs esetleg egy olyan linked ahol a lényeget írják le? Jó lesz a Magyar nyelvű is. Nem ragaszkodok az Angolhoz.
Nekem nem működik a link, ezért próbálom újra ugyanazt:
Bővebben: Link
Köszönöm bár ez már megvan. Esetleg ami ettől bővebb? Tudom telhetetlen vagyok.
Magyarul nincs. Viszont van egy modbus topic...
Most nézem jobban az arduino libet. a 6 kódot nem tudja. A 3 és 16 viszont benne van. A 16 nem váltja ki a 6-ost. Most tanulmányozom hogy melyik funkció mit is jelent.
Ezeket ismeri: Function 1 - READ_COIL_STATUS Function 2 - READ_INPUT_STATUS Function 3 - READ_HOLDING_REGISTERS Function 4 - READ_INPUT_REGISTERS Function 15 - FORCE_MULTIPLE_COILS Function 16 - PRESET_MULTIPLE_REGISTERS
Valahonnan gondoltam.
Ha jól értelmezem akkor a 3-assal olvasni engendi a slave eszközt a 16 pedig írni. A hozzászólás módosítva: Okt 10, 2014
Nem enged "Ő" semmit, Te engeded meg, mert te írod a programot! De javaslom, hogy a MODBUS kérdésekkel a MODBUS topicba lépjünk át!
A hozzászólás módosítva: Okt 11, 2014
Még mindig Busozok.
Azon filózok miként lehetne könnyen összekötni az elemeket. Arra jutottam mi van akkor ha telefoncsatival oldom meg? RJ11 2 kábel a BUS nak 2 a tápnak. Kevesebb helyet venne el a dobozból, valamint nem kell csavarozgatni. RJ11 Dual Ezzel egymás után fel lehetne fűzni a NOD okat. Vagy maradjak a sarus csavarozós megoldásnál? Úgy tervezem hogy kalapsínes dobozba gyömöszölöm az eszközöket. Amit kell azt pedig tovább vezetem buszon. De az egymás mellett levőket is így kötném akkor már össze. A hozzászólás módosítva: Okt 14, 2014
A tápnak kevésnek tartok egy szál vezetéket, ezeket duplán vezettem.
Ha csatlakozós láncolást csinálsz, akkor az egységet nem lehet lecsatlakoztatni, mert megszakad a lánc. Ha a csatlakozó előtt láncolsz, akkor úgy jó, csak igen nehéz egy RJ-be így kötni, persze nem lehetetlen. Én tüskesoros csatlakozást használok...
Inkább UTP-t használnék (talán létezik abból is kettő csatlakozó), az szerintem vastagabb drót, mint a telefon, és több szálat párhuzamosan is lehet kapcsolni a táp számára. Ezt leszámítva az elv szerintem jó.
A hozzászólás módosítva: Okt 14, 2014
Én is az RJ11 és RJ45 között gondolkodtam. Lehet jobb az RJ45. Ebből is van dupla. több féle is. sima ledes dupla leddel 2 portos led nélkül Bár a legjobban az egy portos jön ki ahogy néztem. Akár a ledet is be lehet kötni RX TX adatmozgáshoz. Ez szerelésnél még segítség lehet a gyors kontrollhoz.
A szálakat akár meg is duplázhatom. 2x2 mehet a tápnak és ugyanúgy 2x2 a BUS nak. Ezzel a kontakthiba esélye a felére csökkenhet. Feltéve hogy az RS485 nem haragszik meg a dupla kábelre. Szélsőséges esetben egy kábelen lehetne oda vissza térő vezetéket használni. De erről már volt szó korábban a látszólagos csillag topológiánál. De nem akarok ilyennel foglalkozni. Nagyban bezavarna a rendszer építésébe. Ha kiveszek valamiért egy elemet azt lehet ilyennel helyettesíteni A hozzászólás módosítva: Okt 14, 2014
A token-ring az pont-pont halozat.... Egyik node-bol a masikba.
Nem akarok kötekedni, de számomra ez egy tökéletes ellentmondás, 3 szóban.
Idézet: „pont-pont halozat” Nálam hálózat, ami legalább 3 tagból áll. A pont-pont kifejezésben benne van, hogy egyik pontból a másikba. Ilyen erővel bármilyen topológiában és megoldásban, ahova dugót kell bedugni, az pont-pont hálózat.
Lehet helyettesíteni, de addigra leállt a mögötte lévő összes többi modul. Én szeretem, ha menet közben, fel-le lehet csatlakoztatni, ahogyan most... Írd már le, mi a nyavajának a rövidítése a NOD az RS 485-ben?
Ok, a token-ring az egy olyan halozat, ahol a node-ok egymashoz vannak kotve pont-pont kapcsolattal. Azaz minden node-nak van ki- es bemenete. Minden node ossze van kotve az utana levo node-dal. Az egesz korbeer, ettol ring. Amikor valaki kikuld egy csomagot, az atmegy a kovetkezo node-ba. Aki vagy feldolgozza, vagy nem, fuggoen attol, hogy neki szol vagy sem. Aztan tovabbkuldi a csomagot. Tehat halozat, mert tobb gepet kot ossze, de fizikailag pont-pont kapcsolatokbol all, mint pl. a UTP-s Ethernet.
Akkor a leállás miatt ki kell találnom valami egyszerű dolgot. Valami ehhez hasonlóval lehet megoldható. Egy nagyon rövid pár centis csatlakozóval gondoltam. Az talán nem zavar be a hálózatba.
Igazabol csak azert szoltam bele, mert a token-ring egy meghatarozott sw protokollt is magaban foglal, egy magasabb szintu dolog, mint pusztan a hardware layer. A lezarasokrol volt szo olyan halozatokban, ahol egy fizikai kabelre tobb node is csatlakozik. A token-ring meg veletlenul sem ilyen, de meg csak nem is hasonlo. Kinezetre olyan, mint egy csillagpontos halozat, de elektromos szempontbol sok pont-pont kapcsolat. Magyaran semmi osszefuggesben nem volt az RS485-tel, sem az itt emlegetett halozati topologiakkal.
Szia! Igazán én vagyok a főbűnös, mert nem NOD, hanem NODE. Ez azoknak a csomópontoknak a maximális száma az RS485-ön belül, amik egyszerre csatlakozhatnak egymáshoz (32 adó, 32 vevő). Ezt általában az illesztőchip gyártója adja meg. A 75176 (Texas) chip 32 node ra van maximálisan méretezve és gondolom tesztelve. Ez a legolcsóbb és legkönnyebben hozzáférhető chip. Vannak persze ezzel lábkompatibilis (vagy éppen nem) verziók, amik már 50, 128, vagy 256 node-ot is tudnak egy rendszeren belül kezelni például... Fontos, hogy 5V vagy 3,3V-os táplálású a rendszered jelfolyama - annak megfelelőt kell választani. Nyilván az RS485 oldalon egyenrangúak a chipek. Utóbbi chipek ha jól láttam támogatják a hot-swap-et is.
A hozzászólás módosítva: Okt 14, 2014
Megint Én vagyok.
Ez az egyszerű buszra való csatlakozás még nem hagy békén. Két lehetséges verzió merült fel bennem ami használható is lehet. 1. Összeállítani egy kis switcet ahol van pl 8 RJ45 csatlakozó. A csatlakozók végig rá vannak kötve a BUS-ra. Az elsőn bemegy a BUS jel az utolsón pedig ki. A közben levő csatikra meg bármikor rá lehet kötni egy patch kábellel a modult. Ez a kábel 30cm. Nem tudom hogy ez a leállás mennyire zavar be a rendszerbe, mert így nem teljesen egy vezetékre van felfűzve az összes elem. 2. Ránézésre ugyanúgy nézne ki, viszont a switchben be lenne építve minden porthoz a max485 ic. A kábelek meg csak az RX/TX és engedélyező jelet továbbítaná szintén a 30cm-es kábelen. Így már bármikor bármelyik eszközt le lehet venni. Nem szakad meg a kör. Kiépítésben is szinte mindegy hogy az illesztőt hova teszem. Mondjuk a második esetben több hely marad másra a dobozban. Gondolom a mikrovezérlőt a BUS felől is védeni kell így az optocsatikat is be lehet tenni a switchbe.
És mennyibe kerül egy ilyen modul? Mert ha jól gondolom nem igazán hobbi kerethez mért ára lehet.
Ugyan, miért akadsz fenn ilyen apróságon, amikor 119 darabos csomagokban lehet rendelni...
|
Bejelentkezés
Hirdetés |