Home

 Impressum / Datenschutz

 Shop

 Download

 Links

 Blog

 

 

Der Seriell-Parallel-Wandler

© https://www.horter.de


Dieser Wandler wurde vor langer Zeit aus einer Not heraus geboren und hat in der heutigen Kommunikationswelt eigentlich nichts mehr verloren. Dennoch kann sich vielleicht jemand die eine oder andere Anregung aus diesem Artikel herauslesen.

Nicht alle SPS-Familien verfügen über die Möglichkeit, serielle Daten mit einem PC auszutauschen. Bei kleineren SIEMENS- Automatisierungsgeräten beispielsweise kann keine CP-Baugruppe gesteckt werden. Hier erscheint ein Datentransfer etwas schwieriger.

In diesem Fall bietet sich die Möglichkeit, einen Rechner an eine vorhandene 8-Bit Ein- bzw. Ausgabekarte zu koppeln und die Daten mit einem externen Gerät in ein serielles Signal umzuwandeln, das vom PC gelesen bzw. beschrieben werden kann.

Herzstück des Gerätes ist ein Baustein, der sowohl serielle Daten senden als auch serielle Daten empfangen kann. Beim UART (Universal Asynchronous Receiver Transmitter) AY3-1015 (NMOS-Typ der Fa. General Instruments) oder HD6402 (CMOS-Typ der Fa. Harris) ist dies sogar gleichzeitig möglich. Die Dateneingänge des seriellen Senders sowie die Ausgänge des Empfängers sind separat herausgeführt und vereinfachen die weitere Beschaltung erheblich. Die Ausgänge werden vom Baustein selbst zwischengespeichert, brauchen daher nicht mehr extern gehalten werden.

Der AY3-1015 von General Instruments sowie sein baugleicher Vergleichstyp HD 6402 von Harris wird nur mit 5V-Pegeln konfiguriert, mit denen die gewünschte Zeichenform, Start-/Stopbitzahl sowie Paritätsprüfung eingestellt werden kann. Es ist keine Softwareprogrammierung des Bausteins nötig.

Die geforderte Übertragungsgeschwindigkeit wird durch ein Taktsignal, welches 16mal höher als die Baudrate ist, festgelegt und an die Eingänge RCL (Empfänger) bzw. TCL (Sender) angelegt. Es sind sogar unterschiedliche Baudraten erlaubt. Nur die Einstellung der übrigen Parameter bleibt für beide Teile gleich.

Die folgende Tabelle gibt eine Übersicht der vorhandenen Ein- und Ausgänge des AY3-1015 sowie deren Funktion.

Pin Bezeichnung Funktion
1 Vcc +5 V Betriebsspannung
2 NC ------
3 GND Masse
4 OE Output Enable
1-Signal macht die Ausgänge DO0-DO7 hochohmig. 0-Signal schaltet ankommende Daten durch.
5-12 DO0-DO7 Data-Output
Datenausgänge Tri-State
13 PE Parity Error
Wird 1, wenn Paritätsprüfung fehlerhaft
14 FE Framming Error
Rahmenfehler
15 OR Over-Run Error
Wird 1, wenn ein Byte empfangen wird, bevor das vorherige ausgelesen wurde.
16 SWE Status Word Enable
0-Signal gibt die Statusausgänge PE, FE, OR, DAV, TBMT frei. 1-Signal macht diese hochohmig.
17 RCL Receiver-Clock
Empfänger Taktsignal (Baudrate mal 16)
18 RDAV Reset Data Available
0-Signal setzt DAV zurück.
19 DAV Data Available
Wird 1, wenn ein Byte empfangen wurde.
20 SI Serial-Input
Eingang für serielle Daten.
21 RESET 1-Signal setzt den Baustein zurück.
22 TBMT Transmitter Buffer Empty
1-Signal zeigt Sendebereitschaft an.
23 DS Data Strobe
0-Impuls startet das Aussenden des Datenbytes an den Eingängen DI0-DI7.
24 EOC End of Carakter
Wird 1, wenn ein Byte vollständig ausgesendet ist.
25 SO Serial Output
Ausgang der seriellen Daten.
26-33 DI0-DI7 Eingänge für das zu übertragende Datenbyte.
34 CTRE Control Enable
1-Impuls oder Dauersignal aktiviert die Einstellungen an den Pins 35-39.
35 NP No Parity
0-Signal, wenn Paritätsprüfung erwünscht.
36 NSB Number of Stop Bits
O-Signal: Ein Stopbit 1-Signal: Zwei Stopbits
37
38
NB2
NB1
Char-Form
Eingestellter Binärwert +5 ergibt die Datenbits pro Zeichen.
39 EPS Odd/Even Parity Select
0-Signal: ungerade Parität 1-Signal: gerade Parität
40 TCL Transmitter Clock
Sender Taktsignal 16 mal Baudrate


