Hoe meet en analyseer je RS-232-signalen?

Introductie

Veel apparaten in industriële omgevingen gebruiken nog steeds een RS-232 seriële communicatieverbinding. RS-232 gebruikt twee signaalniveaus om onderscheid te maken tussen een logische "1" en een logische "0". Een logische "1" wordt weergegeven met -12 V en een logische "0" wordt weergegeven met +12 V. RS-232 kan op verschillende bitsnelheden werken, standaard waarden liggen tussen 110 bit/s en 115200 bit/s. Om de communicatie tussen het zendende apparaat en het ontvangende apparaat te synchroniseren, kunnen start- en stopbits aan de te verzenden data toegevoegd worden. RS-232 ondersteunt een eenvoudig systeem om de geldigheid van de verzonden data te controleren, met een pariteitsbit dat aan de te verzenden data toegevoegd kan worden. Twee signaallijnen zijn beschikbaar, TxD (Transmit Data) en RxD (Receive Data). Deze kunnen tegelijk gebruikt worden zodat full-duplex-verbindingen mogelijk zijn.

Benodigdheden

Meten

Om half-duplex RS-232-signalen te meten is een meetinstrument met minimaal 1 kanaal vereist. Om full-duplex RS-232-signalen te meten is een meetinstrument met minimaal 2 kanalen vereist. De maximale frequentie op de RS-232-bus is afhankelijk van de gebruikte bitsnelheid. Het instrument moet minimaal op drie keer de bitsnelheid op de bus kunnen samplen, maar liever ongeveer tien keer hoger. Voor een 110 bit/s bus zou dat betekenen dat een minimale samplefrequentie van 1 kHz per kanaal gewenst is. RS-232 gebruikt spanningen tussen -12 V en +12 V, dus het instrument moet minimaal deze spanningen kunnen meten. Omdat seriële communicaties lang kunnen duren, is een grote recordlengte aanbevolen om de datastromen te meten.

De WiFiScope WS6 DIFF, WiFiScope WS6, WiFiScope WS5, WiFiScope WS4 DIFF, Handyscope HS6 DIFF, Handyscope HS5, Handyscope HS4 DIFF, Handyscope HS4 en de Handyscope HS3 zijn geschikte instrumenten om RS-232-signalen te meten.

Analyseren

Om de verzonden data in de gemeten signalen te decoderen, moeten de diverse pulsen onderzocht worden, eventuele start-, stop- en pariteitsbits moeten weggelaten worden. De overblijvende bits moeten omgezet worden naar leesbare waarden.

De TiePie engineering Multi Channel oscilloscoop-software is in staat RS-232-signalen te analyseren, met de UART / Serieel-decoder .

Opwekken van een testsignaal

In dit voorbeeld wordt een Handyscope HS5 gebruikt om een seriële communicatie van een computer waarop een terminalprogramma draait waarin tekst wordt getypt, te meten.

Open een terminalprogramma (bijv. Hyperterminal) en stel het in om via een seriële (COM) poort te communiceren met de volgende instellingen:

Instelling Waarde
Baud rate 110
Data bits 8
Parity None
Stop bits 1
Data transport control None

Tekst die nu ingetypt wordt in het terminalprogramma wordt gelijk verstuurd via de seriële poort.

Instellen van de hardware

Eerst wordt de Handyscope HS5 aangesloten op de computer en de Multi Channel oscilloscoop-software gestart.

Verbind nu Ch1 met de TxD-lijn van de COM-poort van de computer. Verbind de massa-aansluiting van de ingang met de CG-lijn (chassis ground) van de COM-poort.

COM-poorten gebruiken een 9-pins of een 25-pins D-sub connector.

Signaal 9 pin 25 pin
TxD pin 3 pin 2
RxD pin 2 pin 3
CG pin 5 pin 1

Instellen van de software

Instellen van de ingangskanalen

Omdat in dit voorbeeld maar een kanaal gebruikt wordt on een RS-232-signaal te meten, kan Ch2 van de Handyscope HS5 van het scherm weggelaten worden.

Ingang Ch1 wordt gebruikt om de verzonden data (TxD) te meten. Om het herkennen van de gemeten signalen te vereenvoudigen, kan een ingang een beschrijvende naam (alias) gegeven worden. Klik, om de alias in te stellen, met de rechter muisknop op het kanaal in het objectscherm en kies Stel alias in... vul de gewenste waarde in. Geef Ch1 de alias "TxD".

RS-232-signalen liggen tussen -12 V en +12 V, waarbij de rusttoestand -12 V is. Zet daarom het ingangsbereik op "20 V" volle schaal en de signaalkoppeling op "DC". Op die manier kunnen beide niveaus goed gemeten worden.

Instellen van de tijdbasis

In ons voorbeeld wordt een 110 bit/s communicatie gebruikt. Zet daarom de tijdbasis op een samplefrequentie die ongeveer 10 keer hoger is, 1 kHz. Omdat we tekst in gaan tikken in een terminalprogramma, moeten we voldoende meettijd hebben, bijvoorbeeld 2 seconden. Bij een samplefrequentie van 1 kHz houdt dat in dat de recordlengte 2000 samples moet zijn.

Instellen van de trigger

