Okee, nu kan ik iets zinnigs vragen.

[Kwoot]Wat je ook zou kunnen doen.
TX server bufferen
Alle TX'n van de overige pc's via een MAX232(familie) omzetten naar TTL en via diodes alle signalen OR'en deze uitgang terug via MAX232 naar RS232 niveau brengen.[/UnKwoot]

>> TX server bufferen.
(Wie moet die bufferen? De server zelf?)

>> en via diodes alle signalen OR'en en
Dat vat ik niet helemaal, misschien kan ik meer met een tekeningetje

>> en deze uitgang terug via MAX232
Welke uitgang??? (sluit waarschijnlijk aan op vorige vraag)

>> naar RS232 brengen.
Wat krijg ik dan in godsnaam uiteindelijk op mijn RS232-ingang te zien?

Als een (of meer) vraag/vragen nergens op slaan hoor ik het graag.

Pelle.

Als een (of meer) vraag/vragen nergens op slaan hoor ik het graag.

Je vragen slaan best wel ergens op maar het is iig mij te veel werk om het helemaal uit te spellen (of te tekenen).

Wie moet die bufferen? De server zelf?

De uitgang van de server (=TX) harwarematig bufferen. Een standaard uitgang van een pc is bedoeld om op 1 ontvanger aan te sluiten.

>> en via diodes alle signalen OR'en en
Dat vat ik niet helemaal, misschien kan ik meer met een tekeningetje

je hebt dan net alle TX'n van de pc omgezet van RS232 naar TTL niveau. Al deze uitgangen moeten op 1 ingang. Je kan niet al deze uitgangen gewoon aan mekaar knopen, want dan krijg je kortsluitingen. Door nu steeds een diode te plaatsen (in de richting van de data) krijg je geen kortsluitingen. Je moet anders maar eens wat zoeken achter de werking van digitale poorten, dit zal je zekertegenkomen bij besprekingen over OR-poorten.

>> en deze uitgang terug via MAX232
Welke uitgang??? (sluit waarschijnlijk aan op vorige vraag)

het knooppunt van deze diode's is nog steeds TTL. Je server-RX moet RS232 niveau hebben. de MAX232 doet deze omzetting

>> naar RS232 brengen.
Wat krijg ik dan in godsnaam uiteindelijk op mijn RS232-ingang te zien?

dan komen alle antwoorden van je pc's binnen. Er mag natuurlijk maar 1pc tegelijkertijd een antwoord sturen, anders heb je onbruikbare rommel.

Rx = Receive = ingang
Tx = Transmit = uitgang
bus = samenhangen van verschillende ontvangers/zenders op 1 leiding. Dit kan parallel (IDE,PCI,...) of serieel(USB,RS485,...) zijn.

[Kwoot]Er mag natuurlijk maar 1pc tegelijkertijd een antwoord sturen, anders heb je onbruikbare rommel.[/UnKwoot]

Dus dat is het idee achter een bus, als ik het goed begrijp. En hoe moet de ene PC nou weten dat hij data mag sturen terwijl niet een andere PC dat al doet?

Het lijkt me overigens ook (nog steeds) noodzakelijk dat elke PC zich identificeert met een of ander nummer ofzo, omdat de server anders niet kan zien waar het signaal vandaan komt.

Hoe kan ik trouwens de TxD hardwarematig bufferen?

Pel.

de server "polt" je pc's -->
server stuurt steeds een commando van pc1 iets te vertellen?
pc2? pc3?...pc1?

enkel wanneer de pc wordt aangesproken mag deze iets antwoorden.

Die Tx bufferen zou je ook kunnen doen via een max232.
Je moet maar eens de datasheet ervan bestuderen. Daar staat meestal ook de aanverwanten in beschreven,dwelke misschien beter zijn. Je hebt er namelijk aanverwanten van die 8 omzetters bevatten voor RS232 --> TTL

Ik snap niet dat je wilt bufferen, de COM poort heeft een buffer van zichzelf die groot genoeg is, volgens mij ben je het wiel opnieuw aan het uitvinden

de RS232 standaard is bedoeld om op 1 zender 1 ontvanger te plaatsen. Als hij op 1 zender 15 ontvangers zou willen plaatsen zit je al ruim voorbij de standaard waarvoor deze zender is gemaakt vandaar de buffering.

>> enkel wanneer de pc wordt aangesproken mag deze iets antwoorden.

En wat nou als de Client uit eigen initiatief iets tegen de server wil zeggen? Och, daar verzin ik trouwens wel wat op.

Dus als ik het goed begrijp gaat het in zijn geheel als volgt:

Server <= RxD <= MAX232 <= TTL <= diodes <= MAX232 <= Clients

Die diodes zijn er dus voor dat de Clients niet naar elkaar kunnen luisteren. (zeg ik dat goed? Dan snap ik het!!!!!)

