• No results found

Datalogsysteem : datataker DT 100

N/A
N/A
Protected

Academic year: 2021

Share "Datalogsysteem : datataker DT 100"

Copied!
48
0
0

Bezig met laden.... (Bekijk nu de volledige tekst)

Hele tekst

(1)

Datalogsysteem : datataker DT 100

Citation for published version (APA):

Haerkens, R. H. M. (1987). Datalogsysteem : datataker DT 100. (TH Eindhoven. Afd. Werktuigbouwkunde, Vakgroep Produktietechnologie : WPB; Vol. WPA0486). Technische Universiteit Eindhoven.

Document status and date: Gepubliceerd: 01/01/1987

Document Version:

Uitgevers PDF, ook bekend als Version of Record

Please check the document version of this publication:

• A submitted manuscript is the version of the article upon submission and before peer-review. There can be important differences between the submitted version and the official published version of record. People interested in the research are advised to contact the author for the final version of the publication, or visit the DOI to the publisher's website.

• The final author version and the galley proof are versions of the publication after peer review.

• The final published version features the final layout of the paper including the volume, issue and page numbers.

Link to publication

General rights

Copyright and moral rights for the publications made accessible in the public portal are retained by the authors and/or other copyright owners and it is a condition of accessing publications that users recognise and abide by the legal requirements associated with these rights. • Users may download and print one copy of any publication from the public portal for the purpose of private study or research. • You may not further distribute the material or use it for any profit-making activity or commercial gain

• You may freely distribute the URL identifying the publication in the public portal.

If the publication is distributed under the terms of Article 25fa of the Dutch Copyright Act, indicated by the “Taverne” license above, please follow below link for the End User Agreement:

www.tue.nl/taverne

Take down policy

(2)

OATALOG~~~'-~~~~---Oototoker OT 100 A.H.M. Hoerkens sept 8?

VF code: 02 WPA-repport nr. 0486

september '8?, Steaioire: Aob Heerkens Technische Universiteit Eindhoven Begeleider

TUE ir. L.J.A. Houtockera Leb. voor omvormtechnoloaie Begeleider

(3)

INLEIDING

Dit rapport is bedoeld als beknopte handleiding voor het gebruik van de datataker DT-IOO laboratry logger. Deze handleiding laat slechta de belangrijkste facilite1ten van de datataker de revu paaseren. Veel aandacht is besteed aan op:merkingen en uweetjee" die van belang zijn wanneer :men de datataker operationeel wil maken.

Omdat het verwerken en opslaan van :metingen de bruikbaarheid van de datataker in grote mate bepalen, is er ook een hoofdetuk gewijd aan programma's die communiceren :met de datataker mogelijk maken, en die tevens de verrichtte :metingen opslaan.

Aangezien het aansturen van de sere~ele poort in een software programma op diverse moeil1jkheden stu1t. zijn omtrent deze proble:men veel

op:merk1ngen en conclueiee gewijd

De grondelag van dit rapport z1jn de handleidingen (technical manual. operators manual) en de eigen ervaringen opgedaan tijdens het

installeren en volledig operationeel maken van de datataker.

Hierbij wil ik tevene de :mensen van de TUE bedanken die mij geholpen hebben:met proble:men op het geb1ed van de eoftware en hardware van de data taker:

(4)

SUMMARY

This report is meant to be a brief description for using of te datataker DT 100 laboraty logger. It only tells about the most important features te datataker offers.

Much attention is paid to things you are confronted with during the installation of the datataker. For people who ain't specialists in software nor hardware; they will find many usefull remarks which they won't find in the operators manual.

Data storage,adjustment and interaction in the communication between datataker and host is very important. Chapter five discusses a few communication programs wich store the scanned data.

As communicating by means of the sereal port brings many problems for the software you might want to write, this report offers you many remarks and conclusions which may be usefull for the softwaremaker. The basis of this report is formed by the technical- and operators

manual, but mostly by the experiences of the author during installation of the datataker.

At last I want to use this oppertunity for thanking people of the TUE who have helped me with problems concerning the hardware and sofware arround an in the datataker.

(5)

INHOUDSOPGAVE 1 ALGEMENE INTRODUKTIE 1.1 1.2 1.4 1.5 supervisie en communicatie input en output-kana len data-opslag

programmeer commando's

2 QPERATIONEEL MAKEN VAN DE DATATAKER 2.1 2.2 2.3 2.4 2.5 2.6

aansluiten van computer aan datataker voeding voor de datataker

instell1ngen de tllogging" led opstarten

de batterij-voeding 3 INPUT / OUTPUT aansluitingen

3.1 3.2

3.3

het bedradingspaneel van de datataker het schroefpaneel

de demonstratie unit 4 HET SERIEELE INTERFACE

4.1 4.2 4.3

de connector

stroomvoorzien1ng via interface communicatie protocol

4.3.1 XON / XOFF protocol 4.3.2 ACK / NAK protocol 5 TERMINAL PROGRAMMA'S

5.1

5.2 5.3 5.4

datataker terminal routine pc-talk

simpele basic routine

gelntegreerd pascal-programma 5.4.1 initialisatie van de poort 5.4.2 software interupts

5.4.3 de funktie keypressed 6 PROGRAMEREN VAN DE DATATAKER

6.1 enkele commando·s en kanaal-aanduidingen 6.2 peek/poke fumkties en switch commando's 6.3 single scan en repeated scan

bladzijde: 1 1 2 2 3 3 4 4 6 7 8 8 9 10 11 11 ~1 13 14 14 15 16 17 19 20 21 22

(6)

B I J L A G E N

bijlage 1 : listing simpele basic routine

bijlage 2: listing ge~ntegreerd pascal programma bijlage 3: toelichting standaard procedures

bijlage 4: listing standaard procedures

(7)

1

ALGEMENE

INTRODUKTIE

De Datataker Data Logger is een microprocessor voor het uitlezen, opslaan en verwerken van fysische grootheden zoals b.v. voltages, temperatuur, druk etc. Voorwaarde hierbij is echter weI de

ingansstgnalen van de datataker elektrische grootheden zijn zoals spanning, stroomsterkte of een digitale status.

Er zij drie types van de datataker verkrijgbaar. afhankelijk van de werkomgeving waarin de datataker moet werken. De verschillen zitten aIleen in de kast. het batterijvermogen en het input/output paneel.

De mogelijkheden en de bediening van de datataker staan beschreven in de volgende paragrafen. De uitwerking in meer gedetailleerde vorm vindt u in hst. 2 t/m 6.

1.1 SUPERVISIE EN COMMUNICATIE

Het werken met de datataker vereist een computer of terminal voor het 1nvoeren van commando's, het lezen van de geretourneerde data en voor het defini~ren van de in- en uitgangen van de datataker. Elke computer of terminal met een standaard RS232. RS422 of RS423 sere~el interface is in principe hiervoor geschikt.

De supervis1e door de computer kan permanent z1jn of slechts per1odiek, afhankelijk van het volume van de data en van de toepass1ng. B1j de

laatst genoemde mogelijkheid kan de datataker opgestart worden, waarna de datataker zelf de gemeten waarden opslaat in z'n interne geheugen. Een computer heeft hij dan niet meer nodig. Men kan dan later met de computer of terminal het geheugen van de datataker lezen en de metingen verwerken. Wanneer men over een gesch1kt computerprogramma beechikt kan men de data opslaan op b.v. diskette of tape. (zie hst. 5)

AIle communicatie van en naar de datataker geschied in standaard ASCII, en daardoor kan de output van de datataker direct op een scherm

geschreven worden, of eventueel direct gestuurd worden naar een sere~le printer.

De mogelijkheid bestaat om een netwerk te maken met maximaal 15

datatakers d1e gedirigeerd worden met een enkele computer of terminal. Iedere datataker heeft dan een eigen adres, waarmee deze wordt

aangeroepen indien een 1ntruktie voor hem bedoeld is.

1.2 INPUT EN OUTPUT KANALEN

De datataker heeft 23 d1fferent1eel analoge output kanalen, die eveneens gebruikt kunnen worden als 46 enkelvoudige kanalen. (bij differentieel wordt het verschil tussen twee kanalen genomen, en bij enkelvoudig wordt de absolute waarde van een signaal gemeten t.o.v. de aarde)

(8)

De datataker heeft 8 dig1tale input kanalen die gebruikt kunnen worden om een log1sche 0 of 1 te registreren of om een byte op te slaan. Tevens kunnen deze kanalen gebuikt worden voor counter kanalen.

De output-mogel1jkheden van de datataker bestaan u1t 1 analoog, en 8 dig1tale output kanalen.

