Fórum témák
» Több friss téma |
Fórum » Két PIC közötti kommunikáció
Témaindító: JohnyBravo, idő: Márc 28, 2006
Témakörök:
Tegyél valami nagyobb pufferelést, ne csak a 100nF-ok legyenek, hanem legyen néhányszáz µF-os kondenzátor is.
A 120ohm az már csak hosszabb vezetéknél kell, ilyen rövidnél nem feltétele a működésnek, tehetsz egy próbát azzal, hogy leveszed. Legjobb lenne, ha valami ledekre ki tudnád íratni, hogy mitől resetelődött a PIC, illetve ha tudnád valamilyen eseményhez kötni. MCLR és PGM lábakkal mi a helyzet?
Üdv.
Össze kell kötni az RS485_GND-ket is az A-B-n kívül. Amennyiben az SN75176 nincs galvanikusan leválasztva a kontrollertől (ipari környezetben ez ajánlott 2 OPTO-val, és egy DC/DC konverterrel), akkor egy 100 Ohm-ot szoktak tenni az RS485_GND kábeles vége és a NYÁK-os vége közé minden panelen (vagyis a NYÁK RS485_GND-jét egy 100Ohm-on át vidd ki a kábelre, ha van OPTO-s leválasztás, akkor ez nem kell). Azonos tápról megy a 2 kontroller ? Imi.
Igen a két kontroller is és a két SN75176 is. Megpróbálom a 100 Ohm-okat.
Urak!
Természetesen nem megy. Megpróbáltam mindent, 100Ohm, nagyobb puffer kondi stb, de még az opto csatolos leválasztás után sem megy. Hajlok arra a gondolatra, hogy a próba panelon összeállított RS485 / optocsatolós rendszerben nem minden időpillanatban érintkezik minden (ugyanis PIC-ek Tx-Rx összekötése esetén minden ok). Úgy gondoltam megcsinálom NYÁK-on. Mielőtt azonan "kőbe vésem" a felesleges munkát elkerülendő ránéznétek, hogy jó-e minden? (RS485.jpg) Biztonság kedvéért a programot is csatolom(uart_ketirany), bár az ahogy írtam is önmagában jó. (lényegének összefoglalása a legelején található). Szóval ha jó az RS 485 kapcsolási rajz nekilátok a NYÁK-nak. Kösz
Remelem ma lesz idom befejezni a nyak-ot es meglatjuk. Kozben az is felmerult bennem, esetleg nem hagyok eleg idot a buszra fel ill lekapcsolodas kozott. Meg megprobalok berakni egy delay-t.
Minden kész és nem megy. A két RS485 penel hibátlanul váltja a jelszinteket teszteléskor, de a PIC-ekkel már nem jó. Delay nélkül mintha nem lenne kapcsolat a 2 PIC köz, mindegyik csinálja a maga dolgát, ha pedig betettem egy kb 1s-os delay az adat tovabbitas engedélyezése után és a konkrét adatküldés elé akkor pedig framing error lesz. Lehet az optocsatolok lassuk? Másra már nem tudok gondolni.
VAn valami ötletetek? Kösz.
Nem adom fel! Megprobalom 4-wire (full duplex modban). Hatha akkor kevesebb az eselye a zajbol vagy tudomisen mibol szarmazo adat atviteli zavaroknak. Megint megrajzoltam hogyan gondolnam a bekotest(netrol, adatlaprol osszeszedett infok alapjan). Megtennetek hogy raneztek hogy jo-e mielott nekilatok.
Üdv!
Bocsi, de nagyon el voltam havazva. 1. az LTV opto katalógusa szerint legalább 2.5mA-re kellene méretezni az opto kollektoráramát (hogy elérd a katalógusban leírt sebességet), ha te betettél 10k-t, abból 5-0.2(szaturáció)/10k=0.5mA jön ki. 2. Sebesség: 80kHz Cut-Off freq., illetve 18usec körüli, rise/fall idők vannak megadva (de ez is csak akkor, ha legalább 2mA a kollektoráram, mivel te csak 0.5mA-t engedsz meg, ezért szerintem van legalább 50-60 usec fel/le futási idő), tehát ez egy kifejezetten lassú OPTO, ennél lassabbat már nem is találhattál volna. Egy gyors OPTO: 6N137, ez 10 Mbit/sec-et is átvisz, de ez is csak akkor, ha engeded neki a nagy kollektoráramot kis kollektorellenállással, különben ez is lassú lesz ! Nagy kollektorellenállás a tranzisztoroldalon lévő parazita kapacitást is képtelen időben feltölteni, nálam 6N137 van, és 390Ohm dióda, illetve tranzisztor oldali ellenállással. Az adás/vételi választólábhoz talán elég lenne ez a lassú opto is. Te milyen sebességgel próbálkoztál ? 3. 100 nF kondik: SN75176, kontroller, illetve külön táppal rendelkező OPTO tápjához KÖZEL 100nF kerámia kondik 4. 10k le-fel húzó nem csak az egyik SN75176-hoz kell, hanem a másikhoz is! 5. A 120 (vagy 100) Ohm-al sorban be szoktak tenni egy 10 nF/400V kondit, így a statikus áram kisebb lesz, kevésbé melegszik az SN75176, de a lezárás jó lesz, mert a gyors éleket a kondi átengedi, tehát az élek szempontjából gyakorlatilag nincs is ott. Más problémát nem találtam a rajzban (az elsőről van szó). A progiban sajnos nem tudok segíteni, mert csak C-ül tudok Semmi értelme 4 vezetékes megoldásnak a te esetedben, mennie kell a 2 vezetékesnek is, csak jól kell választani SW-ből az adó/vevő lábat. Ha több egységet is bekötsz a rendszerbe, akkor ott már nem lehet 120 Ohm! Csak kettő lehet, és ezeknek a kábel 2darab fizikai végén kell lennie, rövidebb távolságra (illetve kisebb sebességen) ezek nélkül is működik! CRC-t kell betenni a kommunikációba, mert a bitek sérülhetnek. Ipari környezetben FTP kábelt használnak, az asztalon próbára bármilyen kábel megfelel. 1200 méter a max. hossz (FTP/UTP-vel), és itt már csak 9600 bps megy, ha jól emlékszem, ha e fölé viszed a sebességet ezen a hosszon, akkor sok bit sérül. Imi.
Huh!
Vissza vonulok emeszteni..... Kosz a sok javaslatot, jelentkezek ha mindet atragtam.
Feladom. Győzött az RS485. Optocsatolót kivettem, csak az SN75176-ok maradtak(PIC-cel közös táp). Nagy kondi, 100nF-os kondi, 120 Ohm ki, be, kerámia kondi vele sorba, 100 Ohmok a vonalmeghajtók GND-jára, másik oldalra is 10k-s fel-lehúzó ellenállások, valamint a fentiek összes lehetséges kombinációja. És nem! 10 esetből 9x mind a két pic csinálja a maga dolgát és látszólag semmilyen adatot nem küld/fogad, 1 esetben pedig valamelyik lefagy. Mk-ben ugyanaz fut(led-et léptet PORTD-n majd átküldi a másiknak).
Alternatív megoldást keresek, mert ezt nem tudom elképzelni, hogy valaha is működni fog. Az nagyon gáz, ha master pic Tx lábát simán rákötöm a slave-ek Rx-eire, valamint .... nagyon nagy gáz, rájöttem közben. Nincs ötletem. 4 nyamvadt pic adatait akarnám szinkronban tartani (egymástól 10m-re vannak) és hetek óta semmi eredmény.
Hali!
valamit nagyon elkötsz, nekem kb 500m-en 38kbauddal jól megy az rs485. igaz nem pic, hanem atmega, de nem ezen múlik. itt egy kis segítség az rs485 megértéséhez: http://avr.tavir.hu/modules.php?name=Content&pa=showpage&pid=47 az is megvezethet pl ha a picek nem kvarcról hanem a belső rc oszcikról járnak, nagy szórások lehetnek. próbáld debuggerrel megfogni a hibát, értelmezni a vett hibás karaktereket, esetleg egyik oldalon pic nélkül kapcsolóval vezérled a meghajtó bemenetét, a másik oldalon meg nézed változik-e, esetleg négyszögjellel meghajtod, szkóppal figyeled...
Üdv.
3 dolog jutott még eszembe: - hogy van ez az egész összerakva ? NYÁK-on, vagy próbapanelen, lóg az egész a levegőben ? Milyen hosszú kábelek vannak a pic és az SN75176 között ? Ha hosszú a kábel, akkor le van zárva ellenállással ? - azt írod, hogy lefagy a kontroller ? ezt hogy veszed észre, mit látsz te ebből ? ilyenkor újraindul ? nem a BORV miatti feszültségesés indítja újra ? Vagy eltéved a program, a DEBUG-er ilyenkor mit mond, hol tart a progi ? direkt csak pic-pic esetén is lefagy ? - az SN75176 irányválasztóját egyik oldalon tedd fixen VEVŐ-be, a másik oldalon fixen ADÓ-ba, így sem jó ? Imi.
Urak!
Gyozelem! Igaz nem pont abban a csataban amit meg akartam nyerni. Egy ejszaka gyotrodese utan hajnalban, mar osszegyogyult szemekkel osszeraktam egy 4-wire-es RS485-ot csak ugy probabol. Irtad valahol Imi, hogy felesleges es mukodnie kell a 2-wire-esnek is. Egyetertek, alapvetoen de ez megy! Az a vicc, hogy el sem tudom rontani. Lassu optocsatolok ki, se 120Ohm, se vele sorba kotott kondi, se 100Ohm a GND-ra se fel-lehuzo ellenallasok, semmi, csak minden Tx Rx -re egy-egy SN75176 (DE RE fixen GND-on Rx-nel, fixen +5V-on Tx-nel). Es megy. Hibatlanul. Vagy 30m kabellel vannak osszekotve. (Persze utana minden ellenallast, kondit stb visszaraktam az optocsatolok kivetelevel es ugy is megy). Ugyhogy valami a DE RE szoftveres vezerlese korul lehetett, vagy inkabb az idotenyezo az atvaltasoknal. Igazabol mindig L-en voltak a DE RE labak a szoftverben, csak adatkuldes elott valtottam at oket H-ra. Ennyi volt a vezerles, ha valaki esetleg ebben lat hibat (irtad Te asm-ben nem vagy otthon) szivesen veszem a velemenyet (a rovid progi amugy kicsit lejjebb van). Igazabol nekem nem gond a 4-wire, igy valoszinuleg ennel maradok, de hogy ne fedje orok homaly mi miatt kinlodtam vagy 2 hetet, szivesen vennek barmi javaslatot a software-t illetoen is. Amugy a kerdeseitekre valaszolva: Direkt PIC-PIC (Tx-Rx Rx-TX) osszekottetesnel tokeletes. Baud rate: 9600 Kulso osci mindket picnek (4Mhz) Osszerakva eloszor probapanelon volt majd NYAK-ra is megcsinaltam, majd ujra probapanel. pic és az SN75176 közötti kabelhossz 15cm (az A es B line-ok hossza a teszteles soran kb 10cm volt). A lefagyast ugy veszem eszre, hogy a kapcsoloval nem lepteti a PORTD-n levo ledeket. A debug-olas erdekes kerdes. Termeszetesen probaltam, de: nem csinaltam meg tobb pic eseten. Plusz az SN75176-ok tekintelyes aramokat vesznek fel igy az ICD2-m nem birta tapfeszileg (ezert keztem el az optocsatoloval valo levalasztast, hogy a 2 picet birja az ICD2). Pechemre a fold leglassubb optocsatolojat valasztottam (ami az egyik hibaforras lehetett). Olvastam, hogy az ICD2 -vel valo debug-olasnal lehet kulon tapfeszt adni a penelnak (mar ezt kezdtem el olvasgani kinomban hogy hogy megy ez). Ehhez be kell valljam (meg) hulye vagyok. Amit csinaltam: egyik PIC-be Release, masikba DEbug-gal programozam, igy ez utobbit tudtam kovetni (bar gyakran leallt a fesz eses miatt). Gondolom nem igy kell....
Üdv!
Először is GRATULÁCIÓ a kitartásodért Idézet: „ valami a DE RE szoftveres vezerlese korul lehetett, vagy inkabb az idotenyezo az atvaltasoknal ” Vagy ez és itt a "+ egy kis szakmai:" rész alatt. Erről már korábban is tudtam, de nálam nem jelentkezett ilyen hiba, sőt sehol máshol nem találtam erre utalást. Lehet, hogy a kapcsolás alatt a jel nem kellő meredeksége miatt összeburul a 75176, és egyidőben akar adni/venni ? Ha így van, akkor gáz van, mert egyik kontrollerrel mehet, egy másik változattal vagy gyártóval meg nem Próbáld ki külön PIC lábra tenni az adási/vételi engedélyezést. Vagy használj a fenti linken írt felhúzó-t. A neten fellelhető rajzoknál mindig össze van kötve a kettő, legalábbis amit én láttam. Imi.
Üdv!
Ezen segít a 10n kondi sorban a 120Ohm-al. Ha melegednének, nem kell megijedni Idézet: „ Olvastam, hogy az ICD2 -vel valo debug-olasnal lehet kulon tapfeszt adni a penelnak ” Igen, igen, nagy baj lenne, ha nem lehetne Semmi extra, lásd el saját tápról a NYÁK-ot, tegyél rá ICD csatit, aztán mehet rá az IDC2. Persze MPLAB-ban ki kell kapcsolni a táp kiadást. Működik 5 és 3.3V környezetben is! Idézet: „ Amit csinaltam: egyik PIC-be Release, masikba DEbug-gal programozam, igy ez utobbit tudtam kovetni ” Ez így teljesen rendben van, ezt így szokás, persze akiknek 2 ICD-jük van... Idézet: „ bar gyakran leallt a fesz eses miatt ” Szóval bátran mehet a külső táp, MPLAB-ban saját táp kikapcs. Ami nagyon fontos: bármire is használod most, a jövőre nézve: ipari, zavart környezetbe OPTO, OPTO, OPTO, OPTO, OPTO, saját galvanikusan leválasztott táppal DC/DC 5/5 :yes: Imi.
Tényleg nagyon köszönök mindent! Megy a dolog továbbra is, sőt visszatettem az optokat (azokat a nem túl villámokat) és azzal is megy! Igazad volt a 10k volt nagyon sok neki, vszinűleg lassan kapcsolt. pár száz Ohmmal tökéletesen megy. Úgyhogy 4-wire, opto-k, DC-DC converter. Ez a jövő utja
Az ICD2 külön tápfeszt meg kipróbálom mihelyst kigyönyörködtem magam a soros adatkommunikáció csodájában Üdv. Attila Idézet: „Úgyhogy 4-wire, opto-k, DC-DC converter.” Lásd MAX1490A vagy MAX1490B...
Segítséget szeretnék kérni a PIC-ek kommunikációjával kapcvsolatban. Először nagyon egyszerűnek tünt....
Egy master PIC folyamatosan kérdezze le a slave PIC-eket (miket egy DIP kapcsolóval címeznék(1-100) Ha a slave PIC a saját címét látja küldjön vissza a bemenetei állapotától függő választ. (Max 4-5 állapot)
Melyik soros kommunikáció lenne a legegyszerűbb?
és az adott slave honnan tudja hogy ezaző címe? Esetleg egy folyamatábra nagyon sokat segítene.... Köszi Idézet: Ez a fizikai távolságoktól és egyéb körülményektől is függ. Ha 10 métert meghaladó távolságok vannak, akkor valószínűleg az RS485. (A PIC EUSART modul 9 bites módja ad egyszerű lehetőséget a címzés és az adatküldés megkülönböztetésére)„Melyik soros kommunikáció lenne a legegyszerűbb?” AN774 AN1230
Üdv.
"és az adott slave honnan tudja hogy ezaző címe?" Te magad írtad, hogy DIP kapcsolóval szeretnéd a címeket beállítani, tehát a DIP kapcsoló állapotát kell beolvasni a kontrollerbe. Tehát pl. egy 7 bites kapcsolóval 0...127 tartományban tudsz címeket képezni. Imi.
Még a CAN jutott eszembe, csak az egy kicsit ijesztően bonyolultnak tűnik számomra. Állítólag 40 méterig az is jó 1 Mbit/s sebességig.
Köszönöm szépen a gyors válaszokat.
Tehát az RS 485 a nyerő. Hardweresen vagy softweresen egyszerűbb a megvalósítás? Nem kell gyorsnaklennie 10-50ms eszközönként. Köszi
A hardver egy-egy SN75176-ból áll, a többi szoftveres dolog.
Üdv.
Igen, a CAN is jó erre a célra, 1200 méterig mehet a hossz (repetaer nélkül), itt még tudja az 50 kbps-et. Mi használunk CAN-t házautomatizálásra: - kb. 700 méter volt eddig a max., nem volt baj vele - 18F2580-as egységek a SLAVE-k (ebben van beépített CAN, csak SW kell hozzá, de az sem vészes, van Microchip ANxxx) - van egy dsPIC30F6014-es RS232-CAN konverter, ennek segítségével kommunikál a mester a CAN buszon, ami egy PLC jelen esetben - egy dologra nagyon oda kell figyelni: nem szabad a belső RC oszcit használni, mert pontatlan, mondhat a Microchip bármit, nem megy vele, kvarc kell. Állítólag bizonyos kontrollerekben a PLL is szór annyit, hogy a kvarcot szorozva 1Mbps sebesség esetén félremér a vevő, ezt nem tudom, nincs tapasztalatom - SW oldalról első körben nem kell túlbonyolítani, nem kell CANOpen, sem DeviceNet, bőven elég a saját elgondolás alapján használt 8 byte, a CAN HW (ami a 2580-ban van) alapból generál és vizsgál CRC-t, ezzel nem kell foglalkozni, ha rossz a csomag, meg sem kapod - itt is le kell zárni 120 Ohm-al, de 10nF kondi nem kell. Rövid távon, és/vagy kis sebességen nem kell lezárni, de előbb-utóbb sok lesz a hibás csomag. Ha kettőnél több helyen zárod le, akkor az MCP2551 kb. 1-3 nap után meghal - a CAN transc. IC ne MCP2551 legyen, hanem PHILIPS PCAxxx sorozat, ez jóval zavarvédettebb - egy 18F2580 kb. 100-120 kbps sebességet tud kiszolgálni, ha C-ben írod a kódot És még 2 dolog: - tegyük fel, hogy van 200 méter kábel, egyik végén eszköz, lezárva. A másik végén a 180.-ik méternél megint eszköz szintén lezárva, de a maradék 20 méter kábel megy tovább ebből az eszközből, és lóg a semmibe a végén nincs sem eszköz, sem ellenállás. A rendszer nem fog működni a reflexió miatt ! - kerülni kell minden oldalirányú leágazást a gerincről (angol szakirodalomban STUB), ez is bekavar, minél nagyobb a sebesség, annál inkább zavaró, az a legjobb, ha magát a gerincet viszed a SLAVE sorkapcsába oda-vissza. Imi.
Milyen kábelt használtok a CAN-hoz? UTP kábel jó hozzá?
|
Bejelentkezés
Hirdetés |