Nach der Parametrierung des Bausteines muss CTRE auf High gelegt werden, damit die Einstellungen übernommen werden.
Die Datenbits pro Zeichen können über NB1 und NB2 zwischen 5 und 8 Bits pro Zeichen eingestellt werden. Alle weiteren Punkte sind in der Tabelle beschrieben.
Die Datenübertragung mit dem UART AY3-1015 ist sehr unkompliziert. Wurde die Schnittstelle des PC's genauso wie der Baustein parametriert und stimmt die Frequenz des Taktgebers, dann sollte der Transfer wie folgt ablaufen:
Ein am SI-Eingang ankommendes, serielles Byte wird nach dem Startbit aufgezeichnet und während des ersten Stopbits auf die Datenausgänge DO0-DO7 durchgeschaltet.
Das Signal DAV wird zwei Taktperioden (2/16 Bitlängen) später High und zeigt den Empfang gültiger Daten an. Dieses Signal wird normalerweise von einem Prozessor ausgewertet und mit einem negativen Impuls an RDAV bestätigt. Dieser Impuls setzt dann DAV wieder zurück.
Mit OE können die Datenausgänge, mit dem SWE die Statusausgänge hochohmig geschaltet werden.
Das DAV-Signal sowie die drei Fehlermeldungen und TBMT werden nur ausgegeben, wenn an SWE 0-Signal anliegt.
Wenn TBMT High ist, können Daten übertragen werden.
Das Aussenden der Information an den Eingängen DI0-DI7 erfolgt nach einem kurzen negativen Impuls an DS. Das Datenbyte wird um die Bits der geforderten Parametrierung erweitert und als 5V-Signal auf den seriellen Ausgang gegeben. Um mit einem PC zu kommunizieren, muß dieses natürlich noch auf den V24-Pegel gebracht werden.
Nach erfolgreichem Aussenden der 8-Bit geht EOC wieder auf High.
An die Taktgeneratoren stellt der AY3-1015 keine sonderlich großen Anforderungen. Das Taktsignal muß lediglich 16 mal höher sein als die geforderte Baudrate. Dabei sind Toleranzen bis zu 3% erlaubt.
Auch eine Asymmetrie zwischen 1 und 0-Phasen steckt der Baustein locker weg. Soll zwischen mehreren Baudraten umgeschaltet werden, empfiehlt sich sicher ein Quarzschwingkreis mit nachfolgender Teilerkette. In unserem Fall reicht eine Kippstufe mit dem Timerbaustein NE555 in jedem Fall aus.
Die Widerstands- und Kapazitätswerte des RC-Gliedes können je nach Frequenz wie folgt berechnet werden.

Für 19,2 kBaud werden folgende Werte vorgeschlagen:f=1,44 / (1000+R)*C
  R83 = 4,7k
  C3 = 10 nF