In rust staat op de TxD-lijn een logische "1", wat overeenkomt met -12 V. Wanneer de data-overdracht begint, wordt eerst een startbit, een logische "0" (+12 V) verzonden. Dit betekent dat het begin van een dataoverdracht een opgaande flank is. Zet daarom het triggertype op opgaande flank. De waarden voor het triggerniveau en de triggerhysteresis zijn niet erg belangrijk, zolang ze maar binnen het gebied van -12 V tot +12 V liggen. Stel het niveau in op bijv. 50% en de hysteresis in op bijvoorbeeld 2.5%. Om er zeker van te zijn dat de meting pas gestart wordt als de communicatie begint, moet de trigger timeout op oneindig gezet worden.

Seriële communicatie

Instellen van de UART / Serieel-decoder

Voor het analyseren van de RS-232-signalen wordt de UART / Serieel-decoder-I/O gebruikt. Maak deze door op I/O's in het Objectscherm te klikken, dan Decodeer te kiezen en dan de UART / Serieel-decoder te kiezen.

Verbind Ch1, TxD, met de UART / serieel-decoder door deze op de I/O te slepen in het Objectscherm.

Om de gedecodeerde UART / seriële boodschappen weer te geven wordt een Tabel-sink gebruikt. Maak deze door te klikken op Sinks in het objectscherm en dan Tabel te kiezen. Verbind de UART / serieel-decoder met de tabel door de decoder op de tabel te slepen in het objectscherm.

Poortinstellingen

Klik op het Instellingen-tabblad om de poortinstellingen van de decoder in te stellen.

Serieel-decoder instellingenscherm

Niveau en Hysterese
Bij gewone seriële communicatie worden alle signaalniveaus boven het Niveau als logische "0" beschouwd en alle niveaus onder Niveau - Hysterese als logische "1" beschouwd. De decoder kan aan de hand van het gemeten signaal zelf een niveau en hysterese bepalen of de gebruiker kan zelf spanningswaarden invullen die als niveau en hysterese gebruikt worden. Normaal gesproken zal Auto-niveau voldoen, dus zet Automatisch niveau en hysterese detecteren aan.
Inverteren
Bij gewone seriële communicatie wordt een logische "0" weergegeven met een hoog spanningsniveau en een logische "1" met een laag spanningsniveau. In sommige situaties is dit omgekeerd en is een logische "1" een hoog niveau en een logiche "0" een laag niveau. In ons voorbeeld wordt standaard RS-232 gebruikt, dus stel schakel Inverteren uit.
Baud rate
De Serieel-decoder kan zelf de baud rate van een gemeten signaal uitzoeken (Automatisch). Dat vereist echter dat in het gemeten signaal een minimaal aantal flanken voorkomen, dus de communicatie moet lang genoeg zijn. De decoder kan ook ingesteld worden op een vaste baud rate. Met die instelling zal de decoder de gemeten waarden gelijk decoderen met gebruik van de opgegeven baud rate. In ons voorbeeld wordt een baud rate van 110 baud gebruikt. Stel de baud rate van de decoder in op 110.
Databits
Seriële communicatie kan verschillende aantallen bits per verzonden karakter gebruiken. In ons voorbeeld worden 8 databits gebruikt. Stel het aantal databits van de decoder in op 8.
Pariteit
Seriële communicatie kan verschillende soorten pariteit gebruiken om de geldigheid van de ontvangen gegevens te controleren. In ons voorbeeld wordt geen pariteit gebruikt. Stel de pariteit van de decoder in op Geen.
Stopbits
Seriële communicatie kan verschillende aantallen stopbits per verzonden karakter gebruiken. In ons voorbeeld wordt 1 stop bit gebruikt. Stel het aantal stopbits van de decoder in op 1.

The overige instellingen zijn niet relevant voor decoderen van RS232, dus kunnen genegeerd worden.

Klaar om te meten

Nu alles alles juist in ingesteld, kan het testsignaal opgewekt worden. Typ een woord in in het terminalprogramma om een seriële communicatie op te wekken. Het meetinstrument zal deze communicatie opnemen en de Serieel-decoder zal de gemeten waarden analyseren en decoderen.

Seriële communicatie gedecodeerd

In ons voorbeeld is het woord "tiepie" ingetikt, gemeten en gedecodeerd. De gedecodeerde gegevens worden in de tabel weergegeven.

Druk op de Clear Wissen-knop om het uitvoerscherm te wissen voor een nieuwe meting.

De UART / Serieel-decoder kan meer kolommen met informatie tonen die standaard niet ingeschakeld zijn. Klik op de ColumnSelectBtn Selecteer kolommen-knop om kolommen in- of uit te schakelen in de tabel.

Als een stuk communicatie langer is dan de tabel is het niet mogelijk de tekst te zien die onderaan toegevoegd wordt. De tabel heeft een auto scroll-functie, die er voor zorgt dat altijd de onderste regels zichtbaar zijn. Om deze functie aan of uit te zetten moet op de Scroll Scroll automatisch naar beneden-knop gedrukt worden.

Om de inhoud van het uitvoerscherm op schijf op te slaan kan op de Save Opslaan-knop gedrukt worden.

Om te voorkomen dat het uitvoerscherm verborgen wordt onder andere vensters kan op de AlwaysOnTop Altijd op voorgrond-knop gedrukt worden.

Slechte signalen schoonmaken

In industriële omgevingen kunnen de gemeten signalen erg "smerig" zijn, waardoor de serieel-decoder problemen kan hebben de communicatie juist te decoderen. Schoonmaken van de signalen kan decoderen van de signalen door de serieel-decoder verbeteren.