Ausgabe 25, September 1999
Mit dem SIOSBAS.EXE kann das SIOS-Interface in den Zustand versetzt werden, autonome Anwendungen ohne angeschlossenen PC durchzuführen. Was liegt also näher als die Idee, mit dem SIOS unabhängig wie mit der ZELLE außerhalb der 4 Wände unterwegs Langzeitmessungen durchzuführen.
Der Artikel mit den beschriebenen Beispielprogramme steht auch zum DownLoad zur Verfügung. (5 KB)
Aufgabenbeschreibung
Erfassung von 1020 Messdaten mit variablen Messpunktabständen von Vielfachem einer Sekunde bis mindestens 30 Sekunden – das entspricht 8 1/2 Stdn. Gesamtmessdauer über einen Sensorkanal – genug für einen Ausflug.
Starten der Messung über Triggerung.
Messzeitpunkt sowie Ende der Messung sollen signalisiert werden.
Zusätzlich sollen nach Messwerterfassung die erfassten Daten ausgelesen und mit einem PC weiter verarbeitet werden können; aus Datensicherheitsgründen soll vor einem endgültigen Programmabschluss immer eine erneute Auslesung der Messdaten durch Entscheidung des Anwenders möglich sein.
Eingesetzte Hardware
Eingesetzte Software
Das Programm gliedert sich in die Teile: Initialisierung, Messvorgang, Datenauslese
Mittels der Variablen S und Z kann die Zeit zwischen den einzelnen Messpunkten variiert werden. S=401 ergab den Wert für ca 1 Sekunde Schleifendurchlauf; die Variable Z ergibt dann das Vielfache von 1 Sekunde; danach wird der Ausgabeport A0..A7 auf Null-potential gesetzt. Es werden 4 Variablen zu je 255 Datenfeldern initialisiert.
Nach positiver Triggerung an E0 beginnt der Messvorgang;
Abhängig von den Zeitverzögerungsschleifen werden die einzelnen Variabelenfelder mit den am Sensoreingang AN(2) anliegenden Werten beschickt; die einzelnen Messzeitpunkte werden am Datenausgang A0 während des Messvorgangs laufend signalisiert. Das Ende des Messvorgangs wird über den Datenausgang A7 angezeigt.
Ab diesem Zeitpunkt kann die Datenauslese erfolgen; hierzu erwartet das Programm einen lfd. positiven Impuls abwechselnd an den Dateneingängen E1 und E2 – beginnend mit E1. In Abhängigkeit dieses Taktes gibt das Interface an seinen Datenausgängen A0..A7 die einzelnen 1020 Messdaten aus.
Das Ende der Datenausgabe wird über OUTPORT=255 am Datenausgang A0..A7 angezeigt; jetzt kann der Anwender das Programm durch positiven Inpuls an E0 beenden oder mittels positivem Impuls an E3 eine erneute Datenauslese ermöglichen.
ModulLAB für CompuLAB (INMCLAB.PRG; INWERK.PRC)
Mit diesem Programm kann die Datenauslese erfolgen. Gleichzeitig ist eine Speicherung der ausgelesenen Daten für nachfolgende Verarbeitungen mit dem Softwarepaket ModulLab für CompuLAB möglich, was das Arbeiten mit diesem Werkzeug sehr angenehm macht.
Ablaufbeispiel
Messung durchführen
Gewünschten Sensor anschließen; dann Nullpotential von E0 lösen und mit der Messleitung E0 positiv triggern.
Datenauslese
Nachdem nun das SIOS-Interface mit den gespeicherten Messwerten vorliegt, ist die Hardware für die anstehende Datenauslese wie folgt vorzubereiten:
Unbedingt jetzt vorab eine gemeinsame Masseverbindung zwischen dem SIOS Interface und dem CompuLAB mit einer freien Messleitung herstellen und dann erst beide Interfaces über ihre Sammelanschlüsse mit dem o.a. besonderen Verbindungskabel verbinden.
Jetzt kann Programm INMCLAB.PRG gestartet werden. Das Programm läuft in einer Warteschleife bis ein beliebiger Tastendruck eintrifft.
Vor dem Starten der Auswertung mit Tastendruck sind aber die Messleitungen an E1 und E2 am SIOS-Interface (Nullpotential !! – Kurzschlußgefahr !!) unbedingt zu entfernen.
Nun Tastendruck – und die Datenauslese beginnt.
Wenn alle LED am Ausgangsport aufleuchten, ist die Datenauslese beendet.
Das Programm wird beendet mit Triggerung am Dateneingang E0; eine erneute Datenauslese lässt sich jedoch auch – durch Triggerung an E3 – statt dessen veranlassen.
Die ausgelesenen Daten lassen sich als eigene Datei abspeichern und so für nachfolgende Auswertungen oder weitere Verarbeitungen sichern.
Programm INAD(2).BAS
Initialisierung 10 CLEAR : S=401 : Z=5 S=401 entspricht etwa 1 Sekunde; Z=5 ergibt 15 OUTPORT=0 eine Messzeitdifferenz von 5 Sekunden 20 DIM A1(254) Maximalwert je Variable 0..254 22 DIM A2(254) insgesamt 255 * 4 = 1020 Messwerte möglich 24 DIM A3(254) 26 DIM A4(254) Messvorgang 50 IF (INPORT.AND.1)<>1 THEN GOTO 50 Warte auf +Triggerung an E0 60 FOR I=0 TO 254 70 A1(I)=AD(2) 80 OUTPORT=1 Signal Messzeitpunkt an A0 85 FOR N=1 TO Z 90 FOR V=1 TO S 100 OUTPORT=0 Messzeitpunkt durchlaufen 110 NEXT V 115 NEXT N 120 NEXT I 130 FOR I=0 TO 254 140 A2(I)=AD(2) usw. ....... 150 OUTPORT=1 . 155 FOR N=1 TO Z . . . . . 260 NEXT I . 270 FOR I=0 TO 254 bis letzte Variable beschickt 280 A4(I)=AD(2) wird 290 OUTPORT=1 295 FOR N=1 TO Z 300 FOR V=1 TO S 310 OUTPORT=0 320 NEXT V 325 NEXT N 330 NEXT I 640 OUTPORT=128 Signal Ende der Messung an A7 650 N=0 Datenauslese 660 IF (INPORT.AND.2)<>2 THEN GOTO 660 warten auf Taktsignal an E1 680 OUTPORT=A1(N) zum Auslesen der Daten 690 IF (INPORT.AND.4)<>4 THEN GOTO 690 warten auf Taktsignal an E2 710 N=N+1 zum Auslesen der Daten 720 IF N=255 THEN GOTO 750 über CompuLAB 730 GOTO 660 750 N=0 760 IF (INPORT.AND.2)<>2 THEN GOTO 760 usw. mit Datenauslese A2(N).... 780 OUTPORT=A2(N) 800 IF (INPORT.AND.4)<>4 THEN GOTO 800 . . 1000 IF (INPORT.AND.4)<>4 THEN GOTO 1000 1010 N=N+1 1020 IF N=255 THEN GOTO 1040 1030 GOTO 960 bis letzte Variable A4(N) 1040 N=0 ausgelesen ist 1050 OUTPORT=255 Signal Ende der Datenausgabe A0..A7 1060 IF (INPORT.AND.1)=1 THEN GOTO 1090 entweder jetzt Programmende (E0) 1070 IF (INPORT.AND.8)=8 THEN GOTO 640 oder Datenauslese nochmal (E3) 1080 GOTO 1060 1090 OUTPORT=0 1500 END
INMCLAB.PRG Hauptprogramm PROGRAMM Speicher 3 = 0 Wiederhole Ausgänge = oooooooo Bis Tastendruck Wiederhole Einlesen Speicher 3 + 1 Bis Speicher 3 = 4 ENDE. INWERK.PRC PROZEDUR Einlesen Speicher 1 = 0 Ausgänge = oooooooo Wiederhole Ausgang 2 = O Ausgang 1 = I Speicher 2 = Eingänge Schreibe Speicher 2 D Speicher 1 + 1 Ausgang 1 = O Ausgang 2 = I Bis Speicher 1 = 255 ENDE;