AIle signalen komen de datataker binnen via twee 25 pins en tw&e 5 pins I/O connectors. Intern moeten de bedradingen tussen de connectors en bedradingspaneel zelf aangelegd worden. Op deze manier kan men de configuratie van de connectors zelf bepalen.

1.4 DATA OPSLAG

De datatak&r heeft een geheugencapaciteit van 24 Kb RAM voor het opslaan van maximaal 11000 met ingen , afhankeIijk van het formaat van de in te Iezen data.

Tevens is er in de datataker een klok aanwezig, die dag en tijd bijhoudt. Dit kan o.a gebruikt worden wanneer men priodiek wenst te scannen. Indien gewenst kan de dag en de tijd b1j de meetwaarde worden bijgeschreven.

Het formaat van de geretourneerde data wordt bepaaid m.b.v. switchcommando's en poke commando's. (zie par. 6.2)

1.5 PROGRAMMEER COMMANDO'S

De datataker gebruikt een aantal simpele commando's voor het programmeren van:

formaat

- de selectie van kanalen waarop gemeten wordt

tijdsafhankeIijk scannen, of scannen op een gebeurtenis scannen op voorwaarde van een bepaalde grootte van een

ingangssignaal

bepalen van gemiddelde waarde van een geselecteerd kanaal onmiddellijk terugzenden van gemeten waarden, of

opslaan in het interne geheugen defini~ren van output kanalen

(9)

data-2 OPERATIONEEL MAKEN VAN DE DATATAKER

2.1 AANSLUITEN VAN DE COMPUTER AAN DE DATATAKER

De computer wordt via een standaard sere~l interface (RS 232) gekoppeld aan de datataker. Op de computer gebruikt men voor het communiceren met de datataker de sere~le poort. (een 25-pol1ge connectoruitgang) Wanneer deze 25-polige stekker nog niet gemonteerd is. dan zal deze gesoldeerd moeten worden volgens bIz. 2.1 van de users manual. of volgens een

zelfde tekening opgeslagen in het programma. tldatataker terminal routine" onder menuoptie 5. Let u erop dat er inwendig in de stekker ook

doorverbindingen gemaakt moeten worden tussen de connectorpinnen onderling.

Aan de zijde van de datataker zit een de standaard 9-polige RS 232 stekker. Deze stekker dient in de connector met titel uINti geplugd worden.

2.2 VOEDING VOOR DE DATATKER

De datataker kan gevoed worden met voltages die moeten liggen tussen: - 11 en 18 volt bij gelljkspannlng

- 9 en 15 volt bij wisselspanning

De amperages voor zowel gelijk- als wisselspanning mogen dan liggen tussen de 15 en 45 mAo De datataker is beveiligd voor het overschrljden van de genoemde vOltages binnen een marge van 40 V.

De bijgeleverde adapter voor de stroomcoorziening is instelbaar. en dient ingesteld te worden op een van de hierboven genoemde voltages. De spanningsbron moet op een 5-polige stekker worden aangesloten. en weI op pin 3 en pin 5 van de stekker. (de nummers staan in de stekker zelf ) Intern is deze stroomvoorzlening gekoppeld aan zowel een gelijkrichter als ook een diode. Hlerdoor maakt bet niets ult of u de + en - op pin 3 en 5 verwisseld. Eveneens is het onbelangrijk of er op pin 3 en 5 wissel of gelijkspanning wordt gezet.

De besproken 5-polige stekker moet ingeplugd worden in de datataker in de connector met de naam "S3". S2 is bestemd voor een temperatuursensor. Verder zal iedere voeding die voldoet aan bovengenoemde eisen zeker ook goed fuktioneren.

(10)

2.3 INSTELLINGEN"

Om communicatie te realiseren tussen computer en datataker d1enen op beide apparaten dezelfde ingestellingen gemaakt te worden.

Op de datataker worden de communicatie parameters en de baudrate

ingesteld m.b.v. dipsw1tches. De d1pswitch voor de baud-rate <snelheid waarmee signalen overgestuurd worden) vindt u links-achter op de

datataker wanneer u er van bovenaf op kijkt. Deze moet ingesteld worden op 1200 baud. (zie tekening hieronder)

on off 1

*

2

*

3

*

4

*

5 6

*

*

*

8

*

De d1pswitch voor het 1nstellen van commun1catie-parameters vindt u

midden-voor in een uitsparing. Deze parameters leggen vast hoe dat bytes die overgezonden worden eruit zien. De instelling is als voIgt:

- parity inhibit

- parity polarity even

- 1 stop-bit

- 8 data bits

Op de dip-switch ziet deze instelling er als voIgt uit:

on off 1

*

2

*

3

*

4

*

5

*

6

*

7

*

8

*

H~ rtt pAWt

tpf:t

fH'HlHll~r~

q