En andersom:

Server => MAX232 => alles opsplitsen => MAX232 => Clients

Vraag hierover: Is het wel nodig om bij het uitgaande signaal MAX232's te gebruiken?!? En kun je een ingang en een uitgang tegelijkertijd op 1 Max232 zetten?

Nog een hele andere vraag:
Komt er voldoende vermogen uit je Com-poort voor deze toepassing, en zo ja tot hoe lang mag je datalijn worden? Of moet je voor de TTL en/of IC's een externe voeding gebruiken?

Pelle.

[Bericht gewijzigd door pelleke op ]

Op 23 september 2003 21:59:32 schreef sven:
de RS232 standaard is bedoeld om op 1 zender 1 ontvanger te plaatsen. Als hij op 1 zender 15 ontvangers zou willen plaatsen zit je al ruim voorbij de standaard waarvoor deze zender is gemaakt vandaar de buffering.

Ik had het ook over een databuffer

is het zo belangrijk dat je clients zelf initiatef kunnen nemen? want als je 15pc hebt en je werkt 9600 baud, kan je de pc's wel enkele keren per seconde pollen (= status opvragen)

Die diodes zorgen inderdaad dat het signaal maar 1 kant op kan.

1 MAX232 bezit 2 omzetters van RS232 naar TTL en 2 van TTL naar RS232, dewelke allemaal apart van mekaar kunnen gebruikt worden (zelfde gnd is wel nodig)

Bij het uitgaande signaal denk ik wel dat je best gebruik maakt van een buffer. Misschien werkt het zo ook wel, heb nog nooit meer dan 2 ingangen op 1 uitgang geplaatst (ik zou dan voor RS-485 gaan...)

Ik zou de spanning ergens gaan halen dan uit je com-poort.

TIP bekijk eerst eens het RS232 protocol dan weetje welke signalen er wanneer uit komen en wat ze doen.
dan zijn denk ik een hoop vragen al beantwoord;)

mvg Michel

Waar kan ik dat zien? real time gaat zeker niet lukken, want zo snel is mijn gezichtsvermogen niet :-)
En ik snap geloof ik toch nog niet helemaal het principe ervan, hoe moet je bijvoorbeeld RS232 ontvangen?!? Gaat dat Event-driven of wordt dat gebufferd in je poort ofzo?

PS Ik zat te denken aan 115200 bps, kunnen die IC's dat aan?

Pelle.

Op 25 september 2003 12:04:35 schreef pelleke:
Waar kan ik dat zien? real time gaat zeker niet lukken, want zo snel is mijn gezichtsvermogen niet :-)
En ik snap geloof ik toch nog niet helemaal het principe ervan, hoe moet je bijvoorbeeld RS232 ontvangen?!? Gaat dat Event-driven of wordt dat gebufferd in je poort ofzo?

PS Ik zat te denken aan 115200 bps, kunnen die IC's dat aan?

Pelle.

Google

voor de programmatie kan ik je niet helpen. Is veel te lang geleden. Misscien dat je dan beter eens begint met 2 pc met mekaar te laten praten. heb je enkel een gekruiste kabel nodig:


  pc1        pc2
   2          3
   3          2
   5          5

bij een 9 pins sub-d

Er is een ding wat ik niet helemaal begrijp. Waarom is het niet mogelijk om gewoon het RS232-protocol te "splitten", zeg maar: je hebt een null-modem kabel die je steeds doorlust, zodat alle clients het RS232-signaal ontvangen? Dan hoef je toch alleen maar te zorgen dat er geen twee PC's tegelijk praten?

omdat je dan 2 signalen (spanningen) op 1 draad wilt plaatsen.
Stel dat je 2 pcs aan mekaar aansluit zoals je voorstelt.
1pc is niet aktief, maar dat wil niet zeggen dat er geen spanning op die lijn is, maar dat er een logische 0 op staat. In het geval van RS232 is dat dan +12V.
Dan probeert de andere pc data door te sturen. Dit houdt in dat de spanning gaat veranderen van +12V naar -12V in vorm van pulsen.
Dus krijg je kortsluitingen want je wil op 1 lijn -12V en +12V gaan zetten. Daarom dus niet...
(dit gaat trouwens op voor de meeste comm-protocols)

En nog een reden...
RS232 werkt met als logische niveau -5...-12V als 1 en +5...+12V als 0 (ook "mark" of "space" wordt soms gebruikt)
dus elke poort moet tussen die grenzen werken. Als je ene pc als 0 -10V gebruikt en je andere pc -11V dan heb je, zelfs als de 2 pc's in rust zijn een spanningsverschil van 1V tussen de poorten staan!