Die errechnete Frequenz gilt bei eingetragenem R in Ohm und C in Farad, bei einem verwendeten Trimmer von 1 kOhm, wenn dieser ungefähr in Mittelstellung steht. Zum Abgleich wird ein Osziloskop oder Frequenzmeßgerät benötigt.
Unter DOS stehen Baudraten von 110, 150, 300, 600, 1.200, 2.400, 4.800, 9.600 und 19.200 zur Verfügung. In Q-Basic Programmen kann sogar bis 75 Baud eingestellt werden. Diese Übertragungsrate kann bei der Fehlersuche gute Dienste leisten. Der von uns verwendete UART AY 3-1015 kann bis 30 kBaud, der HD 6402 bis 200 kBaud eingesetzt werden.
Der UART ist über Optokoppler nach außen hin galvanisch getrennt, um ihn vor Spannungen >5V zu schützen. Trotzdem wurde die Möglichkeit offen gelassen, auch TTL Signale an den Ein- und Ausgängen zu verarbeiten.
Ein Spannungspegel >5V muß daher extern mit geeigneten Vorwiderständen reduziert werden. Der Eingangswiderstand der Schaltung liegt bei ca. 4,7 kOhm.

Bei 24V Eingangsspannung beispielsweise müssen 18 k Ohm Widerstände vorgeschaltet werden.
Die Ausgänge des Wandlers liegen als Open-Kollektor-Signale vor. Das heißt, sie müssen extern zur positiven Versorgungsspannung "gezogen" werden.
Geeignete Widerstandswerte für eine SIEMENS Digital Eingabebaugruppe liegen zwischen 2,2 und 4,7 kOhm.
Ansonsten enthält die Schaltung nur noch einige Inverter zur Signaldrehung für die LED's und drei NAND-Flip-Flops zur Speicherung eventuell auftretender Fehlermeldungen.
Das DAV-Signal wird einerseits zur Anzeige an LED 20 (Byte empfangen) geschaltet, andererseits dient er, falls mit DIP-Schalter eingestellt, zum zeitverzögerten Rücksetzen von DAV über R79 und C7 auf den Eingang RDAV .
Dieser Impuls kann bei einem anderen Fall zum Speichern ankommender Daten, z.B in ein Register, benutzt werden.
Die seriellen Ein- bzw. Ausgänge müssen nun noch auf ±12V gebracht werden. Diese Aufgabe übernimmt der Pegelwandler MAX 232. Aus 5V Betriebsspannung und vier Kondensatoren macht dieses IC die geforderten V 24-Pegel wie folgt:

Eingang Ausgang
5V (High) - 24 V
0V (Low) + 24V
-24 V High-Pegel
+24 V Low-Pegel

Der MAX232 oder auch ICL 232 besitzt je zwei Wandler in beide Richtungen. In unserem Fall benötigen wir nur eine Anpassung der TxD und RxD Leitung.
Das MAX-Modul wurde aber so konstruiert, dass durch Einlöten von Drahtbrücken noch je eine Handshake-Leitung in beide Richtungen gewandelt werden kann, falls dies für einen anderen Fall nötig wird.

 

Vor dem Bestücken der oberen Leiterplatte können die Positionen der Print-Taster und der LED's auf die Frontplatte des Pultgehäuses übertragen werden. Für diesen Fall wurden auf dem Layout Zentrierbohrungen festgelegt.
Der Dipp-Schalter sollte mit Reihenfassungen auf Abstand gebracht werden, damit er später mit der Frontplatte bündig abschließt.
Die LED's werden zum Schluss verlötet, wenn die Platine von hinten auf die Fronplatte geklebt wurde.
Durch die Verwendung der selbstklebenden Befestigungsteile SKF 3.01 werden keine weiteren Löcher für unschöne Schrauben in der Frontplatte benötigt.

Sind die beiden Leiterplatten bestückt, können sie an der Frontplatte mit den Distanzrollen und den selbstklebenden Befestigungsteilen montiert werden.

 

Jetzt müssen noch die drei Flachband-Verbindungen zwischen den Karten sowie die zum Max-Modul und zur Centronix-Buchse hergestellt werden.
Die Kontakte der Spannungsversorgung am Pfostenstecker ST-1 sind doppelt belegt:
Pin 23 und 25: Vcc
Pin 24 und 26: GND
Deshalb müssen jeweils beide Drähte am Centronix--Stecker angelötet werden.
 