t{tll

A

Ht~n~H Gf;

"AfH:tlft

t~ WRrH~ft W;'HH"fF;F;r ~ft ~t

maerdare datatakans in ean natwerk ~rkt. Deze defini~r'FHl 4fi.tl flfltl

hexadecimaal adres voor de betreffende datataker.

Voor verdere details verwijs ik u naar bIz 4.4 e.v. van de users manual.

De instelling op de computer kan op verschillende manieren gebeuren: -geef vanu1t dos het commando MODE COK1:1200,E.7,l,P

-op een zelfde manier kan men in basic de sereele poort (coml) initia11seren (z1e listing bijlage 1)

2.4 DE LOGGING LED

Op de voorkant van de datataker vindt u een venstertje met daarachter een led. Deze led geeft n1et aan of de datataker aan staat, maar deze knippert aan en u1t wanneer de datataker een serie meetdata overstuurt naar de computer. Omgekeerd. als de computer informatie zend naar de datataker. dan zal deze logging-led niet branden. Aan deze led kan men dus z1en of de datataker ook daadwerkelijk aan het meten is.

Bij het resetten van de datataker en vlak na het opstarten van de datataker zal deze led even knipperen. waaruit je kunt afleiden of de

(11)

programma karakters oversturen naar de datataker, om deze metingen te laten verrichten.

Knippert de logging-led nog, terwijl u van plan bent een terminal

routine te laten runnen, dan zal deze wellicht vastlopen op het inlezen van een meetwaarde. Dit is afhankelijk van het programma dat u gebru1kt.

(12)

2.5 OPSTARTEN

Alle voorbereidingen zijn nu getroffen om het systeem op te starten. Allereerst moet u een terminal programma in het geheugen van de computer laden. Voor de diverse modem-programma·s (terminal-programma's) verwije 1k u naar hoofdstuk 5. Als het programma loopt, zet dan de datataker aan door of de adapter in het stopcontact te steken of door m.b.v. het

schakelaartje achter op de datataker de batter1j-un1t in te schakelen. Deze batterij-unit moet daarvoor uiteraard wel vol zitten. (zie verder par. 2.6)

De datataker zal nu zichzelf opstarten en callibreren. Op het beeldscherm dient nu de mededeling te verschijnen:

Logger 0 24 K RAM Calibrating . . . . en even later: Done.

Deze text zal ook verschijnen wanneer wanneer men een reset-commando heeft gegeven. (bv: "RBSBT4")

De datataker is na deze melding gereed commando's te ontvangen. Ter controle zou u bijvoorbeeld de tijd kunnen opvragen aan de datataker m.b.v. het commando: T <cr> ("<cr)" is een carriage return).

De datataker zal dan antwoorden met de tijd, verstreken na het aanzetten van de datataker.

Verschijnen er onherkenbake tekens achter elkaar dan is het

waarschijnlijk dat de baud-rate of de commun1catie parameters niet juiet zijn ingesteld.

Wanneer er helemaal niets op het scherm verechijnt dan is het raadzaam te controleren of de sere~le poort wel werkt. Dit kan men dOen door via DOS een file met daarin een commando te copie~ren naar de sere~le poort.

(zie par. 5.6) Verder zou men dan nog deze poort kunnen controleren door de pennen 3 en 4 (receive en transmit) van het sere~le interface RS-232 met elkaar te verbinden. Ken kan er dan achter komen of er wel iets op die sere~le poort gezet wordt door een "loop backl l controle. Het kan

zijn dat de receive en transmit polen omgewisseld moeten worden, omdat "receive" en "transmit" relatieve begrippen zijn. afhankelijk van het apparaat waar je naar kijkt.

Zeer raadzaam is een apparaatje te gebruiken gemaakt voor het

controleren van de sere~le poort. Op dit apparaatje zitten diverse LBD's die exact aangeven op welk kanaal van de RS 232 spanning staat, en op welke niet. Op deze manier kan men preciee nagaan of de computer

gegevens overstuurt naar de sere~le poort ( de transmit LED knippert dan even), en of er gegevens teruggezonden worden door de datataker. (de receive LED knippert) Met name wanneer men zelf via een programma de sre~le poort gaat aansturen is een dergelijk apparaatje erg belangrijk bij storingen.

Voor verdere storingen verwijs ik u naar de "datataker technical manual" het. 4: "trouble shooting"

(13)

2.6 DE BATTERIJ-VOEDING

Om de datataker ook als tlstand alone tl eenheid te kunnen gebruiken, is deze voorzien van 6 nikkel cadmium batterijen, met een intern

oplaadcircuit. Wanneer de batterij-eenheid volledig uitgeput is, kan het bij een eerste opstart zijn dat u een halve minuut moet wachten voordat de extern aangesloten adapter voldoende spanning heeft opgebouwd om zowel de batterij-unit op te laden, alsmede de datataker zelf te

voorzien van stroom. Wanneer men de batterijen wil opladen, dient men de schakelaar "battery ON/OFFtI op tlON" te zetten, en de adapter aan te

sluiten op het net. Wanneer men de datataker van stroom wil voorzien d.m.v. de batterij-unit, dan dient deze schakelaar eveneens in de "ONtI stand te staan.

De batterijen worden opgeladen in ongeveer 8 uur. Met een volle set

batterijen kan de datataker ongeveer 2 dagen werken, afhankelijk van het al dan niet gebruiken van de zgn. tllow-power mode tl (zie handleiding). Verder is het ook nog mogelijk de datataker te voeden via het sere~le interface.

(14)

3

INPUT /

OUTPUT AANSLUITINGEN

3.1 HET BEDRADINGSPANEEL VAN DE DATATAKER

Wanneer men de datataker open schroeft, dan ziet men op de bovenzijde een groot aantal aansluit-pinnen. Aan de kant van de connectors zitten in 66n lange rij de aansluitpinnen voor de 25 polige connectors en voor de twee vijfpolige connectors. De nummers bij deze pinnen correspondere met de nummers van een connectorpin.

Midden op de datataker vindt u nog enkele rijen met pinnen die de

werkelijke aansluitpunten met de diverse meetkanalen vormen. Deze pinne zijn genummerd vOlgens de kanaalaanduidingen die ze vertegenwoordigen.

(b.v. 1+, 1-. 2+. 2- etc.) Deze kanaalaanduidingen z1jn dezelfde ala me ingeeft op de terminal. Geeft men bijvoorbeeld het commando ttl V" dan za de datataker het potentiaalverschil meten tuasen de pinnen 1+ en 1-. De bedrading tuseen de meetplnnen en de connectorpinnen moet u zelf aanleggen. (tenzij u de vaste print van de demo-unit gebruikt) Op deze manier kan men zelf bepalen welk meetkanaal men wil verbinden met welke connector-pin.

We willen bijvoorbeeld een potentlaalverechil meten tuesen pin nr. 3 en pin nr. 6 van de 25 polige connector. U wilt verder dat het resultaat van deze meting op kanaal nummer 1 wordt weergegeven. (uitlezen met commando tt 1 V" ~d. w. z. meet vo 1 tage op kanaa 11 )

U legt hlervoor een draadje aan tuesen de pinnen 3 en 1+. en tussen de pinnen 6 en 1-. (de polariteit kan verkeerd zijn)

V~~r het aanleggen van deze verbindingen heeft de fabrikant speciale attributen meegeleverd; namenlijk gewkwalificeerde draad. en een klein gereedecbap om deze draad om de aansluitpennen te wikkelen. Voor detail verwijs ik u naar hoofdstuk 3 van de operators manual.

3.2 HET SCHROEFPANEEL

De fabrikant levert op aanvraag een scbroefpaneel voor de datalogger. Dit echroefpaneel <ook weI tlecrew terminal I/O card" genoemd) is erg handig wanneer de toepassing van de data logger var1abel is. De 1nput-slgnalen worden dan met kroonsteentjes op het paneel bevestlgd. Elk

input kanaal op de schroef-terminal komt overeen met een pin van de 25 polige connector.

Verwarrend is de aandu1ding van de nummers op het schroefpaneel zelf. D· nummere vlak naast de echroefaanslui tingen. duiden weliswa,ar op de

nummers van de connector pinnen, maar dan weI ale je van achteren op de connector kijkt. Wanneer men dus in de connector zelf k1jkt, zal men de verkeerde nummers aflezen.

Het voordeel van deze echroeftermlnal 1s dat bij een nieuwe toepasaing van de datataker niet telkena nieuwe atekkera gesoldeerd moeten worden. Verder heeft dit schroefpaneel nog drie relais voor het aansturen van externe apparaten. of eventueel zwaardere relaie.

(15)

3.3 DE DEKONSTRATIE UNIT

Voor het s1muleren van input voor de datataker levert de firma een demo-unit. Ket behulp van dit kastje kunnen weerstand. frequent1e en voltages met pot meters worden ingesteld. Verder z1tten er O.a. nog op:

termokoppels, een relais, een analoge outputmoge11jkheid en drukschakelaar voor een digitaal event.

Deze demo-unit is erg handig bij het installeren van een datataker. Op deze manier kan men de bedrijfssituatie geheel of gedeeltelijk

s1muleren, zodat het istal1eren van de datataker voor een groot gedeelte achter het bureau kan plaatevinden. Vooral wanneer men ook nog zelf

software gaat ontwikkelen voor de datataker. dan is er met de demo-unit al ~~n foutenbron weggewerkt, namelijk het apparaat waar aan gemeten moet worden.

Het aansluiten van de demo-unit is zeer eenvoud1g. omdat de interne verbindingen in de datataker gemaakt worden door een vaste pr1ntplaat die direct op de pinnen van het bedradingspaneel gezet kan worden. Wanneer d1t gebeurd is hoeft men elechts de demo-unit met de datataker te verbinden door de bijgeleverde kabel in "socket 4" van de datataker te steken. De demo-unit wordt dan door de datataker gevoed.

(16)

4- HET SEREELE INTERFACE

4.1 DE CONNECTOR

De communicatie tussen computer en datataker vindt plaats via een

standaard RS 232, RS 422 of RS 423 sere~el interface. Aan de zijde van de datataker vindt u een 9-pins connector van het type D. Hieronder vindt u een schets van deze connector, gezien achter op de datataker kijkend.

interface common 1 0

0 6 receive data (-ve) datataker ground 2 0

0 7 battery (+ve)

transmit data 3 0

0 8 datataker power

receive data(+ve)4 0

0 9 receiver threshold offset

interface power 5 0

De meest essentie~le aansluitingen zijn pin 3 en 4. Het kan zijn dat deze aansluitingen omgewisseld moeten worden, omdat er nogal eens misverstanden zijn over de vraag wie "receives" en wie "transmits". De stekkers aan de datataker ("IN" en "OUT" ) zijn hetzelfde

aangestloten, en kunnen ook beide gebruikt worden. Het is gebruikelijk om de stekker "IN" te gebruiken voor de communicat1e met de host

,'::RmFJ.r~~r: ~n 4~ ~tekker "OUT" voor verbinding met andere datatakers of andere externe apparaten.

4.2 STROOMVOORZIENING VIA INTERFACE

Het is mogelijk de datataker van stroom te voorzien via het interface. Dit heeft als grote voordeel dat er slechts een enkele kabel nodig is voor zowel communicatie als ook stroomvoorziening. De externe

stroomvoorziening (b.v. de bijgeleverde adapter) is dan niet meer nodig. Om de datataker op deze manier van stroom te voorzien, moet men op de 9 polige connector van de datataker op pin 9 (+ve) en pin 2 (ground) de stroomvoorziening van de computer aansluiten. <gelijkspanning: 11-18 V)

Daarvoor kunt u het beste de handleiding van uw computer raadplegen om te bepalen welke aansluitkanalen van het interface hiervoor geschikt zij n.

(17)

4.3 COKMUNICATIE PROTOCOL

De datataker ondersteunt 2 protocol len n1. het XON/XOFF protocol en het ACK/NAK protocol.

4.3.1 XON/XOFF Protocol

D1t protocol kant indien gewenst, gebruikt worden wanneer men het oversturen van data door de datataker vanuit de host wil be~nvloeden. De datataker zal het oversturen van data staken wanneer er een XOFF karakter (ASCII karakter nr. 19; "control S") wordt ontvangen.

De datataker zal het oversturen van data weer hervatten. direct nadat er een XON karakter (ASCII nr. 17; "control Q")is ontvangen.

Dit protocol kan worden gebuikt wanneer bijvoorbeeld de gegevens uit het interne geheugen van de datatataker worden overgestuurd naar de host. Deze optie is principi~el anders dan het "Htf statement (zie hst 7), omdat het Halt commando het scannen stopt, en een XOFF karakter stopt aIleen de transmissie van data, en niet het scannen zeif.

Het XON/XOFF protocol is permanent beschikbaar, en hoeft niet opgegeven te worden aan de datataker. Bij het opstarten van de datataker of bij een "RESET4" commando is XON true.

4.3.2 ACK/NAK Protocol

Dit protocol maakt controle van de overgestuurde data mogelijk. Om d1t protocol te activeren dien men eerst het switch commando "/P" te geven. Op de host computer dient men d1t ook in te geven m.b.v. het DOS

commando "KODE" . . . (zie par. 5.4.1).

Wanneer de datataker een "unload" commando krijgt, en het protocol is geactiveerd, dan zullen de data in blokken overgestuurd worden naar de host. Bij het overzenden van het blok wordt de som van de overgestuurde ASCII's berekend (binair volgens een "OR" optelling), en de decimale representatie ervan wordt overgestuurd aan het elnde van leder biok. Deze representatie ziet er bijvoorbeeid zo uit:

$107<cr>

waarin het getal 107 de bedoeide decimale representatie is. De computer berekent op dezelfde man.ier de optelling van de

binnengekomen ASCII's en vergelijkt vervolgens de optelling van de datataker met haar eigen optelling. Komen deze optellingen met elkaar overeen, dan zal de computer een ACK (ASCII nr. 6; "contol F") naar de datataker sturen, waarop de data taker een nieuw datablok zal oversturen. Klopt de optelling niet, dan zal de computer een NAK (ASCII nr. 21i

"control Uti) sturen, waarop de datataker het laatste datablok opnieuw

(18)

De grootte van het blok dat overgestuurd wordt kan door de gebru1ker zelf bepaald worden met de peek/poke funct1e P6. <z1e hoofdstuk 6.2) De default waarde is 127 data eenheden. <1eder getal of karakter vergt 2 byte geheugenru1mte, en komt overeen met 1 data eenhe1d).