RS232 is per definitie een point-to-point bus en dus nooit bedoeld om te worden gebruikt als multi-drop bus. Er zijn wat trucs om bijvoorbeeld 3 of 4 devices op elkaar aan te sluiten, waarbij je dan 1 "master" hebt. In de TX lijnen van de slaves zet je een diode in sper waarmee je het probleem omzeilt dat Sven aanhaalt (één transmitter wil de TX lijn hoog maken, de andere trekken 'm omlaag). In de meeste gevallen lukt dit nog wel met 2 of 3 slaves, maar bedenk dat je de TX van de master al snel te zwaar belast. Een ander punt is dat de flanken van de datapulsen gaan vervormen waardoor de kans op verkreupelde data toeneemt. Nogmaals: het is feitelijk misbruik maken van de standaard en in het slechtste geval (zeker bij oudere typen RS232 drivers!) loop je het risico de boel te slopen door overbelasting. RS232 drivers zijn dan wel korstluitvast, maar langdurig overbelasten betekent onherroepelijk het einde.

Voor dit soort applicaties is er dus RS485 of RS422. Houd er rekening mee dat je in beide gevallen de transmitters met behulp van een handshake-lijn tijdig moet enabelen en disabelen of je moet een schakelingetje maken dat automatisch de transmitter disabled nadat het laatste stopbit is verzonden (kan eenvoudig met een goed getimede a-stabiele).

Op 26 september 2003 07:49:18 schreef menno:
RS232 is per definitie een point-to-point bus en dus nooit bedoeld om te worden gebruikt als multi-drop bus.

RS-232 zelf is voor 1-op-1 communicatie, maar dat is bv de fysieke layer van IBM TokenRing ook. Twisted-pair ethernet trouwens ook. Met wat extra hardware kun je met 1-op-1 verbindingen best een netwerk maken.

Op 26 september 2003 08:51:31 schreef Wouter van Ooijen:
Met wat extra hardware kun je met 1-op-1 verbindingen best een netwerk maken.

Dat is precies wat ik zei. Maar die extra hardware is nou juist de crux: daar blijkt al uit dat de specificatie op zich niet is bedoeld voor de toepassing.

Overigens is de hele "RS" een vage bedoening. "RS" staat voor recommended standard; daar kan je dus alle kanten mee op. De grenzen worden buiten de "aanbeveling" feitelijk bepaald door de hardware die gebruikt wordt. En daarmee loop je dus het risico dat wat op de ene computer / device wel functioneert, op de andere niet werkt.

> Dat is precies wat ik zei. Maar die extra hardware is nou juist de crux: daar blijkt al uit dat de specificatie op zich niet is bedoeld voor de toepassing.

Dus twisted-pair ethernet is niet bedoeld voor netwerken?

> Overigens is de hele "RS" een vage bedoening. "RS" staat voor recommended standard; daar kan je dus alle kanten mee op.

Maar het zijn toch echt standaarden. (Ze zijn trouwens ook onder andere namen te verkrijgen).

Het hele internet hangt trouwens aan elkaar van standaarden die RFC heten: Request For Comment. Laat je dus niet door een naam misleiden :)

Even terug naar de communicatie: Het lukt mij niet om een 115200-verbinding te maken, en 9600 baud is op zich best aardig tot 10 a 15 pc's, maar bedenk dat er in mijn toepassing behalve constant pollen soms een pagina (!) tekst naar een client moet worden gestuurd.
Daar gaat natuurlijk wel wat tijd inzitten, ben ik bang. Ik ben momenteel al bezig met wat testjes, zoek alleen nog een aansluitschema van de MAX232.

Pelle

Maar tussen 9k6 een 115k zitten nog wel wat gradaties, dacht ik zo. En bij 19k2 piepel je een A4-tje binnen een paar seconden van A naar B. Is dat niet acceptabel, dan lijkt het me dat je een verkeerd "netwerk" hebt gekozen.

Sorry, wat ik bedoelde was het volgende:

VBDOS (want dat is mijn ontwikkelingsomgeving) kan geen hogere snelheden gebruiken dan 115200, of ik moet een externe bibliotheek gebruiken, maar dan kan ik geen gebruik maken van Event-trapping, dus ik ben al aan het denken over hoe dat moet gaan slagen...

Pel.

Hallo Allemaal,

ik heb misschien nog een goed alternatief voor het probleem.
Ik heb al sinds een paar jaren 2 RS232 netwerken in gebruik met elk 32 poorten. Ik maak gebruik van Serial to Ethernet converters (N-server van moxa www.moxa.com). Je kunt dan communiceren via het Ethernet protocol. Iedere coverter heeft dan zijn eigen IP adres. Aan iedere converter zitten vier COM poorten. Je kunt dus eenvoudig zien waar iets vandaan komt en waar iets naar toe moet. Misschien is dat een oplossing. ?

(Enorme kick, was niet meer nodig.)

Toch bedankt!