Die Verbindung mit einer Standard PC-Schnittstelle erfolgt über ein Dreidraht-Nullmodemkabel nach folgender Abbildung:
Die Schreib- (TxD) und Leseleitung (RxD) ist jeweils gekreuzt verbunden und die Handshakeleitungen PC-seitig gebrückt.
Eine solch einfache Verbindung ist für längere Wege in elektronisch "verseuchtem" Gebiet auch relativ leicht mit Glasfaser zu realisieren.


Empfohlene DIP-Schalterstellungen
für die folgenden Programmbeispiele:
 

Wird nun der Wandler an 5V-Spannung gelegt, sollten die beiden LED's "Sendebereit" und "Byte gesendet" leuchten.
Ein eventuell anstehender Fehler an den linken drei LED's muß sich mit den beiden RESET-Tastern wegquittieren lassen. Wird der Taster Start Senden betätigt, geht für kurze Zeit die LED "Byte gesendet" aus.
Sollten bereits Daten an den Ausgängen anstehen, können diese nur durch übertragen einer Null über die serielle Schnittstelle gelöscht werden.

Nun kann die Funktion des seriellen Wandlers geprüft werden.
Das nachfolgende Q-Basic-Programm dient zum Schreiben von Daten auf die serielle Schnittstelle:

OPEN "COM1:1200,N,8,1,BIN" FOR OUTPUT AS #1	

Beginn:
	PRINT
	INPUT "Zu übertragender Wert:", a
	IF a > 255 THEN GOTO Ende
	CLS
	PRINT
	PRINT a; CHR$(a)
	PRINT #1, CHR$(a);
	GOTO Beginn

Ende:
	CLOSE 1

END

Die OPEN-Anweisung konfiguriert die serielle Schnittstelle COM1 mit 1200 Baud, No Parity, 8 Datenbits, 1 Stopbit und binärer Übertragung. Der Print #1 Anweisung muss ein Semikolon folgen, da sonst der PC nach jedem Zeichen ein Return-Zeichen (ASC 32) sendet.
Bei Werten >255 bricht das Programm ab. Die Baudrate kann zur Fehlersuche bis 75 herabgesetzt werden.
Dieses Programm dient zum Einlesen ankommender Daten an der seriellen PC-Schnittstelle.

OPEN "COM1:1200,N,8,1,BIN, FOR INPUT AS #1	