Het "gnd Qf Iransm1ss1on" karakter kan eveneens door de gebru1ker worden gedef1ne~erd, en weI m.b.v. de peek/poke funkt1e P25. Deze kan het EOT karakter zodan1g k1ezen dat b1jvoorbeeld automat1sch een geopende

d1skfile wordt afgesloten aan het einde van de data transmiss1e.

Gedurende d1t oversturen van data is het niet mogelijk scans tussendoor op het scherm te laten verschijnen. Echter het scannen van de kanalen, en de eventuele bewerk1ngen, hebben de hoogste pr1orite1t en zullen tijdens het oversturen van de data gecontinueerd worden.

(19)

5 TERMINAL-PROGRAMMA'S

Terminal-programma's worden gebruikt wanneer men een computer wil laten communlceren met extern apparaat, in ons geval de datataker dus. Deze programma's kunnen ook weI de volgende namen dragen: modemrprogramma. kermit-programma, terminal emulatieprogramma of terminal routine. Overigens kan men de datataker ook aansturen met een zgn. "domme

terminal"; dit is een beeldscherm met toetsenbord. dat aIleen maar ASCII karakters kan wegsturen en ontvangen.

De datataker communiceert met behulp van ASCII karakters. Belangrijk hlerbij is het onderscheid maken tussen hoofd- en kleine letters, omdat de datataker het commando anders totaal negeert.

Verder zal de datataker aIleen dan een commando accepteren wanneer dit afgesloten is met een "return" (karakter 13),

In het algemeen lopen de terminal-programma's vast wanneer men tijdens het scannen van de datataker de terminal routine opstart. Dit kan

bljvoorbeeld voorkomen wanneer men de datataker vergeet te laten stoppen met meten. Gaat men dan aChtereenvolgens in en uit het programma. dan zal deze een runtime error geven op de plaats waar het programma waarden van de serie~le poort afleest.

De eerste drie programma's van dit hoofdstuk zijn basic-programma's. Zorg er daarom voor dat u eerst basic (of basica) laadt, en vervolgens vanuit basic het betreffende programma runt.

(20)

5.1 DATATAKER TERMINAL ROUTINE

Dlt 1s een programma dat de fabrikant zelf heeft geschreven. Men kan hiermee de datataker commando's ingeven via het toetsenbord van een computer. Deze worden op het scherm weergegeven evenals de gemeten waarden die de datataker terugstuurt.

Het programma biedt een menu dat er ala voIgt u1tziet: 1 Datataker terminal routine

2 temperature plot

3 voltage plot (monochrome) 4 VOltage plot (color)

5 establishing communications 6 returning to DOS

Nr. 1 Van het menu is de zojuist besproken terminal routine.

Nr. 2 Geeft desgewenst een grafische weergave op het acherm met de temperatuur als functie van de tijd. Hiervoor wordt er een

temperatuuropnemertje meegeleverd die op de plaats van stekker "S2" in de datataker geplugd kan worden. (Dtt is een stekker met een atukje zwart draad en aan het einde de temperatuuropnemer; afgeplakt met rode tape)

Nr. 3 Biedt de mogelijkheid om het voltage afgegeven op een bepaald kanaal uit te zetten tegen de tijd. Het gewenste kanaal kan men van tevoren ingeven. Het momentane VOltage wordt ook nog eens in declmalen weergegeven op het scherm.

Nr. 4 Idem als 3, maar dan in kleur.

Nr. 5 geeft documentatie over het aansluiten van de connector, en het instellen van dipswitches op de datataker.

Nr. 6 terug naar DOS; u verlaat het programma

De datataker terminal routine is zeer geschikt om de datataker mee u1t te proberen bij de kennismaking, of om het apparaat te demonatreren, maar is niet gschikt voor definitief gebruik. Dit komt omdat dit

programma niet de mogelijkheid bezit de gemeten waarden in een file op te slaan. H1erdoor is het gebruik van het programma voor veel

(21)

5.2

PC-TALK

Dit is een zeer uigebreid softwareprogramma met o.a. de mogelijkheid om gegevens van de serie~le poort te lezen, en commando's er naartoe te sturen. Hij doet dit met de optie "recieve a filet!. Men kan deze optie aanroepen met de toetsen ALT/ R. Het programma vraagt dan naar welke file de informatie afkomstig van de srie~le poort gestuurd moet worden. Men kan hiermee de metingen van de datataker opslaan op een diskette. voor eventuele latere verwerking.

Na het invullen van de fysieke filenaam kun je een commandoregel ingeven. waarna de datataker begint te meten. De metingen worden weergegeven op het beeldscherm.

Het programma heeft het voordeel dat metingen opgeslagen kunnen worden. In mijn geval bleek ook dit programma niet geschikt, omdat veranderingen aanbrengen in het programma een ondoenlijke zaak was. De bedoeling was om het programma zodanig te veranderen dat de opties van PC-talk niet meer via het toetsenbord hoefde ingevoerd te worden, maar dat aIle benodlgde optles standaard in het programma ingebouwd zouden worden. Veranderen van het programma is bijna niet mogelijk omdat het qua layout een ongstruktureerd basic-programma was met geen enkele text of

opmerking in de listing van het programma. Daar komt nog bij dat er veelvoudig gebruik werd gemaakt van zgn. ugosublf en ugoto" statements, zodat het programma eigenlijk slechts voor de maker toegankelijk is, wat betreft het aanbrengen van veranderingen.

5.3 SIMPELE BASIC ROUTINE

Aan de hand van een voorbeeldprogramma heb ik zelf nog een programma geschreven in basic die zowel de datataker automatisch aanstuurt, alsmede de terugkomende gevens opslaat in een file op de diskette. De

listing hiervan vlndt u in bijiage 1. De toellchting bij het programma is zodanig dat elke programmaregel is verklaard. De opslag van de

meetgegevens gebeurt hierin op dusdanige manier, dat ze niet zonder meer gelezen kunnen worden als text-file.

Wil men dit nu voorkomen, dan kan men i.p.v. het commando ttB$=INKEY$" ook het commando "input#l, x,y" gebruiken. Het gevolg hiervan is dat de met1ngen afkomstig van de datataker niet een voor een worden ingelezen en vervolgens opgeslagen, maar dat aIle informatie van de serie~le poort rechtstreeks in een file wordt opgeslagen. Er is na het aansturen van de datataker geen interactie meer mogelijk van de computer naar de

datataker. De datataker blijft doormeten totdat je deze geheel uitzet. Ook deze oplossing is verreweg van bevredigend. mede doordat de

struktuur van "basic" systematisch programmeren niet bevordert.

Waarschijnlijk biedt basic weI een oplossing voor dit probleem, maar bovengoemde redenen weerhielden mij ervan de basic taal eigen te maken.

(22)

5.4 GEINTEGREERD PASCAL-PROGRAMMA

