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.
![]() 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!
![]() 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 |