Beginn:
	I$ = INKEY$
	IF I$ = "q" THEN GOTO Ende
	B$ = INPUT$(1, #1)
	PRINT B$, ASC(B$)
	GOTO Beginn

Ende:
	CLOSE 1

END

Nach dem Tastendruck Start senden, bzw. einem Eingangssignal Ss steht der übertragene Wert von DI0-DI7 am Bildschirm.
Sollte es vorkommen, dass ein Wert mehrmals übertragen wird, kann das RC-Glied R76 und C6 an die Baudrate angepasst werden.
Unser Ziel ist es, Daten, z.B. Programmparameter oder Koordinaten für Positionierungen, aus dem PC in ein Automatisierungsgerät und umgekehrt zu übertragen.
Bei dem folgenden Programmbeispiel füttert der PC ein DOS-Textfile mit Zahlenwerten von 1 bis 255 in einen wählbaren Datenbaustein DB10 bis DB17 des Automatisierungsgerätes. Der Datenbaustein ist im AG in ausreichender Länge angelegt.

Das Textfile braucht folgendes Format:

:Textdatei: nc-1-005.txt Kommentare mit : beginnen
:----------------------------------
;DB 10 Datenbaustein mit ; angeben
0  Ausgänge löschen
10 Datenbaustein Nr.
41 1. Wert (DW 1)
63 2. Wert (DW 2)
...
150 249. Wert (DW 249)
61  250. Wert (DW 250)

;DB 12 nächster Datenbaustein
0
12 Datenbaustein Nr.
....

ENDE Ende der Übertragung

Das Basic-Programm holt sich die Werte aus der mit ED$ angegebenen Datei. Mit Doppelpunkt gekennzeichnete Zeilen werden ignoriert; mit Semikolon gibt man an, auf welchen Datenbaustein sich die Werte beziehen.
Die erste Null löscht die Ausgänge DO0-DO7, die zweite Zahl ist die DB-Nummer, in den die SPS dann die nachfolgenden Werte schreibt.
Dann folgen max. 250 Zahlen, die nach und nach auf die serielle Schnittstelle übertragen werden. Dazwischen sendet das Programm immer eine Null, damit das AG zum nächsten Datenwort wechselt.
Die Werte werden in beiden Geräten gezählt und zu einer Quersumme addiert, damit nach der Übertragung ein Vergleich zwischen PC und AG getroffen werden kann. Mit dieser Maßnahme wird ein Übertragungsfehler weitgehend ausgeschlossen. Damit die Quersumme aus anzeigetechnischen Gründen max. 3-stellig bleibt wird jedes Mal 1000 abgezogen, wenn diese größer wird.

Senden:
    CLS : LOCATE 7, 1
    INPUT "    Welches File übertragen"; ED$
    PRINT : PRINT "         Einen Moment Bitte!"
    OPEN "COM1:1200,N,8,1,BIN" FOR OUTPUT AS #2
    OPEN ED$ FOR INPUT AS #1

DB:
    DWNr= -2
Werte:
    Abbr$ = INKEY$
    IF Abbr$ <> "" THEN GOTO Abbruch
    LINE  INPUT #1, Wert$
    IF LEFT$(Wert$, 1) = ":" THEN GOTO Werte:
    IF LEFT$(Wert$, 1) = ";" OR Wert$ = "ENDE" THEN GOTO Baustein:
   
    PRINT #2, CHR$(VAL(Wert$));			REM Wert
    DWNr = DWNr + 1
    IF DWNr >= 1 THEN QS = QS + VAL(Wert$)
    IF QS > 1000 THEN QS = QS - 1000
    LOCATE 3, 1
    PRINT "Werte werden zum "; DBNr$; " übertragen."
    PRINT "Abbrechen mit Taste Q"
    PRINT "DB-Nr.         :  "; DBNr$
    PRINT "Datenwort    : "; DWNr
    PRINT "Wert            :  "; Wert$
    PRINT "Quersumme: "; QS
   
    FOR WS = 0 TO 500: NEXT WS:                 	REM Warteschleifen
    PRINT #2, CHR$(0);			REM Null
    FOR WS = 0 TO 500: NEXT WS			REM Warteschleife 
    GOTO Werte

Baustein:
    IF QS = 0 THEN GOTO Neuer:                  	REM Erster  DB
    LOCATE 14, 1
    PRINT "Die Quersumme dieses Bausteins beträgt "; QS
    QS = 0: DWNr = -2
    SLEEP (2)
    INPUT "Weiter (J/N) "; JN$
    IF JN$ = "N" OR JN$ = "n" OR Wert$ = "ENDE" THEN CLOSE : GOTO Senden

Neuer:
    CLS : LOCATE 1, 10
    DBNr$ = MID$(Wert$, 2, 5)
    PRINT
    INPUT "Sollen Werte zum "; DBNr$; " übertragen werden. (J/N)"; JN$
    IF JN$ = "N" OR JN$ = "n" THEN GOTO Abbruch
    CLS : GOTO Werte

Abbruch:
    CLS
    CLOSE
    GOTO Senden

Der Funktionsbaustein FB20 ist zeitoptimiert programmiert, d.h., es werden nur diese Teile durchlaufen, in denen auch etwas bearbeitet werden muß. Je schneller die eingesetzte Steuerung ist, um so kürzer können die Warteschleifen im PC-Programm gewählt werden.

FB 20                                C:FB20@@ST.S5D                    LAE=170  
                                                                       BLATT   1
NETZWERK 1         0000
NAME :DAT.LADE
 
0005      :L   EB   7                          DATEN
0006      :T   MB 140                          DATEN
0007      :L   KF +0
0009      :!=F
000A      :=   M  142.1                        DATEN =0
000B      :
000C      :U   M  142.1                        DATEN =0
000D      :UN  M  142.2                        HM DATEN =0
000E      :=   M  142.3                        ZM DATEN =0
000F      :U   M  142.1
0010      :=   M  142.2
0011      :
0012      :UN  M  142.1                        DATEN =0
0013      :UN  M  142.6                        HM DATEN <>0
0014      :=   M  142.7                        ZM DATEN <>0
0015      :UN  M  142.1
0016      :=   M  142.6
0017      :
0018      :U   M  142.1                        DATEN =0
0019      :L   KT 004.2
001B      :SE  T   20                          LESEZEIT RESET
001C      :
001D      :***


NETZWERK 2         001E
001E      :
001F      :UN  M  142.1                        DATEN =0
0020      :U   M  142.0                        DB AUFGESCHLAGEN
0021      :SPB =SPEI
0022      :
0023      :U   M  142.0                        DB AUFGESCHLAGEN
0024      :U   T   20                          LESEZEIT RESET
0025      :SPB =FERT
0026      :
0027      :U   M  142.0                        DB AUFGESCHLAGEN
0028      :U   M  142.3                        ZM DATEN =0
0029      :SPB =INKR
002A      :
002B      :UN  M  142.1                        DATEN =0
002C      :UN  M  142.0                        DB AUFGESCHLAGEN
002D      :SPB =A-DB
002E      :
002F      :BEA
0030      :
0031 SPEI :                                    WERTE IM DATENBAUSTEIN SPEICHERN
0032      :                                    ================================
0033      :
0034      :L   MB 146                          ZYKLEN-ZAEHLER
0035      :I        1                          +1
0036      :T   MB 146
0037      :L   KF +3                           IM 3. ZYKLUS SPEICHERN
0039      :><F
003A      :BEB
003B      :
003C      :B   MW 140                          MB 141 = AKT. DB-NR.
003D      :A   DB   0
003E      :
003F      :L   MB 140                          DATEN
0040      :T   MW  20                          SPEICHER DATEN
0041      :B   MW 142                          MB 143 = AKT. DW-NR.
0042      :T   DW   0
0043      :
0044      :L   MB 140                          DATEN
0045      :L   MW 144                          QUERSUMME
0046      :+F
0047      :T   MW 144
0048      :L   KF +1000
004A      :<=F                                 QUERS. < 1000
004B      :BEB
004C      :-F                                  QUERS. > 1000
004D      :T   MW 144                          QUERSUMME
004E      :BEA
004F      :  &#12;

0050 FERT :                                    UEBERTRAGUNG FERTIG
0051      :                                    ===================
0052      :
0053      : 
0054      :
0055      :
0056      :L   MB 143                          AKT. DW-NR.
0057      :D        1                          -1
0058      :T   MW  22                          SPEICHER AKT. DW-NR.
0059      :
005A      :L   MW 144                          QUERSUMME
005B      :L   MB 141                          AKT. DB-NR.
005C      :-F
005D      :T   MW  24                          SPEICHER QUERSUMME
005E      :
005F      :                                    DATENWOERTER BIS 254 LOESCHEN
0060      :                                    =============================
0061      :
0062      :B   MW 140                          MW 141 AKT.DB-NR.
0063      :A   DB   0
0064 LOOP :                                    DATENWOERTER - 254 LOESCHEN
0065      :L   KF +0
0067      :B   MW 142                          MB 143 AKT. DW-NR.
0068      :T   DW   0
0069      :L   MB 143                          DW-NR.
006A      :I        1                          +1
006B      :T   MB 143
006C      :L   KF +255
006E      :<F
006F      :SPB =LOOP
0070      :
0071      :L   KH 0000
0073      :T   MB 141                          AKT. DB-NR.
0074      :T   MB 143                          AKT. DW-NR.
0075      :T   MW 144                          QUERSUMME
0076      :R   M  142.0                        DB AUFGESCHLAGEN
0077      :
0078      :BEA
0079      :
007A INKR :                                    INKREMENT DW-ZAEHLER
007B      :                                    ====================
007C      :L   MB 143                          AKT. DW-NR.
007D      :L   KF +1
007F      :+F
0080      :T   MB 143
0081      :
0082      :L   KF +0
0084      :T   MB 146                          ZYKLEN-ZAEHLER
0085      :BEA
0086      :
0087 A-DB :                                    DB ANWAEHLEN U. OEFFNEN
0088      :                                    =======================
0089      :L   MB 140                          DATEN
008A      :L   KF +9                           SICHERHEITSABFRAGE
008C      :<F                                  9 <  DB
008D      :BEB
008E      :
008F      :L   MB 140                          DATEN
0090      :L   KF +18                          SICHERHEITSABFRAGE
0092      :>F                                  DB < 18
0093      :BEB
0094      :
0095      :L   MB 140                          DATEN
0096      :T   MB 141                          DB-NR.
0097      :T   MW  26                          SPEICHER DB NR.
0098      :S   M  142.0                        DB ANGEWAEHLT
0099      :
009A      :B   MW 140                          MB 141 AKT. DB-NR.
009B      :A   DB   0
009C      :
009D      :BE 

Das Merkerbyte 146 zählt laufend die Zyklen einer Übertragungsphase. Dieses Byte gibt Auskunft darüber, wie viele "Runden" das Programm in einer Phase dreht, ehe eine Null gesendet wird. Mit diesem Wert kann die Geschwindigkeit der Übertragung optimiert werden. Man muß dabei berücksichtigen, daß erst im 3. Zyklus gespeichert wird.
Auch dieser Wert kann der Steuerung angepaßt werden. Das MB 146 wird in der NULL-Phase gelöscht.
Im Netzwerk 1 wird das Daten-Eingangsbyte (hier EB7) überwacht. Stellt die Steuerung eine Änderung an ihren Eingängen fest, werden Merker entsprechend der Änderung zugewiesen:

EB 7 = 0 M 142.1 "1" statisch EB 7 wird 0 M 142.3 "1" für einen Zyklus EB 7 wird <> 0 M 142.7 "1" für einen Zyklus

Diese Merker beeinflussen im Netzwerk 2 den weiteren Programmablauf, der in fünf Teile strukturiert ist:

  • Null wird empfangen, DB ist nicht angesprochen,
    "Lauerstellung".

  • Daten kommen an, DB ist nicht angesprochen,
    DB anwählen.

  • Daten kommen an, DB ist bereits angesprochen,
    Wert speichern.

  • Null wird empfangen, DB ist angesprochen,
    Datenwortzähler inkrementieren.

  • Null wird empfangen, DB ist angesprochen, Überwachungs- zeit abgelaufen,
    Datenübertragung fertig.

Der erste empfangene Wert wird in das Merkerbyte 141 geschrieben und so der DB angesprochen, auf dem die nachfolgenden Daten gespeichert werden sollen. Dabei werden in diesem Beispiel nur DBs zwischen 10 und 17 zugelassen, damit nicht auf Datenbausteine zugegriffen wird, die nicht angelegt sind. Dies hätte einen STOP des AG zur Folge.

Mit der Bearbeitungsfunktion wird der im MB 141 angewählte DB aufgeschlagen und ein ankommender Wert im 3. Zyklus auf das mit MB 143 adressierte Datenwort gespeichert.

Dieser kleine Zeitverzug ist notwendig, da sich in der Praxis gezeigt hat, daß die Daten nicht exakt gleichzeitig an der Eingabebaugruppe anliegen.

Der Datenwortzähler MB 143 wird einmal in jeder NULL-Phase um 1 inkrementiert.

Empfängt die Steuerung längere Zeit keine Daten, so wird die Übertragung abgebrochen, die Datenwörter des angewählten Datenbausteines bis zum Datenwort 254 gelöscht, und die Quersumme sowie die Anzahl der empfangenen Werte berechnet.

Die für die Übertragung interessanten Ergebnisse werden in folgenden Merkerwörtern gespeichert:

MW 20 aktuell empfangener Wert,
MW 22 Anzahl der Datenwörter nach der Übertragung,
MW 24 Quersumme nach der Übertragung,
MW 26 aktueller Datenbaustein.

Diese Speicher können während bzw. nach der Übertragung angezeigt oder ausgewertet, bzw. auch zum PC zurück übertragen und dort verglichen, werden