Oak in Turbo Pascal blijkt het mogelijk te zijn am commando's in een programma naar de sere~le poort te sturen, en informatie op die sere~le poort te lezen. Turbo Pascal behandelt de sere~le poort als een

standaard file "aux" genaamd.

Een mogelijkheid va or het aansturen van de datataker in Turbo Pascal vind u als flow-chart onder aan deze bladzijde. De detaillering ervan vindt u in pascalcode in bijlage 3 van dit verslag. Dit programma is in eerste instantie geschreven va or simulatie van een trekproef waarvan de metingen opgenomen worden door de datataker. De simulatie wordt tot stand gebracht door handmatig de kracht, dikte en breedte van de strip m.b.v. de demo-unit na te bootsen.

De trekproef dient door het programma be~idigd te worden wanneer de kracht z'n maximum heeft overschreden. Daarbij moet rekening worden gehouden of het een lokaal maximum, (vloeigrens b.v., bij sommige

materialen) of een absoluut maximum is. De bijbehorende file "regel. txt" voor het invoeren van de commandoregels vindt u in bijlage 5.

Verdere details over het programma zullen in een volgend verslag aan de orde komen.

Flow chart voor geYntegreerd pascal programma:

ITooV\ rneeLw OP ~;L ~·c (.' VY\ ]

I

(23)

5.4.1 lnltlalisatie van de poort

In de handleiding van Turbo Pascal laat men de programmeur gedeeltelijk in het ongewisse wat betreft het aansturen van externe apparaten. Want aIleen slechts de standaard file AUX gebruiken blijkt niet voldoende te zijn. Voordat het pascalprogramma kan werken moet er een initialisering van de poort plaatsvinden. Hiervoor biedt Turbo Pascal geen

faclliteiten.

AIIereerst dient men de baudrate en de communicatie parameters in te stellen in DOS m.b.v. het commando:

MODE COK1:1200.E.8,l,P Hierin stellen voor:

- coml: de sere~le communicatiepoort 1

- 1200 baudrate E even parity

- 8 aantal data bits

- 1 aantal stop bits

- P protocol processing (aIleen toevoegen indien gewenst) Maar met zelfs deze initialisatie neemt de computer geen genoegen. Een foutloos Turbo Pascal programma zal niet werken. Wanneer men de

datataker eerst aanstuurt via DOS m.b.v. een copie~rcommando, dan blijkt het programma in Turbo Pascal weI te werken. Het copie~rcommando ziet er als voIgt uit:

COPY CON AUX:

<cr>

Hierna kan men een commandoregel invoeren (de cursor gaat op de volgende regel staan wachten) bijvoorbeeld:

R2S 1V

<cr>

Om de file af te sluiten typ F6 in of CTRL Z met een (cr).

DOS gaat nu de gemaakte file copie~ren naar de sere~le poort (AUX> , en de datataker begint met meten. (kijk naar de logging-LED)

Waarschijn11jk wordt met d1t copy commando de apparaatfile AUX als standaard apparaatfile gedefinie~erd, en worden intern diverse

initialisaties gedaan die nodig zijn voor het goed funct10neren van de file AUX.

Dit is helaas een we1nig wetenschappelijke aanpak. maar zeer zeker effectief. Deze werkmethode kan men ook gebruiken wanneer men niet in het bezit is van een terminal programma. Zo kan men toch nog testen of de datataker werkt.

Wanneer men de gewenste commandoregels overstuurt naar de datataker. dan kan het geval zich voordoen dat de datataker het tempo van commando-invoer niet kan bijbenen. Waarschijnlijk raakt er in de datataker het

(24)

5.4.2 software interupts

Op deze wijze zou een programma in Turbo Pascal moeten werken. was het niet dat men ook nog rekening moet houden met software interupts. Een software interupt is een routine die een bepaalde handeling uitvoert voor DOS. Ze worden in werking geeteld door het aangeven van een hexadecimaal adres, waarop deze software interupt staat. (b.v. $FA) Turbo Pascal kent voor het aanroepen van interupts een functie

I NTR ( . . . ) .

Bij een software interupt wordt het programma even door DOS afgebroken om de nodie werkzaamheden te verrichten; b.v. de real time clock, of er zit een buffer vol om weggeschreven te worden naar disk. Komt er nu in deze periode een meetwaarde binnen van de datataker, dan zal deze geheel of gedeeltelijk gemist worden. Daar kan nog bijkomen dat DOS hierdoor een foutmelding geeft:

CANNOT READ FROM AUX ABORT, RETRY. IGNORE?

Op deze manier zou het werken met de datataker onbetrouwbaar en problemat1sch verlopen.

Wanneer men gegevens wegstuurt naar een extern apparaat, zouden de

software interupts geen problemen geven. deze zorgen dan aIleen voor een kleine vertraging. De problemen gaan zich pas uiten wanneer er

ongecontroleerd (in de ogen van DOS) gegevens de computer in komen.

Om deze narigheid te voorkomen zijn er maatregelen vereistj zie volgende paragraaf.

standaard procedures

Om deze problemen met software interupts te voorkomen zijn er door een medewerker van de TUE standaard procedures gemaakt voor het werken met een sere~le poort:

- het initialiseren en openen van de poort het sturen van ASCII's naar de poort - het ontvangen van ASCII's via de poort - het sturen van ASCII's naar de terminal

het inlezen van ASCII's van de terminal

het afsluiten en herdefinie~ren van de parameters zoals ze waren voor het openen van de poort

In deze procedures wordt O.a bij het inlezen van een waarde van de

sere~le poort het uitvoeren van software interupts door DOS onmogelijk gemaakt.

In bijlage 4 vindt u de toelichtingop deze procedures, en in bijlage 5 vindt u de procedures zelf.

Deze procedures kunnen als include file boven in het programma worden ingevoerd met de regel :

(25)

Wanneer deze file wordt gebruikt dient men er rekening mee te houden. datde datataker geen data overstuurt tijdens de compilatie. Dit resulteert name11jk in een vastloper van de compiler.

(26)

5.4.3 de funktie "keypressedf!

Dit is een standaard Turbo Pascal functie. maar deze dient met de nodige voorzichtigheid gehanteerd te worden. In mijn geval was deze functie belangrijk. omdat een meting onvoorwaardelijk gestopt moet kunnen worden. De funktie "read" voldoet hier niet. omdat deze wacht op een invoer via het toetsenbord en de metingen worden achter elkaar

overgestuurd.

Wanneer men deze functie zonder compiler optie gebruikt, kan dit

problemen geven. Het geval kan zich namenlijk voordoen dat wanneer men een toets indrukt, deze eerst in een buffer gezet wordt. alvorens deze in het programma terecht komt. Wanneer het buffer nog niet vol zit, en er wordt een toets ingedrukt. dan zal in Turbo Pascal de funktie

keypressed niet TRUE worden.

Deze fout kan soms voorkomen worden door de compiler optie $Pl te

gebruiken. Deze moet boven in het programma vlak na de programma heading ingevoerd worden. en weI als voIgt:

b.v.: program voorbeeld; {$Pl)

var i: integer; etc.

Het blijkt dat in sommige gevallen ook deze compileroptie niet effectief is. De omvang van de uitvoer naar het scherm blijkt aamen te hangen met het al dan niet leegmaken van het keyboard-buffer. Wanneer men

bijvoorbeeld geen enkele meting op het acherm 1aat verschijnen, dan zal tlkeypressed" fei1100s werken wanneer men de meting wil onderbreken. Hoe meer mededelingen men per meting op het scherm laat komen, deste

slechter zal UkeypressedH werken.

Met "s1echter werken" bedoe1 ik bijvoorbeeld dat de functie,keypressed pas z'n werk doet als DOS met een software-interrupt een buffer metingen gaat wegschrijven naar disk. Men moet dan een toets vasthouden totdat "toeva11igH DOS het keyboard buffer gaat leegmaken. Dan pas doet de functie keypressed z'n werk.

Dat het keyboardbuffer niet altijd leeggemaakt wordt blijkt oak uit het feit dat DOS geen piepsignaal geeft bij het te lang vasthouden van een toets (het keyboard buffer zou vol moeten raken zoals normaal het geval ls) .

De conclusie van dit relaas is dat de functie keypressed niet gebruikt moet worden wanneer men behalve met het console device OOk nog met een extern device (de datataker via de sere~le poort coml) werkt. omdat DOS dan dusdanig met buffers (keyboard, console en disk) goochelt dat aIleen voor een expert op gebied van software interupts en buffers binnen DOS deze funktle hanteerbaar is.

(27)

6 PROGRAMMEREN VAN DE DATATAKER

In d1t hoofdstuk zullen de meest voorname commando's besproken worden. De bedoel1ng ervan is een 1ndruk te krijgen van de

programmeermogelijkheden van de datataker.

Het is belangrijk te weten dat de meeste commando's in hoofdletters

1ngegeven dienen te worden. Verder dient achter iedere commandoregel een <cr> te komen.

Teveel spat1es tussen de diverse commando's geeft problemen. Tussen elke lettercombinatie van een commandoregel staat precies ~~n spatie.

Algemeen geldt dat men de datataker kan onderbreken met het commando "H" <cr>, en wanneer de datataker verder kan gaan met z'n werkzaamheden: "G" <cr>. Wanneer men bij een willekeurige meting tijd en/of dag bij de

meting wil hebben, dan kan dat met resp. de commandokarakters liT" en

It D" .

Bijvoorbeeld: "D T lV" wil zeggen: display dag, tijd, en enkele scan van kanaal 1 (volts).

6.1 ENKELE COMMANDO'S EN KANAALAANDUIDINGEN

De letters hieronder verklaard dienen in de commandoregel achter het kanaalnummer te staan. - analoge kanaaltypen - d1gitale kanaaltypen: - algemene codes: V voltage I stroomsterkte F frequentie T .. thermokoppels S rekstroken R weerstand

( .. slaat op een nadere aanduiding)

M .. monolithische temperatuursensoren OD d1gitale status op byte niveau D " " b i t niveau OC highspeed counter C lowspeed counter CR counter reset T tijd D dag $ textregel S schaalverdeling Y polynoom

(28)

- commando's:

- switch commando's (lijst incompleet)

*

enkelvoudige tussenmeting R repeat; herhaald meten A average; gemiddelde MX maximum

K1i minimum

W while (geconditioneerd scannen) P peek/poke

H halt; stop de meting G go; continueer de meting

U unload; metingen uit geheugen datataker halen =

o

" x" benoem pulse vertraging

tijdcodering voor repeat scan commando S seconden. M minuten, D dag

CLEAR RESET STATUS

clear data memory

resetten van datataker

geef de status van het systeem I DENT TEST /L /M /N /P /U / /

<hoeveel geheugenruimte er is gebru1kt) geef nummer van data taker <indien meerdere datatakers aangesloten zijn

test en rapporteer de gegevens van de ADC (analoog digitaal converter)

sla data op in geheugen

display warning messages op scherm display kanaalnummer

communicatie volgens protocol display units text

zet aIle waarden terug naar default waardes

6.2 PEEK / POKE FUNKTIES EN SWITCH COMMANDO'S

De datataker kent 36 peek/poke funties. Met behulp van poke kan men een bepaalde geheugenplaats veranderen van waarde, en met behulp van peek kan men inspecteren wat er in een bepaalde geheugenlocatie zit.

Deze funties zijn belangrijk bij het bepalen van het formaat van de geretourneerde data. Ken kan bijvoorbeeld wensen dat de data achter elkaar, gescheiden door komma's op het scherm moeten verschijnen.

Hiervoor definieert men bet "end of line" karakter als een komma. en het "end of scan block" karakter ook als een komma. De vOlgende poke

commando's zijn hiervoor nodig: P22=44

(29)

De geretourneerde data heeft dan de vorm: DATA.DATA.DATA,DATA . . . etc.

Deze vorm van data is voornamelijk handig wanneer de data ingelezen moet worden in een applicatieprogramma. Bij elke komma weet men dat er een niewe set getallen komt.

De context van de meetwaarden wordt gedefinieerd met enkele switch commando's. Wil men bijvoorbeeld aIleen kale meetwaarden, zonder

messages. kanaalnummer en eenheidaandu1ding dan wordt d1t ingegeven met het commando:

/n /m / u

De switch instellingen samen met de poke commando's bepalen wat er van de meetwaarden uiteindelijk op het scherm verschijnt, en hoe ze

verschijnen.

6.3 SINGLE SCAN EN REPEATED SCAN

Wil men een enkele keer de ingangen scannen, dan hoeft u slechts het kanaalnummer(s) met de betreffende meetgrootheid erachter naar de datataker te sturen. Bijvoorbeeld: lV 2R 6V 8F.

Wil men continu aIle kanalen inspecteren, dan plaats voor de kanaaldefinie~ring een R (repeat).

Ken kan ook een tijds1nterval defin1e~ren van 1 sec t/m 32767 dagen. Hat tijdsinterval staat direct achter de R. Bijvoorbeeld:

- R2S 1V 3F ID - R4H 12F

- RIOOM lR - RID 2C

6.4 SCANNEN OP GEBEURTENIS

De datataker biedt de mogel1jkheid om een scan uit te voeren afhankelijk van een ingangssignaal.

Bijvoorbeeld wanneer d1g1taal kanaal 6 hoog is; wanneer digitaal kanaal 2 vijf keer hoog is geweest; waneer analoog kanaal 3 een potentiaal heeft van meer dan 100 mV. etc.

(30)

6.5 DATA IN EN UIT GEHEUGEN

Wordt de datataker ale stand alone eenheid gebruIkt, dan moeten de met1ngen in het interne geheugen van de datataker gelogd worden.

Het geheugen van 24 k is goed voor ongeveer 11000 meetwaarden. Wil men t1jdens het scannen weten hoeveel geheugenrulmte er nog vrij 1s, dan kan dat met het commando "STATUS".

Wanneer men de meetwaarden in het geheugen wil opelaan. dient men achter aan de commandoregel "/L" toe te voegen. Bijvoorbeeld:

R3M lV 2F 6R/L

Wanneer we achteraf de metingen uit het geheugen van de datataker wi1 lezen, dan kan dat met het commando:

"u"

(Unload).

Wil men de data met behulp van een software programma u1tlezen. dan kan dat via het "checksum protocol". (Z1e par. 4.3)

6.6 STATISTISCHE FUNKTIES

Bij veel metlngen kan men zich voorstellen dat men ge~nteresseerd 1s 1n b1jv. hetgemiddelde van 5 metingen, of het minimum of maximum van een serie metingen. De coderingen: - A MN -MX average minimum maximum

Ken moet bij deze bewerkingen in de commandoregel de tijd waarover de bewerking moet worden uitgevoerd, en hoe vaak een individuele meting moet worden gedaan.

Bijvoorbeeld:

RiM A1S 1V

De datataker berekent nu het gemiddeide voltage van kanaal 1 elke

minuut, gebaseerd op 1 meting per seconde. AIleen de gemiddeide waarde wordt opgeslagen <of getoond).

