Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Assumption is the mother of all f*ck ups
Ts schrijft er niets over en als in zijn sniffers de Terminator aanstaat en in de eerste node dan kan het zomaar zijn dat hij de nodes daarachter niet goed ziet....
En op die andere sniffers hetzelfde..
Doet exact wat TS beschrijft.
henri62
1-st law of Henri: De wet van behoud van ellende. 2-nd law of Henri: Ellende komt nooit alleen.
@Peter: Je zegt dus dat van 1 NODE (slave) de TX+ links en de TX+ rechts hard aan elkaar hangen? Hetzelfde geld voor TX-, RX+ en RX- aansluitingen?
Lijkt me stug, want dan kan het nooit werken tenzij er een enumeratie protocol aan vooraf gaat en dan zou altijd dezelfde node moeten reageren onafhankelijk waar die in de lus zit.
Ik opteer nog steeds voor een systeem wat domweg TX->RX (node) TX->RX doorlust.
Dan is meteen het mysterie van de terminators opgelost en het feit dat RS422 transmitters niet disabled kunnen worden.
Op woensdag 7 augustus 2024 00:24:09 schreef henri62:
@Peter: Je zegt dus dat van 1 NODE (slave) de TX+ links en de TX+ rechts hard aan elkaar hangen? Hetzelfde geld voor TX-, RX+ en RX- aansluitingen?
Klopt, ik heb zojuist nogmaals gemeten met een multimeter. TX+ links en TX+ rechts van een node zitten hard aan elkaar. Geldt ook voor de overige lijnen. D.w.z. de multimeter piept en geeft nagenoeg 0 Ohm aan.
Ik opteer nog steeds voor een systeem wat domweg TX->RX (node) TX->RX doorlust.
Dan is meteen het mysterie van de terminators opgelost en het feit dat RS422 transmitters niet disabled kunnen worden.
Wat bedoel je met doorlussen? Stel dat de master op de linker kabel van node 1 zit en op de rechter kabel van node 1 zit node 2. De linker kabel is dan de 'inkomende' kabel en de rechter kabel de 'uitgaande' kabel. De master zendt iets vanuit zijn TX op de RX lijnen van de node, in de linker kabel. Dit bericht gaat via de uitgaande kabel, over de RX lijnen, naar node 2.
Het bericht van de master, wat node 1 via zijn RX lijn ontvangt, gaat ook via de RX lijn van de uitgaande kabel naar node 2. Node 1 zendt dus het commando niet door via de TX lijn naar node 2, maar via de RX lijn.
Op dinsdag 6 augustus 2024 22:59:28 schreef High met Henk:
Assumption is the mother of all f*ck upsTs schrijft er niets over en als in zijn sniffers de Terminator aanstaat en in de eerste node dan kan het zomaar zijn dat hij de nodes daarachter niet goed ziet....
En op die andere sniffers hetzelfde..
Doet exact wat TS beschrijft.
Wellicht dat ze intern zitten maar dat is inderdaad een aanname. Ik gebruikt een DeLock usb-RS422 converter maar ze reppen met geen woord over een terminator...
fatbeard
Honourable Member
Een goed begin is geen excuus voor half werk; goed gereedschap trouwens ook niet. Niets is ooit onmogelijk voor hen die het niet hoeven te doen.
Terminators zijn alleen noodzakelijk bij hoge snelheden (>9600) en/of lange lijnen (>10m).
Voorzover ik begrepen heb is het tweede niet van toepassing, de comminicatiesnelheid heb ik in het hele verhaal nog niet kunnen ontdekken.
Ze zullen sowieso NIET in de modules zitten (is vast te stellen door op een losse module tussen TX+ en TX-, RX+ en RX- te meten) omdat het aantal modules in de keten niet vantevoren vaststaat: bij meer dan twee terminators op een lijn gaat de communicatiekwaliteit ook achteruit.
Met een scoop valt misschien een looptijd te bepalen: die kan ín de module kunstmatig verlengd zijn met een filter. Dat zou dan kunnen verklaren waarom ze altijd netjes in volgorde antwoorden...
Ok, ik heb zojuist een kleine ontdekking gedaan 
Node 1 schakelt de voeding van de uitgaande kabel uit. Alle node's na node 1 worden dus uitgeschakeld. Dit wetende, is het niet zo gek dat alleen node 1 antwoord geeft.
Dat ik aan het einde van de bus/chain wel de commando's kan zien, is omdat de RX en TX lijnen aan elkaar hangen, zoals al gemeld. Maar de elektronica in de node is dus simpelweg uitgeschakeld.
Als de master het antwoord van node 1 bevestigd (zoals ik in m'n eerste post uitleg) dan schakelt node 1 de uitgaande voeding in, zodat node 2 gevoed wordt. Ik heb het verder niet gecontroleerd, maar ik neem aan dat het voor de volgende nodes allemaal hetzelfde werkt. En dus antwoord er per keer maar 1 node omdat de rest of nog uitgeschakeld is of al geantwoord heeft op het commando.
Het kan soms heel simpel zijn, zo blijkt maar weer.
buckfast_beekeeper
Van Lambiek wordt goede geuze gemaakt.
Dit verklaart alles. Mooi gevonden.
edit: dit geintje werkt alleen als de master aan het begin van een string zit. Wat gebeurd er als de master in het midden zit en je een T vormt? Of heeft de master slechts 1 aansluiting? Dat is dan ook niet volgens de topologie van RS485/RS422. Waar master en node zich bevinden in de bus zou niks mogen uitmaken.
[Bericht gewijzigd door buckfast_beekeeper op (82%)]
henri62
1-st law of Henri: De wet van behoud van ellende. 2-nd law of Henri: Ellende komt nooit alleen.
De voedingspinnen hangen dus NIET aan elkaar!
Dat is wel een heel ranzige oplossing. De eerste node zal na het commando dat die zelf ontvangt zichzelf dus dan adres 2 gaan geven. De tweede wordt dan 1 en doet heltzelfde kunstje.
De node die de voeding naar zijn volgende doorlust kan dan zien dat de opvolgende node reageert en zijn eigen nummer elke keer met 1 ophogen. Iedere node doet dus precies hetzelfde kunstje.
Dat gaat door tot alle nodes ge-enumereerd zijn. De laatste node wordt dan uiteindelijk adres 1 want die ziet geen response meer.
Ik had het zo nooit gemaakt als ik het zou moeten ontwerpen: want power van een node eraf gooien is niet echt betrouwbaar. De start tijd van een node kan redelijk wat problemen veroorzaken en evt rommel op de bus zetten tijdens startup en mogelijke latchup van RS485 drivers (alhoewel dat redelijk strict gedefinieerd is dat het niet zou mogen).
@fatbeard: Terminators zijn wel nodig in dit geval, het originele spul is zover ik begrepen heb een aantal intelligente loadcellen. En die zitten vaak best een eind uit elkaar.
Op woensdag 7 augustus 2024 12:27:33 schreef buckfast_beekeeper:
edit: dit geintje werkt alleen als de master aan het begin van een string zit. Wat gebeurd er als de master in het midden zit en je een T vormt? Of heeft de master slechts 1 aansluiting? Dat is dan ook niet volgens de topologie van RS485/RS422. Waar master en node zich bevinden in de bus zou niks mogen uitmaken.
De master heeft inderdaad slechts 1 aansluiting dus je wordt gedwongen om hem als eerste aan te sluiten. Het is wat dat betreft ook niet echt een bus maar een daisy chain (ik moet wel zeggen dat ik de precieze definitie van beide systemen niet precies ken en ik dit topic is daar ook wat discussie over).
De voedingspinnen hangen dus NIET aan elkaar!
Klopt, dit had ik ook niet gezegd toch? Oke, toegegeven, ik had het in mijn post misschien wat duidelijk kunnen formuleren maar de focus lag op de datalijnen en totaal niet op de voedingslijnen.
Dat is wel een heel ranzige oplossing. De eerste node zal na het commando dat die zelf ontvangt zichzelf dus dan adres 2 gaan geven. De tweede wordt dan 1 en doet heltzelfde kunstje.
De node die de voeding naar zijn volgende doorlust kan dan zien dat de opvolgende node reageert en zijn eigen nummer elke keer met 1 ophogen. Iedere node doet dus precies hetzelfde kunstje.Dat gaat door tot alle nodes ge-enumereerd zijn. De laatste node wordt dan uiteindelijk adres 1 want die ziet geen response meer.
De master deelt de adressen uit. Die houdt bij welke al uitgegeven zijn. De slaves geven zichzelf geen adres. Pas als de master een 'bevestigings-commando' stuurt, schakelt de slave de spanning naar de rest van de bus/chain weer in.
Ten zij ik er over heen heb gelezen: wat eerder is opgemerkt: RS422 is hardware maar welk protocol wordt er eigenlijk gebruikt?
Op vrijdag 9 augustus 2024 12:18:14 schreef Leo-Bolier:
Ten zij ik er over heen heb gelezen: wat eerder is opgemerkt: RS422 is hardware maar welk protocol wordt er eigenlijk gebruikt?
Voor zover ik kan beoordelen een eigen protocol. Het is in ieder geval geen DALI of Modbus ofzo.