Meten en analyseren van 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 nodig is. RS-232 gebruikt spanningen tussen -12 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 Handyscope HS3, Handyscope HS4, Handyscope HS4 DIFF, Handyscope HS5 en de Handyscope HS6 DIFF zijn geschikte instrumenten om RS-232-signalen te meten.

Analyseren

Om de verzonden data in de gemeten signalen te analyseren, 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 Seriële analyzer.

Opwekken van een testsignaal

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

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

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

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

Instellen van de hardware

Eerst wordt de Handyscope HS4 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, kunnen Ch2, Ch3 en Ch4 van de Handyscope HS4 van het scherm verwijderd worden.

Ingang Ch1 wordt gebruikt om de verzonden data (TxD) te meten. Om 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. Dat 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 Serieel-analyzer

Voor het analyseren van de RS-232-signalen wordt de serieel-analyzer sink gebruikt. Maak een serieel-analyzer door met de rechter muisknop op Sinks in het Objectscherm te klikken en de serieel-analyzer te kiezen. Dit opent tevens een extra venster waarin de geanaliseerde gegevens worden weergegeven.

De serieel-analyzer kan maximaal 8 communicatiesignalen tegelijk analyseren, maar in ons voorbeeld wordt slechts 1 signaal gemeten. Verbind Ch1, TxD, met de serieel-analyzer door deze op de serieel-analyzer sink te slepen in het Objectscherm.

Seriële analyzer gemaakt

Poortinstellingen

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

Seriële analyzer instellingenscherm

De serieel-analyzer kan seriële communicaties van verscheidene bronnen tegelijk analyseren. Bronnen die aangesloten worden krijgen in eerste instantie standaard poortinstellingen. Deze standaard waarden kunnen aangepast worden door Standaard te kiezen in de Bron-selector. De instellingen voor bronnen die al zijn aangesloten kunnen ook aangepast worden. Ons voorbeeld gebruikt bron TxD, dus kies die in de Bron-selector.

Bitsnelheid
De Serieel-analyzer kan zelf de bitsnelheid van een gemeten signaal uitzoeken (Automatisch). Dat vereist echter dat in het gemeten signaal minimaal 25 flanken voorkomen, dus de communicatie moet lang genoeg zijn, 4 tot 5 karakters verzonden data. De analyzer kan ook ingesteld worden op een vaste bitsnelheid. Met die instelling zal de analyzer de gemeten waarden gelijk analyseren met gebruik van de opgegeven bitsnelheid. In ons voorbeeld wordt een bitsnelheid van 110 bits/s gebruikt. Stel de bitsnelheid van de analyzer in op 110.
Databits
Seriële communicatie verschillende aantallen bits per verzonden karakter gebruiken. In ons voorbeeld worden 8 databits gebruikt. Stel het aantal databits van de analyzer 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 analyzer in op Geen.
Stopbits
Seriële communicatie verschillende aantallen stopbits per verzonden karakter gebruiken. In ons voorbeeld wordt 1 stop bit gebruikt. Stel het aantal stopbits van de analyzer in op 1.
Type
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 het type in op Normaal.
Middenniveau
Bij gewone seriële communicatie worden alle niveaus boven het middenniveau als logische "0" beschouwd en alle niveaus onder het middenniveau als logische "1" beschouwd. De analyzer kan aan de hand van het gemeten signaal zelf een middenniveau bepalen of de gebruiker kan zelf een spanningswaarde invullen die als middenniveau gebruikt wordt. Normaal gesproken zal Auto-niveau voldoen, dus zet het Middenniveau op Auto-niveau

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-analyzer zal de gemeten waarden analyseren en decoderen.

Seriële communicatie gedecodeerd

In ons voorbeeld is het woord "tiepie" ingetikt, gemeten en gedecodeerd. De instellingen van de Serieel-analyzer worden in het uitvoerscherm, voor de geconverteerde gegevens weergegeven.

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

Als een stuk communicatie langer is dan het Serieel-analyzer uitvoerscherm, is het niet mogelijk de tekst te zien die onderaan toegevoegd wordt. Het venster 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 automatisch naar beneden-knop Scroll gedrukt worden.

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

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

Slechte signalen schoonmaken

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