Combinaties van gemiddelden. maxima en minima bepalingen zijn mogelijk.

6.7 AANPASSEN VAN SIGNALEN

Wanneer men bijvoorbeeld voltages meet die In werkelijkheid krachten voorstellen, dan kunnen de binnenkomende voltages direct omgevormd worden naar de gewenste grootheden.

Voorbeeld:

laagste voltage: hoogste ..

overeenkomstige min. kracht: .. max. kracht:

-1275 mV +2350 mV

o

N

(31)

Sl=O.lOO,-1275,2350Itnewton"

Stel deze krachten worden via kanaal 1 gemeten. dan zou de commandoregel er ala volgt ui t kunnen zien:

(32)

Een andere aanpassing die gewenst kan worden, kan zich voordoen wanneer uit ons voorbeeld de kracht niet recht evenredig is met het de volts die deze kracht vertegenwoordigen.

Het ingangssignaal kan men 11near1seren met behulp van de datataker. Hiervoor moet men een polynoom definieren die de evenredigheid van de kracht met het voltage vertegenwoordigt.

Deze polynomen mogen gaan tot een vijfde macht. In de definitieregel moeten de constanten die in het polynoom voorkomen gedefinieeerd worden. De polynnomen geven de volgende relatie tussen de gewenste grootheid <Y) en de gemeten grootheld (X):

Hlerln zljn a,b,c,d.e,f de constanten die aan de datataker moeten worden opgegeven. Dit gebeurt als voIgt: (aan de hand van ons voorbeeld)

Yl=O.5,2,6.43,5.5,6.0,2,"newton"

6.8 TOBPASSING: GEAUTOMATI8EERDE TREKPROEF

Van een trekproef worden kracht, breedte en dlkte gemeten. Deze metlngen worden uitgelezen in mV. Wanneer de kracht zln maximum heeft

