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:
Lapozás: OK   4 / 8
(#) potyo válasza Jobbagyag hozzászólására (») Szept 4, 2009 /
 
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?
(#) jym válasza Jobbagyag hozzászólására (») Szept 4, 2009 /
 
Ü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.
(#) Jobbagyag válasza jym hozzászólására (») Szept 4, 2009 /
 
Igen a két kontroller is és a két SN75176 is. Megpróbálom a 100 Ohm-okat.
(#) Jobbagyag válasza jym hozzászólására (») Szept 9, 2009 /
 
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
(#) Jobbagyag válasza potyo hozzászólására (») Szept 12, 2009 /
 
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.
(#) Jobbagyag válasza Jobbagyag hozzászólására (») Szept 13, 2009 /
 
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.
(#) Jobbagyag válasza potyo hozzászólására (») Szept 17, 2009 /
 
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.
(#) jym válasza Jobbagyag hozzászólására (») Szept 17, 2009 /
 
Ü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.
(#) Jobbagyag válasza jym hozzászólására (») Szept 17, 2009 /
 
Huh!
Vissza vonulok emeszteni.....
Kosz a sok javaslatot, jelentkezek ha mindet atragtam.
(#) Jobbagyag válasza jym hozzászólására (») Szept 18, 2009 /
 
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.
(#) pipi válasza Jobbagyag hozzászólására (») Szept 18, 2009 /
 
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...
(#) jym válasza Jobbagyag hozzászólására (») Szept 18, 2009 /
 
Ü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.
(#) Jobbagyag válasza jym hozzászólására (») Szept 18, 2009 /
 
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....
(#) jym válasza Jobbagyag hozzászólására (») Szept 18, 2009 / 1
 
Ü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.
(#) jym válasza Jobbagyag hozzászólására (») Szept 18, 2009 /
 
Üdv!

Idézet:

SN75176-ok tekintelyes aramokat vesznek fel


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.
(#) Jobbagyag válasza jym hozzászólására (») Szept 22, 2009 /
 
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
(#) icserny válasza Jobbagyag hozzászólására (») Szept 22, 2009 /
 
Idézet:
„Úgyhogy 4-wire, opto-k, DC-DC converter.”

Lásd MAX1490A vagy MAX1490B...
(#) Jobbagyag válasza icserny hozzászólására (») Szept 23, 2009 /
 
Kosz, ranezek.
(#) PI314 hozzászólása Feb 15, 2010 /
 
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)

(#) icserny válasza PI314 hozzászólására (») Feb 15, 2010 /
 
Mi a konkrét kérdés?
(#) PI314 válasza icserny hozzászólására (») Feb 15, 2010 /
 
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
(#) jym válasza PI314 hozzászólására (») Feb 15, 2010 /
 
Üdv.

MODBUS RTU (bonyolultabb) vagy ASCII (egyszerűbb) a javaslatom a problémádra. Ez alkalmas RS232 vagy RS485 fizikai átvitel esetén is.

A Slave-k mondjuk DIP kapcsolóról veszik a címüket.

Imi.
(#) icserny válasza PI314 hozzászólására (») Feb 15, 2010 /
 
Idézet:
„Melyik soros kommunikáció lenne a legegyszerűbb?”
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)

AN774
AN1230
(#) jym válasza PI314 hozzászólására (») Feb 15, 2010 /
 
Ü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.
(#) jym válasza icserny hozzászólására (») Feb 15, 2010 /
 
Üdv.

"és egyéb körülményektől"

Ha 1-nél több slave van, akkor RS485 mindenképp. Pont-pont kapcsoltra 1mester-1slave-hez jó csak az RS232.

Imi.
(#) icserny válasza jym hozzászólására (») Feb 15, 2010 /
 
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.
(#) PI314 válasza icserny hozzászólására (») Feb 15, 2010 /
 
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
(#) potyo válasza PI314 hozzászólására (») Feb 15, 2010 /
 
A hardver egy-egy SN75176-ból áll, a többi szoftveres dolog.
(#) jym válasza icserny hozzászólására (») Feb 15, 2010 /
 
Ü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.
(#) potyo válasza jym hozzászólására (») Feb 15, 2010 /
 
Milyen kábelt használtok a CAN-hoz? UTP kábel jó hozzá?
Következő: »»   4 / 8
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem