|
 |
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 : 
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 |