bereikt. (voor het gemak een vaste waarde> wil men de trekbank laten afslaan:

specif1cat1es!

- kanaal 1 correspondeert hardwaremat1g met de kracht - kanaal 2 de dikte

- kanaal 3 de breedte

kanaal 4 (digitaal) stuurt een relais aan voor het

stoppen van de trekbank.

De commandoregel voor deze vereenvoudigde proefopstel11ng zou kunnen zijn:

R10S AlS 1V 2V 3V lD01V>1000 Verklar1ng:

Meet elke seconde kracht, dikte en breedte en middel deze over 10

seconden. Deze betrouwbare waarde moet worden opgeslagen.

Wanneer de kanaal 1 een uitgang heeft van meer dan 1000 mV dan moet het rela1s overgaan (lD wordt hoog gezet).

(33)
(34)

REM TERMINAL EMULATIEPROGRAMMA

, ******************************

, lET SCHERM IN ZWART-WIT TEXT MODE

, EN MAAK DE 8REEDTE VAN HET SCHERM 80 KOLOMMEN SCREEN 0,O: WIDTH 80

I ZET SOFT KEY DISPLAY UIT; CLEAR SCREEN; SLUIT ALLE FILES

, DIE NOG OPEN WAREN KEY OFF: CLS: CLOSE:

, DEFINIEER ALLE NUMERIEKE VARIA8ELEN ALS INTEGERS OEFINT A-Z

I ' OEFINIEER "TRUE" EN "FALSE" I FALSE-0: TRUE-NOT FALSE

I ' OEFINIEEA XON EN XOFF KARAKTEAS I XOFF$-CHR$( 19): X0N$-CHR$( 1?) I ' OPEN COMMUNICATIE NAAR FILE 1 I OPEN "COM1:1200,E,?" AS #1

, GE8RUIK HET SCHERM ALS EEN OUTPUTFILE #3

I OPEN "SCRN:" FOR OUTPUT AS #3

, OPEN EEN FILE OP DRIVE 8 MET DE NAAM "MEET.DAT"

I OPEN "8:MEET.OAT" FOR OUTPUT AS #2

I ' ZET CURSOR AAN I LOCATE ,,1

PAUSE-FALSE: ON ERROR GOTO 9000

P$-"S1·100,500,-1085,-2490":PRINT #1,P$

I R$""/n /m /u R2S 1V(S1)": PRINT 61,R$

, STUUR KEYBOARD INPUT NAAR DE SERIEELE PDDRT 8$-INKEY$: IF 8$<>"" THEN PRINT #1,B$;

, CDNTROLEER OP STOP-SIGNAAL "H <CR>" IF 8$-"H" THEN 516 ELSE 530

8$=lNKEY$:IF 8$<>CHR$( 13) THEN 516 ELSE PRINT#1,CHR$( 13) :GOTO 10000 , ALS ER GEEN KARAKTERS IN HET 8UFFER ZIT TEN CONTROLEER OPNIEUW IF EOF( 1) THEN 510

, INOIEN BUFFER MEER DAN HALFVDL SET PAUSE EN STRUUR STOPSIGNAAL

I ' NAAR OATATAKER OM DE TRANSMISSIE VAN MEETWAARDEN TE STAKEN

IF LOCe 1»128 THEN PAUSE=TRUE: PRINT #1,XOFF$i

I I LEES INHOUO VAN COMMUNICATIE8UFFER

I A$" INPUT$( Loce 1) ,# 1)

PRINT #3,A$j

, VEAWIJDEA LINEFEEDS OM DU88ELE OPENINGEN BIJ VEATONEN

I ' VAN OE OUTPUT OP HET SCHERM TE VERMIJDEN

LFP-0

LFP" INSTR( LFP+ 1 , A$, CHR$( 10) )

IF LFP>0 THEN MID$(A$,LFP.1)-" ". GO TO ~30

(35)

I • TOON OE OUTPUT VAN DE DATATAKER EN CDNTROLEER OP NIEUWE OUTPUT PRINT #2,A$; :IF LOC( 1»0 THEN 570

• INOIEN DE TRANSMISSIE GESTOPT IS DOOR EEN "XOFF" COMMANDO , ANTWOORDT DAN MET EEN "XON" COMMANDO

) IF PAUSE THEN PAUSE-FALSE: PRINT #1,XON$;

1 ' KONTROLEER KEYBOARD INPUT

) GOTO 510

19 • INDIEN ER EEN ERROR IS, GEEF DAN HET ERAOANA. EN PROBEER OPNIEUW 10 PRINT "ERROR NO."; EAA: RESUME

(36)

een simulotie von een geautomatiseerde

*

{*

{*

{*

Oit progrommo is gemoo'kt om trekproef uit te voeren met De simulatie zelf wordt tot

behulp van de datalogger "datataker OT-100".

*

program modem3; const timeout=1200; type Tstring= f0str= Tfilenaam= Tarray· {$I r05.o11} {$u+} var i,len,omi: omr: filenaam: meetparen:

stand gebraaht door een demonstratie unit.

string[ 40] ; string[ 127] ; string[ 10]; array [1 .. 100, 1 .. 3] of rea I; integer; reol; Tfilenaam; Tarray;

*

{*****************************************************************************

{*****************************************************************************

procedure stuur_string (s:Tstring;lengte:integer);

{i~** prec.

{***

postc.

s is een stringvariabele met lengte "lengte" karakters}

s is naar de seraele poort gestuurd in ASCII getallen}

var a:

i,byte:

char; integer;

begin {stuur_string}

for i:=1 to lengte do begin byte:= ord(s[i]) rillp (byte) end; rillp (13); writeln (s); end; {stuur_string}

{*****************************************************************************:

{*****************************************************************************:

procedure stuur_file (var f: text);

{***

prec. f is een textfile met commando's. }

{***

posta. de textfile f is sereeel naar de sereeele poort gestuurd} var regel:

i , j , k :

begin {stuur_file}

while not eof (f) do begin

readln( f, regel) ;

i : =length (regel);

Tstring; integer;

(37)

{*********************u*******************************************************

{*************************~***************************************************

procedure start;

{***

opm. "start" opent de ser. poort en stuurt een commandoregel

die staat in de text~ile "regel.txt". Deze text~ile moet

laatste regel aileen het "%" teken bevatten.

{ { var at: i,j,k,err,byte: ~ilenaam: commando~ile: begin {start} st;-('183'}j ~llIstr; integer; T~llenaam; text; rlllopn (st,3,err) w r i t e l n ( ' e r r : ',err); stuur_string ('RESET4' ,6); ~or 1:-1 to 100 do ~or j : - ' to 11l11l1 do k:-k+1; clrscr; weg } in de} }

writeln ( 'span de trekstaa~ in en druk een toets om de proe~ te starten'

readln; ~ilenaam:=( 'regel.txt'); assign (commando~ile,~ilenaam) reset (commando~ile); stuur_~ile (commando~ile) rlllp (13); rlllg (byte, timeout);

repeat rlllg (byte,timeout) until byte =37;

close (commando~ile)

end; {start}

{*****************************************************************************

{**********************************it******************************************

procedure meten (var aantalr: real; var aantali: integer; var mp: Tarray)

{***

prec. { {

{***

postc. { {

De datataker stuurt reeds signalen, en weI drie stuka per "timeout" miliseoonden.

De meting stopt indien voldaan aan "stopkriterlum".

Het aantal metingen staat als real in "aantalr" en als integer in aantali. De metlngen zijn opgeslagen in een array van 11l11l1 bij 3 metingen nl. "mpH. var i,byte1: max,r1,r2,r3: einde_meten: s: integer; real; boolean; Tstringj charj c:

{**************************************************************************:

procedure stopkriterium (geta1: real;var m: rea1;var stop: boolean);

{***

prec.

{***

(38)

{************************************************************************** procedure lees (var mw:real);

{*** prec. {

Er moet een getal in ASCII over de ser. poort komen. Er wordt } "timeout" miliseconden op gewacht. Elk getal is a¥gesloten }

{ met een komma. }

{*** postc. "mw" Is de real waarde van het getal dat binnengekomen is. } var i,byte,result: c: 5 : begin {lees} S •

.

= ' , . , integer; char; Tstring;

r0g (byte,timeout) i¥ byte =32 then r0g (byte,timeout) while byte <> 44 do begin c: "chr( byte) ; s:=s+c; r0g (byte, timeout) end; val (s,mw,result) endj {lees} (**************************************************************************' begin {meten} einde_meten:- ¥alsej max:=0j aantali :-0; aantalr:=0;

lees( r1); lees (r2); lees( r3) jwriteln; r0gt( byte 1) ;

while not einde_meten do begin

aantali:= aantali+1; write (aantali,' ') aantalr:- aantalr+1j lees( r1) ;write (( r1*10) :5:2,' '); lees( r2) ;write (r2:5:2,' '); lees( r3) ;writeln (( r3/10) :5:2) mp[aantali,ll :-r1; mp[ aantali,2) :=r2; mp[aantali,3] :=r3j stopkriterium (r1,max,einde_meten) end;

stuur _string( 'H', 1) j stuur _string( , 10=1' ,4) end; {meten}

{*****************************************************************************: {*****************************************************************************: procedure maak ¥bs (ni:integer; nr:real; meetarray:Tarray);

{*** prec. "ni" en "nr" zijn het aantal metingen resp. in integer en real. { "meetarray" Is een array van 100 bij 3 met reals.

{*** postc.Er is een "FBS" ¥ile aangemaakt op drive B, die aIle trekproe¥-{ gegevens bevat. var b0,s0: i , j : Fbsnaam: Fbs: real; integer; T¥ilenaam; ¥ile o¥ realj

(39)

writeln( 'trekstrip beginmaten: ')

write ('b0- ' ) ; readln (b0);

write ('50- ' ) ; readln (50);

writeln ('oontol ingevoerde metingen (excl. b0 50) writeln;

, , nil ;

write ( ' Hoe wilt u de Fbs-"file noemen? '); readln (Fbsnaam)

assign (Fbs, 'b:'+ Fbsnaam+' .FBS') rewri te ("fbs);

write ("fbs,nr,b0,s0); "for i:~1 to ni do

"for j : c 1 to 3 do write ("fbs,meetarray[i,j])

close ("fbs); end; {maak_"fbs}

{*****************************************************************************:

{************it****************************************************************:

begin {hoo"fdprogramma} start; meten(amr,ami,meetparen) ; maak_"fbs (ami,amr,meetparen) r0cloj writeln;

writeln( 'aantal meetwaarden: end.

(40)

i} -library

;;_a:._=_== __

lsic communication Tunctiona.

r0str z some string-type which identiTies the remote connection

and deTines all its settings

i'ocedures:

• procedure r00pn (var id: r0str; var lid. err: integer); Opens a communication.

Arguments:

id - input the identiTication oT the connection, system-dependent;

lid - input err - output:

the length oT id in number oT characters; a result code:

o

--> communication opened ok >0 --> commonication open Tailure For MS-OOS ide 1]

=

ide 2] \ I ide 3] / id should contain: port no ( ' or 2)

UAAT setting (see documentation) E3 9600 baud, 8 data bits, A3 2400 baud

83 1200 baud 33 110 baud

ide 4] "" local echo (1) or not (0)

1 stop bit

id[5] - transmit Tlow control aotive (1) or not (0) ide 6] = receive Tlow control active (1) or not (0) ide?]

=

receive parity

(0 == oTT, 1 .. on (odd), ot her - 1 eave unchanged)

id[8]

=

transmit parity

For shorter strings deTaults will be used.

• procedure r0clo;

(41)

> procedure r0g (var byte, timout: integer) j

Tries to get a byte from the communication linK. Arguments:

byte - output: 0 .. 256: ascii-value of the next byte fetched -1: timed-out, nothing fetched;

timout- input : maximal time in milliseconds to wait for a byte coming available;

Remark:

- r0g will never wait longer then necessary when data is or comes available; however, when r0g returns with byte=-1, approximately timout milliseconds have been spend waiting.

> procedure r0p (var byte: integer);

Outputs a byte to the communication linK. Arguments:

byte - input ascii-value (0 .. 255) to go out

> procedure r0gt (var byte: integer);

Tries to fetch a byte from the user-terminal. Arguments:

byte - output: 0 .. 255: ascii-value of the next byte fetched -1: nothing available

RemarK:

- r0gt will not wait for any data coming available

> procedure r0pt (var byte: integer);

Outputs a byte to the user-terminal. Arguments:

(42)

const

r0dseg:integer

=

0; { Data segment ~or -these- global variables} procedure serialinterrupti

var b, b? : integer; begin

{

}

{ Handles interrupts ~or

- UART character-out register empty - incoming character available

Doesn't use any external routine (there are re-e~trancy troubles)

}

{ Save registers. No interrupts here} inline ($50/$53/$51/$52/$56/$5?/$1E/$06);

{ Establish OS to contain segment o~ r0-variables } inline ($2E/$A1/r0dseg/$8E/$D8);

case port[r0pa+2] o~

2: begin

{ UART character-out register r0empt } r0idle:= true

end; 4: begin

{ Incoming character available } b:= port[r0pa];

i~ r0rou.~low>-0 then begin

b?:= band $?F; {Strip parity}

i~ b?-1? then begin r0rou.~low:= 1; b:= -1 end else

i~ b?=19 then begin r0rou.flow:= 0; b:= -1 end end;

i~ b>=0 then i~ r0rin.count<r0mbu~ then begin

end end;

r0rin.bu~[r0rin.wptr]:= b;

r0rin.wptr:= (r0rin.wptr+1) and r0mbu~;

r0rin.count:= r0rin.count+1;

i~ r0rin.flow=0 then if r0rin.count=r0full then begin r0byte:= 19; r0rin.flow:= 1 end

6: begin

break:- true; lsr := port[r0pa+5] end;

else ;

end {case};

{ Tell interrupt controller} port[$20]:= $20;

{ See i~ we have to send something } if r0idle then

begin

{ Nothing underway } i~ r0byte<0 then begin

{ Only send a bu~fered byte when flow control not active }

i~ r0rou.~low<=0 then begin

i~ r0rou.count>0 then begin

(43)

end end end; iT r0byte>-0 then begin end end;

porte r0paJ : == r0byte; r0byte:= -1;

r0idle:= Talse

{ Finish interrupt service routine in a Turbo-way }

inline ($07/$1F/$5F/$5E/$5A/$59/$5B/$58/$8B/$E5/$50/$FB/$CF) end;

procedure r00pn (var rid: T0str; lrid: integer; var code: integer); var a, b, intmasK, uart: integer;

r: r0regs; begin

{ This is tricky code to allow interrupt service routine to establish correct OS to make r0-variables available

}

r0dseg:= dseg;

{ Character 8: Outgoing parity iT Irid>-8 then

o

== oTT, 1 == on, other == do not change} begin

a:- ord (rid[S]) mod 128-48; iT (a<0) or (a>1) then a:=-1 end else a:- -1;

r0rou.parity:= ai iT r0rou.parity>0 then r0rou.parity:= 128;

{ Character 7: Incoming parity: 0 - oTT, 1 == on, other == do not change} iT lrid>=7 then

begin

a:= ord (rid[7]) mod 128-48; iT (a<0) or (a>1) then a:= -1 end else a:= 0;

r0rin.parity:= ai iT r0rin.parity>0 then r0rin.parity:- 128; { Character 6:

Receive data Tlow control: 1 - I will send CONTROL-S/CONTROL-Q } iT lrid>=6 then r0rin.Tlow:= ord (rid[6]) mod 128-48-1

else r0rin.Tlow:- 0; { Character 5:

Send data Tlow control: 1 - I will recognize CONTROL-S/CONTROL-Q } iT Irid>=5 then r0rou.Tlow:= ord (rid[5]) mod 128-48-1

else r0rou.Tlow:= -1;

{ Character 4: Local echo : 1 .. yes}

iT lrid>-4 then a:- ord (rid[4]) mod 128-48 else a:- 0; r0echo:= a<>0;

{ Characters 2&3: UART setting

E3 9600 baud, 8 data bits, 1 stop bit A3 - 2400 baud

83 1200 baud 23 == 300 baud }

Referenties

GERELATEERDE DOCUMENTEN

 als de boxen elkaar wel overlappen en een mediaan van een boxplot buiten de box van de andere boxplot ligt, dan zeggen we “het verschil is middelmatig”,.  in alle

Met behulp van de gemeten concentraties van deze beide hoofdsoorten wordt de overschrijdingsfactor F berekend.. Hoe groter de waarde

Zoals in de commissievergadering van 2 december door de portefeuillehouder is toegezegd, ziet u hieronder een drietal scenario's over

De dagen zijn veel langer, omdat het ‛s morgens vroeg licht is en ‛s avonds laat donker wordt.. In de natuur is alles groen en we brengen dit warme seizoen met een ijsje bij het

De vraag doet zich dan voor of een volledig marktgebaseerde discontocurve voor verplichtingen niet verstorend werkt: pensioenfondsen en verzekeraars worden door de keuze van

Omdat het curriculum landelijk wordt afgesproken, zitten er natuurlijk dezelfde onderwerpen in beide lesmethodes, maar de focus van beide lesmethodes is anders: waar Bettermarks het

Indien de bouw door zou gaan zou dit aanzienlijke gevolgen hebben voor het aanzien en klimaat van de wijk. Tevens zal dit negatieve gevolgen hebben voor de waarde van onze

In een volgende hoofdstuk zullen we zien hoe bepaalde typen differentiaalvergelijkingen tot integraalvergelijkingen kunnen worden getransformeerd.. Hierbij zijn g en K(x, t)