Technische Universiteit Eindhoven Faculteit der Werktuigbouwkunde Vakgroep Produktietechnologie en -automatisering Laboratorium voor Omvormtechnologie
Persproef-Analyse Programma versie 2.00 INTRODUCTIE R.J.J. de Coninck HS-Heerlen-HIo-Stageverslag 1 Aug. 1993 VF-code: D2
Stageperiode Begeleider TU Eindhoven Begeleider Hogeschool Heerlen
16-08-1993 1994
..
WPA 120001
tIm
16-01-
Ir. L.J.A. Houtackers Ir. A.J. Goos
Adressenlijst.
stageverlenend bedrijf:
Technische Universiteit Eindhoven
Bezoekadres:
Den Dolech 2 5612 AZ EINDHOVEN 040 - 479111
Postadres:
Postbus 513 5600 MB EINDHOVEN
Interne begeleider:
ir. L.J.A. Houtackers
Prive:
Nachtegaallaan 2 5731 XR MIERLO (tel) 04927 - 62281 04927 - 62648 (fax)
Intern:
TU Eindhoven W-Hoog 0.119 040 - 474521 040 - 448665
Externe begeleider:
(tel) (fax)
ir. A.J. Goos
Prive:
Frederikagracht 5 6465 CR KERKRADE 045 - 423163
Intern:
Dr. Jaegersstraat 40 6417 CK HEERLEN 045 - 734892 (tel) 045 - 719790 (fax)
stagiair:
R.J.J. de Coninck
Prive:
Geleenstraat 66 6155 ND PUTH 04493 - 1157
Intern:
W-Hal 1. 44 045 - 473648
-
2 -
Voorwoord.
Hierbij wil ik mlJn dank uitdrukken aan al degenen die met hun hulp en ondersteuning ervoor gezorgd hebben dat deze stageperiode een prettig verloop had. In het bijzonder wil ik mijn dank betuigen aan M.Th. de Groot voor al diens collegialiteit. Verder Dhr. L.J.A. Houtackers voor de duidelijk beantwoorden van aIle vragen en het goed begeleiden tijdens mijn stage.
-
3 -
samenvatting.
Dit verslag is ontstaan in het kader van m1Jn stage in het zesde semester, bij TU Eindhoven, van augustus 1993 tot januari 1994, en behandelt de stage-omgeving en de uitvoering van de opdracht. De doelstellingen van deze stage zijn : Bet opdoen van programmeer-ervaring. Inzicht verkrijgen over welke problemen zich zoal voor doen in een bedrijf m.b.t. automatisering. Bet maken van een systeem ontwerp en de daarbij behorend programma. De opdracht was alsvolgt gedefinieerd: Schrijf een programma dat gegevens verwerkt, en er een of meerdere rapport (en) van genereert. Deze gegevens zijn afkomstig van het data-acquisitie programma. Controleer tevens het acquisitie-gedeelte en omschrijf wat er aan dient te worden veranderd. Ook dient van het systeem een systeemontwerp te worden gemaakt. Dit verslag omvat de volgende hoofdstukken De stage-omgeving. De Technische Universiteit Eindhoven, in 1956 gegrondvest als Technische Bogeschool Eindhoven, bestaat uit een achttal faculteiten, waaraan voor het merendeel technische disciplines worden onderwezen. Een van deze faculteiten is de Faculteit der Werktuigbouwkunde, welke is opgedeeld in drie afzonderlijke vakgroepen, die elk een deel van de werktuigbouwkunde bestrijken. De stage speelt zich binnen de vakgroep WPA. Deze vakgroep richt zich op de produktietechnologie en de produktieautomatisering en weI in het laboratorium van omvormtechnologie. De persproef. Onder een omvormproces worden verstaan: het verkrijgen van een gewenste vormverandering, zonder dat daarbij materiaalverlies optreedt. Omvormprocessen zijn zogenaamde plastische processen. Bet omvormproces kan worden ingedeeld worden in twee categorieen, namelijk: - koudomvormen en - het warmomvormen. Bij warmomvormen wordt energie in de vorm van warmte toegevoerd. Dit is bij het koudomvormen niet het geval. Bij de persproef is er in de meeste gevallen relatief gezien sprake van een koudomvormproces. Bet woord persproef is een verzamelnaam voor een aantal koudomvormproeven (waaronder stripdieptrekken, dieptrekken, persen, ponsen en dergelijke). Bet doel van het programma is de procesgegevens bij het verwerken van metalen te verkrijgen zodat er modellen opgezet en getoetst kunnen worden. De "oude" meetopstellingen bestaat uit de pers waarop m.b.v. een Kistler-eel de kracht wordt gemeten, en een ultasoon wegmeetsysteem op de weg te meten. Beide geven een spanning - 4 -
af, die kan worden omgerekend naar krachten en wegen. Dit is vrij intensief en foutgevoelig. Men is gaan zoeken naar een andere meetopstelling. De automatische meetopstelling wordt gedaan met een computer die is uitgerust met en acquisitiekaart. Hierdoor is het mogelijk om analoge spanningen om te zetten naar digitale waarde. Door nu een programma te schrijven die bestaat uit twee taken moet het mogelijk zijn om de persproeven m.b.v. de computer te verwerken. De twee taken zijn : Het registreren en bewaren van de door de PC-LabCard verkregen persproef-gegevens (data-acquisitie). Het kunnen verwerken van deze persproef-gegevens tot grafieken en overzichten (data-verwerking). Omschrijving van de stage-opdracht. Het is de bedoeling een programma te schrijven en te ontwerpen dat meetgegevens verwerkt en er een of meerdere rapport (en) van genereert. De meetgegevens zijn afkomstig van het data-acquisitie programma. Wijzigen t.o.v. het Persproef-Analyse Programma versie 1.00. Het Persproef-Analyse Programma versie 1.00 voldoet niet aan de wensen van de opdrachtgever. Daarom is besloten om een het programma te wijzigen. Deze wijzigen kan men verdelen in 1) functionele- en 2) technische wijzigen. Functionele wijzigingen hebben betrekking op wijziging in de mogelijkheden van het programma, en zijn dus zichtbaar voor de gebruiker. Technische wijzigingen betreffen wijzigingen in de manier waarop het programma intern zijn taak uitvoert. Functionele wijzigen die moeten worden doorgevoerd zijn : 1) 2) 3)
Het aanbrengen van een toegangscode. Het selecteren van een te verwerken persproef dient te worden vereenvoudigd. Het verhogen van de gebruikersvriendelijkheid.
Technische wijzigen die moeten worden doorgevoerd zijn : 1) 2) 3) 4)
Het Persproef-Analyse Programma moet zelfstandig meetrapporten met grafieken kunnen afdrukken. Er mag geen gebruik meer gemaakt worden van overlays. Het programma moet flexibeler zijn, hetgeen betekent dat het eenvoudiger bij afwijkende computerconfiguraties kan worden gebruikt. Het ontwerp en de broncode moet beter gedocumenteerd worden.
uitvoeren van de stage-opdracht. Er zijn tijdens het uitvoeren van de stage-opdracht een aantal problemen aan het licht gekomen die kort zullen worden besproken. Ook zullen er keuzes moeten worden gemaakt.
-
5 -
Als eerste moest er een keuze worden gemaakt of het verwerkings-gedeelte geheel opnieuw zou moeten worden gemaakt of aanpassen van het bestaande verwerkings-gedeelte. Voordat deze keuze kan worden gemaakt zal eerst het bestaande verwerkings-gedeelte grondig moeten worden bestudeerd. Dit leverde het volgende op: Het programma is onvoldoende gedocumenteerd. Een aantal routines zijn dubbel opgenomen en het programma voldoet niet aan aIle eisen zoals de gebruikers ze wilt hebben. Een aantal routines zijn dubbel opgenomen. Door het aanpassen van het bestaande verwerkings-gedeelte zal de kans klein zijn op een goed werkend programma. Er is dus gekozen voor het opnieuw ontwikkelen. Bij het opstellen van het eerste ontwerp (essentieel model) is er gekozen voor het opstellen van een uitgebreide data dictionary. Zodoende krijgt men precies inzicht in het probleem en zullen de begrippen en sYmbolen eenduidig worden vastgelegd. Bij het opstellen van het tweede ontwerp (implementatie model) zijn de volgende problemen aan het licht gekomen. De schermopbouw van het verwerkings-gedeelte voldoet niet aan het standaard scherm-Iayout en zal daarom niet worden overgenomen. De opslagstructuur van verschillende bestanden zijn veranderd en/of aangepast. Voor het opslaan van de meetgegevens tijdens het uitvoeren van het programma is gekozen voor twee lineaire lijsten. Dit kost minder geheugen en er ontstaan daardoor ook geen geheugen problemen. Test en invoeren. Voor het testen van het Persproef-Analyse Programma z1Jn een aantal testprocedures gebruikt. Nadat een functie of procedure was gemaakt, werd deze direct afzonderlijk getest. Indien een aantal routines samen moesten werken, werden deze als een groep getest. Hiervoor werd dan een testprogramma geschreven. Deze testprogramma staan onder de sUbdirectory extra bij de source-code. Het programma is als geheel, met geconverteerde bestanden data bestanden van het oude programma getest. Het invoeren van het programma bij de experimenten in het lab van Omvormtechnologie zal niet direct gebeuren, aangezien het acquisitie-gedeelte eerst moet worden verbeterd. Conclusie. De opdrachtomschrijving is twee keer tijdens de stage-periode veranderd. Dit heeft extra werk met zich meegenomen waardoor de planning niet zal worden gehaald.
-
6 -
Inboudsopqave.
Adressenlijst.
- 2 -
Voorwoord • .
- 3 -
Samenvattinq
- 4 -
..............
Inhoudsopgave.
- 7 -
Verklarende woordenlijst:
- 9 -
Inleiding.
- 10 -
Hoofdstuk 1 - De stage-omgeving. 1.1 De stageverlenende instelling. • 1.2 Het Laboratorium voor Omvormtechnologie.
- 12 - 12 - 13 -
Hoofdstuk 2 - De persproef . . . • . . . . • . • . • • . 2.1 Algemene inleiding over omvormprocessen. . . . . 2.2 Beschrijving van de persproef. . . • • • 2.3 Meetopstellingen. • • . . . . • . . . . . . . • . 2.3.1 Huidige meetopstelling. . . . . • • • • • 2.3.2 Meetopstelling met automatische registratie. 2.4 Het Persproef-Analyse Programma. • . . . . 2.4.1 Acquisitie van de persproef-gegevens • • • • 2.4.2 Verwerking van de persproef-gegevens • • • •
- 14 - 14 - 15 -
Hoofdstuk 3 - Omschrijving van de stage-opdracht. • • •
- 21 - 21 - 21 -
3 • 1 Aanleiding.
. . . . . . . . . . . . . . . . .
3.2 De stage-opdracht.
. ••....•.•.••••
Hoofdstuk 4 - Wijzigingen t.o.v. het Persproef-Analyse Programma versie 1.00 . • . . . . . . . . 4.1 Functionele wijzigingen. . . . . . • • . • . . • 4.1.1 Toegangscode . . . . • . . . . • • • • • . . 4.1.2 Selectie van de te verwerken persproef • • . 4.1.3 Verhoging van de gebruikersvriendelijkheid. 4.2 Technische wijzigingen • • • . . . . • • • 4.2.1 Printen van rapporten met grafieken. 4.2.2 Het gebruik van overlays • • • • 4.2.3 Flexibiliteit. . .. 4.2.4 Documentatie. • •.. Hoofdstuk 5 - Uitvoeren van de stage-opdracht. 5.1 Keuze tussen aanpassen bestaande verwerkingsgedeelte of het geheel nieuw maken hiervan. • • • 5.2 uitwerking van het essentieel model. • . • • 5.3 Uitwerking van het implementatie model • • • • 5.4 Ontwikkeling van het verwerkings-gedeelte. • •• 5.4.1 Opslag van de persproefgegevens in het intergeheugen en de daarbij behoorende data opslag. 5.4.2 Het bewerken van een Persproef per kracht weg combinatie. .
. .
.
.
.
.
.
.
.
.
.
.
.
.
.
5.5 Ontwikkeling van het beheer bestanden programma. - 7 -
.
-
16 16 17 18 18 19
-
-
24 24 24 25 25
-
-
26 26 27 27 28
-
-
29 -
-
29 30 30 -
- 31 - 31 - 32 -
- 33 -
Hoofdstuk 6 - Testen en invoeren.
-
34 -
Hoofdstuk 7 - Conclusie.
-
35 -
•.••
-
8 -
Verklarende woordenlijst:
Krachtsignaal
Een signaal, dat afkomstig is van een krachtsensor op een meetpunt in een pers. Dit signaal is een elektrische weergave (in Volt) van de kracht, die de stempel van de pers op het proefobject uitvoert.
Wegsignaal
Een signaal, dat afkomstig is van een wegsensor op een meetpunt in een pers. Dit signaal is een elektrische weergave (in Volt) van de weg die de stempel aflegt om een bepaald proces te realiseren onder invloed van een kracht.
Schaalweg
De waarde, die gekoppeld wordt aan het maximale signaal, dat binnenkomt over een kanaal. Hierdoor kan het elektrische signaal omgezet worden naar een weg (in millimeter = rom) •
Schaalkracht
De waarde, die gekoppeld wordt aan het maximale signaal, dat binnenkomt over een kanaal. Hierdoor kan het elektrische signaal omgezet worden naar een kracht ( in kilo Newton = kN).
- 9 -
Inleiding. Gedurende de stage van augustus 1993 tot januari 1994 in het zesde semester van de Informatica-opleiding van de Hogeschool Heerlen, is voor het Laboratorium voor omvormtechnologie van de Technische Universiteit Eindhoven het daar ontwikkelde PersproefAnalyse Programma, gebruikt voor het verkrijgen van procesgegevens bij het testen van materialen op persen en testbanken, aangepast. De doelstellingen van deze stage z1Jn Het opdoen van programmeer-ervaring. Inzicht verkrijgen over welke problemen zich zoal voor doen in een bedrijf m.b.t. automatisering. Het maken van een systeem ontwerp en de daarbij behorend programma. De opdracht was alsvolgt gedefinieerd: Schrijf een programma dat gegevens verwerkt, en er een of meerdere rapport (en) van genereert. Deze gegevens zijn afkomstig van het data-acquisitie programma. Controleer tevens het acquisitie-gedeelte en omschrijf wat er aan dient te worden veranderd. Ook dient van het systeem een systeemontwerp te worden gemaakt. Het eerste hoofdstuk beschrijft de werkomgeving waarin de stageopdracht uitgevoerd dient te worden. Hierin komen de plaats in de organisatiestructuur en de activiteiten van het Laboratorium voor Omvormtechnologie aan bod. In hoofdstuk twee wordt de persproef behandeld. Onder andere wordt er gesproken over het doel en de uitvoering van de persproef. Hoofdstuk drie geeft een omschrijving van de opdracht, die tijdens deze stageperiode gerealiseerd dient te worden. Deze opdracht is gedeeltelijk al uitgewerkt door Peter Reinders. Delen van de tekst zijn hierin overgenomen REINDERS LIT. [21]. In hoofdstuk vier zullen de aanpassingen ten opzichte van versie 1.00 besproken worden. Hoofdstuk 5 beschrijft de uitvoering van de stage-opdracht en de problemen die er zijn opgetreden. Het testen van het programma en het invoeren zullen in hoofdstuk zes aanbod komen. Tenslotte zal in hoofdstuk 7 een conclusie over de gehele stage worden getrokken.
- 10 -
Tijdens de stageperiode zijn de volgende verslagen geschreven: stageverslag Stageverslag Stageverslag Stageverslag stageverslag
aug. sep. .okt. jan. jan.
Introductie. Essentieel model. Implementatie model. Gebruikers handleiding. Source-code programmaonderdelen PersproefAnalyse Programma versie 2.00. Stageverslag 6: jan. 1994, WPA 120006 - Source-code librarybestanden PersproefAnalyse Programma versie 2.00. 1: 2: 3: 4: 5:
1993, 1993, 1993, 1994, 1994,
WPA WPA WPA WPA WPA
120001 120002 120003 120004 120005
- 11 -
-
Hoofdstuk 1 - De stage-omgeving. 1.1 De stageverlenende instelling.
De Technische Universiteit Eindhoven, in 1956 gegrondvest als Technische Hogeschool Eindhoven, bestaat uit een achttal faculteiten, waaraan voor het merendeel technische disciplines worden onderwezen. Een van deze faculteiten is de Faculteit der Werktuigbouwkunde, welke is opgedeeld in drie afzonderlijke vakgroepen, die elk een deel van de werktuigbouwkunde bestrijken.
De vakgroep WFW bestrijkt de fundamentele gebieden mechanica, dynamica, regeltechniek en polYmeertechnologie. De vakgroep woe bekijkt de gebieden ontwerpen, construeren, aandrijf- en tribotechniek, vervoerstechnologie, energietechnologie en fabrieks- en apparatenbouw voor de procesindustrie. De derde vakgroep, genaamd WPA, concentreert zich op de produktietechnologie en de produktieautomatisering. Binnen elke vakgroep zijn meerdere deelgebieden te onderscheiden. Zo zijn er binnen de vakgroep WPA de volgende deelgebieden: 1) Bewerkingstechnologie: - Materiaalgedrag in de fabricage. - Mechanische bewerkingsprocessen. • 2) Produktiemiddelen: - Universele produktiemiddelen. - Specifieke produktiemiddelen. 3) Precision Engineering: - eonstructieve aspecten en precisie-bewerkingen. - Meet- en besturingstechniek. 4) Automatisering van de produktie: Machinebesturingstechnologie. Fabrieksbesturingstechnologie en Technische Bedrijfsvoering. Het deelgebied dat gemarkeerd is met • wordt bestudeerd in het Laboratorium voor Omvormtechnologie, waar mijn I6T stage zich afspeelt.
1
Hoofdstuk 1 is ontleend aan REINDERS LIT. [8] - 12 -
1.2 Bet Laboratorium voor omvormtechnologie.
Een van de hoofd-onderzoeksgebieden binnen het Laboratorium voor omvormtechnologie vormt de procesbeschrijving van omvormende bewerkingen. Dit zijn bewerkingen waarbij een gewenste vormverandering wordt verkregen zonder dat er materiaalverlies optreedt {een voorbeeld hiervan is het persen van een autodeur uit een vlakke metaalplaat}. Dit in tegenstelling tot bijvoorbeeld verspanende bewerkingen, waarbij een gewenste vormverandering wordt verkregen door het overtollig materiaal te verwijderen {bijvoorbeeld door frezen of draaien}. De ontwikkelde procesmodellen worden beschreven met behulp van de plasticiteitsmechanica en gekoppeld aan de ontwikkelde materiaalmodellen. Tevens vindt er een experimentele toetsing plaats. Bij omvormprocessen spelen onder andere de eigenschappen van het materiaal, waaruit het werkstuk gemaakt dient te worden, een grote rol. Om nu gefundeerde uitspraken te kunnen doen over omvormende processen, zullen naast de procesgegevens de materiaaleigenschappen bekend moeten zijn. Voor het bepalen hiervan staan het Laboratorium voor Omvormtechnologie verschillende methoden ter beschikking. In het algemeen worden materiaalgegevens verkregen met de trekproef, wringproef en de stuikproef. Voor wrijvingsgegevens staan de striptrekproef en de dieptrekproef ter beschikking. Voor bepaalde procesparameters wordt gebruik gemaakt van de universele Erichsentest, de Erichsen-speciaaltest, de Engelharttest, de Fukui test, het Loch aUfweitversuch, de warmtrektest, de vierkant dieptrektest, de volgtrektest, het hochgeschwindigkeits versuch, de maximale dieptrektest en de mechanische en hydraulische bulgtest. Daarnaast worden voor het testen van bepaalde procesmodellen speciaal geconditioneerde persproeven uitgevoerd.
- 13 -
Hoofdstuk 2 - De persproef. 2
In de onderstaande tekst zal als eerste een algemene inleiding over omvormprocessen worden gegeven. Vervolgens zal op de persproef zelf worden ingegaan. Tenslotte komt de meetopstelling aan bod. Hierbij wordt zowel de traditionele als ook de geautomatiseerde opstelling beschreven. 2.1 Algemene inleiding over omvormprocessen.
Zoals reeds in de vorige paragraaf is vermeld kan onder een omvormproces worden verstaan: het verkrijgen van een gewenste vormverandering, zonder dat daarbij materiaalverlies optreedt. Omvormprocessen zlJn zogenaamde plastische processen. Deze processen berusten op het vermogen van een groot aantal materialen (vooral metalen) om, onder vaak hoge mechanische belasting, plastisch (dat wil zeggen met een blijvende vormverandering) te deformeren. De gewenste vormverandering van het werkstuk komt via plastische deformatie van het werkstukmateriaal tot stand. Naast omvormprocessen worden verder ook verspanende processen (frezen en draaien), scheidende processen (knippen en ponsen) en verbindende processen (felsen: het verbinden van naden, bijvoorbeeld bij verfblikken) tot de plastische processen gerekend. Men kan de groep van omvormprocessen onderverdelen in warm- en koudomvormen. Bij warmomvormen wordt energie in de vorm van warmte toegevoerd, waarna het werkstukmateriaal kan worden bewerkt. Een voorbeeld van een bewerkingsproces dat gebruikmaakt van warmomvormen is smeden. Bij koudomvormen wordt geen energie in de vorm van warmte toegevoerd aan het werkstukmateriaal. Om geschikt te zijn voor koudomvormen dient een materiaal over een aantal eigenschappen te beschikken: Het moet strekbaar en rekbaar zijn. Het moet plastisch te deformeren zijn. Het materiaal moet verstevigen. Dit wil zeggen dat als men het plastisch gedeformeerde materiaal nog verder wil deformeren, men een grotere kracht op het materiaal zal moeten uitoefenen dan bij de eerdere deformatie. Het materiaal is dus sterker geworden. De bovengenoemde eigenschappen van de voor koudomvormen geschikte materialen zijn zeer verschillend. Persproeven worden toegepast om een aantal proceseigenschappen bij het gebruikte werkstukmateriaal te bepalen. Bij de persproef is er in de meeste gevallen relatief gezien sprake van een koudomvormproces.
2
Hoofdstuk 2 is ontleend aan REINDERS LIT. [8] - 14 -
2.2 Beschrijvinq van de persproef.
Er is eigenlijk geen sprake van een persproef. Het woord persproef is een verzamelnaam voor een aantal koudomvormproeven (waaronder stripdieptrekken, dieptrekken, persen, ponsen en dergelijke). Het is de bedoeling dat het Persproef-Analyse Programma gegevens van deze proeven (eventueel op verschillende persen uitgevoerd) registreert en verwerkt. Het doel hiervan is de procesgegevens bij het verwerken van metalen tijdens het persen te verkrijgen zodat er modellen opgezet en getoetst kunnen worden. Met deze modellen kan gekeken worden of een bepaald materiaal geschikt is voor een bepaald proces en of een bepaald proces op een bepaalde pers optimaal kan worden uitgevoerd (zie figuur 1 en 2: uit figuur 1 blijkt hoe de F~mu en de ~nmu ten opzichte van elkaar staan, en hoe er aan de ~nmu gekomen wordt. Figuur 2 stelt een dieptrekproces op een mechanische pers voor).
vollastpuDt
Fpers max . ... - - - - - - ,
A3
. . . . .I··
At
..
i A2 i i . . _. ..I .. i i i i S(mm)
Onderste dode punt
Rccbthoeken die de muimale arbeid van de pers voorsteDen. Oppervlakte At • Oppervlakte A2. Oppervlakte A3. Apers max : hypcrbool die de grens ungeeft un de maximaal beschikbare deformatie arbeid die de pers kan leveren. Fpers max: kromme die de maximaal beschikbare perskra<:ht in beeld brengt.
.
F1quur 1 De
Fmu~n
en
~nmu
tegen de weg u1tgezet.
Als blijkt dat de FS-kromme voor het omvormen van het metaal ergens in de grafiek boven de Fpersmax-kromme van de stempel van de pers ligt, dan is het niet mogelijk het gebruikte metaal om te vormen met de desbetreffende pers. Dit wil eigenlijk zeggen dat de kracht die op een bepaalde weg nodig is om een metaal om te vormen op een bepaalde pers voor dat bepaalde metaal niet toereikend is. Als Fproces mu > F~n mu dan kan de pers breken. Als Aproccs > ~nmu dan loopt de pers vast.
- 15 -
J/ FperBmax
Vollaslpunt
,,
, ,, , ,,
Ppelsmax
-- -
--- .--
· . . ..
.. ,
S(mm)
!ttt:::t:l
Fmax proc:e8
Ondcntc dodc punt
Aproces: de benodigde proces arbeid. De maximaal beschikbare deformatie arbeid die de pen kan leveren.
FS-laomme die aangeeft welke bacl1t er bij welke weg uitgeoefend kan worden op het me1aal door de stempel van de pers.
Fiquur 2 p"roces en P;,ers max uitgezet in f iguur 1.
De FS-krommen van het omvormen van het metaal werden (en worden nog steeds) handmatig en/of analoog met een sehrijver verkregen. Doordat de waarden van de kraehten (F) en wegen (S) worden afgelezen van meetapparatuur treedt er een afwijking op in de werkelijke en de gemeten kromme. Om dit probleem op te lossen wordt er geautomatiseerd, zodat de gegevens real-time ingelezen worden met een grotere nauwkeurigheid. 2.3 xeetopstellingen. 2.3.1 Huidige meetopstelling.
De momentele meetopstelling bestaat uit een pers die is uitgebreid met kraeht- en wegopnemers. Deze kraeht- en wegopnemers worden niet bij de persen geleverd en zijn naderhand ingebouwd. De kraeht wordt gemeten met behulp van een Kistler-eel en een ladingsversterker. Een Kistler-eel is een ronde sehijf met een quartzplaat. Als op deze quartzplaat een kraeht wordt uitgeoefend, geeft deze een lading af die via de ladingsversterkers in een elektrisehe spanning af. De weg wordt gemeten met een ultrasoon wegmeetsysteem. Hierbij wordt de weg kontaktloos gemeten met behulp van een magneetring die op en neer beweegt langs een ferro-magnetisehe kern. Hierdoor wordt er, afhankelijk van de afgelegde weg een spanning afgeven.
- 16 -
Door nu de kracht- en wegspanning met behulp van Voltmeters te registreren en de resultaten om te rekenen naar krachten en wegen wordt de uiteindelijke kracht-weg kromme verkregen. Omdat dit een zeer arbeidsintensief proces is (dat ook zeer gevoelig is voor aflees- en rekenfouten), werd besloten tot automatisering van de data-acquisitie en data-verwerking. 2.3.2 xeetopstellinq met automatische reqistratie.
Bij de meetopstelling met automatische registratie worden de spanningssignalen van de kracht- en wegopnemers niet meer weergegeven met behulp van Voltmeters, maar worden de signalen via een aansluit terminal rechtstreeks naar de acquisitiekaart gestuurd. De computer waarop de acquisitie plaats vindt is uitgerust met een speciale acquisitiekaart. Hierdoor is het mogelijk de analoge spanningen om te zetten naar digitale waarden (AID conversie, zie ook Van de EIJNDE LIT. [1], VERSTRAELEN LIT. [8], en LIT. [27], [ 2 8 ] en [ 2 9 ] ) • Het gebruik van een computer voor het registreren, bewaren en verwerken van de persproefgegevens heeft een aantal voordelen ten opzichte van de handmatig registratie en verwerking: In het Persproef-Analyse Programma (acquisitie deel) worden weI de persproefgegevens van het materiaal dat getest wordt opgenomen maar niet verwerkt). Het verwerken van o.a. de persproefgegevens vindt plaats in het Persproef-Analyse Programma (verwerkings deel). De uitvoering van een persproef levert meer meetpunten Ope De uitvoering van een persproef levert nauwkeurige meetpunten op (behoudens externe storingen). Het verwerken van de persproefgegevens hoeft niet meer handmatig te geschieden, hetgeen een grote tijdwinst oplevert. Omdat de gegevens niet meer handmatig verwerkt worden, neemt de kans op het maken van fouten tijdens de verwerking flink af (behoudens fouten in de acquisitie-software). Door middel van de computer kunnen de persproefgegevens in een korte tijd op een groot aantal manieren worden verwerkt en weergegeven worden in rapporten, grafieken en tabellen.
- 17 -
2.4 Het Persproef-Analyse Proqramma.
Zoals reeds vermeld in de vorige paragraaf wordt bij de meetopstelling met automatische registratie gebruik gemaakt van het Persproef-Analyse Programma. De twee hoofdtaken van dit programma zijn: Het registreren en bewaren van de door de PC-LabCard verkregen persproef-gegevens (data-acquisitie). Het kunnen verwerken van deze persproef-gegevens tot grafieken en overzichten (data-verwerking). In de nu volgende paragrafen zal in het kort op deze hoofdtaken worden ingegaan. 2.4.1 Acquisitie van de persproef-qeqevens.
Voordat de uitvoering van de persproef kan beginnen, moeten in het acquisitie-gedeelte van het Persproef-Analyse Programma een aantal zaken worden ingesteld, zoals bijvoorbeeld de perskeuze, het werkstofnummer van het te persen materiaal, de start- en stopcriteria, de configuratie van de binnenkomende kanalen, etc. Vervolgens wordt de pers gestart, waarna de PC-Labcard gegevens verkrijgt en doorstuurt naar het PC-geheugen (RAM), waar de gegevens worden opgeslagen en worden weggeschreven nar een diskette. De duur van de (pers)proef is ongeveer 15 seconden, hetgeen vast te stellen is door enkele proeven te observeren. De samplefrequentie is niet bekend omdat deze proeven nog nooit (in het Laboratorium voor Omvormtechnologie) geautomatiseerd werden uitgevoerd, en niet bekend is wat een ideale samplefrequentie zou kunnen zijn. Een mogelijke oplossing voor de ontbrekende samplefrequentie is dat de samplefrequentie afhankelijk wordt gesteld van randgegevens; dat wil zeggen dat de grootste beperkende factor de samplefrequentie vastlegt. Enkele mogelijke bottle necks zijn de snelheid van de acquisitie PC, de hoeveelheid meetgegevens die op een schijf passen en de snelheid waarmee de gegevens weggeschreven kunnen worden. In praktijk blijkt de opslagcapaciteit van de diskettes de grootste bottle neck te zijn. Er blijken zo weinig gegevens op een diskette te passen dat de samplefrequentie hieraan moet worden aangepast (voor een afleiding van de gegevens in de tabel wordt verwezen naar REINDERS LIT. [23]). Opmerking : Bij het gebruik van 2,88 MB diskettes kan een ander probleem optreden. Doordat de gegevens in het RAM bewaard worden kan het geheugen vol raken (zeker als de gebruiker zelf nog enige programma's in het geheugen heeft staan). Een oplossing hiervoor is alles direct naar schijf te schrijven, maar dan moet de schrijfsnelheid naar schijf groot genoeg zijn om tussen twee samples aIle meetgegevens naar schijf te schrijven.
- 18 -
•
Benodigd RAM geheugen
Totale diskcapaciteit
Aantal meetgegevens ••
Max. sample frequentie
360 Kb
10.240
0,640 kHz
100 Kb
720 Kb
20.480
1,280 kHz
200 Kb
1,2 MB
34.952
2,185 kHz
342 Kb
1,44 MB
40.960
2,560 kHz
400 Kb
2,88 MB
81.920
5,120 kHz
800 Kb
600 MB·
104.857.600
6,553 MHz
6000 MB
=
•• =
Magnetisch optische disk, ook eenmogelijkheid, maar niet alles kan in het RAM geheugen . Het aantal meetparen is gelijk aan de helft van het aantal meetgegevens (een meetpaar bestaat uiteen krachten een wegsample).
De registratie van de persproefgegevens start en stopt op basis van door de gebruiker ingevoerde criteria. Deze criteria kunnen zowel op kracht als op weg gebaseerd zijn. Nadat de registratie beeindigd is, heeft de gebruiker de mogelijkheid om aIle foute en/of niet relevante metingen (zogenaamde uitbijters) te wijzigen en/of te verwijderen, waarna de overgebleven persproef-gegevens in een bestand worden opgeslagen. Tevens zal de gebruiker een aantal bijzonderheden over het gebruikte metaal moeten invoeren, zoals het soort materiaal, de herkomst, de operator, de trekproefcodenummers (indien er een of meerdere trekproeven op dat materiaal met die eigenschappen gedaan zijn), etc. Ook deze gegevens worden in een bestand opgeslagen.
2.4.2 verwerking van de persproef-gegevens. De via het acquisitie-gedeelte opgeslagen persproef-gegevens kunnen in het verwerkingsgedeelte worden gebruikt voor het bepalen van een aantal procesgegevens. Hieruit kunnen de volgende gegevens gehaald worden (zie hiervoor ook figuur 3):
- 19 -
De totale deformatie arbeid (de totale arbeid die nodig is om het metaal om te vormen, zie formule).
f
eind/;>unt:
FS-kromme
aanvangspunt:
De maximale perskracht F~nmu. De totale slag van de pers h. De aanvangsweg Sa' is de weg van het beginpunt van de persproef tot het punt waar de maximale kracht optreedt. De eindprocesweg Se' is de weg vanaf het punt waar de maximale kracht optreedt tot het eindpunt van de pers. De totale procesweg S~, is de weg van het begin- tot het eindpunt. De persproef-gegevens en de hieruit afgeleide resultaten kunnen op een aantal manieren worden weergegeven. Zo kunnen de gegevens 1n grafiek- of tabelvorm op het scherm worden getoond, of kunnen deze in de vorm van rapporten op de printer worden afgedrukt. Een andere belangrijke functie van het verwerking-gedeelte is de mogelijkheid tot het samenstellen van subsets (deelreeksen) uit de oorspronkelijke reeks metingen. Hierdoor is het mogelijk een specifiek gedeelte van de uitgevoerde persproef nader te onderzoeken.
N = Het oricinele aantaI meetparen Fproces max= De maDmale proecskracht Sa De aanvanp proeeewea' Be = De eind proeeswer Stotaal = De totaIe proceswec h =De totaIe IItemPe1 wee ~ =Arbeid: eiDapum F d8 /-------r-----------". becinPunt
=
I.
S (mm)
Stotaal h
Fiquur 3
FS-kromme en de procesgegevens die hieruit afgeleid kunnen worden.
-
20 -
Hoofdstuk 3 - omschrijving van de stage-opdracht.
In dit hoofdstuk wordt aandacht geschonken aan de opdracht die in deze stage-periode dient te worden gerealiseerd. Als eerste zal daarom de aanleiding tot de opdracht worden beschreven en vervolgens de stage-opdracht zelf. 3.1 Aanleiding.
Voor het registreren, bewaren en verwerken van de persproefgegevens via de meetopstelling met automatische registratie heeft het Laboratorium voor Omvormtechnologie de beschikking over het Persproef-Analyse Programma versie 1.00. Dit programma voldoet op een aantal punten echter niet geheel aan de eisen van de opdrachtgever. Zo zijn onder andere een aantal onderdelen niet of niet volledig geYmplementeerd en bevat het programma nog een aantal fouten. Daarom is er bij de gebruikers van het PersproefAnalyse Programma de behoefte ontstaan aan een nieuwe versie van dit programma, waarin de bovenstaande zaken zijn verbeterd en bovendien het accent gelegd wordt op de gebruikersvriendelijkheid van het Persproef-Analyse Programma. Het nieuwe programma bestaat uit twee delen : 1) data-acquisitie gedeelte en 2) verwerkings gedeelte. Het eerste gedeelte is al gemaakt door Peter Reinders. 3.2 De stage-opdracht.
De globale opdrachtdefinitie voor de I6T stage in het najaar van 1993/1994 luidt als voIgt:
Schrijf een programma dat gegevens verwerkt en er een of meerdere rapPOrt(en) van genereert. Deze gegevens zijn afkomstig van het data-acquisitie programma. Extra stage opdracht die in overleg met de opdrachtgever is geformuleerd luidt als voIgt:
Controleer het acquisitie-gedeelte en omschrijf wat er aan dient te worden veranderd. Aan deze opdracht zitten de volgende randvoorwaarden: 1. Het programma moet zo geschreven worden dat de schermafhandeling gelijk is aan de schermafhandeling van programma's die al eerder in dit Laboratorium voor Omvormtechnologie geschreven werden. 2. Het programma moet gebruik maken van de libraries die voor een soortgelijk programma zijn ontwikkeld (zie ook VERSTRAELEN LIT. [8] en van de WERFF LIT. [19]. 3. Het programma moet dezelfde structuur hebben als versie 1.00 van het programma (met eventueel hier en daar een kleine aanpassing). 4. Het programma moet gebruikersvriendelijker zijn dan deze versie 1.00.
- 21 -
5. 6. 7.
Het verwerkings-programma dient onafhankelijk te werken van het data-acquisitie programma. Het verwerkingsgedeelte is bedoeld voor een specif iek persproef. Het programma moet in Turbo Pascal versie 6.0 geschreven worden.
Randvoorwaarden 1, 2 en 3 komen voort uit de wens dat aIle programma's, die binnen het Laboratorium voor omvormtechnologie ontworpen en geYmplementeerd worden een consistente programmaopbouw en scherm-Iayout hebben. Randvoorwaarde 4 komt voort uit het feit dat versie 1.00 nogal "ongemakkelijk" werkte. Randvoorwaarden 5 en 6 komen voort uit de wens twee programma's (gedeelten), die onafhankelijk werken, als een geheel te zien. Een aanvullende reden voor randvoorwaarde 5 is dat de acquisitie en verwerking op verschillende tijdstippen en/of verschillende plaatsen (bijvoorbeeld een externe acquisitie en een interne verwerking op de TUE in het Laboratorium voor Omvormtechnologie) kan plaatsvinden. Aanvulling randvoorwaarde 6 : Het is de bedoeling dat het acquisitieprogramma voor verschillende soorten proeven gebruikt kan worden, terwijl het verwerkingsgedeelte specifiek voor een type persproef bedoeld is. Randvoorwaarde 7 wordt gesteld omdat wijzigingen (die wenselijk danwel noodzakelijk zijn) door een medewerker van het laboratorium aangebracht kunnen worden. Als het programma in een andere programmeertaal geschreven zou worden, zou voor elke wijziging een beroep op derden gedaan moeten worden, die de andere programmeertaal kent. oit kan tijdverlies veroorzaken. Voor het verwerkingsprogramma geldt verder: Oat de gegevens van het acquisitieprogramma ingelezen en verwerkt kunnen worden. Oat het gegevens over de proef, de pers (vaste en variabele gegevens) en berekeningsresultaten (zoals de totale arbeid, de maximaIe kracht, de totale procesweg, de deelproceswegen en nog enkele resultaten) op het scherm kan weergeven. Oat er subsets van de metingen nader bekeken, verwerkt en uitgeprint moeten kunnen worden met automatische toekenning van een afgeleide perscode. Oat het de gegeven informatie moet ondersteunen met een grafiek. Oat de gegeven informatie in een meetverslag uitgeprint moet kunnen worden. Oat de grafiek aangepast moet kunnen worden (het nulpunt moet verplaatst kunnen worden, de resolutie moet aangepast kunnen worden, punten moeten aangepast danwel verwijderd kunnen worden en er moet een keuze gemaakt kunnen worden welke "kracht tegen welke weg" uitgezet wordt). - 22 -
Oat de verschillende Fs-grafieken opgeslagen kunnen worden met verschillende nauwkeurigheden. Oat een bestaande grafiek uitgewist moet worden zodra hij niet (meer) nodig is. Hetzelfde dient te gebeuren met een bestaande grafiek als deze nieuwe grafiek een grotere nauwkeurigheid heeft.
- 23 -
Hoofdstuk 4 - Wijzigingen t.o.v. bet Persproef-Analyse Programma versie 1.00.
Zoals reeds vermeld in het vorige hoofdstuk voldoet de huidige versie van het Persproef-Analyse Programma niet geheel aan de wensen van de opdrachtgever. Daarom is in overleg met de gebruikers van het Persproef-Analyse Programma (Ir. L.J .A. Houtackers en Dhr. M.Th. de Groot) besloten het bestaande programma op een aantal punten te wijzigen. De voornaamste wijzigingen zullen in de onderstaande tekst worden uitgewerkt. Deze W1Jz1gingen kunnen worden verdeeld in functionele en technische wijzigingen. Functionele wijzigingen hebben betrekking op wijzigingen in de mogelijkheden van het programma, en zijn dus zichtbaar voor de gebruiker. Technische wijzigingen betreffen wijzigingen in de manier waarop het programma intern zijn taak uitvoert. Deze zijn voor de gebruiker niet zichtbaar. 4.1 Functionele wijzigingen.
Aan de huidige versie van het Persproef-Analyse Programma dienen de volgende functionele wijzigingen te worden aangebracht: 1)
Het aanbrengen van een toegangscode.
2)
Het selecteren van een te verwerken persproef dient te worden vereenvoudigd.
3)
Het verhogen van de gebruikersvriendelijkheid.
4.1.1 Toegangscode.
Omdat het zich bij zowel het Persproef-Analyse Programma als ook de persproefgegevens niet handelt om vrij toegankelijke informatiebronnen, maar om informatie die is voorbehouden aan de medewerkers van het Laboratorium voor Omvormtechnologie, moet worden voorkomen dat onbevoegden zich toegang tot deze informatie kunnen verschaffen. Daarom zal het nieuwe Persproef-Analyse Programma worden voorzien van een toegangscode. Deze toegangscode is bekend bij de systeembeheerder. Het wijzigen van de toegangscode kan niet vanuit het PersproefAnalyse Programma zelf gebeuren. Hiervoor moet een afzonderlijk programma gebruikt worden, dat aIleen in het bezit is van de systeembeheerder, waardoor aIleen deze in staat is om de toegangscode te wijzigen. Dit gedeelte is reeds gerealiseerd in Trekproef-Analyse Programma, en kan binnen het Persproef-Analyse Programma ook gebruikt worden (zie van de WERFF LIT. [14] tot en met [20]).
-
24 -
4.1.2 selectie van de te verwerken persproef. In versie 1.00 van het verwerking-gedeelte moet de gebruiker een persproef selecteren uit een window met daarin een opsomming van de bestandsnamen (persproefcode nummer) van de op de datadisk(ette) aanwezige persproeven. Deze bestandsnamen geven echter onvoldoende informatie over de bijbehorende persproeven, hetgeen tot gevolg heeft, dat de gebruiker altijd de naam moet weten waaronder de te verwerken persproef op de datadisk(ette) is opgeslagen. Om dit probleem te verhelpen moet in versie 2.00 naast de opsomming van de bestandsnamen ook een aantal andere gegevens van de persproeven worden getoond, zoals materiaalsoort, herkomst materiaal enz. Hieraan kan een persproef op eenvoudige wij ze worden herkend. 4.1.3 Verhoging van de gebruikersvriendelijkheid. Om de gebruikersvriendelijkheid van het Persproef-Analyse Programma te verhogen moeten een aantal veranderingen worden aangebracht. In het Persproef-Analyse Programma versie 1.00 wordt vr1J willekeurig met de scherm-Iayout omgesprongen, hetgeen in een aantal gevallen tot onduidelijkheden leidt. Daarom is in deze nieuwe versie gekozen voor een schermindeling, die voor elk scherm eenduidig is. Tekst met een bepaalde betekenis bevindt zich nu altijd op dezelfde plaats op het scherm. Bovendien wordt elk scherm voorzien van een pad-aanduiding, waaraan men kan zien waar men zich in het programma bevindt. Tevens heeft elk scherm een schermnummer. Graf ische schermen moeten worden verbeterd t.o.v. programma versie 1.00 • Zo zal het wisselen van tekstscherm naar grafischscherm en visa versa zoveel mogelijk moeten worden beperkt. Verder zal op plaatsen waar dit nodig is het programma moeten worden voorzien van melding-windows, om de gebruiker attent te maken op belangrijke handelingen of mogelijke foutsituaties. Optredende fouten verschijnen in fout-windows. Elke fout is voorzien van een uniek nummer. Aan de hand van dit nummer kan in de gebruikershandleiding de fout in een foutenlijst worden opgezocht. Deze lijst bevat aIle mogelijke fouten en geeft van elke fout een nadere omschrijving en (indien mogelijk) een oplossing hiervoor. Tevens moet het programma zodanig worden geconstrueerd, dat de mogelijkheid aanwezig is tot het inbouwen van helpschermen op plaatsen waar dit nodig is. Deze moeten zorgen voor een nadere toelichting van de handeling waarmee de gebruiker bezig is. De helpschermen moeten met de F1-toets kunnen worden geactiveerd.
- 25 -
4.2 Tecbniscbe wijzigingen.
Naast de functionele wijzigingen moeten in het Persproef-Analyse Programma versie 2.00 tevens de volgende technische wijzigingen worden aangebracht: 1) 2) 3) 4)
Het Persproef-Analyse Programma moet zelfstandig meetrapporten met grafieken kunnen afdrukken. Er mag geen gebruik meer gemaakt worden van overlays. Het programma moet flexibeler zijn, hetgeen betekent dat het eenvoudiger op afwijkende computerconfiguraties kan worden gebruikt. Het ontwerp en de broncode moet beter gedocumenteerd worden.
4.2.1 Printen van rapporten met grafieken.
Het huidige Persproef-Analyse Programma is niet in staat om zelfstandig grafieken af te drukken. Hiervoor maakt het gebruik van een geheugen-resident programma, genaamd "Pizazz", dat voorafgaand aan het Persproef-Analyse Programma geladen moet worden. Deze methode heeft echter de volgende nadelen: Een poging om meer dan een grafiek uit te printen resulteert in het vastlopen van de computer. Indien het 'pizazz' -programma niet geladen is, heeft een poging tot het afdrukken van een grafiek tot gevolg dat het Persproef-Analyse Programma wordt afgebroken, waarbij aIle zich in het geheugen bevindende gegevens verloren gaan. Als mogelijke vervanger van het 'pizazz'-programma is inmiddels het programma 'Inset' op de markt verschenen.
-
26 -
Om deze problemen te voorkomen moet het nieuwe Persproef-Analyse Programma weI in staat zijn om zelfstandig grafieken af te drukken. Hiervoor is door Dhr. A. Bron in opdracht van het Laboratorium voor Omvormtechnologie een aparte Turbo-Pascal print-module ontworpen, die het mogelijk maakt om grafieken af te drukken op een HPGL plotter of een HP LaserJet III, en in de toekomst ook op aIle (aanwezige) typen NEC-printers. De grafieken in versie 1.00 waren te "zwaar" getekend. Dit moet worden verbeterd. 4.2.2 Ret qebruik van overlays.
Het verwerkings-gedeelte versie 1.00 maakt gebruik van overlays. Om onbekende redenen functioneert het overlay-mechanisme echter aIleen indien in het configuratiebestand van de computer (CONFIG.SYS) een aantal ongebruikelijke instellingen worden aangebracht, die bovendien zeer nadelig zijn voor aIle overige programma's, die op deze computer draaien. Zonder deze instellingen zal het verwerking-gedeelte bij het starten meteen vastlopen. versie 2.00 van het verwerkings-gedeelte zal geen gebruik meer maken van overlays, omdat de computers waarop het PersproefAnalyse Programma gebruikt gaat worden over een zOdanige hoeveelheid intern geheugen beschikken, dat het onnodig is om overlays te gebruiken. 4.2.3 Flexibiliteit.
Het huidige Persproef-Analyse Programma is niet flexibel in de betekenis van toepasbaarheid op een afwijkende computer-configuratie. Dit betekent dat als het programma hierop gebruikt gaat worden, de broncode op een aantal plaatsen veranderd en vervolgens opnieuw gecompileerd moet worden. Het betreft hier de volgende zaken: Drive/directory Persproef-Analyse Programma. Drive/directory persproeven. Drive/directory voor tijdelijke opslag. Soort afdrukapparatuur: HPGL plotter of HP LaserJet III. Toegangscode, nodig om het Persproef-Analyse Programma te kunnen starten. Overzicht externe opslagmedia (hoeveel en welke externe opslag-media bevinden zich op de huidige computer-configuratie). Het nieuwe Persproef-Analyse Programma zal zodanig moeten worden opgezet, dat het eenvoudig aan te passen is aan de eigenschappen van een afwijkende computer-configuratie, zonder dat het programma hiervoor opnieuw gecompileerd hoeft te worden. Het aanpassen van de bovengenoemde instellingen zal gebeuren op twee niveaus. Op het laagste niveau, het niveau van de gebruiker, zijn aIle zaken instelbaar die nodig zijn om dagelijks met het programma te kunnen werken, namelijk aIle drive/directories en afdrukapparatuur. Op het hoogste niveau, het niveau van de systeembeheerder, zijn zaken instelbaar waartoe de gebruiker niet gerechtigd is -
27 -
(wijzigen van de toegangscode) en technische zaken betreffende de installatie van het Persproef-Analyse Programma versie 2.00 (overzicht van de externe opslagmedia). Om te voorkomen dat de gebruiker instellingen op het hoogste niveau kan wijzigen, zal dit slechts kunnen gebeuren met behulp van een apart programma, dat aIleen in het bezit van de systeembeheerder is. AIle andere instellingen kunnen vanuit het Persproef-Analyse Programma versie 2.00 zelf worden gewijzigd. 4.2.4 Documentatie.
Tenslotte is er nog het feit dat de broncode van het bestaande Persproef-Analyse Programma onvoldoende gedocumenteerd is, waardoor de werking van de hierin beschreven functies en procedures niet of slechts ten dele duidelijk is. Verder is eigenlijk geen sprake van een goed ontwerp omdat er (bijna) geen ontwerp is, op enkele flowcharts na. Om het programmeren en onderhoud van versie 2.00 te vereenvoudigen, zal deze versie voorzien moeten worden van veelvuldig en duidelijk commentaar.
-
28 -
Hoofdstuk 5 - Uitvoeren van de stage-opdracht. In dit hoofdstuk wordt de voortgang van de te realiseren stageopdracht beschreven. Als eerste zal worden ingegaan op de belangrijke vraag of het verwerkings-gedeelte van het PersproefAnalyse Programma moet worden aangepast of geheel nieuw moet worden gemaakt. Vervolgens zal het ontwerp van het PersproefAnalyse Programma versie 2.00 aan de orde komen. Als laaste zal op het programmeren van dit programma worden ingegaan. 5.1 Keuze tussen aanpassen bestaande verwerkingsgedeelte of het geheel nieuw maken hiervan. De uit de stage-opdracht voortvloeiende wijzigen aan het bestaand Persproef-Analyse Programma versie 1.00, hebben betrekking op het verwerkings-gedeelte. Deze wijzigingen kan op twee manieren worden verwezenlijkt: 1 2
Het aanpassen van het bestaande verwerking-gedeelte van het Persproef-Analyse Programma versie 1.00. Het geheel nieuw programmeren van het verwerkings-gedeelte.
Om meer duidelijkheid te krijgen over de te maken keuze, is het bestaande verwerkings-gedeelte grondig geanalyseerd. Dit gebeurde door het opstellen van een lijst met aIle in het verwerkingsgedeelte gebruikte functies en procedures, waarbij met het oog op de in hoofdstuk 4 genoemde wijzigen, bij elk van de genoemde routines werd aangegeven of deze gewijzigd dient te worden en wat deze wijzigingen in hielden. De analyse van het verwerkings-gedeelte leverde de volgende resultaten op : Het programma is onvoldoende gedocumenteerd. Van veel van de routines is de verwerking niet direct (of in het geheel niet) duidelijk. Hierdoor wordt het aanpassen van het programma bemoeilijkt. Bovendien blijkt in een aantal gevallen de routines iets anders te doen dan het weinige commentaar aangeeft. Een aantal routines zijn dubbel opgenomen. De reden hiervoor is onbekend. Een nadeel hiervan is dat dit zeer verwarrend werkt indien men het programma wilt aanpassen. Het programma voldoet niet aan aIle eisen zoals de gebruiker ze wil hebben. Hierdoor zullen sommige stukken moeten worden geschrapt en nieuwe stukken voor moeten worden geschreven. uit het bovenstaande kan worden geconcludeerd, dat de kans op een correct werkend verwerkings-gedeelte, verkregen door aanpassingen van het bestaande programma, als klein mag worden beschouwd. Het alternatief voor het aanpassen van het verwerkings-gedeelte was het geheel nieuw realiseren hiervan. Dit heeft als voordeel dat optimaal aan de gebruikerseisen kon worden voldaan en tevens het programma duidelijk gestructureerd en goed gedocumenteerd kan worden opgebouwd. -
29 -
Aan het geheel nieuw ontwikkelen van het verwerkings-gedeelte zit echter ook een nadeel. Zo is er het risico dat het programma niet binnen de beschikbare tijd zou kunnen worden gerealiseerd. Uiteindelijk is, mede in overleg met de opdrachtgever, gekozen voor het geheel opnieuw ontwikkelen van het verwerkings-gedeelte. De redenen hiervoor waren : De wijzigingen die aan het bestaande verwerkings-gedeelte moesten worden aangebracht, waren dermate ingrijpend, dat de kans op een goed werkend programma binnen de gestelde tijd niet erg groot is. De nieuw te ontwikkelen versie van het verwerkings-gedeelte kan zodanig gestructureerd en gedocumenteerd worden dat als het programma niet afkomt binnen de gestelde tijd, een andere programmeur het kan afmaken. 5.2 Uitwerkinq van het essentieel model.
Bij het uitwerken van het essentieel model werd gekozen voor het opstellen van een uitgebreide data dictionary. De rede hiervoor was, dat in de bestaande versie van het Persproef-Analyse Programma vrijwel geen aandacht aan het definieren van de begrippen en de sYmbolen geschonken was. Dit leidde ertoe dat een aantal begrippen op verschillende wijze geYnterpreteerd werden. Tevens krijqt men door het opstellen van de data dictionary, zelf ook een beter inzicht in de opdracht. De opqestelde data dictionary is in zijn geheel door de opdrachtgever gecontroleerd, waardoor nu de betekenis van aIle sYmbolen en begrippen eenduidig vast liggen. Tijdens het maken van het essentieel model werd ook reeds een stap in de richting van het implementatie model gedaan, door van belangrijke handelingen in het programma de scherm-Iayout op te stellen. Door deze voor te leggen aan de toekomstige gebruiker van het programma kon men zich een beeld vormen van hoe het programma zou gaan functioneren. Dit leverde waardevolle suggesties op die weer verwerkt werden in het essentieel model. Ook kwam hieruit voort, dat de scherm-Iayout moest voldoen aan de standaard scherm-Iayout, vastgelegd door VAN DE WERFF LIT[16]. Het context schema volgens het ontwerp REINDERS LIT [23] is verbeterd op een aantal punten. Zo zijn er meer gebruikers-eisen in verwerkt en is de modellering correct gemaakt. 5.3 Uitwerkinq van het implementatie model.
Tijdens het uitwerken van het implementatie model zijn er een aantal dingen aan het licht gekomen. De schermopbouw van het verwerkings-gedeelte versie 1.00 was geheel niet volgens de standaard scherm-Iayout en kon daarom niet worden overgenomen. -
30 -
De opslag structuur van de gegevens in het verwerkings-gedeelte versie 1.00 (het opslaan in directories) is in dit ontwerp mee overgenomen. Dit in tegenstelling tot het ontwerp REINDERS LIT[23], waar alles onder een directory wordt weggeschreven. Een aantal schermen volgens het ontwerp REINDERS LIT[23] voldoen niet aan de gebruikers eisen. Ze zijn in overleg met de gebruiker veranderd, zodat ze weI aan de wensen voldoen. De opslagstructuur van verschillende bestanden volgens ontwerp REINDERS LIT[23] zijn veranderd en/of aangepast. Zo wordt het meetgegevens bestand anders opgebouwd. Het grootste probleem dat er aan het licht kwam, heeft betrekking op het wegschrijven van een verwerkte persproef. In het ontwerp zal hieraan aandacht worden geschonken. In het implementatie model is een apart hoofdstuk opgenomen over de verbetering van het acquisitie-gedeelte. Dit hoofdstuk is bedoeld om de volgende programmamaker op de hoogte te brengen van de wijzigen die aangebracht dienen te worden. Dit is in overleg met de opdrachtgever gedaan. 5.4 ontwikkelinq van het verwerkinqs-qedeelte.
Bij het ontwikkelen van het verwerkings-gedeelte moesten beslissingen over de volgende onderwerpen worden genomen : Opslag van de persproefgegevens in het inter geheugen en de 1 daarbij behorende data opslag. 2 Het bewerken van een Persproef per kracht weg combinatie. Deze onderwerpen zullen in de onderstaande paragrafen nader worden toegelicht. 5.4.1 Opslaq van de persproefqeqevens in het interqeheuqen en de daarbij behoorende data opslaq.
Voor de opslag van de meetgevens in het verwerkings-gedeelte is gebruikt gemaakt van een record en een of meerder dubbele lineaire lijsten. Het record bestaat uit het meetpunt en een markerings type. Bij het maken van de lijsten kwam het volgende probleem aan de orde. Er was een mogelijkheid om zes lijsten te maken of om twee lijsten te maken. Indien er met zes lijsten zou worden gewerkt, dan kon men aIle meetgegevens (drie krachten en drie wegen) in het interne geheugen opslaan. Na het bewerken zouden de gewijzigde meetgegegevens eenvoudig en snel kunnen worden weggeschreven. Een nadeel van deze methode is de benodigde hoeveelheid geheugen. Het verwerkings-gedeelte gebruikt een hoeveelheid geheugen. Daarbij komt nog dat, indien vanuit het hoofdmenu wordt gestart, dit programma ook een deel van het geheugen gebruikt. Indien men daarbij het vereiste optelt geheugen, dat nodig is voor het opslaan van aIle meetgegevens (drie krachten en drie wegen), - 31 -
optelt komt men in de problemen met het door MS-DOS beschikbare geheugen. Gebruikt men maar twee lijsten (een kracht en een weg), dan heeft men geen probleem met het geheugen. Hiertegenover staat weI dat als de gewijzigde meetgevens worden weggeschreven, de andere krachten en wegen dienen te worden opgehaald. Het wegschrijven zal daardoor meer tijd gaan kosten. Er is voor de laaste oplossing gekozen omdat het geheugen-tekort zwaarder weegt dan de langere tijd, nodig voor het wegschrijven. Het implementeren van de een dubbele lineaire gelinkte lijst voor de opslag van de meetgegevens kon op twee manieren gebeuren : 1 2
Gebruikmaking van de door Turbo Pascal geboden standaardvoorzieningen op het gebied van dynamisch geheugenbeheer. Gebruikmaking van een zgn. XMS-library.
Het dynamisch geheugenbeheer van Turbo Pascal is gebonden aan de MS-DOS geheugenlimiet van 640 Kb. Binnen dit geheugengebied bevinden zich echter ook MS-DOS en eventuele andere programma's, waaronder het verwerkings-gedeelte. Hierdoor blijft meestal ongeveer 200 Kb. geheugen over dat kon worden gebruikt voor de opslag van de meetgegevens. Een alternatief hiervoor is het gebruik van een XMS-library. Deze biedt de mogelijkheid om aIle in de computer aanwezige extra geheugen, in de vorm van extended memory, te gebruiken voor de opslag van de gegevens. Een nadeel van de XMS-library is dat deze minder eenvoudig te implementeren is dan het standaard dynamische geheugenbeheer van Turbo Pascal. Er is gekozen om het geheugenbeheer van Turbo Pascal zelf te gebruiken, aangezien maar met twee lijsten wordt gewerkt en dit niet voor geheugen-problemen (hoeveelheid geheugen) zorgt.
5.4.2 Ret bewerken van een Persproef per kracht weq combinatie. Het bewerken van het een perproef kan vanuit twee manieren worden gezien : 1) het bewerken per kracht-weg combinatie. 2) het bewerken van een totale persproef. Het bewerken van een perproef in het totaal heeft tot nadeel dat men na iedere bewerking de gehele set van files moet kopieren. Zo zal er voor elke grafiek een aparte zelfstandige perproef ontstaan. Dit zal op den duur leiden tot onduidelijkheid. Zo zal voor deze oplossinq meer schijfruimte nodig zijn. Gaat men bij het bewerken uit van een kracht-weg combinatie, dan kan men meerdere grafieken maken bij de persproef en zal er minder vaak een aparte "zelfstandige" persproef ontstaan. Er is gekozen voor de het bewerken per kracht-weg combinatie omdat deze manier minder opslag vergt en het geheel overzichtelijker blijft. - 32 -
5.5 ontwikkeling van het beheer bestanden programma. Vanwege tijdgebrek was het niet mogelijk om dit programma te realiseren.
-
33 -
Hoofdstuk 6 - Testen en invoeren.
Voor het testen van de in het Persproef-Analyse Programma gebruikte routines werd de volgende testprocedure gebruikt: 1
2
3
Nadat een functie of procedure gerealiseerd was, werd deze afzonderlijk getest d.m.v. een speciaal hiervoor geschreven testprogramma. Met dit testprogramma werd de interne werking van de desbetreffende routine (controles, if •• then constructies etc.) helemaal gecontroleerd. Indien een aantal routines later in het Persproef-Analyse Programma intensief moesten samenwerken, dan werden deze routines vervolgens als een groep getest d.m.v. een test programma. Nadat de routines m.b.v de bovenstaande testmethoden waren gecontroleerd, werden deze in het Persproef-Analyse Programma geYmplementeerd. Een laatste controle die daarna nog werd uitgevoerd, bestond uit het invoeren van meetgegevens van het Persproef-Analyse Programma versie 1.00 en het vergelijken van de resultaten.
Met het invoeren van het verwerkings-gedeelte van PersproefAnalyse Programma wordt nog een tijd in het lab van Omvormtechnologie gewacht. Eerst dient het acquisitie-gedeelte te worden verbeterd en te worden gekoppeld aan het verwerkings-gedeelte. De testprogramma's staan onder de sUbdirectory extra weggeschreven.
-
34 -
Hoofdstuk 7 - CODclusie.
Bij aanvang van deze stage-periode was de te realiseren opdracht geformuleerd als : II Het schrijven van het verwerkings-gedeelte van het Persproef-Analyse Programma aansluiten aan het door REINDERS LIT[22, 23] ontworpen acquisitie gedeelte". Na grondig bestuderen van dit gedeelte bleek dat het ontwerp niet voldeed aan de eisen van de gebruiker en niet aan de regels van de modellering. Daarom luidde de herschreven opdrachtomschrijving als voIgt : II Schrijf een programma dat gegevens verwerkt en er een of meerdere rapport(en} van genereert. Deze gegevens zijn afkomstig van het data-acquisitie programma ". Aangezien het ontwerp REINDERS LIT[22, 23] niet correct was, is er een nieuw ontwerp gemaakt. Er ligt nu dus een apart ontwerp van het verwerkings-gedeelte klaar. Tijdens dit ontwerpen ben ik tot de conclusie gekomen dat het acquisitie-gedeelte gedeeltelijk niet correct is ( o.a. de aansluiting van de twee programma's klopt niet). Daarom is de opdracht omschrijving voor de tweede maal uitgebreid met : II Controleer het acquisitie-gedeelte en omschrijf wat er aan dient te worden veranderd ". Deze tweede uitbreiding heeft pas in het verloop de stage plaats gevonden. De planning zoals die op tafel lag is niet gehaald. Zo is er voor het ontwerpen van zowel het Essentieel model als het Implementatie model te weinig tijd uitgetrokken. De meeste tijd is verloren gegaan door de discussie over het wegschrijven van een bewerkte persproef (2 a 3 weken) Deze weken waren niet gepland. Er ligt nu nog een blok open en dit is het programmeren van het print gedeelte. In overleg met de opdrachtgever is afgesproken dat deze blok later zal worden afgemaakt. Aan het einde van deze stage-periode kan men stellen dat de te realiseren stage-opdracht te omvangrijk was om binnen de gestelde tijd te verwezenlijken. Toch is het voornaamste gedeelte voltooid, namelijk dat men perproeven kan bewerken en dat deze bewerkingen worden opgeslagen. Tot slot van dit verslag wil ik opmerken dat de stage in het zesde semester voor het Laboratorium voor omvormtechnologie van de Technische Universiteit mij goed is bevallen. De omgang met en de behulpzaamheid van de medewerkers, als ook de werksfeer werden door mij als prettig ervaren. De beoogde doelen (vermeld in de samenvatting) van de stage zijn ruimschoots gehaald.
-
35 -
Literatuurlijst. [ 1]
W.A.J. van den Eijnde.
"De calibratie en de proef-opstelling van de PC-718-Labcard,HS-Venlo Stageverslag 2,Eindhoven, Maart 1990, WPA 0862."
[ 2]
W.A.J. van der Eijnde.
"Een universeel data-acquisitie systeem voor high performance PCL-718-CS kaart, versie 1.00, HS-Venlo stageverslag 1, Eindhoven, Juni 1990, WPA 0893."
[ 3]
W.A.J. van der Eijnde.
"Een universeel data-acquisitie systeem voor high performance PCL-718-CS kaart, versie 1.00, User Manual, HS-Venlo Stageverslag 2, Eindhoven, Juni 1990, WPA 0894."
[ 4]
W.A.J. van der Eijnde
"Een universeel data-acquisitie systeem voor high performance PCL-718-CS kaart, versie 1.00, Listing, HS-Venlo Stageverslag 3, Eindhoven, Juni 1990, WPA 0895. "
[ 5]
W.A.J. van der Eijnde
"Een universeel verwerkingssysteem voor het bepalen van FS-krommen, versie 1.00, Technical Manual, HS-Venlo Stageverslag 4, Eindhoven, Juni 1990, WPA 0896."
[ 6]
W.A.J. van der Eijnde
"Een universeel verwerkingssysteem voor het bepalen van FS-krommen, versie 1.00, User Manual, HS-Venlo Stageverslag 5, Eindhoven, Juni 1990, WPA 0897."
[ 7]
W.A.J. van der Eijnde
"Een universeel verwerkingssysteem voor het bepalen van FS-krommen, versie 1.00, Listing, HS-Venlo Stageverslag 6, Eindhoven, Juni 1990, WPA 0898."
-
36 -
[ 8]
W.J.C.M Verstraelen.
"Hercalibratie van de PCL-718 LAB-CARD, Supplement rapport WPA 0862, HS-Heerlen-HIO, Stageverslag 1, Eindhoven, April 1992, WPA 1298."
[ 9]
W.J.C.M Verstraelen.
"Data acquisitie programma Trekproef,PC-DT100 versie 3.02 voor Tensil Trekbank, HS-Heerlen-HIO stageverslag 2, Eindhoven, Juni 1992, WPA 1351."
[10]
W.J.C.M Verstraelen.
"Data acquisitie programma Trekproef PC-DT100 versie 3.02, Listing sources, HS-Heerlen-HIO Stageverslag 3, Eindhoven, Juni 1992, WPA 1352."
[11]
W.J.C.M Verstraelen.
"Data acquisitie programma Trekproef PC-DT100 versie 3.02, Listing bibliotheek units, HS-Heerlen-HIO Stageverslag 4, Eindhoven, Juni 1992, WPA 1353."
[12]
W.J.C.M Verstraelen.
"Data acquisitie programma Trekproef PC-DT100 Versie 3.02, Technisch ontwerp, HS-Heerlen-HIO Stageverslag 5, Eindhoven, Juni 1992, WPA 1354."
[13]
W.J.C.M Verstraelen.
"Data acquisitie programma Trekproef PC-DT100 versie 3.02, User manual, HS-Heerlen-HIO Stageverslag 6, Eindhoven, Juni 1992, WPA 1364."
-
37 -
[14]
C.P.I. van de Werff.
"Trekproef analyse programma PC-DT100 versie 3.02, Introductie, HS-Heerlen-HIO- Stageverslag 1, Eindhoven, Januari 1993, WPA 1450."
[15]
C.P.I. van de Werff.
"Trekproefanalyse Programma PCDT100, versie 3.02, Het Essentieel Model, HS-Heerlen-HIO-Stageverslag 2, Eindhoven, Januari 1993, WPA 1451."
[16]
C.P.I. van de Werff.
"Trekproefanalyse Programma PCDT100, versie 3.02, Het Implementatie Model, HS-Heerlen-HIO-Stageverslag 3, Eindhoven, Januari 1993, WPA 1452."
[17]
C.P.I. van de Werff.
"Trekproefanalyse Programma PCDT100, versie 3.02, Analyse, HS-Heerlen-HIO-Stageverslag 4, Eindhoven, Januari 1993, WPA 1453."
[18]
C.P.I. van de Werff.
"Trekproefanalyse Programma PCDT100, versie 3.02, Sourcecode Programma onderdelen, HS-Heerlen-HIO-Stageverslag 5, Eindhoven, Januari 1993, WPA 1454."
[19]
C.P.I. van de Werff.
"Trekproefanalyse Programma PCDT100, versie 3.02, Sourcecode Library bestanden, HS-Heerlen-HIO-Stageverslag 6, Eindhoven, Januari 1993, WPA 1455."
-
38 -
[20]
C.P.I. van de Werff.
"Trekproefanalyse Programma PCDT100, versie 3.02, Gebruikershandleiding, HS-Heerlen-HIO-Stageverslag 7, Eindhoven, Januari 1993, WPA 1456."
[21]
P.J.M. Reinders.
"Persproef-Analyse Programma versie 2.00, Introductie, HS-HIO-Heerlen - Stageverslag 1, Eindhoven, Juli 1993, WP 1545."
[22]
P.J.M. Reinders.
"Persproef-Analyse Programma versie 2.00, Essentieel Model, HS-HIO-Heerlen-Stageverslag 2, Eindhoven, Juli 1993, WP 1546."
[23]
P.J.M. Reinders.
"Persproef-Analyse Programma versie 2.00, Implementatie model, HS-HIO-Heerlen-Stageverslag 3, Eindhoven, Juli 1993, WP 1547."
[24]
P.J.M. Reinders.
"Persproef-Analyse Programma versie 2.00, Gebruikershanleinding, HS-HIO-Heerlen-Stageverslag 4, Eindhoven, Juli 1993, WP 1548."
[25]
P.J.M. Reinders.
"Persproef-Analyse Programma versie 2.00, Source-code Libraries, HS-HIO-Heerlen-Stageverslag 5, Eindhoven, Juli 1993, WP 1549."
[26]
P.J.M. Reinders.
"Persproef-Analyse Programma versie 2.00, Source-code Programma, HS-HIO-Heerlen-Stageverslag 6, Eindhoven, Juli 1993, WP 1550."
-
39 -
[27]
anoniem.
"PCLS-718-P Data Acquisitie Card, Pascal support Package, User's manual, Taiwan, December 1988."
[28]
anoniem.
"PC-lAbDas Data Acquisitie Softtware, User's manual, Taiwan, July 1988."
[29]
anoniem.
"PCLS-818-P Data Acquisitie Card, Pascal and C Support Package, User's manual, Taiwan, July 1990."
-
40 -
')
'}
l,,)
Technische Universiteit Eindhoven Faculteit der Werktuigbouwkunde Vakgroep produktietechnologie en -automatisering Laboratorium voor Omvormtechnologie
Persproef-Analyse Programma versie 2.00 Essentieel Model.
R.J.J. de Coninck HS-Heerlen-HIO-Stageverslag 2 Sept. 1993 VF-code: D2
WPA 120002
Stageperiode
16-08-93 tim 16-01-94
Begeleider TU Eindhoven Begeleider Hogeschool Heerlen
Ir. L.J.A. Houtackers Ir. A.J. Goos
Adressenlijst.
stageverlenend bedrijf:
Technische Universiteit Eindhoven
Bezoekadres:
Den Dolech 2 5612 AZ EINDHOVEN 040 - 479111
Postadres:
Postbus 513 5600 MB EINDHOVEN
Interne begeleider:
ire L.J.A. Houtackers
Prive:
Nachtegaallaan 2 5731 XR MIERLO (tel) 04927 - 62281 (fax) 04927 - 62648
Intern:
TU Eindhoven W-Hoog 0.119 040 - 474521 040 - 448665
Externe begeleider:
(tel) (fax)
ire A.J. Goos
Prive:
Frederikagracht 5 6465 CR KERKRADE 045 - 423163
Intern:
Dr. Jaegersstraat 40 6417 CK HEERLEN 045 - 734892 (tel) (fax) 045 - 719790
stagiair:
R.J.J. de coninck
Prive:
Geleenstraat 66 6155 NO PUTH 04493 - 1157
Intern:
W-Hal 1.44 040 - 473648
-2-
Lijst van fiquren.
Afbeelding Afbeelding Afbeelding Afbeelding Afbeelding Afbeelding Afbeelding Afbeelding
. . . . . . ·· ·· ·· · · · · · · 0 Perproef Analyse systeem · · · · · · 2 verwerkinq . . . . . · · · · · · · · · · 2.2 Bewerken van meetqeqevens
1 Indelinq Essentieel model. 2 Context schema
3 4 5 6 7 8
DFO OFO DFO DFO 2.2.1 Bewerken van de qrafiek OFO 2.3. Produceer rapporten. Verklarinq voor Arbeitsqinqe in pers.
··· · · ·
-3-
·· ·· ··
-10-14-16-17-17-18-18-20-
Inhoudsopqave.
Adressenlijst.
-2-
Voorwoord • . •
-3-
samenvatting.
-4-
Lijst van figuren.
-5-
Inhoudsopgave.
. . . .- . . .
-6-
Verklarende woordenlijst. Inleiding .
-8-
. .. . .. . . . . . ... . . . . . . .
-9-
Hoofdstuk 1 1.1
1.2 1.4
Beschrijving van de gebruikte ontwerpmethode voor het essentieel model Het essentieel model. • . • . • . • 1.1.1 Het omgevingsmodel. • •• 1.1.1.1 Doelomschrijving. . . . 1.1.1.2 Het context schema. 1.1.1.3 Gebeurtenissenlijst. Het gedragsmodel. • . . . • 1.3 De data dictionary. . . . . . . Proces-specificaties. • • .
Hoofdstuk 2
-10-10-11-11-11-12-12-13-13-
Ontwerp essentieel model van het Persproef-Analyse Progamma • • • -142.1 Omgevingsmodel. • . . . . • . . . . . -142.1.1 Doelomschrijving. . • . . .. . • • -142.1.2 Context schema. . • • . . . . . • . -142.1. 3 Gebeurtenissenlijst... -152.2 Gedragsmodel........... . . . -162.3. Data dictionary . . • . . . . . . . . . . . -192.3.1 Datastore Pers- en proefgegevens -192.3.2 Datastore Meetgegevens ..• . . • . -302.3.3 Datastore Grafiekgegevens -312.3.4 Datastore pers • . • . -332.3.5 Rapporten • . . • ..• . • • -372.3.6 Naam persproef. . • . • • . . . . • . -392 • 3 . 7 Reduceergegevens . •...••. . . . - 392.3.8 Grafiek ..•. . . . . . • . -402.3.9 Datastore grafiek-keuze . . . . • . -412. 3 . 10 Datastore perproef • . . ...•. -412.4 Proces-specificaties . • . • • • . . • • . . • • -422.4.1 Proces 2.1 selecteren grafiek & persproef.-422.4.2 Proces 2.2 bewerken meetgegevens. -422.4.3 Proces 2.3 produceer rapporten • . . • • -432.4.4 Proces 2.2.1 bewerken van de grafiek. -442.4.5 Proces 2.2.2 bereken & en toon model paramete•• 2.4.6 Proces 2.2.1.1 aanmaken subset. -452.4.7 Proces 2.2.1.2 assen aanpassen. . . • . -462.4.8 Proces 2.2.1.3 grafiek inzien. . . • • . -462.4.9 Proces 2.3.1 maak tabel-meetparen. -46-4-
2.4.10 Proces 2.3.2 maak meetrapport • . . • • 2.4.11 Proces 2.3.3 maak grafiek rapport • . • • • 2.4.12 Proces 2.3.4 maak instel gegevens rapport. 2.4.13 Proces 2.3.5 maak pers gegevens rapport.
-46-47-48-48-
Hoofstuk 3 Wijzigingen van het Acquisitie deel. .
-49-
Literatuurlijst • • • • . • . • • • • . •
-50-
-5-
Verklarende woordenlijst.
Krachtsignaal
·
Een signaal, dat afkomstig is van een krachtsensor op een meetpunt in een pers. Dit signaal is een elektrische weergave (in Volt) van de kracht, die de stempel van de pers op het proefobject uitvoert.
Wegsignaal
·
Een signaal, dat afkomstig is van een wegsensor op een meetpunt in een pers. Dit signaal is een elektrische weergave (in Volt) van de weg die de stempel aflegt om een bepaald proces te realiseren onder invloed van een kracht.
Schaalweg
De waarde, die gekoppeld wordt aan het maximale signaal, dat binnenkomt over een kanaal. Hierdoor kan het elektrische signaal omgezet worden naar een weg (in millimeter = mm) .
Schaalkracht
De waarde, die gekoppeld wordt aan het maximale signaal, dat binnenkomt over een kanaal. Hierdoor kan het elektrische signaal omgezet worden naar een kracht (in kilo Newton = kN).
DFD
··
Data Flow Diagram
-6-
IDleidinq.
Gedurende de stage zesde semester van augustus 1993 tot januari 1993 van de Informatica-opleiding van de Hogeschool Heerlen, zal voor het Laboratorium voor omvormtechnologie van de Technische Universiteit Eindhoven het daar ontwikkelde Persproef-Analyse Programma, gebruikt voor het verkrijqen van proceseigenschappen van metalen, moeten worden aangepast. Het aanpassen heeft tot gevolq dat een nieuw ontwerp gemaakt dient te worden. oit ontwerp kan worden gesplitst in twee delen, namelijk het essentieel model en het implementatie model. Het programma bestaat uit twee delen 1) Acquisitie- en 2) Verwerkings-gedeelte. Het Acquisitie gedeelte is al door REINDERS LIT [1, 2, 3] ontworpen en zal indien naar verwezen worden. In dit verslaq wordt het essentieel model behandeld van het verwerkings-qedeelte, terwijl het implementatie model in een afzonderlijk verslaq zal worden uitgewerkt. Het eerste hoofdstuk geeft in het kort een beschrijving van de gebruikte ontwerpmethode. Hierin wordt aanqegeven uit welke onderdelen het essentieel model is opgebouwd en wat deze inhouden. In het tweede hoofdstuk wordt de in hoofdstuk een omschreven ontwerpmethode gebruikt om een ontwerp te maken voor het verwerkings-gedeelte van het Persproef-Analyse Programma. In het derde hoofdstuk staan wijzigen die nog moeten worden doorqevoerd in het Aqcuisitie gedeelte. Tijdens de stageperiode zijn de volgende verslagen qeschreven: Stageverslag 1: aug. 1993, WPA xxxx - Introductie. Stageverslag 2: sep. 1993, WPA xxxx - Essentieel model. stageverslag 3: okt. 1993, WPA xxxx - Implementatie model. stageverslag 4: jan. 1994, WPA xxxx - Gebruikers handleiding. Stageverslag 5: jan. 1994, WPA xxxx - Source-code programmaonderdelen PersproefAnalyse Programma versie 2.00.
stageverslag 6: jan. 1994, WPA xxxx - Source-code librarybestanden PersproefAnalyse Programma versie 2.00.
-7-
Hoofdstuk 1
Beschrijving van de gebruikte ontwerpmethode voor het essentieel model.
De voor dit programma gebruikte ontwerpmethode is gebaseerd op de Yourdon-ontwerptechniek. Deze verdeelt het ontwerp in een aantal onderdelen, die achtereenvolgens moeten worden uitgevoerd. Het ontwerp kan worden verdeeld in twee hoofd-onderdelen: 1) Het essentieel model (beschrijving van het te realiseren systeem). 2) Het implementatie model (hoe wordt het essentieel model op een bepaald computersysteem geimplementeerd). In dit verslag zal uitsluitend worden ingegaan op het essentieel model. Het implementatiemodel wordt in een afzonderlijk verslag uitgewerkt. 1.1
Het essentiee! model.
Men kan het essentieel model als voIgt omschrijven:
Het essentieel model is een model dat aangeeft wat een systeem moet doen om aan de eisen van de gebruiker te voldoen, maar daarbij zo weinig mogelijk zegt (in het ideale geval zelfs niets) over hoe het systeem geXmplementeerd moet worden. Het essentieel model is als voIgt opgebouwd:
doelomschrijving omgevingsmodel ~-- context schema gedragsmodel
gebeurtenissenlijst
essentieel model data dictionary
processpecificaties
Afbeelding 1 Indeling Essentieel model.
1
Hoofdstuk 1 is ontleend aan REINDERS LIT. [2] -8-
1.1.1
Bet omqevinqsmodel.
Het environmental model legt de grens vast tussen het systeem en de rest van de wereld (dat wil zeggen de omgeving waarin het systeem bestaat). Het bestaat uit een korte beschrijving van het doel van het systeem, een context schema en een lijst met gebeurtenissen. 1.1.1.1 Doelomschrijvinq.
Het eerste onderdeel is een beknopte omschrijving van het doel van het systeem. Deze is bedoeld om iedereen die niet rechtstreeks bij de ontwikkeling van het systeem betrokken is, een globaal beeld over het te realiseren systeem te verschaffen. 1.1.1.2 Bet context schema.
Het context schema belicht een aantal belangrijke eigenschappen van het systeem: De mensen, de organisaties of de systemen waarmee het te realiseren systeem communiceert. Deze worden terminators genoemd. De gegevens, die het te realiseren systeem ontvangt en die verwerkt dienen te worden. De gegevens die door het te realiseren systeem geproduceerd worden en naar de buitenwereld verzonden worden. De grens tussen het systeem en de buitenwereld. Het context schema bevat de volgende onderdelen: Het te modelleren systeem. Dit wordt in het schema weergegeven als een cirkel. Terminators: dit zijn externe entiteiten (personen, organisaties, andere computersystemen) die met het systeem communiceren. Ze worden in het schema als rechthoeken weergegeven. Informatiestromen: deze vertegenwoordigen de interface (verbinding) tussen het systeem en de wereld daarbuiten. In het schema worden deze weergegeven in de vorm van pijlen. De richting van de pijlen geeft aan of de informatie naar het systeem toe gaat of uit het systeem afkomstig is. Data stores: gegevensverzamelingen, waarin gegevens voor een kortere of langere tijd bewaard worden. Een datastore wordt in het schema aangegeven door een naam geplaatst tussen twee horizontale lijnen. Er wordt onderscheid gemaakt tussen interne en externe stores. Interne stores zijn gegevensverzamelingen die aIleen binnen dit systeem gebruikt worden. Externe stores zijn gegevensverzamelingen die van buiten af het systeem binnen komen.
-9-
1.1.1.3 Gebeurtenissenlijst.
De gebeurtenissenlijst is een lijst die een beschrijving geeft van de 'stimuli' die afkomstig zijn van de buitenwereld en waarop het systeem respons dient te geven. Elke gebeurtenis is voorzien van een aanduiding F, C of T om aan te geven of deze gebeurtenis een stroomaspect (Engels : flow-oriented), een besturingsaspect (Engels: control) of een tijdsaspect heeft. Een stroomgerichte gebeurtenis wil zeggen dat het systeem zich bewust wordt van een bepaalde gebeurtenis doordat er een gegevenspakket arriveert. Een voorbeeld hiervan is de gebeurtenis 'Gebruiker voert de proefgegevens in' Een besturingsgerichte gebeurtenis geeft aan het systeem de opdracht welke handeling als volgende moet worden uitgevoerd. Een voorbeeld hiervan is de gebeurtenis 'Gebruiker wil een standaard meetrapport zonder FS-kromme'. Een tijdgerichte gebeurtenis geeft aan dat een bepaalde handeling op een zeker (van tevoren te bepalen) tijdstip plaatsvindt of betrekking heeft over een bepaalde tijdsperiode. Een voorbeeld hiervan is de gebeurtenis 'AID-convertor stuurt meetgegevens'. 1.2
Bet gedragsmodel.
Het behaviour model beschrijft het gewenste inwendige gedrag van het systeem voor een succesvolle wisselwerking met de omgeving. Dit model is opgebouwd uit een aantal data-flow diagrammen, afgekort DFD, op een of meerdere niveaus. De inhoud van deze DFD's is gebaseerd op de gebeurtenissenlijst. Een data-flow diagram bestaat uit de volgende componenten: Data-transformatie (DT): hierin wordt invoer omgezet in een bepaalde vorm van uitvoer. Deze worden weergegeven in de vorm van cirkels. Data stores: gegevensverzamelingen, waarin gegevens voor een kortere of langere tijd bewaard worden. Deze worden op dezelfde manier aangegeven als in het context schema. Informatiestromen: geven aan waar bepaalde informatie verwerkt of geproduceerd wordt. De pijl geeft aan of de informatie de DT binnenkomt of verlaat.
-10-
1.3
De data dictionary.
De data dictionary is een georganiseerde lijst met aIle gegevenselementen die voor het systeem van belang zijn. Deze gegevenselementen komen overeen met de informatiestromen en de datastores in het behaviour model. De gegevenselementen worden op de volgende wijze gedefinieerd: De betekenis van elk elementair gegevenselement moet worden beschreven. Van samengestelde gegevensstromen en datastores moet de precieze samenstelling worden gegeven. In de data dictionary wordt gebruik gemaakt van de volgende notatiewijze:
=
is samengesteld uit en ( ) optioneeI (kan aan- of afwezig zijn) [ .. ] kies uit een aantal alternatieven x{ •• }y herhaling: minimaal x keren, maximaal y keren commentaar *.. * I separator tussen alternatieven in [ •• ] constructie I @ sleutelveld in een datastore X Y ... z alles tussen x en z met stapgrootte gelijk aan y x (bv aIle even getallen tussen 0 en 10: 0,2 .•• 10) +
1.4
..
proces-specificaties.
Het doel van een proces-specificatie (in andere ontwerpmethodes ook weI minispecs genoemd) is precies te definieren wat met de invoer moet gebeuren om deze te transformeren in de gewenste uitvoer. Hiervoor wordt de werking van het proces op een eenvoudige wijze beschreven. Het beschrijven van de werking kan op verschillende manieren gebeuren, namelijk door het gebruik van pseudo-code, pre/postcondities, beslissingstabellen of stroomschema's. Van elke elementaire data-transformatie (d.i. een data-transformatie die niet is samengesteld uit andere data-transformaties op een lager niveau) in de DFD's dient een proces-specificatie te worden opgesteld.
-11-
Hoofdstuk 2
antwerp essentieel model van het Persproef-Analyse progamma
Hieronder volgen het environmental model, het behaviour model, de data dictionary en de proces-specificaties van de nieuwe versie (versie 2.00) van het Verwerkings gedeelte van het Persproef-Analyse Programma, welke samen het essentieel model vormen. 2.1 omgevingsmodel. 2.1.1 Doelomschrijving.
Het Persproef-Analyse systeem heeft als doel het registreren en bewaren van persproefgegevens, en het later kunnen verwerken van deze gegevens tot procesparameters, waarbij een en ander moet kunnen worden weergegeven in de vorm van grafieken en rapporten. 2.1.2 Context schema.
h Gebruiker
~
VerwijderJHemoem hestand AID Converter werkt Diet
~
Pets Uitzettenl.Aanzetten arafiek. tabel Inh ve edium. Stuten Persproef Invoeraegevens Keuze rapport, grafiek
-
AID Converter
Afbeeldinq 2 Context schema
-12-
(/~;:f\ \.
Sy~m
meetgegevens (F-8 3x) Bersturing
AID Converter
2.1.3
Gebeurtenissenlijst
1 Gebruiker voert gegevens in. Deze gegevens kunnen zijn : proef-randvoorwaarden (F). proefgegevens (F). persgegevens (F). additionele gegevens (F). reduceergegevens in (F). naam perproef (F). 2 Gebruiker start persproef (C). 3 Gebruiker wil overzicht modelparameters (C). 4 Gebruiker wil grafiek bewerken. (F) Dit bewerken kan bestaan uit : Gebruiker wil een subset maken van de orginele meetpunten van een bepaalde persproef, door aIle niet relevante meetpunten te wissen en deze opnieuw te verwerken (F). Gebruiker wil de assen van de grafiek aanpassen. 5 Gebruiker maakt een keuze-grafiek (C). 6 Gebruiker wil een rapport (C). Mogelijke rapporten zijn : standaard meetrapport (C). standaard meetrapport met FS-kromme (C). standaard meetrapport met FS-kromme en FS-meetgegevenstabel (C). standaard meetrapport met FS-kromme, FS-meetgegevenstabel , vaste- en variabele persgegevens en instelgegevens (C). compleet rapport (C). Opmerking : weI rapport valt onder de keuze rapport. 7 Gebruiker wil een inhoudsopgave van aIle persproeven die op een bepaald medium zijn opgeslagen (C). 8 AID convertor stuurt meetgegevens (FIT). 9 AID convertor werkt niet (niet aangesloten, staat niet aan) (C) •
-13-
2.2 Gedraqsmodel keuze grafiek grafieken tabel rapporten
mpport keuze
f------.
modelparameters
naam peISpl'Oef reduceergegeveDS
_-
meetgegevens -"'-----.---""'-------" pers- en .......... afd converter bestming werktniet
inhoudsopgave opslagmedium
afd converter
starten
start proof
pemproef
pers uitzeUeo ~---+
additionele gegeveDS initialisatie afd converter
pers database
pelS- en
naam persproef
proefgegevens en proeftandvoorwaarden
Afbeeldinq 3 DFD 0 Perproef Analyse Bysteem
Ret antwerp van het acquisitie-gedeelte van het Perspraefanalyse Programma staat beschreven in rapport WPA 1546 'Essentieel Model', gemaakt door P.J.M. Reinders.
Uitwerkinq DFD 1 Acquisitie
-14-
persproef rapporten
rapportkeuze
~-
persproef
meet
gegevens
grafiek-keuze
grafiek-buze
peIS- en proefgegevens reduceer gegevens
tabel
grafiek-buze
grafiekgegevens
---i
persproef modelparameters
grafiek
meetgegevens
Afbeelding 4 DFD 2 verwerking
meetgegevens
tabel
grafiek gegevens
bereken 8i
toon
model parameters
2.2.2
Afbeelding 5 DFD 2.2 Bewerken van meetgegevens
In afbeelding 5 gaat uit iedere data-transformatie twee stores, een grafiek-keuze en perproef, naar binnen. nit zal ook gelden voor afbeelding 6 en 7.
-15-
beginwaarde
eindwaarde
wispunt
----+(
tabel
grafiekgegevens meetgegevens assen positie
grafiek
Afbeeldinq 6 DFD 2.2.1 Bewerken van de qrafiek
lapport
rapport
maak grafiek rapport 2.3.3
maak
meetrapport 2.3.2
meet gegevens
pers- en proefgegevens
maak tabel-
maak el gegeve rapport 2.3.4
maak: pers gegevens '-------..( rapport 2.3.'
meetparen 2.3.1 rapport
Afbeeldinq 7 DFD 2.3. Produceer rapporten.
In afbeelding 7 gaat in iedere data-transformatie een data-flow rapport-keuze naar binnen.
-16-
2.3. Data dictionary
Hieronder voIgt een lijst van aIle gegevenselementen die voor het systeem van belang zijn. Deze gegevenselementen komen overeen met de informatiestromen en de datastores in het behaviour model. 2.3.1
Datastore Pers- en proefgegevens (extern).
Gegevenselement Datastore pers- en proefgegevens
Definitie
= * Deze waarden zijn de default waarden
= variabele persgegevens
= * Variabele gegevens over de pers.
=
yare Schon gegevens
voor de huidige proef. Als ze aangepast worden, veranderen ook de default waarden voor de volgende proef * Variabele Persgegevens + Proefgegevens + Proef-randvoorwaarden
=* =
Persgegevens die kunnen verschillen van proef tot proef (o.a. procestijd, drukken, andere arbeidsgang, etc). * [var. Schon gegevens I var. SuK 630 gegevens I yare SuK 20 gegevens I yare Muller gegevens I var. Avery gegevens I yare Erichsen gegevens ]
Variabele persgegevens voor de Schonpers * Arbeitsgange in pers + Druckhaltezeiten + Ausblasezeit + Dampfung auf V2 + Vorschub + Kurzhub ein + Einrichten ein + Tippen auf + Trekkussen + Auswerfer maximale procestijd + Schnittschlag Dampfung schaltpunkt + Werkzeugsicherung druk + Festanschlagverstellung slag + perskracht max + uitwerperkracht max + Slagbegrenzing + Vorschub synchronsteuerung punt + luchtpunt van blazen + uitwerper/Trekkussen punt van actie
-17-
Arbeitsgange in pers
= * De wegen die de stempel in totaal aflegt. * = Arbeitsgang 1 in pers + Arbeitsgang 2 in pers
Arbeitsgang 1 in pers
= * De weg van de stempel tot vlak boven het materiaal. Hierbij wordt er een relatief grote weg afgelegd met een relatief kleine kracht (zie figuur 8 oppervlakte A1). Gemeten in millimeter. *
Arbeitsgang 2 in pers
=
* De weg van de stempel vlak boven het
materiaal tot het onderste dode punt. Hierbij wordt er een relatief kleine weg afgelegd met een relatief grote kracht (zie figuur 8 oppervlakte A2). Gemeten in millimeter. *
s (mm) Arbeid • kracbt x weg
De oppervlakten Al en A2 zijn gelijk (gelijke arbeid), aileen is er voor Al een grotere weg afgelegd dan voor A2 (waar een grotere kracht is uitgeoefend).
Afbeeldinq 8 Verklarinq voor Arbeitsqinqe in pers.
Druckhaltezeiten
=* =
Druckhaltezeit aan
Het al dan niet gebruiken van een Druckhaltezeit en de duur (als gebruikt wordt). * Druckhaltezeit aan + Druckhaltezeit
= * Is de druckhaltezeit aan of uit * =
[aan I uit ]
-18-
Driickhaltezeit
= * De tijd dat de stempel in dezelfde
positie blijft in het onderste dode punt, in seconden. *
Ausblasezeit
= * De tijd dat de blaasinrichting die
het proefsubject uit de machine verwijdert, aan moet staan, in seconden.
* Dampfung auf V2
= * De stoot die de persinrichting na het scheuren van het werkstuk ondervindt wordt gedempt door er een contracilinders te plaatsen. Hiermee wordt ingesteld of deze demping aan staat en zo ja, hoe lang. * Dampfung + Dampfungzeit
= Dampfung
= * Al dan niet ingeschakeld zijn van de demping. * = [aan I uit ]
Dampfungzeit
= * In seconden. *
Vorschub
=* =
Kurzhub ein
= * Kleine verplaatsing van de stempel
omhoog (net voordat het werkstuk omgevormd gaat worden). staat aan of uit. * (ja I nee ]
= Einrichten ein
=
= Tippen auf
*
staat aan als bij het eerste werkstuk van een serie wordt uitgeprobeerd welke instellingen het beste zijn. * [ j a : nee ]
= * De stempel tijdens het instellen met =
Trekkussen
Synchronisatie tussen automatisch bandvoerapparaat en de pers. * [aan: uit ]
kleine verplaatsing omhoog bewegen. [ja I nee ]
= * HUlpcilinder met tafel, onder de =
*
perstafel, die gebruikt kan worden om een plooihouder of uitwerper te bedienen. * trekkussen ab + trekkussen auf
Trekkussen ab
omlaag aan of uit. * = * Trekkussen I ja nee [ ] = I
Trekkussen auf
omhoog aan of uit. * = * Trekkussen I ja nee [ ] = I
-19-
Auswerfer
= * Nodig voor het verwijderen van een
omgevormd produkt uit het gereedschap van de pers. * Auswerfer auf + Auswerfer aus
= Auswerfer auf
= * staat I de uitwerper aan. * [ ja I nee ] =
Auswerfer aus
= * staat I de uitwerper uit. * = [ ja I nee ]
maximale procestijd
=
*
De tijd die het totale omvormproces in beslag neemt, in seconden. *
Schnittschlag dampfung schaltpunktl =
*
De stoot die de pers na het scheuren van het werkstuk ondervindt kan opgevangen worden door de boventafel met stempel aan de onderkant tegen te houden met contra cilinders (die vanaf een zeker punt nagenoef gelijke kracht de stempel tegen houden). * Schnittschlag dampfung schaltpunkt druk + Schnittschlag dampfung schaltpunkt slag
= Schnittschlag dampfung schaltpunkt druk
= * Schakelpunt van de dempende druk in de contra cilinders, uitgedrukt in bar. *
Schnittschlag dampfung schaltpUnkt slag
= * Schakelpunt van de slag in de contra cilinders, uitgedrukt in bar.
Werkzeugsicherung druk
*
= * Beveiliging op de pers: de druk die
maximaal op het gereedschap gezet mag worden, in bar. *
Festanschlagverstellung slag
perskracht max
perskracht max druk perskracht max kracht
=
*
De verstelling van de vaste aanslag van de slag van de stempelinrichting, in bar. *
=
*
De maximale perskracht. * perskracht max. druk + perskracht max. kracht
=
*
Maximale persdruk, in bar.
=
*
= * Maximale perskracht, in kilo Newton (kN). * -20-
uitwerperkracht max
= * De maximale uitwerperkracht. * = uitwerperkracht max druk + uitwerperkracht max kracht
uitwerperkracht max druk
= * Maximale uitwerperdruk, in bar. *
uitwerperkracht max kracht
= * Maximale uitwerperkracht, in kilo Newton (kN). *
slagbegrenzing
slagbegrenzing uitwerper
onderste slagbegrenzing uitwerper
bovenste slagbegrenzing uitwerper
=* =
De uiterste positie waarin een stempel zich mag bevinden. * slagbegrenzing uitwerper + slagbegrenzing pers
=* =
De uiterste grenzen waar de uitwerperstempel zich in mag bevinden. onderste slagbegrenzing uitwerper + bovenste slagbegrenzing uitwerper
*
= * De onderste positie waarin de stempel van de uitwerper zich mag bevinden, in millimeter (mm). *
=*
De hoogste positie waarin de stempel van de uitwerper zich mag bevinden, in millimeter (mm). *
=* =
De uiterste grenzen waar de persstempel zich mag bevinden. * onderste slagbegrenzing pers + bovenste slagbegrenzing pers
onderste slagbegrenzing pers
=*
De onderste positie waarin de stempel van de pers zich mag bevinden, in millimeter (mm). *
bovenste slagbegrenzing
= * De bovenste positie waarin de stempel
slagbegrenzing pers
van de pers zich mag bevinden, in millimeter (rom). *
vorschub synchronsteuerung punt
luchtpunt van blazen
=*
Afstemming van het opzetmechanisme (dat het werkstuk onder de stempel legt) en de stempel, in millimeter.
*
= * Afsteroming van het tijdstip waarop
het werkstuk met lucht verwijdert wordt en de stempel, in millimeter. -21-
*
uitwerper/Trekkussen punt van actie
= * Afstemming van het tijdstip waarop het werkstuk door de uitwerper uit de matrijs wordt verwijderd cq het Trekkussen in actie komt, in millimeter.
*
var. SuI< 630 gegevens
=
* Niet geYmplementeerd. *
var. SuK 20 gegevens
=
* Niet geYmplementeerd. *
var. Miiller gegevens
=
* Niet geYmplementeerd. *
var. Avery gegevens
= * Niet geYmplementeerd. *
var. Erichsen gegevens
= * Niet geYmplementeerd. *
Proefgegevens
= * Gegevens over de configuratie van de
=
Startcriterium
apparatuur voor de proef. * startcriterium + stopcriterium + kanaalconfiguratie + perskeuze +aantal krachtsignalen + aantal wegsignalen + schaalgegevens + samplefrequentie + type kaart + input range
= * criterium op basis waarvan het
programma begint te meten, op weg, kracht of krachtverandering. * [[ 0 + ] F *kracht* I 8 *weg* ]
Stopcriterium
= = * criterium op basis waarvan het
programma stopt met meten, op weg, kracht of krachtverandering. * [[ 0 + ] F *kracht* I S *weg* ]
kanaalconfiguratie
= = * De kana len waarover de signalen
=
binnenkomen. Er zijn (maximaal) 6 signalen, die over zes elkaar opvolgende kanalen binnenkomen. Hierdoor hoeft aIleen het kanaal voor signaal 1 opgeslagen te worden in de pers- en proefgegevens store, de rest voIgt uit het eerste kanaal. Als een kanaal niet geconfigureerd is (dwz niet actief is) wordt het toch meegeteld. Er is keuze uit 8 kanalen. Mogelijke configuraties : 3 (signaal 1 kan op de kanalen 1, 2 en 3 beginnen). * kanaal F1 + kanaal F2 + kanaal F3 + kanaal 81 + kanaal 82 + kanaal S3
kanaal Fl
=
[ 1
2
3
kanaal F2
=
[ 2
3
4 ]
-22-
]
kanaal F3
=
[
3
4
5 ]
kanaal 51
=
[ 4
5
6
kanaal 52
=
[ 5
6
7 ]
kanaal 53
=
[
6
7
8 ]
perskeuze
= =
*
Gekozen pers. ,I [ 5chon 5uK 630 II 5uK 20 II Muller II I Avery I Erichsen ]
5chon
=
*
Pers waarop een persproef uitgevoerd kan worden. *
SuK 630
= * Pers waarop een persproef uitgevoerd kan worden.
]
*
*
5uK 20
=
*
Pers waarop een persproef uitgevoerd kan worden. *
Muller
=
*
Pers waarop een persproef uitgevoerd kan worden. *
Avery
=
*
Pers waarop een persproef uitgevoerd kan worden. *
Erichsen
=
*
Pers waarop een persproef uitgevoerd kan worden. *
=
* Er zijn 3 krachtsignalen. *
aantal krachtsignalen Fl
=
Fl + F2 + F3
= * De kracht kan Actief (1) of niet Actief (0) zijn. *
=
[0:
1 ]
F2
= * Zie Fl. *
F3
= * Zie
aantal wegsignalen
=
51
=
F1.
*
* Er zijn 3 wegsignalen. * 51 + 52 + 53
= * De weg kan Actief (1) of niet Actief (0) zijn. * =
[0:
1 ]
52
= * Zie 51. *
53
= * Zie 51. * -23-
schaalgegevens
= * De conversiefactor die de waarde van
het maximaIe signaal dat via een bepaald kanaal binnenkomt voorstelt.* schaal F1 + schaal F2 + schaal F3 + schaal 51 + schaal 52 + schaal 53
= schaal F1
= * De maximaIe kracht die het maximale
binnenkomende signaal (hier 10 Volt) voorstelt in kilo Newton (kN). *
schaal F3
=* = *
schaal 51
= * De maximale weg die het maximale bin-
schaal F2
Zie schaal Fl. Zie schaal Fl.
* *
nenkomende signaal (hier 10 Volt) voorstelt in millimeter (mm). *
schaal 52 schaal 53 samplefrequentie type kaart
= * Zie schaal 51. * = * Zie schaal 51. * = * De frequentie waarmee de meetgegevens naar binnen worden gehaald. * = * De acquisitiekaart die het Pers-
proef-Analyse Programma ondersteunt. Dit zijn de PC-LabCard 718 en 818. *
= input-range
=
[718: 818 ]
* Die is aIleen in te stellen als er
=
Proefrandvoorwaarden
een PC-LabCard 818 ingesteld is. Op de PC-LabCard 718 is dit standaard -10 Volt tot 10 Volt. * [-10 Volt + 10 Volt [ I -5 Volt + 5 Volt : -2.5 Volt + 2.5 Volt l -1 Volt + 1 Volt I -0.5 Volt + 5 Volt]]
= * Additionele proefgegevens, zijn indirect van belang bij de proef. * = projectleider + perskeuze + type pers
+ serienummer pers + materiaalsoort + werkstofnummer + herkomst + So + datum + trekproefcodes + operatornummer + opmerkingen
projectleider
=*
Naam van de leider van het project waaronder de ontwikkeling van de meetprogramma's en het uitvoeren van de proeven valt (is vast: LJAH). *
-24-
perskeuze
=
type pers
= * Type van de pers "perskeuze". *
serienununer pers
= * Serienununer van de pers "perskeuze".*
materiaalsoort
=
karakter cijfer
* Reeds beschreven in deze datastore.
*
* Naam van het materiaal, voluit geschreven. De notatie komt niet overeen met het nog te noemen "gebruikte materiaal", maar de inhoud (het type metaal) weI. * = 0 { karakter } 20
= * cijfers, letters en andere tekens. *
= =
[cijfer [ 1 : 2
o ]
letter
1
I
3
I
4
I
l
5
teken ] 6
7
8
9
letter
=
[ hoofdletter
hoofdletter
=
[ AIBICIDIEIFIGIHIIIJIKILIMINlolPI QIRIsITIUIVIW:XIYIZ ]
kleine letter
=
'J"k'llm'n'o'plq' [ a Ilblc'dlelflglhlJ.· I I I I I I I I I I I I I I I I rlsltlulvlwlxlYlz ]
teken
= * Een leesteken als een punt, puntkonuna
=
kleine letter ]
etc. *
['l-l!l@l#l$l %1''1&1*1(1)1 _1-1+1=1 {IUI}I]II:
1\1" 1'1:lil?III>I·I
]
werkstofnummer
= * Nummer van het proefmateriaal volgens
= cijfer herkomst
= * Is reeds beschreven in deze datastore · * = * Is een beschrijving van de bron van =
karakter
de StahlschlUssel en of andere genormeerde materiaalatlassen. * 1 { cijfer } 7
het materiaali de leveranciers, opdrachtgever etc. * 0 { karakter } 20
= * Is reeds beschreven in deze datastore
· *
= * Begindikte van het materiaal in = cijfer
millimeter. * 1 { cijfer } 5
= * Is reeds beschreven in deze datastore · * -25-
datum
= * De datum waarop de proef voltrokken is. * dagnr + maandnr + jaarnr
dagnr
= = * Het nummer van de dag dat de proef genomen werd. * [ = I 01 III 02 III 03 III 04 05 06 07 III 08 I I I I I
maandnr
09 17 25
I
I
I I I
10 18 26
11 19 27
I I I I I
12 20 28
13 21 29
14 22 30
15 I 16 23 II 24 31 ]
= * Het nummer van maand waarin de proef genomen werd. * 01 *januari-31* = [ 02 03 04 05 06 07 08 09 10 11 12
jaarnr
I I I I I
*februari-28/29* *maart-31* *april-30* *mei-31* *juni-30* *juli-31* *augustus-31* *september-30* *oktober-31* *november-30* *december-31*
= * Laatste 2 cijfers van het jaar waarin =
de proef genomen werd. * [00 I 01 •• 98 I 99 ]
* De controle op dagnr, maandnr en jaarnr zal een beetje chaotisch uit zien omdat niet elke maand evenveel dagen heeft (het aantal dagen per maand staat bij maandnr als commentaar), en niet elk jaar heeft evenveel dagen (schrikkeljaren) * trekproefcode
= * Identificatie van de trekproef,
= gebruikte materiaal
waarin materiaaleigenschappen zijn opgenomen van het proefmateriaal dat tijdens deze persproef verwerkt wordt. * T + gebruikte materiaal + jaarnr + weeknr + proefnr
= * Eenletterige code voor het metaal dat
=
tijdens de persproef gebruikt werd. Betekenis komt overeen met "materiaalsoort", de notatie niet. * [ R * roestvrij staal* A * aluminium* D * diversen* M * messing* F * staal* N * nikkel* K * koper* L * lood* Z * zink* ] -26-
jaarnr
= * Is in deze datastore reeds beschreven
· * weeknr
proefnr
= * Nummer van de week waarin de proef
= =
=
operator karakter
genomen werd, er zijn jaren met een halve week "extra", de 53ste. * [01 I 02 .•. 53 ]
* Nummer van de proef die in week weeknr jaar jaarnr genomen werd. Hieruit blijkt dat er door de notatie een maximum aan het aantal proeven per week wordt gelegd, namelijk maximaal 99. * [01 I 02 •.. 99 ]
= * naam van de operator. * = 0 { karakter } 78 = * Is in deze datastore reeds beschreven
· * opmerkingen
= * Opmerkingen over de proef, wat er fout ging, wat er gebeurde etc. * = [opmerking + [ opmerking + [ opmerking + [ opmerking + [ opmerking ] ] ] ] ]
opmerking karakter
= * verzameling tekens. *
=
=
1 { karakter } 78 * Is in deze datastore reeds beschreven
· * perscode
= * Unieke identificatie voor een pers-
= gebruikte materiaal jaarnr weeknr proefnr
proef: P[*][jj][ww][nr]. * P + gebruikte materiaal + jaarnr + weeknr + proefnr
= * Is in · * = * Is in · * = * Is in · * = * Is in · *
deze datastore reeds beschreven deze datastore reeds beschreven deze datastore reeds beschreven deze datastore reeds beschreven
-27-
2.3.2
Datastore Heetqeqevens (extern).
Gegevenselement Datastore meetgegevens
Definitie
=
*
Hierin staan de gegevens die z1Jn verkregen met behulp van de AID convertor. De metingen zijn altijd in groepen van (maximaal) 6 gehele getallen opgeslagen (afhankelijk van het aantal actieve kana len) • * X { datablok } X
*
Is (hier) de variabelenaam voor het aantal meetpunten. Het aantal meetpunten (dus X) is gelijk aan de procestijd maal de samplefrequentie (die allen in de datastore "pers- en proefcode" beschreven zijn). Kan-ook geteld worden tijdens de proef. * maximale procestijd + samplefrequentie
=
X
=
= maximale procestijd
=
*
Is reeds beschreven in de datastore pers- en proefgegevens. *
samplefrequentie
=
*
De frequentie waarmee de gegevens naar binnen worden gehaald in kiloHertz, wordt berekend door de wortel te nemen van de procestijd, gedeeld door het aantal meetpunten (X) en dit geheel te vermenigvuldigen met 1000. Deze moet zo hoog mogelijk liggen omdat de resolutie van de uiteindelijke grafiek dan zo optimaal is. * maximale procestijd + X
*
Met een datablok wordt bedoeld de signalen die op 1 tijdsogenblik van de verschillende kana len werden afgehaald. Dit is afhankelijk van het aantal actieve kanalen, en kan een verzameling van 1 tot en met 3 gehele getallenparen vormen. * 1 { getallenpaar } 3
*
=
Wordt gevormd uit 1 weg- en 1 krachtsignaal. * 2 { geheel getal } 2
=
1 { cijfer } 10
=
datablok
=
= getallenpaar
geheel getal
=
-28-
2.3.3
Datastore Grafiekgegevens (extern).
Gegevenselement :Oefinitie Oatastore grafiekgegevens
= * Hierin staan (een deel van)
de gegevens die ook in de datastore "meetgegevens" staan. De x in de extensie kan een cijfer van 0 tot 9 zijn, waarbij de waarden van x voor de volgende grafieken staan: 1: kracht 1 - weg 1 2: kracht 2 - weg 2 3: kracht 3 - weg 3 4: kracht 2 - weg 1 5: kracht 3 - weg 1 6: kracht 1 - weg 2 7: kracht 1 - weg 3 8: kracht 2 - weg 3 9: kracht 3 - weg 2.
Een groep gegevens bestaat hier maar uit 1 kracht en 1 wegsignaal. Het maximal~ aantal groepen metingen is gelijk aan de samplefrequentie maal de maximale procestijd gedeeld door de door de gebruiker opgegeven nauwkeurigheid van de grafiek. *
= Xsub
Xsub + Nsub { getallenpaar } Nsub + modelparameters + totale slag van de pers
= * Xsub is de variable naam voor het
aantal meetpunten van deze grafiek. oit is dus gelijk aan of kleiner dan de X genoemd in store "meetgegevens".
* Nsub
= * Nsub is de helft van Xsub, omdat er
met getallenparen wordt gewerkt, bestaand uit een kracht- en een wegsignaal. *
*
getallenpaar
=
modelparameters
= * parameters die uit de meetgevens be=
Is reeds beschreven in de datastore "meetgegevens". * rekend kunnen worden. * maximale proceskracht + totale procesweg + deelprocesweg van beginpunt proces tot Fp~umn + deelprocesweg van Fprocu mn tot ODP + opgenomen deformatie arbeid -29-
maximale proceskracht
= * De grootste kracht die tijdens het =
proces is opgetreden in kilo Newton (kN), ook weI Fprocesmax genoemd. * 1 { reeel qetal } 1
reeel qetal
=
l{cijfer}lO + [l{.}l + l{cijfer}lO]
totale procesweq
= * De totale weg die de stempel van de
pers heeft afgelegd waarbij F ¢ 0 is; in millimeter (mm), van het door de gebruiker gedefinieerde beginpunt tot het door de gebruiker gedefinieerde eindpunt, ook weI S~ (S~). *. 1 { reeel getal } 1
=
reeel qetal
= * Zie datastore "meetgegevens". *
deelprocesweg tot Fprocesmax
= * De afstand van het beginpunt van het
proces tot het punt waar de maximale proceskracht optreedt in millimeter (mm), ook weI Sa (Saanvang). * 1 { reeel getal } 1
= *
*
reeel getal
=
deelprocesweg van Fproces max tot ODP
= * De afstand van het punt waar de
maximale proceskracht optreedt tot het door de gebruiker gedefinieerde eindpunt in millimeter (mm), ook weI Se (S~d) genoemd. * 1 { reeel getal } 1
= reeel getal
Zie datastore "meetgegevens".
= * Zie datastore "meetgegevens". *
opgenomen deformatie arbeid =
*
=
De totale arbeid die door het produkt tijdens het persproces is uitgevoerd om het omvormproces te voltrekken. Dit is equivalent aan het oppervlakte onder de grafiek (FS-krorome), ook weI de integraal van het beginpunt tot het eindpunt van F8s. * 1 { reeel getal } 1
reeel getal
=*
Zie datastore "meetgegevens".
totale slag van de pers
=*
de totale slag die de pers aflegt,in millimeters (rom). *
-30-
*
2.3.4
Datastore pers database (extern)
Gegevenselement :Definitie Datastore pers database
=*
=
vaste Schon gegevens
omdat hij de meeste
In deze store staan aIle vaste gegevens van aIle persen. Deze gegevens kunnen om de twee of drie jaar wijzigen. Toch worden ze vast genoemd omdat ze maar zo weinig veranderen. * [vaste Schon gegevens I vaste SuK 630 gegevens I vaste SuK 20 gegevens I vaste Muller gegevens I vaste Avery gegevens I vaste Erichsen gegevens ]
=*
WeI bekend, omdat deze van het Persproef Analyse Systeem versie 1.00 afkomstig zijn (dat aIleen deze pers ondersteunde). Deze pers is gekozen instellingen heeft (die de andere persen gedeeltelijk ook hebben). * = type pers + soort pers + fabrikaatnummer + bestelnummer + TUE opdrachtnummer + bouwjaar + stempelkracht + stempelslag + uitwerper / trekk. kracht + uitwerper / trekk slag + opmerking stempelkracht + opmerking uitwerperkracht + transfer doortocht breedte + transfer doortocht lengte + inbouwhoogte maximaal + opspantafel breedte + opspantafel lengte + dikte tafel + centrale openining diameter + T-sleuven 2 * diagonaal + stotertafel breedte + stotertafel lengte + inspantap opening diameter + inspantap diepte + T-sleuven 2 * van voor naar achter + uitwerper / trekkussen tafel breedte + uitwerper / trekkussen tafel lengte + LVU + SEZ + NKS + totaal vermogen + Nachlaufweg + Sicherheits abst. + Dampfung / persdruk / uitwerperdruk
soort pers
= * Het type pers. * = * Het werkingsprincipe van de pers. * = [hydraulische I mechanische ]
fabrikaatnummer
= * Is het nummer dat de fabrikant mee geeft aan zijn produckt. *
type pers
-31-
bestelnummer
= * Account nummer van de bestelling en een volgnummer.
TUE opdrachtnummer
= * Het nummer van de factuur van de opdracht.
bouwjaar stempelkracht
*
=* =*
*
De nominale kracht die door de stempel geleverd kan worden, in kilo Newton (kN) en in bar. *
stempelslag
= * De slag die de stempel maximaal kan af leggen, in millimeters (mm). *
uitwerper/Trekk. kracht
= * De nominale kracht die door de uit-
werper of het Trekkussen geleverd kan worden, in kilo Newton en in bar. *
uitwerper/Trekk. slag
=*
opmerking stempelkracht
= * Omrekenfactor stempelkracht, range
De slag die de uitwerper/Trekkussen maximaal kan af leggen, in millimeters (mm). *
1000 Kn en 150 bar => 6,67 Kn/bar.
opmerking uitwerperkracht
=*
transfer doortocht breedte
=
transfer doortocht lengte
*
Het jaar waarin de pers gebouwd is.
*
*
Omrekenfactor uitwerperjTrekkussen kracht, range 150 Kn en 190 bar => 0,77 Kn/bar. * De breedte van het doortocht in de zijkanten van de pers (om lange produkten zijdelings te kunnen doorvoeren m.b.v. b.v. transfer aanvoer).
* = * De lengte van het doortocht in de
zijkanten van de pers (om lange produkten zijdelings te kunnen doorvoeren m.b.v. b.v. transfer aanvoer).
* inbouwhoogte maximaal
= * Hoogte tussen de onderkant van de
boventafel (in bovenste stand) en de bovenkant van de ondertafel. Oftewel maximaal hoogte van de werk ruimte. *
-32-
opspantafel breedte
=
*
De maximale breedte van de opspantafel, in millimeters (rom). *
opspantafel lengte
=
*
De maximale lengte van de opspantafel, in millimeters (rom). *
dikte tafel
=
* De dikte van de tafel, in millimeters (rom).
*
centrale opening diameter
=
*
Centrale opening in opspan- en/of stotertafel om de bovenste of onderste uitwerper door de tafel heen te kunnen laten werken. *
T-sleuven 2 * diagonaal
=
*
Opspansleuven in stoter- en opspantafel. *
stotertafel breedte
=
*
De breedte van de stotertafel, in millimeters (rom). *
stotertafel lengte
=
*
De breedte van de stotertafel, in millimeters (rom). *
inspantap openinig diameter
= * Tolerantie op de diameter van de opening van de uitspantap *
inspantap diepte
=
*
Diepte van de opening voor de inspantap. *
T-sleuven 2 * van voor naar achter
=
*
opspansleuven in de uitwerp/Trekkussen tafel. *
uitwerper/Trekkussen tafel breedte =
*
De breedte van de uitwerper/Trekkussen tafel, in millimeters (rom). *
uitwerper/Trekkussen tafel lengte
=
*
De breedte van de uitwerper/Trekkussen tafel, in millimeters (rom). *
LVU
=
* Beveiliging (aan de voorkant van de pers) van de werkruimte d.m.v. een lichtscherm *
SEZ
=
*
Veiligheids schakelapparaat, die automatisch gekontroleerde schakelingen bevat voor het controleren van de veiligheids regels voor besturing en de twee handbedieningen aan kracht gebonden persen. *
NKS
=
*
Naloop kontrolle apparaat. -33-
*
totaal vermogen
= * Het totaal vermogen dat de pers kan leveren, in kilo Watt (kW). *
Nachlaufweg
= * De weg die door het NKS kontrolle
apparaat gekontroleerd wordt (stopweg / remweg van de stoter). De stoter moet bij calimiteit binnen een voorgeschreven remweg = 13 mm stilt staan (huidige pers staat binnen 6mm stil ). Als de stop-/remweg groter is dan de voorgeschreven remweg dan blokkeert de gehele pers automatisch. * sicherheits abst.
= * Minimale afstand tussen lichtscherm
en de voorste kant van het gereedschap ter beveiliging van de handen die door het lichtscherm (na b.v. de bediening van de tweehandbediening) in de werkruimte willen grijpen. In deze pers is het lichtscherm extra ver voor de pers aangebouwd, zodat de grijpsnelheid 20% hoger ligt dan normaal volgens de DIN normen.*
Dampfung/persdruk/ uitwerperdruk
= * Instelbare druk van de damping, pers
en uitwerper. * vaste SuK 630 gegevens
= * Niet geYmplementeerd *
vaste SuK 20 gegevens
= * Niet geYmplementeerd *
vaste Muller gegevens
= * Niet geYmplementeerd *
vaste Avery gegevens = * Niet geYmplementeerd * vaste Erichsen gegevens
= * Niet geYmplementeerd *
-34-
2.3.5
Rapporten
Gegevenselement : rapporten
Definitie :
= * Weergave van de resultaten van een persproef. *
=
standaard meetrapport
[standaard meetrapport rapport2 rapport3 rapport4 rapports rapport6
]
= * standaard meetrapport bevat algemene gegevens over de persproef. * = N of Nsub + proef-randvoorwaarden +
schaalfactorinformatie + modelparameters + totale slag van de pers
N of Nsub
proefrandvoorwaarden schaalfactorinformatie
=
*
Het N die bij de proef zijn binnengehaald, reeds beschreven in de datastore pers- en proefgegevens. Opmerking: Het kan N zijn indien het orgineel wordt afgedrukt. Het kan Nsub zijn indien een subset wordt afgedrukt .*
= * Zie datastore "pers- en proefgegevens". * = * Informatie over het maximale signaal per sensor. * kanaalconfiguratie + schaalfactoren
= kanaalconfiguratie
=*
schaalfactoren
= * Zie datastore "pers- en proefgevens"
Zie datastore "pers- en proefgegevens". *
. *
modelparameters totale slag van de pers
=
*
Reeds beschreven in de datastore "grafiekgegevens". *
= * Reeds beschreven in de datastore "grafiekgegevens". *
-35-
rapport2
*
standaard meetrapport en de standaard grafiek, gegenereerd uit een bij elkaar horend kracht- en een wegsignaal. * standaard meetrapport + standaard grafiek
=
* *
de grafieken F1Sl, F2S2 en F3S3 * beschrijving zie 2.3.8 Grafiek op bladzijde -40- .*
=
* standaard meetrapport, de standaard
=
=
standaard grafiek
rapport3
=
grafiek en tabel met meetgegevens.
= * standaard meetrapport + standaard
*
grafiek + FS-tabel
FS-tabel
=
* Tabel met een subset van de meetge-
gevens. Begint bij de door de gebruiker opgegeven beginwaarde en eindigt bij de door de gebruiker opgegeven eindwaarde. * 1 { getallenpaar } max aantal paren
=
max aantal paren
=
*
Gelijk aan eindpunt min beginpunt maal de resolutie van de grafiek. beginpunt + eindpunt + X
* * *
Zie datastore reduceergegevens.
=
beginpunt
=
eindpunt
=
rapport4
=
=
Zie datastore reduceergegevens.
*
* *
standaard meetrapport, de standaard grafiek, tabel met meetgegevens, vaste persgegevens ,var. persgegevens en instelgegevens. * standaard meetrapport + standaard grafiek + FS-tabel + vaste persgegevens + var. persgegevens + proefgegevens
vaste persgegevens
=
*
var. persgegevens
=
* De variabele instellingen van de pers
De vaste instellingen van de pers tijdens het uitvoeren van de persproef zie datastore pers database. * tijdens het uitvoeren van de persproef zie datastore pers- en proefgegevens variabele persgegevens
. * Proefgegevens
=
*
Reeds beschreven in datastore Persen Proefgegevens. *
-36-
rapports
gekozen grafieken
=
* aIle rapporten bij elkaar *
=*
standaard meetrapport + FS-tabel + vaste persgegevens + var. persgegevens + gekozen grafieken. *
=*
zijn door de gebruiker voor het printen gekozen grafiek(en). * standaard grafiek + onderzoek grafiek
= standaard grafiek onderzoek grafiek
= * Reeds in deze store beschreven. * = * de grafieken F2S1, F3S1, F1S2, F1S2, F23S en F3S2. * = * beschrijving zie 2.3.8 Grafiek op bladzijde -40- .*
2.3.&
Naam persproef.
Gegevenselement naam perproef
Definitie :
= * unieke naam waarmee een persproef geidentificeerd kan worden. * = {geldige_naamteken}
geldige naamteken = [A-zla-zI0-9] * voor geldige namen zie perscode datastore Pers- en proefgegevens * 2.3.7
Reduceerqeqevens.
Gegevenselement : reduceergegevens
Definitie :
= * gegevens die de gebruiker invoert om de grafiek te bewerken. * = x/y-as verplaatsing + beginpunt + eindpunt + te wissen punten
x/y-as verplaatsing
=*
beginpunt
= * Het door de gebruiker te definieren beginpunt van de grafiek. * = * Het door de gebruiker te definieren eindpunt van de grafiek. * = * Punten aangegeven door de gebruiker om te wissen uit de grafiek. *
eindpunt te wissen punten
Dit is een verplaatsing van de grafiek in de x-richting en/of een verplaatsing in de y-richting. *
-37-
2.3.8
Grafiek
Gegevenselement grafiek
Oefinitie =
*
=
grafieken die kunnen worden opgesteld uit de gemeten en bewerkte persproefgegevens. * [grafiek F1S1 grafiek-F2S2 grafiek-F3S3 grafiek-F2S1 grafiek-F3S1 grfaiek-F1S2 grafiek-F1S3 grafiek-F2S3 grafiek-F3S2 ]
grafiek_F1S1
= *
grafiek waarin kracht 1 uitgezet is tegen weg 1. *
grafiek_F2S2
= *
grafiek waarin kracht 2 uitgezet is tegen weg 2. *
grafiek_F3S3
= *
grafiek waarin kracht 3 uitgezet is tegen weg 3. *
grafiek_F2S1
= *
grafiek waarin kracht 2 uitgezet is tegen weg 1. *
grafiek_F3S1
= *
grafiek waarin kracht 3 uitgezet is tegen weg 1. *
grafiek_F1S2
= *
grafiek waarin kracht 1 uitgezet is tegen weg 2. *
grafiek_F1S3
= *
grafiek waarin kracht 1 uitgezet is tegen weg 3. *
grafiek_F2S3
= *
grafiek waarin kracht 2 uitgezet is tegen weg 3. *
grafiek_F3S2
= *
grafiek waarin kracht 3 uitgezet is tegen weg 2. *
2.3.9 Datastore qrafiek-keuze (intern)
grafiek-keuze
= *
oit is een interne variabele waarin de door de gebruiker gekozen grafiek wordt bewaard. *
2.3.10 Datastore perproef
persproef
=
*
Dit is een interne variabele waarin de door de gebruiker gekozen persproef wordt bewaard. * -38-
2.4 Proces-specificaties
Hieronder volgen de proces-specificaties van de elementaire processen uit de data-flow diagrammen van het behaviour model. Omwille van de duidelijkheid hebben de proces-specificaties hetzelfde nummer als de bijbehorende data-transformatie. AIle dfd/s zijn in detail uitgewerkt , omwille van de duidelijkheid. 2.4.1
Proces 2.1 selecteren qrafiek & persproef.
begin haal overzicht-gegevens uit pers- en proefgegevens toon deze gegevens doe accepteer invoer selecteer persproef accepteer invoer selecteer grafiek-keuze als (grafiek-keuze = perscode.F!S) { Het !-teken staat voor een cijfer } haal deze gegevens op anders maak nieuwe grafiek aan einde als totdat invoer = einde selecteren FS-kromme einde 2.4.2
Proces 2.2 bewerken meetqeqevens.
begin als (grafiek-keuze = " ) selecteren grafiek & persproef { 2.1 } einde als doe laat keuze menu zien accepteer invoer selecteer keuze als (keuze = bewerken) bewerken bestaande grafiek { 2.2.1 } anders als (keuze = bereken) bereken & toon model parameters { 2.2.2} anders als (keuze = terug) ga naar verwerkings-menu einde als einde als einde als totdat invoer = juiste keuze einde
-39-
2.4.3
Proces 2.3 produceer rapporten
begin doe als (grafiek-keuze = ff) selecteren grafiek & persproef { 2.1 } einde als laat keuze menu zien accepteer invoer selecteer keuze als (keuze = standaard meetrapport) maak standaard meetrapport { 2.3.2 } anders als (keuze = rapport2) maak standaard meetrapport { 2.3.2 } maak grafiek rapport { 2.3.3 } anders als (keuze = rapport3) maak standaard meetrapport { 2.3.2 } maak grafiek rapport { 2.3.3 } maak tabel meetparen { 2.3.1 } anders als (keuze = rapport4) maak standaard meetrapport { 2.3.2 } maak grafiek rapport { 2.3.3 } maak tabel meetparen { 2.3.1 } maak pers gegevens rapport { 2.3.5 } maak instel gegevens rapport { 2.3.4 } anders als (keuze = rapportS) maak standaard meetrapport { 2.3.2 } maak grafiek rapport { 2.3.3 } maak tabel meetparen { 2.3.1 } maak pers gegevens rapport { 2.3.5 } maak instel gegevens rapport { 2.3.4 } zolang (percode.F!S = bestaat) maak grafiek rapport einde zolang einde als einde als einde als einde als einde als totdat invoer = juiste keuze einde
-40-
2.4.4
Proces 2.2.1 bewerken van de grafiek.
begin doe laat keuze menu zien accepteer invoer selecteer keuze als (keuze = aanmaken subset) aanmaken subset { 2~2.1.1 } anders als (keuze = assen aanpassen) assen aanpassen {2.2.1.2 } anders als (keuze = grafiek inzien) grafiek inzien { 2~2.1.3 } einde als einde als einde als totdat invoer = juiste keuze einde 2.4.5
Proces 2.2.2 bereken , en toon model parameters
begin haal meetparen uit meetgegevens (grafiekkeuze) zolang niet aIle meetparen gelezen zijn doe { bepaal het maximale krachtsignaal. }
kijk of het huidige meetpaar het maximum is zo ja, bewaar het huidige meetpaar { bepaal de arbeid (= oppervlakte onder grafiek). } als het huidige meetpaar tussen het beginpunt en het eindpunt van de grafiek ligt doe oppervlakte optellen bij al geregistreerde oppervlakte van de grafiek { Het resultaat van deze Ius bestaat uit het meetpaar met de maxima Ie kracht, en de arbeid die dit proces gekost heeft. Verdere resultaten kunnen uitgerekend worden (zie grafiek aan het einde) }
einde zolang schrijf de resultaten naar het scherm schrijf de resultaten naar grafiek gegevens einde
-41-
{
Uit de nu volgende grafiek blijkt welke procesgegevens uit een persproef gehaald kunnen worden:
}
S(mm)
Stotaal
~,
h
2.4.6
Proces 2.2.1.1
aanmaken subset.
begin haal meetparen op uit meetgegevens toon tabel met de gegevens doe accepteer invoer als (invoer = B) { B staat voor
eginwaarde } markeer dit punt als beginwaarde markeer de meetwaarden ervoor als te wissen anders als (invoer = E) { E staat voor <E>indwaarde } markeer dit punt als eindwaarde markeer de meetwaarden erna als te wissen anders als (invoer = W) { W staat voor <W>issen } markeer dit punt als te wissen anders als (invoer = T) {T staat voor ijdelijk saven } schrijf de gegevens tijdelijk weg invoer = einde subset einde als einde als einde als einde als totdat invoer = einde subset schrijf minimale x!y naar grafiekgegevens schrijf maximale x!y naar grafiekgegevens schrijf gewijzigde meetparen naar meetgegevens einde -42-
2.4.7
Proces 2.2.1.2
assen aanpassen.
begin haal aIle meetparen uit meetgegevens doe accepteer invoer als invoer = horizontaal doe pas x-as aan einde als als invoer = verticaal doe pas y-as aan einde als totdat invoer = einde assen aanpassen rekenen de meetparen om met de assen veschuiving schrijf gewijzigde meetparen weg naar meetgegevens einde 2.4.8
{
Proces 2.2.1.3
grafiek inzien.
Ga ervan uit dat het scherm al in de grafische modus gezet is en dat het achterliggende scherm al gerealiseerd is
}
begin haal meetparen uit meetgegevens { Een meetpaar is een combinatie van een krachtsignaal en een wegsignaal. }
zolang niet aIle meetparen getekend zijn doe teken grafiek haal meetparen uit grafiekgegevens einde zolang einde 2.4.9
Proces 2.3.1 maak tabel-meetparen.
begin haal aantal meetparen uit grafiekgegevens voor meting is 1 tot aantal meetparen haal meetparen op uit meetgegevens einde voor maak deeloverzicht haal modelparameters uit grafiekgegevens maak deeloverzicht einde 2.4.10
begin haal maak haal maak haal maak einde
Proces 2.3.2
maak meetrapport.
proefgegevens uit pers- en proefgegevens deeloverzicht schaalfactoren uit pers- en proefgegevens deeloverzicht modelparameters uit grafiekgegevens deeloverzicht
-43-
2.4.11 Proces 2.3.3 maak qrafiek rapport.
begin haal aantal meetparen uit grafiekgegevens voor meting is 1 tot aantal meetparen haal meetparen op uit meetgegevens einde voor maak grafiek einde 2.4.12 Proces 2.3.4 maak instel qeqevens rapport.
begin haal instel gegevens uit pers- en proefgegevens maak overzicht einde 2.4.13 Proces 2.3.5 maak pers qeqevens rapport.
begin haal vaste gegevens uit pers- en proefgegevens maak overzicht eind
-44-
Hoofdstuk 3 Wijziqinqen van het Acquisitie deel.
Er zijn een paar belangrijke wijzigigen t.o.v Reinders LIT[2]. Zo zijn in dit ontwerp (zie Reinders LI~r[2]) een aantal gegevens onder de verkeerde noemer vermeld en gegevens helemaal niet genoemd. Bovendien is een belangrijke functie in het Acquisitie deel niet verwerkt. De gegevens die onder de verkeerde noemer vallen zijn vaste Schon gegevens volgens Reinders LIT[2]. De vaste persgegevens (zie Reinders LIT[2] pers database) zijn niet uitgeschreven. De functie die vergeten is heeft betrekking op de hier boven genoemde weggevallen gegevens. Zo moet er een mogelijkheid bestaan om de "vaste" pergegevens (pers database) te verandereno Ze worden vaste gegevens genoemd omdat ze maar zelden worden veranderd (een keer per twee of drie jaar). Deze wijzigingen zullen ook in het volgende model worden meegenomen. Op het Implementatie-model zullen de wijzigen een grotere invloed hebben dan op het Essentieel-model. Mede hierdoor zal er een apart hoofdstuk aan worden gewijd in het Implementatie model (zie CONINCK LIT[24] hoofdstuk 4), dat een vervolg op dit hoofdstuk is.
-45-
Literatuurlijst [1]
P.J.M. Reinders.
"Persproef-Analyse Programma versie 2.00, Introductie, HS-HIO-Heerlen-Stageverslag ~, Eindhoven, Juli ~993, WP 1545."
[2]
P.J.M. Reinders.
"Persproef-Analyse Programma versie 2.00, Essentieel Model, HS-HIO-Heerlen-stageverslag 2, Eindhoven, Juli 1993, WP 1546."
[3]
P.J.M. Reinders.
"Persproef-Analyse Programma versie 2.00, Implementatie model, HS-HIO-Heerlen-Stageverslag 3, Eindhoven, Juli 1993, WP 1547."
[4]
P.J.M. Reinders.
"Persproef-Analyse Programma versie 2.00, Gebruikershanleinding, HS-HIO-Heerlen-Stageverslag 4, Eindhoven, Juli ~993, WP 1548."
[5]
P.J.M. Reinders.
"Persproef-Analyse Programma versie 2.00, Source-code Libraries, HS-HIO-Heerlen-Stageverslag 5, Eindhoven, Juli ~993, WP 1549."
[6]
P.J.M. Reinders.
"Persproef-Analyse Programma versie 2.00, Source-code Programma, HS-HIO-Heerlen-Stageverslag 6, Eindhoven, Juli 1993, WP 1550."
[7]
C.P.I. van de Werff.
"Trekproef analyse programma PC-DT100 versie 3.02, Introductie, HS-Heerlen-HIO-Stageverslag 1, Eindhoven, Januari 1993, WPA 1450."
-46-
[8]
C.P.I. van de Werff.
"Trekproefanalyse Programma PCDTI00, versie 3.02, Het Essentieel Model, HS-Heerlen-HIO-Stageverslag 2, Eindhoven, Januari 1993, WPA 1451."
[9]
C.P.I. van de Werff.
"Trekproefanalyse Programma PCDTI00, versie 3.02, Het Implementatie Model, HS-Heerlen-HIO-Stageverslag 3, Eindhoven, Januari 1993, WPA 1452."
[10]
C.P.I. van de Werff.
"Trekproefanalyse Programma PCDTI00, versie 3.02, Analyse, HS-Heerlen-HIO-Stageverslag 4, Eindhoven, Januari 1993, WPA 1453."
[11]
C.P.I. van de Werff.
"Trekproefanalyse Programma PCDTI00, versie 3.02, Sourcecode Programma onderdelen, HS-Heerlen-HIO-Stageverslag 5, Eindhoven, Januari 1993, WPA 1454."
[12]
C.P.I. van de Werff.
"Trekproefanalyse Programma PCDTI00, versie 3.02, Sourcecode Library bestanden, HS-Heerlen-HIO-Stageverslag 6, Eindhoven, Januari 1993, WPA 1455."
[13]
C. P. I. van de Werff.
"Trekproefanalyse Programma PCDTI00, versie 3.02, Gebruikershandleiding, HS-Heerlen-HIO - Stageverslag 7,
Eindhoven, Januari 1993, WPA 1456." [14]
W.A.J. van den Eijnde.
"De calibratie en de proef-opstelling van de PC-718-Labcard,HS-Venlo stageverslag 2,Eindhoven, Maart 1990, WPA 0862."
[15]
W.A.J. van der Eijnde.
"Een universeel data-acquisitie systeem voor high performance PCL-718-CS kaart, versie 1.00, HS-Venlo stageverslag 1, Eindhoven, Juni 1990, WPA 0893." -47-
[16]
W.A.J. van der Eijnde.
"Een universeel data-acquisitie systeem voor high performance PCL-7~8-CS kaart, versie ~.OO, User Manual, HS-Venlo Stageverslag 2, Eindhoven, Juni ~990, WPA 0894."
[17]
W.A.J. van der Eijnde
"Een universeel data-acquisitie systeem voor high Performance PCL-7~8-CS kaart, versie ~.OO, Listing, HS-Venlo stageverslag 3, Eindhoven, Juni ~990, WPA 0895."
[18]
W.A.J. van der Eijnde
"Een universeel verwerkingssysteem voor het bepalen van FS-krommen, versie ~.OO, Technical Manual, HS-Venlo stageverslag 4, Eindhoven, Juni ~990, WPA 0896."
[19]
W.A.J. van der Eijnde
"Een universeel verwerkingssysteem voor het bepalen van FS-krommen, versie ~.OO, User Manual, HS-Venlo Stageverslag 5, Eindhoven, Juni ~990, WPA 0897."
[20]
W•A. J. van der Eij nde
"Een universeel verwerkingssysteem voor het bepalen van FS-krommen, versie ~.OO, Listing, HS-Venlo stageverslag 6, Eindhoven, Juni ~990, WPA 0898."
[21]
Sylvia Goldsmith.
"A practical guide to Real-Time Systems Systems Prentice Hall ~993."
[22]
R.J.J deConinck
"Persproef-Analyse Programma versie 2.00 Introductie R.J.J. de Coninck HS-Heerlen-HIo-Stageverslag ~ Aug. ~993 WPA ~2000~."
-48-
[23]
R.J.J de Coninck
"persproef-Analyse Programma versie 2.00 Essentieel-model R.J.J. de Coninck HS-Heerlen-HIO-Stageverslag 2 Okt. 1993 WPA 120002."
[24]
R.J.J de Coninck
"Persproef-Analyse Programma versie 2.00 Implementatie-model R.J.J. de Coninck HS-Heerlen-HIO-Stageverslag 3 Nov. 1993 WPA 12003."
[24]
R.J.J de Coninck
"Persproef-Analyse Programma versie 2.00 User's Manual R.J.J de Coninck HS-Heerlen-HIo-Stageverslag 4 Jan. 1994 WPA 120004."
[25]
R.J.J de Coninck
"Persproef-Analyse Programma versie 2.00 Source-code programma onderdelen. R.J.J de Coninck HS-Heerlen-HIO-Stageverslag 5 Jan. 1994 WPA 120005."
[26]
R.J.J de Coninck
"Persproef-Analyse Programma versie 2.00 Source-code library bestanden R.J.J de Coninck HS-Heerlen-HIO-Stageverslag 6 Jan. 1994 WPA 120006."
-49-
Technische Universiteit Eindhoven Faculteit der Werktuigbouwkunde Vakgroep Produktietechnologie en -automatisering Laboratorium voor Omvormtechnologie
Persproef-Analyse Programma versie 2.00 Implementatie Model. R.J.J. de Coninck HS-Heerlen-HIO-Stageverslag 3 Sep. 1993 VF-code: D2
WPA 12000"1A
Stageperiode
16-08-1993 tim 16-01-1994
Begeleider TU Eindhoven Begeleider Hogeschool Heerlen
Ir. L.J.A. Houtackers Ir. A.J. Goos
Adressenlijst.
stageverlenend bedrijf:
Technische Universiteit Eindhoven
Bezoekadres:
Den Dolech 2 5612 AZ EINDHOVEN 040 - 479111
Postadres:
Postbus 513 5600 MB EINDHOVEN
Interne begeleider:
ir. L.J.A. Houtackers
Prive:
Nachtegaallaan 2 5731 XR MIERLO (tel) 04927 - 62281 (fax) 04927 - 62648
Intern:
TU Eindhoven W-Hoog 0.119 040 - 474521 040 - 448665
Externe begeleider:
(tel) (fax)
ir. A.J. Goos
Prive:
Frederikagracht 5 6465 CR KERKRADE 045 - 423163
Intern:
Dr. Jaegersstraat 40 6417 CK HEERLEN 045 - 734892 (tel) 045 - 719790 (fax)
stagiair:
R.J.J. de Coninck
Prive:
Geleenstraat 66 6155 ND PUTH 04493 - 1157
Intern:
W-Hal 1.44 040 - 473648
-2-
Inhoudsopgave.
Adressenlijst.
-2-
Inhoudsopgave.
-3-
Verklarende woordenlijst. .
-5-
Inleiding •
-6-
Hoofdstuk 1 - Beschrijving van de gebruikte ontwerpmethode voor het implementatie model . . . 1.1 Het implementatie model . 1.1.1 Wijzigingen aan het essentieel model . 1.1.2 Scherm-layout, rapporten en lijsten . 1.1.3 Het modulair ontwerp . 1.1.4 Structuur van de gebruikte bestanden .
-7-7-7-8-8-9-
Hoofdstuk 2 - Hardware waarop het Persproef-Analyse Programma moet worden geYmplementeerd . 2.1 Type computer . 2.2 In- en uitvoerapparatuur . . . . . . . . . . . . . 2.3 Programmeertaal .
-10-10-10-16-
Hoofdstuk 3 - Ontwerp van het implementatie model van het Persproef-Analyse Programma versie 2.00 -173.1 Uitbreiding van het essentieel model omwille van de implementatie van het systeem . . . . . . . -173.1.1 Uitbreiding van het gedrags model -183.1.2 uitbreiding van de data dictionairy. . . . . . -253.1.2.1 Configuratie . . . . . . .. . . . -253.1.2.2 Aantal meetparen: .AMP . -273.1.2.3 Bestandinfo. . . -273.1.2.4 Origineel . -283.1.2.5 Graphlnp.txt . . . . . -293.1.2.6 Plotdef.txt: . -313.1.2.8 Startcode verwerkings-gedeelte . -323.1.2.9 Startcode bestandsbeheer-gedeelte . -323.2 Specificatie schermen, lijsten en rapporten . -333.2.1 Scherm-layout . . . -333.2.2 Overzicht meldingen . -573.2.3 Overzicht fout-boodschappen . -593.2.4 Overzicht help-boodschappen . -613.2.5 Schermkleuren . . . -633.2.6 Layout lijsten en rapporten . -653.2.6.1 Standaard meetrapport. . . -653.2.6.2 Standaard grafiek(en). . . -663.2.6.3 Tabel meetgegevens. . . . . . -673.2.6.4 Vastejvariabelen en instelgegevens van de pers. . . . . . . -68-713.2.6.5 Compleet meetrapport . 3.3 Het modulair ontwerp . -723.3.1 Hoofdmenu . -723.3.2 Acquisitie . . -743.3.3 Verwerking . . . . -753.3.4 Kies FS-kromme . -76-3-
3.3.5 Bewerk FS-kromme . 3.3.6 Aanmaken van subset 3.3.7 Aanpassen assen . 3.3.8 Grafiek Inzien 3.3.9 Schrijf bewerkte persproef weg 3.3.10 Printen FS-gegevens 3.4 Opbouw van de gebruikte bestanden 3.4.1 Opbouw van de vaste bestanden 3.4.1.1 Vaste Persgegevens. . . . . 3.4.1.2 Variabele Persgegevens 3.4.1.3 Proefgegevens 3.4.1.5 Meetgegevens 3.4.1.6 Grafiekgegevens. . . . . . . . 3.4.1.7 Pers database 3.4.1.8 Configuratie. . . . . . . . . 3.4.1.9 Aantal meetparen.. . 3.4.1.10 Origineel. . . . . . . .. 3.4.2 Opbouw van de tijdelijke bestanden 3.4.2.1 Te printen grafiek: Graphlnp.TXT 3.4.2.2 Plotgrafiek: Plotdef.Txt 3.4.2.3 Bestand info Hoofdstuk 4
Wijzigen van het Acquisitie gedeelte.
. . . . . . . . . . . . . . . . . .
-79-82-83-84-85-88-89-89-89-89-90-91-91-92-92-93-93-93-93-93-93-100-
Literatuurlijst . . .
-104-
Bijlage 1 :
-108-
Schermhierachie.
-4-
Verklarende woordenlijst.
Krachtsignaal
Een signaal, dat afkomstig is van een krachtsensor op een meetpunt in een pers. Dit signaal is een elektrische weergave (in Volt) van de kracht, die de stempel van de pers op het proefobject uitvoert.
Wegsignaal
Een signaal, dat afkomstig is van een wegsensor op een meetpunt in een pers. Dit signaal is een elektrische weergave (in Volt) van de weg die de stempel aflegt om een bepaald proces te realiseren onder invloed van een kracht.
Schaalweg
De waarde, die gekoppeld wordt aan het maximale signaal, dat binnenkomt over een kanaal. Hierdoor kan het elektrische signaal omgezet worden naar een weg (in millimeter = rom).
Schaalkracht
De waarde, die gekoppeld wordt aan het maximale signaal, dat binnenkomt over een kanaal. Hierdoor kan het elektrische signaal omgezet worden naar een kracht (in kilo Newton = kN).
DFD
Data Flow Diagram
-5-
Inleiding.
Gedurende de stage in het zesde semester van augustus 1993 tot januari 1994 van de Informatica-opleiding van de Hogeschool Heerlen, zal voor het Laboratorium voor Omvormtechnologie van de Technische Universiteit Eindhoven het daar ontwikkelde Persproef-Analyse Programma verwerkings-gedeelte, gebruikt voor het verkrijgen van materiaaleigenschappen van metalen, moeten worden aangepast. Het aanpassen heeft tot gevolg dat een nieuw ontwerp gemaakt dient te worden. Dit ontwerp kan worden gesplitst in twee delen, namelijk het essentieel model en het implementatie model. In dit verslag wordt het implementatie model behandeld, terwijl het essentieel model in een afzonderlijk verslag zal worden uitgewerkt (zie Coninck LIT[23]). Het eerste hoofdstuk geeft in het kort een beschrijving van de gebruikte ontwerpmethode. Hierin wordt aangegeven uit welke onderdelen het implementatie model is opgebouwd en wat deze inhouden. In het tweede hoofdstuk zal worden gekeken naar de hardware, de gebruikte in- en uitvoerapparatuur en de programmeertaal, waarin het Persproef-Analyse Programma geschreven zal gaan worden. Tenslotte zal in het derde hoofdstuk het implementatie model worden uitgewerkt. Hierin wordt onder meer aangegeven hoe het essentieel model gewijzigd moet worden om op het gekozen computersysteem geYmplementeerd te kunnen worden. Tevens zullen de gekozen scherm-layout, het modulair programma-ontwerp en de structuur van de gebruikte data bestanden aan bod komen. Tijdens de stageperiode zlJn de volgende verslagen geschreven: Stageverslag 1: aug. 1993, WPA 120001 - Introductie. Stageverslag 2: sep. 1993, WPA 120002 Essentieel model. Stageverslag 3: okt. 1993, WPA 120003 Implementatie model. Stageverslag 4: jan. 1994, WPA 120004 Gebruikers handleiding. stageverslag 5: jan. 1994, WPA 120005 Source-code programmaonderdelen PersproefAnalyse Programma versie 2.00. Stageverslag 6: jan. 1994, WPA 120006 - Source-code librarybestanden PersproefAnalyse Programma versie 2.00.
-6-
Boofdstuk 1 - Beschrijving van de gebruikte ontwerpmethode voor het implementatie model. De voor het Persproef-Analyse Programma versie 2.00 gebruikte ontwerpmethode is gebaseerd op de Yourdon-ontwerptechniek. Deze verdeelt het ontwerp in een aantal onderdelen, die achtereenvolgens moeten worden uitgevoerd. Het ontwerp kan worden verdeeld in twee hoofd-onderdelen: 1) 2)
Het essentieel model (beschrijving van het te realiseren systeem) . Het implementatie model (hoe wordt het essentieel model op een bepaald computersysteem geYmplementeerd).
In dit verslag zal uitsluitend worden ingegaan op het implementatie model. Het essentieel model wordt in een afzonderlijk verslag uitgewerkt (zie CONINCK LIT [23J).
1.1
Bet implementatie model.
In het implementatie model wordt aangegeven hoe het essentieel model (dit is het model dat aangeeft wat het systeem moet doen om aan de eisen van de gebruiker te voldoen, maar zo weinig mogelijk zegt over de implementatie hiervan) op een bepaald computer-systeem moet worden geYmplementeerd. Het implementatie model bestaat uit de volgende onderdelen: Beschrijving van de wijzigingen aan het essentieel model als gevolg van de implementatie hiervan op een bepaald computersysteem. Het ontwerpen van de scherm-Iayout en de vormgeving van rapporten en lijsten. Het opstellen van een modulair ontwerp. Beschrijving van de structuur van de gebruikte bestanden.
1.1.1
Wijzigingen aan het essentieel model.
Om het essentieel model te kunnen implementeren op een bepaald computersysteem, zal dit model op een aantal punten moeten worden uitgebreid. Deze uitbreidingen hebben (wat betreft het Persproef-Analyse Programma verwerkings-gedeelte) voornamelijk betrekking op een aantal extra datastores, die voortvloeien uit de wijze van implementeren van het essentieel model op het gekozen computersysteem. Deze stores zullen in het algemeen tijdelijk van aard zijn, intern in het geheugen. De uitbreidingen zullen worden gevisualiseerd in een nieuwe versie van het gedragsmodel (dit beschrijft het inwendige gedrag van het systeem). Bovendien zullen aIle toegevoegde data stores in een uitbreiding van de data dictionary worden uitgewerkt.
1
Hoofdstuk een is ontleend aan REINDERS LIT [3J -7-
1.1.2
scherm-layout, rapporten en lijsten.
De interactie tussen de gebruiker en het programma moet precies worden vastgelegd. Dit gebeurt door: Het opstellen van een scherm-Iayout met een state transition action table bij elk scherm. Hierin staat precies aangegeven welke invoer in dit scherm kan plaatsvinden en wat de reactie van het programma hierop zal zijn. Het specificeren van aIle mogelijke meldingen, fout- en helpboodschappen die in het programma voorkomen. Het vastleggen van de layout van rapporten en lijsten. Aan de hand van de bovengenoemde zaken kan de gebruiker zich reeds in dit stadium een duidelijk beeld vormen van werking en mogelijkheden van het te ontwikkelen programma.
1.1.3
Het modulair ontwerp.
Een module is een eenheid van programma-statements en data met de volgende eigenschappen: -Invoer en uitvoer -Functie -Werking -Interne data
welke informatie krijgt resp. retourneert de module. wat doet de module met de invoer om de uitvoer te produceren. de procedurele code of logica waarmee de module zijn functie uitvoert. gegevens die de module nodig heeft om zijn taak uit te voeren en die aIleen door deze module worden gebruikt.
Elke module heeft een naam die duidelijk de functie van de betreffende module aangeeft. Het modulair ontwerp toont de verdeling van het programma in modules, hoe deze modules zijn georganiseerd (m.a.w. welke module roept welke aan) en welke informatie tussen de modules wordt uitgewisseld.
-8-
Notatiewijze:
D
Zelf gedef i.1lieerde module.
D
Reeds bestaande module. Vb: Disk I/O bij bestanden wordt verzorgd door MS-DOS en hoeft dus niet zelf gerealiseerd te worden.
.-----------------,,
,
,
,-----------
1
De ge.1loemde module is gee.1l zelfstandige module, maar wordt getoond om de modulestructuur duidelijk en/of overzichtelijk te houden,
De interface list beschrijft aIle informatie die tussen de modules onderling wordt uitgewisseld. 1.1.4
structuur van de gebruikte bestanden.
Van aIle datastores in de data dictionary die in de vorm van een bestand op disk(ette) gelmplementeerd dienen te worden, wordt aangegeven hoe deze precies moeten worden opgeslagen. Van elk bestand moet worden vastgelegd: Welke gegevens moeten worden opgeslagen. Wat voor gegevenstype wordt gebruikt (bv. real, string enz.) en de lengte hiervan. De volgorde waarin deze gegevens dienen te worden opgeslagen.
-9-
Hoofdstuk 2 - Hardware waarop het Persproef-Analyse Programma moet worden ge1mplementeerd. 2
In dit hoofdstuk wordt ingegaan op de hardware waarop het Persproef-Analyse Programma geYmplementeerd moet worden. Het wordt zowel beschreven voor het acquisitie- en het verwerkings gedeelte om een duidelijk beeld te verkrijgen. Naast het type computer wordt tevens de gebruikte in- en uitvoerapparatuur beschreven. Als laatste zal worden ingegaan op de gebruikte programmeertaal. 2.1
Type computer.
Voor de implementatie van het Persproef-Analyse Programma Aqcisitie gedeelte wordt gebruik gemaakt van de onderstaande computerconfiguratie: PC XT (8 MHz, 8088) met coprocessor (8087). 640 Kb. Ega grafische kaart (256Kb) met bijbehorende kleurenmonitor. twee DD diskettestations (5.25"). Dos 3.30. 20 MB harde schijf. Voor de implementatie van het Persproef-Analyse Programma Verwerkings gedeelte wordt gebruik gemaakt van de onderstaande computerconfiguratie: PC AT (40 MHz., 80386) met coprocessor (80387). 4 MB RAM. SVGA grafische kaart (512 Kb) met bijbehorende kleurenmonitor. twee HD diskettestations, (een 3.5" en een 5.25"). MS-DOS 5.0. 110 MB harde schijf.
2.2
In- en uitvoerapparatuur.
Invoer van acquisitie kaart (gegevens die van de pers komen): Analoog : 0 .. 10 V. Digitaal: Geen. uitvoer van acquisitie kaart (naar het acquisitieprogramma): -Analoog : Geen. -Digitaal: -4096 .. 4095. Bij de proef worden eigenlijk aIleen positieve getallen binnengehaald. Het kan echter voorkomen dat er negatieve getallen binnen komen, als bijvoorbeeld de stempel terugkeert naar de beginpositie, en de weg nog gemeten wordt.
2
Hoofdstuk twee is ontleend aan REINDERS LIT [3] -10-
uitvoer van de pers: Maximale datasnelheid = 2 ·H· 2 log V bi ts/ seconde
Formule van Nyquist Met de formule van Nyquist kan het maximum aantal bits per seconde dat een ruisvrij kanaal doorgeeft, uitgerekend worden (het betreft echter een theoretische grens, die in praktijk nooit gehaald kan worden) op basis van de bandbreedte (H) van het kanaal en het aantal discrete niveaus (V) dat het signaal kan hebben (= de mogelijke waarden van een signaal, een binair signaal heeft bijvoorbeeld 2 discrete niveaus). H wordt in dit geval gesteld op 4 kHz (dit is de bandbreedte van een coax kabel) en V is in dit geval 4096 (dit is gelijk aan 2 12 , waarin 12 het aantal bits is dat de kaart binnenhaalt). Het maximum aantal bits per seconde blijkt in dit geval te zijn: 2·4X10 3 . 2 log 4096 =8x10 3 '12 = 96xl0 3 bits/sec
Verder blijkt het zo te zijn dat de samplefrequentie altijd tussen de bandbreedte en 2 maal de bandbreedte (H) moet liggen, omdat een hogere samplefrequentie geen additionele informatie meer geeft, en bij een lagere samplefrequentie gegevensverlies optreedt. In dit geval zou de samplefrequentie dus 2 maal 4*10 3 is 8*10 3 Hertz (= 8 kHz) zijn (als de werkelijke bandoreedte groter is wordt de samplefrequentie ook groter) . Maximum aantal bits pers seconde = H· 2 log(1+
~)
Formule van Shannon De formule van Nyquist gaat uit van een kanaal zonder ruis. In de formule van Shannon wordt daar weI rekening mee gehouden. In deze formule blijkt het maximale aantal bits dat een kanaal per seconde doorgeeft afhankelijk te zijn van de bandbreedte (H) en de signaal-ruisverhouding (SIR, in decibel). In dit geval is de signaal-ruisverhouding nog niet bekend omdat er naast de "gewone" ruis ook nog storingen van de omgeving en van de pers zelf kunnen komen. Invoer van het acquisitieprogramma: Integers, verkregen door de kaart, met een bepaalde frequentie (sample rate). Deze moeten enerzijds zo hoog liggen dat er geen "gaten" in de procesverloopsweergave ontstaan, maar anderzijds niet zo hoog dat er zodanig veel gegevens binnenkomen dat de opslagschijf te vol raakt en er door het verwerkingsprogramma geen grafieken meer bijgezet kunnen worden. De totale invoer van het acquisitie programma is gelijk aan de uitvoer van de data kaart.
-11-
uitvoer van het acquisitieprogramma: De integers die binnen zijn gekomen van de kaart, worden in een binair bestand opgeslagen en naar het scherm geschreven in een real of integer formaat. Dit formaat is afhankelijk van de tijd die nodig is voor de conversie van integer naar real, op welk moment deze conversie plaats vindt, en de hoeveelheid beschikbare schijfruimte. Besloten is om (in tegenstelling tot het programma versie 1.00) voor de integer te kiezen. De meetgegevens kunnen dan direct opgeslagen worden (dit vertraagt de verwerking niet; vooral niet omdat de gegevens op een XT worden gesampled). De conversie van integer naar real vindt pas op een (snellere) PC AT plaats. Verder zijn files van het integer formaat kleiner dan files van het real formaat (een integer is 2 bytes groot, een real (minimaal) 4) waardoor er meer opgeslagen kan worden. Invoer van het verwerkingsprogramma: Invoer van de gebruiker via het toetsenbord, een muis wordt niet ondersteund. Gegevens van schijf. uitvoer van het verwerkingsprogramma: Niet tijdkritisch, aIleen afhankelijk van tijdsfactoren die voor de gebruiker prettig en gemakkelijk zijn. Door de conversie van meetgegevens van het type integer naar real kan het inlezen echter wat langer duren. Rapporten kunnen worden afgedrukt op een HP LaserJet III, die via een parallelle interface met de gebruikte computer verbonden is. Grafieken kunnen worden afgedrukt op de eerder genoemde HP LaserJet III, op een Sekonic SPL-450 of een seriele HPGL plotter. Het aantal signalen is afhankelijk van: de sample frequentie. de snelheid van de pers. de afstand die de pers aflegt. de opslagcapaciteit van de diskette in drive A of B (hierop worden de gegevens opgeslagen). De sample rate is afhankelijk van: (maximaal 0.25 Mhz, minimaal 0.2*10-3 Hz) de snelheid van de PC (XT = 4,77 Mhz). de manier waarop de conversie plaats vindt (op programmabasis (maximaal 3 Khz), op DMA-basis (maximaal 60 Khz) of op basis van interrupts (2,5 Khz». de sample frequentie die ingesteld is op de kaart (door het programma) . De snelheid van de pers wordt extern ingesteld op de pers. Die is hoger bij bv ponsen dan bij dieptrekken. Voor ponsen moet dus een hogere samplefrequentie worden genomen dan bij het dieptrekken. Daar staat weer tegenover dat de totale procestijd bij ponsen kleiner is dan bij dieptrekken, waardoor er toch (ongeveer) evenveel meetgegevens verkregen worden. -12-
Opslagcapaciteit van een diskdrive: Elke flop mag maximaal voor 50% gevuld zijn met echte meetgegevens (de rest wordt bezet door andere gegevens). Het bestand wordt opgeslagen als Binair bestand. Een sample bestaat uit 6 signalen: 3 weg- en 3 krachtsignalen. Indien b.v. F3 en S3 niet zijn gemeten wordt hier maxint ingevuld. Als een sample wordt opgeslagen wordt hij opgeslagen als type integer. Dit omdat het bereik van de meetgegevens (van -4096 tot 4096) 13 bits beslaat. Het dichtst bij komt dan het type integer: 16 bits, van -32768 tot 32768. Elk signaal wordt in de file gevolgd door een karakter, elke sample wordt gevolgd door een ander signaal: De totale opslag van de diskette is 50%. De formule om het maximale aantal samples te bepalen is als voIgt: Maximale aantal samples = 50% van schijfruimte 3
De schijfruimte moet berekend worden in bytes (1 Kilobyte = 1024 bytes). De noemer is 3. Dit de lengte is van een sample van een kanaal en een signaalscheider. De sample is 1 byte groot (een integer) en de signaalscheider 2 bytes (een karakter) . De opslagcapaciteit voor de verschillende disktypen: Totale diskcapaciteit
Aantal meetgegevens **
Maximale sample frequentie
360 Kb
10.240
0,640 KHz
100 Kb
720 Kb
20.480
1,280 KHz
200 Kb
1,2 MB
34.952
2,185 KHz
342 Kb
1,44 MB
40.960
2,560 KHz
400 Kb
2,88 MB
81.920
5,120 KHz
800 Kb
600 MB*
104.857.600
6,553 MHz
* =
**
Benodigd RAM
geheugen
6000 Mb
Magnetisch optische disk, ook een mogelijkheid, maar niet aIle meetparen passen in het RAM geheugen, Het aantal meetparen is gelijk aan de helft van het aantal meetgegevens (een meetpaar bestaat uit twee meetgegevens).
De maximale samplefrequentie is vastgesteld op basis van de maximale procestijd van de Schonpers (in het Persproef-Analyse Systeem versie 1.00) en van de hierboven gegeven aantallen meetgegevens volgens de formule:
-13-
sample frequentie =
aantal meetgegevens totale procestijd (in sec. )
De samplefrequenties die hieruit volgen zijn dan binnen het meetbereik van de PC-Labkaart, maar ze zijn weI erg laag (lager dan gewenst zelfs). Er komen per seconde (ongeveer) 96.000 bits binnen (zie pagina 6). Met een samplefrequentie van bijvoorbeeld 1 Khz (= 1000 metingen per seconde) wordt er een grote hoeveelheid gegevens (zo'n 95.000) niet verwerkt. Verwerkingssnelheid van de XT: De computer waarop de acquisitie plaatsvindt is een XT (voorlopig tenminste weI). Deze heeft een kloksnelheid van 4,77 MHz. Hierdoor zijn samplefrequenties boven deze frequentie niet haalbaar, zodat de samplefrequentie lager ligt dan 4,77 MHz. Hoeveelheid RAM geheugen in de verwerkings-Pc Acquisitie Programma : Zoals in de tabel staat, is er bij een groot aantal meetgegevens meer RAM nodig. Deze gegevens worden opgeslagen als een dUbbelgelinkte ketting, waardoor er ook pointers gebruikt moeten worden (pointers zijn 4 bytes groot). Door de gegevens (met pointers) in de volgende structuur te zetten kunnen ze van voren naar achteren en van achteren naar voren benaderd worden.
-14-
pointer T
fysieke meetwaarde
T
T
...
~
~
... -
-~
~
beginjeinde ketting
...
-~
~
~
~eetgegevens~
beginjeinde ketting
Het totale benodigde RAM geheugen kan nu berekend worden met behulp van de volgende formule: Bezet RAM geheugen = (2 x4 bytes+12 bytes) x
# meetgeg. + 2) 2
De 2*4 bytes komen van de 2 pointers die elk 4 bytes groot zijn, de andere 12 bytes komen van de grootte van een meetpaar. Een meetpaar bestaat uit een kracht- en een wegwaarde. De kracht- en wegwaarde bestaan elk uit een reeel getal, dat elk 6 bytes groot is. Om de hoeveelheid benodigd RAM geheugen uit te rekenen moet het aantal meetparen vermenigvuldigd worden met de totale lengte van 1 meetpaar. (zie de tekening: de 2 blokken met de puntjes ertussen om aan te geven dat hier meer blokken tussen zitten, de rest van de meetgegevens). De 2 die bij de meetparen worden opgeteld zijn het begin- en eindpunt van de lijst met meetparen. Opmerking : Dit principe (lijst) is volgens ontwerp REINDERS LIT[3]. Beschrijving van de data-structuur zoals die gehanteerd wordt in het verwerkings programma. Er zullen twee lijsten worden aangemaakt een voor de kracht en een voor de weg. De pointers van deze lijsten zullen in een structuur worden opgeslagen waarin tevens in wordt opgenomen de verplaatsing. Het voordeel hiervan is indien de gebruiker een verplaatsing heeft uitgevoerd de lijst niet hoeft doorlopen te worden om de meetpunten te veranderen. Het veranderen van de meetpunten gebeurt dan bij het wegschrijven of grafiek laten zien , aangezien dan de lijst toch moet worden doorlopen. Deze data-structuur zal er als voIgt uit (in Turbo Pascal): Signaal = Record Begin Pointer Verplaatsing end; F signaal S=signaal
PTR { pointer naar begin lijst } integer;
Signaal; Signaal;
Meetpunt = Record Volgende PTR; Vorige PTR; Waarde integer; Eigenschap eigen type; end; -15-
Een voorbeeld hoe dit er dan zal gaan uitzien. F_signaal : Begin Pointer-> Volgende -> Verplaatsing Vorige <Waarde Eigenschap
Volgende -> Vorige <Waarde Eigenschap
Volgende Vorige Waarde Eigenschap
Dit voorbeeld geldt ook voor de S signaal. Bij het realiseren van deze data-structuur zal unit Ketting (REINDERS LIT[S]) worden gebruikt.
2.3
Programmeertaal.
Het Persproef-Analyse Programma zal worden geprogrammeerd in de taal Borland Turbo Pascal 6.0. Hiervoor zijn de volgende redenen aan te wijzen: AIle voorgaande versies van het Persproef-Analyse Programma zijn ook in Turbo Pascal geprogrammeerd, waardoor het mogelijk is om zonder of met slechts geringe aanpassingen delen van een eerdere versie in het nieuw te realiseren programma op te nemen. Binnen de T.U. Eindhoven is veel kennis en ervaring aanwezig wat betreft het gebruik van Turbo Pascal. Hierdoor is het mogelijk dat medewerkers van het Laboratorium voor Omvormtechnologie later zelf kleine wijzigingen in het Persproef-Analyse Programma kunnen aanbrengen, zonder direct aangewezen te zijn op hulp van buitenaf. Dit spaart zowel tijd als ook geld.
-16-
Hoofdstuk 3 - antwerp van het implementatie model van het Persproef-Analyse Programma versie 2.00. In dit hoofdstuk wordt het implementatie model van het verwerkings-gedeelte uitgewerkt. Het implementatie model geeft aan hoe het essentieel model op een bepaald computersysteem moet worden geYmplementeerd. De volgende onderdelen zullen in dit hoofdstuk aan bod komen: Uitbreiding van het essentieel model als gevolg van de implementatie hiervan op een bepaald computersysteem. Het ontwerpen van de scherm-layout en de vormgeving van rapporten en lijsten. Het opstellen van het modulair ontwerp. Beschrijving van de gebruikte bestand-structuur. 3.1
uitbreiding van het essentieel model omwille van de implementatie van het systeem.
De uitbreiding van het essentieel model heeft betrekking op de volgende onderdelen: Uitbreiding van het gedrags model. Uitbreiding van de data dictionary.
-17-
3.1.1
uitbreidinq van bet qedraqs model.
DT 0
- Persproef-Analyse Systeem.
DT 0 is ten opzichte van het Essentieel Model uitgebreid met 2 taken (DT 4 en DT 5), 4 bestanden (#Meetpunten, Configuratie DOS· en Oriqineel (verwerking» en twee tijdelijke interne stores (data meetgegevens en bestandinfo verwerking). De eerste taak is het Hoofdmenu (DT 5). Deze taak zorgt voor de coordinatie van de Acquisitie gedeelte (DT 1) en Verwerkings gedeelte (DT 2). Een andere functie van deze taak is het beveiligen van de software. Ten eerste wordt er een paswoord gevraagd en ten tweede wordt er bij het aanroepen van de andere taken een speciale code als parameter toegevoegd. Het paswoord en de speciale code moeten correct ingevuld worden. Het paswoord om het Persproef-Analyse Programma op te starten wordt aan de gebruiker gevraagd. De speciale code is er om het gewenste programma op te starten (hetgeen alleen mogelijk is indien het paswoord correct is ingevuld) en wordt niet aan de gebruiker gevraagd. Hiervoor is de DOS· store. Dit is een tijdelijke store voor de zojuist genoemde parameters te kunnen doorgeven. Opmerking: de taak Hoofdmenu is al verwezenlijkt door Reinders LIT[3], maar is voor de duidelijkheid toch mee genomen in dit ontwerp. De tweede nieuwe taak is de Configuratie taak (DT 4). Binnen deze taak kan de gebruiker alle standaardinstellingen als programma directory, tijdelijke directory, type acquisitie kaart, type printer en type plotter invoeren of wijzigen naar eigen inzicht. Deze gegevens worden opgeslagen in de tweede nieuwe bestand: Configuratie. Door deze nieuwe taak wordt het Persproef-Analyse Programma een stuk gebruikersvriendelijker. Het tweede nieuwe bestand heet #Meetpunten. In #Meetpunten is het aantal meetpunten van de persproef opgeslagen. Deze store is nodig omdat er met verschillende programma's gewerkt wordt (Hoofdmenu, Acquisitie, Verwerking en Beheer Bestanden) die soms elkanders gegevens moeten gebruiken. Om de parameterlijst in de DOS-store niet te groot te maken wordt er gebruik gemaakt van deze store. Het laagste nieuwe bestand Origineel wordt alleen gebruikt bij het verwerkings-deel. Als een persproef is bewerkt dan wordt deze onder een andere perscode weggeschreven (het jaartal wordt vervangen door een letter, v.b. PFA31001). wil men nu de bij deze bewerkte persproef de originele ophalen, moet men weten welk getal men voor de letter moet invullen. Nu deze wordt weggeschreven in een bestand kan het programma ook in het jaar 2000 werken. De tijdelijke interne store data meetgevens wordt beschreven op pagina -21- (DT 2.1 selecteren persproef). De tijdelijke interne store bestandinfo wordt beschreven op pagina -21- DT (2.1 selecteren persproef). -18-
Tijden~
de implementatie van de interface met het bestand Pers- en Proefgegevens bleek dat TP 6.0 geen optimale file utilit~es heeft. Een ASCII-file (zoals, in dit geval Pers- en Proefg~gevens) wordt bij het herschrijven helemaal leeg gemaakt. IHierdoor moet de file helemaal opnieuw herschreven worden, wat weer wil zeggen dat aIle gegevens in een keer in het ge~eugen zijn geplaatst. Deze ruimte kan beter bespaard worden Ivoor de binnen te halen meetgegevens. Derhalve is beslot~n deze file op te splitsen in 3 kleinere file : 1) Var~abele Persgegevens, 2) Proefgegevens en 3) Proefrandvodrwaarden. Dit pr~ncipe is bedacht door Reinders LIT[3] in het dataacquis~tie gedeelte en zal daarom worden overgenomen. Maar het was to~h beter als het een groot bestand was en de gegevens in het geqeugen zouden worden gezet. De voordelen hiervan zijn : - I er kunnen meer bestanden op schijf worden gezet, I doordat er in plaats van vier bestanden, maar een I bestand is. - I door de gegevens in het geheugen te zetten heeft men weI het voordeel dat bij het printen van meerdere verslagen niet telkens de gegevens hoeft op te halen. In de nU nog volgende Data Flow diagrammen zullen deze bestande~ worden samengevoegd tot een store Pers- en Proefgegevens. De rede waarom dit wordt gedaan is niets anders dan dat de Dfd's te complex en te onduidelijk zouden worden. AIleen in afbeelding 6 zijn de bestanden afzonderlijk aangegeven. Dit is gedaan om duidelijk aan te geven waar de gegevens die in de verschillende rapporten staan vandaan komen.
-19-
~I
I
HI
tJ'
CD CD I-' g.
....l:I
~
N
keuze grafiek grafieken
pers database
configuratie
18bel
====
rapporten
rapport keuze
....
behoor bestanden
3.
reduceer-
gegevens----Ji~~l
naam persproef
iDhoudsopgave opslagmedium
# mootpunten
scherm help foutmelding
scherm help foutmelding
.
mootgegevens
pers- en proefgegevens
I N
scherm help foutmelding
dos*
hoofdmenu 5
o
toegangscode
menu-keuze
I
aid converter werkt Diet
start proef
..
besturing aid converter
configuratie
# meetpunten
starteD.
persproef
pers uitzetten
pers database pers aanzetten
scherm help foutmelding
pers- en proefgegevens en proefrandvoorwaarden
configuratie
4
additionele gegevens initialisatie aid converter
configuratie persproef analyse systoom
scherm help foutmelding
configuratie
DT 1.
- Acquisitie.
Het acquisitie-gedeelte van het Persproef-Analyse Programma staat beschreven in het rapport REINDERS LIT [3].
DT 2
- Verwerking.
pers database
grafiek-lreuze
configuratie
rapportkeuze
naam perproef
scherm help foutmelding
/
--=-da-ta-m-ee-tgegevens
____-'--z
persproef ~-
lreuze grafiek
grafiek-keuze
selecteren persproef
persproef
2.1 scherm help foutmelding
rapporten
data meetgegevens
reduceer gegevens
tabel
persproef
meetgegevens
pers- en proefgegevens grafiek
orgineel bewerken
grafiekgegevens .----{ meetgegevens
2.2 scherm help foutmelding
configuratie data meetgegevens
modelparameters
Afbeelding 3
Binnen het Verwerkings gedeelte kan de gebruiker een persproef selecteren (DT 2.1), de gekozen persproef en de daarbij gekozen grafiek bewerken (DT 2.2) en de gekozen persproef uitprinten (DT 2.3).
DT 2.1. - Selecteren persproef. Tijdens de gesprekken met de gebruiker is gebleken dat het selecteren van de persproef t.o.v. versie 1.00 verbeterd moest worden. In deze nieuwe versie zal van iedere persproef kort een overzicht met de belangrijkste gegevens worden getoond. Dit heeft tot voordeel dat de gebruiker gemakkelijk kan herkennen om welke persproef het gaat. De benodigde gegevens zijn opgeslagen in het bestand Proef-randvoorwaarde. Het steeds ophalen van de benodigde gegevens uit het bestand heeft tot nadeel dat dit lang duurt waardoor de gebruikersvriendelijkheid ook achter uit gaat. Om dit nadeel te verkomen wordt er in het geheugen een lijst aangemaakt waar deze gegevens in opgeslagen staan. Deze lijst heeft tot voordeel dat het geheel veel sneller gaat. Deze lijst wordt in afbeelding 3 aangeven met de naam bestandinfo. -21-
Nadat de persproef is geselecteerd zal de gebruiker een grafiek-keuze moeten maken. Nadat zowel de persproef als de grafiek-keuze bekend zijn zal de data store meetgevens worden aangemaakt. Deze store is een lijst waarin de meetparen in komen te staan en heeft als taak de verwerking van de meetgevens sneller te laten verlopen. DT 2.2 - Bewerken meetgevens. reduceer
orgineel
gegevens
data meetgegevens
configuratie scherm help foutmelding
tabel
grafiek gegevens scherm
bereken &. toon model parameters
2.2.2 overzicht model parameters
configuratie
Afbeelding 4
De kracht-weg kromme kan op verschillende manieren bewerkt worden (DT 2.2.1). Door middel van enkele berekeningen kunnen de modelparameters worden getoond van de grafiek (DT 2.2.2). Deze berekeningen tonen onder andere de totale deformatie arbeid die nodig was om het proces uit te voeren, de totale afstand die de stempel van de pers heeft afgelegd, de maximale kracht die de stempel heeft uitgeoefend op het werkstuk, het totale aantal meetpunten, de totale procesweg, deelprocesweg van beginpunt tot Fmax en deelprocesweg van Fmax tot ODP.
-22-
DT 2.2.1 - Bewerken van de grafiek. beginwaarde
eindwaarde
scherm
wispunt -~
1 - - - - - help foutmelding
tabel
grafiekgegevens data meetgegevens
schenn assen positie
scherm help foutmelding
grafiek
Afbeeldinq 5
Het bewerken van de grafiek bestaat uit het aanmaken van een subset (DT 2.2.1.1) en/of de assen aanpassen (DT 2.2.1.2) van de grafiek. Bij het aanmaken van een subset kunnen verschillende dingen worden aangegeven. Zo kan er bijvoorbeeld een eind - en beginwaarde worden aangegeven en kunnen afzonderlijke punten in de grafiek worden verwijderd. Bij het aanpassen van de assen kunnen zowel de X-as als Y-as worden aangepast. Ten eerste kan de Y-as naar links of rechts verplaatst worden, zodat stukken van de kromme waar zich nog geen meetgegevens bevinden overgeslagen kan worden. Hierdoor wordt een minder interessant deel van de gegevens weggefilterd en wordt er op het scherm "ingezoomd" op de werkelijke kromme. Ten tweede kan de X-as naar boven en beneden verplaatst worden. Dit wordt gedaan omdat in praktijk gebleken is dat de kaart niet geheel nauwkeurig is (de afwijking is 1 bit, volgens de specificatie van de leverancier; de originele grootte van het input signaal is 12 bits). Hierdoor kunnen de meetgegevens sprongen maken van ongeveer schaalwaarde/4096 millimeter of kiloNewton , afhankelijk van het signaal. Dit is vooral hinderlijk bij het begin van de kromme, als de waarden rond het nulpunt schommelen. Door het verplaatsen van -23-
de X-as is dit op te lossen, en weI zodanig dat bijvoorbeeld de berekening van de totale deformatie arbeid (het oppervlakte onder de kromme) op de juiste wijze plaats vindt. Heeft men zowel een subset en/of assen aangepast kan men de wijzigen bekijken door de grafiek in te zien (DT 2.2.1.3). De wijzigen worden pas echt definitief indien men van afbeelding 5 naar een niveau hoger gaat.
DT 2.3 - Produceer rapporten. Voor het tonen en afdrukken van grafieken wordt gebruik gemaakt van een door A. BRON LIT[7] geschreven grafiek-module. Deze module veronderstelt dat aIle grafiekgegevens staan vermeld in twee tijdelijke bestanden, namelijk GraphInp.Txt en PlotDef.Txt. De precieze opbouw van deze bestanden staat beschreven in de data dictionairy. Nadat het tonen en/of afdrukken van een grafiek beeindigd is, worden de tijdelijke bestanden verwijderd.
proef randvoorwaarde
rapport
maak meetrapport
graphinp.txt
rapport
grafiek-keuze
plotdef.txt
2.3.2 proefgegevens
persproef
gr Ie gegevens
grafiek-keuze
persproef
maak tabel-
rapport
/
meetparen 2.3.1
variabele persgegevens
persproef
grafiek-keuze
--~
maak vaste gegevens rapport
2.3.5 pers database rapport
Afbeeldinq 6
-24-
3.1.2
uitbreidinq van de data dictionairy.
3.1.2.1
confiquratie.
Gegevenselement Datastore configuratie
Definitie
=
=
programma directory
=
= databestanden directory
tijdelijke bestanden directory
* De drive en directory waar zich de programmabestanden bevinden. * * Te wijzigen door de gebruiker binnen Wijzigen-Instellingen *
=
* De drive en directory waar zich de databestanden bevinden. * = * Te wijzigen door de gebruiker door binnen het hoofdmenu Wijzigen-Instellingen te kiezen. *
= =
paswoord
* In deze datastore staan de default directories voor verschillende bestanden, de verschillende typen randapparatuur en verdere instellingen die voor het Persproef-Analyse Programma van belang zijn. * programma directory + databestanden directory + tijdelijke bestanden directory + paswoord + type PC-LabCard + type afdrukeenheid + opslagdrives
=
=
* De drive en directory waar het Persproef-Analyse Programma de tijdelijke bestanden plaatst. * * Te wijzigen door de gebruiker door binnen het hoofdmenu Wijzigen-Instellingen te kiezen.* * Een zesletterige code die ingevoerd moet worden voordat men met het Persproef-Analyse Programma kan werken. Dit om ongeautoriseerd gebruik te voo rkomen. * * Niet te wijzigen door de gebruiker, maar met een extern programma voor het wijzigen van bepaalde instellingen. *
-25-
type PC-LabCard
=
=
type afdrukeenheid
[718
i
818 ]
=
* Te wijzigen door de gebruiker door binnen het hoofdmenu Wijzigen-Instellingen te kiezen.*
=
* Het type afdrukapparatuur waarover de gebruiker de beschikking heeft. * [HP Laserjet III i HPGL plotter I Geen ] * Te wijzigen door de gebruiker door binnen het hoofdmenu Wijzigen-Instellingen te kiezen.*
= = opslagdrives
* Het type PC-LabCard dat in de PC zit waarmee de acquisitie plaats vindt. *
= * AIle drives met hun naam en capaci-
= =
teit. * 1 { drive } aantal drives * Niet te wijzigen door de gebruiker, maar met een extern programma voor het wijzigen van bepaalde instellingen. *
drive
=
drive naam + drivetype
drive naam
=
letter
drivetype
=
* Geeft het soort opslagmedium aan: o - 5,25" DD diskette (360 Kb), 1 - 5,25" HD diskette (1,2 Mb), 2 - 3,5" DD diskette (720 Kb), 3 - 3,5" HD diskette (1,44 Mb), 4 - Harddisk (capaciteit variabel), 5 - Niet gebruikt (indien 0-4 niet van toepassing op een bepaalde drivea anduiding). *
aantal drives
=
* Het aantal diskdrives en harde schijven dat in de PC aanwezig is * Niet te wijzigen door de gebruiker, maar met een extern programma voor het wijzigen van bepaalde instellingen. *
=
-26-
3.1.2.2
Aantal meetparen: .AMP.
Gegevenselement : Datastore aantal meetparen
Definitie = * Een extra file die wordt gebruikt om
=
het aantal meetparen in op te slaan, zodat ze niet steeds opnieuw geteld moeten worden. * Fl aantal + F2 aantal + F3 aantal + Sl-aantal + S2-aantal + S3-aantal.
F1 aantal
=
* Aantal Kracht-een meetpunten *
F2 aantal
=
* Aantal Kracht-twee meetpunten *
F3 aantal
=
* Aantal Kracht-drie meetpunten *
Sl aantal
=
* Aantal Weg-een meetpunten *
S2 aantal
=
* Aantal Weg-twee meetpunten *
S3 aantal
=
* Aantal Weg-drie meetpunten *
3.1.2.3
Bestandinfo.
Gegevenselement :Definitie Datastore bestandinfo
=
* Hierin staan gegevens over de persproeven waaraan de gebruiker een persproef kan aan herkennen * = gegevens materiaalsoort + werkstofnummer + herkomst + So + N + datum + verwerkt + perskeuze
gegevens
=
materiaalsoort
=
* Reeds vermeld in datastore "pers- en proefgegevens" de CONINCK LIT[23].*
werkstofnummer
=
* Reeds vermeld in datastore "pers- en proefgegevens" de CONINCK LIT[23].*
herkomst
= * Reeds vermeld in datastore "pers- en
proefgegevens" de CONINCK LIT[23].* = * Reeds vermeld in datastore "pers- en
proefgegevens" de CONINCK LIT[23].* N
=
* Reeds vermeld in datastore "pers- en proefgegevens" de CONINCK LIT[23].*
datum
=
* De datum waarop de persproef is vol-27-
trokken. *
=
verwerkt
= =
perskeuze
3.1.2.4
* Is het bestand reeds verwerkt of niet
*[ j a :
nee ]
* Reeds vermeld in datastore "pers- en proefgegevens" de CONINCK LIT[23].*
Oriqineel
Gegevenselement:
definitie:
origineel
=
Perscode
= =
* Deze datastore bevat de originele perscode van de bewerkte persproef. * Perscode * Reeds beschreven in datastore "persen proefgegevens" de CONINCK LIT[23-
].*
-28-
3.1.2.5
Graphlnp.txt
3
Gegevenselement: Graphinp.txt
X as definitie
definitie: * deze datastore bevat aIle gegevens die de print-module nodig heeft om een grafiek te kunnen tekenen. Wordt gebruikt door de print-module van A. Bron * = X as definitie + Y-as-definitie + TIteI definitie + Grafiek definitie + 1 {Reeks=beschrijving}Aantal_reeksen =
= =
* gegevens over de X-as van de grafiek* Min X + Max X + Label X
Min X
=
* minimale waarde X-as *
Max X
=
* maximale waarde X-as *
Label X
=
* tekst die bij X-as komt te staan *
Y as definitie
= =
* gegevens over de Y-as van de grafiek* Min Y + Max Y + Label Y
Min Y
=
* Minimale waarde Y-as *
Max Y
=
* Maximale waarde Y-as *
Label Y
=
* tekst die bij Y-as komt te staan *
Titel definitie
=
* Titel van de grafiek *
Grafiek definitie
=
* geeft aan hoe de te tekenen grafiek eruit komt te zien * Schaal + Aantal reeks en + Toon_parameters
= Schaal
= * geeft de schaalverdeling van de X- en
Y-as aan o = X-as linair, Y-as linair 1 = X-as logaritmisch, Y-as
3
Grafieklnp.txt en Plotdef.txt zijn ontleend aan van de WERFF LIT[lO]. -29-
logaritmisch
*
Aantal reeksen
=
*
geeft aan uit hoeveel reeksen X/Ywaarden deze grafiek bestaat. Elke reeks bevat de punten van een lijn of kromme *
Toon_parameters
=
*
Voor elke lijn of kromme in de grafiek kan een label(parameter) worden opgegeven. Via Toon parameters kan worden aangegeven of deze parameters getoond moeten worden of niet o = toon parameters niet 1 = toon parameters weI *
Reeks_beschrijving
=
[Oll]
= *
gegevens benodigd voor het tekenen van een kromme of lijn * Aantal coord + Reeks label + Lijntype + 1 {Coordinaten}Aantal_coord
=
Aantal coord
= *
aantal coordinatenparen van de kromme of lijn *
Reeks label
= *
label (parameters) dat bij de getekende kromme of lijn getoond wordt *
Lijntype
=*
geeft de verschijningsvorm van de grafiek aan : o = gestippeld 1 = doorgetrokken 2 = punt-stippel *
= Coordinaten
= *
=
[0:ll2]
Coordinatenpaar van een van de punten van de lijn of kromme * X coord + Y-coord
X coord
= *
X-coordinaat punt
Y coord
=*
Y-coordinaat punt
-30-
* *
3.1.2.6
Plotdef.txt:
Gegevenselement: Plotdef.txt
definitie: =
*
= Plotter definitie
=
*
=
= * = Naam_plotfile
= * =
=
=
wijze waarop de grafiek dient te worden afgedrukt * Afmeting + Plaats + Plot_volgnummer
*
afmeting van de af te drukken\ grafiek: o = A5 landscape 1 = A4 landscape * [011]
=
Plaats
=
*
= Plot_volgnummer
naam waaronder de file met grafiekgegevens (plotfile) op schijf wordt opgeslagen * DOS-filenaam lengte: 1 - 12 karakters
*
= Afmeting
type afdruk-apparaat: 1 = HPGL plotter of ander uitvoerapparaat dat deze taal ondersteunt; 2 = HP LaserJet III (peL) * [112]
=
Papier_definitie
verstrekt de gegevens die nodig z1Jn om de getekende grafiek op papier af te drukken aan de print-module van A. Bron * Plotter definitie + Papier definitie definieert afdruk-apparaat en de naam van plotfile * Plot type + Naam=:plotfile
geeft aan waar de grafiek op het papier met worden afgedrukt: o = bovenste helft pagina 1 = onderste helft pagina * [011]
= *
geeft aan of de af te drukken grafiek de eerste of de tweede grafiek op dezelfde pagina is. Indien het de eerste grafiek betreft, dan wordt de printer of plotter van tevoren gereset, in het geval van de tweede grafiek gebeurt dit niet. o = eerste grafiek op deze pagina 1 = tweede grafiek op deze pagina
=
[Oll] -31-
3.1.2.7
startcode acquisitie-gedeelte.
Gegevenselement: st_code_acq
3.1.2.8
definitie: =
*
startcode verwerkings-gedeelte.
Gegevenselement: st code ver
3.1.2.9
startcode, nodig om het acquisitiegedeelte te kunne starten. Deze code beveiligt het acquisitie-gedeelte tegen oneigenlijk gebruik. *
definitie:
= *
startcode, nodig om het verwerkingsgedeelte te kunne starten. Deze code beveiligt het verwerkings-gedeelte tegen oneigenlijk gebruik. *
startcode bestandsbeheer-gedeelte.
Gegevenselement: st code bb
definitie: =
*
startcode, nodig om het bestandbeheergedeelte te kunne starten. Deze code beveiligt het bestadnbeheergedeelte tegen oneigenlijk gebruik.
-32-
*
3.2
Specificatie schermen, lijsten en rapporten.
In deze paragraaf zullen de volgende onderwerpen aan de orde komen: Ontwerp van de scherm-Iayout. Overzicht van aIle schermmeldingen. Overzicht van aIle fout-boodschappen. Overzicht van aIle help-meldingen. Overzicht schermkleuren. Ontwerp van rapporten en lijsten.
3.2.1
scherm-layout.
Bij het ontwerpen van de scherm-Iayout van het PersproefAnalyse Programma wordt de volgende scherm-indeling gehanteerd: 12345 678 12345678901234567890123456789012345678901234567890123456789012345678901234567890 1
2 3 4
Is....
I
}- Titelballc (boven)
5 6 7 8 9
10 1
2 3 4
Werlcgebied
5 6 7 8 9
20 1 2 3 4 5
dd mnd. jjjj
LABORATORIUM VOOR OMVORMTECHNOLOGIE TUE
uu:nm
I
}- Titelballc (onder)
In de bovenste titelbalk (regel 1 tjm 3) zal het nummer van het huidige scherm en de plaats waar men zich in het programma bevindt worden weergegeven. Het werkgebied (regel 4 tjm 22) wordt gebruikt voor het afhandelen van aIle feedback van het programma naar de gebruiker. Indien een bepaalde handeling nader moet worden omschreven, dan kan hiervoor de informatieregel (regel 21) worden gebruikt. De onderste titelbalk geeft de huidige datum en tijd plus de naam van de eigenaar van het Persproef-Analyse Programma.
-33-
De bovengenoemde schermindeling wordt in aIle schermen, met uitzondering van het intro-scherm, toegepast. Eventuele meldingen, fout- en helpboodschappen verschijnen in windows, die over het op dat moment getoonde scherm worden heengelegd. Bij het ontwerpen van de scherm-Iayout worden de volgende sYmbolen gebruikt: a(x) :
b(x): c(x)
7 (x) : 8 (x) : 9 (x) :
:
Invoer van x alfanumerieke karakters. uitvoer van x alfanumerieke karakters. Afhankelijk van de situatie in- of uitvoer van x alfanumerieke karakters. Invoer van x numerieke karakters. uitvoer van x numerieke karakters. AfhankeIijk van de situatie in- of uitvoer van x numerieke karakters.
Speciale velden: dd mnd. j j j j :
Dagnummer, gevolgd door maandafkorting en jaartal, bijvoorbeeld 08 Sep. 1992.
uu:mm:Tijd (uren en minuten). opmerking met betrekking tot de state transition action table:
AIle meldingen en fout-boodschappen die in het PersproefAnalyse Programma voorkomen staan vermeld in een aparte tabel onder de eigenlijke state transition table. Deze is als voIgt opgebouwd: Nr. toestand
Actie Reactie Volgende toestand
Geeft aan bij welke toestand uit de state transition action table de getoonde meldingen en fout-boodschappen horen. Reden voor melding of fout-boodschap. Getoonde melding of fout-boodschap. Nummer van de volgende toestand in de state transition action table nadat de melding of fout-boodschap getoond is.
-34-
so -
Intro-scherm.
1 2 345 678 12345678901234567890123456789012345678901234567890123456789012345678901234567890 1 2
PERSPROEF ANALYSE PROGRAMMA
3 4 5 6 7 8
VERSIE 2.00
Data-Acquisitie en Verwerking PC <-> PC-LABCard 718/818
9
10 1
2 3 4
Copyright (C) 1993 Lab. voor Ornvormtechnologie TUE Informatie: Tel: 040 - 474521 Fax: 040 - 448665
Ir. L.J.A. Houtackers Dr. Ir. J.A.H. Ramaekers Ing. W.A.J. v.d. Eijnde Dhr. P.J.M. Reinders Dhr. R.J.J. de Coninck
5 6 7 8
I
9
Voer toegangscode in: > a(6) < (8e poging)
I
20 1
2 3 4
Voer toegangscode in of druk <Esc> om het programma te beeindigen dd mnd. jjjj
Laboratorium voor Omvormtechnologie TUE
uu:mm
5
STATE TRANSITION ACTION TABLE: Nr. toe stand 1
Veldnaam
Actie
Reactie
Toegangscode
Geldige code Esc
Ga naar Sl Einde programma
Volgende toe stand
MELDINGEN EN FOUT-BOODSCHAPPEN IN STATE TRANSITION ACTION TABLE: Nr. toe stand 1
Actie
Reactie
Ongeldige grafische kaart (geen CGA, EGA of VGA) Persprf.ins niet gevonden Ongeldige eersteftweede code Derde ongeldige code
-35-
Toon fout FOOl; einde programma Toon fout F003; einde programma Toon fout F002 Einde programma
Vo1gende toestand
1
51 -
Hoofdmenu.
12345 678 12345678901234567890123456789012345678901234567890123456789012345678901234567890 1
2 3 4 5 6 7 8 9
I
I
: Hoofdmenu
S1
-
Acquisitie data
2 -
Verwerking data
1 2
3 -
Wijzig programma-instellingen
3
4 - Bestanden beheer
1
10
4
5 6 7
5 -
Einde Persproef-AnaLyse Programma
8 9
20 1
2 3 4
Geef een cijfer of gebruik de pijLtjestoetsen, gevoLgd door <Enter> dd mnd. jjjj
Laboratorium voor omvormtechnoLogie rUE
uu:mm
5
STATE TRANSITION ACTION TABLE: Nr. toe stand 1
Veldnaam
Actie
Reactie
(idle)
Cursor omhoog Cursor omlaag 1 2
Vorige menu-item Volgende menu-item Ga naar Sll Ga naar S12 Ga naar S13 Ga naar S14 Ga naar SlA Ga naar SlA Ga naar Sll, S12, S13 of SlA, afhankelijk van cursorpositie
3 4 5
Esc Enter Andere toets
Volgende toestand 1 1
1
MELDINGEN EN FOUT-BOODSCHAPPEN IN STATE TRANSITION ACTION TABLE: Nr. toe stand 1
Actie
Reactie
'1' gekozen: Geen diskette aanwezig Acquisitie-gedeelte niet aanw. Acquisitie-gedeelte laden vanaf diskette Te weinig geheugen beschikbaar om acquisitie-gedeelte te kunnen starten
-36-
Toon melding M004 Toon fout F004
Volgende toestand
1 1
Toon melding M001 Toon fout F006
1
81
Boofdmenu (vervolq).
Nr. tee stand
Actie
Reactie
'2' gekezen: Geen diskette aanwezig Verwerking-gedeelte niet aanw. Verwerking-gedeelte laden vanaf diskette Te weinig geheugen beschikbaar em verwerking-gedeelte te kunnen starten Geen geede grafische kaart aanwezig '4' gekezen: Geen diskette aanwezig Bestanden beheergedeelte niet aanwezig Bestanden beheer-gedeelte laden vanaf diskette Te weinig geheugen beschikbaar em bestand beheer-gedeelte te kunnen starten
-37-
Teen melding M004 Teen feut FOOS
Velgende teestand
1 1
Teen melding M002 Teen feut FOO? Teen feut F008
1 1
Teen melding M004 Teen feut F009
1 1
Teen melding MOOS
1
Teen feut FOlO
1
SlA -
Einde Persproef-Analyse programma.
12345 678 12345678901234567890123456789012345678901234567890123456789012345678901234567890 1
2 3 4 5
I
I
: Hoofdmenu
51
6 7 8
-
Data-acquisitie
2 -
Data-verwerld ng
1
9
10 1 2 3 4
Einde Persproef-Analyse Programma
5 6 7
Zeker weten (J/N)
>c<
8 9
20 1
2 3 4
Geef een cijfer of gebruik de pijltjestoetsen. gevolgd door <Enter> dd nncl. jjjj
Laboratorium voor Omvormtechnologie TUE
uu:mm
5
STATE TRANSITION ACTION TABLE: Nr. toestand 1
Veldnaam
Actie
Zeker weten
J N
Reactie
Volgende toestand 1 1
Esc Enter
Ga naar S1 Ga naar S1 indien N op cursorpositie, indien J op cursorpositie: einde programma
Andere toets
1
MELDINGEN EN FOUT-BOODSCHAPPEN IN STATE TRANSITION ACTION TABLE: Nr. toestand
Actie
Reactie
Geen meldingen en/of fouten
-38-
Volgende toe stand
811 -
Data-acquisitie.
Het ontwerp van de scherm-layout voor het Acquisitie-gedeelte staat beschreven in het rapport REINDERS LIT[3].
-39-
812 -
Verwerking.
1 2 3 4 5 678 12345678901234567890123456789012345678901234567890123456789012345678901234567890 1 2 3 4 5 6 7
I
:
S12
I
Hoofdmenu\Data verwerking
8 9
1 -
Selecteren FS-kromme
2 -
Bewerken FS-kromme
3 -
Uitprinten FS-kromme
10 1
2 3 4 5 6 7 8
4 - Terug naar hoofdmenu
9
20 1 2
3 4 5
Geef een cijfer of gebruik de pijltjestoetsen, gevolgd door <Enter> dd mnd. jjjj
LABORATORIUM VOOR OMVORMTECHNOLOGIE rUE
uu:nm
!
STATE TRANSITION ACTION TABLE: Nr. toe stand 1
Veldnaarn
Actie
Keuze
Cursor omhoog Cursor omlaag
Reactie
1 2 3 4
Enter Esc Andere toets
Volgende toestand
Ga naar vorige menu item 1 Ga naar volgende menu item 1 Ga naar S121 Ga naar S122 Ga naar S123 Ga naar Sl Ga naar S121,S122,S123 of Sl afhankelijk van cursorpositie Ga naar Sl 1
MELDINGEN EN FOUT-BOODSCHAPPEN IN STATE TRANSITION ACTION TABLE: Nr. toe stand 1
Actie
Reactie
'2' Gekozen en nog geen persproef geselecteerd
Toon melding M038
'3' Gekozen en nog geen persproef geselecteerd
Toon melding M038
-40-
Volgende toe stand
S121 -
Selecteren FS-kromme.
1 234 5 678 12345678901234567890123456789012345678901234567890123456789012345678901234567890 1 2 3
S121
Hoofdmenu\Data verwerking\Selecteren FS-kromme
:
4 5 6 7 8 9
10 1 2 3 4 5 6 7 8 9
20 1 2
3 4 5
t,!
= selecteren <Enter>=accepteren <Esc>=terug
dd mnd. jjjj
Laboratorium voor Ornvormtechnologie rUE
uu:mm
I
STATE TRANSITION ACTION TABLE: Nr. toe stand 1
Veldnaam
Actie
Reactie
Volgende toe stand
Toon Melding M039 Ga naar S121A indien persproef keuze leeg is Ga naar S121B indien persproef keuze niet leeg is -
(idle)
MELDINGEN EN FOUT-BOODSCHAPPEN IN STATE TRANSITION ACTION TABLE: Nr. toestand 1
Actie
Reactie
Ingestelde data-drive bestaat niet
Toon fout F038 Ga naar S12 Toon Melding M004
Geen diskette aanwezig Ingestelde data-directory bestaat niet
Toon fout F039i Ga naar 512
Data-directory bevat geen persproeven
Toon fout F040i Ga naar S12
-41-
Volgende toe stand
1
S121A -
Selecteren FS-kromme.
123 4 5 6 7 8 12345678901234567890123456789012345678901234567890123456789012345678901234567890 1
2
S121
:
Hoofdmenu\Data verwerking\Selecteren FS-kromme
3
4 5 6 7 8 9
10 1 Wilt u met deze persproef doorgaan
2 3 4
(J/N) ?
Antwoord: .1>4
5 6 7 8 9
20 1 2
t,l = selecteren <Enter>=accepteren <Esc>=terug
3 4
dd mnd. jjjj
5
Laboratorium voor Ornvormtechnologie rUE
uu:mm
STATE TRANSITION ACTION TABLE: Nr. toestand 1
Veldnaam
Actie
antwoord
J N
Reactie
Volgende toestand 1 1
Ga naar S12 Ga naar S121B indien N op cursorpositie, ga naar S121C indien J op cursorpositie
Esc Enter Andere toets
-42-
1
Selecteren FS-kromme.
S121B
1 234 5 678 12345678901234567890123456789012345678901234567890123456789012345678901234567890 1 2
3 4 5 6 7 8 9
10 1 2 3 4
5 6 7 8 9
20 1
S121
: Hoofdmenu\Data verwerking\Selecteren FS-kromme
Persproef:
Bijbehorende gegevens:
bbbbbbbb bbbbbbbb bbbbbbbb bbbbbbbb
Naam Materiaalsoort Werkstof-Nummer Herkomst materiaal Plaatdikte Aantal meetparen Datum Proef reeds verwerkt Merk pers
bbbbbbbb bbbbbbbb bbbbbbbb bbbbbbbb bbbbbbbb
:
: : : : : : : :
b(8) b(25) b(15) b(25) 8(5) 888 888 888 888 888 b(8) b(3) b(15)
bbbbbbbb
t,1 = selecteren <Enter>=accepteren <Esc>=terug
2
3 4 5
dd mnd. jjjj
Laboratorium voor Omvormtechnologie TUE
uu:mm
STATE TRANSITION ACTION TABLE: Nr. toestand 1
Veldnaam
Actie
Reactie
(idle)
Cursor omhoog Cursor omlaag Enter Esc Andere toets
Ga Ga Ga Ga
naar naar naar naar
Volgende toestand vorige persproef volgende persproef S121C S12
1 1 1
MELDINGEN EN FOUT-BOODSCHAPPEN IN STATE TRANSITION ACTION TABLE: Nr. toe stand 1
Actie
Reactie
Enter
Toon melding M040
-43-
Volgende toestand
S121C - Selecteren FS-kromme. 12345 678 12345678901234567890123456789012345678901234567890123456789012345678901234567890 1 2 3
: Hoofdmenu\Data verwerking\5electeren F5-kromme
5121
4 5 6 7 8 9
10 1 2
3 4 5 6 7 8
1 2 3 -
Grafiek kracht 1 tegen weg 1 Grafiek kracht 2 tegen weg 2 Grafiek kracht 3 tegen weg 3
4 5 6 7 8 9
Grafiek Grafiek Grafiek Grafiek Grafiek Grafiek
-
kracht kracht kracht kracht kracht kracht
2 3 1 1 2 3
tegen tegen tegen tegen tegen tegen
weg weg weg weg weg weg
bb888888
1 1 2 3 3 2
9
20 1
2 3 4 5
Geef een cijfer of gebruik de cursorstoetsen, gevolgd door <Enter> dd mnd. jjjj
Laboratorium voor Ornvormtechnologie rUE
uu:mm
I
STATE TRANSITION ACTION TABLE: Nr. toe stand 1
Veldnaam
Actie
Reactie
Menu keuze
Cursor omhoog Cursor omlaag Cijfer = 1..9 Cijfer en grafiek kan niet worden gemaakt Enter Enter en grafiek kan niet worden gemaakt
Naar vorige menu item Naar volgende menu item Ga naar S12
Esc Andere toets
Volgende toestand 1 1
Ga naar S1210 Ga naar S12 Ga naar S1210 Ga naar S12 1
MELOINGEN EN FOUT-BOOOSCHAPPEN IN STATE TRANSITION ACTION TABLE: Nr. toe stand
Actie
Reactie
1
Grafiek bestaat al
Toon melding M035
1
Grafiek bestaat niet
Toon melding M041
-44-
Vo1gende toe stand
S121D - Selecteren FS-kromme. Hoofdmenu\Data verwerking\SeLecteren FS-kromme
S121
1 2 -
bb999999
Grafiek kracht 1 tegen weg 1 Grafiek kracht 2 tegen weg 2
Deze grafiek kan niet worden gemaakt. WiLt u dat de origineLe persproef wordt opgehaald (J/N) : Antwoord:
~a ..
Geef een cijfer of gebruik de cursorstoetsen, gevoLgd door <Enter> dd nnd. jjjj
Laboratorium voor Omvormtechnologie TUE
uu:mm
STATE TRANSITION ACTION TABLE: Nr. toe stand 1
Veldnaam
Antwoord
Actie
Reactie
Volgende toestand 1 1
J
N
Ga naar 512 indien Ja, nee Ga naar 5121B Ga naar S121B
Enter Esc
MELDINGEN EN FOUT-BOODSCHAPPEN IN STATE TRANSITION ACTION TABLE: Nr. toestand
Actie
Reactie
Geen fouten en/of meldingen
-45-
Volgende toe stand
8122 -
Bewerken F8-kromme.
1 234 5 678 12345678901234567890123456789012345678901234567890123456789012345678901234567890 1
2 3 4 5
: Hoofdmenu\Data verwerking\Bewerken FS-kromme
S122
6 7 8 9
10
1
1
2
-
bb888888
Grafiek bewerken
2 -
Grafiek berekenen
3 -
Terug naar verwerkingsmenu
3 4 5 6 7 8 9
20 1 2
Geef een cijfer of gebruik de cursorstoetsen, gevolgd door <Enter>
3 4 5
dd nnd. jjjj
Nr. toestand 1
Laboratorium voor Ornvormtechnologie TUE
Veldnaam
Actie
(idle)
Cursor omhoog Cursor omlaag
uu:mm
Reactie
1 2 3
Esc Enter
Volgende toestand
Vorig menu-item Volgende menu-item Ga naar S1221 Ga naar S1222 Ga naar S12 Ga naar S12 Ga naar S12, S1221 of S1222 afhankelijk van cursorpositie
1 1
MELDINGEN EN FOUT-BOODSCHAPPEN IN STATE TRANSITION ACTION TABLE: Nr. toe stand
Actie
Reactie
Geen fouten en/of meldingen
-46-
Volgende toe stand
81221 - Grafiek bewerken. 1 234 5 678 12345678901234567890123456789012345678901234567890123456789012345678901234567890 1 2 3 4 5 6 7 8 9
S1221
:
••• \Data verwerking\Bewerken FS-kromme\Grafiek bewerken bb888888
1
10 1
-
Aanmaken van een subset
2 - Assen aanpassen 3 -
2 3 4 5 6 7 8
Grafiek inzien
4 - Terug naar bewerkingsmenu
9
20 1
2 3 4
Geef een cijfer of gebruik de cursorstoetsen, gevolgd door <Enter> dd nnd. jjjj
Laboratorium voor Ornvormtechnologie TUE
uu:nm
5
STATE TRANSITION ACTION TABLE: Nr. toestand 1
Veldnaam
Actie
Reactie
Keuze
Cursor omhoog Cursor omlaag
Vorige menu-item Volgende menu-item Ga naar S122l1 Ga naar S12212 Ga naar S12213 Ga naar S122 Ga naar S12211 , S12212 S12213 of S122 afhankelijk van cursorpositie
1 2 3 4
Enter Esc + bewerking uitgevoerd Esc + geen bewerking uitgevoerd Andere toets
Volgende toe stand 1 1
Ga naar S1221A Ga naar S122 1
MELDINGEN EN FOUT-BOODSCHAPPEN IN STATE TRANSITION ACTION TABLE: Nr. toe stand 1
Actie
Reactie
'1' gekozen en originele persproef geselecteerd
Toon melding M037
'2' gekozen en originele persproef geselecteerd
Toon melding M037
-47-
Volgende toe stand
Grafiek bewerken (vervolg). MELDINGEN EN FOUT-BOODSCHAPPEN IN STATE TRANSITION ACTION TABLE: Nr. toe stand
Reactie
Actie
Origineel persproef gekozen: '4' gekozen en 1 geen bewerkingen uitgevoerd en origineel niet op doel station aanwezig
Toon melding M045, M046
'4' gekozen en geen bewerkingen uitgevoerd en origineel wei op doel station aanwezig
Toon melding M045
'4' gekozen en bewerkingen uitgevoerd en origineel niet op doel station aanwezig
Toon melding M045, M046
'4' gekozen en bewerkingen uitgevoerd en origineel wei op doel station aanwezig
Toon melding M045
Bewerkte persproef gekozen: 1 '4' gekozen en de grafiek bestaat niet en geen bewerkingen uitgevoerd
Toon melding M047
'4' gekozen en de grafiek bestaat niet en wei bewerkingen uitgevoerd
-48-
Toon melding M048
Volgende toe stand
S1221A - Grafiek bewerken.
51221
••• \Data verwerking\Bewerken F5-kromme\Grafiek bewerken bb888888
1 - Aanmaken van een subset Er zijn bewerkingen uitgevoerd. Deze bewerkingen gaan verloren indien u annuleert. Wilt u toch annuleren (J/N) ? Antwoord: .a..
Geef een cijfer of gebruik de cursorstoetsen, gevolgd door <Enter> dd rmd. jjjj
laboratorium voor Omvormtechnologie TUE
uu:mm
STATE TRANSITION ACTION TABLE: Nr. toestand
Veldnaam
Actie
1
Annuleren
J N
Reactie
Volgende toestand 1 1
Ga naar S1221 indien N op cursorpositie, indien J op cursorpositie ga naar S122
Enter Andere toets
1
MELDINGEN EN FOUT-BOODSCHAPPEN IN STATE TRANSITION ACTION TABLE: Nr. toe stand
Actie
1
J
Reactie
ingevuld
Toon melding MOSO
-49-
Volgende toestand
812211 - Het maken van een subet. S12211
bb888888
•• \Grafiek bewerken\Subset maken Fb
Sb
88888.88 88888.88 88888.88 88888.88 88888.88 88888.88 88888.88 88888.88 88888.88 88888.88
88888.888 88888.888 88888.888 88888.888 88888.888 88888.888 88888.888 88888.888 88888.888 88888.888
I
I
Fb
Sb
88888.88 88888.88 88888.88 88888.88 88888.88 88888.88 88888.88 88888.88 88888.88 88888.88
88888.888 88888.888 88888.888 88888.888 88888.888 88888.888 88888.888 88888.888 88888.888 88888.888
Fb
Sb
88888.88 88888.88 88888.88 88888.88 88888.88 88888.88 88888.88 88888.88 88888.88 88888.88
88888.888 88888.888 88888.888 88888.888 88888.888 88888.888 88888.888 88888.888 88888.888 88888.888
t,!= selecteren eginwaarde <E>indwaarde <\I>issen erstel ijdelijk opslaan <Esc> = annuleren = help = help
dd nnd. jjjj
uu:mm
Laboratorium voor Ornvormtechnologie TUE
STATE TRANSITION ACTION TABLE: Nr. toe stand 1
Veldnaam
(idle)
Volgende toe stand
Actie
Reactie
Cursor omhoog Cursor omlaag B
Home End
Naar vorige meetpaar Naar volgende meetpaar Zet 'Begin punt' markering Zet 'Eind punt' markering Zet 'Wis punt' markering Verwijder markering Bewaar de veranderingen Ga naar scherm S1221 Ga naar meetpunten 1 scherm hoger Ga naar meetpunten 1 scherm lager Ga naar eerste meetpunt Ga naar laatste meetpunt
Esc
Ga naar scherm S1221
E W H T PgUp PgDn
1 1 1 1 1 1 1 1 1 1
MELDINGEN EN FOUT-BOODSCHAPPEN IN STATE TRANSITION ACTION TABLE: Nr. toe stand 1
1
Actie
Reactie
Volgende toe stand
Indien Begin punt en punt is laagste punt Indien Eind punt en punt is eerste punt
Toon fout F036
1
Toon fout F037
1
Cursor omhoog en men staat op het eerste meetpaar
Toon melding M042
-50-
Bet maken van een subset (vervolg). MELDINGEN EN FOUT-BOODSCHAPPEN IN STATE TRANSITION ACTION TABLE: Nr. tee stand 1
1
1
Actie
Reactie
Curser emlaag en men staat ep het laatste meetpaar
Teen melding M042
Pagup en er is geen pagina meer veer
Teen melding M043
Pagdewn en er is geen pagina meer na
Teen melding M044
-51-
Velgende teestand
Assen aanpassen.
812212
1 2 3 4 5 678 12345678901234567890123456789012345678901234567890123456789012345678901234567890 1
512212
2 3 4 5 6 7 8 9
:
bb888888
•. \Grafiek bewerken\As aanpassen
X-as: Aanpassen (J/N) : b VerpLaatsing + of - : b Xnieuw =Xoud + [88888888] in om
10 1
2 3 4 5 6 7
V-as: Aanpassen (J/N) : b VerpLaatsing + of - : b Ynieuw = Youd - [88888888] in Nw
8 9
20 1 2 3 4 5
dd mnd. jjjj
Laboratorium voor OmvormtechnoLogie TUE
uu:om
STATE TRANSITION ACTION TABLE: Nr. toe stand 1
Veldnaam
X-as Aanpassen
Actie
Reactie
1 1
J N
Enter + N
4
2
J
2
3
4
X-as Verplaatsing + X-as nieuw Y-as Aanpassen
Enter en + of -
2 2 3
getal
4
J N
4
4
Enter + N
Ga naar S12212A
+ J 5
5
Y-as Verplaatsing +
5 5
Enter en + of 6
Y-as nieuw
Volgende toe stand
getal
6
Ga naar S12212A
MELDINGEN EN FOUT-BOODSCHAPPEN IN STATE TRANSITION ACTION TABLE: Nr. toe stand
Actie
Reactie
Geen fouten en/of meldingen
-52-
Volgende toestand
S12212A - Assen aanpassen. 1 2 345 678 12345678901234567890123456789012345678901234567890123456789012345678901234567890 1 2 3 4
512212
:
bb888888
•• \Grafiek bewerken\As aanpassen
5
X-as:
6 7 8
Aanpassen (UN) : b VerpLaatsing + of - : b Xnieuw Xoud + [88888888] in
9
=
10 1 2 3 4 5 6 7 8 9
ITII1
Y-as: Aanpassen (J/N) : b VerpLaatsing + of - : b Ynieuw = Youd - [88888888] in Nw
20
Zijn deze waardes goed (J/N) ? :
1
2 3 4
dd II11d. jjjj
.b.
Laboratorium voor OmvormtechnoLogie TUE
5
uU:1TII1
i
STATE TRANSITION ACTION TABLE: Nr. toe stand
Veldnaam
1
Ok
Actie
Reactie
Volgende toestand 1 1
J
N Enter
Ga naar 512212 indien N op cursorpositie, indien J op cursorpositie ga naar 51221 1
Andere toets MELDINGEN EN FOUT-BOOD5CHAPPEN IN 5TATE TRANSITION ACTION TABLE: Nr. toe stand
Actie
Reactie
Geen fouten en/of meldingen
-53-
Volgende toe stand
812213 - Grafiek Inzien. Dit is een grafisch scherm waarop de grafiek is afgebeeld. Er wordt gebruik gemaakt van de grafiek module van dhr. A. Bron. Een voorbeeld hiervan is de volgende afbeelding. 10'- ...
Labora1ol"iuIIl voor OavormtechnoloQie TUE 2.00
/\
1.20
\ A
II II
o.so
II
1
[2 ....
c
.~
1:u
.'"
0."10
[
~
< 0.00 120.000
130.000
1"'0.000
""
150.000
160.000
170.000
==>
L.leg in [Ill/l\]
Afdrukken: J/N Krach1-wec;J kromme in c;Jrafiek vorm. Perscode
-54-
I
PF'931001 (GraHek F'151.)
81222 - Grafiek berekenen •
••• ~a~a uerwerking'bewerken
S1.222
FS-kro""e~ra~iek
bewerken
PF931.00J.
SCHETS-~----====""-""''''''''''''''''''''''''''--------==-====='''
= Het origineel aantal ...eetparen
H
= De = De
F...ax
sa
...axiMale proceskracht aanuangs procesweg
= De eind procesweg ~to~aal = De totale procesweg De totale steMpelweg = Arbeid
Se
=
rzza
S
r;==== PROCESPARAHERTERS==========================jJ
H
Fl1Iax proces Sa Se Stotaal
[H] [111
]
[111
]
[111111]
h
[111111]
Arbeid
[HI1II1I]
1.64 13256.84 2.295 9.131 11.426 96.000 147408.500
Druk op een toets II JL9
~,an.
1.994
LaboratoriuM voor OMUorMtechnologie TUE
Dit is een voorbeeld zo als het eruit gaat zien.
-55-
1.3:08
S123 - uitprinten FS-gegevens. 12345 678 12345678901234567890123456789012345678901234567890123456789012345678901234567890 1
2 3 4 5 6 7 8 9
S123
bb888888
: Hoofdmenu\Data verwerking\Uitprinten FS-gegevens
1
10 1
2 3 4 5 6 7 8 9
-
Standaard meet rapport
2 -
Item 1 + Standaard FS-grafiek(en)
3 -
Item 2 + labeL meetgegevens
4 -
Item 3 + Vaste/variabeLe en insteLgegevens van de pers
5 -
CompLeet meet rapport
6 -
lerug naar verwerkingsmenu
20 1
2 3 4
SeLecteer het versLag dat u uitgeprint wilt hebben «Esc>=terug) del nnd. jjjj
laboratorium voor Ornvormtechnologie lUE
uu:mm
5
I
STATE TRANSITION ACTION TABLE: Nr. toe stand 1
Veldnaam
Keuze
Actie
Reactie
1 tim 4
Ga Ga Ga Ga
5
6 Esc Andere toets
naar naar naar naar
Volgende toe stand S123A S123B S12 S12 1
MELDINGEN EN FOUT-BOODSCHAPPEN IN STATE TRANSITION ACTION TABLE: Nr. toestand 1
Actie
Reactie
Directory met tijdelijke gegevens niet gevonden Geen printer/plotter geselecteerd Verkeerde printer/plotter geselecteerd Printer/plotter off-line Te weinig schijfruimte om bestanden op te slaan Diskette met schrijfbeveiliging
Geef fout F017
1
Geef fout F027
1
Geef fout F028
1
Geef fout F021 Geef fout F026
1 1
Geef fout F032
1
-56-
Volgende toestand
3.2.2
overzicht meldingen.
Alle meldingen verschijnen in melding-windows. De window-afmetingen zijn als volgt gedefinieerd: 1 234 5 678 12345678901234567890123456789012345678901234567890123456789012345678901234567890 1 2 3
4
I
I
5 6 7
8 9
10 1
<
Melding-boodschap b(210)
>
2 3 4 5 6 7 8 9
20 1 2 3 4 5
dd rnnd. jjjj
Laboratorium voor Ornvormtechnologie rUE
uu.nm
I
De meldingen die hieronder worden getoond hebben aileen maar betrekking tot het verwerkings gedeelte. Hierdoor zijn ze niet opeenvolgend. Melding-nr: Omschrijving:
MOOI
Het acquisitie-gedeelte wordt geladen. Even geduld a.u.b •••
M002
Het verwerking-gedeelte wordt geladen. Even geduld a.u.b •..
M004
Zorg dat er een diskette in drive <station> zit.
MOOS
Het bestand beheer gedeelte wordt geladen. Even geduld a.u.b.
M03S
Deze grafiek bestaat ale Gegevens worden nu ingelezen.
M036
Nog open.
M037
Er wordt nu een nieuwe set van deze perproef gemaakt.
M038
Er is nag geen persproef geselecteerd. Volgend scherm is het selectie scherm.
M039
Voorbereiden persproef-selectie. Even geduld a.u.b.
M040
Een moment A.U.S. de selectie van de grafiek wordt voorbereid.
M041
Een moment A.U.S de meetgegevens worden opgehaald.
M042
U kunt niet verder gaan, meer meetparen zijn er niet.
M043
Er is hiervoor geen pagina meer.
-57-
overzicht meldinqen (vervolg). M044
Er is hierna geen geen pagina meer.
M04S
Even geduld A.U.S. gegevens van de nieuwe persproef worden weggeschreven. proefgegevens. [ ) Proef-randvoorwaarden. [ ) Variabele Persgegevens. [ ) Vaste Persgegevens. [ ) Meetgegevens. [ ) Aantal meetpunten. [ ) Grafiekgegevens.
r)
M046
Even geduld A.U.S. gegevens van de originele persproef worden gekopieerd. Proefgegevens. [ ) Proef-randvoorwaarden. [ ) Variabele Persgegevens. [ ) Vaste Persgegevens. [ ) Meetgegevens. [ ) Aantal meetpunten.
r)
M047
Even geduld A.U.B. grafiek gegevens van persproef worden weggeschreven.
M048
Even geduld A.U.S. grafiekgegevens en de gewijzigde meetgevens van persproef worden weggeschreven.
M049
Even geduld A.U.S. modelparameters worden weggeschreven.
MOSO
Even geduld A.U.S. De uitgevoerde bewerkingen worden ongedaan gemaakt.
MOSl
Het station met de directory waar naartoe de bewerkte gegevens worden weggeschreven, bevat te weining opslag capaciteit.Vervang de diskette door een andere. In geval van de hard-disk verlaat het programma en maak plaats.
-58-
3.2.3
overzicht fout-boodschappen .•
AIle fouten verschijnen in fout-windows (m.u.v. fout no. 1). De window-afmetingen zijn als voIgt gedefinieerd: 12345 678 12345678901234567890123456789012345678901234567890123456789012345678901234567890 1 2 3 4 5
I
I
6 7 8 9
Fout no. 888
10 1 2 3 4 5 6 7 8 9
<
fout-boodschap b(210)
>
20 1 2
3 4 5
del mel. jjjj
Laboratorium voor Omvormtechnologie TUE
uu.rnn
De foutboodschappen die hieronder worden getoond hebben alleen maar betrekking tot het verwerkings gedeelte. Hierdoor zijn ze niet opeenvolgend. Fout-nr:
Ornschrijving:
FOOl
Ongeldig type grafische kaart aangetroffen. Om het Persproef-Analyse Programma te kunnen gebruiken moet u beschikken over een CGA, EGA of VGA grafische kaart.
F002
Ingevoerde toegangscode is niet correct. Voer de toegangscode opnieuw in.
F003
Instellingenbestand "Persprf.ins" niet gevonden. Persproef-Analyse Programma kan niet worden voortgezet zonder dit bestand.
F004
Deze versie van het Persproef-Analyse Programma bevat geen acquisitie-gedeelte. Vraag indien nodig de systeembeheerder voor een diskette met het bijbehorende acquisitie-gedeelte.
FOOS
Deze versie van het Persproef-Analyse Programma bevat geen verwerking-gedeelte. Vraag indien nodig de systeembeheerder voor een diskette met het bijbehorende verwerking-gedeelte.
F006
Er is een fout opgetreden bij het starten van het acquisitie-gedeelte. Controleer of er voldoende geheugen beschikbaar is (minimaal 300 kb) en het commando FILES=xx (met xx minimaal 30) is opgenomen in CONFIG.SYS.
F007
Er is een fout opgetreden bij het starten van het verwerking-gedeelte. Controleer of er voldoende geheugen beschikbaar is (minimaal 300 kb) en het commando FILES=xx (met xx minimaal 30) is opgenomen in CONFIG.SYS.
-59-
Overzicht fout-boodschappen (vervolg). Fout-nr:
Omschrijving:
F008
Er is geen grafische kaart aanwezig. Deze is echter wel nodig voor het verwerkingsprogramma.
F009
Het bestand beheer programma komt niet voor in de huidige programmadirectory. Dit is meestal het gevolg van een installatiefout. Raadpleeg de systeembeheerder.
FOIO
Er is een gedeelte. (minimaal opgenomen
F017
De directories zoals ze zijn opgeslagen in het bestand Persprf.ins komen niet overeen met de werkelijkheid. Wijzig met de menu-optie Wijzig programma-instellingen (Hoofdmenu) de directories.
F018
Nog open.
F019
Nog open.
F021
Printer/plotter reageert niet. Controleer of de printer/plotter ingeschakeld en ON-LINE staat.
F026
De disk(ette) in station bevat onvoldoende vr~Je ruimte om de voor het tonen of afdrukken van grafieken noodzakelijke tijdelijke bestanden te kunnen opslaan.
F027
Er is geen printer/plotter geselecteerd om de grafiek af te drukken.
F028
Het verkeerde afdruk-apparaat is geselecteerd. Rapporten kunnen aIleen afgedrukt worden op een laserprinter.
F032
Diskette in station heeft schrijfbeveiliging.
F036
Laagste punt kan niet geselecteerd worden als beginpunt.
F037
Eerste punt kan niet geselecteerd worden als eindpunt.
F038
Het in de persproef-directory opgegeven diskette station heeft op deze computer-configuratie geen betekenis.
F039
Ongeldige-directory aanduiding. Station <station> bevat geen directory .
F040
De persproef-directory bevat geen persproeven.
F041
Hardware-fout op station <station>. Diskette niet geformateerd ?
F042
Fout geconstateerd met code bij een poging om station <station> te gebruiken. Zie handleiding voor toelichting.
fout opgetreden bij het starten van het bestand beheer Controleer of er voldoende geheugen beschikbaar is 300 kb) en het commando FILES=xx (met xx minimaal 30) is in CONFIG.SYS.
-60-
overzicht help-boodschappen.
3.2.4
H006 - Hulp-scherm.
S12211
:
•• \Grafiek bewerken\Subset maken
.-
bb999999
Persproef-Analyse Programma HELP
1-
-
1/2 HET MAKEN VAN EEN SUBSET Markerings mogelijkheden.
.....
egin
: Het markeren van een meetpaar als beginpunt.
<E>ind
: Het markeren van een meetpaar als eindpunt.
<W>issen
: Het markeren van een meetpaar als gewist te worden.
erstellen : Het herstellen van een meetpaar indien dit dit gemarkeerd is. <Esc>
= Terug
dd mnd. jjjj
= Volgende
[ - -> ]
-
pagina
Laboratorium voor Omvormtechnologie TUE
-61-
uu:mm
HOO6A - HuLp-schena.
S12211
:
bb999999
•• \Grafiek bewerken\Subset maken Persproef-Analyse Programma HELP
F"""
1=
2/2 -
-
HET MAKEN VAN EEN SUBSET Blader Funkties. t !
: :
Ga een meetpaar naar boven. Ga een meetpaar naar beneden.
<Pageup> : Ga een bladzijde naar boven. <PageDown> : Ga een bladzijde naar beneden.
-
<End> <Esc>
: :
Ga naar eerste meetpaar. Ga naar laagste meetpaar.
= Terug
dd mnd. jjjj
= Vorige
,-
pagina
Laboratorium voor Omvormtechnologie TUE
-62-
uu:mm
3.2.5
Schermkleuren.
De kleuren van de verschillende onderdelen van het PersproefAnalyse Programma zijn aangegeven op de manier waarop ze in Turbo Pascal 6.0 moeten worden geYmplementeerd. Onderdeel: Intro-scherm. omschrijving:
Kleur:
Voorgrondkleur Voorgrondkleur (accent) Achtergrondkleur Kleur van de kaderrand
Black Red LightGray White
Onderdeel: Titelbalk boven. omschrijving:
Kleur:
Voorgrondkleur Voorgrondkleur (accent) Achtergrondkleur Kleur van de kaderrand
Red Yellow LightGray White
Onderdeel: Titelbalk onder. omschrijving:
Kleur:
Voorgrondkleur Achtergrondkleur Kleur van de kaderrand Kleur datumjtijdaanduiding
White LightGray White Red
Onderdeel: Werkgebied. omschrijving:
Kleur:
Voorgrondkleur Voorgrondkleur (accent) Achtergrondkleur Kleur van de kaderrand Kleur informatieregel Kleur informatieregel (accent)
Blue White LightGray White Red White
Onderdeel: Keuzemenu. omschrijving:
Kleur:
Kleur tekst onder de menubalk
White
Onderdeel: Invoer-regel. omschrijving:
Kleur:
Kleur invoer-begrenzing Kleur van de ingevoerde tekst Kleur van de vrije posities
White Black White
-63-
Schermkleuren (vervolg). Onderdeel: Melding-window. Omschrijving:
Kleur:
Voorgrondkleur Voorgrondkleur (accent) Achtergrondkleur Kleur van de kaderrand
White LightCyan Blue White
Onderdeel: Fout-window. Ornschrijving:
Kleur:
Voorgrondkleur Voorgrondkleur (accent) Achtergrondkleur Kleur van de kaderrand
White Yellow Red White
Onderdeel: Help-window. Ornschrijving:
Kleur:
Voorgrondkleur voorgrondkleur (accent) Achtergrondkleur Kleur van de kaderrand
Yellow LightCyan Black Yellow
Onderdeel: Einde programma. Omschrijving:
Kleur:
Voorgrondkleur Achtergrondkleur Kleur van de kaderrand
White Red White
-64-
3.2.6
Layout lijsten en rapporten.
3.2.6.1
Standaard meetrapport.
12345 678 12345678901234567890123456789012345678901234567890123456789012345678901234567890 1 -------------------------------------------------------------------------------2 3 lABORATORIUM VOOR OMVORMTECHNOlOGIE TUE 4 STANDAARD MEETRAPPORT 5 6 7 bb888888
8 9 -------------------------------------------------------------------------------10 1
2
3 4 5 6 7 8 9
20 1 2
3 4 5 6 7 8 9
30 1 2 3 4 5 6 7 8 9
Proefgegevens: Perscode Materiaalsoort Herkomst materiaal Plaatdikte sO [mm] Dat\.ITI proef Aantal metingen Code trekproeven
bb888888 bbbbbbbbbbbbbbbbbbbbbbbbb bbbbbbbbbbbbbbbbbbbbbbbbb 888888 88-88-88 88888888 bbbbbbbb bbbbbbbb bbbbbbbb
operator Projectleider
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
Merk pers Type pers Serienunmer
bbbbbbbbbbbbbbb bbbbbbbbbbbbbbb 888888888888888
Type PC-labCard Range lnstell ing Samplefrequentie
PCl-888 -88 V - 88 V 8.888.888 Hz
Opmerkingen
b(50) b(50) b(50) b(50) b(50)
40 1 2
3 4 5 6 7 8 9
50
Schaalfactoren van de diverse sensoren: F1 F2 F3 S1 S2 S3
(kracht 1) (kracht 2) (kracht 3) (weg 1) (weg 2) (weg 3)
[kN/10V] [kN/10V] [kN/10V] [mm/10V] [mm/10V] [mm/10V]
bbb,bb bbb,bb bbb,bb bbb,bb bbb,bb bbb,bb
1
2
3 4 5
6 7 8 9
60 1
Modelparamerters de FS-grafiek: Aantal meetparen N Maximale proceskracht Fmax [kN] Totale procesweg Stot [mm] [mm] Aanvangsprocesweg Sa Eindprocesweg [mm] Se [Nm] Arbeid \ol [mm] De totale slag van de pers H
F1S1
F2S2
F3S3
8888888 888,88 888,88 888,88 888,88 888,88 888,88
8888888 888,88 888,88 888,88 888,88 888,88 888,88
8888888 888,88 888,88 888,88 888,88 888,88 888,88
2 3
4 --------------------------------------------------------------------------------
-65-
3.2.6.2
Standaard grafiek(en).
Dit gedeelte van het rapport kan bestaan uit een of meerdere grafiek(en) naargelang ze al aangemaakt zijn. Deze grafieken zijn de standaard grafieken F1Sl, F2S2 en F3S3.
-66-
3.2.6.3
Tabel meetgegevens.
1 234 5 678 12345678901234567890123456789012345678901234567890123456789012345678901234567890 1 -------------------------------------------------------------------------------2
3
LABORATORIUM VOOR OMVORMTECHNOLOGIE
TUE
~.
.'~,
TABEL MEETPAREN
j'
bb888888
~'
fl
~,
1C1
-------------------------------------------------------------------------------Het kracht- weg verLoop van grafieknummer 8 is aLs voLgt:
~ (kracht [kN], weg [mm])
t
~
20 1 2 3 4 5 6 7 8 9 3D 1
(888888.88, (888888.88, (888888.88, (888888.88,
88888.888) 88888.888) 88888.888) 88888.888)
(888888.88, (888888.88, (888888.88, (888888.88,
88888.888) 88888.888) 88888.888) 88888.888)
(888888.88, (888888.88, (888888.88, (888888.88,
88888.888) 88888.888) 88888.888) 88888.888)
2 3
4 5 6 7 8 9
40 1
2 3
4 5
6 7 8 9
50
(888888.88, 88888.888) (888888.88, 88888.888) (888888.88, 88888.888)
.
(888888.88, 88888.888) (888888.88, 88888.888) (888888.88, 88888.888)
(888888.88, 88888.888) (888888.88, 88888.888) (888888.88, 88888.888)
1
2 3 4 5 6 7 8 9
60 1 2
ModeLparamerters van de FS-grafiek. AantaL meetparen MaximaLe proceskracht TotaLe procesweg Aanvangsprocesweg Eindprocesweg Arbeid De totaLe slag van de pers
N
[- -]
Fmax [kN] Stot [mm] [mm] Sa [mm] Se W H
[Nm]
[mm]
8888888 888,88 888,888 888,888 888,888 888,88 888,88
3
4 --------------------------------------------------------------------------------
De meettabel kan over meerdere pagina's worden uitgeprint. Tevens is het zo dat bij iedere standaard grafiek een meettabel hoort en zo kunnen er dus meerdere meettabelen in een rapport voor komen.
-67-
3.2.6.4
vaste/variabelen en instelgegevens van de pers.
12345 678 12345678901234567890123456789012345678901234567890123456789012345678901234567890 1 -------------------------------------------------------------------------------2
3 4 5 6
LABORATORIUM VOOR OMVORMTECHNOLOGIE
TUE
VASTE PERSGEGEVENS bb888888
7 8
9 -------------------------------------------------------------------------------10 1 2 3 4 5 6 7 8 9
20 1
2 3 4 5 6 7 8 9
30 1
2 3 4
5 6 7 8 9
40 1
2 3 4 5 6 7 8 9
50 1 2 3
Vaste Persgegevens van de b(15) Merk pers Type pers Soort pers Fabri kaatm.mner Bestelnummer Schon TUE Opdrachtnummer Bouwjaar StempeLkracht Stempelslag Uitwerper/trekkussen kracht Uitwerper/trekkussen slag Opmerking: Stempelkracht Uitwerperkracht Transfer doortocht: Breedte Lengte Inbouwhoogte maximaal Opspantafel: Breedte Lengte Oikte tafel Centrale opening diameter T-sleuven 2 * diagonaal Stotertafel: Breedte Lengte Inspantap: Opening diameter Oiepte T-sleuven 2 * van voor naar Uitwerper/trekkussen tafel:
nominaal nominaaL nominaal nominaal
achter Breedte Lengte
LVU SEZ NKS Totaal vermogen Nachlaufweg Sicherheits abst. Dampfung/Persdruk/Uitwerperdruk
FpN HpN FuN HuN
b(15) b(15) b(15) 8(15) 8(15) b(15) 8888/88 8888 kN A 8888 bar 8888 nm 8888 kN A 8888 bar 8888 nm 88,88 kN/bar 88,88 kN/bar 8888 nm 8888 nm 8888 nm 8888 nm 8888 nm 8888 nm 8888 nm b( 15) 8888 nm 8888 nm b(5) 8888 nm b(15) 8888 nm 8888 nm 8888 b(3) b(3) 888 kW 888 nm max 888 nm min 888 - 888 bar
4
5 6
7 8 9
60 1 2 3
4 --------------------------------------------------------------------------------
-68-
12345 6 7 8 12345678901234567890123456789012345678901234567890123456789012345678901234567890 1 -------------------------------------------------------------------------------2 LABORATORIUM VOOR OMVORMTECHNOLOGIE TUE 3 4 5 VARIABELE PERSGEGEVENS 6 bb888888 7
8
9 -------------------------------------------------------------------------------10 1 2 3 4 5 6 7 8 9
20
1 2 3 4
5 6 7 8 9
30 1
2 3 4 5 6 7 8 9
40
1 2 3 4 5 6 7 8 9
Variabele persgegevens b(15) pers: Maximale procestijd in seconden Schnittschlag dampfung schaltpunkt druk 0- 200 bar Schnittschlag dampfung schaltpunkt slag 0- 150 bar Werkzeugsicherung druk 0- 300 bar Festanschlagverstellung slag 0- 100 bar Perskracht max druk 0- 300 bar Perskracht max {6.67 kN/bar} Kracht 0-2001 kN Uitwerperkracht max druk 0- 300 bar Uitwerperkracht max {0.77 kN/bar} Kracht 0- 231 kN Onderste slagbegrenzing uitwerper 0- 100 mm Bovenste slagbegrenzing uitwerper 0- 100 mm Vorschub synchronsteuerung punt 150 -0 mm Lucht punt van blazen 0- 150 mm Uitwerper/trekkussen punt van aktie 0- 150 mm Onderste slagbegrenzing pers 150 -0 mm Bovenste slagbegrenzing pers 0- 150 mm Arbeitsgang 1 in pers 150 -0 mm Arbeitsgang 2 in pers 150 -0 mm Druckhalte zeit 0 - 10 sec Druckhalte zeit aan / uit Ausblasen zeit 0 - 10 sec Dampfung auf V2 0 - 10 sec Dampfung auf V2 aan / uit Vorschub aan / uit Kurzhub ei n j a / nee Einrichten ab ja / nee Tippen auf ja / nee Trekkussen ab ja / nee Trekkussen auf ja / nee Auswerfer auf ja / nee Auswerfer aus ja / nee
88.88 888.88 888.88 888.88 888.88 888.88 8888.88 888.88 888.88 888.88 888.88 888.88 888.88 888.88 888.88 888.88 888.88 888.88 88.88 b
88.88 88.88 b b b b b b b b b
50
1
2 3 4 5 6
7 8 9
60 1
2 3 4
5 --------------------------------------------------------------------------------
-69-
12345 678 12345678901234567890123456789012345678901234567890123456789012345678901234567890 1 -------------------------------------------------------------------------------2 LABORATORIUM VOOR OMVORMTECHNOLOGIE TUE 3 4
5 6 7 8
IN5TELGEGEVEN5 VAN DE PER5 EN LABCART bb888888
9 -------------------------------------------------------------------------------10 1 2 3 4 5 6 7 8 9
20 1 2 3 4 5 6 7 8 9
30 1
2
InsteLgegevens apparatuur van de proef
b(15)
Keuze kaart Input-range 5tart Criterium 5top Criterium
PCL-bbb b(15) b(3) b(3)
Kracht 5ignaLen Actief F1 F2 F3
b(11) b(11) b(11)
Weg 5ignaLen Actief 51 52 53
b(11) b(11) b(11)
3 4
5 6 7
8 9
40 1 2
3 4 5 6 7 8 9
50
KanaaLconfiguratie KanaaL F1 KanaaL F2 KanaaL F3 KanaaL 51 KanaaL 52 KanaaL 53
b b b b b b
.
5chaaLfactoren F1 (kracht 1) F2 (kracht 2) F3 (kracht 3) 51 (weg 1) 52 (weg 2) 53 (weg 3)
[kN/10V] [kN/10V] [kN/10V] [nm/10V] [nm/10V] [nm/10V]
5ampLefrequentie
[Hz]
bbb,bb bbb,bb bbb,bb bbb,bb bbb,bb bbb,bb b(5)
1 2 3 4 5 6 7 8 9
60 1 2 3 4 --------------------------------------------------------------------------------
-70-
3.2.6.5
Compleet meetrapport
Een Compleet meetrapport bestaat uit zoals in de data dictionary vermeld uit : standaard meetrapport + standaard Grafiek(en) + Tabel meetparen + Vaste/variabele en instelgegevens van de pers + en de niet standaard grafieken die de gebruiker zelf aangeeft om te printen.
-71-
3.3
Bet modulair ontwerp.
3.3.1
Boofdmenu.
Controleer grafische kaart
Hoofdmenu
1.1
1.8
Bewaar instellingen
Persprf .ins
1.7
1.2
Toon scherm
Lees instelling
Lees toegangscode
Lees menukeuze
Toon fout
Toon melding
1.12
1.9
Persprf.ins
Acquisitie
Verwerking
-2-
1.12
Wijzig programma directory
-10-
Bestand beheer
-15-
1.16
1.13
Wijzig data directory
Instellingen wijzigen
Wijzig temperary directory
Selecteer printer
-72-
WiJzlg data directory 1
Toon melding
3.3.1
Hoofdmenu (vervolg).
Interface list. In
Out
1.1 1.2 1.3 1.4 1.5 1.6
Instellingen correct Toegangscode-correct Functiewaarde Functiewaarde
1.7 1.8 1.9 1.10 1.11 1.12 1.13 1.14 1.15 1.16
Scherm id
Fout id, Herstel optie, Fout-respons MeldIng id, Herstel optie, Melding=respons -
Functiewaarde Instelling_gewijzigd
st code acq St-code-ver St-code-bb Instelling gewijzigd Instelling-gewijzigd Instelling-gewijzigd Functiewaarde
Melding id, Herstel optie, Melding=respons -
Instelling_gewijzigd
1.17
-73-
3.3.2
Acquisitie.
Het modulair ontwerp van het Acquisitie-gedeelte van het Persproef Analyse Programma versie 2.00 REINDERS LIT[3].
-74-
3.3.3
Verwerking.
afkomstig van 1. 10.13
Lees startcode
Verwerking
10.1
10.9
f-------i
Toon scherm
Lees instellingen
T oon melding
102
Toon fout 10.3
10.4
Controleer Grafische Kaart
10.5
Initialiseer data meetgeg.store
Lees menu keuze
10.7
10.10
Verwijder data meetgeg.store
10 11
10.12
Persprf .1 ns Kies FS-kromme
Bewerk FS-kromme
Uitprinten FS-kromme
-11-
-12-
-17-
Interface list. In 10.1 10.2 10.3 10.4 10.5 10.6 10.7 10.8 10.9
Out
startcode correct Scherm id Instellingen correct Geldige GrafIsche kaart File naam Functiewaarde Fout id, Herstel optie, Fout-respons MeldIng id, Herstel optie, Melding=respons -
Functiewaarde Functiewaarde
10.10 10.11 10.12 10.13
-75-
w
• w •
•
....CD
!'ll
afkomstlQ van 10,
m
'lit
11.7
rn I
~
Kies FS-kromme
11
~
CD
•
I
-..J
'"I
Toon scherm
Lees persproef
1
Lees graf iek keuze
2
Lees bestand in ket t mg
OAT
Toon melding
Toon fout
3.3.4
Kies FS-kromme (vervolg).
Toon scherm
Toon fout
11.11
11.10
11.13
1112
initialiseer ul Bestand Selecteer bestand.inf .info store persproef store I '----
--"
11.14
Verwijder bestand ,inf '-s_to_r_e_ _--"
_
I
PRV
t=-~~ __~~_ _11_2_4_1 Toon
11.15
Toon scherm
fout
----11.23
Toon melding 11.16
11.2
11.19
11.17
Bepaal niet Lees proefLees menuactieve Instellingen keuze menu items
Controleer aantal gelljk
112
Toon vraag jn
Lees orginele persproef
11.20
PGG
AMP
haal aantal meetpunten
-77-
ORG
3.3.4
Kies FS-kromme (vervolg).
Interface list. In 11.1 11.2
Out
Scherm id Afbreken, geselecteerde persproef Afbreken, geselecteerde grafiek
11.3 11.4 11.5 11.6 11. 7 11.8 11.9
Geselecteerde persproef Melding id, Herstel optie, Me1ding-respons Fout id~ Herste1 optie, Fout=respons -
Functiewaarde Functiewaarde
Scherm id Fout id, Herstel optie, Fout=respons -
Functiewaarde
11.10 11.11 11.12 11.13 11.14 11.15 11.16 11.17 11.18 11.19 11.20 11.22 11.23 11.24
Geselecteerd persproef, Afbreken Melding id, Herstel optie, Melding-respons Scherm Id Geselecteerde persproef
Functiewaarde
Geselecteerde grafiek Geselecteerde persproef String1, String2, String3 Aantal actieve strings, Herstel optie Melding id, Herstel optie, Melding-respons Fout id; Herstel optie, Fout=respons -
-78-
Functiewaarde Aantal gelijk Aantal=meetpunten_pointer Antwoord ja nee Functiewaarde Functiewaarde
3.3.5
Bewerk FS-kromme. afkomstig van 10.
12.5
Bewerk FS-kromme
Lees grafiek keuze
Toon scherm
Toon melding
'---
---J
12.3
Grafiek bewerken
12.6
Toon scherm
12.7
Lees menukeuze
12.4
Grafiek berekenen
12.12
1211
Toon melding 12.1
12.8
Aanmaken van subset
Aanpassen assen
- 13 -
- 14 -
-79-
Schrljf bewerkte persproef we - 16 Grafiek inzien - 15 -
3.3.5
Bewerk FS-kromme (vervolq).
Toon scherm
12.18
Bepaal aa ntal
Vul modelparameters windows
Maak grafisch windows
Selecteer grafisch window
Teken Grafiek
1219
Bepaal Maximale kracht
Bepaal begin eind weg
Haal dee Iwaardes
12.22
Maak pijlpunt
-80-
1223
Maak as gra f iek
3.3.5
Bewerk FS-kromme (vervolg).
Interface list. In 12.1 12.2 12.3 12.4 12.5 12.6 12.7 12.8 12.9 12.10 12.11 12.12 12.13 12.14 12.15 12.16 12.17 12.18 12.19
12.20 12.21 12.22
Out
Scherm id Grafiek keuze
Scherm id menu keuze
Melding id, Herstel optie, Melding=respons
Functiewaarde
Scherm id Linkerbovenhoek Rechtsbovenhoek Window titel Linkerbovenhoek Rechtsbovenhoek
(X, Y) , (X, Y) , (X, Y) , (X, Y) Aantal meetparen
Weg behorende bij de maximale kracht, Maximale kracht Beginpunt, Eindpunt Grafiek keuze, Deelwaarde kracht, Deelwaarde weg Coordinaten (X, Y), Richting, Uiteinde, Kleur
12.23
-81-
Weg behorende bij de maximale kracht, Maximale kracht Beginpunt, Eindpunt Deelwaarde kracht, Deelwaarde weg
3.3.6
Aanmaken van subset. afkomstig van 12 113,16
Toon scherm
13,1
Verplaats pointer verwerklng
13,2
Aanmaken van subset
13,15
Toon
~fout 1314
Toon meetgegevens
13.3
13,4
Markeer beginpunt
Markeer eindpunt
Bereken X/Y K:oordinaten
Haal dee Iwaardes I
13 7
beginpointers
13.7
13,9
Toon kracht-weg
Herstel markering
13/ Herstel beginpunt
13 13
Herstel eindpunt I
I
Interface list. In 13.1 13.2 13.3 13.4 13 .5 13.6
13,8
Markeer wissen
~~
13.11
13 10
1 ,6
13.5
Toon me Id Ing
Out
Scherm id Pointer record, Richting, hoeveel Pointer-record, Scherm positie
Nieuwe pointer_record
Huidige~ointer_record-
Huidige pointer record Grafiek-keuze, Pointer record, PositieHuidige-pointer_record
Pointer record
13.8
13.9 13.10 13.11 13.12 13.13 13.14 13.15
Huidige pointer record, Markerings soort teller, X-coordinaat, Y-coordinaat Grafiek keuze, Deelwaarde kracht, Deelwaarde weg Huidige poInter record Huidige-pointer-record Melding-id, Herstel optie, Melding-respons Fout id~ Herstel opt ie, Fout=respons -
13.16
-82-
markerings soort X-coordinaat, Y-coordinaat Deelwaarde kracht, Deelwaarde=weg Functiewaarde Functiewaarde
3.3.7
Aanpassen assen. afkomstig van 12. 14.7
Aanpassen assen Toon scherm 142
Haal J 1\J
Haal Plus Min
143
1 .4
Haal Verplaatsing
Interface list. In 14.1 14.2 14.3 14.4 14.5 14.6 14.7
14.6
14.
Vraag_ J N
Vul Verplaatsing in
Out
Scherm id X-positie, Y-positie, Default waarde, functietoets X-positie, Y-positie, Default waarde, functietoets X-positie, Y-positie, Default waarde, functietoets String1, String2, string3 Aantal actieve strings, Herstel optie verplaatsing_x~ verplaatsing_y -
-83-
Functiewaarde Functiewaarde Functiewaarde
3.3.8
Grafiek Inzien. afkomstig van 12. 1
15 .6
Grafiek Inzien
7'53~
r--....:::...----,
r=----'----------,
Zoek_ Min Max
Aanmaken Toon Graphlnp.txt Grafiek (A. Bron)
Verwijder Graphlnp.txt
Verwijder plotfile
Graphlnp. txt
Graphlnp. txt
PLotfile
PLotfile
Interface list. In 15.1 15.2 15.3
Out
Directory, Beeldscherm soort Kleinste waarde, Grootste waarde, Aantal waardes
15.4 15.5 15.6
-84-
Functiewaarde Kleinste waarde, Grootste waarde, Aantal waardes
3.3.9
Schrijf bewerkte persproef weg.
afl::omstig van 12,
Toon melding
Schrijf bewerkte prf weg
16,1
16,7
Toon fout
164
Bewerking gedaan
Orgineel bewerkt
Orgineel geen
Bewerkt bewerkt
Bewerkt geen
1
Bewaar orginele persproef
Data dirs gelijk 16,9
Bepaal olgende ersproef Kopieer set files
16,15
Mk_dir ver 1612
Schrijf ketting in bestand
-85-
113
Controleer set aanwezig
,14
Maak grafiek store
3.3.9
Schrijf bewerkte persproef weg (vervolg).
Toon fout
Toon melding 1625
16.18
Data dirs gelijk 16,23
Kopieer set files
Kopieer dat file
1 . 4
Haal aantal Bewaar Maak meetpunten aantal grafiek op meetpunten store
Mk_dir ver
Interface list. In
Out
16.1
Functiewaarde
16.2 16.3 16.4 16.5 16.6 16.7 16.8 16.9 16.10 16.11 16.12 16.13 16.14 16.15 16.16 16.17 16.18 16.19
Controleer set aanwezig
Melding id, Herstel optie, Melding=respons -
Bewerkt_ja_nee
Fout id, Herstel opt ie, Fout=respons -
Functiewaarde
Persproef keuze Bron directory, Doel directory, Persproef nieuw Bron-directory + bestandnaam, Doel-directory + bestandnaam Doel-directory + bestandnaam Persproef keuze Doel-directory + bestandnaam Sub-directory Persproef keuze, Doel-directory + bestandnaam Melding id, Herstel optie, Melding=respons Bron directory, Doel directory, Persproef_nieuw
-86-
Data dirs gelijk ja nee persproef=nieuw -
Toestand type Functiewaarde
3.3.9
schrijf bewerkte persproef weq (vervolg).
16.20
Bron-directory + bestandnaam, Doel-directory + bestandnaam SUb-directory Aantal record, Bron-directory + bestandnaam Aantal record, Bron-directory + bestandnaam Doel-directory + bestandnaam Persproef keuze Fout id, Herstel optie, Fout=respons -
16.21 16.22 16.23 16.24 16.25 16.26
-87-
Toestand type Aantal record
Functiewaarde Functiewaarde
3.3.10 Printen FS-gegevens. afkomstig van 10.
17.12
Toon scherm
Printen
17.1
f---------I
FS gegevens
1711 f------------I
Toon me Iding
17.2
Lees menu keuze
Toon fout 17.9
17.3
Verwijder pagina store
Initialiseer pagina store 17.4
Maak Meetrapport
175
Maak grafiek rapport
1 .5
Maak tabel meetparen
Interface list. In 17.1 17.2 17.3 17.4 17.5 17.6 17.7 17.8 17.9 17.10 17.11
177
Maak persgegevens rapport
17.8
Maak instelgegegevens rapport
Out
Scherm id Functiewaarde Afbreken Afbreken Afbreken Afbreken Afbreken
Afbreken true false Afbreken-true-false Afbreken-true-false Afbreken-true-false Afbreken-true-false
Fout id, Herstel optie, Fout-respons MeldIng id, Herstel optie Melding=respons -
Functiewaarde Functiewaarde
17.12
-88-
,gel:
3.4
Opbouw van de qebruikte bestanden.
3.4.1 3.4.1.1
Opbouw van de vaste bestanden. Vaste Persqeqevens. <default>.VST .VST
Formaat: Text bestand (bestand van het type TEXT). unit INST VST.PAS (library) . De opbouw van deze bestanden (voor iedere pers een) zie datastore pers database in Pers- en Proefgegevens CONINCK LIT[23] . 3.4.1.2
Variabele Persqeqevens. <default>.VAR .VAR
Formaat: Text bestand (bestand van het type TEXT). unit INST VAR.PAS (library). Var.type:
Inhoud: '[Persproef-Analyse Programma V200] , Maximale procestijd + Schnittschlag druk + Schnittschlag slag + Werkzeugsicherung + Festanschlag verstellung slag + Perskracht max druk + Perskracht max kracht + Uitwerper max druk + Uitwerper max kracht + Onderste slagbegrenzing uitwerper/ + Trekkussen Bovenste slagbegrenzing uitwerper/ + Trekkussen Onderste slagbegrenzing pers + + Bovenste slagbegrenzing pers Vorschub synchronsteuerung punt + Luchtpunt van blazen + Uitwerper/trekkussen punt van actie+ Arbeitsgang 1 in pers + Arbeitsgang 2 in pers + DruckhaLtezeit aan + Druckhal tezeit + Ausblasezeit + Dallpfungzeit + Dallpfung + Vorschub + Kurzhub ein + Einrichten ein + Tippen auf + Trekkussen ab + Trekkussen auf + Auswerfer auf + Auswerfer aus +
Lengte:
:' :' :' :' ., :' :' :' :' :'
String String String String String String String String String String
60 60 60 60 60 60 60 60 60 60
'Bovenste slagbegrenzing uitwerper/Trekkussen 0- 100 mm :'
String
60 kar
String String String String String String String String String String String String String String String String String String String String
60 kar 60 kar 60 kar 60 kar 60 kar max 45 max 45 max 45 max 45 max 45 max 45 max 45 max 45 max 45 max 45 max 45 max 45 max 45 max 45 max 45
'Maximale procestijd in seconden 'Schnittschlag dallpfung schaltpunkt druk D- 200 bar 'Schnittschlag dallpfung schaltpunkt slag 0- 150 bar 'Werkzeugsicherung druk 0- 300 bar 'Festanschlag verstellung slag 0- 100 bar 'Perskracht max druk 0- 300 bar 'Perskracht max {6.6? kN/bar} kracht 0-2000 kN 'Uitwerper max druk 0- 300 bar 'Uitwerper max {o.?? kN/bar} kracht 0- 250 kN 'Onderste slagbegrenzing uitwerper/Trekkussen 0- 100 mm
'Onderste slagbegrenzing pers 'Bovenste slagbegrenzing pers 'Vorschub synchronsteuerung punt 'Lucht - punt van blazen 'Uitwerper/trekkussen punt van actie 'Arbeitsgang 1 in pers 150-10 mm :' 'Arbeitsgang 2 in pers 150-10 mm :' 'Druckhaltezeit aan 0-10 sec:' 'Druckhaltezeit aan/uit:' 'Ausblasezeit 0-10 sec:' 'Dallpfung auf V2 0-10 sec:' 'Dallpfung auf V2 aan/uit:' 'Vorschub aan/ui t :' 'Kurzhub ein ja/nee:' 'Einrichten ein ja/nee:' 'Tippen auf ja/nee:' 'Trekkussen ab ja/nee:' 'Trekkussen auf ja/nee:' 'Auswerfer auf ja/nee:' 'Auswerfer aus ja/nee:'
-89-
150- 0 0- 150 150- 0 0- 150 0- 150
mm mm mm mm mm
kar kar kar kar kar kar kar kar kar kar
kar kar kar kar kar kar kar kar kar kar kar kar kar kar kar
~el:
lel:
3.4.1.3
proefgegevens. <default>.PGG .PGG
Formaat: Text bestand (bestand van het type TEXT). unit INST PGG.PAS (library). Inhoud:
Var.type:
Lengte:
, [Persproef-Analyse Programma V200] , Samplefrequentie 4 Aantal meetgegevens ) Input range Startcriteril.lll Stopcriteril.lll Kanaal 1 Persleeuze F1 signaal F2 signaal F3 signaal S1 signaal S2 signaal S3 signaal
String String Char String String Char String String String String String String String
max max nvt max max nvt max max max max max max max
Var.type:
Lengte:
String String String String String String String String String String String String String String String String String
max 30 kar max 15 kar max 25 kar max 25 lear max 18 kar max 25 kar max 7 lear 8 lear 8 lear 8 kar 8 lear max 3D kar max 50 lear max 50 lear max 50 kar max 50 kar max 50 lear
3.4.1.4
6 lear 6 lear 7 lear 7 lear 25 kar 6 lear 6 lear 6 lear 6 lear 6 lear 6 lear
Proef-randvoorwaarden. <default>.PRV .PRV
Formaat: Text bestand (bestand van het type TEXT). Unit INST PRV.PAS (library). Inhoud: , [Persproef-Analyse Programma V200]' Projectleider Type pers Seri emlllller pers Materiaalsoort Werlestofnl.lllmer Herleomst materiaal So
Datl.lll Treleproefcode 1 Treleproefcode 2 Treleproefcode 3 Operator Opmerking 1 Opmerleing 2 Opmerking 3 Opmerking 4 Opmerking 5
4
Het aantal meetgegevens dat hier wordt weergegeven kan als richtlijn gebruikt worden bij het bepalen van de samplefrequentie. Er is uitgegaan van 6 kana len met elk 1000 samples per proef.
-90-
rel:
lel:
3.4.1.5
Meetqeqevens.
- .DAT Formaat: Binair bestand (bestand van het type FILE of Integer) . Unit P MGG IO.PAS (library). Inhoucl:
Var.type:
'[Persproef-Analyse Programma V200) , 1 sample
6
* Integer
Lengte: nvt
Opmerking: Repeating group 1 { inhoud regel 2 } Aantal samples. 3.4.1.6
Grafiekqeqevens.
- .FxS Formaat: Tekst bestand (bestand van het type TEXT). Unit P PGG IO.PAS (library). Inhoucl:
Var.type:
Lengte:
'[Persproef-Analyse Programma V200) , FS-paar Aantal meetparen Minimale x-waarde Maximale x-waarde Minimale y-waarde Maximale y-waarde Maximale proceskracht + 'Maximale proceskracht kN :' Aanvangsweg + 'Aanvangsweg S. mm :' Eindweg + 'Eindweg S. mm :' Totale weg + 'Totale weg S'O' mm :' Opgenomen deformatie arbeid + 'Opgenomen deformatie arbeid N/m6 ): '
String Integer Integer Integer Integer Integer Integer Integer Integer Integer Integer
2 lear nvt nvt nvt nvt nvt nvt nvt nvt nvt nvt
Eenheid Arbeid = Nm Oorspronkelijk: kN mm 1 Nm
=
3
lxl0 kNmm lxlO-3
-91-
= lxl0 6
kNmm
3.4.1.7
Pers database.
- Persen.DTB Formaat: Tekst bestand (bestand van het type TEXT). unit P PERS.PAS (library).
gel:
Var.type:
Lengte:
Inhoud:
Var.type:
Lengte:
, [Persproef-AnaLyse Programma V200]' Drive/directory Persproef-AnaLyse bestanden Drive/directory Persproef-AnaLyse data bestanden (FxS, DAT) Drive/directory Bewerkte Persproef-Analyse bestanden Drive/directory Persproef-Analyse tijdelijke bestanden Gecodeerde toegangscode Persproef-AnaLyse Programma Type PC-LabCard Type afdruk-eenheid AantaL op computer aanwezige externe opslagmedia Drive-aanduiding Drive-type
String String String String String String String Longint Char Integer
max max max max max max max nvt nvt nvt
Inhoud: , [Persproef-Analyse Programma V200]' , [Schonpers gegevens]' , [Vaste persgegevens Schonpers]' { Zie ook vaste Schonpers gegevens in Pers- en Proefgegevens } , [Variabele persgegevens Schonpers]' { Zie ook variabele Schonpers gegevens in Pers- en Proefgegevens } , [SuK 360 pers gegevens]' , [Vaste persgegevens SuK 360 pers]' { Nog niet bekend } , [VariabeLe persgegevens SuK 360 pers]' { Nog niet bekend } , [SuK 20 pers gegevens]' , [Vaste persgegevens SuK 20 pers]' { Nog niet bekend } , [Variabele persgegevens SuK 20 pers]' { Nog niet bekend } '[MuLLer pers gegevens]' , [Vaste persgegevens MuLLer pers]' { Nog niet bekend } , [VariabeLe persgegevens MuLLer pers]' { Nog niet bekend } '[Avery pers gegevens]' , [Vaste persgegevens Avery pers]' { Nog niet bekend } , [VariabeLe persgegevens Avery pers]' { Nog niet bekend } '[Erichsen pers gegevens]' , [Vaste persgegevens Erichsen pers]' { Nog niet bekend } , [VariabeLe persgegevens Erichsen pers]' { Nog niet bekend }
3.4.1.8
confiquratie.
- Persprf.ins Formaat: Tekst bestand (bestand van het type TEXT). Unit P INSTEL.PAS (library). el:
Opmerking: repeating group 1 { Drive-aanduiding, Drive-type} Aantal externe opsLagmedia
-92-
60 60 60 60 6 3 60
kar kar kar kar kar kar kar
3.4.1.9
Aantal meetparen.
- .AMP Formaat: Binair bestand (bestand van het type FILE OF INTEGER) . unit P AANTAL.PAS (library).
gel:
Inhoud:
Var.type:
Lengte:
, [Persproef-AnaLyse Programma V200]' Aantal meetparen
Integer
nvt
Var.type:
Lengte:
3.4.1.10 oriqineel. - .ORG Formaat: Tekst bestand (bestand van het type TEXT). unit Origineel.pas (library). geL:
Inhoud: , [Persproef-Analyse Programma V200]' Originele persproef
3.4.2
Integer
nvt
Opbouw van de tijdelijke bestanden.
3.4.2.1
Te printen qrafiek: GraphInp.TXT.
structuur reeds beschreven door Van de WERFF, LIT [10]. 3.4.2.2
Plotqrafiek: Plotdef.Txt.
structuur reeds beschreven door Van de WERFF LIT [10]. 3.4.2.3
Bestand info.
- bestand.info Formaat: Ketting in het interne geheugen. unit Kies fs.pas (verwerking). el:
Inhoud:
Var.type:
Lengte:
, [Persproef-AnaLyse Programma V200]' Perscode Materiaalsoort Werkstof-mlllner Herkomst materiaaL Plaatdikte Aantal meetparen DatlJll Proef verwerkt Merk pers
String String String String ReaL 3 * reaL String String String
11 kar max 15 max 15 max 15 nvt nvt 8 kar 3 kar max 15
Opmerking: repeating group 0 { regeL 2 tim 10 } aantal persproeven op disk(ette)
-93-
kar kar kar
kar
3.5
Beschrijven hoe een bewerkte persproef dient te worden weqqeschreven.
In dit hoofdstuk zal aanbod komen hoe het programma een bewerkte persproef wegschrijft. Uitgangssituatie Stel we hebben een persproef uitgevoerd m.b.v. het dataacquisitie programma en de meetgevens + restgegevens zoals persproefrandvoorwaarden, proefgegevens etc. zijn weggeschreven naar floppy. De verkregen files uit het data-acquisitie zijn - .DAT (DAT staat voer meetgegevens) - .VST (VST staat voor vaste persgegevens) - .VAR (VAR staat veer variabele pergegevens) - .PRV (PRV staat voor Proefrandvoorwaarden) - .PGG (PGG staat veor Proefgegevens) De persproefcode van voorgaande is b.v. PF931030. We hebben nu de beschikking over de volgende files PF931030.dat PF931030.VST PF931030.VAR PF931030.PRV PF931030.PGG Deze files behoren tot een mogen neoit gewist worden.
se~
files die bij elkaar horen en
De gebruiker heeft een data-schijf die er voIgt uit ziet PF931001.dat PF9310010 VST PF931001.VAR PF931001.PRV PF9310010 PGG
originele set.
PF931002.dat PF931002.VST PF931002.VAR PF931002.PRV PF931002.PGG
originele set.
PFA31002.dat PFA31002.VST PFA31002.VAR PFA31002.PRV PFA31002.PGG PFA31002.F1S
bewerkte set.
-94-
Het verwerking-gedeelte wordt nu gestart en de gebruiker kiest om een persfproef selecteren. Er zijn nu twee mogelijkheden de gebruiker kiest : A) een originele persproef PF931001.dat. B) een bewerkte persproef PFA31002.dat. Nu worden de volgende mogelijkheden beschreven. A)
1
De gebruiker heeft een originele persproef geselecteerd. Hij doet geen as-aanpassing en/of een subset maken, maar maakt aIleen grafieken aan. Er zal nu een set uitkomen die er als voIgt uitziet : PF931001.dat PF9310010 VST PF9310010 VAR PF931001.PRV PF931001.PGG PF931001.F*S
2
De gebruiker heeft een originele persproef geselecteerd. Hij doet nu aIleen as-aanpassing. De volgende set zal er als voIgt uitkomen : PFA31001.dat PFA31001.VST PFA310010 VAR PFA31001.PRV PFA31001.PGG PFA310010 F*S
3
* staat voor 1 tIm 9.
De gebruiker heeft een originele persproef geselecteerd. Hij doet nu aIleen subset maken. De volgende set zal er als voIgt uitkomen : PFB31001.dat PFB310010 VST PFB310010 VAR PFB31001.PRV PFB310010 PGG PFB31001.F*S
4
* staat voor 1 tIm 9.
* staat voor 1 tIm 9.
De gebruiker heeft een originele persproef geselecteerd. Hij voert zowel 2 en 3 uit. De volgende set zal er voIgt uitkomen PFC31001.dat PFC310010 VST PFC310010 VAR PFC31001.PRV PFC31001.PGG PFC31001.F*S
* staat voor 1 tIm 9
-95-
opmerking 1: Bij punt drie en vier kan zich het volgende probleem voordoen. Indien de gebruiker eerst de grafiek F1S1 bewerkt (v.b. bepaalde punten wist) en vervolgens de grafiek F2S1 wil maken dan zijn het aantal meetpunten (F2¢Sl) ongelijk. Deze grafiek is dan onmogelijk te maken. Daarom zal er dan een hele nieuwe set van files worden aangemaakt. 2: Bij punt drie kan ook het volgende probleem optreden. Men heeft een sample die bestaat uit 6 meetwaarden IF1,SlIF2,S2IF3,S31. Het aantal meetparen (v.b. Fl-S1) is 100 en is voor ieder sample gelijk. Gaat men een subset maken van F2-S2 en men wist een aantal punten dan is het aantal meetpunten van F1-S1 en F3-S3 ongelijk aan die F2-S2. Schrijft men de gegevens terug naar de meetgevens file «perscode>.DAT), dan moet men op de plaatsen waar de punten zijn gewist, een groot getal b.v. MAXINT (32767) invoegen. Voordeel hiervan is dat men geen aparte set van files moet aan maken. 3: Bij punt twee en vier treedt het volgende probleem op : Als de gebruiker F1S1 de as heeft aangepast en wil daarna een onderzoek grafiek maken, is het zijn eigen verantwoording of F2S2 en F3S3 de goede waarden hebben. Dit wil zeggen dat b.v. bij F2S2 de waarden net een bit verschoven zijn. De onderzoek grafiek zal in deze situatie geen goed beeld geven van de werkelijkheid. In dit geval is het raadzaam de originele meetpunten op te halen en op F2S1, de as-verschuiving toe te passen. B)
1 De gebruiker heeft een bewerkte persproef geselecteerd waarbij aIleen een as-verschuiving heeft plaatsgevonden. De grafiek F1S1 bestaat ale De gebruiker selecteert vervolgens de grafiek F2S2 of F3S3 en gaat deze bewerken. Als deze bewerking bestaat uit een as-verplaatsing dan zal dit geen probleem opleveren en kan de grafiek onder dezelfde set worden weggeschreven. 2 De gebruiker heeft een bewerkte persproef geselecteerd waarbij een subset van F1S1 bestaat. Men heeft een sample die bestaat uit 6 meetwaarden IF1,SlIF2,S2IF3,S31. Het aantal meetparen (v.b. F1-S1) is 100 en is voor ieder sample gelijk. Gaat men een subset maken van F2-S2 en men wist een aantal punten dan is het aantal meetpunten van F1-S1 en F3-S3 ongelijk aan die F2-S2. Schrijft men de gegevens terug naar de meetgevens file «perscode>.DAT), dan moet men op de plaatsen waar de punten zijn gewist, een groot getal b.v. MAXINT (32767) invoegen. Voordeel hiervan is dat men geen aparte set van files moet aan maken. -96-
Opmerking : Bij punt twee ontstaat het volgende probleem : Indien de gebruiker de grafiek F2S1 wil maken is het aantal meetpunten (F2¢Sl) ongelijk. Deze grafiek is dan onmogelijk te maken en daarom zal er dan een hele nieuwe set van files worden aangemaakt. In het algemeen ontstaan de problemen indien men een subset heeft gemaakt of al bestaat en de gebruiker wil een onderzoek grafiek maken. De algemene oplossing is, dat zodra deze situatie zich voordoet er een nieuwe set van files wordt aangemaakt. Het wegschrijven van de set files kan op verschillende manieren gebeuren. Deze verschillende manieren zijn 1) Alles set-files worden in een en dezelfde directory weggeschreven zoals die door de gebruiker is opgegeven. 2)
Men kan ook met subdirectories werken. Hier kan men dan ook weer onderscheid maken. A) AIle zelfstandige set-files als sUbdirectory in de "Root". B) AIle vanuit het Acquisitie-deel verkregen persproeven als subdirectories in de "Root" en de bewerkte (as-verschuiving en/of sUbset) als subdirectory in de sUbdirectory van de originele persproeven. Stel dat de gebruiker, bij wlJzlgen van programma-instellingen de directory waarin de persproeven staan opgegeven beschikbaar zijn als "C:\PERSDATA". Dan krijgt men de volgende directory-structuur.
2 A
C:\PERSDATA I f---~PF931001
f---~PFA31001
f----PFB31001 '----PF931002
-97-
2 B
C:\PERSDATA I
1 - - - - PF9 31001
I
PFA31001
E
PFB31001 PFC31001
1----PF931002 I
r------PFA31002
~PFB31002 '-----~PF931003
Bij punt 1 heeft men een aantal nadelen : - Men moet rekening houden dat men maar 112 bestanden in een directory mag zetten. Dit is de beperking van Dos. - Het is niet meer overzichtelijk als men de data-schijf bekijkt. Alles staat door elkaar. Voordeel bij punt 1 is dat men in het programma geen rekening hoeft te houden met het wijzigen van de subdirectories. Maar dit punt weegt niet zwaar aangezien het veranderen van directory binnen Turbo Pascal geen probleem is. Het grote voordeel van punt 2 is dat men een gestructuurd geheel op de data-floppy verkrijgt. Punt 2B heeft als nadeel dat men nog een niveau lager moet kijken indien de gebruiker een persproef wil selecteren. De set-files wordt als een zelfstandige perproef aangezien, en daarom is het beter om de manier als genoemd onder punt 2A te gebruiken. WeI moet het Acquisitie Programma worden omgeschreyen en weI zo, dat deze ook met subdirectories werkt. Het Persproef-Analyse Programma VI.OO is niet flexibel in de betekenis van toepasbaarheid op een afwijkende computerconfiguratie. Dit betekent dat als het programma hierop gebruikt gaat worden, de broncode op een aantal plaatsen veranderd en vervolgens opnieuw gecompileerd moet worden. Het betreft hier de volgende zaken: Drive/directory Persproef-Analyse Programma. Drive/directory persproeven. Drive/directory voor tijdelijke opslag. Soort afdrukapparatuur: HPGL plotter of HP LaserJet III. Toegangscode, nodig om het Persproef-Analyse Programma te kunnen starten. Overzicht externe opslagmedia (hoeveel en welke externe opslag-media bevinden zich op de huidige computerconfiguratie).
-98-
Het nieuwe Persproef-Analyse Programma zal zodanig moeten worden opgezet, dat het eenvoudig aan te passen is aan de eigenschappen van een afwijkende computer-configuratie, zonder dat het programma hiervoor opnieuw gecompileerd hoeft te worden. Dit voorstel komt uit het ontwerp REINDERS LIT[3]. Er zal nog een wijziging moeten worden doorgevoerd .m.b.t. Drive/directory persproeven. Hier zullen nu twee directories kunnen worden opgegeven. Een waar de data staat afkomstig van het Acquisitie Programma en een directory waar de verwerkte bestanden heen geschreven kunnen worden. Dit dient gedaan te worden omdat de gegevens afkomstig van het Acquisitie Programma vaak op een 5~" 720Kb schijf worden aangeleverd. Zouden de bestanden, die afkomstig zijn van het Verwerkings Programma ook hierop moeten worden gezet, dan zullen er niet veel persproeven op deze floppy passen. Nu dit gesplitst is kan men meer persproeven afkomstig van het Acquisitie Programma op een data-schijf plaatsen. De bestanden die afkomstig zijn van het Verwerkings Programma zullen in het algemeen worden weggeschreven op een 3~" diskette.
-99-
Hoofdstuk 4
Wijzigen van het Acquisitie gedeelte.
Dit hoofdstuk is een aanvulling op hoofdstuk 3 DE CONINCK LIT[23]. Op een aantal belangrijke punten wordt het Acquisitie gedeelte 'gewijzigd'. Deze wijzigen zijn een aanbeveling of afspraken met de opdrachtgever. De wijzigen hebben betrekking op 1) 2) 3) 4) 5) 6) 7) 8) 9)
Perscode store. Bestandinfo store. Default bestanden. Welke kanalen actief zlJn. Het veranderen van de Vaste persgegevens. Het wegschrijven van het meetgegevens bestand. Het wegschrijven van het aantal meetpunten. Het aanpassen van de meetgegevens. De library functie m.b.t. tot de acquisitie kaart. 10) Het gebruik van de nieuwe diskfunctie. 11) Algemene opmerkingen. 1) Volgens het ontwerp REINDERS LIT[3] wordt de perscode store gebruikt om tussen het Acquisie deel en het Verwerkings deel door te geven welke perscode op de dataschijf staan. Het nadeel hiervan is, dat als de gebruiker een persproef van de data-schijf afhaald (per ongeluk of gepland), de perscode store inconsistent is. Zal er nu een verwerking plaats vinden met de desbetreffende schijf dan kunnen er fouten optreden. Zo zal de gebruiker bij de selectie de persproef weI zien, maar niet kunnen selecteren, omdat deze niet aanwezig is. Deze oplossing is reeds geYmplementeerd door REINDERS LIT[3]. Een betere oplossing is gewoon de perscodes uit de directory te halen tijdens het selecteren ( en een tijdelijk bestand in het geheugen te maken). Op deze manier blijft het systeem consistent. Opmerking : Het wegschrijven binnen het Acquisitie deel van de persproeven naar de perscode store zal worden verwijderd. Dit is een afspraak met de opdrachtgever. Een ander nadeel van het schrijven van de persproeven naar de perscode store is dat het aantal bestanden hierdoor groter wordt. Aangezien dat er maar 112 bestanden in een directory mogen staan kan dit problemen opleveren. 2) De store bestandinfo wordt gebruikt om de gebruiker tijdens het selecteren makkelijk te laten herkennen om welke pers-proef het gaat. Volgens het ontwerp REINDERS LIT[3] wordt van elke perproef op de data-schijf de gegevens voor deze herkenning opgeslagen in de store bestandinfo. De zelfde problemen als reeds eerder beschreven (zie punt 1), doen zich hier ook voor. Zo zal het systeem ook inconsistent worden indien de gebruiker een persproef verwijderd (er staan dan meer perproeven in de store dan er op schijf -100-
staan). De oplossing hiervoor is om de gevens tijdelijk in het geheugen te zetten tijdens het selecteren. Ook hier speelt het probleem van het maximaal aantal bestanden, dat in een directory mogen staan, een role Daarom is de genoemde oplossing een betere oplossing dan die in het ontwerp REINDERS LIT[3]. 3) In het Acquisitie deel worden default bestanden weggeschreven. Dit is in orde. Maar deze bestanden moeten ook worden weggeschreven als .ext (ext staat voor extensie). De bestanden waar het hierover gaat zijn : .PGG. .PRV. .VST. .VAR. Deze zullen dus moeten worden aangepast om problemen te verkomen. De library voor het Persproef Programma zal daardoor wijzigen. Voorbeeld : Bij unit Inst PRV (REINDERS LIT[5]) worden bij de functies geen parameters doorgegeYen. Door nu een pad en file-naam mee te geven (als een string) wordt de functie flexibeler, en kan daardoor nu voor meer doeleinden worden gebruikt. Deze verandering heeft weI als nadeel dat de listing van het Acquisitie Programma moet worden doorlopen en op die plaatsen waar dat nodig is, moet worden veranderd. Doch vanwege het feit dat dit reeds om andere redenen moet plaatsvinden, is dit niet zo'n groot nadeel . . 4) In het ontwerp van REINDERS LIT[3] wordt de structuur van de bestanden beschreven. In het bestand <default>.PGG worden een aantal velden opgenomen met F1-signaal, F2signaal, F3-signaal, Sl-signaal, S2-signaal en S3 -signaal. Deze velden worden gevuld met een string waarin twee verschillende waardes zijn verborgen. Een voorbeeld van de opbouw Sl-signaal : 1-100. De 1 betekent dat Sl actief is geweest en 100 is de schaalfactor, die aan het maximale signaal gekoppeld is. In de listings worden de schaalfactoren van de krachten verkeerd berekend. V.b. Val(Copy ( Prf F1 Signaal, 3, 5), dummy I, dummy I);. Het getal 5 moet overaI waar dit gebeurt veranderen in 7. 5) Dit punt is als eens eerder aangegeven ( CONINCK LIT[23] ), maar zal om een duidelijk overzicht te behouden nog een keer worden genoemd. In het Acquisitie programma moet het mogelijk zijn om de "vaste" persgegevens te veranderen. Ze worden vaste gegeyens genoemd omdat ze zelden worden veranderd (een keer per twee of drie jaar). De wijzigen die eventueel worden aangepast worden bij de persproef mee weggeschreven. Tevens zal de wijziging in de Pers Database moeten worden weggeschreven. Er zal hiervoor in het acquisitie-gedeelte een invoer scherm moeten worden gemaakt.
-101-
6) Het wegschrijven van de meetgegevens gebeurt op een verkeerde manier (REINDERS LIT[3] hoofdstuk 2 bladzijde 8). Volgens dit ontwerp zou een sample als voIgt worden weggeschreven :
*xfxfxfxfxfx*xfxfxfxfxfx*xfxfxfxfxfx*xfxf I I I I 1 sample
x = signaal. f = scheiding tussen signalen. * = scheiding tussen samples.
Dit geheel is overbodig, want als men binnen Pascal werkt met een record heeft men geen scheidingstekens nodig. Voorbeeld : MeetRecord = record F1,F2,F3, Sl,S2,S3 : integer; end; Definieer ook een file van dit type en weI als voIgt : Datagegevens = File of Meetrecord; Men dient nu eerst het meetrecord te vullen en dan dit weg schrijven in de file Datagegevens. Denk aan de volgorde van het record. Deze dient te zijn F1, F2, F3, Sl, 82 en S3 om een goede aansluiting te verkrijgen met het verwerkings-gedeelte. Indien een Kracht-weg combinatie niet is gemeten, dan schrijft men deze Kracht en Weg in het record met nul weg. Opmerking : De procedure Sla ketting op REINDERS LIT[5] bIz 36 zal hierdoor moeten worden veranderd. 7) Het wegschrijven van het aantal meetpunten REINDERS LIT[5]
(Unit INST AMP.PAS), wordt als een getal weggeschreven. Dit getal stelt het aantal meetpunten van een persproef voor. In het verwerkings gedeelte was het nodig om dit te veranderen. Deze verandering ziet er als voIgt uit : Er worden nu zes getallen weggeschreven waarvan de eerste drie voorstelt F1 tim F3 en de laagste drie Sl tim S2. Er wordt nu een record gemaakt die er als voIgt uit ziet Aantal = Record F1, F2, F3, 81, S2, S3 integer; end;. Met dit record zullen het aantal meetpunten worden opgeslagen en opgehaald. In het Acquisitie programma zullen, indien aIle krachten en aIle wegen gemeten zijn, de getallen hetzelfde zijn. Indien een kracht-weg combinatie niet is gemeten dan zal het getal voor beide nul zijn. Opmerking De procedure 8la ketting op REINDERS LIT[5] bIz 36 zal hierdoor moeten worden veranderd. 8)
Bij het aanpassen van de meetgegevens kloppen de bladerfunkties (PageUp, PageDown en End) niet helemaal zo als het hoort. Deze funkties dienen te worden verbeterd zie REINDERS LIT [6] bIz 63 tim 66.
-102-
9) De routines omtrent het afhandelen van de acquisitie-kaart werken niet precies zoals het hoort. Deze routines zullen dus moeten worden getest en herschreven danwel opnieuw moeten worden gemaakt. De routines staan in de unit INST_ACQ REIDERS LIT[5] bladzijde 2 tot en met 12. 10) Nadat het acquisitie-gedeelte is ontwikkeld is er voor de afhandeling van fouten bij gebruik van floppy's een nieuwe unit ontwikkeld. Deze unit heeft t.o.v. de oude unit het voordeel dat hij sneller werkt. Een ander voordeel is dat, indien men wil lezen of schrijven naar floppy, men met een functie alles kan controleren en niet zoals de oudere unit waarbij men meerdere functie moest gebruiken. Ook heeft de nieuwe unit het voordeel dat men geen gebruik meer hoeft te maken van drives die zijn opgeslagen in het bestand persproef.ins. Ret acquisitie-gedeelte versie 2.00 werkt met de oudere unit. Ret is zinvol om dit te veranderen om een geheel in het programma te krijgen. Riervoor moet weI dan het gehele programma doorlopen worden. Doch vanwege het feit dat dit reeds om andere redenen moet plaatsvinden, is dit niet zo'n groot nadeel. 11) Algemene tip voor het verbeteren van het acquisitiegedeelte. Begin eerst te begrijpen wat het acquisitie-gedeelte moet doen en wat een persproef inhoud. Ga daarna de koppeling tussen het acquisitie-gedeelte en het verwerkings-gedeelte bestuderen. Dit is een zeer belangrijk punt, want werkt dit niet dan werkt het hele programma niet. Vervolgens kan men het ontwerp REINDERS LIT [2] veranderen en weI zo uitgaande van het context schema uit DE CONINCK LIT[23]. Ret ontwerp REINDERS LIT[3] zal over het algemeen niet veel veranderen. Let er weI op dat het verhaal op bladzijde 8, dat over de sample gaat, vervalt (zie punt 7 bIz. 101 voor meer uitleg) . Voor het veranderen van de programma-source is het raadzaam om stap voor stap door te nemen, wat elke functie en procedure doet, alvorens de source-code te wijzigen. Indien het acquisitie-gedeelte na wijzigen af is moet er nadrukkelijk getest worden met de kaart om eventuele fouten definitief eruit te halen.
-103-
Literatuurlijst [1]
P.J.M. Reinders.
"Persproef-Analyse Programma versie 2.00, Introductie, HS-HIO-Heerlen-stageverslag 1, Eindhoven, Juli 1993, WP 1545."
[2]
P.J.M. Reinders.
"Persproef-Analyse Programma versie 2.00, Essentieel Model, HS-HIO-Heerlen-Stageverslag 2, Eindhoven, Juli 1993, WP 1546."
[3]
P.J.M. Reinders.
"Persproef-Analyse Programma versie 2.00, Implementatie model, HS-HIO-Heerlen-stageverslag 3, Eindhoven, Juli 1993, WP 1547."
[4]
P.J.M. Reinders.
"Persproef-Analyse Programma versie 2.00, Gebruikershanleinding, HS-HIO-Heerlen-Stageverslag 4, Eindhoven, Juli 1993, WP 1548."
[5]
P.J.M. Reinders.
"Persproef-Analyse Programma versie 2.00, Source-code Libraries, HS-HIO-Heerlen-Stageverslag 5, Eindhoven, Juli 1993, WP 1549."
[6]
P.J.M. Reinders.
"Persproef-Analyse Programma versie 2.00, Source-code Programma, HS-HIO-Heerlen-Stageverslag 6, Eindhoven, Juli 1993, WP 1550."
[7]
A. Bron
" Grafplot Een universele grafiek-unit Technische Universiteit Eindhoven, Februari 1993."
[8]
C.P.I. van de Werff.
"Trekproef analyse programma PC-DT100 versie 3.02, Introductie, HS-Heerlen-HIO-Stageverslag 1, Eindhoven, Januari 1993, WPA 1450."
-104-
[9]
C. P. I. van de Werff.
"Trekproefanalyse Programma PCDT100, versie 3.02, Het Essentieel Model, HS-Heerlen-HIo-Stageverslag 2, Eindhoven, Januari 1993, WPA 1451."
[10]
C.P.I. van de Werff.
"Trekproefanalyse Programma PCDT100, versie 3.02, Het Implementatie Model, HS-Heerlen-HIo-stageverslag 3, Eindhoven, Januari 1993, WPA 1452."
[11]
C.P.I. van de Werff.
"Trekproefanalyse Programma PCDT100, versie 3.02, Analyse, HS-Heerlen-HIo-Stageverslag 4, Eindhoven, Januari 1993, WPA 1453."
[12]
C. P. I. van de Werff.
"Trekproefanalyse Programma PCDT100, versie 3.02, Source code Programma onderdelen, HS-Heerlen-HIo-Stageverslag 5, Eindhoven, Januari 1993, WPA 1454."
[13]
C.P.I. van de Werff.
"Trekproefanalyse Programma PCDT100, versie 3.02, Source code Library bestanden, HS-Heerlen-HIo-Stageverslag 6, Eindhoven, Januari 1993, WPA 1455."
[14]
C. P. I. van de Werff.
"Trekproefanalyse Programma PCDT100, versie 3.02, Gebruikershandleiding, HS-Heerlen-HIo-Stageverslag 7, Eindhoven, Januari 1993, WPA 1456."
[15]
W.A.J. van den Eijnde.
"De calibratie en de proef-opstelling van de PC-718-Labcard,HS-Venlo stageverslag 2,Eindhoven, Maart 1990, WPA 0862."
[16]
W.A.J. van der Eijnde.
"Een universeel data-acquisitie systeem voor high performance PCL-718-CS kaart, versie 1.00, HS-Venlo Stageverslag 1, Eindhoven, Juni 1990, WPA 0893."
-105-
[17]
W.A.J. van der Eijnde.
"Een universeel data-acquisitie systeem voor high performance PCL-718-CS kaart, versie 1.00, User Manual, HS-Venlo Stageverslag 2, Eindhoven, Juni 1990, WPA 0894."
[18]
W.A.J. van der Eijnde
"Een universeel data-acquisitie systeem voor high performance PCL-718-CS kaart, versie 1.00, Listing, HS-Venlo Stageverslag 3, Eindhoven, Juni 1990, WPA 0895."
[19]
W.A.J. van der Eijnde
"Een universeel verwerkingssysteem voor het bepalen van FS-krommen, versie 1.00, Technical Manual, HS-Venlo Stageverslag 4, Eindhoven, Juni 1990, WPA 0896."
[20]
W.A.J. van der Eijnde
"Een universeel verwerkingssysteem voor het bepalen van FS-krommen, versie 1.00, User Manual, HS-Venlo stageverslag 5, Eindhoven, Juni 1990, WPA 0897."
[21]
W.A.J. van der Eijnde
"Een universeel verwerkingssysteem voor het bepalen van FS-krommen, versie 1.00, Listing, HS-Venlo stageverslag 6, Eindhoven, Juni 1990, WPA 0898."
[22]
R.J.J de Coninck
"Persproef-Analyse Programma versie 2.00 Introductie R.J.J. de Coninck HS-Heerlen-HIO-Stageverslag 1 Aug. 1993 WPA 120001."
-106-
[23]
R.J.J de Coninck
"Persproef-Analyse Programma versie 2.00 Essentieel-model R.J.J. de Coninck HS-Heerlen-HIo-Stageverslag 2 Okt. 1993 WPA 120002."
[24]
R.J.J de Coninck
"Persproef-Analyse Programma versie 2.00 Implementatie-model R.J.J. de Coninck HS-Heerlen-HIO-Stageverslag 3 Nov. 1993 WPA 12003."
[24]
R.J.J de Coninck
"Persproef-Analyse Programma versie 2.00 User's Manual R.J.J de Coninck HS-Heerlen-HIO-Stageverslag 4 Jan. 1994 WPA 120004."
[25]
R.J.J de Coninck
"Persproef-Analyse Programma versie 2.00 Source-code programma onderdelen. R.J.J de Coninck HS-Heerlen-HIO-Stageverslag 5 Jan. 1994 WPA 120005."
[26 ]
R.J.J de Coninck
"Persproef-Analyse Programma versie 2.00 Source-code library bestanden R.J.J de Coninck HS-Heerlen-HIO-Stageverslag 6 Jan. 1994 WPA 120006."
-107-
tJ' .... u.
....
III
~
CD
... 00
m o tJ' CD
S .... CD:
11 III
1Sllli'
o
....CDtt o
I f->
o
(Xl
I
IS11~ rSI1~ ~m ~~ ~ ~
JillIS1129'
Technische Universiteit Eindhoven Faculteit der Werktuigbouwkunde Vakgroep Produktietechnologie en -automatisering Laboratorium voor omvormtechnologie
Persproef-Analyse Programma versie 2.00 User's Manual
R.J.J. de Coninck HS-Heerlen-HIO-Stageverslag 4 Jan. 1994 VF-code: D2
WPA 12000-'1-\
tIm
stageperiode 1994
16-08-1993
Begeleider TU Eindhoven Begeleider Hogeschool Heerlen
Ir. L.J.A. Houtackers Ir. A.J. Goos
16-01-
Adressenlijst.
stageverlenend bedrijf:
Technische Universiteit Eindhoven
Bezoekadres:
Den Dolech 2 5612 AZ EINDHOVEN 040 - 479111
Postadres:
Postbus 513 5600 MB EINDHOVEN
Interne begeleider:
ire L.J.A. Houtackers
Prive:
Nachtegaallaan 2 5731 XR MIERLO (tel) 04927 - 62281 (fax) 04927 - 626448
Intern:
TU Eindhoven W-Hoog 0.119 040 - 474521 040 - 448665
Externe begeleider:
(tel) (fax)
ire A.J. Goos
Prive:
Frederikagracht 5 6465 CR KERKRADE 045 - 423163
Intern:
Dr. Jaegersstraat 40 6417 CK HEERLEN 045 - 734892 (tel) 045 - 719790 (fax)
stagiair:
R.J.J. de coninck
Prive:
Geleenstraat 66 6155 NO PUTH 04493 - 1157
Intern:
W-Hal 1.44 040 - 473648
-
1 -
Inhoudsopgave.
Adressenlijst .
-
Inhoudsopgave.
- 2 -
Verklarende woordenlijst
- 4 -
............
Figurenlijst
1 -
- 5 -
Inleiding
- 6 -
Hoofdstuk 1 - Minimale hardware-eisen voor het Persproef-Analyse Programma versie 2.00 •
- 8 -
Starten van het persproef-Analyse Programma versie 2.00 . . . . . . . • . . - 9 Starten van het Persproef-Analyse Programma versie 2.00 op een computer zonder harde schijf . . . . . . . • . - 9 Starten van het Persproef-Analyse Programma versie 2.00 op een computer met harde schijf • . • • . • . . . . . - 10 -
Hoofdstuk 2 2.1 2.2
Hoofdstuk 3 -
Schematische weergave van de onderdelen van het Persproef-Analyse Programma versie 2.00 . • . . . . . . •
Hoofdstuk 4 - Het hoofdmenu programma . . . . . • 4.1 Invoeren van de toegangscode . . ••• 4.2 Het hoofdmenu ••.••.•.. . .• 4.3 Wijzigen programma-instellingen ..•.••• 4.3.1 Wijzigen programma-directory 4.3.2 Wijzigen data-directory .. 4.3.3 Wijzigen directory voor tijdelijke l>E!s;1:Cll1ci~1l
• • •
• • • •
• •
•
•
• •
• •
4.3.4 Wijzigen type PC-LabCard ..... . 4.3.5 Wijzigen afdrukeenheid . . . . . • . 4.4 Einde hoofdmenu .
Hoofdstuk 5 -
Het acquisitie-gedeelte.
- 12 -
- 14 - 14 - 15 - 16 - 17 - 18 -
-
18 19 19 19
-
- 21 -
Hoofdstuk 6 - Het verwerkings-gedeelte. 6.1 Het verwerkings-menu. . ... 6.2 Selecteer persproef. • . . 6.3 Bewerken van een FS-kromme. 6.4 Grafiek bewerken. . .•.. 6.5 Het maken van een subset. 6.6 Het aanpassen van de assen. . •. 6.7 Het inzien van de grafiek . . . • . 6.8 Het berekenen van de grafiek. 6.9 Uitprinten van de rapporten.
-
27 -
-
28 29 31 33 34 35
Hoofdstuk 7 -
Bestand beheer
-
36 -
Hoofdstuk 8 -
schijf informatie
-
37 -
-
2 -
- 22 - 22 - 23 -
Literatuurlijst .
. . . . . . . . . . . . . . . . .
- 38 -
Bijlage 1: Opslag van de persproefgegevens. . . . . . . 1.1 Opbouw van de persproef .....•..•.. 1.1.1 Opbouw van een DAT-bestand . . . . • . . 1.1.2 Opbouw van een VAR-bestand •.. 1.1.3 Opbouw van een VST-bestand . . . . . • . 1.1.4 Opbouw van een PGG-bestand •.. 1.1.5 Opbouw van een PRV-bestand .•. 1.1.6 Opbouw van een FxS-bestand. • ....• 1.1.7 Opbouw van een ORG-bestand. . •••
-
40 40 40 40 41
-
42 42 -
Bijlage 2: Foutmeldingen.
-
-
3 -
-
- 42 - 42 43 -
Verklarende woordenlijst. Krachtsignaal
Een signaal dat afkomstig is van een krachtsensor op een meetpunt in een pers. oit signaal is een elektrische weergave (in Volt) van de kracht, die de stempel van de pers op het proefobject uitvoert.
Wegsignaal
Een signaal dat afkomstig is van een wegsensor op een meetpunt in een pers. Oit signaal is een elektrische weergave (in Volt) van de weg die de stempel aflegt om een bepaald proces te realiseren onder invloed van een kracht.
Schaalweg
Oe waarde die gekoppeld wordt aan het maximale signaal dat binnenkomt over een kanaal. Hierdoor kan het elektrische signaal omgezet worden naar een weg (in millimeter = rom) •
Schaalkracht
Oe waarde die gekoppeld wordt aan het maximale signaal dat binnenkomt over een kanaal. Hierdoor kan het elektrische signaal omgezet worden naar een kracht (in kilo Newton = kN) •
- 4 -
Figurenlijst. 3.1 3.2 4.1 4.2 4.3 4.4 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.9 6.10
-
Schema Persproef-Analyse Programma versie 2.00. Schema schermopbouw verwerkings gedeelte. Introductiescherm. Hoofdmenu. Wijzigen programma-instellingen. Einde Persproef-Analyse Programma. Verwerkings menu. Selecteren FS-kromme (1). Selecteren FS-kromme (2). Selecteren FS-kromme (3). Bewerken FS-kromme. Grafiek bewerken. Subset maken. Inzien van de grafiek. Bereken grafiek.
- 5 -
-
12 13 14 15 17
-
- 20 - 22 - 23 - 24 - 25 - 27 -
28 29 -
- 33 - 34 -
Inleidinq_ Binnen het Laboratorium voor Omvormtechnologie vormt de procesbeschrijving van omvormende bewerkingen een van de hoofdonderzoeksgebieden. Dit zijn bewerkingen waarbij een gewenste vormverandering wordt verkregen zonder dat er materiaalverlies optreedt (een voorbeeld hiervan is het persen van een autodeur uit een vlakke metaalplaat). Dit in tegenstelling tot bijvoorbeeld verspanende bewerkingen, waarbij een gewenste vormverandering wordt verkregen door het overtollig materiaal te verwijderen (bijvoorbeeld door frezen of draaien). De ontwikkelde procesmodellen worden beschreven met behulp van de plasticiteitsmechanica en gekoppeld aan de ontwikkelde materiaalmodellen. Tevens vindt er een experimentele toetsing plaats. Bij omvormprocessen spelen onder andere de eigenschappen van het materiaal, waaruit het werkstuk gemaakt dient te worden, een grote role Om nu gefundeerde uitspraken te kunnen doen over omvormende processen, zullen deze materiaaleigenschappen bekend moeten zijn. Daarnaast is het van belang de procesgrootheden te kennen. Voor het bepalen hiervan staan het Laboratorium voor Omvormtechnologie verschillende methoden ter beschikking. Een van deze methoden is de persproef. Er is eigenlijk geen sprake van een persproef. Het woord persproef is een verzamelnaam voor een aantal koudomvormproeven (waaronder stripdieptrekken, dieptrekken, persen, ponsen en dergelijke). Het is de bedoeling dat het Persproef-Analyse Programma gegevens van deze proeven (eventueel op verschillende persen uitgevoerd) registreert en verwerkt. nit zijn de twee hoofdtaken van het Persproef-Analyse Programma. Het eerste hoofdstuk beschrijft de minimale hardware-eisen die voor de verschillende onderdelen van het Persproef-Analyse Programma versie 2.00 nodig zijn om het programma te laten draaien. In hoofdstuk twee wordt het starten van de persproef behandeld. Hoofdstuk 3 geeft een schematische weergave van de onderdelen van het Persproef-Analyse Programma versie 2.00 gegeven. De onderdelen worden in de daaropvolgende hoofdstukken behandeld. Zo wordt in hoofdstuk 4 het hoofdmenu behandeld, in hoofdstuk vijf het acquisitie-gedeelte, in hoofdstuk zes het verwerkingsgedeelte, in hoofdstuk zeven het bestands-beheer gedeelte en tenslotte in hoofdstuk acht het schijf-informatiegedeelte. Verder zijn de inhoud van de bestanden en aIle foutmeldingen in de bijlage nummer 1 terug te vinden.
- 6 -
Tijdens de stageperiode zlJn de volgende verslagen geschreven: Stageverslag 1: aug. 1993, WPA 120001 - Introductie. Stageverslag 2: sep. 1993, WPA 120002 - Essentieel model. Stageverslag 3: okt. 1993, WPA 120003 - Implementatie model. Stageverslag 4: jan. 1994, WPA 120004 - Gebruikers handleiding. Stageverslag 5: jan. 1994, WPA 120005 - Source-code programmaonderdelen PersproefAnalyse Programma versie 2.00. Stageverslag 6: jan. 1994, WPA 120006 - Source-code librarybestanden PersproefAnalyse Programma versie 2.00.
- 7 -
Hoofdstuk 1 - Minimale hardware-eisen voor het Persproef-Analyse Proqramma versie 2.00.
De minimale hardware-eisen van het Persproef-Analyse Programma zijn afhankelijk van welk gedeelte men van dit programma men wil gebruiken. Voor het acguisitie-qedeelte gelden de volgende minimaIe hardware-eisen: - IBM compatibel PC/XT/ATi 640 Kb RAM geheugeni eGA grafische kaarti 1 diskette station en een harde schijf, of 2 diskette stations. ( De diskette stations moeten minimaal van het type 5,25" DD zijn met een capaciteit van 360 Kb); MS-DOS besturingssysteem, versie 3.3 of hoger. Voorhetverwerkinqsgedeelte-gedeeltegeldendevolgendeminimale hardware-eisen: - IBM compatibel PC/XT/ATi 640 Kb RAM geheugeni VGA,EGA grafische kaarti 1 diskette station en een harde schijf, of 2 diskette stations. ( De diskette stations moeten minimaal van het type 5,25" DD zijn met een capaciteit van 360 Kb)i MS-DOS besturingssysteem, versie 3.3 of hoger. Het verwerkingsgedeelte ondersteunt de volgende afdrukapparatuur: - HP Laserjet III laserprinter, aan te sluiten via de parallelle printerpoort (LPT1). Deze wordt gebruikt voor het afdrukken van rapporten (inclusief grafieken)i In het setup-menu van de printer moet de optie 'page protection' op A4 worden gezet. Gebeurt dit niet, dan bestaat de mogelijkheid dat de printer niet in staat is om de in het verwerkingsgedeelte gemaakte grafieken af te drukken. Zie de printerhandleiding voor nadere details betreffende de page protection optie. Belanqrijk:
- HPGL plotter (HP 7475A compatibel) aan te sluiten via de tweede seriale poort (COM2). Deze wordt gebruikt voor het afdrukken van grafieken. - (nog te realiseren:) AIle (aanwezige) NEC Pinwriters. AIle overiqe proqramma-onderdelen zoals het bestand beheer gedeelte, het schijf informatie-gedeelte en het extern installatie programma werken allen op beide hierboven genoemde hardware-configuraties.
- 8 -
Hoofdstuk 2 -
2.1
starten van het Persproef-Analyse Programma versie 2.00.
starten van het Persproef-Analyse Programma versie 2.00 op een computer zonder harde schijf.
Indien de computer nog niet is ingeschakeld: 1. stop
2. 3. 4. 5.
6.
7.
de opstartschijf in station A (dit is meestal het linkse of bovenste diskette station). Zet aIle benodigde en aanwezige randapparatuur aan (denk hierbij aan het beeldscherm, de printer en/of de plotter). Zet de computer aan. Wacht tot de DOS-prompt is verschenen (deze ziet er meestal zo uit: "A>" of "A:\>"). Verwissel de opstartschijf met de schijf waarop het Persproef-Analyse Programma versie 2.00 staat. Indien men van plan is het acquisitie-gedeelte te gebruiken: stop een (al dan niet) lege diskette in station B, indien station B als data directory ingesteld is. Hierop zullen de verkregen meetgegevens worden opgeslagen. Tik "A:\HoofdmeJ1+-'" in.
Na enkele seconden (afhankelijk van de snelheid van de computer) zal het introductie-scherm van het Persproef-Analyse Programma versie 2.00 verschijnen (figuur 4.1).
Indien de computer reeds is ingeschakeld: Zet aIle benodigde en aanwezige randapparatuur aan (denk hierbij aan het beeldscherm, de printer en/of de plotter). 2. Verwissel de opstartschijf met de schijf waarop het Persproef-Analyse Programma versie 2.00 staat. 3. Indien men van plan is het acquisitie-gedeelte te gebruiken: stop een (al dan niet) lege diskette in station B, indien station B als data directory ingesteld is. Hierop zullen de verkregen meetgegevens worden opgeslagen. 4. Tik "A:\HoofdmeJ1+-''' in. 1.
Na enkele seconden (afhankelijk van de snelheid van de computer) zal het introductie-scherm van het Persproef-Analyse Programma versie 2.00 verschijnen (figuur 4.1).
-
9 -
2.2
starten van bet Persproef-Analyse Proqramma versie 2.00 op een computer met harde scbijf.
Indien de computer nog niet is ingeschakeld: 1. Zet aIle benodigde en aanwezige randapparatuur aan (denk hierbij aan het beeldscherm, de printer en/of de plotter). 2. Zet de computer aan. 3a. Indien er een keuzemenu verschijnt met de optie "Persproef-Analyse Programma versie 2.00", moet deze optie geactiveerd worden. De volgende stappen kunnen dan overslagen worden. 3b. Indien men binnen een keuze menu werkt zonder de optie "Persproef-Analyse Programma versie 2.00", zoek dan of de "Persproef-Analyse Programma versie 2.00" optie ergens anders in een keuze (sub)menu staat. Indien de optie is gevonden kan men verder gaan met stap 3a. Indien men de optie niet heeft gevonden dan moet het menu verlaten worden, en moeten de stappen 4. tot en met 6. doorlopen worden. 3c. Indien er geen keuzemenu verschijnt dient men eveneens de stappen 4. tot en met 6. te doorlopen. 3d. Indien er direct een programma (tekstverwerker, spreadsheet of enig ander programma) opgestart wordt, moet dit programma afgesloten worden, en dient men met de stappen 4. tot en met 6 te vervolgen. 4. Wacht tot de DOS-prompt is verschenen (deze ziet er meestal zo uit: "C>" of "C:\>"). 5. Ga naar de directory waar het Persproef-Analyse Programma zich bevindt. Doe dit met het DOS-commando "cd" (indien het programma zich in de directory "C:\PROGRAM\PERSPRF" bevindt dient men achtereenvolgens "c:..." en "cd C: \Program\Persprf..." in te tikken na de DOS-prompt). 6. Start het programma door het commando "HoofdmeD+J" in te tikken. Na enkele seconden (afhankelijk van de snelheid van de computer) zal het introductie-scherm van het Persproef-Analyse Programma versie 2.00 verschijnen (figuur 4.1).
Indien de computer reeds is ingeschakeld: 1. Zet
aIle benodigde en aanwezige randapparatuur aan (denk hierbij aan het beeldscherm, de printer en/of de plotter). 2a. Indien men zich binnen een keuzemenu werkt met de optie "Persproef-Analyse Programma versie 2.00", dan moet deze optie geactiveerd worden. De volgende stappen kunnen overgeslagen worden.
- 10 -
2b.
Indien men binnen een keuzemenu werkt zonder de optie "Persproef-Analyse Programma versie 2.00", zoek dan of de "Persproef-Analyse Programma versie 2.00" optie ergens anders in een keuze {sub)menu staat. Indien de optie is gevonden kan men verder gaan met stap 2a. Indien men de optie niet heeft gevonden dan moet het menu verlaten worden, en moeten de stappen 3. tot en met 5. doorlopen. 2c. Indien er geen keuzemenu verschijnt dient men ook de stappen 3. tot en met 5. te doorlopen. 2d. Indien er direct een programma (tekstverwerker, spreadsheet of enig ander programma) opgestart wordt, moet dit programma afgesloten worden, en dient men met de stappen 3. tot en met 5 te vervolgen. 3. Wacht tot de DOS-prompt is verschenen (deze ziet er meestal zo uit: "C>" of "C:\>"). 4. Ga naar de directory waar het Persproef-Analyse Programma zich bevindt. Doe dit met het DOS-commando "cd" (indien het programma zich in de directory "C:\PROGRAM\PERSPRF" bevindt dient men achtereenvolgens "C:+-''' en "cd e: \program\persprf+-''' in te tikken na de DOS-prompt). 5. Start het programma door het commando "HoofdmeD+''' in te tikken. Na enkele seconden (afhankelijk van de snelheid van de computer) zal het introductie-scherm van het Persproef-Analyse Programma versie 2.00 verschijnen (figuur 4.1).
- 11 -
Boofdstuk 3 -
Schematische weerqave van de onderdelen van het Persproef-Analyse Proqramma versie 2.00.
Extern instellingen programma
Hoofdmenu programma
I
I
I
Acquisitie programma
I
Verwerkings programma
Bestand beheer programma
I Wijzigen instellingen (intern)
I Schijf informatie programma
Figuur 3.1
- Schema Persproef-Analyse Programma versie 2.00.
Opmerking 1:
Bet externe programma voor het wijzigen van bepaalde instellingen van het Persproef-Analyse Programma versie 2.00 is nog niet gerealiseerd.
Opmerking 2:
Bet programma bestand beheer voor het bekijken van de inhoud van diskette, het hernoemen en verwijderen van Persproef-bestanden is nog niet gerealiseerd.
Opmerking 3:
Bet programma schijfinformatie, dat gebruikt kan worden om diskettes v66r een persproef te controleren op de nog aanwezige vrij ruimte diskette, het hernoemen en verwijderen van persproeven is nog niet gerealiseerd.
- 12 -
Schema schermopbouw acquisitie gedeelte, bladzijde 7.
zie REINDERS LIT[ll]
Verwerking I
I Selecteren FS-kromme
I Uitprinten FSgegevens
I Bewerken FS-kromme
5121
5123
5122 I
I
Grafiek Bewerken 51221
Grafiek Berekenen
I
51222
I
Subset maken 512211
Figuur 3.2
I
Assen aanpassen
Grafiek inzien
512212
512213
- Schema schermopbouw verwerkings gedeelte.
-
13 -
Hoofdstuk 4 -
Het hoofdmenu programma.
Het hoofdprogramma staat centraal in het Persproef-Analyse Programma versie 2.00. Vanuit dit menu kunnen de belangrijkste handelingen gestart worden. 4.1
Invoeren van de toegangscode.
PERSPROEF ANALYSE PROGRAMMA
VERSIE 2.00
Data-Acquisitie en Verwerking PC <-> PC-lABCard 718/818
Copyright (C) 1993 lab. voor Ornvormtechnologie TUE Informatie: Tel: 040 - 474521 Fax: 040 - 448665
I
Ir. l.J.A. Houtackers Dr. Ir. J.A.H. Ramaekers Dhr. P.J.M. Reinders Dhr. R.J.J. de Coninck
Voer toegangscode in: >•••••• < (1e poging)
I
Voer toegangscode in of druk <Esc> om het programma te beeindigen del nnd. j jj j
laboratorium voor Ornvormtechnologie TUE
Figuur 4.1
uu:nm
- Introductiescherm.
Het Persproef-Analyse Programma versie 2.00 is tegen oneigenlijk gebruik beschermd door middel van een toegangscode. Voordat men met het programma kan werken zal er eerst een toegangscode ingevoerd moeten worden. De correcte toegangscode is bekend bij de systeembeheerder. Indien een foutieve toegangscode is ingevoerd, verschijnt er een fout-boodschap op het scherm (fout no 002), waarna men opnieuw mag proberen de correcte toegangscode in te voeren. In totaal krijgt men drie pogingen om de code correct in te voeren. Is de code voor derde maal verkeerd ingevoerd, dan zal het PersproefAnalyse Programma worden beeindigd. Dit gebeurt ook als men in plaats van de toegangscode op <ESCAPE> drukt. Wanneer de ingevoerde code correct ingevoerd is, verschijnt het hoofdmenu (figuur 4.2).
Opmerking: Wanneer tijdens het opstarten van het Persproef-Analyse Programma fouten optreden, dan worden deze in het introductie-scherm getoond.
- 14 -
De volgende fouten kunnen tijdens het starten van het PersproefAnalyse Programma optreden: - De gebruikte computer-configuratie bezit geen geldige grafische kaart. Indien dit het geval is, dan wordt een fout-boodschap (fout no. 001) getoond en wordt het programma beeindigd. - Het instellingen-bestand Persprf.Ins, dat een aantal voor het Persproef-Analyse Programma belangrijke instellingen bevat, staat niet in de directory waar de overige programmabestanden zich bevinden. Hierdoor kan de uitvoering van het Persproef-Analyse Programma niet worden voortgezet. In dit geval wordt er een fout-boodschap (fout no. 003) getoond en wordt het programma beeindigd. 4.2
Bet hoofdmenu.
I 81
: Hoofdmenu
1 - Acquisitie data 2 - Verwerking data 3 - Wijzig programma-insteLLingen 4 - Bestanden beheer 5 - Einde Persproef-AnaLyse Programma
Geef een cijfer of gebruik de pijLtjestoetsen, gevoLgd door <Enter> dd nncI. j j jj
Laboratorium voor omvormtechnoLogie TUE
Figuur 4.2
uu:mm
- Hoofdmenu.
Men kan een menu-item op twee manieren kiezen: - Door het cijfer dat v66r het betreffende menu-item staat in te toetsen. Door met behulp van de cursortoetsen (omhoog en omlaag) de (blauwe) menubalk naar het betreffende menu-item te verplaatsen en vervolgens op <Enter> te drukken.
- 15 -
Menuitem: Uitleg Hoofdmenu (figuur 4.2): 1.
start het acquisitie-gedeelte van het Persproef-Analyse Programma op (zie ook hoofdstuk 5). Hiermee kunnen de persproef-gegevens, die via de PC-LabCard zijn verkregen, geregistreerd en bewaard worden. Indien men een versie van het Persproef-Analyse Programma gebruikt zonder acquisitie-programma, dan verschijnt er een fout-boodschap (fout no. 004). Vraag, indien nodig, de systeembeheerder voor een diskette met het bijbehorende acquisitie-programma.
2.
start het verwerkingsgedeelte van het Persproef-Analyse Programma op (zie ook hoofdstuk 6). Hiermee kunnen de met het acquisitie-programma verkregen persproef-gegevens worden verwerkt tot procesparameters en desgewenst worden gepresenteerd in grafieken en rapporten. Indien men een versie van het Persproef-Analyse Programma gebruikt zonder verwerkingsprogramma, dan verschijnt er een fout-boodschap (fout no. 005). Vraag, indien nodig, de systeembeheerder voor een diskette met het bijbehorende verwerkingsprogramma.
3.
Deze menu-optie maakt het mogelijk om een aantal instellingen van het Persproef-Analyse te wijzigen, zoals het type afdruk-apparatuur, de programma-, data- en tijdelijke directory. Het "Wijzigen programmainstellingenn-scherm (figuur 4.3) verschijnt dan.
4.
Met behulp van deze functie worden van aIle persproeven, die zich in de data directory (ingesteld met optie 3. is dit de plaats waar de persproef-gegevens zijn opgeslagen) bevinden, de belangrijkste gegevens getoond en wordt de mogelijkheid gegeven bestanden te hernoemen en/of verwijderen (zie ook hoofdstuk 7).
s.
Via deze optie wordt het Persproef-Analyse Programma beeindigd. In plaats van ' 5 ' kan men ook op <ESCAPE> drukken om het programma te beeindigen (zie figuur 4.4).
4.3 Wijzigen programma-instellingen (intern). In figuur 4.3 kan men instellingen wijzigen die voor het programma van belang zijn. Door het intoetsen van de cijfers '1' tot en met '5' kan men de getoonde instellingen wijzigen. Deze worden in de nu volgende paragrafen toegelicht. Het indrukken van de -toets heeft tot gevolg dat een helpscherm verschijnt, waarin er toelichting wordt gegeven over het wijzigen van de instellingen. Bladeren door de help-schermen gebeurt met behulp van de en toetsen. De helpschermen kunnen verlaten worden door op <ESCAPE> te drukken.
- 16 -
Indien op de <ESCAPE> toets gedrukt wordt binnen het "Wijzigen programma-instellingen"-scherm, zal het programma de eventueel gemaakte instellingen bewaren en terugkeren naar het hoofdmenu. 513
: Hoofdmenu\Wijzigen programma-instellingen
1 - Directory programma-bestanden: 2 - Directory persproef-bestanden:
3 - Directory tijdelijke bestanden: 4 - Type PC-LabCard: 5 - Type afdruk-eenheid: Uw keuze (1 tIm 5, <Esc> is terug): 6 jan. 1994
Figuur 4.3 4.3.1
~.~
Laboratorium voor omvormtechnologie TUE
(F1 = Help) 13:55
- Wijzigen programma-instellingen.
Wijzigen programma-directory.
De programma-directory geeft de plaats aan waar de verschillende onderdelen van het Persproef-Analyse Programma versie 2.00 zich bevinden. De programma-directory kan worden gewijzigd door ' l' in te toetsen in het "Wijzigen programma-instellingen"-scherm (figuur 4.3). De gewijzigde programma-directory moet een bestaande directory zijn. Nadat de wijzigingen z1Jn aangebracht, wordt gecontroleerd of de nieuwe programma-directory aan aIle geldigheidseisen voldoet, en eventuele fouten worden getoond: - Ingevoerde disk(ette) station bestaat niet (fout no. 010). - Ongeldige schrijfwijze (fout no. 011). - Ingevoerde directory bestaat niet (fout no. 012). Nadere aanwijzigingen over het wijzigen van de programmadirectory kan men via (help) oproepen. Met behulp van <ESCAPE> kan men de helpschermen weer verlaten. Indien men de wijziging wenst te annuleren, dan kan men de oorspronkelijke instelling handhaven door hier <ESCAPE> in te drukken.
- 17 -
4.3.2
Wijzigen data-directory.
De eerste data-directory geeft de plaats aan waar de verkregen resultaten van de persproeven worden opgeslagen vanuit het Acquisitie-gedeelte. De tweede data-directory geeft de plaats aan waar de bewerkte persproeven worden opgeslagen vanuit het Verwerkings-gedeelte. De data-directory kan worden gewijzigd door '2' in te toetsen in het "Wijzigen programma-instellingen"-scherm (figuur 4.3). De gewijzigde data-directory moet een bestaande directory zijn. Het programma springt automatische naar de tweede data-directory. Nadat de wijzigingen zijn aangebracht, wordt gecontroleerd of de nieuwe data-directory aan aIle geldigheidseisen voldoet, en eventuele fouten worden getoond: - Ingevoerde disk(ette) station bestaat niet (fout no. 010). - Ongeldige schrijfwijze (fout no. 011). - Ingevoerde directory bestaat niet (fout no. 012). Nadere aanwijzigingen over het wijzigen van de data-directory kan men via (help) oproepen. Met behulp van <ESCAPE> kan men de helpschermen weer verlaten. Indien men de wijziging wenst te annuleren, dan kan men de oorspronkelijke instelling handhaven door hier <ESCAPE> in te drukken. 4.3.3
wijzigen directory voor tijdelijke bestanden.
De directory voor tijdelijke bestanden geeft de plaats aan waar het Persproef-Analyse Programma versie 2.00 tijdelijke bestanden kan opslaan. Dit is onder andere nodig bij het tonen en afdrukken van grafieken. De directory voor tijdelijke bestanden kan worden gewijzigd door , 3' in te toetsen in het "Wij zigen programma-instellingen"-scherm (figuur 4.3). De directory voor tijdelijke bestariden moet een bestaande directory zijn. Nadat de wijzigingen zijn aangebracht, wordt gecontroleerd of de nieuwe directory voor tijdelijke bestanden aan aIle geldigheidseisen voldoet, en eventuele fouten worden getoond: - Ingevoerde disk(ette) station bestaat niet (fout no. 010). - Ongeldige schrijfwijze (fout no. 011). - Ingevoerde directory bestaat niet (fout no. 012). Nadere aanwijzigingen over het wijzigen van de directory voor tijdelijke bestanden kan men via (help) oproepen. Met behulp van <ESCAPE> kan men de helpschermen weer verlaten. Indien men de wijziging wenst te annuleren, dan kan men de oorspronkelijke instelling handhaven door hier <ESCAPE> in te drukken. - 18 -
4.3.4
Wijziqen type PC-LabCard.
Het op deze plaats genoemde type PC-LabCard wordt binnen het acquisitie-programma gebruikt om de kaart in te stellen. Het is van groot belang hier de juiste kaart in te vullen, want elke kaart (het programma ondersteunt de PC-LabCard 718 en 818) heeft andere eigenschappen en functies. Als hier de verkeerde kaart ingevuld wordt, wordt de kaart verkeerd ingesteld en kan het gebeuren dat er foutieve, incomplete of zelfs helemaal geen gegevens worden verkregen. Het type PC-LabCard kan gewijzigd worden door op '4' in het "Wijzigen programma-instellingen"-scherm. acquisitie-kaart kan gewijzigd worden door vervolgens te tikken voor de PC-LabCard 718 of een '8' voor de 818.
te drukken Het type een '7' in PC-LabCard
Nadere aanwijzigingen over het wlJzlgen van de acquisitie kaart kan men via (help) oproepen. Met behulp van <ESCAPE> kan men de helpschermen weer verlaten. 4.3.5
Wijziqen afdrukeenheid.
Op deze plaats kan het gebruikte type afdrukeenheid worden opgegeven. Het type afdrukeenheid kan worden gewijzigd door op '5' te drukken in het "Wijzigen programma-instellingen"-scherm. Geldige afdruk-eenheden zijn: - HP Laserjet III. - HPGL seriele plotter (HP 7475A compatibel). - Geen afdruk-eenheid. Via (help) krijgt men een nadere toelichting over het wijzigen van de afdruk-eenheid. Met behulp van <ESCAPE> kan men de helpschermen weer verlaten. 4.4
Einde hoofdmenu.
Indien men in het hoofdmenu (figuur 4.1) heeft gekozen voor optie '5' of <ESCAPE> wordt, voordat het Persproef-Analyse Programma gestopt wordt, aan de gebruiker gevraagd of deze daadwerkelijk wil stoppen. De gebruiker heeft nu de keuze uit 'J', 'H' en <ESCAPE>. Met 'H' en <ESCAPE> komt men weer terug in het hoofdmenu-scherm, en met 'J' wordt het programma afgebroken. Het Persproef-Analyse Programma gaat er van uit dat de gebruiker niet wil stoppen, dus de mogelijkheid die alvast gegeven wordt is 'H'. Door aIleen op <ENTER> te drukken komt men weer terug in het hoofdmenu-scherm. - 19 -
Binde hoofdmenu (vervolg).
I 51
: Hoofdmenu
1 -
Data-acquisitie
2·
Data-verwerking
Einde Persproef-AnaLyse Programma Zeker weten (J/N) 5 -
>N<
Einde Persproef-Analyse Programma
Geef een cijfer of gebruik de pijltjestoetsen, gevolgd door <Enter> dd rond.
jjjj
Figuur 4.4
Laboratorium voor OmvormtechnoLogie rUE
uu:mm
- Einde Persproef-Analyse Programma.
-
20 -
Boofdstuk 5 -
Bet acquisitie-qedeelte.
Het acquisitie gedeelte is uitgewerkt in REINDERS LIT[11]. In de nabije toekomst zal een aanpassing van het acquisitie gedeelte plaatsvinden. Overtuig U, bij gebruik van deze handleiding van het verwerkings gedeelte van Persproef-Analyse Programma dat u werkt met de verbeterde versie van REINDERS LIT [11] •
- 21 -
Boofdstuk 6 6.1
Bet verwerkinqs-qedeelte.
Bet verwerkinqs-menu.
De verwerking bestaat in het Persproef-Analyse Programma respectievelijk uit het selecteren van een persproef, het bewerken van de gekozen persproef en het afdrukken van rapporten behorende bij de gekozen persproef.
I
S12
: Hoofdmenu\Data verwerking
1 - Selecteren FS-kromme 2 - Bewerken 3 -
FS-kromme
Uitprinten FS-kromme
4 - Terug naar hoofdmenu
Geef een cijfer of gebruik de cursorstoetsen, gevolgd door <Enter> dd mnd. jjjj
Laboratorium voor Ornvormtechnologie TUE
Figuur 6.1
uu:mm
- Verwerkings menu.
Men kan een menu-item uit het verwerkings menuscherm op twee manieren kiezen: - Door het cijfer dat veer het betreffende menu-item staat in te toetsen. - Door met behulp van de cursortoetsen (omhoog en omlaag) de (blauwe) menubalk naar het betreffende menu-item te verplaatsen en vervolgens op <ENTER> te drukken. Menuitem: Uitleg Verwerkings-menu (Figuur 6.1): 1.
Deze menu-optie maakt het mogelijk om een persproef te selecteren. Dit wil zeggen de perproeven, die voorkomen in de data-directory en waarvan aIle benodigde files aanwezig zijn. Daarna zal er de mogelijk bestaan om aan te geven welke grafiek men wil maken bij de gekozen persproef.
2.
Via deze menu-optie is het mogelijk de gekozen persproef en de daarbij behorende grafiek te bewerken. Men kan de grafiek bewerken en/of berekenen (zie figuur 6.5).
3.
Als deze menu-optie wordt gekozen dan kan men kiezen welk soort rapport er van de gekozen persproef moet worden afgedrukt (zie figuur 6.? straks terug te vinden in het nog aan dit te koppelen printer gedeelte) . - 22 -
4.
6.2
Met deze optie gaat men weer terug naar het hoofdmenu (figuur 4.1). In plaats van met '4' terug naar het hoofdmenu te gaan kan men ook met <ESCAPE> teruggaan. Selecteer persproef. 5121
: Hoofdmenu\Data verwerking\5electeren F5-krornme
Wilt u met deze persproef doorgaan (J/N) PF931001 Antwoord:
t,!
.J~
= selecteren <Enter>=accepteren <Esc>=terug
dd mel. jjjj
Laboratorium voor Omvormtechnologie TUE
Figuur 6.2
mm:uu
- Selecteren FS-kromme (1).
Dit scherm (figuur 6.2) wordt aIleen actief als er al een persproef gekozen is. Voorbeeld: Men heeft al een grafiek bij een eerder gekozen persproef gemaakt en men wil nu een andere grafiek maken. Door nu ja te antwoorden hoeft men geen persproef meer te selecteren. Dus figuur 6.3 wordt dan overgeslagen.
- 23 -
S121
: Hoofdmenu\Data verwerking\Selecteren FS-kromrne
Persproef:
Bijbehorende gegevens:
PF931001 PF931 002 PF931 003 PF931004 PF931101 PF931102
PF931001 Naam ALUMINIUM Materiaalsoort lIerkstof-NU1IlIer ? Herkomst materiaal VOLVO 0.99898 Plaatdikte 19 19 19 19 19 19 Aantal meetparen Datum : 02-07-93 Proef reeds verwerkt : Nee SH/LF 100/15 Merk pers
t,L = selecteren <Enter>=accepteren <Esc>=terug 6 jan. 1994
Figuur 6.3 In dit scherm geselecteerd.
15:20
Laboratorium voor Qmvormtechnologie TUE
wordt
- Selecteren FS-kromme (2). de
persproef,
die
u
wilt
verwerken
In het venster met de "Perproef" staan de namen van de perproeven die zich in de data-directory bevinden en waarvan aIle benodigde files aanwezig zijn. De (licht-grijze) selectiebalk geeft de te selecteren persproef aan. Met behulp van de pijltjestoetsen (omhoog en omlaag) kan de gewenste persproef worden gezocht. In het venster met de naam "Bijbehorende gegevens" toont van de persproef, die zich onder de selectiebalk bevindt, een aantal bijzonderheden. Met behulp van deze gegevens kan de te selecteren persproef eenvoudig worden herkend. Selecteren van de te verwerken persproef gebeurt door de menubalk naar de gewenste persproef te verplaatsen en vervolgens ENTER te drukken. Indien men een persproef heeft geselecteerd zal figuur 6.4 het opvolgende scherm zijn.
-
24 -
5121
Hoofdmenu\Data verwerking\5electeren F5-kromme
PF931 001
1· Grafiek kracht 1 tegen weg 1 2 - Grafiek kracht 2 tegen weg 2 3 - Grafiek kracht 3 tegen weg 3 4· 5· 6· 7 8 9 -
Grafiek Grafiek Grafiek Grafiek Grafiek Grafiek
kracht kracht kracht kracht kracht kracht
2 3 1 1 2 3
tegen tegen tegen tegen tegen tegen
weg weg weg weg weg weg
1 1 2 3 3 2
Geef een cijfer of gebruik de cursorstoetsen, gevolgd door <Enter> 29 okt. 1993
Laboratorium voor Ornvormtechnologie TUE
Figuur 6.4
13:31
- Selecteren FS-kromme (3).
Menuitem: Uitleg Verwerkings-menu (Figuur 6.4): 1.
Door deze menu-optie te kiezen wordt er gekozen voor de grafiek waarin kracht een en weg een tegen elkaar zijn uitgezet~
2.
Door deze menu-optie te kiezen wordt er gekozen voor de grafiek waarin kracht twee en weg twee tegen elkaar zijn uitgezet.
3.
Door deze menu-optie te kiezen wordt er gekozen voor de grafiek waarin kracht drie en weg drie tegen elkaar zijn uitgezet.
4.
Door deze menu-optie te kiezen wordt er gekozen voor de grafiek waarin kracht twee en weg een tegen elkaar zijn uitgezet.
s.
Door deze menu-optie te kiezen wordt er gekozen voor de grafiek waarin kracht drie en weg een tegen elkaar zijn uitgezet.
6.
Door deze menu-optie te kiezen wordt er gekozen voor de grafiek waarin kracht een en weg twee tegen elkaar zijn uitgezet.
7.
Door deze menu-optie te kiezen wordt er gekozen voor de grafiek waarin kracht een en weg drie tegen elkaar zijn uitgezet.
8.
Door deze menu-optie te kiezen wordt er gekozen voor de grafiek waarin kracht twee en weg drie tegen elkaar zijn uitgezet.
- 25 -
9.
Door deze menu-optie te kiezen wordt er gekozen voor de grafiek waarin kracht drie en weg twee tegen elkaar zijn uitgezet.
De eerste drie menu-opties zijn de standaard grafieken die bij de persproef horen. De menu-opties 4 tot en met 9 zijn onderzoek grafieken. Deze grafieken zijn bedoeld om fouten op te sporen, die tijdens het persen zijn opgetreden en/of te experimenteren. Opmerking 1:
Het is mogelijk dat bepaalde menu-opties niet kunnen worden gekozen, omdat b. v. een bepaalde de kracht of weg niet is gemeten. Deze menu-opties zijn dan met een licht grijze kleur aangegeven. Indien de menu-optie tochwordt gekozen hoort men een waarschuwingstoon. Opmerking 2:
Indien een grafiek wordt gekozen waarvan de kracht en de weg een ongelijk aantal meetpunten heeft, dit geval geldt indien men een bewerkte persproef heeft gekozen, dan krijgt men hiervan een melding. De melding luidt als voIgt : "Deze grafiek kan niet worden gemaakt. wil t u dat de originele persproef wordt opgehaald (J IN)
?".
Als men ja antwoord, dan wordt de originele persproef behorende bij de gekozen persproef opgehaald. De originele persproef wordt dan de actieve persproef. Als het antwoord nee luidt dan keert men terug naar scherm 5121 (figuur 6.4).
-
26 -
6.3
Bewerken van een FS-kromme. S122
: Hoofdmenu\Data verwerking\Bewerken FS-kromme
PF931001
1 - Grafiek bewerken 2 - Grafiek berekenen 3 - Terug naar verwerkingsmenu
Geef een cijfer of gebruik de cursorstoetsen, gevolgd door <Enter> 29 okt. 1993
Laboratorium voor omvormtechnologie rUE
Figuur 6.5
13:32
- Bewerken FS-kromme.
Menuitem: Uitleg Verwerkings-menu (Figuur 6.5): 1.
Deze menu-optie maakt het mogelijk om te kiezen wat voor een soort bewerking men op de grafiek wilt loslaten (figuur 6.6).
2.
Via deze menu-optie kan men van de gekozen persproef en de daarbij behorende grafiek de procesparameters laten bereken. Deze procesparameters zullen ook op het scherm worden weergeven (figuur 6.10).
3.
Met deze optie gaat men weer terug naar het verwerkingsmenu (figuur 6.1). In plaats van met '3' terug naar het verwerkingsmenu te gaan, kan men ook met <ESCAPE> teruggaan.
-
27 -
6.4
Grafiek bewerken. 51221
: ••• \Data verwerking\Bewerken F5-krornme\Grafiek bewerken PF931001
1 - Aanmaken van een subset 2 - Assen aanpassen 3 - Grafiek inzien 4 - Terug naar bewerkingsmenu
Geef een cijfer of gebruik de cursorstoetsen, gevolgd door <Enter> 29 okt. 1993
Laboratorium voor Omvormtechnologie TUE
Figuur 6.6
13:32
- Grafiek bewerken.
Menuitem: uitleg Verwerkings-menu (Figuur 6.6): 1.
Met deze menu-optie is het mogelijk om van de meetpunten van de gekozen grafiek een subset te maken.
2.
Deze menu-optie maakt het mogelijk om de assen van de grafiek aan te passen.
3.
Door deze menu-optie te kiezen kan men zien hoe de grafiek eruit ziet.
4.
Met deze optie gaat men weer terug naar het bewerkingsmenu (figuur 6.5) en worden eventuele bewerkingen automatische weggeschreven. In plaats van met ' 4 ' terug naar het verwerkingsmenu te gaan kan men ook met <ESCAPE> teruggaan.
Opmerking
~:
Indien men met menu-optie 4 het menu verlaat en er z1Jn bewerkingen uitgevoerd, dus menu-optie 1 en/of 2 zijn uitgevoerd, dan zal het programma de bewerkingen opslaan op schijf. Afhankelijk de bewerkingen, die zijn uitgevoerd, wordt de bewerkte persproef onder de zelfde naam of onder een ander naam weggeschreven. Het programma geeft zelf aan onder welke naam dit gebeurt.
-
28 -
Opmerking 2: Indien men een bewerking heeft uitgevoerd en men drukt op ESCAPE, dan krijgt men een vraag. Deze vraag luidt als voIgt: U Er zijn bewerkingen uitgevoerd. Deze bewerkingen gaan verloren indien u annuleert. wilt u toch annuleren (J/N) ?". Indien men ja antwoord zal het huidige scherm worden verlaten en zullen aIle bewerkingen verloren gaan. Luidt het antwoord nee dan zal men terug keren naar het actieve scherm. 6.5
Het maken van een subset. S12211
PF9310Q1
: •• \Grafiek bewerken\Subset maken F1 0.00 4.88 9.77 14.65 19.53 24.41 29.30 34.18 39.06 43.95
S1
I
0.000 0.201 0.393 0.596 0.780 0.980 1.170 1.371 1.561 1.762
F1
S1
48.83 53.71 58.59 63.48 68.36 73.24 78.13 83.01 87.89
I
F1
S1
1.953 2.153 2.342 2.547 2.734 2.932 3.139 3.321 3.522
t , !: seLecteren eginwaarde <E>indwaarde <W>issen ersteL ijdeLijk opsLaan <Esc> : annuLeren : heLp : help
17 dec. 1993
Laboratorium voor OmvormtechnoLogie TUE
Figuur 6.7
11:57
- Subset maken.
Met dit scherm kan men een subset maken, om zo b.v. een deel van een grafiek te onderzoeken. Men kan met de bladerfunkties de meetgegevens doorlopen. Zo gaat men met de cursortoetsen t, ... respectievelijk een meetpaar omhoog of omlaag. Met de funktietoets gaat men naar het eerste meetpaar en met de funktietoets <END> gaat men naar het laaste meetpaar. Tenslotte zijn er nog de functietoetsen Paqeup en Paqedown. Met PageUp gaat men een bladzijde (d.w.z. een scherm) naar boven en met PageDown gaat men een bladzijde naar beneden. Bij welk meetpaar men staat wordt aangegeven met een licht grijze balk. Op dit scherm zl.Jn ook een aantal markerings mogelijkheden aanwezig. Indien men een van deze markerings mogelijkheden actief maakt, dan geldt dit voor het meetpaar, dat zich onder de licht grijze balk bevindt.
-
29 -
Markerings mogelijkheid
betekenis
eginwaarde Het meetpaar wordt gemarkeerd als beginpunt van de subset en zal met een rode kleur worden aangegeven. AIle meetparen die hiervoor staan worden automatische gemarkeerd als zijnde verwijderd. <E>indwaarde
Het meetpaar wordt gemarkeerd als eindpunt van de subset en zal met een rode kleur worden aangegeven. AIle meetparen die hierna staan worden automatische gemarkeerd als zijnde verwijderd.
<W>issen
Het meetpaar verwijderen.
erstellen
Met deze optie kan men een meetpaar dat een markerings eigenschap heeft (beginpunt, eindpunt en verwijder) herstellen.
ijdelijk opslaan
wordt
gemarkeerd
als
zijnde
te
Men verlaat het scherm en aIle meetparen die een bepaalde markerings eigenschap hebben gekregen behouden deze eigenschap.
De markerings mogelijkheden en de bladerfunkties staan ook vermeld in het helpscherm. Het helpscherm kan actief worden gemaakt d.m.v. de funktietoets Fl.
Opmerking
1.:
Indien een meetpaar gemarkeerd is met een markeringstype bijvoorbeeld begin- of eindpunt, dan kan dit niet met <wissen> veranderd worden. De funktie <wissen> kan dus aIleen toegepast worden op de meetparen tussen begin- en eindpunt, maar niet op de meetparen die voor het gemarkeerde beginpunt of na het gemarkeerde eindpunt.
Opmerking 2: Indien men een meetpaar, dat als beginpunt of als eindpunt staat gemarkeerd, wilt herstellen worden aIle meetparen die hiervoor of hierna staan automatische hersteld.
Opmerking
3:
Indien men het laaste meetpaar als beginpunt wilt markeren krijgt men een foutmelding en zal er aan het meetpaar geen andere eigenschap worden gegeven. Dit geldt ook voor de eigenschap eindpunt dat niet aan het eerste meetpaar kan worden gegeven.
-
30 -
6.6
Bet aanpassen van de assen. PF931001
512212 : •• \Grafiek bewerken\As aanpassen
X-as: Aanpassen (J/N) : J VerpLaatsing + of - : + Xnieuw =Xouel + [ 1.00
]
in
RID
Y-as: Aanpassen (J/N) : J VerpLaatsing + of - : Ynieuw = Youel - [ 100.00 ] in Nw
-
8 jan. 1994
Laboratorium voor OrnvormtechnoLogie TUE
Figuur 6.8
12:39
- Assen aanpassen
Bij het aanpassen van de assen kunnen zowel de X-as als Y-as worden aangepast. Ten eerste kan de Y-as naar links of rechts verplaatst worden, zodat delen van de opgenomen kromme, waar zich nog geen meetgegevens bevinden, overgeslagen kan worden. Hierdoor wordt een minder interessant deel van de gegevens weggef i I terd en wordt er op het scherm "ingezoomd" op de werkelijk gewenste deelwaarde kromme. Ten tweede kan de X-as naar boven en beneden verplaatst worden. Dit wordt gedaan, omdat in praktijk gebleken is dat de kaart niet geheel nauwkeurig is. (De meetwaarde van de kracht kan bijvoorbeeld een schaaldeel + of - verspringen.) Dit is vooral hinderlijk bij het begin van de kromme, als de waarden rond het nUlpunt schommelen. Door het verplaatsen van de X-as is dit op te lossen, en weI zodanig dat bijvoorbeeld de berekening van de totale deformatie arbeid (het oppervlakte onder de kromme) op de juiste wijze plaats vindt. Als men naar figuur 6.8 kijkt ziet men dat het scherm in tweeen gedeeld is. ledere helft heeft weer dezelfde velden, die hieronder zullen worden besproken. Met het eerste veld "Aanpassen (J/N) :" kan men aangeven of men de bijbehorende as wilt verplaatsen. Met tweede het veld "Verplaatsing + of _ I f kan men de richting aangeven waarna men wilt verplaatsen. Er kan dus min of plus worden ingevuld. Tenslotte kan men met het laaste veld "Xnieuw (resp. Ynieuw) = X[oud ± [ •••• ] resp (X[oud] ± [ •••• ])" de werkelijke verplaatsing invullen.
- 31 -
Opmerking 1: Indien in het eerste veld (Aanpassen (J/N» bij de X-as nee wordt ingevuld dan springt het programma automatische naar het eerste veld van Y-as. Indien in het eerste veld van Y-as nee wordt ingevuld, dan springt men naar het volgende scherm.
Opmerking 2: Ais men het scherm doorlopen heeft, d. w. z. de assen die men wenste aan te passen heeft ingevuld, dan wordt om een bevestiging gevraagd. Deze bevestiging luidt als voIgt: "Zijn deze waarden goed (J/N) ? ". Indien men een fout heeft gemaakt, b.v. de verkeerde waarde heeft ingevuld, dan kan men door nee te antwoorden, deze fout herstellen.
Opmerking
3:
Het laatst ingevulde waarde wordt bewaard. Verlaat men dit scherm en gaat men b.v. de grafiek inzien (Figuur 6.9), dan kan men zien wat de as-verplaatsing inhoud. Is men nog niet tevreden over de verplaatsing, die men ingevuld heeft, dan kan men het scherm asaanpassen (figuur 6.8) weer actief maken. De vorige verplaatsing zal worden getoond, indien men op het derde veld staat. Vult men nu een nieuwe waarde in dan vervalt de oude waarde.
Opmerking 4: Ais men al een verplaatsing heeft ingevuld zal deze altijd blijven staan. Wilt men terug naar de orginele assen, d.w.z. de assen zoals deze zijn, indien de persproef uit het acquisitiegedeelte wordt uitgelezen, dan dient men in het derde veld een verplaatsing van nul moeten in te voeren.
- 32 -
6.7
Ret inzien van de grafiek. 10'- ..
2.00
1.60
I~
1.20
\ A.
II
0.80
n
......z
.5 .... .I: U
0."0
r
"... :.:
l
0.00 120.000
130.000
150.000
1"'10.000
160.000
170.000
Afdruldcel'll J ....N
Kracht-",eg kromlle in grafiek vorm. Perscocle
Figuur 6.9
I
PF"931OO1 (GraHek F"1S1.)
- Inzien van de grafiek.
nit scherm is bedoeld am te kijken hoe de grafiek eruit ziet. Tevens zal men de invloed die de uitgevoerde bewerkingen hebben op de grafiek zien. Opmerking 1:
Wil men het scherm verlaten dan dient men de j of n toets in te drukken. Opmerking 2:
Zodra de grafiek loopt van de negatieve deel naar het positieve deel van een as, zal de grafiek niet in zijn geheel op het scherm komen te staan. Er zal aIleen het negatieve deel worden getoond. wil men de gehele grafiek zien zal men dus de as aan moeten passen d.m.v. as-verplaatsing.
-
33 -
6.8
Het
S1222
~erekenen
van de grafiek •
• • •'Data verwsrk ing'bawarken FS-kro.''''1s'l)raf'iek bawerken
PF93.100.1
S C H E T S - - - - - - -........- - - - - - - - - - - - - - - - - - - , = Met origineel aantal ..eetparan H
F..ax S. Se
~totaal
rzza
= De "aXiMale proee.kr.eht = De aanvangs proeBSWeg = De eind proeesueg = De totale prOCBSueg = De totale steMpelweg = Arbeid
S
F"==PROCESPARAHERTERS=====================""""iI N 164
FM8X proe•• Sa Se ~totaal Arbeid
CH] [I'll"'] [I'll"']
.13256.84 2.295 9 • .13.1
[-]
~~.426
[rm] [HI'lI",]
96.000 .147408.500 Druk op
J.9 j - . . J.994
Laboratoriu", \IOor O"""orMtechnologie TUE
J.3:08
Figuur 6.10 - Bereken grafiek. In dit scherm worden de procesparameters berekend en getoond. Tevens worden de berekende procesparameters op floppy weggeschreven.
-
34 -
6.9
Uitprinten van de rapporten.
oit gedeelte is nog niet geimplementeerd en zal daarom in deze handleiding ontbreken.
-
35 -
Hoofdstuk 7 - Bestand beheer.
Is nag niet gerealiseerd.
-
36 -
Hoofdstuk 8 - Schijf informatie.
Is reeds of wordt nog gerealiseerd door C.P.I. van de Werff (zie ook WERFF, LIT [1] tot en met [7])
-
37 -
Literatuurlijst. [1]
C.P.I. van de Werff.
"Trekproef analyse programma PC-DT100 versie 3.02, Introductie, HS-Heerlen-HIO- Stageverslag 1, Eindhoven, Januari 1993, WPA 1.450."
[2]
C.P.I. van de Werff.
"Trekproefanalyse Programma PCDT1.00, versie 3.02, Het Essentieel Model, HS-Heerlen-HIO - Stageverslag 2, Eindhoven, Januari 1993, WPA 1.451.."
[3]
C.P.I. van de Werff.
"Trekproefanalyse Programma PCDT100, versie 3.02, Het Implementatie Model, HS-Heerlen-HIO - Stageverslag 3, Eindhoven, Januari 1993, WPA 1.452."
[4]
C.P.I. van de Werff.
"Trekproefanalyse Programma PCDT1.00, versie 3.02, Analyse, HS-Heerlen-HIO - Stageverslag 4, Eindhoven, Januari 1993, WPA 1453."
[5]
C.P.I. van de Werff.
"Trekproefanalyse Programma PCDT100, versie 3.02, Source code Programma onderdelen, HS-Heerlen-HIO - stageverslag 5, Eindhoven, Januari 1993, WPA 1.454."
[6]
C.P.I. van de Werff.
"Trekproefanalyse Programma PCDT1.00, versie 3.02, Sourcecode Library bestanden, HS-Heerlen-HIO - stageverslag 6, Eindhoven, Januari 1.993, WPA 1455."
[7]
C.P.I. van de Werff.
"Trekproefanalyse Programma PCDT100, versie 3.02, Gebruikershandleiding, HS-Heerlen-HIO - Stageverslag 7, Eindhoven, Januari 1993, WPA 1456."
-
38 -
[8]
P.J.M. Reinders.
Programma "Persproef-Analyse versie 2.00, Introductie, HS-HIO-Heerlen - stageverslag 1, Eindhoven, Juli 1993, WP 1545. "
[9]
P.J.M. Reinders.
Programma "Persproef-Analyse versie 2.00, Essentieel Model, HS-HIO-Heerlen - stageverslag 2, Eindhoven, Juli .1993, WP 1546."
[10]
P.J.M. Reinders.
Programma "Persproef-Analyse versie 2.00, Implementatie model, HS-HIO-Heerlen - stageverslag 3, Eindhoven, Juli 1993, WP 1547."
[11]
P.J.M. Reinders.
"Persproef-Analyse Programma versie 2.00, Gebruikershanleinding, HS-HIO-Heerlen - stageverslag 4, Eindhoven, Juli 1993, WP 1548."
[12]
P.J.M. Reinders.
Programma "Persproef-Analyse versie 2.00, Source-code Libraries, HS-HIO-Heerlen - stageverslag 5, Eindhoven, Juli 1993, WP 1549."
[13]
P.J.M. Reinders.
Programma "Persproef-Analyse versie 2.00, Source-code Programma, HS-HIO-Heerlen - stageverslag 6, Eindhoven, Juli 1993, WP 1550. "
-
39 -
Bijlage 1: Opslag van de persproefgegevens. 1.1
Opbouw van de persproef.
In het acquisitie-gedeelte wordt een geregistreerde persproef bewaard in een OAT-bestand. Verdere instellingen en opmerkingen over de pers, het programma en het materiaal worden opgeslagen in de bestanden: VAR-bestand; VST-bestand; PGG-bestand; PRV-bestand; AMP-bestand; Ooor de verwerking van de persproef in het verwerkings-gedeelte worden hier nog n bestanden aan toegevoegd. FXS-bestand(en); ORG-bestand; 1.1.1
Opbouw van een DAT-bestand.
Het OAT-bestand is als voIgt opgebouwd: Een tekstregel ter herkenning. Vervolgens komen voor elke sample 6 gehele getallen. 1.1.2
Opbouw van een VAR-bestand.
Het VAR-bestand is als voIgt opgebouwd: Tekstregel ter herkenning. Maximale procestijd. Schnittschlag dampfung schaltpunkt druk. Schnittschlag dampfung schaltpunkt slag. Werkzeugsicherung. Festanschlag verstellung. Perskracht max druk. Perskracht max kracht. Uitwerper max druk. Uitwerper max kracht. Onderste slagbegrenzing uitwerper. Bovenste slagbegrenzing uitwerper. Onderste slagbegrenzing pers. Bovenste slagbegrenzing pers. Vorschub synchronsteuerung punt. Lucht - punt van blazen. Uitwerper/trekkussen punt van actie. Arbeitsgang 1 in pers. Arbeitsgang 2 in pers. Oruckhaltezeit aan.
-
40 -
Vervolg opbouw VAR-bestand. Druckhaltezeit. Ausblasezeit. Dampfungzeit auf V2. Dampfung auf V2 aan. Vorschub. Kurzhub ein. Einrichten ein. Tippen auf. Trekkussen abo Trekkussen auf. Auswerfer auf. Auswerfer aus. 1.1.3
Opbouw van een VST-bestand.
Het VST-bestand is als voIgt opgebouwd: Tekstregel ter herkenning. type pers. soort pers. fabrikaatnummer. bestelnummer. TUE opdrachtnummer. bouwjaar. stempelkracht. stempelslag. uitwerper/trekk. kracht. uitwerper/trekk. slag. opmerking stempelkracht. opmerking uitwerperkracht. transfer doortocht breedte. transfer doortocht lengte. inbouwhoogte maximaal. opspantafel breedte. opspantafel lengte. dikte tafel. centrale opening diameter. T-sleuven 2 * diagonaal. stotertafel breedte. stotertafel lengte. inspantap openings diameter. inspantap diepte. T-sleuven 2 van voor naar achter. uitwerper/trekkussen tafel breedte. uitwerper/trekkussen tafel lengte. LW.
SEZ. NKS. totaal vermogen. Nachlaufweg. Sicherheits abst. dampfung/persdruk/uitwerperdruk.
- 41 -
1.1.4
Opbouw van een PGG-bestand.
Een PGG-bestand is als voIgt opgebouwd: Tekstregel ter herkenning. Samplefrequentie. Aantal meetgegevens. Input range. Startcriterium. Stopcriterium. Kanaal 1. Perskeuze. F1 signaal. F2 signaal. F3 signaal. Sl signaal. S2 signaal. S3 signaal. 1.1.5
Opbouw van een PRV-bestand.
Een PRV-bestand is als voIgt opgebouwd: Tekstregel ter herkenning. Projectleider. Type pers. Serienummer pers. Materiaalsoort. Werkstofnummer. Herkomst materiaal. Begindikte (so). Datum. 3 trekproefcodes (met walsrichting 0°,45° en 90°). Operator Vijf regels met plaats voor opmerkingen. 1.1.6
Opbouw van een FxS-bestand.
Een FXS-bestand is als voIgt opgebouwd: Tekstregel ter herkenning. FS-paar. Aantal meetparen. Minimale x-waarde. Maximale x-waarde. Minimale y-waarde. Maximale y-waarde. Maximale proceskracht. Aanvangsweg. Eindweg. Totale weg. Opgenomen deformatie arbeid. 1.1.7
Opbouw van een ORG-bestand.
Een ORG-bestand is als voIgt opgebouwd: Tekstregel ter herkenning. Originele persproef. -
42 -
Bijlage 2: Foutmeldinqen.
Het onderstaande overzicht bevat aIle foutboodschappen die in het verwerkings-gedeelte van het Persproef-Analyse Programma zijn opgenomen. De foutboodschappen die hieronder worden vertoond hebben aIleen maar betrekking op het verwerkings-gedeelte. Hierdoor is de nummering niet opeenvolgend. Fout-nr:
Omschrijving:
F003
Instellingenbestand PERSPRF.INS niet gevonden. Zonder dit bestand kan het Persproef-Analyse Programma versie 2.00 niet correct functioneren, en daarom wordt het programma beeindigd. Het hoofdmenu zoekt dit bestand in de directory van waaruit het programma wordt opgestart, terwijl aIle overige onderdelen dit bestand in de programmadirectory zoeken Kopieer dit bestand vanaf de orginele programmadiskette en pas de instellingen aan.
F017
De directories zoals ze z1Jn opgeslagen in het bestand Persprf.ins komen niet overeen met de werkelijkheid. Wijzig met de menu-optie Wijzig programma-instellingen (Hoofdmenu) de directories.
F021
Printer/plotter reageert niet. Controleer of printer/plotter ingeschaleld en ON-LINE staat.
F026
De disk (ette) in station bevat onvoldoende vrije ruimte om de voor het tonen/afdrukken van grafieken noodzakelijke tijdelijke bestanden te kunnen opslaan.
F027
Er is geen printer/plotter geselecteerd om de grafiek af te drukken. Selecteer een printer/plotter in het wij ziginstellingen scherm (zie hoofdmenu).
F028
Het verkeerde afdruk-apparaat Rapporten kunnen aIleen worden laserprinter.
F032
Disk (ette) in station <station> heeft schrijfbeveiliging. Haal de schrijfbeveiliging van de diskette en plaats de diskette terug in drive. Druk nu op Enter om verder te gaan.
F036
Laaste punt kan niet geselecteerd worden als beginpunt. Kies een ander punt uit als beginpunt.
F037
Eerste punt kan niet geselecteerd worden eindpunt. Kies een ander punt uit als eindpunt.
-
43 -
de
is geselecteerd. afgedrukt op een
als
F038
Ongeldige drive-aanduiding. Het in de persproefdirectory opgegeven disk(ette) station heeft op deze computerconfiguratie geen betekenis Pas de instellingen aan (zie hoofdmenu) .
F039
Persproef-directory niet gevonden. station <station> bevat geen directory . Pas de instellingen aan (zie hoofdmenu).
F040
De persproef-directory bevat geen persproeven.
F041
Hardware-fout op station <station>. (b.v. Diskette niet geformatteerd?) Op de diskette in het station bevindt zich een fout die het programma niet kan herstellen. Oplossing is: stop in het diskette-station een andere diskette.
F042
Fout geconstateerd met code bij een poging om station <station> te gebrulken. Het programma kan deze fout niet afhandelen. De oplossing hiervoor is: stop een nieuwe diskette in het diskette-station.
- 44 -
Technische Universiteit Eindhoven Faculteit der Werktuigbouwkunde Vakgroep Produktietechnologie en -automatisering Laboratorium voor Omvormtechnologie
Persproef-Analyse Programma versie 2.00 SOURCE-CODE PROGRAMMA R.J.J. de Coninck HS-Heerlen-HIO-Stageverslag 5 Jan. 1993 VF-code: D2
WPA 120001..A-
stageperiode
1-02-1993 tim 16-07-1993
Begeleider TU Eindhoven Begeleider Hogeschool Heerlen
Ir. L.J.A. Houtackers Ir. A.J. Goos
Adressenlijst.
stageverlenend bedrijf:
Technische Universiteit Eindhoven
Bezoekadres:
Den Dolech 2 5612 AZ EINDHOVEN 040 - 479111
Postadres:
Postbus 513 5600 MB EINDHOVEN
Interne begeleider:
ir. L.J.A. Houtackers
Prive:
Nachtegaallaan 2 5731 XR MIERLO 04927 - 62281
Intern:
TU Eindhoven W-Hoog 0.119 040 - 474521 040 - 448665
Externe begeleider:
(tel) (fax)
ir. A.J. Goos
Prive:
Frederikagracht 5 6465 CR KERKRADE 045 - 423163
Intern:
Dr. Jaegersstraat 40 6417 CK HEERLEN 045 - 734892 (tel) 045 - 719790 (fax)
stagiair:
R.J.J. de Coninck
Prive:
Geleenstraat 66 6155 ND PUTH 04493 - 1157
Intern:
W-Hal 1. 44 040 - 473648
-
2 -
Inhoudsopgave. Adressenlijst.
- 2 -
Inhoudsopgave.
.
-
3 -
Verklarende woordenlijst:
- 7 -
Inleiding.
-
8 -
-
9 -
-
9 -
1
Hoofdmenu Persproef-Analyse Programma versie 2.00
1.1
Programma HOOFDMEN.PAS. . . Procedure Controleer grafische kaart Procedure Lees_toegangscode . . •
- 10 - 10 -
1.2
unit FOUT H.PAS . . . Function Toon fout
-
1.3
UNIT HELP H. PAS . . . . . . . . . . . . . . Procedure Pagina . Procedure Toon_help . . . . . . . . .
- 21 -
15 16 -
- 21 -
22 -
unit MELD H.PAS . . . . Function Toon_melding
-
26 -
-
27 -
1.5
unit SCHERM H.PAS . . . Procedure Toon scherm
- 29 - 29 -
1.6
Unit WIJZ INS.PAS . . . Function Hoofdletters Procedure Wijzig prog dir Procedure Wijzig-data-dir Procedure Wijzig-datal dir Procedure Wijzig-tijd dir Procedure Wijzig-Type-kaart Procedure Wijzig-print type Procedure verander_instellingen;
-
32 32 -
1.4
2
3
3.1
3.2
. . .
-
33 -
-
34 35 36 -
-
37 38 39 -
-
41
-
. . .. . .. . . . . . . . . . . . . . . -
42
-
Acquisitie 2.00.
Persproef-Analyse
Verwerking 2.00.
Persproef-Analyse
. . . . .
Programma
. . .
versie
. . .. . . . . . . . . . .. . . . . . . Programma
Programma VERWERK.PAS . • . . . . . . . • . Procedure Controleer grafische kaart Procedure Lees startcode ~ • • . . . Procedure Toon=startprocedure . . • • . .
versie • . . . • • • . • .
unit BEWERK F.PAS Procedure Herstellen van aIle bewerkingen . • . Procedure Bereken X Y coordinaat ....•.. Procedure Toon Kracht weg . Procedure Toon meetgegevens . . . . . . . . Procedure Aanmaken van subset . . . . ... -
3 -
- 42 - 42 - 43 - 43 - 46 - 46 - 48 - 48 -
49 -
-
52 -
Function Haal J N . . . . . . . . . Function Haal-Plus min . • . . . . . . Function Haal_verplaatsing . Procedure VUl_verplaatsing_in ......• Procedure Aanpassen assen. •.. ... Procedure Grafiek inzien ....• ...• Procedure Grafiek-Bewerken ..••• . .• Procedure Grafiek-berekenen . . • • .. Procedure Bewerk Is kromme .•..•.••.. 3.3 3.4 3.5
3.6
3.7
3.8
3.9
-
56 56 57 57
-
-
58 -
- 59 - 59 - 61 - 62 -
63 63 -
Unit FOUT V.PAS . . . Function Toon fout
-
66 -
-
67 -
unit GRAF BER.PAS . . . . . Procedure Bepaal Fmax .... Procedure Bepaal-begin eind weg . Function Bepaal aantal- . .-. . . . . . . . . . Function somintegraal . . . . . . Procedure Maak Pijlpunt . . . . . • . . Procedure Vul modelparamters win ..... Procedure Maak as graf iek . -: . . . • . . . Procedure Teken_grafiek ....•.•...
-
72 73 73 75 75 76 77 78
unit DISKIO V.PAS . • . . . Function ControleerDiskIO
unit GRAF BER. PAS . . . . . . . . Procedure Aanmaken Graphlnp txt Procedure Aanmaken-PlotDef txt Unit HELP V.PAS . . . . .. Procedure Pagina Procedure Toon_help . . . .
.
-
-
- 79 -
. .. ..• .....• ...•..
-
84 -
. .......• . . . • • . . . • .
-
85 85 -
82 -
- 83 -
- 86 -
unit KET VER.PAS • . . Procedure Herstel Begin punt . Procedure Herstel-Eind punt . . . . . . Procedure Zoek min max- . • • . . . . . . . . . Procedure Init -ketting Ver . .. . Procedure Kopieer Dat file . Procedure Init twee ketting . . . . . . . . . . Procedure Verwljder-Ketting ver . Procedure Verwijder-twee ketting . Procedure Lees bestand in ketting .•.... Procedure Schrljf kettlng-in bestand ... Procedure Toon gegevens .-. -: . . . . . . . • Procedure verplaats pointer ver . • • . • Procedure Haal begin pointers . . • . Procedure Haal-Deelwaardes ••...•••. Procedure Markeer begin punt . . . . Procedure Markeer-eind punt . Procedure Markeer-wissen . procedure Herstel=markering . . . . . . .
-
unit KIES FS. PAS • . . . . . . . . • . Procedure Init Bestand info store .
- 104 - 105 -
- 4 -
. .
. .
. .
. .
. .
-
89 92 92 93 94 94 94 94 94 95 96 100 100 100 101 101 102 102 102
-
Procedure Verwijder Bestand info store . Procedure Bepaal Niet actieve menu . Function Bereken-groote persproef . Function Bepaal opslag - . . . . . . . Function controleer aantal gelijk . . . . . . Function Tel aantal-persprf . . . Function Toevoegen Persproef . . . . . . Function Ga naar eerste persproef . . . . . . Function Ga-naar-volgende persproef Function Ga-naar-vorige persproef Procedure Vul Bestand info store ..•. Procedure Persproef wIndow- . . . . . . • • • Procedure Gegevens window . . • . . . • . Procedure Selecteer persproef Procedure Lees Persproef . . . • . . Procedure Lees-grafiek keuze ...••... Procedure VerwIssel Data .........• Function Controleer-set aanwezig . Function Bepaal extensie . Procedure Kies fs kromme . . . .
-
106 106 107 107 108 109 109 110 110 111 111 112 112 113 115 116 118 118 119 119
-
- 121 - 122 -
3.10 unit MELD V.PAS . • . . . Function Toon_melding
. . . . . • . . . . • .
-
126 127 127 127 128 128 128 129 129 129 130 130 130 130 131
-
3.12 Unit SCHRYF V. PAS . . . . • . . . . . . . . . . Procedure Maak grafiek store Procedure Zet Markering . . . Function Bepaal volgende prf Function Data dIrs gelijk . Function Mkdir ver- . . . • . Procedure orgineel bewerkt ... Procedure Orgineel-Geen . . . . . Procedure Bewerkt Geen .......•.•. Procedure Bewerkt-bewerkt . Function Bewerking gedaan • . . . . . . . . . Procedure Schrijf bewerkte prf weg . . . Procedure Kopieer:=set_files . --: . . . . .
-
132 133 134 134 135 135 136 137 137 138 138 139 139
-
3.13 unit TYPE VER.PAS . • . . . . . . . . Procedure Reset_omgevings_variabelen
- 141 - 142 -
3.11 SCHERM V.PAS Procedure Procedure Procedure Procedure Procedure Procedure Procedure Procedure Procedure Procedure Procedure Procedure Procedure Procedure
. Toon_perscode . . . . Toon_perscode_graf Toon S12 Toon-S121. . Toon S121A . . . Toon S121B . Toon S122 . . . . Toon S1221 . . . Toon S12211 ... Toon S12212 . . . Toon S1222 Toon S1222A . . . . Toon S123 . • Toon- scherm . • • . .
-
5 -
. . . . • . . . . .
. . . . . .
. . . . .
. . . .
. . . . .
. . . . . . . .
Literatuurlijst.
- 144 -
-
6 -
Verklarende woordenlijst:
Krachtsignaal
Een signaal dat afkomstig is van een krachtsensor op een meetpunt in een pers. Dit signaal is een elektrische weergave (in Volt) van de kracht, die de stempel van de pers op het proefobject uitvoert.
Wegsignaal
Een signaal dat afkomstig is van een wegsensor op een meetpunt in een pers. Dit signaal is een elektrische weergave (in Volt) van de weg die de stempel aflegt om een bepaald proces te realiseren onder invloed van een kracht.
Schaalweg
De waarde die gekoppeld wordt aan het maximale signaal dat binnenkomt over een kanaal. Hierdoor kan het elektrische signaal omgezet worden naar een weg (in millimeter = rom) .
Schaalkracht
De waarde die gekoppeld wordt aan het maximale signaal dat binnenkomt over een kanaal. Hierdoor kan het elektrische signaal omgezet worden naar een kracht (in kilo Newton = kN) .
- 7 -
Inleiding.
De source-code van het Persproef-Analyse Programma versie 2.00 wordt verdeeld in twee hoofd-categorieen: De programma-onderdelen van het Persproef-Analyse programma versie 2.00. Deze kan weer in twee sub-catogerieen worden verdeeld : Het Verwerkings-gedeelte. Het Acquisitie-gedeelte. Dit verslag bevat de source-code van het verwerkingsgedeelte van het Persproef-Analyse Programma versie 2.00. De source-code van het acquisitie-gedeelte van het Persproef-Analyse Programma bevindt zich in het verslag REINDERS LIT[6]. De bibliotheek (library) bestanden die door de programmaonderdelen van het Persproef-Analyse Programma worden gebruikt. Ook deze catogerie kan in twee delen worden onderverdeelt: De algemene bibliotheek. De bibliotheek die bij het PersproefAnalyse Programma hoort. De algemene bibliotheek zijn routines die zlJn uitgewerkt in het verslag VAN DE WERFF LIT[12]. Tevens zullen wijzigen die op deze routines zijn uitgevoerd in het verslag de CONINCK LIT[19]. De bibliotheek die bij het Persproef-Analyse Programma hoort is uitgewerkt in DE CONINCK LIT[19] Dit verslag is ontstaan naar aanleiding van mlJn stage in het zesde semester, voor de Informatica-opleiding van de Hogeschool Heerlen, voor het Laboratorium voor Omvormtechnologie. Tijdens deze geschreven :
stage-periode
stageverslag stageverslag stageverslag stageverslag
aug. sep. okt. jan.
1: 2: 3: 4:
120001 120002 120003 120004
de
- 8 -
-
volgende
rapporten
Introductie. Essentieel model. Implementatie model. Gebruikers hand leiding. stageverslag 5: jan. 1994, WPA 120005 - Source-code programmaonderdelen PersproefAnalyse Programma versie 2.00. stageverslag 6: jan. 1994, WPA 120006 - Source-code librarybestanden PersproefAnalyse Programma versie 2.00. 1993, 1993, 1993, 1994,
WPA WPA WPA WPA
zijn
1
Hoofdmenu Persproef-Analyse Programma versie 2.00.
1.1
Programma HOOFDMEN.PAS.
{***************************************************************************} {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {*
Programma Versie Functie
HOOFDMEN 1.0 Bevat het hoofdmenu van het Persproef-Analyse Programma versie 2.00. Het hoofdmenu is startprogramma van het PersproefAnalyse Programma. Alle andere onderdelen, te weten het acquisitie-gedeelte, het verwerkinggedeelte en de routine voor het maken van een overzicht van de persproeven op een bepaald opslagmedium, worden gestart vanuit dit menu. Tevens bevat het menu een optie om een aantal instellingen van het Persproef-Analyse Prorgamma te wijzigen en te bewaren.
Taal Systeemeisen Auteur Aangepast door Aanmaakdatum Datum laatste wijziging
Borland Turbo Pascal versie 6.0 IBM compatible XT of hoger CGA, EGA of VGA grafische kaart C.P.I. van de Werff P.J.M. Reinders 27 oktober 1992 9 juni 1993
Copyright (C)
Technische Universiteit Eindhoven, Laboratorium voor Omvormtechnologie.
Gebruikt in
Persproef-Analyse Programma versie 2.00 Hoofdmenu
*} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *}
{***************************************************************************} Program Hoofdmen; {$M $4000, $1000, $4000}
{Het menu-programma gebruikt: - 16384 bytes ($4000) stack-ruimte; - 4096 bytes ($1000) minimaal benodigde heapruimte (voor opslag van scherminhoud); - 16384 bytes ($4000) maximaal benodigde heapruimte }
{$N+,E+}
{ De 80x87 co-processor wordt gebruikt indien deze aanwezig is. Wanneer dit niet het geval is, dan wordt deze geemuleerd d.m.v. de 80x87 run-time floating point library. }
Uses { Run-time lib } Crt, Dos, Graph, { Library } Definit, Invoer, KeyCodes, Menu, Layout, Geluid, Coderen, Diskfunc, Inst 10, { Hoofdmenu } Scherm_H, Meld_H, Fout_H, Help_H, Wijz_ins; Var Geldige grafische kaart, InstellIngen correct, Toegangscode-correct, Einde programma, Goede-invoer
BOOLEAN;
- 9 -
Command line, Bevesti'g einde Dummy, Menukeuze
String; CHAR;
{***************************************************************************} Interne functies en procedures
{*
*}
{***************************************************************************} Procedure Controleer_grafische_kaart (Var Geldige_grafische_kaart: Boolean); {*
In Functie Uit
Controleert of de gebruikte computer-configuratie beschikt over een voor het Persproef-Analyse Programma benodigde CGA, EGA of VGA grafische kaart. Geldige_grafische_kaart -> True, indien CGA, EGA of VGA kaart aanwezig; False, indien ander type kaart gevonden.
*}
Var Grafische kaart, Grafische-modus
Integer;
begin DetectGraph(Grafische kaart, Grafische modus); if (NOT (Grafische kaart IN [CGA, EGA,-EGA64, VGA, IBM8514])) then begin { Toon foutboodschap } Textcolor(KL FOUT VooRGROND); WriteLn('Persproef-Analyse Programma versie 2.00'); WriteLn('(C) 1992 Lab. voor Omvormtechnologie, Technische Universiteit' + ' Eindhoven'); WriteLn; WriteLn('FOUT 001: Ongeldig type grafische kaart aangetroffen.'); WriteLn(' Om het Persproef-Analyse Programma te kunnen gebruiken' + , moet u'); WriteLn(' beschikken over een CGA, EGA of VGA grafische kaart.'); Geldige grafische kaart := False; end else Geldige grafische kaart := True; end; { Interne procedure Controleer_grafische_kaart } Procedure Lees_toegangscode (Var toegangscode_correct: Boolean); {*
In Functie
Uit
Leest de toegangscode van het toetsenbord. Indien na drie pogingen nog steeds geen correcte toegangscode is ingevoerd, dan zal deze procedure worden afgebroken en zal Toegangscode correct de waarde False krijgen. Dit laatste zal ook gebeuren indIen op Escape i.p.v. een toegangscode wordt ingevoerd. Toegangscode correct -> True, indien correcte toegangscode; False, indien foutieve toegangscode.
*}
Var Poging Code ingevoerd, Einde invoer Invoer code Sp toets, Dummy
INTEGER; BOOLEAN; String; CHAR;
- 10 -
begin Paging := 1; Einde invoer := False; while-(NOT Einde invoer) do begin Textcolor(KL WERK VOORGR ACC); GotoXY(52, 17); Write(Poging); { Lees toegangscode } Invoer code := " ; Code ingevoerd := False; while (NOT Code ingevoerd) do begin Leesveld(Invoer code, Invoer code, Invoer string, 6, 43, 17, Onzichtbaar, Sp toets); if (Sp toets IN [Escape,-Enter]) then begin Code ingevoerd := True; end else Waarschuwingstoon; end; { Contra leer ingevoerde code } if (Sp toets <> Escape) then begin if (Codeer(Invoer code) = Cfg_toeg_code) then begin Toegangscode correct := True; Einde invoer-:= True; end else begin if (Paging < 3) then begin { Indien password fout ingevoerd } Dummy := Toon fout(F002, Herstellen, FW_enter); Inc(Poging); end else { Oak derde paging foutief -> programma afbreken } begin Toegangscode correct := False; Einde invoer-:= true; end; end; end else {Escape ingevoerd i.p.v. code -> programma afbreken } begin Einde invoer := True; Toegangscode correct := False; end; end; end; { Interne procedure Lees_toegangscode } {*** Hoofdroutine ***} begin CheckBreak := False; { Programma kan niet worden onderbroken met CTRL-Break } { Contraleer of computer beschikt over een correct type grafische kaart } Contraleer grafische kaart(Geldige grafische kaart); if (NOT Geldige grafIsche kaart) then Halt(l); { Programma kan niet op de normale manier beeindigd worden} { Toon introscherm } Toon_scherm(SO); Einde_programma := False;
-
11 -
{ Lees instellingen-bestand } if (NOT Bestand aanwezig('Persprf.ins'» then begin Dummy := Toon fout(F003, Niet herstellen, FW_enter); Instellingen correct := False; Einde programma := True; end else begin Lees instellingen; Instellingen correct := True; end; if (NOT Einde programma) then begin { Lees toegangscode } Lees toegangscode(Toegangscode correct); if (NOT Toegangscode correct) then Einde programma :=-True; end; if (NOT Einde_programma) then begin while (NOT Einde_programma) do begin { Maak hoofdmenuscherm } Toon_scherm(Sl); Menukeuze := Lees menukeuze; while (Menukeuze ~ EK Fl) do {Afhandelen evt. helpboodschap } begin Waarschuwingstoon; Menukeuze := Lees menukeuze; end; { Verwerk menukeuze } case Menukeuze of '1' : begin Station := Cfg prog dir[l]; while (NOT Disk aanwezig(station» do Dummy := Toon melding(M004, Herstellen, MWenter); { Bepaal of acquisItie-gedeelte aanwezig is } if (NOT Bestand aanwezig(Cfg prog dir + 'Acquisit.exe'» then Dummy := Toon fout(F004, Niet herstellen, FW enter) else {AcquisitIe-gedeelte starten } begin { Ga naar programma-directory } if (Length(Cfg prog dir) = 3) then ChDir(Copy(Cfg preg dir, 1, Length(Cfg_prog dir») else -ChDir(Copy(Cfg prog dir, 1, Length (Cfg_prog_dir) - 1»; { Stel command-line voor het acquisitie-gedeelte samen } Command line := Codeer(ST CODE ACQ); { Voer acquisitie-gedeelte uit: start Acquisit.exe; Indien bestand op diskette, geef wacht-melding } if (Cfg prog dir[l] IN ['A', 'B']) then Dummy-:= Teon melding(M001, Niet herstellen, MW geen); SwapVectors; Exec(Cfg prog dir + 'Acquisit.exe', Command line); SwapVecters; if (DosError <> 0) then Dummy := Toon_fout(F006, Niet_herstellen, FW_enter); end; end;
- 12 -
'2'
begin station := Cfg prog dir[I]; while (NOT Disk aanwezig(Station» do Dummy := Toon melding(M004, Herstellen, MW enter); { Bepaal of verwerking-gedeelte aanwezig is} if (NOT Bestand aanwezig(Cfg prog dir + 'Verwerk.exe'» then Dummy := Toon fout(F005, Niet herstellen, FW enter) else {Verwerking-gedeelte starten } begin { Ga naar programma-directory } if (Length(Cfg prog dir) = 3) then ChDir(Copy(cig prog dir, 1, Length(Cfg_prog_dir») else -ChDir(Copy(Cfg prog dir, 1, Length(Cfg prog dir) - 1»; { Stel command-line-voor-verwerking-gedeelte samen } Command line := Codeer(ST CODE VER); { Voer verwerking-gedeelte uit: start Verwerk.exe; Indien bestand op diskette, geef wacht-melding } if (Cfg prog dir[l] IN ['A', 'B']) then Dummy := Toon melding(M002, Niet herstellen, MW geen); Swapvectors; Exec(Cfg prog dir + 'Verwerk.exe', Command line); SwapVectors; if (DosError <> 0) then Dummy := Toon_fout(F007, Niet_herstellen, FW_enter); end; end;
'3'
begin Verander Instellingen; end; -
'4'
begin station := Cfg prog dir[I]; while (NOT Disk aanwezig(Station» do Dummy := Toon melding(M004, Herstellen, MW enter); { Bepaal of persproef-overzicht programma aanwezig is } if (NOT Bestand aanwezig(Cfg prog dir + 'Inhoud.exe'» then Dummy := Toon fout(F009, Niet herstellen, FW enter) else {persproeI-overzicht starten } begin { Ga naar programma-directory } if (Length(Cfg prog dir) = 3) then ChDir(Copy(cig prog dir, 1, Length(Cfg_prog_dir») else -ChDir(Copy(Cfg prog dir, 1, Length(Cfg prog dir) - 1»; { Stel command-line voor persproef-bestand-beheer samen } Command line := Codeer(ST CODE BB); { Voer persproef-bestand beheer uit: start Inhoud.exe; Indien bestand op diskette, geef wacht-melding } if (Cfg prog dir[l] IN ['A', 'B']) then Dummy := Toon melding(M005, Niet herstellen, MW geen); SwapVectors; Exec(Cfg prog dir + 'Best beh.exe', Command line); Swapvectors; if (DosError <> 0) then Dummy := Toon_fout(FOlO, Niet_herstellen, FW_enter); end; end;
'5', Escape : begin { Vraag gebruiker om bevestiging voor beeindiging } Toon_scherm(SlA); Goede invoer := False; while-(NOT Goede invoer) do begin -
- 13 -
Leesveld(Bevestig einde, " , Invoer string, 0, 1, 1, Onzichtbaar, Dummy); if (UpCase(Bevestig einde[l]) IN ['J', 'N']) then begin if (UpCase(Bevestig einde[l]) = ' J ' ) then Einde programma True; Goede invoer := True; end; end; end;
:=
end; end; end; { Einde Persproef-Analyse Programma: ga naar root-dire programma-drive indien Persprf.ins correct gelezen is bij het starten van het PersproefAnalyse Programma } if (Instellingen correct) then begin station := Cfg prog dir[l]; while (NOT Disk aanwezig(Cfg prog dir[l]» do Dummy := Toon-melding(M004~ Niet herstellen, MW_enter); ChDir(Cfg prog dir[l] + ':\'); end; -Selecteer hele scherm; TextColor(White); TextBackground(Black); ClrScr; WriteLn('Einde Persproef-Analyse Programma versie 2.00'); WriteLn( , (C) 1993 Lab. voor Omvormtechnologie, Technische Eindhoven'); end. { Hoofdmen.pas }
-
14 -
Universiteit
unit FOUT H.PAS
1.2
{*************************************************************************} {* {* {* {* {* {* {* {* {* {*
{* {*
unit Versie Functie
FOUT H 1.0 Bevat alle fout-boodschappen die in het hoofdmenu van het Persproef-Analyse Programma kunnen voorkomen.
Taal Systeemeisen Auteur Aangepast door
{*
Aanmaakdatum Datum laatste wijziging
{* {* {*
{*
Borland Turbo Pascal versie 6.0 IBM compatible XT of hoger CGA, EGA of VGA grafische kaart C.P.I. van de Werff P.J.M. Reinders R.J.J. de Coninck 23 oktober 1992 9 juni 1993 4 januari 1994
{*
*} *} *} *} *} *} *} *} *} *}
*} *} *} *} *} *}
*} *}
Copyright (C)
{* {* {* {* {* {*
Gebruikt in
Technische Universiteit Eindhoven, Laboratorium voor Omvormtechnologie. Persproef-Analyse Programma versie 2.00 Hoofdmenu
*} *} *} *} *} *}
{*************************************************************************}
Unit Fout_Hi
{*************************************************************************} Declaratie-gedeelte
{*
*}
{*************************************************************************}
Interface
Uses { Run-time lib J Crt, { Library } Layout, Definit, Invoer, KeyCodes, Vid_buff, Cursor, Geluid, { Hoofdmenu } Meld_Hi Type {*** Fout-identificatiecodes ***} Fout id type = (F002, F003, F004, FOOS, F006, FOO?, F009, FOlD, - F022, F023, F024, F029, F030, F032)i
{*** Bepaa1 respons van fout-window ***} Fout_respons_type = (FW_Geen, FW_enter, FW_enter_escape)i Function Toon fout(Fout id: Fout id typei Herstel optie: Herstel typei Fout_respons: Fout_respons_type): Chari {*
In
Functie
Fout id -> code behorende bij een bepaa1de foutboodschapi Herstel_optie -> geeft aan of na het beeindigen van de foutboodschap het onderliggende scherm moet worden hersteldi Fout_respons -> geeft aan hoe de gebruiker de window kan beeindigeni Toont de opgegeven foutboodschap op het scherm. Retourneert (voor deze window correcte) speciale toets-code.
Uit *}
{*************************************************************************} {*
Implementatie-gedeelte
*}
{*************************************************************************}
Implementation
- 15 -
Function Toon fout(Fout id: Fout id type; Herstel optie: Herstel type; Fout_respons: Fout_respons_type): Char; Var Goede invoer DummySp_toets
Boolean; String; Char;
begin { Bepaal of het huidige scherm bewaard moet worden } if (Herstel optie = Herstellen) then Bewaar_sciierm; Waarschuwingstoon; { Maak window (excl. inhoud) } Window(21, 8, 60, 19); Toon kader(l, 1, 40, 12, KL FOUT KADER, KL_FOUT_ACHTERGROND); Window(23, 9, 59, 18); TextColor(KL FOUT VOORGROND); TextBackground(KL-FOUT ACHTERGROND); ClrScr; -{ Toon foutboodschap, afhankelijk van Fout id code } case Fout id of F002 : begin GotoXY(13, 1); Write('Fout no.'); GotoXY(22, 1); WriteAcc('002', KL_FOUT_VOORGR_ACC, KL_FOUT_ACHTERGROND); Writeln; WriteLn; WriteLn; WriteLn(' Ingevoerde toegangscode is niet'); WriteLn(' correct. Voer de toegangscode op-'); WriteLn(' nieuw in.') end; F003
begin GotoXY(13, 1); Write('Fout no.'); GotoXY(22, 1); WriteAcc('003', KL FOUT VOORGR ACC, KL_FOUT_ACHTERGROND); WriteLn; WriteLn; WriteLn('Instellingenbestand PERSPRF.INS niet'); WriteLn('gevonden.'); WriteLn; WriteLn('Persproef-Analyse Programma kan niet'); WriteLn('worden voortgezet zonder dit bestand.'); end;
F004
begin GotoXY(13, 1); Write('Fout no.'); GotoXY(22, 1); WriteAcc('004', KL_FOUT_VOORGR_ACC, KL_FOUT_ACHTERGROND); WriteLn; WriteLn; Write('Deze versie van het Persproef-Analyse'); WriteLn('Programma bevat geen acquisitie-'); WriteLn('gedeelte. Vraag indien nodig de'); WriteLn('systeembeheerder voor een diskette'); WriteLn('met het bijbehorende acquisitie-'); WriteLn('gedeelte.'); end;
F005
begin GotoXY(13, 1); Write('Fout no.'); GotoXY(22, 1);
- 16 -
WriteAcc('OOS', KL_FOUT_VOORGR_ACC, KL_FOUT_ACHTERGROND); WriteLn; WriteLn; Write('Deze versie van het Persproef-Analyse'); WriteLn('Programma bevat geen verwerking-'); WriteLn('gedeelte. Vraag indien nodig de'); WriteLn('systeembeheerder voor een diskette'); WriteLn('met het bijbehorende verwerking-'); WriteLn('gedeelte.'); end; F006
begin GotoXY(13, 1); Write('Fout no.'); GotoXY(22, 1); WriteAcc('006', KL_FOUT_VOORGR_ACC, KL_FOUT_ACHTERGROND); WriteLn; WriteLn; WriteLn('Er is een fout opgetreden bij het'); WriteLn('starten van het acquisitie-gedeelte.'); WriteLn('Controleer of er vo1doende geheugen'); WriteLn('beschikbaar is (minimaal 300 kb) en'); WriteLn('het commando FILES=xx (met xx mini-'); WriteLn('maal 30) is opgenomen in CONFIG.SYS'); end;
F007
begin GotoXY(13, 1); Write('Fout no.'); GotoXY(22, 1); WriteAcc('007', KL_FOUT_VOORGR_ACC, KL_FOUT_ACHTERGROND); WriteLn; WriteLn; WriteLn('Er is een fout opgetreden bij het'); WriteLn('starten van het verwerking-gedeelte.'); WriteLn('Controleer of er voldoende geheugen'); WriteLn('beschikbaar is (minimaal 300 kb) en'); WriteLn('het commando FILES=xx (met xx mini-'); WriteLn('maal 30) is opgenomen in CONFIG.SYS'); end;
F009
begin GotoXY(13, 1); Write('Fout no.'); GotoXY(22, 1); WriteAcc('009', KL FOUT VOORGR ACC, KL_FOUT_ACHTERGROND); WriteLn; WriteLn; WriteLn('Het bestand beheer programma'); WriteLn('komt niet voor in de huidige pro-'); WriteLn('grammadirectory. Dit is meestal het'); WriteLn('gevolg van een installatiefout.'); WriteLn('Raadpleeg de systeembeheerder.'); end;
F010
begin GotoXY(13, 1); Write('Fout no.'); GotoXY(22, 1); WriteAcc('010', KL_FOUT_VOORGR_ACC, KL_FOUT_ACHTERGROND); WriteLn; WriteLn; WriteLn('Er is een fout opgetreden bij het'); WriteLn('starten van het bestand beheer-gedeelte.'); WriteLn('Controleer of er voldoende geheugen'); WriteLn('beschikbaar is (minimaal 300 kb) en'); WriteLn('het commando FILES=xx (met xx mini-'); WriteLn('maal 30) is opgenomen in CONFIG.SYS'); end;
F022
begin
- 17 -
GotoXY(13, 1); Write('Fout no.'); GotoXY(22, 1); WriteAcc('022', KL FOUT VOORGR ACC, KL FOUT ACHTERGROND); Centreer('Ongeldige drive-aanduiding.'; 4); WriteLn; WriteLn('De ingevulde (hard)disk-aanduiding'); WriteLn('heeft op deze computer-configuratie'); WriteLn('geen betekenis.'); end; F023
begin GotoXY(13, 1); Write('Fout no.'); GotoXY(22, 1); WriteAcc('023', KL_FOUT_VOORGR_ACC, KL_FOUT_ACHTERGROND); WriteLn; WriteLn; WriteLn; WriteLn('Ongeldige directory-aanduiding.'); WriteLn('Een geldige directory bestaat uit'); WriteLn('een drive-aanduiding plus alle sub-'); WriteLn('directories vanaf de root-directory. '); end;
F024
begin GotoXY(13, 1); Write('Fout no.'); GotoXY(22, 1); WriteAcc('024', KL FOUT VOORGR ACC, KL_FOUT_ACHTERGROND); WriteLn; WriteLn; WriteLn('Ongeldige directory opgegeven.'); WriteLn('Het betreffende disk(ette)-station'); WriteLn('bevat geen directory met deze naam.'); WriteLn; WriteLn('Controleer directory-naam oP'); WriteLn('schrijffouten.'); end;
F029
begin GotoXY(13, 1); Write('Fout no.'); GotoXY(22, 1); WriteAcc('029', KL_FOUT_VOORGR_ACC, KL_FOUT_ACHTERGROND); WriteLn; WriteLn; WriteLn; WriteLn('Het instellingenbestand "Persprf.ins"'); WriteLn('niet gevonden in de huidige'); WriteLn('directory. De verwerking kan niet'); WriteLn('worden voortgezet zonder dit bestand.'); end;
F030
begin GotoXY(13, 1); Write('Fout no.'); GotoXY(22, 1); WriteAcc('030', KL_FOUT_VOORGR_ACC, KL_FOUT_ACHTERGROND); WriteLn; WriteLn; WriteLn; WriteLn('Te weLnLg ruimte beschikbaar om'); WriteLn('het instellingen-bestand '); WriteLn('''Persprf.ins'' te bewaren.'); end;
F032
begin GotoXY(13, 1); Write('Fout no.'); GotoXY(22, 1); WriteAcc('032', KL_FOUT_VOORGR_ACC, KL_FOUT_ACHTERGROND); WriteLn;
- 18 -
end;
WriteLn; WriteLn; Centreer('Diskette in station' + station + ' heeft', 4); Centreer('schrijfbescherming.', 5); end; {Case Fout_id }
{ Toon beeindigingsmogelijkheden } case Fout respons of FW geenbegin { Er hoeft niet gewacht te worden op invoer van de gebruiker. De melding-window routine wordt meteen beeindigd. } end; FW enter
begin GotoXY(5, 10); Write('Druk '); WriteAcc('<Enter>', KL FOUT VOORGR ACC, KL FOUT ACHTERGROND); Write(' om door te gaan.'); { Lees invoer van toetsenbord } Goede invoer := False; while-(NOT Goede invoer) do begin Leesveld(Dummy, " , Invoer string, 0, 1, 1, Onzichtbaar, Sp toets); if (Sp toets = ENTER) then begin Goede invoer := True; Toon tout := sp_toets; end else begin Cursor uit; Waarschuwingstoon; Cursor aan; end; end; end;
FW_enter_escape
begin GotoXY(1, 9); Write('Druk '); WriteAcc('<Enter>', KL FOUT VOORGR ACC, KL FOUT ACHTERGROND); Write(' om door te-gaan,'); GotoXY ( 1, 10); Write ( 'druk '); WriteAcc('<Esc>', KL FOUT VOORGR ACC, KL FOUT ACHTERGROND); Write(' om handelIng af te breken'); { Lees invoer van toetsenbord } Goede invoer := False; while-(NOT Goede invoer) do begin Leesveld(Dummy, " , Invoer string, 0, 1, 1, Onzichtbaar, Sp toets); if (Sp toets IN [ENTER, ESCAPE]) then begin Goede invoer := True; Toon tout := Sp_toets; end else begin
- 19 -
Cursor uit; Waarschuwingstoon; Cursor aan; end; end; end; end; { Bepaal of het onderliggende scherm hersteld moet worden } if (Herstel optie = Herstellen) then Herstel scherm; end; { Procedure Toon fout } end. { Unit Fout H }
-
20 -
1.3
UNIT HELP H.PAS
{***************************************************************************} {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {*
unit Versie Functie
HELP H 1.0 Bevat alle help-boodschappen die in het hoofdmenu van het Persproef-Analyse Programma gebruikt worden.
Taal Systeemeisen
Borland Turbo Pascal versie 6.0 IBM compatible XT of hoger CGA, EGA of VGA grafische kaart C.P.I. van de Werff P.J.M. Reinders R.J.J. de Coninck 22 oktober 1992
Auteur Aangepast door Aanmaakdatum Datum laatste wijziging
9 juni 1993 10 december 1993
Copyright (C)
Technische Universiteit Eindhoven, Laboratorium voor Omvormtechnologie.
Gebruikt in
Persproef-Analyse Programma versie 2.00 Hoofdmenu
{*
*} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *}
{***************************************************************************}
Unit Help_H; {***************************************************************************}
Declaratie-gedeelte
{*
*}
{***************************************************************************}
Interface Uses { Run-time lib } Crt, { Library } Layout, Definit, Vid_buff, Geluid, Cursor, Invoer, KeyCodes; Type {*** Help-identificatiecodes ***} Help_id_type = (Geen_help, H002A, H002B, H002C, H002D); Procedure Toon_help(Help_id: Help_id_type); {*
In Functie uit
Toont de opgegeven help-boodschap.
*}
{***************************************************************************}
Implementatie-gedeelte
{*
*}
{***************************************************************************}
Implementation {*** Interne routines ***}
Procedure Pagina(Huidige_pag, Totaal_aantal_pag: Integer); {*
In Functie
Huidige pag -> nummer huidige help-pagina van dit onderwerp; Totaal_aantal_pag -> totaal aantal help-pagina's behorende bij dit onderwerp. Toont hoeveel help-pagina's over dit betreffende onderwerp beschikbaar zijn en op welk pagina men zich bevindt.
Uit *}
- 21 -
Var Hulpstr Oud X, Oud-Y
String[2]; Integer;
begin { Bewaar oude cursorpositie } Oud X := WhereX; Oud=Y := WhereY; { Toon pagina-aanduiding } TextColor(KL HELP VOORGROND); GotoXY(68, 1); Str(Huidige pag:O, Hulpstr); WriteAcc(Hulpstr, KL HELP VOORGR ACC, KL_HELP_ACHTERGROND); Write('/'); Str(totaal aantal-pag:O, Hulpstr); WriteAcc(Hulpstr, KL_HELP_VOORGR_ACC, KL_HELP_ACHTERGROND); { Herstel oude cursorpositie } GotoXY(Oud X, Oud Y); end; { Interne procedure Pagina } {*** Einde interne routines ***}
Var Einde help, Goede-invoer DummySp toets Volgende pag, Vorige pag Volgende pag aanwezig, Vorige_pag_aanwezig
BOOLEAN; string; CHAR; Help_id_type; BOOLEAN;
begin { Het is mogelijk dat er meerdere pagina's help-boodschappen bij het betreffende onderwerp horen. Daarom is elke help-boodschap voorzien van de variabelen Volgende pag en Vorige pag, die de help-id code van resp. de volgende en vorige bijbehorende help-boodschap tonen. Om aan te geven dat er geen volgende bijbehorende help-boodschap is, krijgt Volgende pag dezelfde waarde als de huidige help-id code. Idem voor Vorige_pag. }if (Help id <> Geen help) then begin { Bewaar huidige scherminhoud } Bewaar_scherm; { Maak help-window (excl. inhoud) } Window(4, 3, 77, 23); Toon kader(l, 1, 74, 21, KL_HELP_KADER, KL_HELP_ACHTERGROND); Window(5, 4, 76, 22); TextColor(KL_HELP_VOORGROND); TextBackground(KL HELP ACHTERGROND); Toon horizontale Iijn(2, KL HELP KADER); Toon-horizontale-lijn(18, KL HELP KADER); Centreer('Persproef-Analyse Programma HELP', 1); { Toon helptekst, afhankelijk van help_id code } Einde help := False; while-(NOT Einde help) do begin Window(6, 6, 75, 20); { Gebied waar help-tekst geplaatst kan worden} ClrScr;
- 22 -
case Help id of H002A :-begin Pagina(l, 4)i WriteAcc('WIJZIGEN PROGRAMMA-INSTELLINGEN', KL_HELP_VOORGR_ACC, KL_HELP_ACHTERGROND)i WriteLni WriteLni WriteLn('Met behulp van de getoonde instellingen is het mogelijk om het')i WriteLn('Persproef-Analyse Programma aan te passen aan de eisen van de')i WriteLn('computer-configuratie waarop dit programma gebruikt wordt.')i WriteLni WriteAcc('l - Directory programma-bestanden.', KL_HELP_VOORGR_ACC, KL_HELP_ACHTERGROND)i WriteLni WriteLn( , In deze directory bevinden zich de programma-onderdelen die nood-')i WriteLn( , zakelijk zijn om het programma uit te kunnen voeren.')i WriteLni WriteLn(' De directory moet als voIgt worden ingevoerd:')i WriteLni WriteLn(' :\[subdirl][\subdir2][\ .•• ]')i WriteLni Write(' [ --> ]')i Volgende pag := H002Bi Vorige pag := Help_idi end; H002B: begin Pagina(2, 4)i WriteAcc('WIJZIGEN PROGRAMMA-INSTELLINGEN', KL HELP VOORGR ACC, KL_HELP_ACHTERGROND)i WriteLn(' (vervolg)')i WriteLni WriteLni WriteLn(' Voorbeelden programma-directorY:')i WriteLni WriteLn(' Goed: C:\PROGR\TREKPRF (drive C, subdir PROGR\TREKPRF)')i WriteLn( , A: \TREKPRF (drive A, subdir TREKPRF)') i WriteLn(' B: (drive B, root-directorY)')i WriteLni WriteLn(' Fout: C:\ (geen "backslash" als laatste karakter) , ) i WriteLn(' B:TREKPRF (directory definieren vanaf root-dir.)')i Wr i teLn ( , A: •• \ TREKPRF ( idem) , ) i WriteLni WriteLni Write(' [ --> )')i Volgende pag := H002Ci Vorige pag := H002Ai endi H002C: begin Pagina(3, 4)i WriteAcc('WIJZIGEN PROGRAMMA-INSTELLINGEN', KL HELP VOORGR ACC, KL_HELP_ACHTERGROND)i WriteLn(' (vervolg)')i WriteLni WriteAcc('2 - Directory persproeven.', KL_HELP_VOORGR_ACC, KL_HELP_ACHTERGROND)i WriteLni WriteLn(' Dit is de directory waar zich aIle persproefgegevens
23 -
WriteLn( , WriteLn( , WriteLn( ,
bevinden.')i De eerste directory is waar de bestanden heen dienen te worden ' ) i geschreven (ACQ.) en gelezen te worden (VER.). De tweede')i directory worden de verwerkte persproeven heen weggeschreven.')i
WriteLni WriteAcc('3 - Directory tijdelijke bestanden.', KL_HELP_VOORGR_ACC, KL_HELP_ACHTERGROND)i WriteLni WriteLn( , In deze directory zet het Persproef-Analyse Programma aIle tijde-')i WriteLn( , lijke bestanden. Tijdelijke bestanden worden gebruikt bij het')i WriteLn( , tonen van grafieken en het afdrukken hiervan.')i WriteLn( , Voor punt 2 en 3 gelden dezelfde regels als voor de programma- , ) i WriteLn( , directory (zie pagina 2/4).')i Write ( , [ --> ]') i Volgende pag := H002Di Vorige pag := H002Bi endi H002D: begin Pagina(4, 4)i WriteAcc('WIJZIGEN PROGRAMMA-INSTELLINGEN', KL HELP VOORGR ACC, KL HELP ACHTERGROND)i WriteLn(' (vervolg)')i -WriteLni WriteAcc('4 - Type PC-LabCard.', KL_HELP_VOORGR_ACC, KL_HELP ACHTERGROND)i WriteLni WriteLn(' Dit is het type acquisitie kaart die in de PC zit waarmee de')i WriteLn(' acquisitie plaats vindt. Het Persproef-Analyse Programma')i WriteLn(' ondersteunt 2 kaarten, namelijk de PC-LabCard 718 en de' ) i WriteLn(' PC-LabCard 818. Daar de laatstgenoemde kaart meer (en andere)')i WriteLn(' functies heeft moet dit vantevoren juist ingevuld zijn.')i WriteLni WriteAcc('5 - Type afdruk-eenheid.', KL_HELP_VOORGR_ACC, KL_HELP_ACHTERGROND)i WriteLni WriteLn( , Via deze instelling wordt bepaald van wat voor type afdruk-')i WriteLn( , eenheid gebruik wordt gemaakt. Op dit moment kan men kiezen') i WriteLn( , uit een laserprinter, een HPGL plotter of geen afdrukeenheid.')i Volgende pag := Help idi Vorige_pag := H002Ciendi endi { Toon invoermogelijkheden } Window(5, 4, 76, 22)i GotoXY(3, 19)i ClrEoli WriteAcc('<Esc>', KL HELP VOORGR ACC, KL_HELP_ACHTERGROND)i Write(' = Terug'); if (Vorige pag <> Help_id) then begin Write(' ':5);
{ Er is een vorige help-pagina }
-
24 -
WriteAcc('', KL HELP VOORGR ACC, KL_HELP_ACHTERGROND); Write(' = Vorige pagina');Vorige pag aanwezig := True; end -else Vorige_pag_aanwezig := False; if (Volgende pag <> Help id) then { Er is een volgende help-pagina } begin Write(' ':5); WriteAcc('', KL_HELP_VOORGR_ACC, KL_HELP_ACHTERGROND); Write(' = Volgende pagina'); Volgende pag aanwezig := True; end -else Volgende_pag_aanwezig := False; { Lees invoer van toetsenbord } Goede invoer := False; while-(NOT Goede invoer) do begin Leesveld(Dummy, " , Invoer string, 0, 1, 1, Onzichtbaar, sp_toets); if (Sp toets = ESCAPE) then begin Einde help := True; Goede-invoer := True; end else if «Sp toets = EK_PGUP) AND (Vorige_pag_aanwezig» then begin Help id := Vorige pag; Goede invoer := True; end else if «Sp toets = EK_PGDN) AND (Volgende_pag_aanwezig» then begin Help id := Volgende pag; Goede invoer := True; end else begin Cursor uit; Waarschuwingstoon; Cursor aan; end; end; end; { Herstel vorige scherm } Herstel_scherm; end else {Indien geen help-boodschap voor dit onderwerp aanwezig is } begin Cursor uit; Waarschuwingstoon; Cursor aan; end; end; { Procedure Toon_help } end. { Unit Help_H }
- 25 -
unit MELD H.PAS
1.4
{***************************************************************************} {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {*
Unit Versie Functie
MELD H 1.0 Bevat alle scherm-meldingen die in het hoofdmenu van het Persproef-Analyse Programma gebruikt worden.
Taal Systeemeisen
Borland Turbo Pascal versie 6.0 IBM compatible XT of hoger CGA, EGA of VGA grafische kaart C.P.I. van de Werff P.J.M. Reinders R.J.J. de Coninck 23 oktober 1992
Auteur Gewijzigd door Aanmaakdatum Datum laatste wijziging
8 juni 1992 20 december 1993
Copyright (C)
Technische Universiteit Eindhoven, Laboratorium voor Omvormtechnologie.
Gebruikt in
Persproef-Analyse Programma versie 2.00 Hoofdmenu
*} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *}
{***************************************************************************}
Unit Meld_H;
{***************************************************************************} Declaratie-gedeelte
{*
*}
{***************************************************************************}
Interface
Uses { Run-time lib } Crt, { Library } Layout, Definit, Invoer, KeyCodes, Vid_buff, Cursor, Geluid; Type {*** Melding-identificatiecodes ***} Melding_id_type = (M001, M002, M004, MOOS);
{*** Controle: wel of niet herstellen onderliggende scherm na beeindigen melding ***} Herstel_type
=
(Herstellen, Niet_herstellen);
{*** Bepaal respons van melding-window ***} Melding_respons_type = (MW_Geen, MW_enter, MW_enter_escape); Function Toon melding(Melding id: Melding id type; Herstel-optie: Herstel-type; Melding=respons: Melding_respons_type): Char; {*
In
Functie Uit
Melding id Herstel=optie
-> code behorende bij een bepaalde melding; -> geeft aan of na het beeindigen van de melding het onderliggende scherm moet worden hersteld; Melding_respons -> geeft aan hoe de gebruiker de window kan beeindigen; Toont de opgegeven melding op het scherm. Retourneert (voor deze window correcte) speciale toets-code.
*}
{***************************************************************************} {*
Implementatie-gedeelte
*}
{***************************************************************************} -
26 -
Implementation Function Toon melding(Melding id: Melding id type; Herstel-optie: Herstel-type; Melding=respons: Melding_respons_type): Char; Var Goede invoer DummySp_toets
Boolean; String; char;
begin { Bepaal of het huidige scherm bewaard moet worden } if (Herstel optie = Herstellen) then Bewaar_scEerm; { Maak window (excl. inhoud) } Window(21, 8, 60, 19); Toon kader(l, 1, 40, 12, KL MLD KADER, KL_MLD_ACHTERGROND); Window(23, 9, 59, 18); -TextColor(KL MLD VOORGROND); TextBackground(KL MLD ACHTERGROND); ClrScr; -{ Toon melding-tekst, afhankelijk van Melding_id code } case Melding id of M001 : begin Centreer('Het acquisitie-gedeelte wordt',4); Centreer('geladen',5); Centreer('Even geduld a.u.b •••. ',7); end; M002
begin Centreer('Het verwerking-gedeelte wordt',4); Centreer('geladen',5); Centreer('Even geduld a.u.b •••• ',7); end;
M004
begin Centreer('Zorg dat er een diskette in', 4); Centreer('drive ' + Station + ' zit.', 5); {-- Variabele moet nog een waarde krijgen } end;
MOOS
begin Centreer('Het bestand beheer programma',4); Centreer('wordt geladen',5); Centreer('Even geduld a.u.b .... ',7); end;
end; { Toon beeindigingsmogelijkheden } case Melding respons of MW geen begin { Er hoeft niet gewacht te worden op invoer van de gebruiker. De melding-window routine wordt meteen beeindigd. } end; MW enter
begin GotoXY(5, 10); Write('Druk '); writeAcc('<Enter>', KL MLD VOORGR ACC, KL MLD ACHTERGROND); Write(' om door te gaan.');
27 -
{ Lees invoer van toetsenbord } Goede invoer := False; while-(NOT Goede invoer) do begin Leesveld(Dummy, I I , Invoer string, 0, 1, 1, Onzichtbaar, Sp toets); if (Sp toets = ENTER) then begin Goede invoer := True; Toon melding := sp_toets; end else begin Cursor uit; Waarschuwingstoon; Cursor aan; end; end; end; MW_enter_escape
begin GotoXY(l, 9); Write(/Druk '); WriteAcc(/<Enter>', KL MLD VOORGR ACC, KL MLD ACHTERGROND); Write(' om door te gaan,/); GotoXY(l, 10); write ( 'druk '); WriteAcc(/<Esc>', KL MLD VOORGR ACC, KL_MLD_ACHTERGROND); Write(' om handeling-af te breken / ); { Lees invoer van toetsenbord } Goede invoer := False; while-(NOT Goede invoer) do begin Leesveld(Dummy, I I , Invoer string, 0, 1, 1, Onzichtbaar, Sp toets); if (Sp toets IN [ENTER, ESCAPEl) then begin Goede invoer := True; Toon melding := sp_toets; end else begin Cursor uit; Waarschuwingstoon; Cursor aan; end; end; end;
end; { Bepaal of het onderliggende scherm hersteld moet worden } if (Herstel optie = Herstellen) then Herstel scherm; end; { Procedure Toon_melding } end. { Unit Meld H }
-
28 -
1.5
unit SCHERM H.PAS
{***************************************************************************} {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {*
Unit Versie Functie
SCHERM H 1.0 Bevat aIle schermen die in het hoofdmenu van het Persproef-Analyse Programma gebruikt worden
Taa1 Systeemeisen
Borland Turbo Pascal versie 6.0 IBM compatible XT of hoger CGA, EGA of VGA grafische kaart C.P.I. van de Werff P.J.M. Reinders 21 oktober 1992
Auteur Aangepast door Aanmaakdatum Datum laatste wijziging
9 juni 1993
Copyright (C)
Technische Universiteit Eindhoven, Laboratorium voor Omvormtechnologie.
Gebruikt in
Persproef-Analyse Programma versie 2.00 Hoofdmenu
*} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *}
{***************************************************************************} Unit Scherm_H;
{***************************************************************************} Declaratie-gedeelte
{*
*}
{***************************************************************************}
Interface
Uses { Run-time lib } Crt, { Library } Layout, Definit, Menu; Type {*** Scherm-identificatiecodes ***} SCherm_id_type = (SO, Sl, SlA, S13); Procedure {*
In Functie Uit
Scherm id -> identificatienummer van het te tonen scherm; Toont het opgegeven scherm.
*}
{***************************************************************************} {*
Implementatie-gedeelte
*}
{***************************************************************************}
Implementation
Procedure Toon_scherm(Scherm_id: SCherm_id_type); begin case Scherm id of SO: begin {Intro-scherm} Window(l, 1, 80, 22); TextBackground(KL INTRO ACHTERGROND); Toon kader(l, 1, 80, 22~ KL INTRO KADER, KL INTRO ACHTERGROND); Window(2, 2, 79, 21); { gebIed binnen kader-} TextColor(KL INTRO VOORGR ACC); Centreer('PERSPROEF ANALYSE PROGRAMMA VERSIE 2.00',2);
- 29 -
Centreer('Data-Acquisitie en Verwerking PC <-> PC-LabCard 718/818', 4); TextCo1or(KL INTRO VOORGROND); GotoXY( 4, 9); Write('Copyright (C) 1993'); GotoXY( 4, 10); Write('Lab. voor Omvormtechnologie TUE'); GotoXY( 4, 11); Write('Informatie:'); GotoXY( 4, 12); Write('Tel: 040 - 474521'); GotoXY( 4, 13); Write('Fax: 040 - 448665'); GotoXY(52, 9); Write('Ir. L.J.A. Houtackers'); GotoXY(52, 10); Write('Dr. Ir. J.A.H. Ramaekers'); GotoXY(52, 11); Write('W.A.J. v.d. Eijnde'); GotoXY(52, 12); Write('P.J.M. Reinders'); GotoXY(52, 13); Write('R.J.J. de Coninck'); Toon kader(17, 16, 64, 18, KL INTRO KADER, KL INTRO ACHTERGROND); Textcolor(KL INTRO VOORGROND)1 -GotoXY(20, 17); wrIte('Voer toegangscode in: ( e poging)'); Toon horizontale lijn(19, KL INTRO KADER); TextColor(KL WERK INFO); Centreer('Voer toegangscode in of druk <Esc> om het programma te beeindigen',20); Toon titelbalk onder; Window(2, 2, 79, 21); { gebied binnen kader } end; 51: begin { Hoofdmenu } 5electeer hele scherm; Toon tite1balk-boven('51 Hoofdmenu'); Toon-titelbalk-onder; Selecteer_werkgebied(Kader); Initialiseer menu; Menu item('1', 'Acquisitie data', 23, 4); Menu-item('2', 'Verwerking data', 23, 6); Menu-item('3', 'Wijzigen programma-instellingen', 23, 8); Menu-item('4', 'Bestand beheer', 23, 10); Menu=item('5', 'Einde Persproef-Analyse Programma', 23, 12); Toon menu; Toon-horizontale lijn(16, KL WERK KADER); TextColor(KL WERK INFO); GotoXY( 7, 17); Write('Geef een cijfer of gebruik de cursorstoetsen, gevolgd door < >'); TextColor(KL WERK INFO ACC); GotoXY( 67, 17); write('Enter'); TextColor(KL WERK VOORGROND); end; -SlA
begin Toon kader(19, 9, 61, 13, KL EINDE KADER, KL EINDE ACHTERGROND); Textcolor(KL EINDE VOORGROND); -TextBackground(KL EINDE ACHTERGROND); Centreer(' Einde-Persproef-Analyse Programma' ,10); Centreer(' Zeker weten (J/N)', 12); end;
S13
begin { Wijzig-instellingen scherm } Selecteer hele scherm; Toon_tite1balk=boven('S13 Hoofdmenu\Wijzigen programma-instellingen'); Toon titelbalk onder; Selecteer werkgebied(Zonder kader); ClrScr; GotoXY( 3, 1); Write('l - Directory programma-bestanden:'); GotoXY( 3, 4); Write('2 - Directory persproef-bestanden:'); GotoXY( 3, 8); Write('3 - Directory tijdelijke bestanden:'); GotoXY( 3, 11); Write('4 - Type PC-LabCard:'); GotoXY( 3, 14); Write('5 - Type afdruk-eenheid:'); GotoXY( 7, 17); Write('Uw keuze ( t/m ,< > is terug):'); GotoXY(66, 17); Write('( = Help)'); Textcolor(KL_WERK_VOORGR_ACC);
-
30
GotoXY( 7, 2); Write(Copy(Cfg prog dir, 1, Length (Cfg_prog_dir) GotoXY( 7, 5); Write(Copy(Cfg data dir, 1, Length (Cfg_data_dir) GotoXY( 7, 6); Write(Copy(Cfg datal dir, 1, Length(Cfg datal dir) GotoXY( 7, 9); Write(Copy(Cfg tijd dir, 1, Length(Cfg tijd dir) GotoXY( 7, 12); WrIte(Cfg Type kaart); GotoXY( 7, 15); Write(Cfg-print type); GotoXY(17, 17); Write('l'); GotoXY(23, 17); Write('5'); GotoXY(27, 17); Write('Esc'); GotoXY(67, 17); Write('F1'); end; end; end; { Procedure Toon scherm } end. { unit Scherm H }
- 31 -
1»; 1»; - 1»; 1»;
unit WIJZ INS.PAS
1.6
{***************************************************************************} {* {* {*
{* {* {* {* {* {* {* {*
{* {* {* {* {* {* {*
*}
unit Versie Functie
WIJZ INS *} 1.0 *} Bevat routine voor het w~Jzigen van de vanuit het *} Persproef-Analyse Programma instelbare parameters. *}
Taal Systeemeisen
Borland Turbo Pascal versie 6.0 IBM compatible XT of hoger CGA, EGA of VGA grafische kaart C.P.I. van de Werff P.J.M. Reinders R.J.J. de Coninck
Auteur Aangepast door Aanmaakdatum Datum laatste wijziging
3 november 1992 10 juni 1993 10 december 1993
{* {* {*
Copyright (C)
Technische Universiteit Eindhoven, Laboratorium voor Omvormtechnologie.
{* {*
Gebruikt in
Persproef-Analyse Programma versie 2.00 Hoofdmenu
*} *} *} *} *} *}
*} *} *} *} *} *} *} *} *} *}
{*
*} *} *}
{***************************************************************************}
Unit Wijz_ins;
{***************************************************************************} Declaratie-gedeelte
{*
*}
{***************************************************************************}
Interface
Uses { Run-time lib } Crt, { Library } Invoer, Definit, KeyCodes, Diskfunc, Layout, Geluid, Inst 10, { Hoofdmenu } scherm_H, Fout_H, Meld_H, Help_H; Procedure Verander_instellingen; {*
In Functie
Biedt de mogelijkheid om de instellingen uit Persprf.ins te wijzigen. Deze instellingen zijn opgeslagen in de Cfg ••••••• variabelen die gedefinieerd zijn in Definit.pas (Library).
Uit *}
{***************************************************************************} Implementatie-gedeelte
{*
*}
{***************************************************************************}
Implementation
{*** Interne routines ***} Function Hoofdletters(Regel: String): String; {*
In Functie
Regel -> tekst die in hoofdletters moet worden omgezet; Zet de opgegeven regel tekst om in hoofdletters; Retourneert de naar hoofdletters omgezette tekstregel.
Uit *}
- 32 -
Var Teller : Integer; begin for Teller := 1 to Length(Regel) do Regel [Teller] := UpCase(Regel[Teller]); Hoofdletters := Regel; end; { Interne functie Hoofdletters } Procedure Wijzig_prog_dir(Var Instelling_gewijzigd: Boolean); {*
In Functie Uit
Wijzigt de drive/directory van de programma-bestanden; Instelling_gewijzigd -> geeft aan of instelling is gewijzigd.
*}
Var Instelling, Oude instelling Sp teets, Dummy Goede invoer
String;
{Oorspronkelijke waarde ihstelling }
CHAR; BOOLEAN;
begin Instelling := Cfg_prog_dir; Instelling := Copy(Instelling, 1, Length(Instelling) - 1); { Verwijder '\'-teken } Oude_instelling := Instelling; {Bewaar oorspronkelijke instelling } Goede invoer := False; while-(NOT Goede invoer) do begin Leesveld(Instelling, Instelling, Invoer_string, 60, 7, 2, Zichtbaar, Sp toets); case Sp toets of _ ESCAPE : begin { Herstel oorspronkelijke instelling } Instelling := Oude instelling; Goede invoer := True; end; EK F1
begin { Toon wijzig-instellingen helpscherm } Toon help(H002A); end; -
ENTER
begin { Controleer ingevoerde drive/directory } if «Length(Instelling) < 2) OR (NOT (UpCase(Instelling[l]) IN ['A' •• 'Z']» OR (NOT (Instelling[2] = ':'» OR (Instelling[Length(Instelling)] = '\'» then Dummy := Toon fout(F023, Herstellen, FW enter) else if (NOT Station bestaat(Instelling[l]» then Dummy := Toon-fout(F022, Herstellen, FW enter) else begin while(NOT Disk_aanwezig(Instelling[l]» do begin Station := UpCase(Instelling[l]); { Drive-aanduiding } Dummy := Toon melding(M004, Herstellen, MW enter); end; if (NOT Directory aanwezig(Instelling» then Dummy := Toon_feut(F024, Herstellen, Fw_enter) else begin Goede invoer := True; InsteIling_gewijzigd := True;
-
33 -
end; end; end; else Waarschuwingstoon; end; end; Instelling := Instelling + '\'; Cfg prog dir := Hoofdletters(Instelling); end; { Interne procedure Wijzig_prog_dir } Procedure Wijzig_data_dir(Var Instelling_gewijzigd: Boolean); {*
In Functie Uit
Wijzigt de drive/directory van de persproeven; Instelling_gewijzigd -> geeft aan of instelling is gewijzigd.
*}
Var Instelling, Oude instelling Sp teets, Dummy Goede invoer
String;
{Oorspronkelijke waarde instelling }
CHAR; BOOLEAN;
begin Instelling := Cfg data dir; Instelling := Copy(Instelling, 1, Length(Instelling) - 1); { Verwijder '\'-teken } Oude_instelling := Instelling; {Bewaar oorspronkelijke instelling } Goede invoer := False; while-(NOT Goede invoer) do begin Leesveld(Instelling, Instelling, Invoer_string, 60, 7, 5, Zichtbaar, Sp toets); case Sp toets of ESCAPE : begin { Herstel oorspronkelijke instelling } Instelling := Oude instelling; Goede invoer := True; end; -
EK Fl
begin { Toon wijzig-instellingen helpscherm } Toon help(H002A); end; -
ENTER
begin { Controleer ingevoerde drive/directory } if «Length(Instelling) < 2) OR (NOT (UpCase(Instelling[l]) IN ['A' •• 'Z']» OR (NOT (Instelling[2] = ':'» OR (Instelling[Length(Instelling)] = '\'» then Dummy := Toon fout(F023, Herstellen, FW enter) else if (NOT station bestaat(Instelling[l]» then Dummy := Toon-fout(F022, Herstellen, FW enter) else begin while(NOT Disk_aanwezig(Instelling[l]» do begin Station := UpCase(Instelling[l]); { Drive-aanduiding } Dummy := Toon melding(M004, Herstellen, MW enter); end; if (NOT Directory aanwezig(Instelling» then Dummy := Toon_feut(F024, Herstellen, FW_enter) else begin
-
34 -
Instelling gewijzigd := True; Goede invoer := True; end; end; end; else Waarschuwingstoon; end; end; Instelling := Instelling + ' \ ' ; Cfg data dir := Hoofdletters(Instelling); end; { Interne procedure Wijzig_data_dir } Procedure Wijzig_datal_dir(Var Instelling_gewijzigd: Boolean); {*
In Functie Uit
Wijzigt de drive/directory van de persproeven; Instelling_gewijzigd -> geeft aan of instelling is gewijzigd.
*}
Var Instelling, Oude instelling sp teets, Dummy Goede invoer
String;
{Oorspronkelijke waarde instelling }
CHAR; BOOLEAN;
begin Instelling := Cfg_datal_dir; Instelling := Copy(Instelling, 1, Length(Instelling) - 1); { Verwijder '\'-teken } Oude_instelling := Instelling; {Bewaar oorspronkelijke instelling } Goede invoer := False; while-(NOT Goede invoer) do begin Leesveld(Instelling, Instelling, Invoer_string, 60, 7, 6, Zichtbaar, Sp toets); case Sp toets of ESCAPE : begin { Herstel oorspronkelijke instelling } Instelling := Oude instelling; Goede invoer := True; end; -
EK Fl
begin { Toon wijzig-instellingen helpscherm } Toon help(H002A); end; -
ENTER
begin { Controleer ingevoerde drive/directory } if «Length(Instelling) < 2) OR (NOT (UpCase(Instelling[I]) IN ['A' •• 'Z']» OR (NOT (Instelling[2] = ':'» OR (Instelling[Length(Instelling)] = '\'» then Dummy := Toon fout(F023, Herstellen, FW enter) else if (NOT Station bestaat(Instelling[I]» then Dummy := Toon-fout(F022, Herstellen, FW enter) else begin while(NOT Disk_aanwezig(Instelling[I]» do begin Station := UpCase(Instelling[I]); { Drive-aanduiding } Dummy := Toon melding(M004, Herstellen, MWenter); end; if (NOT Directory aanwezig(Instelling» then Dummy := Toon_feut(F024, Herstellen, FW_enter) else
-
35 -
begin Instelling gewijzigd := True; Goede invoer := True; end; end; end; else Waarschuwingstoon; end; end; Instelling := Instelling + '\'; Cfg datal dir := Hoofdletters(Instelling); end; { Interne procedure Wijzig_data_dir } Procedure Wijzig_tijd_dir(Var Instelling_gewijzigd: Boolean); {*
In Functie Uit
Wijzigt de drive/directory van de tijdelijke bestanden; Instelling_gewijzigd -> geeft aan of instelling is gewijzigd.
*}
Var Instelling, Oude instelling Sp teets, Dummy Goede invoer
String;
{Oorspronkelijke waarde instelling }
CHAR; BOOLEAN;
begin Instelling := Cfg tijd dir; Instelling := Copy(Instelling, 1, Length(Instelling) - 1); { Verwijder '\'-teken
} Oude_instelling := Instelling;
{Bewaar oorspronkelijke instelling }
Goede invoer := False; while-(NOT Goede invoer) do begin Leesveld(Instelling, Instelling, Invoer_string, 60, 7, 9, Zichtbaar, Sp toets); case Sp toets of ESCAPE : begin { Herstel oorspronkelijke instelling } Instelling := Oude instelling; Goede invoer := True; end; EK F1
begin { Toon wijzig-instellingen helpscherm } Toon help(H002A); end; -
ENTER
begin { Controleer ingevoerde drive/directory } if «Length(Instelling) < 2) OR (NOT (UpCase(Instelling[l]) IN ['A' •• 'Z'])) OR (NOT (Instelling[2] = ':')) OR (Instelling[Length(Instelling)] = '\')) then Dummy := Toon fout(F023, Herstellen, FW enter) else if (NOT Station bestaat(Instelling[l])) then Dummy := Toon-fout(F022, Herstellen, FW enter) else begin while(NOT Disk_aanwezig(Instelling[l])) do begin Station := UpCase(Instelling[l]); { Drive-aanduiding } Dummy := Toon melding(M004, Herstellen, MWenter); end; if (NOT Directory aanwezig(Instelling)) then Dummy := Toon_feut(F024, Herstellen, FW_enter)
-
36 -
else begin Instelling gewijzigd := True; Goede invoer := True; end; end; end; else Waarschuwingstoon; end; end; Instelling := Instelling + '\'; Cfg tijd dir := Hoofdletters(Instelling); end; { Interne procedure Wijzig_tijd_dir } Procedure Wijzig_Type_kaart(Var Instelling_gewijzigd: Boolean); {*
In Functie Uit
Wijzigt de door het Persproef-Analyse Programma gebruikte type acquisitiekaart. Instelling_gewijzigd -> geeft aan of COM-poort is gewijzigd.
*}
Var Instelling, Oude instelling, Invoer Sp toets, Dummy Goede invoer
string;
CHAR; BOOLEAN;
begin { Toon keuzemogelijkheden } TextColor(KL WERK VOORGROND); GotoXY(l, 17); ClrEol; GotoXY(7, 17); Write('Ondersteunde typen PC-LabCard ( 18/ 18):'); GotoXY(66, 17); Write('( = Help)'); TextColor (KL WERK VOORGR ACC); GotoXY(38, 17); Write('7'); GotoXY(42, 17); Write('8'); GotoXY(67, 17); Write('F1'); Instelling := Cfg Type kaart; Oude_instelling :~ Instelling; Goede invoer := False; while-(NOT Goede invoer) do begin Leesveld(Invoer, Invoer, Invoer integer, 1, SO, 17, Zichtbaar, Sp_toets); case Sp toets of ESCAPE : begin { Herstel oorspronkelijke instelling } Instelling := Oude instelling; Goede invoer := True; end; -
EK F1
begin { Toon wijzig-instellingen helpscherm } Toon help(H002A); end; -
ENTER
begin if (Invoer <> ") then begin case Invoer[l] of , 7' : begin Instelling := '718'; Goede_invoer := True;
-
37 -
Instelling gewijzigd := True; end; , 8'
begin Instelling := '818'; Goede invoer := True; Instelling gewijzigd := True; end; -
else Waarschuwingstoon; end; end else Waarschuwingstoon; end; else Waarschuwingstoon; end; end; Cfg Type kaart := Instelling; end; { Interne procedure Wijzig_Type_kaart } Procedure Wijzig_print_type(Var Instelling_gewijzigd: Boolean); {*
In Functie Uit
Wijzigt het type afdruk-apparaat dat gebruikt wordt; Instelling_gewijzigd -> geeft aan of afdruk-apparaat is gewijzigd.
*}
Var Instelling, Oude instelling, Invoer sp toets, Dummy Goede invoer
string; CHAR; BOOLEAN;
begin { Toon keuzemogelijkheden } TextColor(KL WERK VOORGROND); GotoXY( 1, 17); ClrEol; GotoXY( 7, 17); Write('Type afdruk-eenheid (HP GotoXY(66, 17); Write('( = Help)'); TextColor(KL WERK VOORGR ACC); GotoXY(31, 17); Write('L'); GotoXY(42, 17); Write('P'); GotoXY(50, 17); Write('G'); GotoXY(67, 17); Write('F1');
aser/HPGL
lotter/ een):');
Instelling := Cfg print type; Oude_instelling :~ Instelling; Goede invoer := False; while-(NOT Goede invoer) do begin Leesveld(Invoer, Invoer, Invoer string, 1, 58, 17, Zichtbaar, Sp_toets); case Sp toets of ESCAPE : begin { Herstel oorspronkelijke instelling } Instelling := Oude instelling; Goede invoer := True; end; EK F1
begin { Toon wijzig-instellingen helpscherm } Toon help(H002A); end; -
-
38 -
ENTER
begin if (Invoer <> ") then begin case Invoer[l] of 'L', '1' : begin Instelling := 'HP LaserJet III'; Goede invoer := True; InsteIling gewijzigd := True; end; 'P',
'p'
begin Instelling := 'HPGL Plotter'; Goede invoer := True; InsteIling gewijzigd := True; end; -
'G',
'g'
begin Instelling := 'Geen'; Goede invoer := True; InsteIling gewijzigd := True; end; -
else Waarschuwingstoon; end; end else W~arschuwingstoon;
end; else Waarschuwingstoon; end; end; Cfg print type := Instelling; end; { Interne procedure Wijzig_print_type } {*** Einde interne routines ***}
Procedure Verander_instellingen; Var Keuze Sp toets, Dummy Instelling gewijzigd, Einde_wijzIging
string; CHAR; { Geeft aan of instellingen zijn gewijzigd } BOOLEAN;
begin Instelling gewijzigd := False; Einde wijzIging := False; while-(NOT Einde wijziging) do begin Toon scherm(Sl3); {Toon wijzig-scherm } Leesveld(Keuze, " , Invoer_integer, 1, 44, 17, Zichtbaar, Sp_toets); case Sp toets of ESCAPE : begin Einde wijziging := True; end; EK Fl
begin Toon_help(H002A); { Toon wijzig-instellingen helpscherm } end;
ENTER
begin {Verwerk ingevoerde keuze } if (Keuze <> ") then begin case Keuze[l] of
- 39 -
'1'
begin Wijzig_prog_dir(Instelling_gewijzigd); end;
'2'
begin Wijzig data dir(Instelling gewijzigd); Wijzig-dataI dir(Instelling gewijzigd); end; -
'3'
begin Wijzig tijd dir(Instelling gewijzigd); end; -
, 4'
begin Wijzig Type kaart(Instelling gewijzigd); end; -
'5'
begin Wijzig print type(Instelling gewijzigd); end; -
else Waarschuwingstoon; end; end else Waarschuwingstoon; end; else Waarschuwingstoon; end; end; if (Instelling gewijzigd) then begin { Controleer of het instellingen-bestand bewaard kan worden } Station := Cfg prog dir[l]; while (NOT Disk aanwezig(Cfg prog dir[l]» do Dummy := Toon-melding(M004~ Herstellen, MW enter); if (NOT Directory aanwezig(Copy(Cfg prog dir~ 1, Length(Cfg prog dir) - 1») then Dummy := Toon_fout(F024, Herstellen,-Fw_enter) else begin if «NOT Bestand aanwezig(Cfg prog dir + 'Persprf.ins'» AND (Bepaal vrije ruimte(Cfg prog dir[l]) < 1024» then Dummy Toon_fout(F029~ Herstellen, FW_enter) else begin while (Schrijfbescherming(Cfg prog dir[l]» do begin Dummy := Toon fout(F032, Herstellen, FWenter); while (NOT Disk aanwezig(Cfg prog dir[lT» do Dummy := Toon-melding(M004~ Herstellen, MW enter); end; Bewaar instellingen; end; end; end; end; { Procedure Verander_instellingen }
:=
end. { Unit Instel.pas }
-
40 -
2
Acquisitie Persproef-Analyse Programma versie 2.00.
Dit gedeelte is uitgewerkt in REINDERS LIT[??].
- 41 -
3
Verwerking Persproef-Analyse Programma versie 2.00.
3.1
Programma VERWERK.PAS
{***************************************************************************} {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {*
*}
Programma Versie Functie
VERWERKING *} 1.0 *} Bevat het verwerkings programma van het Persproef- *} Analyse Programma versie 2.00. *} Binnen het verwerkings programma kan men een FSkromme selecteren, bewerken en afdrukken. Tevens is er de mogelijkheid om rapporten af te drukken van de gekozen proef.
Taal Systeemeisen Auteur Aanmaakdatum Datum laatste wijziging
Borland Turbo Pascal versie 6.0 EGA of VGA grafische kaart R.J.J. de Coninck 12 november 1993
Copyright (C)
Technische Universiteit Eindhoven, Laboratorium voor Omvormtechnologie.
Gebruikt in
Persproef-Analyse Programma versie 2.00 Verwerking
*} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *}
{***************************************************************************} Program Verwerkingi {$N+,E+}
{ De 80x8? co-processor wordt gebruikt indien deze aanwezig is. Wanneer dit niet het geval is, dan wordt deze geemuleerd d.m.v. de 80x8? run-time floating point library. }
Uses { Run-time lib } Crt, Dos, Graph, { Library } Definit, Invoer, KeyCodes, Menu, Layout, Geluid, Coderen, Diskf 2, Inst IO, BGI CHR, type ver, { Verwerk } Scherm_V, Fout:V, Meld:V, Kies:FS, Ket_ver, Bewerk_Fs; Var startcode correct, Einde programma, Directories ok Dummy Menukeuze
Boolean; chari CHARi
{***************************************************************************} Interne functies en procedures
{*
*}
{***************************************************************************} Procedure Controleer_grafische_kaart(Var Geldige_grafische_kaart: Boolean)i {*
In Functie Uit
Controleert of de gebruikte computer-configuratie beschikt over een voor het Persproef-Analyse Programma benodigde CGA, EGA of VGA grafische kaart. Geldige_grafische_kaart -> True, indien EGA of VGA kaart aanwezigi False, indien ander type kaart
-
42 -
gevonden. *}
Var Grafische kaart, Grafische-modus
Integer;
begin DetectGraph(Grafische kaart, Grafische modus); if (NOT (Grafische kaart IN [EGA, EGA64, VGA]» then begin { Toon foutboodschap } TextColor(KL FOUT VOORGROND); WriteLn('Persproef-Analyse Programma versie 2.00'); Universiteit Technische WriteLn('(C) 1992 Lab. voor omvormtechnologie, Eindhoven'); WriteLn; WriteLn('FOUT Ongeldig type grafische kaart aangetroffen.'); WriteLn(' om het Persproef-Analyse Programma te kunnen gebruiken moet u'); WriteLn(' beschikken over een EGA of VGA grafische kaart.'); Geldige grafische kaart := False; end else Geldige grafische kaart := True; end; { Interne procedure Controleer_grafische_kaart } Procedure Lees_startcode(Var Startcode_correct: Boolean); {*
In Functie Uit
Leest de startcode, nodig om het verwerking-gedeelte te kunnen starten, van de command-line. Startcode correct -> True, indien correcte startcode; False, indien verkeerde startcode of ontbrekende startcode.
*}
begin { Controleer of de command-line een start code bevat } if (ParamCount < 1) then { Geen startcode opgegeven } startcode correct := False else begin { Controleer startcode } if (Decodeer(ParamStr(1» ST_CODE_VER) then Start code correct := True else Startcode correct := False; end; end; { Interne procedure Lees startcode } Procedure Toon_startprocedure; {*
In Functie
Geeft aan hoe het verwerking-gedeelte op een correcte manier moet worden gestart.
Uit *}
begin WriteLn('Persproef-Analyse Programma V2.00 - Verwerkingsgedeelte'); WriteLn('(C) 1993 Laboratorium voor omvormtechnologie, Technische Universiteit Eindhoven'); WriteLn; WriteLn('FOUT: Het verwerkings-gedeelte van het Persproef-Analyse Programma V2.00');
-
43 -
WriteLn(' kan aileen worden gestart via het hoofdmenu (HOOFDMEN.EXE)'); end; { Interne Procedure Toon_startprocedure } {*** Hoofdroutine ***}
begin CheckBreak:= TRUE;
(* Tijdens DEBUGGEN FALSE, anders TRUE; hierdoor kan de gebruiker het programma niet meer onderbreken met . *)
clrscr; Einde programma := False; Directories ok := False; { Lees startcode } Lees startcode(Startcode correct); if (NOT Startcode correct) then begin Toon startprocedure; Halt(l); {Einde Programma} end; { Lees instellingen-bestand } if (NOT Bestand_aanwezig('Persprf.ins'» then begin Dummy := Toon fout(F003, Niet_herstellen, FW_enter); Einde programma := True; end else begin Lees instellingen; { Controleren of aile directories bestaan } Directories ok:= Controleer directories aanwezig; if (NOT Directories ok) then begin Dummy := Toon fout(F017, Niet_herstellen, Fw_enter); Einde_programma := True; end; end; { Initialiseer Data meetgegevens store } Init ketting Veri while (NOT Elnde programma) do begin { Maak Verwerking-menuscherm } Toon_scherm(S12); Menukeuze := Lees menukeuze; while (Menukeuze ~ EK Fl) do {Afhandelen evt. helpboodschap } begin Waarschuwingstoon; Menukeuze := Lees menukeuze; end; { Verwerk menukeuze } case Menukeuze of '1' : begin { selecteren FS-kromme } Kies fs kromme; ~d; - '2'
begin { bewerken FS-kromme } Bewerk fs kromme; end; --
'3'
begin { uitprinten FS-kromme } ;
end;
- 44 -
'4',ESCAPE : begin Einde programma := True; end; end; { case Menukeuze } end; clrscr; {verwijderen data meetgegevens store} Verwijder Ketting ver; end. { Program Verwerk.pas }
-
45 -
unit BEWERK F.PAS
3.2
{***************************************************************************} {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {*
Unit Versie Functie
BEWERK FS 1.0 Binnen unit deze kan men kiezen of men de grafiek wil berekenen of bewerken. Tevens kan er worden gekozen welke bewerking men wil uitvoeren en de bewerkingen uitvoeren.
Taal Systeemeisen
Borland Turbo Pascal versie 6.0 IBM compatible XT of hoger EGA of VGA grafische kaart R.J.J. de Coninck 22 november 1993
Auteur Aanmaakdatum Datum laatste wijziging
15 januari 1994
Copyright (C)
Technische Universiteit Eindhoven, Laboratorium voor Omvormtechnologie.
Gebruikt in
Persproef-Analyse Programma versie 2.00 Verwerkings gedeelte.
*} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *}
{***************************************************************************} Unit Bewerk_FS;
{***************************************************************************} Declaratie-gedeelte
{*
*}
{***************************************************************************} Interface uses { Run-time lib } Crt, Dos, Graph, } Geluid, KeyCodes, Invoer, Definit, Inst PGG, Layout, { Library Diskf 2, Graf geg, Plot def, Grafplot, P PGG IO, } Meld V, Fout V, Help V,-Scherm V, Menu, Kies-FS, { Verwerking Type-Ver, Ket ver, Ketting, Vraag IN V, DiskTo V, SChryf_V, Gra! ber var Markeer begin, Markeer-eind Boolean; Procedure Bewerk fs_kromme; {*
In Functie
Binnen deze functie kan de gebruiker kiezen of hij de FS-kromme wil bewerken of berekenen.
Out *}
{***************************************************************************} {*
Implementatie-gedeelte
*}
{***************************************************************************}
Implementation
{*** Interne functies en procedures ***} Procedure Herstellen_van_alle_bewerkingen; {*
-
46 -
In Functie
Het herstellen van de eventueel bewerkingen die de gebruiker heeft uitgevoerd Ope
Out *}
Var bewerking KW
Bewerkings type; Krachtweg_ptr;
begin bewerking := Bewerking gedaan; if (bewerking <> Geen)-then Toon melding(MOSO, Niet herstellen, MW_geen); Delay(1000); case (bewerking) of As_aanpassen : begin F signaalA.verplaatsing := 0; S-signaalA.verplaatsing := 0; end; Subset maken begin {Haal begin pointers } New(KW) ; Haal begin pointers(KW, R Begin); While (NOT«KWA.kracht = NIL) AND (KWA.weg = NIL») do begin if «KWA.krachtA.markering in [V begin verwijder, V einde verwijder, V begin, V eInde) AND (KWA:wegA.markering in Tv begin verwijder, V_einde_verwijder, v_begin,-v_einde)) then begin KWA.krachtA.markering := M Normaal; KWA.wegA.markering := M=Normaal; end; Verplaats pointer ver(KW, R_Vooruit, 1); end; Dispose(KW) ; end; Beide begin F signaalA.verplaatsing := 0; S-signaalA.verplaatsing := 0; {Haal begin pointers } New(KW) ; Haal begin pointers(KW, R Begin); While (NOT«KWA.kracht = NIL) AND (KWA.weg = NIL») do begin if «KWA.krachtA.markering in [V begin verwijder, V einde verwijder, V begin~ V einde]) AND (KwA.wegA:markering in-[V begin-verwijder, V_einde_verwijder, V_begin, v_einde)) then begin KWA.krachtA.markering := M Normaal; KWA.wegA.markering := M=Normaal; end; Verplaats pointer ver(KW, R_Vooruit, 1); end; Dispose (KW) ; end; end; end;
- 47 -
Procedure Bereken X Y coordinaat(i: integer; - - var x, y : integer); {*
i -> Teller die aangeeft om welk meetpaar het gaat. x -> X coordinaat. y -> Y coordinaat. Het berekenen van de coordinaten van het betreffende meetpaar. coordinaat x en y.
In
Functie Out *}
Var tell
integer;
begin if (i <= 20) then begin tell := 0; case (i MOD 2) of o : x := 16; 1 : x:= 5; end; end else begin if (i <= 40) then begin tell := 20; case (i MOD 2) of
o : x
:= 42; 1 : x := 31; end; end else begin tel1:=40; case (i MOD 2) of o : x : = 68;
1 : x
:= 57;
end; end; end; tell := «(i + 1 - tell) DIV 2) MOD 10); if (tell = 0) then begin y := 13; end else begin y := tell + 3; end; end; { Interne procedure bereken_x_y_coordinaat } Procedure
Toon_Kracht_weg;
{*
In Functie Out
Het tonen welke kracht en welke weg gekozen zijn
*}
var
nummer_k, nummer s
begin nummer k[l] := ' nummer:s[l] := '
string;
'; '; -
48 -
case Grafiek keuze of F1S1 begin nummer k[l] := nummer-s[l] := end; F2S2 begin nummer k[l] := nummer-s[l] := end; F3S3 begin nummer k[l] := nummer-s[l] := end; F2S1 begin nummer k[l] := nummer-s[l] := end; F3S1 begin nummer k[l] := nummer-s[l] := end; F1S2 begin nummer k[l] := nummer-s[l] := end; F1S3 begin nummer k[l] := nummer-s[l] := end; F2S3 begin nummer k[l] := nummer-s[l] := end; F3S2 begin nummer k[l] := nummer-s[l] := end; end; { case grafiek_keuze }
'1'; '1'; '2'; '2'; '3'; '3'; '2'; '1'; '3'; '1'; '1'; '2'; '1'; '3'; '2'; '3'; '3'; '2';
{ het afdrukken van de tekst } GotoXY( 8, 1); Write('F' + nummer k[l]); GotoXY( 19, 1); Write('S' + nummer-s[l] ); GotoXY( 34, 1); Write('F' + nummer-k[l]); GotoXY( 45, 1); Write('S' + nummer-s[l] ); GotoXY( 60, 1); Write('F' + nummer-k[l]); GotoXY( 71, 1); Write('S' + nummer-s[l] ); end; { Interne Procedure Toon_Kracht_weg} Procedure Toon_meetgegevens (Positie ptr1 : Krachtweg ptr; Positie-sel veld: Integer);{*
In Functie
Positie_ptr1 -> staan de begin pointers waar de lijst van de kracht en weg beginnen. Het tonen van de meetgevens (kracht en weg) met de juiste kleur.
Out *}
var X K, Y K, X-W, Y-W, Dummy I, i Dummy-R K, Dummy-R-W s k, Positie ptr Deelwaarde_kracht,
sw
integer; Real; String; Krachtweg_ptr;
-
49 -
DeelWaarde_Weg
Integer;
begin { maak copie van de meegegeven paramerter, omdat anders twee pointers naar het zelfde stuk geheugen wijzen. Als de pointers die hierin zitten worden verplaats klopt de inhoud er niet meer van zoals bij de aanroep voor deze procedure.} New( Positie ptr ); Positie ptr~:kracht := Positie_ptr1~.kracht; Positie-ptr~.weg := Positie ptr1~.weg; {haal dee1waardes op} Haal Deelwaardes (Grafiek keuze, Deelwaarde_kracht, Deelwaarde_weg); i
:= 1;
While «i < 61) AND NOT«Positie
ptr~.kracht
(Positie=ptr~.weg
= NIL) AND
= NIL») do
begin Bereken X Y coordinaat(i, X K, Y K); Bereken-X-Y-coordinaat(i + I, X W, Y_W); With Positie ptr~ do begin { omrekenen van meetpunten naar reals } Dummy R K := (Kracht~.waarde + F signaal~.verplaatsing) * - (DeelWaarde kracht MAX WAARDE); Dummy_R_W := (Weg~.waarde + S signaalA.verplaatsing) * (DeelWaarde weg Max WAARDE); s k := Real naar string(Dummy R K,-2); s-w := Real-naar-string(Dummy-R-W, 2); if NOT (PosTtie eel veld = i)-tEen case Kracht~.markerTng of M NORMAAL begin TextColor(KL SUB VOORGROND); gotoXY(X K, Y K); Write(s it : a); gotoXY(X W, Y W); Write(s a); end; begin TextColor(KL SUB EIND BEGIN PA); gotoXY(X K, Y K); Write(s it : a); gotoXY(X W, Y W); Write(s a); end; M VERWIJDERING, V-BEGIN VERWIJDER, V-EINDE-VERWIJDER begin TextColor(KL SUB WIS PASSIEF); gotoXY(X K, Y K); Write(s it : a); gotoXY(X W, Y W); Write(s a); end; M FOUT begin TextColor(KL SUB VOORGROND); gotoXY(X K, Y K); write(s it : a); gotoXY(X W, Y W); Write(s a); end; M AFWEZIG begin TextColor(KL SUB VOORGROND); gotoXY(X K, Y K); Write(' - '); gotoXY(X_W, Y_W);
7
7
w:
w
w:
w:
50 -
,);
Write(' end;
end else case KrachtA.markering of M NORMAAL begin TextBackground (KL SUB BALK); TextColor (KL SUB WIS ACTIEF); gotoXY(X K, Y-K);Write(s it : 8); gotoXY(X W, Y W); Write(s 8); TextBacitground(KL WERK ACHTERGROND); end; V_begin,V_einde begin TextBackground (KL SUB EIND BEGIN AC); TextColor (KL SUB WIS ACTIEF); gotoXY(X K, Y-K);Write(s it : 8); gotoXY(X W, Y W); Write(s 8); TextBacitground(KL WERK ACHTERGROND); end; M VERWIJDERING, V-BEGIN VERWIJDER, V-EINDE-VERWIJDER : begin TextBackground (KL SUB BALK); TextColor (KL SUB WIS ACTIEF); gotoXY(X K, Y-K);Write(s it : 8); gotoXY(X W, Y W); Write(s 8); TextBacitground(KL WERK ACHTERGROND); end; M FOUT begin TextBackground (KL SUB BALK); TextColor (KL SUB VOORGROND); gotoXY(X K, Y-K);Write(s it : 8); gotoXY(X W, Y W); Write(s 8); TextBacitground(KL WERK ACHTERGROND); end; M AFWEZIG begin TextBackground (KL SUB BALK); TextColor (KL SUB VOORGROND); gotoXY(X K, Y-K);Write(' - '); gotoXY(X W, Y W); Write(' - '); TextBackground(KL WERK ACHTERGROND); end; end; { Einde Case markering of } Verplaats pointer ver(Positie ptr, R_Vooruit, 1); Inc(i, 2); end; { with positie ptr} end; { while i<61 ••• ~} if (i < 61) then begin TextColor (KL WERK ACHTERGROND); While (i < 61) do begin Bereken_X_Y_coordinaat(i, X_K, Y_K); Bereken X Y coordinaat(i + 1, X W, Y_W); gotoXY(X K,-Y K); Write(' - ' : 8); gotoXY(X_W, Y_W);
w:
w:
w:
w:
- 51 -
Wr i te ( , ': 8); Inc(i, 2); end; { while i < 61 } end; { if i < 61 } Dispose(Positie ptr ); end; { Interne procedure Toon_meetgegevens } Procedure Aanmaken van subset; {*
-
-
In Functie : Binnen deze procedure kan de gebruiker een subset maken van de gekozen kracht en weg. Out *}
Var Einde aanmaken subset Dummy; Sp toets Tmp ptr, Scherm pos ptr, Huidige pos ptr Scherm positie Inv string Markeer soort Tel_records, i
Boolean; Char; Krachtweg ptr; 1. .60; string; Markeringstypen; Integer;
begin Toon Scherm(S12211); Toon-Kracht weg; { ophalen van de begin pointers } New(Huidige pos ptr); Haa1 begin pointerS(Huidige pos ptr, R_Begin); New(Scherm-pos ptr); -Haal begin-pointers(Scherm pos ptr, R_Begin); New (Tmp_ptr) ; Scherm positie := 1; Einde aanmaken subset := False; While (NOT (Einde aanmaken subset» do begin - { Toon aIle meetgegevens binnen het huidige scherm + cursorpositie } Toon Meetgegevens(Scherm pos ptr, Scherm positie); Inv String [1] := ' '; LeesVeld(Inv string, Inv string, Invoer_string, 0, 1, 1, OnzIchtbaar, Sp-toets); Case Upcase(Inv string[I]) of 'B' : begin if (NOT Markeer begin) then begin if (NOT «Huidige pos ptrA.krachtA.volgendeA.markering = M einde) AND(HuIdige pos ptrA.wegA.volgendeA.markering = M einde») then begin if (NOT «Huidige pos ptrA.krachtA.markering = V einde) AND (Huidige pos ptrA.wegA.markering = Veinde»)-then begin Markeer begin punt (Huidige pos ptr); Markeer-begin-:= True; -end; end else dummy := Toon_fout(F036, Herstellen, FW_enter); end; end; 'E' begin if (NOT Markeer_eind) then
- 52
begin if (NOT «Huidige pos ptrA.krachtA.vorigeA.markering = M Begin) AND(HuIdige pos ptrA.wegA.vorigeA.markering = M Begin») then begin if (NOT «Huidige pos ptrA.krachtA.markering = V begin) AND (Huidige pos ptrA.wegA.markering = V begin») then begin Markeer eind punt(Huidige pos ptr); Markeer-eind-:= True; end; end else dummy := Toon_fout(F037, Herstellen, FW_enter); end; end; 'w' begin Markeer wissen(Huidige pos ptr); end; 'H' begin Herstel markering(Huidige pos ptr, Markeer_soort); If(Markeer soort = V begin) then begin Markeer begin := False; Bewerkings tabel[l) := False; end else begin if (Markeer soort = V einde) then begin Markeer eind := False; Bewerkings tabel[2] := False; end else begin if (Markeer soort = M verwijdering) then begin Dec(Tel wis); if (Tel-wis = 0) then Bewerkings tabel(3) := False; end; end; end; end; 'T' : Einde aanmaken subset := True; end; { case Upcase inv-string } Case Sp toets of begin ESCAPE Einde aanmaken_subset := True; end; EK CURSOR UP begin { bewaar huidige positie tijdelijk } Tmp~trA.kracht:= Huidige_pos_ptrA.kracht; Tmp ptrA.weg := Huidige pos ptrA.weg; Verplaats pointer ver(Huidige-pos ptr, R Achteruit, 1); { als er-voor het begin wordt gewezen, moet het eerste record genomen worden } if «Huidige pos ptrA.kracht = NIL) AND (Huidige pes ptrA.weg = NIL» then begin -Huidige pos ptrA.kracht := Tmp ptrA.kracht; Huidige-pos-ptrA.weg := Tmp-ptrA.weg; dummy :~ Toen melding(M042, Herstellen, MW enter); end { if huidige •.••• } else begin if (Scherm_positie < 2) then
-
53 -
EK CURSOR DOWN
EK HOME
EK END
Verplaats pointer ver(Scherm pas ptr, R_Achteruit, 1) else -Dec(Scherm positie, 2); end; end; begin { bewaar huidige positie tijdelijk } Tmp ptrA.kracht:= Huidige_pos_ptrA.kracht; Tmp-ptrA.weg := Huidige pas ptrA.weg; verplaats pointer ver(Huidige-pos ptr, R Vooruit, 1); { als er-na het einde wordt gewezen, moet het laaste record genomen worden } if «Huidige pas ptrA.kracht = NIL) AND (Huidige pes ptrA.weg = NIL) then begin -Huidige pas ptrA.kracht := Tmp ptrA.kracht; Huidige-pos-ptrA.weg := Tmp-ptrA.weg; dummy :~ Toen melding(M042, Herstellen, MW enter); end { if huidige ••••• } else begin if (Scherm positie > 58) then Verplaats pointer ver(Scherm pas ptr, R_Vooruit, 1) else -Inc(Scherm positie, 2); end; end; begin { ga naar het eerste record in de ketting } Verplaats pointer ver(Huidige pas ptr, R begin, 0); Scherm pas ptrA.kracht:= HuidIge pas ptrA.kracht; scherm-pos-ptrA.weg := Huidige-pos-ptrA.weg; scherm-posItie := 1; end; begin { ga naar het laaste record in ketting } Verplaats pointer ver(Huidige pas ptr, R einde, 0); Tel records := 0;Tmp-ptrA.kracht:= Huidige pas ptrA.kracht; Tmp-ptrA.weg := Huidige-pos-ptrA.weg; WhiTe «tel records < 29)-AND-Not ( «tmp ptrA.kracht = Nil) AND (tmp-ptrA.weg ~ Nil» OR «tmp ptrA.kracht = scherm pas ptrA.kracht) AND (tmp:ptrA.weg = scherm_pos_ptrA.weg»» do begin Inc(tel records); Verplaats pointer ver(tmp ptr, R achteruit, 1); end; { while ••• < 3D ••••• } if (NOT «tmp ptrA.kracht = scherm pas ptrA.kracht) AND (tmp_ptrA.weg = scherm_pos:ptrA.weg)) then begin if NOT «tmp ptrA.kracht = Nil) AND (tmp:ptrA.weg = Nil» then begin Scherm pas ptrA.kracht := Tmp ptrA.kracht; scherm-pos-ptrA.weg := Tmp:ptrA.weg; Scherm-posItie := 59; end else begin for i := Tel records downto 1 do Verplaats pointer ver(scherm pas ptr, R_achteruit, -
-
1);
-
scherm positie := (Tel_records end; -
54 -
-
*
2) + 1;
EK PGUP
end else begin Scherm_positie := (tel_records * 2) + 1; end; end; { Case EK END } begin { Ga 30 records terug } Tmp ptrA.kracht:= Huidige pos ptrA.kracht; Tmp-ptrA.weg := Huidige-pos-ptrA.weg; Verplaats pointer ver(Huidige-pos ptr, R achteruit, 30); if «HuidIge pos ptrA.kracht ~ NIL) AND (Huidige pcs ptrA.weg = NIL» then begin -Huidige pos ptrA.kracht := Tmp ptrA.kracht; Huidige-pos-ptrA.weg := Tmp-ptrA.weg; dummy :~ Tocn melding(M043, Herstellen, MW enter); end else begin { Anders moet de scherm pos ptr aangepast worden } Tmp ptrA.kracht:= scherm:pos:ptrA.kracht; Tmp-ptrA.weg := Scherm pos ptrA.weg; Verplaats pointer ver(Scherm-pos ptr, R achteruit, 30); if «Scherm pos ptrA.kracht ~ NIL) AND (Scherm-pos-ptrA.weg = NIL» then begin -Scherm pos ptrA.kracht := Tmp ptrA.kracht; scherm-pos-ptrA.weg := Tmp-ptrA.weg; Verplaats pointer ver(Scherm pos ptr, R begin, 0); Verplaats-pointer-ver(Huidige pos ptr, R begin, 0); Verplaats-pointer-ver(Huidige-pos-ptr, R-vooruit, -
-
29);
-
-
-
Scherm positie := 59; end; end; end; EK PGDN begin { Ga 30 records vooruit } Tmp ptrA.kracht:= Huidige pos ptrA.kracht; Tmp-ptrA.weg := Huidige-pos-ptrA.weg; Verplaats pointer ver(Huidige-pos ptr, R vooruit, 30); if «HuidIge pos ptrA.kracht ~ NIL) AND (Huidige pcs ptrA.weg = NIL» then begin -Huidige pos ptrA.kracht := Tmp ptrA.kracht; Huidige-pos-ptrA.weg := Tmp-ptrA.weg; dummy :~ Tocn melding(M044, Herstellen, MW enter); end else begin { Anders moet de scherm pos ptr aangepast worden } Verplaats pointer ver(Scherm-pos ptr, R_vooruit, 30); end; -end; EK Fl Toon help(H006); end; { case Sp toets } end; { while not-Einde aanmaken subset} Dispose(Huidige pos ptr); Dispose(Scherm pos ptr); end; { Interne Procedure aanmaken van subset }
-
55 -
Function Haal J N (X pos, Y pos Default Var Functie toets
INTEGER; CHAR; CHAR)
Char;
{*
In
Functie Out
X pos -> X-positie van het veld Y-pos -> Y-positie van het veld Default -> Geeft de default waarde aan Functie toets -> Funktie toetsen Het halen van een ja of nee veld bij het aanpassen van de assen. Retourneert JA of Nee.
*}
Var Goede invoer, Geldi'ge invoer Inv strIng sp_toets
BOOLEAN; String; CHAR;
begin Geldige invoer := FALSE; Inv strIng := Default; While (NOT (Geldige invoer» do begin Goede invoer := FALSE; Leesveld (Inv string, Inv string, Invoer string, 1, X pos, Y pos, ZIchtbaar, Sp toets); if (Upcase TInv string[l]) IN ['J', 'N']) then Geldige invoer := TRUE; end; {Einde-While NOT Geldige invoer } Haal J N := UpCase(Inv string[l); end; {-Interne functie Haal_J_N } Function Haal Plus min (X pos, Y pos Default Var Functie toets
INTEGER; CHAR; CHAR)
{*
In
Functie Out
X pos -> X-positie van het veld Y-pos -> Y-positie van het veld Default -> Geeft de default waarde aan Functie toets -> Funktie toetsen Deze functie haalt een plus of een min teken op het aangegeven veld. Retourneert een PLUS of MIN.
*}
Var Goede invoer, Geldige invoer Inv strIng Sp_toets
BOOLEAN; String; CHAR;
begin Geldige invoer := FALSE; Inv strIng := Default; While (NOT (Geldige invoer» do begin Goede invoer := FALSE; Leesveld (Inv string, Inv string, Invoer string, 1, X pos, Y pos, ZIchtbaar, Sp toets); if (Inv_strIng[l] IN ['+', '-']) thenGeldige invoer := TRUE; end; {Einde-While NOT Geldige invoer } Haal Plus Min := Inv string[l];end; {-Interne functie-Haal J N }
- 56 -
Char;
Function Haal_verplaatsing (X pos, Y pos, Max lengte Default Var Functie toets
INTEGER; Real; CHAR)
Real;
{*
In Functie Out
X en Y positie de lengte van het veld, de default waarde Het halen van een verplaatsing op opgegeven positie en lengte Geef de ingevulde waarde terug.
*}
Var Inv string sp_toets
string; CHAR;
begin Inv string:= Real naar string (Default, 2); Leesveld (Inv strIng, Inv string, Invoer real, Max_lengte, X pos, Y pos, ZIchtbaar, Sp toets); While (Sp toets = EK F1) do begin Inv string:= Real naar string (Default, 2); Leesveld (Inv strIng, Inv string, Invoer real, Max_lengte, x_pos, Y_pos, ZIchtbaar, sp_toetS); end; Haal_verplaatsing := string_naar_real (Inv_string); end;
{Interne functie Haal_integer }
Procedure Vul verplaatsing in (Plus min X, Plus-min-Y: Char); {*
In
Functie Out
Plus min X -> verplaatsing in de x-richting positief of negatief moet zijn. Plus min Y -> verplaatsing in de y-richting positief of negatief moet zijn. Het in vullen van de verplaatsing;
*}
Var
Deelwaarde kracht, Deelwaarde-weg, Ver K int,Ver-W-int : Integer;
begin { opmerking de verplaatsing zelf wordt niet meegegeven omdat deze globaal bekend zijn. Deze zijn globaal omdat de vorige waardes bewaart moeten blijven indien men het scherm assen_aanpassen ingaat.} { haal deelwaardes } Haal deelwaardes(Grafiek keuze, Deelwaarde_kracht, Deelwaarde_weg); { omrekenen van de waardes } if (Ver x = 0.00) then begin Ver W int := 0; end else begin Ver W int := Round(Ver_x / (Deelwaarde_weg / MAX_WAARDE) + 1); end; if (Ver y = 0.00) then begin Ver K int := 0; end
- 57 -
else begin Ver K int := Round(Ver_y / end;
(Deelwaarde_kracht / MAX_WAARDE) +1);
case (Plus min y) of '-' : F signaalA.verplaatsing := -eVer K int); '+' : F-signaalA.verplaatsing := ver_K=int; end; {case plus_min_x} case (Plus min x) of '-' : S signaalA.verplaatsing := -eVer W int); '+' : s-signaalA.verplaatsing := ver_W=int; end; {case plus_min_y} end; { Interne procedure vul_verplaatsing_in } Procedure Aanpassen_assen; {*
In Functie
Binnen deze procedure kan de gebruiker de assen aanpassen. Zodanig dat de meetgegevens geen negatieve invloed hebben op de later te berekene arbeid.
Out *}
Var Einde aanpassen assen, Einde-invullen Sp toets Tel toe stand IN i, IN Y, IN Antw -
Boolean; Char; integer; Char; Antwoord;
begin Toon scherm(S122l2); Einde aanpassen assen := False; Tel toestand :=-1; While (NOT Einde aanpassen assen) do begin einde invullen := False; while-(NOT Einde invullen) do begin case (Tel toestand) of 1 : begIn IN X := Haal J N( 51, 4, ' J ' , Sp_toets); case (IN X) of'J' Inc(tel toestand); 'N' Inc (tel-toestand, 3); end; end; 2 begin ver plus min x := Haal Plus Min( 51, 5, ver_plus_min_x, Sp_toets); { plaats teken op scherm } GotoXY(42, 6); Write(ver plus min x); Inc(tel toestand);end; 3 begin Ver X:= Haal verplaatsing(46, 6, 6, Ver_X, Sp_toets); Inc(tel toestand); end; 4 begin IN Y := Haal J N( 51, 12, ' J ' , sp_toets); case (IN Y) of' J ' : Inc(tel toestand); 'N' : Einde invullen := True;
58 -
end; end; 5 begin ver plus min y := Haal Plus Min( 51, 13, ver_plus_min_y, sp_toets); { plaats teken op scherm }GotoXY(42, 14); Write(ver plus min y); Inc(tel toestand);end; begin 6 Ver Y:= Haal verplaatsing(46, 14, 6, Ver_Y, sp_toets); Einde invullen := True; end; end; { case tel toestand } end; { while einde invullen } if ((IN X = 'J') OR (IN Y = 'J'» then begin Textco1or(KL WERK INFO); GotoXY(10, 17); Write('Zijn deze waardes goed (JjN) ? : '); IN := Haal j n (45, 17, 'J', Sp toets); if (IN = 'J') then begin Vul verplaatsing in (Ver plus min x, ver_plus_min_Y); einde aanpassen assen :=-True; end else begin tel toestand := 1 end; end else begin einde aanpassen assen := True; end; end; {while not einde aanpassen assen } end; { Interne procedure Aanpassen_assen } Procedure Grafiek_inzien; {*
In Functie
Het aanmaken van de file Grafiek.txt en het laten zien van de grafiek op het scherm.
Out *}
Var Toestand Min x, Min y, Max-x, Max-y Huidige pos ptr Grafiek-afdrukken
Toestandtype; integer; Krachtweg ptr; Boolean; -
begin Aanmaken GraphInp txt; Grafiek afdrukken-:= Readfile(Cfg tijd dir, VGADISP); RestoreCrtmode; end; { Interne procedure grafiek_inzien } Procedure Grafiek_Bewerken; {*
In Functie
Binnen deze procedure kan de gebruiker kiezen welke bewerking hij wil kiezen. Tevens bestaat de mogelijkheid om de grafiek in te zien.
Out *}
- 59 -
Var Einde Grafiek Bewerken Menukeuze, Dummy Bewerkt Antw
Beelean; Char; Bewerkings type; Antweerd; -
begin Einde Grafiek Bewerken := False; While-(NOT (EInde Grafiek Bewerken» de begin -Teen Scherm(S1221); Menukeuze := Lees menukeuze; While (Menukeuze ~ EK Fl) de {Afhandelen evt. helpbeedschap } begin Waarschuwingsteen; Menukeuze := Lees menukeuze; end; Case Menukeuze ef , l' begin if (Net «Grafiek bestaat) AND (Perspreef keuze[3] in ['A' •• 'Z', 'a' •• 'z']») then Aanmaken van-subset else dummy := Teen_melding (M035, Herstellen, MW_enter); end; '2' begin if (Net «Grafiek bestaat) AND (Perspreef keuze[3] in ['A' •• 'Z', 'a' •• 'z']») then Aanpassen assen else dummy := Teen_melding (M035, Herstellen, MW_enter); end; , 3' begin Grafiek_inzien; end; , 4' begin Einde Grafiek Bewerken := True; { ScErijf de-bewerkte perspreef weg. } Schrijf bewerkte prf weg; end; -Escape begin { centreleren ef er een bewerking is uitgeveerd} bewerkt := Bewerking gedaan; if (bewerkt in [As aanpassen, Subset maken, Beide]) then begin Antw := Teen vraag jn('Er zijn bewerkingen uitgeveerd. Deze bewerkingen', 'gaan verleren indien u annuleert.', , wilt utech annuleren (JjN) ?', 3, Herstellen); if (Antw = JA) then begin Herstellen van aIle bewerkingen; Einde grafIek bewerken := True; end; end else Einde Grafiek Bewerken := True; end; end; { case menukeuze } end; { while net Einde Grafiek Bewerken } end; { Interne Precedure-grafiek=bewerken }
-
60 -
Procedure Grafiek_berekenen; {*
In Functie
Binnen procedure deze kan de gebruiker de modelparameters zien die bij de grafiek horen.
Out *}
Var
hulp dummy extensie Tabel onth Toets-
integer; Boolean; String; array[l •• 5) of string; Char;
begin Toon scherm(S1222); Maak-graf window(60, 290, 590, 390, 'PROCESPARAMERTERS'); Maak-graf-window(60, 90, 590, 265,'SCHETS'); selecteer-graf win(60, 290, 590, 390); Vul modelparamters win; Selecteer graf win(60, 90, 590, 265); Teken_grafiek;{Zet tekst "Druk op een toets"} Setcolor(Red); Rectangle(160, 313, 340, 336); Rectangle(160 + VER HOR, 313 + VER HOR, 340 - VER_HOR, 336 - VER_HOR); SetTextJustify(CenterText, BottomText); hulp := «GetMaxX DIV 2) - (TextWidth('Druk op een toets') DIV 2»; SetColor(Blue); OutTextXY(hulp, 330, 'Druk op een toets'); Toets := Readkey; if (Toets = #0) then Toets := Readkey; Closegraph; RestoreCrtmode; if (Tel aantal wissels <> 0) then begin { Onthouden van de berekende waardes } Tabel onth[l) := FS Max Kracht; Tabel-onth(2) := FS-Aanvangsweg; Tabel-onth[3) := FS-Eindweg; Tabel-onth[4) := FS-Totale weg; Tabel=onth[5) := FS=arbeid; {Het wegschrijven van de de gegevens. } Toon scherm(S1222A); Toon-melding(M049, Niet herstellen, MW Geen); extensie := Bepaal extensie; if (Bestand aanwezIg(Cfg datal dir + PersProef Keuze + ,\,-+ Persproef keuze + extensie» then dummy := Lees grafiek gegevens(Cfg-data1 dir + PersProef Keuze + ,\,-+ persproef_keuze + extensie); { Zet de te onthouden waardes terug} FS Max Kracht := Tabel onth[l); FS-Aanvangsweg := Tabel-onth(2); FS-Eindweg := Tabel-onth(3); FS-Totale weg := Tabel-onth(4); FS-arbeid:= Tabel=onth(5); dummy := Bewaar grafiek gegevens(Cfg datal dir + PersProef Keuze + ,\,-+ persproef_keuze + extensie); Delay(1000); end; end; { Interne Procedure grafiek_berekenen }
- 61 -
{*** Externe procedures en functies ***} Procedure Bewerk_fs_kromme; var Einde bewerken Boolean; Menukeuze, Dummy CHAR;
begin Einde bewerken := False; Markeer begin:= False; Markeer=eind := False; While (NOT (Einde bewerken)) do begin Toon scherm(S122); { KIjken of er al een persproef is geselecteerd } If (PersProef keuze = ") then begin Dummy := Toon melding(M038, Herstellen, MW Enter_Escape); If (Dummy = Enter) then begin Kies fs kromme; end -else begin Einde bewerken := True; end; end else begin Menukeuze := Lees menukeuze; While (Menukeuze ~ EK F1) do {Afhandelen evt. helpboodschap } begin Waarschuwingstoon; Menukeuze := Lees menukeuze; end; Case Menukeuze of '1' begin Grafiek_Bewerken; end; , 2' begin Grafiek berekenen; end; '3', Escape: begin Einde bewerken := True; end; end; { case menukeuze } end; { else if persproef keuze } end; { While not Einde bewerken } end; { Externe procedure-Bewerk_fs_kromme} end. { Unit bewerk fs }
-
62 -
unit DISKIO V.PAS
3.3
{***************************************************************************} {* {* {* {*
Unit Versie Functie
DISKIO V 1.0 Biedt een routine voor het verwerken van I/O errors die optreden bij het lezen van en schrijven naar diskette of harde schijf.
{*
{* {* {* {*
Taal Systeemeisen Auteur
{*
{* {* {* {* {* {*
Aanmaakdatum Datum laatste wijziging Copyright (C)
{* {* {* {*
Gebruikt in
Borland Turbo Pascal versie 6.0 IBM compatible XT of hoger C.P.I. van de Werff R.J.J. de Coninck 14 augustus 1993 20 november 1993 Technische Universiteit Eindhoven, Laboratorium voor Omvormtechnologie. Persproef-Analyse Programma versie 2.00
*} *} *} *} *}
*} *} *} *} *}
*} *} *} *} *} *} *} *} *} *}
{***************************************************************************} Unit DiskIO_V; {***************************************************************************} {* Declaratie-gedeelte *} {***************************************************************************} Interface
uses { Run-time lib } Crt, { Library } DiskF 2, Definit, KeyCodes, {Verwerking } Fout_V, Meld_V; Type {*** Toestand na uitgevoerde I/O-operatie ***} ToestandType = (LezenOk, SchrijvenOk, FataleFout, Annuleren); Function ControleerDiskIO(DoelDir: string; Operatie: OperatieType): ToestandType; {*
In Functie
DoelDir -> Hele pad (drive + dir.) van het te controleren station; Operatie -> Type operatie dat moet worden uitgevoerd (lezen of schrijven); Handelt (zover bekend) alle gangbare disk-I/O fouten af. Retourneert: LezenOk, indien leesoperatie mogelijk; SchrijvenOk, indien schrijfoperatie mogelijk; FataleFout, indien onherstelbare fout is opgetreden; Annuleren, indien gebruiker de handeling afbreekt.
Uit *}
{***************************************************************************} {* Implementatie-gedeelte *} {***************************************************************************} Implementation
Function ControleerDiskIO(DoelDir: String; operatie: operatieType): ToestandType; var Resultaat Einde Dummy Antwoord
Integer; Boolean; Char; Char;
begin
-
63 -
Einde := False; while (NOT Einde) do begin Resultaat := Station_gereed(DoelDir, operatie); { Evalueer resultaat operatie } case Resultaat of o begin {Operatie kan succesvol worden uitgevoerd } if (Operatie = Lezen) then ControleerDiskIO := LezenOk else ControleerDiskIO := SchrijvenOk; Einde := True; end; 3
begin {Invalid path } Station := DoelDir[l]; Dummy := Toon fout(F039, Herstellen, FW_enter); ControleerDiskIO := FataleFout; Einde := True; end;
15
begin {Invalid drive number: fatale fout } Dummy := Toon fout(F038, Herstellen, FW_enter); ControleerDiskIO := FataleFout; Einde := True; end;
150
begin {Disk write protected } Station := DoelDir[l]; Antwoord := Toon fout(F032, Herstellen, Fw_enter_escape); if (Antwoord = ESCAPE) then begin ControleerDiskIO := Annuleren; Einde := True; end else Resultaat := Station_gereed(DOe1Dir, Operatie); end;
152
begin {Drive not ready } Station := DoelDir[l]; Antwoord := Toon melding(M004, Herstellen, MW_enter_escape); if (Antwoord = ESCAPE) then begin ControleerDiskIO := Annuleren; Einde := True; end else Resultaat := Station_gereed(DoelDir, Operatie); end;
162
begin {Hardware failure: fatale fout } Station := DoelDir[l]; Dummy := Toon fout(F041, Herstellen, FW_enter); ControleerDiskIO := FataleFout; Einde := True; end;
else begin { Overige fouten: fataal } Station := DoelDir[l]; Disk Fout := Resultaat; Dummy := Toon fout(F042, Herstellen, FW_enter); ControleerDiskIO := FataleFout; Einde := True; end; end;
- 64 -
end; end; { Externe Functie ControleerDiskIO } end. { Unit DiskIO V }
-
65 -
unit FOUT V.PAS
3.4
{***************************************************************************} {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {*
unit Versie Functie
FOUT V 1.0 Bevat aile fout-boodschappen die in het verwerkings gedeelte van het Persproef-Analyse Programma kunnen voorkomen.
Taal Systeemeisen Auteur Aangepast door Aanmaakdatum Datum laatste wijziging
Borland Turbo Pascal versie 6.0 EGA of VGA grafische kaart R.J.J. de Coninck
Copyright (C)
Technische Universiteit Eindhoven, Laboratorium voor Omvormtechnologie.
Gebruikt in
Persproef-Analyse Programma versie 2.00 Verwerkings gedeelte
18 augustus 1993 17 januari 1994
*} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *}
{***************************************************************************} Unit Fout_V;
{***************************************************************************} Declaratie-gedeelte
{*
*}
{***************************************************************************}
Interface
Uses { Run-time lib } Crt, { Library } Layout, Definit, Invoer, KeyCodes, Vid_buff, Cursor, Geluid, {Verwerking } Type_ver; Type {*** Fout-identificatiecodes ***} Fout id type = (F003, F017, F018, F021, F026, F027, F028, F032, - F036, F037, F038, F039, F040, F041, F042);
{*** Bepaal respons van fout-window ***} Fout respons type = (FW Geen, FWenter, FW enter escape); Herstel_type-= (Herstellen, Niet=herstellen); Function Toon fout(Fout id: Fout id type; Herstel optie: Herstel type; Fout_respons: Fout_respons_type): Char; {*
In
Functie
Fout id -> code behorende bij een bepaalde foutboodschap; Herstel_optie -> geeft aan of na het beeindigen van de foutboodschap het onderliggende scherm moet worden hersteld; Fout_respons -> geeft aan hoe de gebruiker de window kan beeindigen; Toont de opgegeven foutboodschap op het scherm. Retourneert (voor deze window correcte) speciale toets-code.
Uit *}
{***************************************************************************} {*
Implementatie-gedeelte
*}
{***************************************************************************}
Implementation
- 66 -
Function Toon fout(Fout id: Fout id type; Herstel optie: Herstel type; Fout_respons: Fout_respons_type): Char; Var Goede invoer DummySp_toets
Boolean; String; Char;
begin { Bepaal of het huidige scherm bewaard moet worden } if (Herstel optie = Herstellen) then Bewaar_sc'herm; Waarschuwingstoon; { Maak window (excl. inhoud) } Window(21, 7, 60, 18); Toon kader(l, 1, 40, 12, KL FOUT KADER, KL_FOUT_ACHTERGROND); Window(23, 8, 59, 17); TextColor(KL FOUT VOORGROND); TextBackground(KL-FOUT ACHTERGROND); ClrScr; -{ Toon foutboodschap, afhankelijk van Fout id code } case Fout id of F003 : begin GotoXY(13, 1); Write('Fout no.'); GotoXY(22, 1); WriteAcc('003', KL FOUT VOORGR ACC, KL_FOUT_ACHTERGROND); WriteLn; WriteLn; WriteLn('Instellingenbestand PERSPRF.INS niet'); WriteLn('gevonden.'); WriteLn; WriteLn('Persproef-Analyse Programma kan niet'); WriteLn('worden voortgezet zonder dit bestand.'); end; F017 begin GotoXY(13, 1); Write('Fout no.'); GotoXY(22, 1); WriteAcc('017', KL_FOUT_VOORGR_ACC, KL_FOUT_ACHTERGROND); WriteLn; WriteLn; WriteLn; Centreer('De directories zoals ze z~Jn opge-', 3); Centreer('slagen in het bestand Persprf.ins,', 4); Centreer('komen niet overeen met de werkelijk-', 5); Centreer('heid. Wijzig met de menu-optie', 6); Centreer('Wijzig programma-instellingen', 7); Centreer('(Hoofdmenu) de directories.', 8); end; F018 begin GotoXY(13, 1); Write('Fout no.'); GotoXY(22, 1); WriteAcc('018', KL_FOUT_VOORGR_ACC, KL_FOUT_ACHTERGROND); WriteLn; WriteLn; WriteLn; Centreer('Het bestand met de grafiekgegevens', 3); Centreer('komt niet voor in de huidige ' 4); Centreer('programma directory. Dit is 5); Centreer('meestal een installatiefout. , 6); Centreer('Raadpleeg de systeembeheerder.', 7); end; F021 begin GotoXY(13, 1); Write('Fout no.');
-
67 -
F026
F027
F028
F032
F036
F037
GotoXY(22, 1); WriteAcc('02l', KL_FOUT_VOORGR_ACC, KL_FOUT_ACHTERGROND); WriteLn; WriteLn; WriteLn; Centreer('Printer/plotter reageert niet. , 4); Centreer('Controleer of de printer/plotter', 5); Centreer('ingeschaleld en ON-LINE staat. ' 6); end; begin GotoXY(13, 1); Write('Fout no.'); GotoXY(22, 1); WriteAcc('026', KL_FOUT_VOORGR_ACC, KL_FOUT_ACHTERGROND); WriteLn; WriteLn; WriteLn; Centreer('De disk(ette) in station ', 3); Centreer('bevat onvoldoende vrije ruimte ' 4); Centreer('om de voor het tonen/afdrukken 5); Centreer('van grafieken noodzakelijke 6); Centreer('tijdelijke bestanden te kunnen 7); Centreer('opslaan.', 8); end; begin GotoXY(13, 1); Write('Fout no.'); GotoXY(22, 1); WriteAcc('027', KL_FOUT_VOORGR_ACC, KL_FOUT_ACHTERGROND); WriteLn; WriteLn; WriteLn; Centreer('Er is geen printer/plotter', 4); Centreer('geselecteerd om de grafiek af te', 5); Centreer('drukken.', 6); end; begin GotoXY(13, 1); Write('Fout no.'); GotoXY(22, 1); WriteAcc('028', KL_FOUT_VOORGR_ACC, KL_FOUT_ACHTERGROND); WriteLn; WriteLn; WriteLn; Centreer('Het verkeerde afdruk-apparaat is', 4); Centreer('geselecteerd. Rapporten kunnen " 5); Centreer('alleen worden afgedrukt worden " 6); Centreer('op een laserprinter.', 7); end; begin GotoXY(13, 1); Write('Fout no.'); GotoXY(22, 1); WriteAcc('032', KL_FOUT_VOORGR_ACC, KL_FOUT_ACHTERGROND); WriteLn; WriteLn; WriteLn; Centreer('Disk(ette) in station' + station,S); Centreer('heeft schrijfbeveiliging.', 6); end; begin GotoXY(13, 1); Write('Fout no.'); GotoXY(22, 1); WriteAcc('036', KL_FOUT_VOORGR_ACC, KL_FOUT_ACHTERGROND); WriteLn; WriteLn; WriteLn; Centreer('Laaste punt kan niet geselecteerd', 5); centreer('worden als beginpunt.', 6); end; begin
- 68 -
GotoXY(13, 1); Write('Fout no.'); GotoXY(22, 1); WriteAcc('037', KL_FOUT_VOORGR_ACC, KL_FOUT_ACHTERGROND); WriteLn; WriteLn; WriteLn; Centreer('Eerste punt kan niet geselecteerd', 5); centreer('worden als eindpunt.', 6); end; F038 begin GotoXY(13, 1); Write('Fout no.'); GotoXY(22, 1); WriteAcc('038', KL_FOUT_VOORGR_ACC, KL_FOUT_ACHTERGROND); WriteLn; WriteLn; WriteLn; Centreer('Ongeldige drive-aanduiding.', 4); Centreer('Het in de persproef-directory opgegeven', 5); Centreer('disk(ette) station heeft op deze computer-', 6); Centreer('configuratie geen betekenis', 7); end; F039 begin GotoXY(13, 1); Write('Fout no.'); GotoXY(22, 1); WriteAcc('039', KL_FOUT_VOORGR_ACC, KL_FOUT_ACHTERGROND); WriteLn; WriteLn; WriteLn; Centreer('Persproef-directory niet gevonden.', 4); Centreer(' Station' + Station + ' bevat geen directory', 5); Centreer(' , + PersProef keuze, 6); end; F040 begin GotoXY(13, 1); Write('Fout no.'); GotoXY(22, 1); WriteAcG('040', KL_FOUT_VOORGR_ACC, KL_FOUT_ACHTERGROND); WriteLn; WriteLn; WriteLn; Centreer('De persproef-directory', 4); Centreer(Copy(Cfg data dir, 1, Length(Cfg data dir) - 1), 5); Centreer('bevat geen persproeven.', 6); end; F041 begin GotoXY(13, 1); Write('Fout no.'); GotoXY(22, 1); WriteAcc('041', KL FOUT VOORGR ACC, KL FOUT ACHTERGROND); Centreer(' Hardware-fout op station' Station + ' . ' , 5); Centreer('(Diskette niet geformatteerd?)', 6); end; F042 begin GotoXY(13, 1); Write('Fout no.'); GotoXY(22, 1); WriteAcc('042', KL_FOUT_VOORGR_ACC, KL_FOUT_ACHTERGROND); WriteLn; WriteLn; Centreer('Fout geconstateerd met code' 3); Write(Disk fout); Centreer('bij een poging om station '+ Station + ' te', 4); Centreer('gebruiken.', 5); WriteLn; Centreer('Zie hand1eiding voor toelichting.', 7); end; end; {Case Fout id} { Toon beeindigingsmogelijkheden } case Fout respons of Fw_geen: begin
+
- 69 -
{ Er hoeft niet gewacht te worden op invoer van de gebruiker. De melding-window routine wordt meteen beeindigd. } end; FW enter
begin GotoXY(S, 10); Write('Druk '); WriteAcc('<Enter>', KL FOUT VOORGR ACC, KL FOUT ACHTERGROND); Write(' om door te gaan.'); { Lees invoer van toetsenbord } Goede invoer := False; while-(NOT Goede invoer) do begin Leesveld(Dummy, " , Invoer string, 0, 1, 1, onzichtbaar, Sp toets); if (Sp toets = ENTER) then begin Goede invoer := True; Toon tout := sp_toets; end else begin Cursor uit; Waarscliuwingstoon; Cursor aan; end; end; end;
FW_enter_escape
begin GotoXY(I, 9); Write('Druk '); WriteAcc('<Enter>', KL FOUT VOORGR ACC, KL FOUT ACHTERGROND); Write(' om door te gaan,'); GotoXY(I, 10); Wr ite ( , druk '); WriteAcc('<Esc>', KL FOUT VOORGR ACC, KL FOUT ACHTERGROND); Write(' om handelIng af te breken');
{ Lees invoer van toetsenbord } Goede invoer := False; while-(NOT Goede invoer) do begin Leesveld(Dummy, " , Invoer string, 0, 1, 1, Onzichtbaar, Sp toets); if (Sp toets IN [ENTER, ESCAPE]) then begin Goede invoer := True; Toon tout := Sp_toets; end else begin Cursor uit; Waarscliuwingstoon; Cursor aan; end; end; end; end; { case Fout respons } { Bepaal of het onderliggende scherm hersteld moet worden } if (Herstel_optie = Herstellen) then Herstel_scherm;
-
70 -
end; { Externe Procedure Toon fout } end. { Unit Fout V }
- 71 -
unit GRAF BER.PAS
3.5
{***************************************************************************} {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {*
Unit Versie Functie
GRAF BER 1.0 Binnen deze unit wordt de alle modelparameters berekend en weggeschreven naar de juiste directory en bestand. Tevens kunnen de modelparameters ook op het scherm worden getoond.
Taal Systeemeisen
Borland Turbo Pascal versie 6.0
Auteur Aanmaakdatum Datum laatste wijziging
R.J.J. de Coninck 21 december 1993
Copyright (C)
Technische Universiteit Eindhoven, Laboratorium voor Omvormtechnologie.
Gebruikt in
Persproef-Analyse Programma versie 2.00 Verwerkings gedeelte.
11 januari 1994
*} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *}
{***************************************************************************} Unit Graf_ber;
{***************************************************************************} Declaratie-gedeelte
{*
*}
{***************************************************************************}
Interface
Uses { Run-time lib } Dos, 'Crt, Graph, Strings, { library } Definit, Oat tijd, Layout, Invoer, BGI_CHR, Inst VAR, P PGG 10, { verwerk } scherm_v, type_ver, Ket_ver, Ketting; Const
{ afstand van de twee lijnen van het kader } VER HOR = 2;
Procedure Vul_modelparamters_win; {*
In Functie
Deze procedure berekend de de modelparameters en zet indien dit wordt aangegeven (variabele scherm) op het scherm.
Out *}
Procedure Maak_as_grafiek; {*
In Functie Out
Tekent de as van de maatschets op het scherm.
*}
Procedure Teken_grafiek; {*
In Functie
Deze procedure tekent de grafiek en de bijbehorende legenda. Tevens zullen de maatlijnen met bijbehorende teksten worden getekend.
-
72 -
Out *}
{***************************************************************************} {* Implementatie-gedeelte *} {***************************************************************************} Implementation {*** Interne functies en procedures ***} Procedure Bepaal Fmax(Var Weg, Kracht {*
integer) ;
-
In Functie
Weg, Kracht. Het bepalen van de maximale kracht en de daarbij behoorende weg. Retouneert : Kracht -> maximale kracht. Weg -> de weg die bij de maximale weg hoort.
Out *}
Var hulp ptr Fmax-; Fmax S
Krachtweg ptr; integer; -
begin New(hulp ptr); Haal begIn pointers(hulp ptr, R begin); { vooruit-lezen tot waar de subset begint aangegeven door de gebruiker } While «Hulp ptrA.krachtA.markering V begin verwijder) OR (Hulp=ptrA.krachtA.markering M=afwezIg» do begin Verplaats pointer ver(hulp ptr, R_vooruit, 1); end; -
while (NOT «hulp ptrA.krachtA.markering = V einde verwijder) OR (hulp ptrA.krachtA.markering ~ M Afwezig) OR (hulp=ptrA.kracht = Nil») do begin M Normaal) OR if «hulp ptrA.krachtA.markering (hulp-ptrA.krachtA.markering = V-einde) OR (hulp-ptrA.krachtA.markering V=begin» then begin if(hulp ptrA.krachtA.waarde > Fmax ) then begin Fmax := hulp ptrA.krachtA.waarde; Fmax s := hulp=ptrA.wegA.waarde; end; end; Verplaats pointer ver(hulp ptr, R_vooruit, 1); end; { while not A.markering: ••• } Kracht := Fmax; Weg := Fmax s; Dispose(hulp ptr); end; {interne procedure bepaal_Fmax} Procedure Bepaal_begin_eind_weg(var Begin_weg, Eind_weg : integer); {*
In Functie
Begin_weg -> is de afstand van beginpunt tot aan de weg die hoort bij de Fmax. Eind_weg -> ~s de weg die hoort bij Fmax tot aan het eindpunt Het bepalen van de beginweg en eindweg. Retourneert :
-
73 -
Out *}
var hulp ptr Kett-
KrachtWeg Ptr; ketting_pEr;
begin New (hulp ptr); Haal_begin_pointers(hulp_ptr, R_begin); { Vooruit lezen tot waar de subset begint aangegeven door de gebruiker } While «Hulp ptrA.wegA.markering = V begin verwijder) OR (Hulp:ptrA.wegA.markering = M:AfwezIg» do begin Verplaats pointer ver(hulp ptr, R vooruit, 1); end; While«NOT( (hulp ptrA.wegA.markering in [V begin, M normaal) ) AND «hulp ptrA.krachtA.waarde + F signaalA.verplaatsing) > 0») AND (NOT (hulp ptrA.weg = NIL» do begin Verplaats pointer ver(hulp ptr, R_vooruit, 1); end; if (hulp ptrA.weg = NIL) then Begin weg := 0 else if «hu1p ptrA.krachtA.waarde + F signaalA.verplaatsing) > 0) then Begin weg := hulp ptrA.wegA.waarde else Begin weg := 0; Dispose (hulp_ptr); New (hulp ptr); Haal begin pointers(hulp ptr, R_einde); Kett-:= Hulp_ptrA.weg; { Vooruit lezen tot waar de subset begint aangegeven door de gebruiker } While «hulp ptrA.wegA.markering = V einde verwijder) OR (hulp-ptrA.wegA.markering = M-AfwezIg» do begin Verplaats pointer ver(hulp ptr, R_achteruit, 1); end; While«NOT( (hulp ptrA.wegA.markering in [V einde, M normaal) ) AND «hulp ptrA.krachtA.waarde + F_signaalA.verplaatsing) > 0») AND (NOT (hulp_ptrA.weg = NIL» do begin Verplaats pointer ver(hulp ptr, R_achteruit, 1); end; if (hulp ptrA.weg = NIL) then Eind weg := 0 else if «hulp ptrA.krachtA.waarde + F signaalA.verplaatsing) > 0) then Eind weg := hulp ptrA.wegA.waarde else Eind weg := 0; Dispose (hulp ptr); end; {Interne procedure Bepaal_begin_eind_weg}
- 74 -
Function Bepaal aantal : integer; {*
-
In Functie Out
Het tellen van het aantal meetpunten. Het aantal meetparen.
*}
var hulp ptr Kettteller
KrachtWeg Ptr; ketting pEr; integer;
begin teller := 0; new(hulp ptr); Haal_begTn_pointers(hulp_ptr, R_begin); { Vooruit lezen tot waar de subset begint aangegeven door de gebruiker } While (NOT «Hulp ptrA.wegA.markering = V einde verwijder) OR (Hulp_ptrA:weg = NIL») do -begin if «Hulp ptrA.wegA.markering = M normaal) OR (Hulp ptrA.wegA.markering = V begin) OR (Hulp-ptrA.wegA.markering = V-einde» then Inc(teIler); Verplaats pointer ver(hulp ptr, R_vooruit, 1); end; Dispose(hulp ptr); Bepaal aantaI := teller; end; { Interne Function Bepaal_aantal } Function somintegraal(Begin_punt, Eind_punt : integer) : Real; {*
In Functie
Begin_punt -> De weg waarbij de arbeid begint Eind punt -> De weg waar de arbeid eindigt Berekent de arbeid die verricht moet worden om het proces tot stand te brengen.
Out *}
Var hulp ptr, hulp-ptrl x1coordinaat, x2coordinaat, y1coordinaat, y2coordinaat, Deelwaarde S, Deelwaarde-F, X afstand,Y-afstand som
KrachtWeg_Ptr;
integer; real;
begin som := 0; Haal deelwaardes(Grafiek keuze, Deelwaarde_F, Deelwaarde_S); New (hulp ptr); Haal begin pointers(hulp ptr, R_begin); New (hulp ptr1); hulp_ptr1-:= hulp_ptr; {vooruit lezen tot het begin van } While (hulp ptrA.wegA.waarde <> Begin punt) do verplaats=pointer_ver(hulp_ptr, R_vooruit, 1); x1coordinaat := begin punt; y1coordinaat := hulp ptrA.krachtA.waarde; While «hulp ptrA.wegA.waarde <= Eind punt) AND (NOT(hulp-ptrlA.weg = NIL»)do-
75 -
begin { volgende coordinaten ophalen } Verplaats pointer ver(hulp ptrl, R vooruit, 1); if (hulp ptrlA.wegA.markerlng in [M normaal, V begin, V_einde) begin - x2coordinaat := hulp ptrlA.wegA.waarde; y2coordinaat := hulp:ptr1 A.kracht A.waarde; { bereken de arbeid van dit gedeelte van de grafiek en tel het op bij het totaal } X afstand := abs(x2coordinaat - xlcoordinaat); Y-afstand := abs(ylcoordinaat + y2coordinaat); { de som wordt bepaald door oppervlak van de driehoek en de daaronder gelegen rechthoek } som := som + «X afstand * Y afstand)* 0.5) + (X-afstand * ylcoordinaat); x1coordinaat := x2coordinaat; y1coordinaat := y2coordinaat; hulp ptr := hulp ptrl; end; end; {while hulp_ptr ••••••. } Somintegraal := sam; end; { Interne functie somintegraal } Procedure Maak_Pijlpunt(Xp,yp, richting, einde, kleur :integer); {*
In
X,Y is het midden van de achterkant van de pijl. Richting geeft aan 0 -> horizontaal (A) 1 -> vertikaal. (» Einde geeft aan welke kant de pijl moet Hor: 0 -> Boven. 1 -> Onder.
0 -> Links. 1 -> Rechts. Kleur geeft de kleur van de pijl weer. Het tekenen van een pijlpunt. Ver:
Functie Out *}
var Triangle: array[1 •• 4) of PointType; Tp : PointType; begin case (richting) of o : begin Tp.x := Xp; Tp.y := Yp ; Triangle(l):= Tp; Tp.x := Xp + VER HOR; Tp.y := Yp; Triangle(2):= Tp; case (einde) of o :Tp.y := Yp - VER HOR; 1 :Tp.y := Yp + VER:HOR; end; Tp.x := Xp; Triangle(3):= Tp;
1
Tp.x := Xp - VER HOR; Tp.y := Yp; Triangle(4):= Tp; end; begin
-
76 -
then
Tp.x := Xp; Tp.y := yp ; Triangle[l]:= Tp; Tp.x := Xp ; Tp.y := yp + VER HOR; Triangle[2]:= Tp; case (einde) of o :Tp.x := Xp + VER HOR; 1 :Tp.x := Xp - VER:HOR; end; Tp.y := yp; Triangle[3]:= Tp; Tp.x := Xp ; Tp.y := Yp - VER HOR; Triangle[4]:= Tp; end; end; SetColor(Kleur); SetFillstyle(Solidfill, Kleur); FillPoly(SizeOf(Triangle) div SizeOf(PointType), Triangle);{ 4 } end; {***
Externe procedures en functies ***}
Procedure Vul modelparamters win; Var Fmax, Fmax S, Sa, Se, Deelwaarde S, Deelwaarde-F, Aantal paren integer; F S, Sa s, Se S, Stotaal-; h, Bovenste grens, Onderste-grens Real; aantal string; dummy Boolean; begin OuttextXY(20, 13, 'N : ' ); OuttextXY(20, 25, 'F [N] : ' ); OuttextXY(20, 29, , max proces'); OuttextXY(20, 37, 's [mm] : ' ); OuttextXY(20, 41, , a'); outtextXY(20, 49, 's : ' ); [mm] OuttextXY(20, 53, , e'); OuttextXY(20, 61, 's : ' ) ; [mm] outtextXY(20, 65, , totaal'); OuttextXY(20, 73, 'h : ' ); [mm] OuttextXY(20, 85, 'Arbeid [Nmm] : ' ) ; Aantal paren := Bepaal aantal; Bepaal-FmaX(Fmax S, Fmax); Bepaal-begin eind weg(Sa, Se); Haal deelwaardes(Grafiek keuze, Deelwaarde F, Deelwaarde S); F S := (Fmax + F signaal~.verplaatsingT * (Deelwaarde F/ MAX WAARDE); Sa S := «Fmax S - Sa) + S-signaal~.verplaatsing) * (Deelwaarde S / MAx WAARDE); if (Se <> Fmax S) then Se S := «Se - Fmax S) + S signaal~.verplaatsing) * (Deelwaarde_S / MAx_WAARDE) else Se S := 0;
- 77 -
Stotaal := Sa S + Se S; Str(aantal_paren, aantal); { Het bepalen van de totale stempelweg } if (Tel aantal wissels = 0) then dummy := Lees_variabele_Gegevens (Cfg data dir + Persproef keuze + ,\,-+ persproef_keuze + '.VAR') else dummy := Lees_Variabele_Gegevens (Cfg datal dir + Persproef keuze + ' \ ' + persproef_keuze + '.VAR'); case Grafiek Keuze of F1S1, F2S1, F3S1 begin Bovenste grens:= String_naar_real(Var_bovenste_slagbegrenzing-pers ); Onderste-grens:= String_naar_real(Var_onderste_slagbegrenzing_pers); end; F2S2, FlS2, F3S2 begin Bovenste_grens:= String naar real(Var bovenste slagbegrenzing uitwerper);Onderste_grens:= String naar real(Var onderste slagbegrenzing ultwerper); end; F3S3, FlS3, F2S3 begin { Deze staat nog op nul omdat dit gegeven nog niet in het programma is meegenomen. Deze tak staat nog open.} Bovenste grens:= 0.0; Onderste-grens:= 0.0;
-
~;
end; { case Grafiek keuze } h:= abs(Onderste_grens - Bovenste_grens); OuttextXY(190, outtextXY(190, OuttextXY(190, outtextXY(190, OuttextXY(190, OuttextXY(190, OuttextXY(190,
13, 25, 37, 49, 61, 73, 85,
FS Max Kracht FS-Aanvangsweg FS-Eindweg FS-Totale weg FS-arbeid-
:= := := := :=
aantal); Real naar string(F S, 2»; Real-naar-string(Sa S, 3»; Real-naar-string(Se-S, 3»; Real-naar-string(Stotaal, 3»; Real-naar-string(h, 3»; Real=naar=string(Somintegraal(Sa, Se), 3»; Real naar string(F S, 2); Real-naar-string(Sa S, 3); Real-naar-string(Se-s, 3); Real-naar-string(stotaal, 3); Real=naar=string(Somintegraal(Sa, Se), 3);
end; {Externe procedure Vul_modelparamters_win} Procedure Maak as grafiek; begin Setcolor(Blue); {plaats y-as} Line(20, 20, 20, 120); {plaats x-as} Line(20, 120, 250, 120); Maak_pijlpunt(20, 20, 0, 0, Blue); Maak_pijlpunt(250, 120, 1, 0, Blue); Setcolor(KL WIN TEKST); SetTextstyle(DefaultFont, VertDir, 1); OuttextXY(15, 35,'F');
-
78 -
SetTextstyle(DefaultFont, HorizDir, 1); OuttextXY(250, 125,'S'); end; {Externe procedure Maak_as_grafiek;} Procedure Teken grafiek; Const NUl X = 20; NUL-Y 120; MAAT AFSTAND = 15; LIJN-AFSTAND = 9; TEKST AFSTAND = 9; var
ArcCoords Xl, Y1, X S, Y S, X=E, Y=E
ArcCoordsType; Integer;
begin Maak as grafiek; setFIllstyle(LtSlashfill, Yellow); Setcolor(Red); Line(NUL X, NUL Y, NUL X + 10, NUL Y); Arc(NUL X + 10,-NUL Y 75, 270, 31S, 75); GetArcCoords(ArcCoords); with ArcCoords do begin Xl := Xend; Y1 := Yend; X S := Xstart; Y-S := Ystart; end; Arc(NUL X + 107, NUL Y - 23, 49, 130, 30); GetArcCoords(ArCCoords); with ArcCoords do begin Line(X1, Y1, Xend, Yend); Xl := Xstart; Y1 := Ystart; end;
=
Arc(NUL X + 204, NUL Y - 75, 225, 270, 75); GetArcCoords(ArcCoords); with ArcCoords do begin X E := Xend; Y-E := Yend; LIne (Xstart, Ystart, Xl, Y1); end; Line(NUL_X + 202, NUL_Y, NUL_X + 212, NUL_Y); { arceren van de grafiek.} SetColor(Yellow); Line(NUL X + 55 - (2 * LIJN AFSTAND), NUL Y - 1, NUL X + 62 - (2 * LIJN AFSTAND), NUL Y - 7); Line(NUL X + 55 - LIJN AFSTAND, NUL Y - 1,NUL_X + 103 - LIJN_AFSTAND, NUL_Y - 49); Line(NUL X + 55, NUL Y - 1, NUL X + 107, NUL Y - 53); Line(NUL-X + 55 + LIJN AFSTAND,-NUL Y - 1, NUL X + 105 + LIJN_AFSTAND, NUL Y - 51); Line(NUL X + 55 + (2 * LIJN AFSTAND), NUL Y - 1, NUL X + 102 + (2 * LIJN AFSTAND), NUL Y - 48); Line(NUL X + 55 + (3 * LIJN AFSTAND), NUL Y-- 1, NUL X + 98 + (3 * LIJN AFSTAND), NUL Y - 44); Line(NUL_X + 55 + (4 * LIJN_AFSTAND), NUL_Y - 1,
-
79 -
NUL X + 94 + (4 * LIJN AFSTAND), NUL Y - 40); Line(NUL X + 55 + (5 * LIJN AFSTAND), NUL Y - 1, NUL X + 89 + (5 * LIJN AFSTAND), NUL Y - 35); Line(NUL X + 55 + (6 * LIJN AFSTAND), NUL Y - 1, NUL X + 85 + (6 * LIJN AFSTAND), NUL Y - 31); Line(NUL X + 55 + (7 * LIJN AFSTAND), NUL Y - 1, NUL X + 80 + (7 * LIJN AFSTAND), NUL Y - 26); Line(NUL X + 55 + (8 * LIJN AFSTAND), NUL Y - 1, NUL X + 76 + (8 * LIJN AFSTAND), NUL Y - 22); Line(NUL X + 55 + (9 * LIJN AFSTAND), NUL Y - 1, NUL X + 72 + (9 * LIJN AFSTAND), NUL Y - 18); Line(NUL X + 55 + (10 * LIJN-AFSTAND), NUL-Y - 1, NUL X + 68 + (10 * LIJN AFSTAND), NUL Y - 14); Line(NUL X + 55 + (11 * LIJN AFSTAND), NUL Y - 1, NUL X + 64 + (11 * LIJN AFSTAND), NUL Y - 10); Line(NUL X + 55 + (12 * LIJN AFSTAND), NUL Y - 1, NUL X + 61 + (12 * LIJN AFSTAND), NUL Y - 7); Line(NUL X + 55 + (13 * LIJN AFSTAND), NUL Y - 1, NUL_X + 59 + (13 * LIJN_AFSTAND), NUL Y - 5); { Maak maat1ijnen. } SetCo1or(Blue); Line(X S + 10, NUL Y - VER HOR, X S + 10, NUL Y - 53 + VER HOR); Maak pIjlpunt(X S 10, NUL Y - vER HOR, 0, 1~ Blue); Maak=pijlpunt(X=s + 10, NUL=Y - 53 VER_HOR,O, 0, Blue);
+
+
Line(X S, NUL Y + MAAT_AFSTAND, NUL_X + 107, NUL_Y + MAAT_AFSTAND); Maak pIjlpunt(X S + VER HOR, NUL Y + MAAT AFSTAND, 1, 1, Blue); Maak=pijlpunt(NUL_X + 107 - VER_HOR, NUL_Y + MAAT_AFSTAND, 1, 0, Blue); Line(NUL X + 107, NUL Y + MAAT AFSTAND, X E, Y E + MAAT AFSTAND); Maak pijlpunt(NUL X +-107 + VER HOR, NUL Y + MAAT AFSTAND, 1, 1, Blue); Maak=pijlpunt(X_E-- VER_HOR, Y_E + MAAT_AFSTAND, I, 0, Blue); Line(X S, Y S + (2 * MAAT AFSTAND), X E, Y E + (2 * MAAT AFSTAND»; Maak pIjlpunt(X S + VER HOR, Y S + (2-* MAAT AFSTAND), 1~ 1, Blue); Maak=pijlpunt(X=E - VER=HOR, Y=E + (2 * MAAT=AFSTAND), 1, 0, Blue); Line(NUL X , NUL Y + (3 * MAAT AFSTAND), NUL X + 212, NUL Y + (3-* MAAT AFSTAND»; Maak pijlpunt(NUL X + vER HOR, NUL Y + (3 * MAAT AFSTAND), 1, 1, Blue); Maak-pijlpunt(NUL-X + 212-- VER HOR, NUL Y + (3 MAAT_AFSTAND), 1~ a ,Blue); -
*
Line(NUL X + 107, NUL Y - 53, X S + 10 - VER HOR, NUL Y - 53); Line(X S~ NUL Y, X S,-NUL Y + (2 * MAAT AFSTAND) + VER HOR); Line (X-E, NUL-Y, X-E, NUL-Y + (2 * MAAT=AFSTAND) + VER=HOR); Line(NUL_X + 107, NUL_Y ,-NUL_X + 107, NUL Y + MAAT AFSTAND + VER_HOR); Line(NUL X, NUL Y, NUL X, NUL Y + (3 * MAAT AFSTAND) + VER HOR); Line(NUL=X + 212, NUL_Y, NUL_X + 212, NUL_Y-+ (3 * MAAT_AFSTAND) + VER_HOR); { Het zetten van de tekst bij de maatlijnen } Setcolor(KL WIN TEKST); SetTextstyle(DefaultFont, HorizDir, 1); OuttextXY(X S + (3* MAAT AFSTAND), NUL Y + MAAT AFSTAND - TEKST AFSTAND,'Sa'); OuttextXY(NUL X + 107 +-(3 * MAAT AFSTAND), NUL Y + MAAT AFSTAND - TEKST_AFSTAND, 'Se'); - OuttextXY(NUL X + 80, NUL Y + (2 * MAAT AFSTAND) - TEKST AFSTAND, 'Stotaal'); OuttextXY(NUL X + 105, NUL Y + (3 * MAAT AFSTAND) - TEKST_AFSTAND,
'h');
-
-
SetTextStyle(DefaultFont, VertDir, 1); OuttextXY(X_S + 7, NUL_Y - 40,'Fmax'); { Het plaatsen van de index. }
- 80 -
5etText5tyle(DefaultFont, HorizDir, 1); outtextXY(200, 13, 'N Het origineel aantal meetparen'); outtextXY(200, 25, 'F De maximale proceskracht'); OuttextXY(200, 29, , max'); OuttextXY(200, 37, '5 De aanvangs procesweg'); OuttextXY(200, 41, , a'); OuttextXY(200, 49, '5 = De eind procesweg'); OuttextXY(200, 53, , e'); OuttextXY(200, 61, '5 De totale procesweg'); OuttextXY(200, 65, , totaal'); OuttextXY(200, 73, 'h = De totale stempelweg'); 5etColor(White); 5etfill5tyle(Lt51ashFill, Yellow); Bar(200, 85, 225, 95); Rectangle(200, 85, 225, 95); OuttextXY(265, 85, '= Arbeid'); end; {Externe procedure Teken grafiek;} end. {Unit Graf_ber} -
- 81 -
unit GRAF BER.PAS
3.6
{***************************************************************************} {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {*
Unit Versie Functie
Graf geg 1.0 Bevat routines voor het aanmaken van de tijde1ijke bestanden "GraphINp.txt" en "PlotDef.txt". Deze bevatten aIle gegevens die noodzakelijk zijn voor het tonen of afdrukken van een grafiek
Taal Systeemeisen
Borland Turbo Pascal versie 6.0 IBM compatible XT of hoger EGA of VGA grafische kaart R.J.J. de Coninck 2 december 1993
Auteur Aanmaakdatum Datum laatste wijziging
2 december 1994
Copyright (C)
Technische Universiteit Eindhoven, Laboratorium voor Omvormtechnologie.
Gebruikt in
Persproef-Analyse Programma versie 2.00 Verwerking-gedeelte
*} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *}
{***************************************************************************} Unit graf_geg;
{***************************************************************************} Declaratie-gedeelte
{*
*}
{***************************************************************************}
Interface
Uses { Run-time lib } Crt, Dos, { Library } Diskf 2, Definit, {Verwerking } DiskIO_V, Ketting, Type_ver, Ket_ver; Procedure Aanmaken_GraphInp_txt; {*
In Functie
Zorgt voor het aanmaken van het tijdelijke bestand GraphInp.txt dat aIle gegevens bevat over de te tekenen grafiek. Dit tijdelijke bestand zal worden opgeslagen in de directory die staat vermeld in Cfg_tijd_dir (directory voor opslag tijdelijke bestanden).
Out *}
Procedure Aanmaken_PlotDef_txt; {*
In Functie
Zorgt voor het aanmaken van het tijdelijke bestand PlotDef.txt dat aIle gegevens bevat over het afdrukken van de getekende grafiek. Dit tijdelijke bestand zal worden opgeslagen in de directory die staat vermeld in Cfg tijd dir (directory voor opslag tijdelijke bestandenT. -
Out *}
{***************************************************************************} {*
Implementatie-gedeelte
*}
{***************************************************************************}
- 82 -
Implementation {*** Externe Procedures en Functies ***}
Procedure Aanmaken GraphInp txt; Var - Toestand Toestandtype; Min x, Min y, Max-x, Max-y, tel-aantalinteger; GraphInp Text; DeelWaarde kracht, DeelWaarde-weg integer; Tekst grafIek String; Huidige_ptr Krachtweg_ptr; begin { controleren of directory bestaat en eventueel niet schrijfbeveiligt is.} Tekst grafiek := 'Kracht-weg kromme in grafiek vorm.'; Toestand := ControleerDiskIO(copy(Cfg tijd dir, 1, length(cfg tIjd dir)- 1), Schrijven); if (Toestand in [SchrijvenOk, LezenOK) then begin { ophalen van de min. x/yen max. x/y } Zoek min max(Min x, Max x, tel aantal, 0); Zoek:min:max(Min:y, Max:y, tel:aantal, 1); {haal deelwaardes op} Haal Deelwaardes (Grafiek keuze, Deelwaarde_kracht, Deelwaarde_weg); Assign(GraphInp, Cfg tijd dir + '\GraphInp.txt');
{$I-}
-
-
Rewrite(GraphInp); {$H}
if (IOResult = 0 ) then begin WriteLn(GraphInp, (Min x + S signaalA.verplaatsing) (DeelWaarde weg / Max WAARDE»; WriteLn(GraphInp, (Max x + s_sIgnaalA.verplaatsing) (DeelWaarde weg / Max WAARDE»; WriteLn(GraphInp, 'Weg in [mm)===>'); WriteLn(GraphInp, (Min y + F signaalA.verplaatsing) (DeelWaarde kracht Max WAARDE»; WriteLn(GraphInp, (Max y + F signaalA.verplaatsing) (DeelWaarde kracht Max WAARDE»; WriteLn(GraphInp, 'Kracht in [N) -===>');
7 7
*
* * *
{ Zet tekst bij de grafiek met de perscode en om welke grafiek het gaat. } case Grafiek keuze of FlSl begin WriteLn(GraphInp, tekst grafiek + ' Perscode : ' + PersProef keuze + ' (Grafiek FlSl.)'); end; F2S2 begin WriteLn(GraphInp, tekst grafiek + ' Perscode : ' + PersProef keuze + , (Grafiek F2S2.)'); end; F3S3 begin WriteLn(GraphInp, tekst grafiek + ' Perscode : ' + PersProef keuze + , (Grafiek F3S3.)'); end; F2S1 begin WriteLn(GraphInp, tekst grafiek + ' Perscode : ' + PersProef keuze + , (Grafiek F2S1.)');
-
83 -
end; begin WriteLn(GraphInp, tekst grafiek + PersProef keuze + , end; begin F1S2 WriteLn(GraphInp, tekst grafiek + PersProef keuze + , end; begin F1S3 WriteLn(GraphInp, tekst grafiek + PersProef keuze + , end; F2S3 begin WriteLn(GraphInp, tekst grafiek + PersProef keuze + , end; F3S2 begin WriteLn(GraphInp, tekst grafiek + PersProef keuze + , end; end; { case } WriteLn(GraphInp, 0); WriteLn(GraphInp, 1); WriteLn(GraphInp, 0); WriteLn(GraphInp, tel aantal); WriteLn(GraphInp, , WriteLn(GraphInp, 0); F3S1
' Perscode : ' + (Grafiek F3S1.)'); ' Perscode : ' + (Grafiek F1S2.)'); ' Perscode : ' + (Grafiek F1S3.)');
' Perscode : ' + (Grafiek F2S3.)'); ' Perscode : ' + (Grafiek F3S2.)');
'T;
New(Huidige ptr); Haal_begin_pointerS(Huidige_ptr, R_Begin); While «huidige ptrA.krachtA.markering = V begin verwijder) OR (huidige_ptrA.krachtA.markering = M_Afwezig»do begin Verplaats pointer ver(huidige ptr, R vooruit, 1); end; -while (NOT «Huidige ptrA.krachtA.markering = V einde verwijder) OR (Huidige ptrA.krachtA.markering = M_afwezig) OR (Huidige=ptrA.kracht = NIL ») do begin With huidige ptr A do begin Writeln(GraphInp, (WegA.waarde + S signaalA.verplaatsing) * (DeelWaarde weg / Max WAARoE»; Writeln(GraphInp, (KrachtA.waarde + F signaalA.verplaatsing) (DeelWaarde_kracht / MAX_WAARoE»; end; Verplaats pointer ver(huidige ptr, R_vooruit, 1); end; {while-not ••• :} end; Close(GraphInp); end; { if toestand •••••• } end; {Externe Procedure Aanmaken_graphInp_txt} Procedure Aanmaken PlotDef txt; begin - ;
end; { Externe Procedure Aanmaken PlotDef txt } end. { Unit graf_geg }
-
84 -
*
unit HELP V.PAS
3.7
{***************************************************************************} {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {*
Unit Versie Functie
HELP V 1.0 Bevat aile help-boodschappen die in het verwerkings gedeelte van het Persproef-Analyse Programma gebruikt worden.
Taal Systeemeisen
Borland Turbo Pascal versie 6.0 IBM compatible XT of hoger EGA of VGA grafische kaart R.J.J. de Coninck
Auteur Aangepast door Aanmaakdatum Datum laatste wijziging
26 augustus 1993 2 januari
1994
Copyright (C)
Technische Universiteit Eindhoven, Laboratorium voor Omvormtechnologie.
Gebruikt in
Persproef-Analyse Programma versie 2.00 Verwerking
*} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *}
{***************************************************************************}
Unit Help_V;
{***************************************************************************} Declaratie-gedeelte
{*
*}
{***************************************************************************}
Interface
Uses { Run-time lib } Crt, Dos, { Library } Layout, Definit, Vid_buff, Geluid, Cursor, Invoer, KeyCodes; Type {*** Help-identificatiecodes ***} Help_id_type = (Geen_help, H006, H006B); Procedure Toon_help(Help_id: Help_id_type); {*
In Functie uit
Toont de opgegeven help-boodschap.
*}
{***************************************************************************} Implementatie-gedeelte
{*
*}
{***************************************************************************}
Implementation
{*** Interne procedure en functies ***} Procedure Pagina(Huidige_pag, Totaal aantal_pag: Integer); {*
In Functie
Huidige pag -> nummer huidige help-pagina van dit onderwerp; Totaal_aantal_pag -> totaal aantal help-pagina's behorende bij dit onderwerp. Toont hoeveel help-pagina's over dit betreffende onderwerp beschikbaar zijn en op welk pagina men zich bevindt.
Uit *}
-
85 -
Var Hulpstr Oud X, Oud-Y
String(2); Integer;
begin { Bewaar oude cursorpositie } Oud X := WhereX; Oud=Y := WhereY; { Toon pagina-aanduiding } TextColor(KL HELP VOORGROND); GotoXY(68, 1); Str(Huidige pag:O, Hulpstr); WriteAcc(Hulpstr, KL HELP VOORGR ACC, KL_HELP_ACHTERGROND); write('/'); Str(totaal aantal pag:O, Hulpstr); WriteACC(Hulpstr,-KL_HELP_VOORGR_ACC, KL_HELP_ACHTERGROND); { Herstel oude cursorpositie } GotoXY(Oud X, Oud Y); end; { Interne procedure Pagina } {*** Externe Procedure en Functies ***}
var Einde help Goede-invoer DummySp toets Volgende pag Vorige pag Volgende pag aanwezig Vorige_pag_aanwezig
Boolean; Boolean; String; Char; Help id type; Help-id-type; Boolean; Boolean;
begin { Het is mogelijk dat er meerdere pagina's help-boodschappen bij het betreffende onderwerp horen. Daarom is elke help-boodschap voorzien van de variabelen Volgende pag en vorige pag, die de help-id code van resp. de volgende en vorige bijbehorende help-boodschap tonen. Om aan te geven dat er geen volgende bijbehorende help-boodschap is, krijgt Volgende_pag dezelfde waarde als de huidige help-id code. Idem voor Vorige_pag. } if (Help id <> Geen help) then begin { Bewaar huidige scherminhoud } Bewaar_scherm; { Maak help-window (excl. inhoud) } Window(4, 3, 77, 23); Toon kader(l, 1, 74, 21, KL_HELP_KADER, KL_HELP_ACHTERGROND); Window(5, 4, 76, 22); TextColor(KL HELP VOORGROND); TextBackground(KL-HELP ACHTERGROND); Toon horizontale lijn(2, KL HELP KADER); Toon-horizontale-lijn(18, KL HELP KADER); centreer('Persproef-Analyse Programma HELP', 1); { Toon helptekst, afhankelijk van help_id code } Einde help := False; while-(NOT Einde help) do begin { Gebied waar help-tekst geplaatst kan worden } Window(6, 6, 75, 20); Clrscr; case Help_id of
- 86 -
H006
begin Pagina (1,2); Centreer('HET MAKEN VAN EEN SUBSET " 4); Centreer('Markerings mogelijkheden.', 5); WriteLn; WriteLn; WriteLn('egin Het markeren van een meetpaar als beginpunt.'); WriteLn; WriteLn('<E>ind Het markeren van een meetpaar als eindpunt. ' ) ; WriteLn; WriteLn('<W>issen Het markeren van een meetpaar als gewist te worden.'); WriteLn; WriteLn('erstellen Het herstellen van een meetpaar indien dit' ) ; Write (' gemarkeerd is. --> ]'); Volgende pag := H006B; Vorige pag := Help_id; end; H006B: begin Pagina (2,2); Centreer('HET MAKEN VAN EEN SUBSET' 4); Centreer('Blader Funkties.', 5); WriteLn; WriteLn; WriteLn ( , AX Ga een meetpaar naar boven.'); WriteLn ( , Ay Ga een meetpaar naar beneden.'); WriteLn; WriteLn('<PageUp> Ga een bladzijde naar boven.'); WriteLn('<PageDown> Ga een bladzijde naar benden.'); WriteLn; WriteLn(' Ga naar eerste meetpaar.'); WriteLn('<End> Ga naar laaste meetpaar.'); Volgende pag := Help id; Vorige pag := H006; end; end; { case Help_id } { Toon invoermogelijkheden } Window(5, 4, 76, 22); GotoXY(3, 19); ClrEol; WriteAcc('<Esc>', KL HELP VOORGR ACC, KL_HELP_ACHTERGROND); Write ( , = Terug'); exec('c:\v200\exe&tpu\bell.exe', "); if (Vorige pag <> Help id) then {Er is een vorige help-pagina } begin Write(' ':5); WriteAcc('', KL HELP VOORGR ACC, KL_HELP_ACHTERGROND); Write(' = Vorige pagina');Vorige pag aanwezig := True; end -else Vorige_pag_aanwezig := False; if (Volgende pag <> Help id) then {Er is een volgende help-pagina } begin Wr i te (' ': 5 ) ; WriteAcc('', KL_HELP_VOORGR_ACC, KL_HELP_ACHTERGROND); Write(' Volgende pagina'); Volgende pag aanwezig := True; end -else Volgende_pag_aanwezig := False;
=
{ Lees invoer van toetsenbord }
-
87 -
Goede invoer := False; while-(NOT Goede invoer) do begin Leesveld(Dummy, " , Invoer string, 0, 1, 1, Onzichtbaar, sp_toets); if (Sp toets = ESCAPE) then begin Einde help := True; Goede-invoer := True; end else if «Sp toets = EK PGUP) AND (Vorige_pag_aanwezig» then begin Help id := Vorige pag; Goede invoer := True; end else if «Sp toets = EK_PGDN) AND (Volgende_pag_aanwezig» then begin Help id := Volgende pag; Goede invoer := True; end else begin Cursor uit; Waarschuwingstoon; Cursor aan; end; end; end; { Herstel vorige scherm } Herstel_scherm; end else {Indien geen help-boodschap voor dit onderwerp aanwezig is } begin Cursor uit; Waarschuwingstoon; Cursor aan; end; end; { Externe Procedure Toon_help } end. { Unit Help_V}
- 88 -
unit RET VER.PAS
3.8
{***************************************************************************} {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {*
Unit Versie Functie
KET VER 1.0Binnen deze unit wordt de geregistreerde data zoals deze uit het Acquisitie Programma komt in twee kettingen gezet. Deze kettingen zijn in twee richtingen te lezen. Deze unit maakt gebruik van de Unit Ketting
Taal Systeemeisen
Borland Turbo Pascal versie 6.0 Hoeveelheid RAM > het aantal geregistreerde gegevens. R.J.J. de Coninck 16 november 1993
Auteur Aanmaakdatum Datum laatste wijziging
7 december 1993
Copyright (C)
Technische Universiteit Eindhoven, Laboratorium voor Omvormtechnologie.
Gebruikt in
Persproef-Analyse Programma versie 2.00 Verwerkings gedeelte.
{*
*} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *}
{***************************************************************************}
{***************************************************************************} Declaratie-gedeelte
{*
*}
{***************************************************************************}
Interface Uses
{Library } Definit, Inst PGG, Geluid, Inst_amp, Diskf_2, {verwerking } Ketting, Type:veri Procedure Init ketting Veri {*
- -
In Functie
Deze funktie initialiseert de begin structuur waarin o.a. de beginpointer naar de lijst is opgeslagen.
Out *}
Procedure Verwijder_Ketting_veri {*
In Functie Out
Het verwijderen van de begin structuur.
*}
Procedure Init_twee_kettingi {*
In Functie Out
Deze funktie initialiseert de zes lijsten.
*}
Procedure Verwijder_twee_kettingi {*
In Functie
Het verwijderen van aIle zes de lijsten.
- 89 -
Out *}
Procedure Lees_bestand_in_ketting (BestandNaam : string); {*
In Functie Out
Bestandnaam is de naam waar de meetgevens in staan. Bestandnaam bestaat uit zowel de drive als het pad en de bstandnaam b.v. "c:\persdata\pf931001\pf931001.dat". Het vullen van de twee lijsten met de meetwaardes.
*}
Procedure Schrijf_ketting_in_bestand(BestandNaam : string); {*
In
Functie
Bestandnaam is de naam waar de meetgegevens worden terug geschreven. Bestandnaam bestaat uit zowel de drive als het pad en de bstandnaam b.v. "c:\persdata\pf931001\pf931001.dat". Het wegschrijven van de twee lijsten en de andere waarden in de meetgegevens bestand.
Out *}
Procedure Toon_gegevens ( Kracht : Ketting_Ptr; Weg :Ketting_Ptr); {*
In Functie Out
Kracht = pointer naar de kracht-lijst. Weg pointer naar de weg-lijst. Toont de waardes uit de lijsten.
*}
Procedure Verplaats_pointer_ver( var KrWg Waarheen Hoeveel
KrachtWeg ptr; richting;Integer );
{*
In
Functie
KrWg is pointer naar record waar de pointers van de huidige kracht en huidige weg zijn opgeslagen. Waarheen => de ricjring waarin verplaats moet worden. Hoeveel => Hoeveel records in de richting waarheen verplaats moet worden. Met deze procedure kan door een ketting gelopen worden in elke richting. Hierbij is het niet van belang naar welk record de pointer wijst. Retourneert : nieuwe pointer van de kracht en weg.
Out *}
Procedure Haal_begin_pointers (var KW Richtingssoort
KrachtWeg ptr; Richting);
{*
In Functie
Krachtweg -> pointer naar een stuk geheugen waar de begin pointers van de kracht en de weg liggen. Richtingssoort -> welke kant moet worden opgehaald. Het nagaan om welke grafiek het gaat, en het terug geven van de daarbij behorende begin pointers. Retourneert : de begin pointers.
Out *}
Procedure Haal Deelwaardes (Grafieksoort : grafiek; Var Deelwaarde_k, Deelwaarde w {*
In
Grafiek -> om welke grafiek het gaat. Deelwaarde k -> getal voor het omrekenen van de meetpunten in reals
- 90 -
Integer) ;
Deelwaarde w -> getal voor het omrekenen van de meetpunten in reals Functie Ophalen van de getallen voor het omrekenen van de meetpunten naar reals. retourneert : omrekenings factoren. Out :-*}
Procedure Markeer_begin_punt (Huidige_ptr : KrachtWeg_Ptr ); {*
In Functie
Pointer naar de ketting. Deze procedure markeert het begin van de meetlijst. Voorgaande punten worden gemarkeert als zijnde verwijderd.
Out *}
Procedure Markeer_eind_punt (Huidige_ptr : KrachtWeg_ptr); {*
In Functie
Pointer naar de ketting. Deze procedure markeert het eind van de meetlijst. Punten die hierna komen worden gemarkeert als zijnde verwijderd.
Out *}
Procedure Markeer_wissen(Huidige_ptr : KrachtWeg_ptr); {*
In Functie
Pointer naar de ketting. Deze procedure markeert een verwijdering in de meetlijst.
Out *}
Procedure Herstel markering(Huidige ptr : KrachtWeg ptr; var Markeer soort : markeringstypen); {*
In Functie
Pointer naar de ketting. Deze procedure herstelt een markering. Retourneert : welke marking is herstelt.
Out *}
Procedure Zoek min max (var Min, Max, tel aantal soort integer);
integer;
{*
In
Functie
Min
-> Variabele waarin de minimale waarde in komt te staan. Max -> Variabele waarin de maximale waarde in komt te staan. tel aantal -> is het aantal meetpunten dat bij de subset hoort. soort -> geeft aan of men de min. en max. van de weg of kracht wilt hebben. 0-> weg 1-> kracht Het zoeken van de maximale en minimale waarde aan een meegegeven lijst. Retourneert : kleinste en grootste waarde.
Out *}
Procedure Kopieer_Dat_file(Bron, Doel: string); {*
In
Bron is de directory en het station en de bestandnaam van het te kopieeren bestand.
- 91
Functie
Doel is de directory en het station en de bestandnaam van de kopie. Kopieert een orgineel .DAT bestand in de tijdelijke directory onder een andere naam.
Out *}
{***************************************************************************} Implementatie-gedeelte
{*
*}
{***************************************************************************} Implementation
{*** Interne functies en procedures ***} Procedure Herstel_Begin_punt (Huidige_ptr : KrachtWeg_ptr); {*
In Functie
Pointer naar meetpunt in de lijst die staat gemarkeerd als zijnde begin. Herstelt het meegegeven meetpunt en herstelt voorgaande meetpunten
Out *}
Var help_ptr : KrachtWeg_Ptr; begin New(help ptr); Haal_begIn_pointers(help_ptr, R_begin); While (NOT «help ptrA.krachtA.markering = V BEGIN) AND (help_ptrA.wegA.markering V_BEGIN») do begin with help ptr A do begin if «krachtA.markering = V BEGIN VERWIJDER) AND (wegA.markering = V BEGIN VERWIJDER» then begin krachtA.markering := M normaal; wegA.markering := M:normaal; end; { if •••••• } end; { with help ptr A } Verplaats pointer ver(help ptr, R_vooruit, 1); end; { while NOT •• 7 ... } { markeer huidige kracht en weg als begin } Huidige ptrA.krachtA.markering := M Normaal; Huidige:ptrA.wegA.markering := M:Normaal; Dispose(help ptr); end; { Interne-Procedure Herstel_begin_punt } Procedure Herstel_Eind_punt(Huidige_ptr : KrachtWeg_Ptr); {*
In Functie
Pointer naar meetpunt in de lijst die staat gemarkeerd als zijnde eind. Herstelt de meegegeven meetpunt en herstelt de meetpunten die hierna komen.
Out *}
Var help_ptr : KrachtWeg_Ptr; begin New(help ptr); { verplaats pointers naar laaste records } Haal_begin_pointers(help_ptr, R_Einde); { verplaats pointer }
- 92 -
While (NOT ((help ptrA.krachtA.markering = V einde) AND (help:ptrA.wegA.markering V_einde») do begin with help ptr A do begin if ((krachtA.markering = V EINDE VERWIJDER) AND (wegA.markering = V EINDE VERWIJDER» then begin krachtA.markering := M NORMAAL; wegA.markering := M:NORMAAL; end; { if •••••• } end; { with help ptr A } Verplaats pointer ver(help ptr, R_Achteruit, 1); end; { While not •• :.} { markeer huidige kracht en weg als einde } Huidige ptrA.krachtA.markering := M Normaal; Huidige:ptrA.wegA.markering := M:Normaal; Dispose(help ptr); end; {Interne Procedure herstel_eind_punt } {*** Externe Procedure en Functies ***}
Procedure Zoek min max (var Min, Max, tel aantal soort : integer); var teller integer; huidige ptr Krachtweg ptr; Kett Ketting_ptr;
integer;
begin { haal begin van de ketting op } new (huidige ptr); Haal begin pointers(Huidige ptr, R begin); case-soort-of -o : kett := huidige ptrA.weg; 1 : kett := huidige-ptrA.kracht; end; dispose(Huidige ptr); teller:= 0; { Vooruit lezen tot waar de subset begint aangegeven door de gebruiker } While ((kettA.markering = V_begin_verwijder) OR (kettA.markering = M_Afwezig» do begin kett := kettA.volgende; end; Min := kettA.waarde; Max := kettA.waarde; while (NOT ((KettA.markering = V einde verwijder) OR (KettA.markering ~ M Afwezig) OR (KettA.markering = M:einde») do begin if ((KettA.markering = M Normaal) OR V_begin» (KettA.markering = V-einde) OR (KettA.markering begin Inc(teller); if(KettA.waarde < Min) then begin Min := KettA.waarde; end else begin if(KettA.waarde > Max) then Max := KettA.waarde;
-
93 -
then
end; end; Kett := KettA.volgende; end; { while not kettA.markering •••• } tel aantal := teller; end; { Externe procedure zoek_min_max } Procedure Init ketting Veri begin { maak pointers aan } New (F Signaal); New (S=Signaal); { maak de twee lijsten aan } Init_twee_ketting; end; { Externe Procedure Init_ketting_Ver } Procedure Kopieer_Dat_file(Bron, Doel : string); var KrWg OpslagRecord; orgineel, kopie datagegevens; Onth K, Onth-W Integer; begin Assign(orgineel, Bron); Reset(orgineel); Assign (kopie, Doel); Rewrite(kopie); Read(orgineel, KrWg); While NOT EOF(orgineel) do begin Write (kopie, Krwg); Read(orgineel, KrWg); end; Write (kopie, Krwg); close(orgineel); close(kopie); end; { Externe Procedure kopieer_dat_file} Procedure Init twee ketting; begin -{ maak de twee lijsten aan } F SignaalA.Begin Pointer:= Init ketting; s-signaalA.Begin-Pointer:= Init-ketting; end; { Externe procedure Init_zes=ketting } Procedure Verwijder Ketting veri begin - { verwijder de twee lijsten } Verwijder twee ketting; { verwijder de twee pointers } DisPose(F Signaal); DisPose(S-Signaal); end; { Externe Procedure Verwijder_Ketting_ver } Procedure Verwijder twee ketting; begin { Verwijder de twee lijsten } Verwijder ketting(F SignaalA.Begin Pointer); Verwijder=ketting(S=SignaalA.Begin=pointer); { maak pointer's nil} F SignaalA.begin pointer := NIL; S=SignaalA.begin=pointer := NIL;
- 94 -
{ maak verplaatsing nul } F SignaalA.verplaatsing := 0; S:5ignaal A.verplaatsing := 0; end; { Externe procedure Verwijder_zes ketting } Procedure Lees_bestand_in_ketting (BestandNaam var OpslagRecord; KrWg data datagegevens; Onth K, Onth-W Integer;
string) ;
begin Assign(data, BestandNaam); Reset (data) ; Read (data, KrWg); { ophalen van de meetgegevens } While NOT EOF(data) do begin With KrWg do begin case Grafiek keuze of Fl5l begin Onth K :=F1; Onth-W :=51; end; begin F252 Onth K :=F2; Onth-W :=52; end; F353 begin Onth K :=F3; Onth-W :=53; end; F251 begin Onth K :=F2; Onth-W :=51; end; begin F351 Onth K :=F3; Onth-W :=51; end; F152 begin Onth K :=F1; Onth-W : =52 ; end; F153 begin Onth K :=F1; Onth-W :=53; end; F253 begin Onth K :=F2; Onth-W :=53; end; F352 begin Onth K :=F3; Onth-W :=52; end; end; { case grafiek_keuze } end; if (Onth K = MAXINT) then Insert-in ketting(F 5ignaal A.Begin Pointer, Onth_K, M_Afwezig) else Insert_in_ketting(F_5ignaal A.Begin_Pointer, Onth_K, M_NORMAAL); if (Onth_W = MAXINT) then
- 95 -
Insert in ketting(S Signaal~.Begin Pointer, Onth_W, M_Afwezig) else Insert in ketting(S Signaal~.Begin Pointer, Onth_W, M_Normaal); Read (data, irWg); end; { While not eof datameetgegevens } Close(data); end; { Externe Procedure Lees_bestand_in_ketting } Procedure Schrijf ketting in bestand(BestandNaam Var KrWg OpslagRecord; Lees data, schrIjf data datagegevens; Aantal data Data aantal; Aant record aantalrecord; K l,-K 2, K 3, W-I, W-2, W-3, Aant Kracht; Aant-Weg Integer; cfg dir gelijk Boolean; Help_ptr KrachtWeg_ptr;
string);
begin Aant kracht := 0; Aant-weg := 0; New(iielp ptr); Haal begIn pointers(help ptr, R begin); { maak een kopie van het orgineel } Kopieer dat file(cfg data dir + Persproef keuze + '\' + Persproef_keuze + '.DAT',-cfg_tijd_dir + 'kopie.dat'); Assign(Lees data, cfg_tijd_dir + 'Kopie.dat'); Reset(Lees data); Assign(Schrijf data, Bestandnaam); Rewrite(Schrijf data); Read(Lees_data,-Krwg); while begin K 1 K- 2 K- 3 W- I W- 2 W- 3
NOT EOF (Lees_data) do := KrWg.FI := KrWg.F2
:= KrWg.F3 := KrWg.SI := KrWg.S2
:= KrWg.S3
case Grafiek keuze of FISI begin if (help ptrA.krachtA.markering IN [M_Normaal, V_Begin, V_Einde]) then begin K 1 := help ptrA.krachtA.waarde + F_signaalA.Verplaatsing; InC(Aant kracht); end else K 1 := MAXINT; if (help ptr~.wegA.markering IN -[M_Normaal, V_Begin, V_Einde]) then begin W 1 := help ptrA.wegA.waarde Inc (Aant weg); end else W 1 := MAXINT; end; F2S2 begin if (help_ptr~.krachtA.markeringIN
- 96 -
F3S3
F2S1
F3S1
begin K 2 := help ptrA.krachtA.waarde + F_signaalA.verplaatsing; Inc(Aant kracht); end else K 2 := MAXINT; if (help ptrA.wegA.markering IN -[M_Normaal, V_Begin, V_Einde) then begin W 2 := help ptrA.wegA.waarde + S_signaalA.verplaatsing; Inc (Aant weg); end else W 2 := MAXINT; end; begin if (help ptrA.krachtA.markering IN -[M_NOrmaal, V_Begin, V_Einde) then begin K 3 := help ptrA.krachtA.waarde + F_signaalA.verplaatsing; InC(Aant kracht); end else K 3 := MAXINT; if (help ptrA.wegA.markering IN -[M_NOrmaal, V_Begin, V_Einde) then begin W 3 := help ptrA.wegA.waarde + S_signaalA.verplaatsing; Inc (Aant weg); end else W 3 := MAXINT; end; begin if (help ptrA.krachtA.markering IN -[M_Normaal, V_Begin, V_Einde) then begin K 2 := help ptrA.krachtA.waarde + F_signaalA.verplaatsing; Inc(Aant kracht); end else K 2 := MAXINT; if (help ptrA.wegA.markering IN -[M_Normaal, V_Begin, V_Einde) then begin W 1 := help ptrA.wegA.waarde + S_signaalA.verplaatsing; Inc (Aant weg); end else W 1 := MAXINT; end; begin if (help ptrA.krachtA.markering IN -[M_Normaal, V_Begin, V_Einde) then begin K 3 := help ptrA.krachtA.waarde + F_signaalA.verplaatsing; InC(Aant kracht); end else K 3 := MAXINT; if (help_ptrA.wegA.markering IN [M_Normaal, V_Begin, V_Einde) then begin W_l := help_ptrA.wegA.waarde Inc(Aant weg); end -
-
97 -
F1S2
F1S3
F2S3
F3S2
else W 1 := MAXINT; end; begin if (help ptrA.krachtA.markering IN -[M_Normaal, V_Begin, V_Einde]) then begin K 1 := help ptrA.krachtA.waarde + F_signaalA.verplaatsing; Inc(Aant kracht); end else K 1 := MAXINT; if (help ptrA.wegA.markering IN -[M_NOrmaal, V_Begin, V_Einde]) then begin W 2:= help ptrA.wegA.waarde + S_signaalA.verplaatsing; InC(Aant weg); end else W 2 := MAXINT; end; begin if (help ptrA.krachtA.markering IN -[M_NOrmaal, V_Begin, V_Einde]) then begin K 1 := help ptrA.krachtA.waarde + F_signaalA.verplaatsing; Inc(Aant kracht); end else K 1 := MAXINT; if (help ptrA.wegA.markering IN -[M_NOrmaal, V_Begin, V_Einde]) then begin W 3 := help ptrA.wegA.waarde + S_signaalA.verplaatsing; Inc (Aant weg); end else W 3 := MAXINT; end; begin if (help ptrA.krachtA.markering IN -[M_NOrmaal, V_Begin, V_Einde]) then begin K 2 := help ptrA.krachtA.waarde + F_signaalA.verplaatsing; Inc(Aant kracht); end else K 2 := MAXINT; if (help ptrA.wegA.markering IN -[M_NOrmaal, V_Begin, V_Einde)) then begin W 3 := help ptrA.wegA.waarde + S_signaalA.verplaatsing; Inc (Aant weg); end else W 3 := MAXINT; end; begin if (help ptrA.krachtA.markering IN -[M_Normaal, V_Begin, V_Einde]) then begin K 3 := help ptrA.krachtA.waarde Inc(Aant kracht); end else K_3 := MAXINT; if (help_ptrA.wegA.markering IN
- 98 -
begin W 2 := help ptrA.wegA.waarde + 5_signaal A.verplaatsing; Inc (Aant weg); end else W 2 := MAXINT; end; end; { case grafiek_keuze } KrWg.Fl := K 1; KrWg.F2 := K-2; KrWg.F3 := K-3; KrWg.51 := W-l; KrWg.52 := W=2; KrWg.53 := W 3; write(5chrijf data, KrWg); Verplaats pointer ver(help ptr, R_Vooruit, 1); read (Lees-data, KrWg); end; close(5chrijf data); close(Lees data); Dispose(help ptr); { verwijder-tijdelijk bestand } Verwijder_bestand(cfg_tijd_dir + 'Kopie.dat'); { Het ophalen van het aantal meetpunten van het orgineel. } Haal_aantal_meetpunten_op(Aant_record, cfg data dir + Persproef keuze + ,\,-+ Persproef_keuze + '.Amp'); case Grafiek keuze of F151 begin Aant record.Fl Aant-::record.51 end; F252 begin Aant record.F2 Aant - record.52 end; F353 begin Aant record.F3 Aant - record. 53 end; F251 begin Aant record.F2 Aant record.51 end; F351 begin Aant record.F3 Aant - record.51 end; F152 begin Aant record.Fl Aant - record. 52 end; F153 begin Aant record.Fl Aant - record. 53 end; F253 begin Aant record.F2 Aant - record. 53 end; begin F352 Aant record.F3
-
:= Aant kracht;
-
:= Aant _weg;
:= Aant kracht; := Aant -_weg; := Aant kracht; := Aant _weg; := Aant kracht; := Aant_weg;
:= Aant_kracht; := Aant_weg; := Aant kracht; := Aant _weg;
:= Aant kracht; := Aant_weg;
:= Aant_kracht;
:= Aant_weg;
:= Aant_kracht;
-
99
-
Aant record.52 := Aant weg; end; end; { case grafiek keuze } if (Persproef keuze[3] in [' A' •• ' Z " , a ' •• ' z' ]) then Bewaar aantal meetpunten(Aant record, cfg datal dir + Persproef keuze + ,\,-+ persproef_keuze + ':amp') else Bewaar_aantal_meetpunten(Aant_record, cfg datal dir + Persproef nieuw + ,\,-+ persproef_nieuw + ':amp'); end; { Externe procedure schrijf_ketting_in_bestand } Procedure Toon gegevens ( Kracht :Ketting ptr; Weg :Ketting_Ptr); begin write('Kracht : '); Kracht := Verplaats pointer(Kracht, R_Begin, 0); While (NOT (Kracht ~ Nil» do begin write(KrachtA.waarde); write(' '); case krachtA.markering of M normaal : write('Normaal'); V-begin : write('V begin'); V-einde : write('V-einde'); V-einde verwijder : write ('V einde v'); end; write (' '); Kracht := Verplaats pointer(Kracht, R_Vooruit, 1); end; writeln; write( 'Weg : '); Weg := Verplaats pointer(Weg, R_Begin, 0); While (NOT (Weg ~ Nil» do begin write(WegA.waarde); write (' '); case wegA.markering of M normaal write('Normaal'); V-begin write('V begin'); V-einde write('V-einde'); M-einde write ('M einde')i end; write (' '); Weg := Verplaats pointer(Weg, R_Vooruit, 1); end; end; { Externe Procedure Toon_gegevens } Procedure Verplaats_pointer_ver
var KrWg : KrachtWeg ptr; Waarheen : richting; Hoeveel : Integer );
begin KrWgA.kracht:= Verplaats pointer(KrWgA.kracht, Waarheen, Hoeveel); KrWgA.weg := Verplaats-pointer(KrWgA.weg, Waarheen, Hoeveel); end; { Externe procedure verplaats_pointer_ver } Procedure Haal_begin_pointers (var KW Richtingssoort begin kWA.kracht:= F_5ignaal A.Begin_Pointer; kwA.weg := 5 5ignaal A.Begin Pointer; Verplaats_pointer_ver(kw, richtIngssoort, 0); end; { Externe procedure haal_begin_pointers }
-
100 -
KrachtWeg ptr; Richting);
Procedure Haal Deelwaardes (Grafieksoort : grafiek; Integer); Var Deelwaarde_k, Deelwaarde w begin case Grafieksoort of FISI begin Val (Copy (Prf FI signaal, 3, 7 ), DeelWaarde k, DeelWaarde k); Val (Copy (prf:SI:signaal, 3, 5 ), Deelwaarde:w, DeelWaarde:W); end; F2S2 begin Val (Copy (Prf F2 signaal, 3, 7 ), DeelWaarde k, DeelWaarde k); Val (Copy (prf:S2:signaal, 3, 5 ), DeelWaarde:W, DeelWaarde:W); end; begin F3S3 Val (Copy (Prf F3 signaal, 3, 7 ), DeelWaarde k, DeelWaarde k); Val (Copy (Prf:S3:signaal, 3, 5 ), Deelwaarde:w, DeelWaarde:W); end; F2S1 begin Val (Copy (Prf F2 signaal, 3, 7 ), DeelWaarde k, DeelWaarde k); Val (Copy (Prf:SI:signaal, 3, 5 ), DeelWaarde:W, DeelWaarde:W); end; F3SI begin Val (Copy (Prf F3 signaal, 3, 7 ), DeelWaarde k, DeelWaarde k); Val (Copy (prf:Sl:signaal, 3, 5 ), Deelwaarde:w, Deelwaarde:W); end; FIS2 begin Val (Copy (Prf Fl signaal, 3, 7 ), DeelWaarde k, DeelWaarde k); Val (Copy (prf:S2:signaal, 3, 5 ), Deelwaarde:w, DeelWaarde:W); end; FIS3 begin Val (Copy (Prf FI signaal, 3, 7 ), DeelWaarde k, DeelWaarde k); Val (Copy (Prf:S3:signaal, 3, 5 ), Deelwaarde:w, DeelWaarde:W); end; F2S3 begin Val (Copy (Prf F2 signaal, 3, 7 ), DeelWaarde k, DeelWaarde k); Val (Copy (Prf:S3:signaal, 3, 5 ), Deelwaarde:w, Deelwaarde:W); end; F3S2 begin Val (Copy (Prf F3 signaal, 3, 7 ), DeelWaarde k, DeelWaarde k); Val (Copy (Prf:S2:signaal, 3, 5 ), Deelwaarde:W, Deelwaarde:W); end; end; { case grafiek_keuze } end; { Externe procedure haal_deelwaardes } Procedure Markeer begin punt (Huidige ptr Var help_ptr : Krachtweg_ptr; -
KrachtWeg_Ptr);
begin New(help ptr); Haal_begIn_pointers(help_ptr, R_begin); { markeer huidige kracht en weg als begin } if «Huidige_ptrA.krachtA.markering = M Normaal) AND (Huidige ptrA.wegA.markering = M Normaal» then begin Huidige_ptrA.krachtA.markering := V begin; Huidige_ptrA.wegA.markering := V=begin; Bewerkings tabel[l] := True;
~;
-
While (NOT «help_ptrA.krachtA.markering = V begin) AND (help_ptrA.wegA.markering v_begin») do begin with help ptr A do begin if «krachtA.markering = M normaal) AND (wegA.markering = M_normaal» then
- 101 -
begin krachtA.markering := V BEGIN VERWIJDER; wegA.markering := V:BEGIN:VERWIJDER; end; { if •••••• } end; { with help ptr A } Verplaats pointer ver(help ptr, R_Vooruit, 1); end; { while NOT •• : ••• } Dispose(help ptr); end; { Externe Procedure Markeer_begin_punt } Procedure Markeer eind punt (Huidige ptr : KrachtWeg_ptr); Var help_ptr : KrachtWeg_Ptr; begin New(help_ptr); { markeer huidige kracht en weg als einde } if «Huidige ptrA.krachtA.markering = M Normaal) AND (Huidige ptrA.wegA.markering = M Normaal» then begin Huidige ptrA.krachtA.markering := V einde; Huidige-ptrA.wegA.markering := V-einde; { door-geven dat er een bewerking Is genaakt } Bewerkings tabel[2] := true; end; { verplaats pointers naar laaste records } Haal_begin_pointers(help_ptr, R_Einde); { verplaats pointer } While (NOT «help ptrA.krachtA.markering = V einde) AND (help:ptrA.wegA.markering v_einde») do begin with help ptr A do begin if «krachtA.markering = M normaal) AND (wegA.markering = M normaal» then begin krachtA.markering := V EINDE VERWIJDER; wegA.markering := V:EINDE:VERWIJDER; end; { if •••••• } end; { with help ptr A } Verplaats pointer ver(help ptr, R_Achteruit, 1); end; { While not •• :.} Dispose(help ptr); end; { Externe procedure markeer_eind punt } Procedure Markeer wissen(Huidige ptr : KrachtWeg ptr); begin Markeer verwijdering(Huidige ptrA.kracht); Markeer-verwijdering(Huidige-ptrA.weg); { Hoog-de teller op die bijhoudt hoeveel er gemarkeerd staan als gewist } Inc(Tel wis); Bewerkings tabel[3] := True; end; { Externe procedure markeer_wissen } procedure Herstel markering(Huidige ptr : KrachtWeg ptr; var Markeer soort : markeringstypen); begin case (Huidige_ptrA.krachtA.markering) of M verwijdering begin Huidige ptrA.krachtA.markering := M Normaal; Huidige-ptrA.wegA.markering := M:Normaal; Markeer:soort := M_verwijdering;
- 102 -
V einde
end; begin Herstel Begin punt(Huidige ptr); Markeer-soort-:= V begin; end; begin Herstel Eind punt(Huidige ptr); Markeer-soort := V einde;end; -
V BEGIN VERWIJDER, V-EINDE-VERWIJDER : Waarschuwingstoon; end; { case Huidige ptrA.krachtA.markering} end; {Externe procedure Herstel_markering} end. { Einde Unit Ketting_Ver }
- 103 -
unit RIES FS.PAS
3.9
{***************************************************************************} {*
{* {* {*
*}
unit Versie Functie
Kies FS 1.0 Bevat routines voor het selecteren van een van de zich in de persproef-directory bevindende persproeven.
{*
{* {* {* {* {* {* {*
{* {* {* {* {* {*
Taal Systeemeisen Auteur Aanmaakdatum Datum laatste wijziging
Borland Turbo Pascal versie 6.0 IBM compatible XT of hoger EGA of VGA grafische kaart R.J.J. de Coninck 12 november 1993 17 januari
1994
*} *} *} *} *} *}
*} *} *} *} *}
Copyright (C)
Technische Universiteit Eindhoven, Laboratorium voor Omvormtechnologie.
*} *} *}
Gebruikt in
Persproef-Analyse Programma versie 2.00 Verwerking-gedeelte
*} *} *}
{* {* {* {*
*} *} *}
*}
{***************************************************************************}
{***************************************************************************} Declaratie-gedeelte
{*
*}
{***************************************************************************}
Interface
uses { Run-time lib } Crt, Dos, { Library } Definit, KeyCodes, Diskf 2, Layout, Cursor, Geluid, Invoer, Menu, vraag IN V, Vid buff, P PGG IO, - { Verwerking } Scherm V, Meld V, Fout V, Inst PRV, Inst PGG, Inst_AMP, Type=ver, Diskio_V, Orgineel, Ket_Ver; Procedure Kies_fs_kromme; {*
In Functie
Selecteert een van de zich in de persproef-directory bevindende persproeven. Daarna zal de de grafiek worden gekozen en de gegevens van de persproef zullen in het geheugen worden gezet.
Out *}
Procedure Verwissel_Data(Directories, Persproef : integer); {*
In
: Directories -> 0 -> maakt cfg data dir gelijk aan cfg data1-dir.1 -> herstelt cfg_data_dir. Persproef
Functie
-> 0 -> persproef niet wisselen. 1 -> persproef wel wisselen. Deze procedure verwisselt de twee directories. Tevens bestaat er de mogeljkheid om de persproef_keuze te vervangen door persproef_nieuw.
Out *}
- 104 -
Function Controleer_set_aanwezig ( Pers_dir : string): Boolean; {*
In Functie Out
Pers dir -> is de subdirectory waarin de bestanden dienen te worden gecontroleerd. Controleren of alle benodigde bestanden aanwezig zijn. False -> indien ze aanwezig zijn True -> indien de set niet compleet is.
*}
Function Bepaal_extensie
string;
{*
In Functie Out
Bepalen van de de extensie voor de grafiek gevens store. De extensie van de grafiek gegevens store
*}
{***************************************************************************} Implementatie-gedeelte
{*
*}
{***************************************************************************}
Implementation
type {*** Pointer voor het koppelen van de persproef-selectierecords ***} Persproefpointer = ARG_selecteer_persproefrecord;
{*** Selecteer persproefrecord (repeating group) ***} RG_Selecteer_persproefrecord = Record Naam String[8]; Materiaalsoort String[40]; Werkstoffnummer String[40]; Herkomst materiaal String[40]; Plaatdikte String[40]; Aantal meetpunten aantalrecord; Datum String[8]; Reeds verwerkt Boolean; Merk pers string[40]; { Verbinding lijst-elementen } Volgende persproef Persproefpointer; Vorige persproef : Persproefpointer; end; {*** Definitie Selecteer trekproef store ***} Def_selecteer_perspr_store = Record Eerste persproef Laatste persproef end; -
Persproefpointer; Persproefpointer;
var Selecteer persproef store Actuele_persproef -
Def selecteer perspr store; persproefpointer; -
{*** Interne functies en procedures ***} Procedure Init_Bestand_info_store; {*
In Functie Uit
Maakt Bestand info store klaar voor gebruik.
*}
begin with Selecteer persproef store do begin Eerste persproef := NIL; Laatste_persproef := NIL;
- 105 -
end; Actuele persproef := NIL; end; { Interne procedure Init_selecteer_trekproef_store } Procedure Verwijder_Bestand_info_store; {*
In Functie Uit
Verwijdert de Bestand info store uit het geheugen.
*}
var Hulppointer : Persproefpointer; begin with 5electeer persproef store do begin Actuele persproef := Eerste persproef; while (Kctuele persproef <>-NIL) do begin Hulppointer := Actuele persproefA.Volgende persproef; Dispose(Actuele persproef); Actuele persproef := Hulppointer; end; end; end; { Interne procedure Verwijder_Bestand_info_store } Procedure Bepaal Niet actieve menu; {*
-
In Functie
-
-
Het bepalen welke menu-item's bij de grafiekkeuze niet actief mogen zijn.
Out *}
begin { Bepaal welke krachten actief zijn } if (Prf F1 signaal[l) = '0') then begin Maak item inactief(l); Maak-item-inactief(6); Maak-item-inactief(7); end; if (Prf F2 signaal[l) = '0') then begin Maak item inactief(2); Maak-item-inactief(4); Maak-item-inactief(8); end; if (Prf F3 signaal[l) = '0') then begin Maak item inactief(3); Maak-item-inactief(S); Maak-item-inactief(9); end; { Bepaal welke wegen actief zijn. } if (Prf 51 signaal[l) = '0') then begin Maak item inactief(4); Maak-item-inactief(S); end; if (Prf 52 signaal[l) = '0') then begin -
- 106 -
Maak item inactief(6); Maak-item-inactief(9); end; if (Prf 53 signaal[lJ = '0') then begin Maak item inactief(7); Maak-item-inactief(8); end; { Laat menu nu zien } Toon menu; end; {Interne Procedure Bepaal_Niet_actieve_menu } Function Bereken groote persproef: Longint; {*
- -
In Functie Out
Berekend de groote van de gekozen persproef. De grootte van de persproef.
*}
array[l •• 6J of string = (' .DAT', , .PRV', , .V5T', , •VAR' , , • AMP', '. PGG' ) ;
Const Tabel Var Teller Totaal
Integer; Longint; file of Byte;
F
begin Totaal := 0; teller := 1; While (Teller <= 6) do begin Assign(F, Cfg data dir + PersProef keuze + ' \ ' + PersProef keuze + Tabel[tellerJ); Reset (F); Totaal := Totaal + Filesize(F); Close(F); Inc(teller); end; Bereken groote persproef := Totaal; end; {Interne function Bereken_groote_persproef} Function Bepaal opslag : Boolean; {*
-
In Functie Out
Controleerd of er genoeg plaats is voor het wegschrijven van de evntueel te verwerken persproef. True -> indien er genoeg plaats is voor het wegschrijven van de persproef. False -> indien er niet genoeg plaats is voor het wegschrijven van de persproef.
*}
Const { Ruimte die ongeveer nodig voor negen grafiekgegevens stores plus de store origineel } GRAFIEK RUIMTE = 1000; var
Vrije ruimte, BenodIgde ruimte, Persproef=grootte
Longint;
begin Persproef grootte:= Bereken groote persproef; { 2 * Persproef grootte, een keer-voor het origineel en een voor de bewerkte persproef } Benodigde ruimte := (2 * Persproef grootte) + GRAFIEK RUIMTE; Vrije_ruimte:= Bepaal vrije ruimteTcfg datal dir[lJ);if (Benodigde_ruimte < Vrije_ruimte) then -
- 107 -
Bepaal opslag:= True else Bepaal opslag:= False; end; { Interne function Bepaal_opslag } Function Controleer aantal gelijk (Soort {*
Grafiek): Boolean;
- -
In Functie Out
Soort -> om welke grafiek het gaat. Controleert of het aantal van de kracht gelijk is aan het aantal van de weg. True -> Indien ze gelijk zijn. False -> Indien ze niet gelijk zijn.
*}
Var Aantal Pnt Ver gelijkl, Ver-gelijk2 Toestand Einde functie
AantalRecord; Integer; Toestandtype; Boolean;
begin Einde functie := False; while-(NOT Einde functie) do begin { ophalen van het aantal meetgegevens } Toestand := ControleerDiskIO( Cfg data dir + PersProef keuze, Lezen); if (Toestand IN [Annuleren, Fatalefout) then Einde functie := True else begin if (Bestand aanwezig(Cfg data dir + PersProef keuze + ' \ ' + PersProef_keuze + '.AMP') then begin Haal_aantal_meetpunten_op (Aantal Pnt ,Cfg data dir + PersProef keuze + ,\,-+ PersProef keuze + '.AMP'); case Soort of FlSl begin Ver gelijkl := Aantal pnt.Fl; Ver-gelijk2 := Aantal=pnt.Sl; end; F2S2 begin Ver gelijkl := Aantal pnt.F2; Ver-gelijk2 := Aantal:pnt.S2; end; F3S3 begin Ver gelijkl := Aantal pnt.F3; Ver-gelijk2 := Aantal=pnt.S3; end; F2Sl begin Ver gelijkl := Aantal pnt.F2; Ver-gelijk2 := Aantal=pnt.Sl; end; F3Sl begin Ver gelijkl := Aantal pnt.F3; Ver-gelijk2 := Aantal:pnt.Sl; end; FlS2 begin Ver gelijkl := Aantal pnt.Fl; Ver-gelijk2 := Aantal:pnt.S2; end; FlS3 begin Ver gelijkl := Aantal pnt.Fl; Ver-gelijk2 := Aantal:pnt.S3; end; F2S3 begin Ver gelijkl := Aantal pnt.F2; ver:gelijk2 := Aantal=pnt.S3;
- 108 -
end; begin Ver gelijkl := Aantal pnt.F3; Ver-gelijk2 := Aantal=pnt.S2; end; F_geen begin Ver gelijkl := 1; Ver-gelijk2 := 2; end; end; { einde case Soort } Einde functie := True; if (Ver gelijkl) = (Ver gelijk2) then begin Controleer aantal gelijk := True; end -else begin Controleer aantal gelijk := False; end; end; {einde if Bestand aanwezig } end; {Einde If toestand.: •• } end; { Einde while not Einde functie } end; { Interne function Controleer_aantal_gelijk } F3S2
Function Tel aantal persprf: Integer; {* In :Functie : Tel het aantal aanwezige persproeven in de data directory. Retourneert het aantal persproeven. Out *}
Var Dir Info, File Info NaamTel_persprf
SearchRec; String[12]; Integer;
begin Tel persprf:= 0; Naam := " ; FindFirst(Cfg data dir + 'PF*', Directory, Dir_info); While DosError = O-Do begin While (Dir info. Name <> Naam) do begin if (NOT (Controleer set aanwezig Dir_info.Name») then Inc(Tel persprf); Naam := Oir info. Name; FindNext(Dir Info); end; end; Tel aantal persprf:= Tel persprf; end; { Interne-function Tel_aantal_persprf } Function Toevoegen Persproef: Persproefpointer; {*
-
In Functie Uit
Voegt een Selecteer persproef-record toe. Retourneert een pointer naar het toegevoegde record.
*}
begin with Selecteer Persproef store do begin { Controleer of Selecteer persproef store leeg is } if (Eerste_persproef = NIL) then -
- 109 -
begin New(Actuele Persproef); Eerste persproef := Actuele persproef; Laatsta persproef := Eerste-persproef; Eerste persproefA.Vorige persproef := NIL; Eerste-persproefA.Volgende persproef := NIL; end else begin { Selecteer persproef store bevat reeds persproeven } New(Actuele persproef); Laatste persproefA.Volgende persproef := Actuele persproef; Actuele-persproefA.Vorige persproef := Laatste:persproef; Actuele-persproefA.Volgende persproef := NIL; Laatste-persproef := Actuele persproef; end; end; { Retourneer pointer naar toegevoegde record } Toevoegen persproef := Actuele persproef; end; { interne functie Toevoegen:persproef } Function Ga naar eerste persproef: persproefpointer; {*
-
In Functie Uit
-
-
Gaat naar de eerste persproef in de Bestand_info_store. Retourneert: - pointer naar eerste persproef, indien persproeven aanwezig in Bestand info store.; - NIL, indien geen persproeven-aanwezig.
*}
begin with Selecteer persproef store do begin if (Eerste persproef = NIL) then Ga naar aerste persproef := NIL elsebegin Actuele persproef := Eerste persproef; Ga naar-eerste persproef :=-Eerste persproef; end;end; end; { Interne functie Ga naar eerste_persproef } Function Ga_naar_volgende_persproef: persproefpointer; {*
In Functie Uit
Gaat naar eerstvolgende persproef in Bestand info store. Retourneert: - pointer naar het record volgend op-het in Actuele persproef aangegeven record, indien het einde van de lijst nog niet bereikt is; - NIL, indien geen persproeven aanwezig zijn of het einde van de lijst bereikt is.
*}
begin if (Actuele_persproef <> NIL) then begin if (Actuele persproefA.Volgende persproef <> NIL) then begin { Einde van de lijst nog niet bereikt } Actuele persproef := Actuele persproefA.Volgende persproef; Ga naar-volgende persproef :~ Actuele persproef;end else { Einde van de lijst bereikt } Ga_naar_volgende_persproef := NIL;
- 110
end else { Geen persproeven in de lijst aanwezig } Ga naar volgende persproef := NIL; end; {-Interne functIe Ga_naar_volgende_persproef } Function Ga naar vorige persproef: persproefpointer; {*
-
In Functie Uit
-
-
Gaat naar voorgaande persproef in Bestand_info_store. Retourneert: - pointer naar het record voorafgaand op het in Actuele persproef aangegeven record, indien het begin van de lijst nog niet bereikt is; - NIL, indien geen persproeven aanwezig zijn of het begin van de lijst bereikt is.
*}
begin if (Actuele persproef <> NIL) then begin if (Actuele persproefA.Vorige persproef <> NIL) then begin { Begin van de lijst nog niet bereikt } Actuele persproef := Actuele persproefA.Vorige persproef; Ga naar-vorige persproef := Actuele persproef;end else { Begin van de lijst bereikt } Ga_naar_vorige_persproef := NIL; end else { Geen persproeven in de lijst aanwezig } Ga naar vorige persproef := NIL; end; {-Interne functie Ga_naar_vorige_persproef } Procedure {*
In Functie
Leest alle Proef-randvoorwaarden gegevens van alle in de persproef-directory voorkomende persproeven in de Bestand info store.
Uit *}
var Dummy Aantal persproeven Proef teller Dir info, File info Proetpointer Naam_proef
Char; Integer; Integer; SearchRec; persproefpointer; String;
begin { Opvragen van het aantal persproeven } Aantal persproeven := Tel aantal persprf; Proef_teller := 1; { Lees eerste directory } FindFirst(Cfg data dir + 'PF*', Directory, Dir_info); while (DosError = 0) do begin if (NOT (Controleer set aanwezig (Dir info.Name») then begin Proefpointer := Toevoegen persproef; Lees Proef Randvoorwaarden(Cfg data dir + Dir info.Name + ' \ ' + Dir info.Name + '~PRV');
-
111 -
with proefpointer A do begin Naam := Dir info.name; Materiaalsoort := PRV materiaalsoort; Werkstoffnummer := PRV-werkstofnummer; Herkomst materiaal := PRV-herkomst materiaal; Plaatdikte := PRV-sO; Haal aantal meetpunten op(Aantal meetpunten, cfg data dir + dir info.name + ' \ ' +-Dir Info.Name + , :-amp' ) ; Datum := PRV datum; := Bestand aanwezig(cfg data dir + dir info. name Reeds verwerkt + ' \ ' + Dir info:-Name-+ '.F?S'); := PRV_type_pers; Merk pers end; GotoXY(13, 8); Write(Round«Proef teller/Aantal persproeven) * 100):3); Inc(Proef teller); Delay(500); end; FindNext(Dir info); end; { einde-while Doserror } De1ay(1000); end; { Interne procedure Vul_selecteer_persproef_store } Procedure Persproef_window; {*
In Functie
Maakt de persproef-window (het schermgebied waar alle namen van de persproeven worden opgesomd) actief.
Uit *}
begin Window(6, 8, 15, 17); end; { Interne procedure persproef_window } Procedure Gegevens_window(Proefpointer: persproefpointer); {*
In Functie
Proefpointer -> pointer naar de proef waarvan de bijbehorende gegevens moeten worden getoond; Maakt de gegevens-window (het schermgebied waar de bijbehorende persproefgegevens worden getoond) actief.
Uit *}
begin Window(26, 8, 76, 16); TextColor(KL SLC VOORGROND); ClrScr; -GotoXY(4, GotoXY(4, GotoXY(4, GotoXY(4, GotoXY(4, GotoXY(4, GotoXY(4, GotoXY(4, GotoXY(4,
1); 2); 3); 4); 5); 6); 7); 8); 9);
Write ( 'Naam Write('Materiaalsoort Write('Werkstof-Nummer Write('Herkomst materiaal Write('Plaatdikte Write('Aantal meetparen Write('Datum Write('Proef reeds verwerkt Write('Merk pers
: : : :
'); '); ' );
'); mm. ' ) ;
' : ' : ' : ' :
{ Toon bijbehorende gegevens } TextColor(KL SLC VOORGR ACC); with ProefpoInter A do begin GotoXY(28, 1); Write(Naam);
- 112 -
) ) ) )
; ; ; ;
GotoXY(28, GotoXY(28, GotoXY(28, GotoXY(28, GotoXY(28,
write(Materiaalsoort); Write(Werkstoffnummer); Write(Herkomst materiaal); 5); Write(Plaatdikte); 6) ; Write(Aantal meetpunten.F1, , , Aantal-meetpunten.F2, Aantal-meetpunten.F3, , Aantal-meetpunten.S1, Aantal-meetpunten.S2, , Aantal-meetpunten.S3, , '); GotoXY(28, 7); Write (Datum); GotoXY(28, 8); if (Reeds verwerkt) then Write ( 'Ja' ) else Write ( 'Nee'); GotoXY(28, 9); Write(Merk_pers); end; TextColor(KL SLC VOORGROND); end; { Interne-procedure Gegevens_window } 2) ; 3) ; 4) ;
Procedure Selecteer_persproef(var Geselecteerde persproef: string; var Afbreken Boolean); {*
In Functie Uit
Selecteert een persproef uit de Selecteer_persproef_store. Geselecteerde persproef -> naam van de geselecteerde persproef; Afbreken -> True, indien selectieprocedure afgebroken; False, indien selectie succesvol uitgevoerd.
*}
Const {*** Max. aantal proeven die tegelijkertijd in het persproef-window kunnen worden getoond ***} WINDOW_LENGTE = 10; var Y crd Proefpointer Hulppointer Einde selectie DummySp_toets
Integer; persproefpointer; persproefpointer; Boolean; String; Char;
begin TextBackground(KL SLC ACHTERGROND); TextColor(KL_SLC_VOORGROND); { Vul de persproef-window met persproef-namen } persproef window; Proefpointer := Ga naar eerste persproef; Y crd : = 1; while «Y crd <= WINDOW LENGTE) AND (Proefpointer <> NIL» begin GotoXY(2, Y crd); ClrEol; GotoXY(2, Y-crd); Write(ProefpointerA.Naam); Proefpointer := Ga naar volgende persproef; Inc(Y crd); end; Y crd := 1; { Positie eerste persproef in de window } Proefpointer := Ga_naar_eerste_persproef; Einde selectie := False; while-(NOT Einde selectie) do begin -
- 113 -
do
{ Toon selectiebalk } persproef window; GotoXY(2,-Y crd); WriteACC(ProefpointerA.Naam, KL SLC VOORGR ACC, KL_SLC_BALK); { Toon bijbehorende gegevens }Gegevens_window(Proefpointer); { Lees invoer } Leesveld(Dummy, " , Invoer string, 0, 1, 1, Onzichtbaar, sp_toets); case Sp toets of begin ESCAPE Einde selectie := True; Afbreken := True; Geselecteerde persproef :="; end; ENTER
begin if (ProefpointerA.Materiaalsoort <> 'niet gevonden') then begin Geselecteerde persproef := ProefpointerA.Naam; Einde selectie := True; end else Waarschuwingstoon; end;
EK CURSOR UP
begin persproef window; GotoXY(2,-Y crd); Write(ProefpointerA.Naam); Hulppointer-:= Proefpointer; Proefpointer := Ga naar vorige persproef; if (Proefpointer <> NIL) then begin { Begin lijst nog niet bereikt } if (Y crd = 1) then begin{ Scroll window 1 regel omlaag } GotoXY(l, 1); InsLine end else { Ga 1 regel omhoog in window } Dec(Y_crd); end else begin { Begin van de lijst reeds bereikt } Proefpointer := Hulppointer; Waarschuwingstoon; end; end;
EK CURSOR DOWN
begin persproef window; GotoXY(2,-Y crd); Write(ProefpointerA.Naam); Hulppointer-:= Proefpointer; Proefpointer := Ga naar volgende persproef; if (Proefpointer <> NIL) then begin { Einde lijst nog niet bereikt } if (Y crd = WINDOW LENGTE) then begin{ Scroll window 1 regel omhoog } GotoXY(l, 1); DelLine; end else
- 114 -
{ Ga 1 regel omlaag in window } Inc(Y_crd); end else begin { Einde van de lijst reeds bereikt } Proefpointer := Hulppointer; Waarschuwingstoon; end; end; else Waarschuwingstoon; end; end; end; { Interne procedure Selecteer_persproef } Procedure Lees_Persproef(var Afbreken: Boolean); {*
In Functie Uit
Afbreken, of gebruiker procedure afbreekt. Selecteert een persproef uit de persproef-directory. Afbreken -> True, indien de gebruiker deze procedure afbreekt via de <Esc> toets of indien een foutsituatie is ontstaan; False, indien deze procedure succesvol beeindigd.
*}
var Antwoord, Dummy Geselecteerde proef Toestand Einde_Lees_persproef
Char; String; Toestandtype; Boolean;
begin Einde Lees persproef := False; { voerbereiden data meetgegevens store } Verwijder twee ketting; Init twee-kettIng; Reset omgevings variabelen; { Toen voortgang-window } Dummy := Toon melding(M039, Niet herstellen, MW_geen); GotoXY(13, 8); Write(' 0'); Textcolor(KL_MLD_VOORGR_ACC); while (NOT Einde Lees persproef) do begin -Toestand := ControleerDiskIO( Cfg data dir ,Lezen); if (Toestand IN [Annuleren, Fatalefout]) then begin afbreken := True; Einde Lees persproef := True; end else begin if (Tel aantal persprf = 0) then begin Antwoord := Toon fout(F040, Herstellen, FW_enter_escape); if (Antwoord = Escape) then begin Afbreken := True; Einde Lees persproef := True; end; end else begin Init Bestand info store; Vul Hestand Info store; Toon schermTs121A); Selecteer_persproef(Geselecteerde_proef, Afbreken);
- 115 -
{ Vullen van de PersProef Keuze store volgens ontwerp } PersProef Keuze := Geselecteerde proef; Verwijder-Bestand info store; Einde Lees persproef:=-True; end; end; end; {einde while not Einde Lees persproef} end; { Interne Procedure Lees:persproef } Procedure Lees_grafiek_keuze (var Afbreken: Boolean); {*
In Functie Uit
Afbreken, of gebruiker procedure afbreekt. Selecteert een de grafiek die de gebruiker wilt. Afbreken -> True, indien de gebruiker deze procedure afbreekt via de <Esc> toets of indien een foutsituatie is ontstaan; False, indien deze procedure succesvol beeindigd.
*}
Var Menukeuze Dummy, Einde_Keuze, Gelijk Antw Toestand Einde lees grafiek keuze Perscode -
CHAR; Boolean; Antwoord; Toestandtype; Boolean; String;
begin Toon Scherm(S121B); Bewaar scherm; Menukeuze := Toon_melding(M040, Niet_herstellen, MW_geen); Einde lees grafiek keuze := False; While-(NOT-Einde lees grafiek keuze) do begin Toestand := ControleerDiskIO(Cfg data dir + PersProef keuze , Lezen); { Haal proefinstellingen bij de-geselcteerde persproef } if (Toestand IN [Annuleren, FatalefoutJ) then begin afbreken := True; Einde Lees_grafiek_keuze := True; end else begin If (Bestand Aanwezig(Cfg data dir + PersProef keuze + '\' + persproef_Keuze + '.Pgg'» then begin dummy := Lees proefinstellingen(Cfg data dir + PersProef keuze + '\' + Persproef Keuze + '.Pgg'); Einde Keuze := False; Delay(lOO); Herstel scherm; { Ga na welke grafieken niet mogen worden gemaakt, d.w.z. als er bepaalde Krachten of Wegen niet zijn gemeten. } Bepaal Niet actieve menu; While (NOT Einde keuze) do begin Menukeuze := Lees menukeuze; while (Menukeuze ~ EK Fl) do {Afhandelen evt. helpboodschap } begin Waarschuwingstoon; Menukeuze := Lees menukeuze; end; { Verwerk menukeuze } case Menukeuze of
- 116 -
, l'
begin gelijk := Controleer aantal gelijk(FlSl); Grafiek Keuze := FlSI; end;
, 2'
begin gelijk := Controleer aantal gelijk(F2S2); Grafiek Keuze := F2S2; end;
'3'
begin gelijk := Controleer aantal gelijk(F3S3); Grafiek Keuze := F3S3; end;
, 4'
begin gelijk := Controleer aantal gelijk(F2Sl); Grafiek Keuze := F2SI; end;
'5'
begin gelijk := Controleer aantal gelijk(F3Sl); Grafiek Keuze := F3SI; end;
, 6'
begin gelijk := Controleer aantal gelijk(FlS2); Grafiek Keuze := FlS2; end;
'7'
begin gelijk := Controleer aantal gelijk(FlS3); Grafiek Keuze := FlS3; end;
'8'
begin gelijk := Controleer aantal gelijk(F2S3); Grafiek Keuze := F2S3; end;
, 9'
begin gelijk := Controleer aantal gelijk(F3S2); Grafiek Keuze := F3S2; end;
Escape
begin Afbreken := True; Einde keuze := True; Einde-lees grafiek keuze := True; end; end; { einde case menukeuze } if (NOT Afbreken) then begin if (Gelijk) then begin Afbreken := False; Einde keuze := True; Einde=lees_grafiek_keuze := True; end else begin Antw := Toon vraag jn('Deze grafiek kan niet worden gemaakt. " 'Wilt u dat de orginele persproef wordt', 'opgehaald (J/N) :', 3 , Herstellen); if (Antw = Ja) then begin
- 117 -
Lees_orginele_persproef(perscode, Cfg_data_dir + PersProef keuze + '\' + PersProef Keuze + '.ORG'); PersProef Keuze :=-Perscode; Afbreken := False; Einde keuze := True; Einde-Iees grafiek keuze := True; end; end; { if gelijk •••• } end; {if not afbreken} end; {While Einde keuze} end { Niet dummy } else begin Afbreken := True; Einde lees grafiek keuze := True; end; {eInde If bestand aanwezig } end; {einde else if Toestand} end; {einde While (NOT Einde lees grafiek keuze) } end; {Interne procedure Lees_grafiek_keuze }
{*** Externe functies en procedures ***} Procedure Verwissel Data(Directories, Persproef begin case Directories of o : begin if (Tel aantal wissels = 0) then begin Data dir old := Cfg data dir; Cfg data-dir := cfg-dataI dir; end; -InC(Tel aantal wissels); end; begin 1 Cfg data dir := Data dir old; Tel-aantal wissels :~ 0;end; end; if «Persproef = 1) AND (PersProef nieuw <> "» PersProef keuze := PersProef nieuw; end; { Externe procedure verwissel_Data } Function Controleer_set_aanwezig Pers dir var Afwezig Boolean; File info SearchRec; TabeI array [1 •• 6] of Boolean; tel integer; FileNaam string[3];
integer) ;
then
string): Boolean;
begin Afwezig := False; { Maak tabel geheel false } For tel:= 1 to 6 do Tabel[tel] := False; FindFirst(Cfg Data dir + Pers dir + '\*.*', Archive, File_info); While ( Doserror =-0 )do begin if (POS('.', File info.Name) <> 0) then begin FileNaam := Copy (File_info.Name, Pos('.',File_info.name) + 1, 3) end else begin FileNaam := File_info.Name;
- 118 -
end; if if if if if if
(FileNaam (FileNaam (FileNaam (FileNaam (FileNaam (FileNaam
= 'DAT' ) then = 'AMP' ) then = 'PRV' ) then 'PGG' ) then 'VST' ) then = 'VAR' ) then
FindNext(File_info); end; { while doserror = 0
tabel[l] tabel[2] tabel[3] tabel[4] tabel[S] tabel[6]
:= true; := true;
:= true; := true; := true; := true;
}
{ controleer of alle bestanden aanwezig zijn } For tel:= 1 to 6 do begin if (Tabel[tel] = False) then begin Afwezig := True; end; end; Controleer set aanwezig:= Afwezig; end; { Externe function Controleer_set_aanwezig } Function Bepaal_extensie : string; var extensie : string; begin case Grafiek keuze of FlSl begin extensie := '.FlS'; end; F2S2 begin extensie := '.F2S'; end; F3S3 begin extensie := '.F3S'; end; F2Sl begin extensie := '.F4S'; end; F3Sl begin extensie := '.FSS'; end; FlS2 begin extensie := '.F6S'; end; FlS3 begin extensie := '.F7S'; end; F2S3 begin extensie := '.FaS'; end; F3S2 begin extensie := '.F9S'; end; end; { case grafiek keuze of } Bepaal extensie := extensie; end; { Externe functie bepaal extensie } Procedure Kies fs kromme; Var Afbreken, dummyl Boolean; Char; dummy Ant Antwoord; Toestand Toestandtype;
- 119 -
Extensie, dummy_str
: String;
begin Afbreken := False; dummy str := " ; Toon scherm(S121); if (PersProef keuze <> ") then begin Ant := Toon_vraag_jn ('Wilt u met deze persproef doorgaan', , (J/N) ?', " , 2, Herstellen); if (Ant = Nee) then begin if (Tel aantal wissels <> 0) then Verwissel data(l, 0); Lees Persproef(Afbreken); end else begin { voorbereiden data meetgegevens store } Verwijder twee ketting; Init twee-kettTng; Reset omgevings variabelen; end; end else begin Lees_Persproef(Afbreken) end; if (NOT Afbreken) then Lees grafiek keuze(Afbreken); if (NOT Afbreken) then begin { Controleer of er genoeg plaats is om de evntueel bewerkte persproef weg te schrijven } dummyl := Bepaal opslag; if (NOT dummyl) then Toon melding(M05l, Herstellen, Mwenter); Toestand := ControleerDiskIO(Cfg data dir + PersProef Keuze, Lezen); if (Toestand IN [LezenOk, SchrijvenOkT) then begin { Kijken of de gekozen grafiek bestaat en zoja het ophalen van de grafiek gegevens } Extensie := Bepaal extensie; if (Bestand aanwezTg(Cfg data dir + Persproef Keuze +'\' + persproef_Keuze + Extensie» then begin dummyl := Lees grafiek gegevens (Cfg data dir + Persproef Keuze +'\' + Persproef Keuze Extensie); if (Persproef keuze[3) in ['A' •• 'Z', 'a' •• 'z') then Lees orginele persproef(dummy str, Cfg data dir + Persproef Keuze + ' \ ' + Persproef Keuze + '.ORG');Origineel Ver := dummy str; Grafiek bestaat:= True;end; dummy := Toon melding(M04l, Niet Herstellen, MW Geen); Lees bestand Tn ketting(Cfg data-dir + PersProef Keuze + '\' + PersProef Keuze + '.DAT'); { Laat melding minimaal 1 seconde-zien } Delay(lOOO); end; end; end; {Externe procedure Kies fs kromme } end. { Unit Kies_FS}
+
- 120 -
3.10 unit HELD V.PAS {***************************************************************************} {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {*
unit Versie Functie
MELD V 1.0 Bevat a1le scherm-meldingen die in het verwerkings gedeelte van het Persproef-Analyse Programma gebruikt worden.
Taal Systeemeisen Auteur Gewijzigd door Aanmaakdatum Datum laatste wijziging
Borland Turbo Pascal versie 6.0 EGA of VGA grafische kaart R.J.J. de coninck
Copyright (C)
Technische Universiteit Eindhoven, Laboratorium voor Omvormtechnologie.
Gebruikt in
Persproef-Analyse Programma versie 2.00 Verwerking
19 augustus 1993 19 januari
1994
*} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *}
{***************************************************************************}
{***************************************************************************} Declaratie-gedeelte
{*
*}
{***************************************************************************}
Interface
Uses { Run-time lib } Crt, Dos, { Library } Layout, Definit, Invoer, KeyCodes, Vid_buff, Cursor, Geluid, {Verwerking } Fout_V, Type_ver; Type {*** Melding-identificatiecodes ***} Melding id type = (M004, M03S, M036, M037, M038, M039, M040, - M041, M042, M043, M044, M04S, M046, M047, M048, M049, MOSO, MOS1);
{*** Bepaal respons van melding-window ***} Melding_respons_type = (MW_geen, MW_enter, MW_enter_escape); Var Niet bestaand bestand
string;
Function Toon melding(Melding id: Melding id type; Herstel-optie: Herstel-type; Melding=respons: Melding_respons_type): Char; {*
In
Functie
Melding id Herstel=optie
-> code behorende bij een bepaalde melding; -> geeft aan of na het beeindigen van de melding het onderliggende scherm moet worden hersteld; Melding_respons -> geeft aan hoe de gebruiker de window kan beeindigen; Toont de opgegeven melding op het scherm. Retourneert (voor deze window correcte) speciale toets-code.
Uit *}
- 121 -
{***************************************************************************} Implementatie-gedeelte
{*
*}
{***************************************************************************} Implementation
{*** Externe procedures en functies ***} Function Toon melding(Melding id: Melding id type; Herstel-optie: Herstel-type; Melding:respons: Melding_respons_type): Char; Var Goede invoer DummySp_toets
Boolean; String; Char;
begin { Bepaal of het huidige scherm bewaard moet worden } if (Herstel optie = Herstellen) then Bewaar_scIierm; { Maak window (excl. inhoud) } Window(21, 7, 60, 18); Toon kader(l, 1, 40, 12, KL MLD KADER, KL_MLD_ACHTERGROND); Window(23, 8, 59, 17); -Textcolor(KL MLD VOORGROND); TextBackground(KL MLD ACHTERGROND); ClrScr; { Toon melding-tekst, afhankelijk van Melding_id code } case Melding id of M004 : begin Centreer('Zorg dat er een diskette in', 4); Centreer('drive ' + Station + ' zit.', 5); end; M035 begin Centreer('De gekozen grafiek bestaat al.', 3); Centreer('U kunt deze niet bewerken.', 4); Centreer('U moet van het orgineel uit gaan.', 5); Centreer(' Orgineel : <' + Origineel Ver + '>', 6); end; begin M036 Centreer('Een moment A.U.B. de ',4); Centreer('bewerkingen worden op-',5); Centreer('geslagen.',6); end; M037 begin Centreer('Er wordt nu een nieuwe set',4); centreer('van deze persproef gemaakt.',5); end; M038 begin Centreer('Er is nog geen persproef',4); Centreer('geselecteerd. Volgend scherm',5); Centreer('is het selectie scherm.',6); end; M039 begin Centreer('Voorbereiden persproef-selectie.', 3); Centreer('Even geduld a.u.b.', 5); Centreer(' , 7)' Centreer(' % gereed 8); Centreer(' " 9); end; M040 begin centreer('Een moment A.U.B. de selectie', 5); Centreer('van de grafiek wordt voorbereid.', 6); end; M041 begin Centreer('Een moment A.U.B. meetgegevens',4);
I
I':
- 122 -
Centreer('worden opgehaald.',5); end; M042 begin centreer('U kunt niet verder gaan, meer',4); centreer('meetparen zijn er niet.',5); end; M043 begin centreer('Er is hiervoor geen pagina meer.', 5); end; M044 begin centreer('Er is hierna geen pagina meer.' 5); end; M045 begin Centreer('Even geduld A.U.B. gegevens van de', 1); Centreer('nieuwe persproef <' + Origineel ver + '>', 2); Centreer('worden weggeschreven.', 3); Centreer('[ ] Proefgegevens. , 4); Centreer('[ ] Proef-randvoorwaarden. " 5); Centreer('[ ] Variabele Persgegevens.', 6); Centreer('[ ] Vaste Persgegevens. ' 7); Centreer('[ ] Meetgegevens. 8); Centreer('[ 1 Aantal meetpunten. 9); Centreer('[ ] Grafiekgegevens. 10); end; M046 begin Centreer('Even gedu1d A.U.B. gegevens van de', 1); Centreer('orginele persproef <'+ persproef keuze + '>', 2); centreer('worden gekopieerd.', 3); Centreer('[ ] Proefgegevens. 4); Centreer('[ ] Proef-randvoorwaarden. " 5); Centreer('[ ] Variabele Persgegevens.', 6); Centreer('[ ] Vaste Persgegevens. ' 7); Centreer('[ ] Meetgegevens. 8); centreer('[ ] Aantal meetpunten. 9); end; M047 begin Centreer('Even geduld A.U.B. grafiek-', 4); Centreer('gegevens van persproef <' + Persproef_keuze + '>', 5); Centreer('worden weggeschreven.', 6); end; M048 begin Centreer('Even geduld A.U.B. grafiekgegevens', 4); centreer('en de gewijzigde meetgevens', 5); Centreer('van persproef <' + Persproef keuze + '>', 6); Centreer('worden weggeschreven.', 7); end; M049 begin Centreer('Even geduld A.U.B. modelparameters', 5); Centreer('worden weggeschreven.', 6); end; M050 begin centreer('Even geduld A.U.B.', 5); Centreer('De uitgevoerde bewerkingen', 6); Centreer(' worden ongedaan gemaakt', 7); end; M051 begin Centreer('Het station '+ cfg_data1_dir[1] + ' met de directory' 1); centreer(cfg datal dir + ' waar naartoe de', 2); Centreer('de-bewerkte gegevens worden wegge-', 3); Centreer('schreven, bevat te weining opslag', 4); Centreer('capaciteit.Vervang de diskette', 5); Centreer('door een andere. In geval van de', 6); Centreer('hard-disk verlaat het programma en', 7); Centreer('maak plaats.', 8); end; . end; { case Melding_id }
- 123 -
{ Toon beeindigingsmogelijkheden } case Melding respons of MW geen begin { Er hoeft niet gewacht te worden op invoer van de gebruiker. De melding-window routine wordt meteen beeindigd. } end; MW enter
begin GotoXY(S, 10); Write('Druk '); WriteAcc('<Enter>', KL MLD VOORGR ACC, KL MLD ACHTERGROND); Write(' om door te gaan.'); { Lees invoer van toetsenbord } Goede invoer := False; while-(NOT Goede invoer) do begin Leesveld(Dummy, " , Invoer string, 0, 1, 1, Onzichtbaar, Sp toets); if (Sp toets = ENTER) then begin Goede invoer := True; Toon melding := Sp_toets; end else begin Cursor uit; Waarschuwingstoon; Cursor aan; end; end; end;
MW_enter_escape
begin GotoXY(l, 9); Write('Druk '); WriteAcc('<Enter>', KL MLD VOORGR ACC, KL MLD ACHTERGROND); Write(' om door te gaan,'); GotoXY(l, 10); Wr i te ( , druk '); WriteAcc('<Esc>', KL MLD VOORGR ACC, KL MLD ACHTERGROND);Write(' om handelIng af te breken');
{ Lees invoer van toetsenbord } Goede invoer := False; while-(NOT Goede invoer) do begin Leesveld(Dummy, " , Invoer string, 0, 1, 1, Onzichtbaar, Sp toets); if (Sp toets IN [ENTER, ESCAPE]) then begin Goede invoer := True; Toon melding := Sp_toets; end else begin Cursor uit; Waarschuwingstoon; Cursor aan; end; end; end; end; { case Melding_respons }
- 124 -
{ Bepaal of het onderliggende scherm hersteld moet worden } if (Herstel optie = Herstellen) then Herstel scherm; end; { Externe procedure Teen_melding } end. { Unit Meld V }
- 125 -
3.11 SCRERM V.PAS {***************************************************************************} {*
{* {* {* {*
*}
Unit Versie Functie
5CHERM V *} 1.0 *} Bevat aIle schermen die in het acquisitie gedeelte *} van het Persproef-Analyse Programma gebruikt worden*}
Taa1 5ysteemeisen
Borland Turbo Pascal versie 6.0 IBM compatible XT of hoger CGA, EGA of VGA grafische kaart R.J.J de Coninck
{*
{* {* {* {* {* {* {* {*
*}
22 december 1994
*} *} *} *} *} *} *} *}
Copyright (C)
Technische Universiteit Eindhoven, Laboratorium voor omvormtechnologie.
*} *}
Gebruikt in
Persproef-Analyse Programma versie 2.00 Verwerkling
*} *}
Auteur Aangepast door Aanmaakdatum Datum laatste wijziging
16 augustus 1993
{*
{* {*
*}
{*
{* {*
*}
{*
*}
{***************************************************************************}
{***************************************************************************} {* Declaratie-gedeelte *} {* {* {*
{* {* {* {* {* {* {*
*} *} *}
Opmerking
Doordat er zoveel schermen in de case statement zijn opgenomen ontstaat er een error 124 : 5tatement part too long Daarom zijn aIle schermen in aparte procedures gestopt. TP 6.0 schijnt niet meer dan 30 schermen te accepteren binnen 1 "case". Daarna ontstaan er fouten.
{*
*} *} *} *} *} *} *} *}
{***************************************************************************} Interface Uses { Run-time lib } Crt, Graph, { Library } Layout, Definit, Menu, {Verwerking } Inst_PR5, Type_Ver; Type {*** 5cherm-identificatiecodes ***} 5cherm id type = (512, 5121, 5121A, 5121B, 5122, - 51221, 512211, 512212, 51222, 51222A, 5123, 5123A); Procedure {*
In Functie Uit
5cherm id -> identificatienummer van het te tonen Bcherm; Toont het opgegeven scherm.
*}
{*** Interne procedures, niet aan te roepen door het programma, aIleen door procedures en functies binnen deze unit ***}
- 126 -
Procedure Toon_S12; {*
In Functie
Toont het scherm met het nummer dat erachter staat, dit geldt ook voor de nog volgende procedures.
Uit *} Procedure Procedure Procedure Procedure Procedure Procedure Procedure Procedure Procedure Procedure
Toon S121; Toon-S121A; Toon-S121B; Toon-S122; Toon-S1221; Toon-S12211; Toon-S12212; Toon-S1222; Toon-S1222A; Toon::::S123;
{* {* {* {* {* {* {* {* {* {*
zie zie zie zie zie zie zie zie zie zie
ook ook ook ook ook ook ook ook ook ook
Toon S12 Toon-S12 Toon-S12 Toon-S12 Toon-S12 Toon-S12 Toon-S12 Toon-S12 Toon-S12 Toon-S12
*} *} *} *} *} *} *} *} *} *}
{***************************************************************************} {* Implementatie-gedeelte *} {***************************************************************************} Implementation Procedure Toon_perscode; {*
In Functie
Deze procedure drukt de perscode af op een vaste plaats in tekst-mode.
Out *}
begin TextColor (KL TBB VOORGR ACC); GotoXY ( 70, 2); Write (Persproef_Keuze); end; Procedure Toon_perscode_graf; {*
In Functie
Deze procedure drukt de perscode af op een vaste plaats in grafische-mode.
Out *}
begin SetColor(KL TBB VOORGR ACC); OuttextXY( GetmaxX - 25 - TextWidth(PersProef Keuze), «YB links boven + Kader rand) + (YB rechts onder - Kader_rand»DIV 2, persproef_Keuze); -end; Procedure Toon S12; begin { Verwerking } Selecteer hele scherm; Toon titelbalk-boven('S12 Hoofdmenu\Data verwerking'); Toon-titelbalk-onder; Selecteer werkgebied(Kader); Initialiseer menu; Menu item('l', 'Selecteren FS-kromme', 27, 5) ; Menu-item('2', 'Bewerken FS-kromme', 27, 7); Menu-item('3', 'Uitprinten FS-kromme', 27, 9); Menu-item('4', 'Terug naar hoofdmenu', 27, 12) ; Toon-menu; Toon-horizontale lijn(16, KL_WERK_KADER); Textcolor(KL WERK INFO); GotoXY( 7, 17); Write('Geef een cijfer of gebruik de cursorstoetsen, gevolgd door < ••••• >'); TextColor(KL_WERK_INFO_ACC);
- 127 -
GotoXY( 67, 17); Write('Enter'); TextColor(KL WERK VOORGROND); end; -Procedure Toon S121; begin {Selecteren FS-kromme} Selecteer hele scherm; Toon tite1balk-boven('S121 : Hoofdmenu\Data verwerking\Se1ecteren FS-kromme'); Toon titelbalk onder; Selecteer werkgebied(Kader); Toon horizonta1e lijn(16, KL WERK KADER); TextColor(KL WERK INFO); GotoXY( 6, 17); Write('AX,AY = selecteren <Enter>=accepteren <Esc>=terug '); TextColor(KL WERK VOORGR ACC); end; Procedure Toon S121A; begin {Selecteren FS-kromme} Selecteer hele scherm; Toon tite1balk-boven('S121 : Hoofdmenu\Data verwerking\Selecteren FS-kromme'); Toon titelbalk onder; Selecteer werkgebied(Kader); Toon horizontale lijn(16, KL_WERK_KADER); Textcolor(KL WERK INFO); GotoXY( 6, 17); Write('AX,Ay = selecteren <Enter>=accepteren <Esc>=terug '); Textcolor(KL WERK VOORGR ACC); GotoXY(5, 2); write('persproef:'); GotoXY(27, 2); Write('Bijbehorende gegevens:'); TextBackground(KL SLC ACHTERGROND); TextColor(KL SLC VOORGROND); Window(5, 7,-16,-18); Toon kader(l, 1, 12, 12, KL_SLC_KADER, KL_SLC_ACHTERGROND); Window(25, 7, 78, 17); Toon kader(l, 1, 54, 11, KL_SLC_KADER, KL_SLC_ACHTERGROND); end; Procedure Toon S1218; begin {Selecteren FS-kromme} Selecteer hele scherm; Toon tite1balk-boven('S121 : Hoofdmenu\Data verwerking\Selecteren FS-kromme'); Toon perscode; Toon-titelbalk onder; Selecteer werkgebied(Kader); Initialiseer menu; Menu item('l', 'Grafiek kracht 1 tegen weg 1', 24, 3); Menu-item('2', 'Grafiek kracht 2 tegen weg 2', 24, 4); Menu-item('3', 'Grafiek kracht 3 tegen weg 3', 24, 5); Menu-item('4', 'Grafiek kracht 2 tegen weg 1', 24, 7); Menu-item('5', 'Grafiek kracht 3 tegen weg 1', 24, 8); Menu-item('6', 'Grafiek kracht 1 tegen weg 2',24, 9); Menu-item('7', 'Grafiek kracht 1 tegen weg 3', 24, 10); Menu-item('8', 'Grafiek kracht 2 tegen weg 3', 24, 11); Menu-item('9', 'Grafiek kracht 3 tegen weg 2', 24, 12); {Toon menu; Wordt hier niet gebruikt omdat er eventuee1 niet actieve menu-item's zijn.} Toon horizontale lijn(16, KL WERK KADER); Toon-horizontale-lijn enkel(6, 20~ 60,KL WERK KADER); TextColor(KL WERK INFO); GotoXY( 7, 17); Write('Geef een cijfer of gebruik de cursorstoetsen, gevolgd door < ••••• >'); TextColor(KL WERK INFO ACC); GotoXY( 67, 17); Write('Enter');
- 128 -
TextColor(KL WERK VOORGROND); end; -Procedure Toon S122; begin Selecteer hele scherm; Toon titelbalk-boven('S122 Hoofdmenu\Data verwerking\Bewerken FS-kromme'); Toon-perscode;Toon-titelbalk onder; Selecteer werkgebied(Kader); Initialiseer menu; Menu item('1', 'Grafiek bewerken', 24, 6); Menu-item('2', 'Grafiek berekenen', 24, 8); Menu-item('3', 'Terug naar verwerkingsmenu', 24, 10); Toon-menu; Toon-horizontale lijn(16, KL_WERK_KADER); TextColor(KL WERK INFO); GotoXY( 7, 17); Write('Geef een cijfer of gebruik de cursorstoetsen, gevolgd door < ••••• >'); TextColor(KL WERK INFO ACC); GotoXY( 67, 17); Write('Enter'); TextColor(KL WERK VOORGROND); end; -Procedure Toon S1221; begin Selecteer hele scherm; Toon titelbalk-boven('S1221 : ••• \Data verwerking\Bewerken FS-kromme\Grafiek bewerken'); Toonyerscode; Toon titelbalk onder; Selecteer werkgebied(Kader); Initialiseer menu; Menu item('1', 'Aanmaken van een subset', 24, 4); Menu-item('2', 'Assen aanpassen', 24, 6); Menu-item('3', 'Grafiek inzien', 24, 8); Menu-item('4', 'Terug naar bewerkingsmenu & automatisch saven', 24, 10); Toon-menu; Toon-horizontale lijn(16, KL_WERK_KADER); TextColor(KL WERK INFO); GotoXY( 7, 17); Write('Geef een cijfer of gebruik de cursorstoetsen, gevolgd door < ••••• >'); TextColor(KL WERK INFO ACC); GotoXY( 67, 17); Write('Enter'); TextColor(KL WERK VOORGROND); end; -Procedure Toon S12211; begin {Aanmaken van een subset} Selecteer hele scherm; Toon titelbalk-boven('S12211 •• \Grafiek bewerken\Subset maken'); Toon-perscode;Toon-titelbalk onder; Selecteer werkgebied(Kader); Toon horizontale lijn(15, KL WERK KADER); Textcolor(KL WERK INFO); GotoXY( 3, 16); Write('AXAy = selecteren eginwaarde <E>indwaarde <W>issen erstel'); GotoXY ( 3 , 17); Write('ijdelijk opslaan <Esc> = annuleren = help = help'); Textcolor(KL WERK VOORGROND); Toon Vertikale Li]n Enkel( 27, 4, 13, KL WERK KADER); Toon-Vertikale-Lijn-Enkel( 53, 4, 13, KL-WERK-KADER); Toon=Vertikale=Lijn=Enkel( 27, 1, 1, KL=WERK=KADER); Toon Vertikale Lijn Enkel( 53, 1, 1, KL WERK KADER); Toon-Horizontale_Li]n_Enkel( 2, 1, 78, KL_WERK_KADER);
129 -
end; Procedure Toon S12212; begin {Assen aanpassen} Selecteer hele scherm; Toon titelbalk-boven('S12212 •• \Grafiek bewerken\As aanpassen'); Toon-perscode;Toon-titelbalk onder; Selecteer werkgebied(Kader); Toon horizontale lijn(16, KL WERK KADER); Toon-horizontale-lijn enkel(S, 1,-78,KL WERK VOORGR ACC); Textsackground(KL WERK ACHTERGROND); TextColor(KL WERK-VOORGROND); GotoXY( 23, 2); Write('X-as:'); GotoXY( 28, 4); Write('Aanpassen (J/N) : '); GotoXY( 28, 5); Write('Verplaatsing + of - :'); GotoXY( 28, 6); Write('Xnieuw = Xoud in mm'); GotoXY( 23, 10); Write('Y-as:'); GotoXY( 28, 12); Write('Aanpassen (J/N) : '); GotoXY( 28, 13); Write('Verplaatsing + of - :'); GotoXY( 28, 14); Write('Ynieuw = Youd in Nw'); end; Procedure Toon_S1222; begin Init Graph; Toon-perscode graf; Toon-titelbalk boven graf('S1222 : ••• \Data verwerking\bewerken FS-kromme\Grafiek bewerken'); Toon titelbalk onder graf; Selecteer werkgebied-graf; end; Procedure Toon S1222A; begin Selecteer hele scherm; Toon titelbalk-boven('S1222 : ••• \Data verwerking\bewerken FS-kromme\Grafiek bewerken'); Toon perscode; Toon-titelbalk onder; Selecteer werkgebied(Kader); Toon horizontale lijn(16, KL WERK KADER); TextColor(KL WERK VOORGROND); end; -Procedure Toon S123; begin {Uitprinten FS-gegevens} Selecteer hele scherm; Toon_titelbalk:boven('S123 : Hoofdmenu\Data verwerking\Uitprinten FS-kromme'); Toon perscode; Toon-titelbalk onder; Selecteer werkgebied(Kader); Initialiseer menu; Menu_item('l', 'Standaard meetrapport', 16, 3); Menu_item('2', 'Item 1 + Standaard FS-grafiek(en)', 16, 5); Menu_item('3', 'Item 2 + Tabel meetgegevens " 16, 7); Menu_item('4', 'Item 3 + Vaste/variabele en instelgegevens van de pers', 16, 9); Menu_item('5', 'Compleet meetrapport', 16, 11);
- 130 -
Menu item('6', 'Terug naar verwerkingsmenu', 16, 13); Toon-menu; Toon-horizontale lijn(16, KL WERK KADER); Textcolor(KL WERK INFO); GotoXY( 4, 17); Write('5e1ecteer het verslag dat u uitgeprint wilt hebben «Esc>=terug)'); TextColor(KL WERK VOORGROND); end; -Procedure Toon scherm(5cherm id: 5cherm_id_type); begin case 5cherm id of 512 Toon 512; S121 Toon-S121; S121A Toon-S121A; S121B Toon-S121B; S122 Toon-S122; 51221 Toon-S1221; S12211 Toon-S12211; S12212 Toon-S12212; S1222 Toon-S1222; S1222A Toon-S1222A; S123 Toon=S123; end; end; { Externe procedure Toon scherm } end. {Unit 5cherm_V}
- 131 -
3.12 unit SCHRYF V.PAS {***************************************************************************} {* {* {* {* {* {* {*
{* {* {* {* {* {* {*
{* {* {* {* {* {* {*
Unit Versie Functie
SCHRYF V 1.0 Binnen deze unit wordt de alle bestanden weggegeschreven en gekopieert naar de juiste directory.
Taal Systeemeisen
Borland Turbo Pascal versie 6.0
Auteur Aanmaakdatum Datum laatste wijziging
R.J.J. de Coninck 9 december 1993
Copyright (C)
Technische Universiteit Eindhoven, Laboratorium voor omvormtechnologie.
Gebruikt in
Persproef-Analyse Programma versie 2.00 Verwerkings gedeelte.
*} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *}
{***************************************************************************} Unit SChryf_v;
{***************************************************************************} Declaratie-gedeelte
{*
*}
{***************************************************************************} Interface Uses { Run-time lib } Dos, Crt, { Library } Definit, Ketting, INST PGG, INST PRV, INST VAR, INST VST, P PGG 10, Diskf 2, OrgIneel, Inst_amp, Cursor, Invoer,{ Verwerking } Diskio_V, Type_ver, Ket_ver, Kies FS, Meld_V, Fout_V;
-
Function Bewerking_gedaan : Bewerkings_type; {*
In Functie
Out
Controleert of er een bewerking is gedaan. Controleert zowel of er een as-verschuiving heeft plaatsgevonden, of dat er een subset is gemaakt. Of er een bewerking is uitgevoerd.
*}
Procedure Schrijf_bewerkte_prf_weg; {*
In Functie : Het beslissen van hoe de persproef, de al dan niet bewerkt is, moet worden weggeschreven. En het uiteindelijk wegschrijven en van met alle andere files die er bijhoren. Out *}
Procedure Kopieer_set_files (Bron, Doel, Pers nieuw: string); {*
In
Bron is de directory en het station van de te kopieeren bestanden. Doel is de directory en het station van de kopie bestanden.
- 132 -
Functie
Pers nieuw is de nieuwe naam van de persproef-> Doel. Het kopieren van van de set files van de juiste plaats naar de juiste plaats met de juiste naam.
Out *}
{***************************************************************************} Implementatie-gedeelte
{*
*}
{***************************************************************************} Implementation
{*** Interne functies en procedures ***} Procedure Maak_grafiek_store (Grafiek_naam : string); {*
In Functie
Grafiek naam is het station de directory en de bestandnaam zonder extensie. Kijkt of de grafiek al aanwezig is. Maakt de grafiek store aan.
Out *}
var Toestand Min x, Min y, Max-x, Max-y, Aantal meetparen, Deelwaarde kracht, Deelwaarde-weg dummy extensie R min x, R-max-x, R-min-y, R:=max:=y
Toestandtype;
integer; Boolean; string;
Real;
begin Toestand := ControleerDiskIO(Cfg datal dir, Schrijven); if (Toestand = SchrijvenOK) thenbegin case Grafiek keuze of FlSl begin FS paar := 'FlSl'; end;F2S2 begin FS paar := 'F2S2'; end;F3S3 begin FS paar := 'F3S3'; end;F2S1 begin FS paar := 'F2S1'; end;F3S1 begin FS paar := 'F3S1'; end;FlS2 begin FS paar := 'FlS2'; end;FlS3 begin FS paar := 'FlS3'; end;F2S3 begin FS paar := 'F2S3'; end;F3S2 begin FS paar := 'F3S1'; end;-
- 133 -
end; { case grafiek keuze of } { ophalen van de extensie } extensie := Bepaal extensie; { Kijken of het bestand al aanwezig is} if (Bestand aanwezig(Grafiek naam + extensie» then dummy := Lees_grafiek_gegevens(Grafiek_naam + extensie); { haal andere gegevens op } Zoek min max(Min x, Max x, Aantal meetparen, 0); Zoek=min=max(Min=y, Max=y, Aantal=meetparen, 1); { haal deelwaarde op } Haal_Deelwaardes(Grafiek_keuze, Deelwaarde kracht, Deelwaarde_weg); { omrekenen van de integers naar real } R min x:= Min x * (Deelwaarde weg / MAX WAARDE); R-max-x:= Max-x * (Deelwaarde-weg / MAX-WAARDE); R-min-y:= Min-y * (Deelwaarde-kracht / MAx WAARDE); R=max=y:= Max=y * (Deelwaarde=kracht / MAX=WAARDE); { omzetten van de getallen in strings } FS Min X:= Real naar string(Min X, 3); FS-Max-X:= Real-naar-string(Max-x, 3); FS-Min-Y:= Real-naar-string(Min-y, 2); FS Max Y:= Real-naar-string(Max-y, 2); Str(Aantal meetparen~ FS Aantal-meetparen); dummy := Bewaar grafiek gegevens (Grafiek naam + extensie); end; {if toestand-in •••• :} end; { Interne procedure Maak_grafiek_store } Procedure Zet_Markering(Nummer : integer); {*
In
Nummer -> Geeft aan op welke plaats de markering moet komen te staan. Reset -> Geeft aan dat de markeringen die er staan moeten worden gewist.
Functie
Het zetten van de markering op de juiste plaats. De markering geeft aan welke files gekopieerd zijn.
Out *}
var tel
integer;
begin GotoXY(6, nummer); Write('x'); end; { Interne procedure Zet_Markering } Function Bepaal volgende prf(PersProef {*
- -
In Functie Out
string): String;
PersProef is de gekozen persproef. Bepalen wat de volgende persproef code is behoordende bij de gekozen persproef. De gevonde nieuwe percode behorende bij orginele.
*}
Var Dir info tel-char hUlp_str
SearchRec; integer; string;
begin hulp str := Persproef; Delete (Persproef, 3, 1); Insert('?', Persproef, 3);
- 134 -
tel char := 64; FindFirst(Cfg Datal dir + PersProef, Directory, Dir_info); While ( Doserror = 0 )do begin Inc(tel char); FindNext(Dir info); end; { while doserror = 0 } Delete(hulp str, 3, 1); Insert(Chr(tel char), hulp str, 3); persproef := hUlp_str; if (tel char >= 91) then {--Toon melding} else begin if (NOT (Persproef[3] in ['A' •• 'Z', 'a' •• 'z']» begin Delete (Persproef, 3, 1); Insert('A', Persproef, 3); Bepaal volgende prf := PersProef; end else Bepaal volgende prf := PersProef; end; end; { Interne function Bepaal_volgende_prf }
then
Function Data dirs gelijk : Boolean; {*
--
In Functie Out
Kijken of de beide data directories gelijk zijn. True -> indien ze gelijk zijn. False -> indien ze niet gelijk zijn.
*}
var hulp : Boolean; begin hulp := False; if (cfg data dir = cfg_data1_dir) then hulp := True; Data dirs gelijk := hulp; end; {-Interne function data_dirs_gelijk } Function Mkdir ver(Subpad : string) : Toestandtype; {*
-
In Subpad -> is de aan te maken subdirectory Functie : Het aanmaken van een een subdirectory. De "root" directory is de Cfg datal dir directory. Deze functie zal tevens controleren-of het station aanwezig is, of er schrijfbeveiliging is etc. Out Heeft terug *}
var toe stand hulp
Toestandtype; Boolean;
begin hulp := False; toestand := ControleerDiskIO(cfg_data1 dir,Schrijven); if (NOT «Directory aanwezig(cfg datal dir + Subpad» (toestand = SchrijvenOK») thenMkDir(cfg datal dir + Subpad); MkDir ver :=-toestand; end; { Interne function Mkdir_ver}
- 135 -
AND
Procedure Orgineel_bewerkt; {*
In Functie : Deze procedure schrijft gegevens weg van een orginele persproef waarbij alleen een as verplaatsing heeft plaats gevonden. Out *}
var Toestand Aantal data Aant record dummy
Toestandtype; Data aantal; aantalrecord; Char;
begin { Bij het eerste gedeelte gebeurt er hetzelfde indien, zowel de data directories gelijk of ongelijk hetzelfde. } PersProef Nieuw := Bepaal volgende prf (persproef keuze); toestand Mkdir ver(PersProef Nieuw); if (toestand = SclirijvenOK) then begin Origineel ver := Persproef nieuw; dummy := Toon melding(M04S; Niet herstellen, MW_Geen); Cursor uit; Kopieer set files(cfg data dir, cfg datal dir, PersProef Nieuw); { het wegschrijven van de-gewijzigde meetgegevens bestand en het wegschrijven van het aantal meetpunten } Schrijf ketting in bestand(cfg datal dir + Persproef Nieuw + ,\,-+ persproef Nieuw + ':dat'); { het aanmaken van de grafiekgegevens store } Zet markering(8); zet-markering(9); Maak grafiek store (cfg datal dir + persproef Nieuw + '\' + persproef_Nieuw); Zet markering(lO); Bewaar orginele persproef(Persproef Keuze, cfg datal dir + persproef Nieuw + ' \ ' + persproef_Nieuw + '.org');
:=
{ indien de data directories ongelijk zijn kijken of orgineel reeds aanwezig is op data-schijf } if (NOT (Data dirs gelijk» then begin -if (NOT «Controleer set aanwezig(persproef keuze » AND (Directory_aanwezig(cfg_datal_dir +-persproef_keuze»» then begin dummy := Toon melding(M046, Niet herstellen, MW_Geen); toestand := Mkdir ver(PersProef keuze); if (toestand = SclirijvenOK) then begin Kopieer set files(cfg data dir, cfg datal dir, PersProef keuze); Kopieer-Dat-file(cfg data dir + persproef-keuze + ' \ ' + persproef keuze + '.DAT', cfg datal dir + persproef_keuze + ' \ ' + persproef_keuze + '.DAT'); Zet markering(8); Haal aantal meetpunten op(Aant record, cfg data dir + Persproef keuze + -,\, + Persproef keuze + '.Amp');Bewaar aantal meetpunten(Aant record, cfg datal dir + Persproef keuze + - ' \ ' + persproef_keuze + '.amp');Zet markering(9); end; end; end; Cursor_aan; end; end; {Interne procedure Orgineel_bewerkt}
- 136
Procedure Orgineel Geen; {*
-
In Functie : Deze procedure schrijft gegevens weg van een orginele persproef waarbij geen bewerkingen zijn gedaan. Out *}
var Toestand Aantal data Aant record dummy
Toestandtype; Data aantal; aantalrecord; Char;
begin if (Data dirs gelijk) then begin dummy := Toon melding(M047, Niet herstellen, MW geen); Maak grafiek store(cfg datal dir-+ persproef keuze + ' \ ' + persproef_keuze); Delay(lOOO); end else begin if (NOT (Controleer_set_aanwezig(persproef_keuze ») then begin toestand := Mkdir ver(PersProef keuze); if (toestand = SclirijvenOK) then begin Origineel ver := Persproef keuze; dummy := Toon melding(M04S; Niet herstellen, MW_Geen); Cursor uit; Kopieer set files(cfg data dir, cfg datal dir, PersProef keuze); Kopieer-Dat-file(cfg data dir + persproef-keuze + ' \ ' + persproef keuze + '.DAT', cfg datal dir + persproef_keuze + ' \ ' + persproef=keuze + '.DAT'); Zet markering(8); { kopieren van het aantal meetpunten } { Het ophalen van het aantal meetpunten van het orgineel. } Haal aantal meetpunten op(Aant record, cfg data dir + Persproef keuze + ,\,-+ Persproef keuze + '.Amp'); Bewaar aantal meetpunten(Aant record, cfg datal dir + Persproef keuze + ,\,-+ persproef_keuze + '~amp'); Zet markering(9); Maak_grafiek_store (cfg datal dir + persproef keuze + ' \ ' + persproef_keuze); Zet markering(lO); Cursor aan; end; end; end; end; {Interne procedure Orgineel_Geen} Procedure Bewerkt Geen; {*
-
In Functie : Deze procedure schrijft gegevens weg van een bewerkte persproef waarop geen bewerkingen zijn gedaan. Out *}
var dummy : char; begin if (NOT (Grafiek_bestaat»
then
- 137 -
begin dummy := Toon melding(M047, Niet herstellen, MW geen); Maak grafiek store(cfg datal dir-+ persproef keuze + ' \ ' + persproet_keuze); end; end; {Interne procedure Bewerkt_Geen;} Procedure Bewerkt_bewerkt; {*
In Functie
Deze procedure schrijft gegevens weg van een bewerkte persproef waarop op een nieuwe grafiek bewerkingen zijn gedaan.
Out *}
var dummy
char;
begin { Het eerste gedeelte is voor alle bewerkigen hetzelfde } dummy := Toon melding(M048, Niet herstellen, MW Geen); Maak grafiek store(cfg datal dir-+ persproef keuze + ' \ ' + persproef_keuze); { het wegschrijven van de gewijzigde meetgegevens bestand en het wegschrijven van het aantal meetpunten } Schrijf ketting in bestand(cfg datal dir + Persproef keuze + ' \ ' + Persproet keuze + '.dat'); end; { Interne procedure Bewerkt_bewerkt } {***
Externe Functies en procedures
***}
Function Bewerking gedaan : Bewerkings_type; Var AsAanpassen, SubsetMaken Boolean; tel Integer; Hulp Bewerkings_type; begin AsAanpassen := False; SubsetMaken := False; if (F signaalA.verplaatsing <> 0) OR (S_signaalA.verplaatsing <> 0) then AsAanpassen := True; for tel:= 1 to 3 do begin if (Bewerkings tabel[tel) = True) then SubsetMaken := true; end; if (AsAanpassen AND SubsetMaken) then begin hulp := Beide; end else if (AsAanpassen) then begin hulp := As aanpassen; end else if (SubsetMaken) then begin hulp := SUbset_maken; end else hulp := Geen; { het vullen van veld FS bewerkt van de grafiek store} Bewerking gedaan := hulp; end; { Externe function bewerking_gedaan }
- 138
Procedure Schrijf_bewerkte_prf_weg; var PersProef_Soort : PersProef_type; begin { na gaan of de gekozen persproef een orginele is of een bewerkte } if (PersProef keuze[3] in ['A' .• 'Z', 'a' •• 'z']) then PersProef Soort := Bewerkt V else PersProef Soort := Orgineel_V; Case PersProef Soort of Bewerkt V -begin case (Bewerking gedaan) of Geen begin Bewerkt_Geen; end; Subset maken, Beide,As_aanpassen begin Bewerkt_bewerkt; end; end; Verwissel_data(O, 1); end; begin { na gaan of de persproef bewerkt is.} case (Bewerking gedaan) of Subset maken,Beide,As_aanpassen begin Orgineel bewerkt; VerwisseI data(O, 1); end; Geen begin Orgineel Geen; VerwisseI data(O, 0) ; end; {case geen} end; {case bewerking gedaan of} end; {case orgineel} end; { case Persproef soort of} end; { Externe procedure Schrijf_bewerkte_prf_weg } Procedure Kopieer set files (Bron, Doel, Pers nieuw: string); Var Toestand bron, Toestand-doel Toestandtype; dummy Boolean; begin { Controleren van Bron en Doel} Toestand bron := ControleerDiskIO(Bron, Lezen); Toestand-doel := ControleerDiskIO(Doel, Schrijven); if «Toestand bron IN [LezenOK, SchrijvenOK]) OR (Toestand-doel IN [LezenOK, SchrijvenOK]» then begin { kopieer .PGG file } dummy := Lees proefinstellingen(Bron + PersProef keuze + ' \ ' + PersProef keuze '.PGG'); dummy := Bewaar proefinstellingen(Doel + Pers nieuw + ' \ ' + Pers nieuw + '.PGG'); Zet_markering(4);
+
{ kopieer .PRV file} dummy := Lees_Proef_Randvoorwaarden(Bron + PersProef keuze + ' \ ' +
- 139 -
PersProef keuze + '.PRV'); dummy := Bewaar Proef randvoorwaarden (Doel + Pers nieuw + ' \ ' + Pers nieuw + '.PRV'); Zet_markering(S); { kopieer .VAR file} dummy := Lees Variabele Gegevens(Bron + PersProef keuze + ' \ ' + PersProef keuze +-'.VAR'); dummy := Bewaar Variabele Gegevens(Doel +-Pers nieuw + ' \ ' + Pers nieuw +-'.VAR'); Zet_markering(6); { kopieer .VST file} dummy := Lees Vaste gegevens(Bron + PersProef keuze + ' \ ' + PersProef keuze + '.VST'); dummy := Bewaar Vaste gegevens(Doel + Pers nieuw + ' \ ' + Pers nieuw + '.VST'); Zet markering(7); end; end; { Externe procedure kopieer_set_files } end. { Einde unit sChryf_v}
- 140 -
3.13 unit TYPE VER.PAS {***************************************************************************} {* {*
{* {* {* {* {* {* {* {*
{* {* {* {* {* {* {* {*
{* {* {* {*
unit Versie Functie
Type Ver 1.0 Deze unit bevat aIle type van het Persproef Programma verwerkings-deel. Tevens zullen globale variabelen hierin worden gezet.
Taal Systeemeisen
Borland Turbo Pascal versie 6.0 IBM compatible XT of hoger EGA of VGA grafische kaart R.J.J. de Coninck 12 november 1993
Auteur Aanmaakdatum Datum laatste wijziging Copyright (C)
Technische Universiteit Eindhoven, Laboratorium voor omvormtechnologie.
Gebruikt in
Persproef-Analyse Programma versie 2.00 Verwerking-gedeelte
*} *}
*} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *}
{***************************************************************************}
unit Type_Veri {***************************************************************************}
Declaratie-gedeelte
{*
*}
{***************************************************************************}
Interface
Uses {Run time lib. r Dos, Crt, { Library } Kettingi Const MAX WAARDE
4096/2i
type
= (F1S1, F2S2, F3S3,
Grafiek
{ Standaard grafieken } F2S1, F3S1, F1S2, F1S3, F2S3, F3S2, { Onderzoek grafieken } F Geen { Geen grafiek })i
{ soorten bewerkingen } Bewerkings_type = (As_aanpassen, Subset_maken, Beide, Geen)i { soorten persproeven} PersProef_type = (Orgineel_V, Bewerkt_V)i KrachtWeg_Ptr = AKrachtWegi { worden de pionters van de gekozen kracht en weg in opgeslagen tijdens het nalopen van de twee lijsten} KrachtWeg = Record Kracht, Weg : Ketting_Ptri endi
Signaal = Record Begin Pointer Verplaatsing endi
Ketting Ptri integer;
- 141 -
Var K ptr Ver : Ketting Ptri { records waar de kracht en weg beginpointers en de verplaatsing worden opgeslagen } F Signaal, S=Signaal : Signaal_Ptri
{*** Twee interne data-stores die binnen het verwerkings-gedeelte worden gebruikt. ***} PersProef Keuze String[8]i Grafiek Keuze : Grafieki { Interne store waarin de nieuwe naam van een bewerkte persproef in wordt opgeslagen. } PersProef_Nieuw : String[8]i { Interne store die aangeeft of de gekozen grafiek al bestaat of niet, bestaat -> True, niet bestaat -> False.} Grafiek bestaat Boolean; { Verplaatsingen onthouden } Ver_X, Ver_Y Real; { onthouden van het teken } Ver plus min X, ver=plus=min=Y : Char; { Dit is een tabel om na te gaan of bij het maken van een subset een markerings functie is gebruikt. Eerste plaats in de tabel staat voor begin punt, tweede staat voor eind punt en de derde staat voor wissen. } Bewerkings_tabel : array [1 •• 3] of Boolean; { teller die bijhoudt het aantal punten dat gemarkeerd worden als te wissen} Tel wis Integer; Tel=aantal_wissels : Integer; Procedure Reset omgevings variabelen; {*
-
In Functie Out
-
De procedure reset de globale variabelen.
*}
{***************************************************************************} Implementatie-gedeelte
{*
*}
{***************************************************************************} Implementation Procedure Reset omgevings begin Grafiek Keuze Grafiek-bestaat {--Bewerking gedaan PersProef nieuw Ver X Ver-Y Tel-wis Ver-plus min X Ver-plus-min-Y Bewerkings tabel[1] Bewerkings-tabel[2] Bewerkings-tabel[3]
variabelen; := F Geen; := False; := False;}
:= " ;
0; 0; 0; '+'; '+'; False; False; False; 0; 0; end; { Externe procedure Reset_omgevings_variabelen } := := := := := := := := F_signaaIA~verplaatsing := S_signaaIA.verplaatsing :=
- 142 -
begin PersProef Keuze := " ; Reset omgevings variabelen; Tel aantal wissels:= 0; end. { Unit type_ver }
- 143 -
Literatuurlijst. [1]
[2]
[3]
[4]
[5]
[6 ]
[7]
P.J.M. Reinders.
P.J.M. Reinders.
P.J.M. Reinders.
P.J.M. Reinders.
P.J.M. Reinders.
P.J.M. Reinders.
C.P.I. van de Werff.
"Persproef-Analyse Programma versie 2.00, Introductie, HS-HIO-Heerlen-Stageverslag Eindhoven, Juli I993, WP I545." "Persproef-Analyse Programma versie 2.00, Essentieel Model, HS-HIO-Heerlen-Stageverslag Eindhoven, Juli I993, WP I546." "Persproef-Analyse Programma versie 2.00, . Implementatie model, HS-HIO-Heerlen-stageverslag Eindhoven, Juli I993, WP I547." "Persproef-Analyse Programma versie 2.00, Gebruikershanleinding, HS-HIO-Heerlen-Stageverslag Eindhoven, Juli I993, WP I548." "Persproef-Analyse Programma versie 2.00, Source-code Libraries, HS-HIO-Heerlen-Stageverslag Eindhoven, Juli I993, WP I549." "Persproef-Analyse Programma versie 2.00, Source-code Programma, HS-HIO-Heerlen-Stageverslag Eindhoven, Juli I993, WP I550."
I,
2,
3,
4,
5,
6,
"Trekproef analyse programma PC-DTIOO versie 3.02, Introductie, HS-Heerlen-HIO-Stageverslag I, Eindhoven, Januari I993, WPA I450."
- 144 -
[8]
C.P.I. van de Werff.
"Trekproefanalyse Programma PC-DT100, versie 3.02, Het Essentieel Model, HS-Heerlen-HIo-Stageverslag 2, Eindhoven, Januari 1993, WPA 1451."
[9]
C.P.I. van de Werff.
"Trekproefanalyse Programma PC-DT100, versie 3.02, Het Implementatie Model, HS-Heerlen-HIO-Stageverslag 3, Eindhoven, Januari 1993, WPA 1452."
[10]
C.P.I. van de Werff.
"Trekproefanalyse Programma PC-DT100, versie 3.02, Analyse, HS-Heerlen-HIO-Stageverslag 4, Eindhoven, Januari 1993, WPA 1453."
[11]
C.P.I. van de Werff.
"Trekproefanalyse Programma PC-DT100, versie 3.02, Source code Programma onderdelen, HS-Heerlen-HIO-Stageverslag 5, Eindhoven, Januari 1993, WPA 1454."
[12]
C.P.I. van de Werff.
"Trekproefanalyse Programma PC-DT100, versie 3.02, Source code Library bestanden, HS-Heerlen-HIO-Stageverslag 6, Eindhoven, Januari 1993, WPA 1455."
[13]
C.P.I. van de Werff.
"Trekproefanalyse Programma PC-DT100, versie 3.02, Gebruikershandleiding, HS-Heerlen-HIO-Stageverslag 7, Eindhoven, Januari 1993, WPA 1456."
[14]
R.J.J de Coninck
"Persproef-Analyse Programma versie 2.00 Introductie R.J.J. de Coninck HS-Heerlen-HIO-Stageverslag 1 Aug. 1993 WPA 120001."
- 145 -
[15]
R.J.J de Coninck
"Persproef-Analyse Programma versie 2.00 Essentieel-model R.J.J. de Coninck HS-Heerlen-HIO-Stageverslag 2 Okt. 1993 WPA 120002."
[16]
R.J.J de Coninck
"Persproef-Analyse Programma versie 2.00 Implementatie-model R.J.J. de Coninck HS-Heerlen-HIo-Stageverslag 3 Nov. 1993 WPA 12003."
[17]
R.J.J de Coninck
"Persproef-Analyse Programma versie 2.00 User's Manual R.J.J de Coninck HS-Heerlen-HIO-Stageverslag 4 Jan. 1994 WPA 120004."
[18]
R.J.J de Coninck
"Persproef-Analyse Programma versie 2.00 Source-code programma onderdelen. R.J.J de Coninck HS-Heerlen-HIo-Stageverslag 5 Jan. 1994 WPA 120005."
[19]
R.J.J de Coninck
"Persproef-Analyse Programma versie 2.00 Source-code library bestanden R.J.J de Coninck HS-Heerlen-HIO-Stageverslag 6 Jan. 1994 WPA 120006."
- 146 -
Technische Universiteit Eindhoven Faculteit der Werktuigbouwkunde Vakgroep Produktietechnologie en -automatisering Laboratorium voor Omvormtechnologie
Persproef-Analyse Programma versie 2.00 SOURCE-CODE LIBRARIES
R.J.J. de Coninck HS-Heerlen-HIO-Stageverslag 6 Jan. 1993 VF-code: D2
WPA 1200QZ A.
Stageperiode
1-02-1993 tim 16-07-1993
Begeleider TU Eindhoven Begeleider Hogeschool Heerlen
Ir. L.J.A. Houtackers Ir. A.J. Goos
Adressenlijst.
stageverlenend bedrijf:
Technische Universiteit Eindhoven
Bezoekadres:
Den Dolech 2 5612 AZ EINDHOVEN 040 - 479111
Postadres:
Postbus 513 5600 MB EINDHOVEN
Interne begeleider:
ire L.J.A. Houtackers
Prive:
Nachtegaallaan 2 5731 XR MIERLO 04927 - 62281
Intern:
TU Eindhoven W-Hoog 0.119 040 - 474521 040 - 448665
Externe begeleider:
(tel) (fax)
ire A.J. Goos
Prive:
Frederikagracht 5 6465 CR KERKRADE 045 - 423163
Intern:
Dr. Jaegersstraat 40 6417 CK HEERLEN 045 - 734892 (tel) (fax) 045 - 719790
stagiair:
R.J.J. de Coninck
Prive:
Geleenstraat 66 6155 ND PUTH 04493 - 1157
Intern:
W-Hal 1. 44 040 - 473648
- 2 -
Inhoudsopqave.
. . . . . . . . .. . . . . . . .. . . . . . . . . . . . . . woordenlijst: . .. . . . . . . ..
Adressenlijst.
- 2 -
Verklarende
-
Inleiding.
- 7 -
Library van het Persproef-Analyse Programma.
1
6 -
- 8 -
1. 1 unit INST ACQ. PAS . . . • • . . • . • . . . . • • Function Bereken Aanbevolen samplefreq . • • Function Bereken-Minimum samplefreq . • • • . • . Function Acq Maximum samplefreq • . . . • Function Sla-acquisitie gegevens op . . • . . . • . . Function Acquisitie • • - . . . . ~ . . • . • . . . Function Initialiseer kaart . . . . . . . . . . . Procedure PCLabCard . . . • . . . . . . . . . . . Procedure Haal gegevens . . . . . . . . . . . . . • . Function Haal_Type_Kaart . . . . . . . . . • • . • •
- 8 -
-
12 12 13 13 14 15 17 17 18
-
1.2 Unit INST AMP.PAS . . . . . . • .. . •. Procedure Bewaar aantal meetpunten . . . • • . . • . Procedure Haal_aantal_meetpunten_op . • . • . . . • •
- 19 -
1.3 Unit INST IO.PAS . . . . . . . . . . . • . . . • . Function Controleer directories aanwezig • • . . • • Procedure Lees instellingen. . . . . • . . • Procedure Bewaar_instellingen • .•.•.•.
- 21 - 22 -
1.4 unit INST PGG.PAS . Function Lees Proefinstellingen . . . . . . • • Function Bewaar_proefinstellingen • . • . . • .
• . . . • . ....
-
20 20 -
22 -
- 23 -
24 -
- 25 - 25 -
1.5 unit INST PRS.PAS • • • Function Bewaar perscode Function Verwijder perscode Function controleer_perscode 1.6 unit INST PRV.PAS Function Lees Proef Randvoorwaarden • . Function Bewaar Proef Randvoorwaarden
-
. •
1. 7
Unit INST VAR. PAS . . . . . . . . . . . . . . • . Function Lees Variabele Gegevens . . . . . • . • • • Function Bewaar_Variabele_Gegevens . . • . .••
-
27 -
-
28 28 -
-
29 -
-
30 -
- 31 - 31 - 33 - 34 -
35 -
1.8 unit INST VST.PAS . . • • . . . . . . • . Function Lees Vaste Gegevens . . . . . . . Function Bewaar_vaste_Gegevens
-
37 38 39 -
1. 9 unit KETTING. PAS . . • • . • . . . . . . . . • . . Function Init ketting . . . ........•.. Procedure Verwijder ketting ........••. Procedure Sla ketting op . . • . . . • . . . . . • . Function Insert_in_ketting • • • • • • . • .
- 41 -
-
3 -
-
44 -
- 44 - 44 -
- 45 -
Procedure Lees waarde uit ketting . . . . . . Procedure Markeer verwijdering . . . . . . . . . . . Procedure Herstel-markeer verwijdering • . . . . . • Function Verplaats pointer . . . . . . . . . . . Function Volgende record . . . . . . . . • • . . . . Function Vorige record . . . . . . . . . . . • . . • Function Eerste-record . . . • . . . • • . . . • . . Function Laatste record • . . . • . . . . • . 1.10 unit NAAM.PAS
. .. . . . . . . . . . . . ..
- 45 -
46 46 46 46
-
- 47 - 47 - 47 -
48 -
1.11 Unit ORIGINEEL.PAS . . . • • • . . • • Procedure Lees orginele persproef . . . Procedure Bewaar_orginele_persproef . • •
-
49 -
-
50 50 -
1.12 unit P PGG IO.PAS . . • . . . . • • Function Lees-grafiek gegevens . • • Function Bewaar_grafiek_gegevens . • .
- 51 - 52 - 52 -
2
Toegevoegen / Wijzigen van de algemene Library.
- 54 -
2.1 Unit DEFINIT.PAS . . . Function Bepaal vrije ruimte Function Bestand aanwezig . · Function Directory aanwezig Procedure Verwijder bestand Function Station_gereed . .
. . . . . . . . . . . . · . . . . . . . . . . . . · . . . . . . . . . . . .
2. 2 Unit DISKF 2. PAS . . . • . Function Bepaal vrije ruimte Function Bestand aanwezig . . Function Directory aanwezig • Procedure Verwijder bestand Function Station_gereed . . .
- 54 -
. . . .
. . . .
. . . .
. . . .
. • • .
• . . .
• • . .
. . . .
. . . •
• . . • . . . . . •
. . . . . . . . .
. . •
2.3 LAYOUT.PAS. . . . . . . • . ......••• Procedure ReI naar abs . • • . . . . . . . . . . . • Procedure Bepaal schermkIeuren . . . . . . . • . . • Procedure WriteAcc . • . . . . • . . . . • . Procedure Centreer . . . . . . . . . . . . . . . Procedure Toon kader • . . . . . . • . . . . . . . • Procedure Selecteer hele scherm . Procedure Toon titelbalk-boven . Procedure Toon-titelbalk-onder . Procedure Selecteer werkgebied . . . . . . . . . . . Procedure init Graph . . . . . . . . . • .... Procedure Toon-titelbalk boven graf •...... Procedure Toon-titelbalk-onder-graf . . . • . . • Procedure Selecteer werkgebied-graf . . • . . .. Procedure Toon horizontale Iijn • • . . . . • . • . . Procedure Maak-Graf window...•. Procedure Selecteer-graf win . . . . . • . . • . Procedure Toon horizontale Iijn Enkel . . . . . . • . Procedure Toon-horizontale-lijn-Dubbel . • . • . Procedure Toon-Vertikale IIjn Enkel . . ... Procedure Toon=Vertikale=lijn=Dubbel . . • • . . - 4 -
-
56 56 56 56 57
-
-
58 -
-
60 60 60 60 61
-
- 62 - 66 - 66 -
67 67 67 -
-
68 68 68 68 69 69 69
-
70 70 70 -
-
71 71 71 71
-
72 -
-
-
Procedure Toon stop Teken . Procedure Toon-Teken Omhoog Procedure Toon=Teken=omlaag 2.4 unit MENU.PAS . . . . . Procedure Toon item inverse Procedure Toon-item-normaal Procedure InitIaliseer menu Procedure Menu item . ~ Procedure Toon-menu . . . . Function Lees menukeuze . . Procedure Maak item actief . . . . Procedure Maak-item-inactief
-
72 72 -
-
73 -
- 74 -
76 76 77 -
-
77 -
- 77 - 78 -
. . .
. . .
. . .
-
79 79 -
2.5 unit VRAAG IN.PAS Function Bepaal grootste Function Bereken lengte Function Toon_vraag_jn
-
80 81 81 81
Literatuurlijst.
-
84 -
-
5 -
-
Verklarende woordenlijst:
Krachtsignaal
Een signaal dat afkomstig is van een krachtsensor op een meetpunt in een pers. Dit signaal is een elektrische weergave (in Volt) van de kracht, die de stempel van de pers op het proefobject uitvoert.
Wegsignaal
Een signaal dat afkomstig is van een wegsensor op een meetpunt in een pers. Dit signaal is een elektrische weergave (in Volt) van de weg die de stempel aflegt om een bepaald proces te realiseren onder invloed van een kracht.
Schaalweg
De waarde die gekoppeld wordt aan het maximale signaal dat binnenkomt over een kanaal. Hierdoor kan het elektrische signaal omgezet worden naar een weg (in millimeter = rom).
Schaalkracht
De waarde die gekoppeld wordt aan het maximale signaal dat binnenkomt over een kanaal. Hierdoor kan het elektrische signaal omgezet worden naar een kracht (in kilo Newton = kN).
-
6 -
Inleiding.
Dit verslag bevat library bestanden die onderverdeelt kunnen worden in : De algemene gewijzigde bibliotheek. De bibliotheek die bij het Persproef-Analyse Programma hoort. De algemene bibliotheek ZlJn routines die zijn uitgewerkt in het verslag VAN DE WERFF LIT[6]. Tevens zullen wijzigen/ toevoegingen die op deze routines zijn uitgevoerd in dit verslag worden afgedrukt. De bibliotheek die bij het Persproef-Analyse Programma hoort zullen in dit verslag worden afgedrukt. Dit verslag is ontstaan naar aanleiding van mlJn stage in het zesde semester, voor de Informatica-opleiding van de Hogeschool Heerlen, voor het Laboratorium voor Omvormtechnologie. Tijdens deze geschreven :
stage-periode
stageverslag stageverslag Stageverslag Stageverslag Stageverslag
aug. sep. okt. jan. jan.
1: 2: 3: 4: 5:
1993, 1993, 1993, 1994, 1994,
WPA WPA WPA WPA WPA
zijn 120001 120002 120003 120004 120005
de
rapporten
Introductie. Essentieel model. Implementatie model. User's Manual. Source-code programmaonderdelen PersproefAnalyse Programma versie 2.00. stageverslag 6: jan. 1994, WPA 120006 - Source-code librarybestanden PersproefAnalyse Programma versie 2.00.
- 7 -
-
volgende
1
Library van het Persproef-Analyse Programma.
1.1
unit INST_ACQ.PAS.
{***************************************************************************} {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {*
*}
Unit Versie Functie
INST ACQ *} 1.0 *} Deze unit bevat de afhandeling van de communicatie *} met de acquisitie kaart. *}
Taal Systeemeisen
Borland Turbo Pascal versie 6.0 IBM compatible XT of hoger CGA, EGA of VGA grafische kaart P.J.M. Reinders S juli 1993
Auteur Aanmaakdatum Datum laatste wijziging
14 juli 1993
Copyright (C)
Technische Universiteit Eindhoven, Laboratorium voor Omvormtechnologie.
Gebruikt in
Persproef-Analyse Programma versie 2.00 Acquisitie gedeelte
*} *} *} *} *} *} *} *} *} *} *} *} *} *} *}
{***************************************************************************}
Unit Inst_ACQ;
{***************************************************************************} Declaratie-gedeelte
{*
*}
{***************************************************************************}
Interface {$F+}
{$L tp71S.0BJ} {$L SlStpf.OBJ} {$L SlStpn.OBJ} Uses { Run-time lib } Crt, Dos, } Layout, Definit, Invoer, { Library KeyCodes, Vid buff, Cursor, Geluid, Inst 10, Diskfunc, Inst_PGG, Inst_VAR, Inst_PRS, Ketting, { Acquisitie } Meld_A, Fout_A, Help_A, Scherm A Const AANTAL MEETGEGEVENS = SOOO; Type Small array Array [0 •• 5] of INTEGER; Data_array = Array [O •. AANTAL_MEETGEGEVENS] of INTEGER; Var {*** In te stellen gegevens Acq Type Kaart, Acq-Startcriterium, Acq-Stopcriterium, Acq-F1 signaal,
***}
AC~F2=signaal, Ac~F3_signaal,
Acq Sl signaal,
AC~S2=signaal,
Acq S3 signaal
String;
Ac~minimum_samplefreq, AC~Samplefreq AC~Kanalen,
REAL;
Ac~aanbevolen_samplefreq,
-
8 -
Acq Aantal meetgegevens, Acq-inputrange : INTEGER; Procedure PCL718 (Func INTEGER; Var a, b, c, d
INTEGER); EXTERNAL;
Procedure PCL818 (Func
INTEGER); EXTERNAL;
INTEGER; Var a, b, c, d
Procedure PCLabCard (F nummer, para, par1, par2, par3, par4, parS Var err
INTEGER; INTEGER);
{*
Het nummer van de functie die kaart moet gaan uitvoeren. parO-s => De 6 parameters die de functie meekrijgt. [ zie ook * PC-LabCard's User Manual 818 C & Pascal Software driver blz 55. * PC-LabCard's User Manual 718 Pascal support package blz 45.
Functie
Deze functie handelt, afhankelijk van welk type acquisitie-kaart er is ingesteld, de communicatie met de kaart af. Retourneert: Niets. err => Het nummer van de fout die opgetreden is. Is het nummer a dan is er geen fout opgetreden. [zie ook * PC-LabCard's User Manual 818 blz 100. * PC-LabCard's User Manual 718 Pascal support package blz 78.
Uit
F nummer
=>
In
*}
Function Initialiseer kaart
INTEGER;
{*
In Functie
Haalt gegevens over de proef op en initialiseert de acquisitie kaart. Retourneert (de foutmeldingen van de acquisitie-kaart-driver): [zie ook * PC-LabCard's User Manual 818 blz 100. * PC-LabCard's User Manual 718 Pascal support package blz 78. a 1 2 3 4 5 6 22 26
Good return, No error. No driver initialization. Invalid function number. Invalid I/O port. Invalid interrupt level. Invalid DMA level. Out of differential inputrange. Hardware failure. Invalid base address setting or installation error Invalid channel number or range code.
Out *}
-
9 -
Function Acquisitie (Kett : Ketting_ptr) : INTEGER; {*
In Functie
Binnen deze functie vindt de acquisitie plaats. Retourneert: [zie ook * PC-LabCard's User Manual 818 bIz 100. * PC-LabCard's User Manual 718 Pascal support package bIz 78.
o
Good return, No error. No driver initialization. Invalid function number. Invalid I/O port. Invalid interrupt level. Invalid DMA level. Out of differential inputrange. Hardware failure. Invalid base address setting or installation error Invalid channel number or range code.
1
2 3 4 S 6 22 26
Out *}
Function Sla acquisitie gegevens op (Kett {*
-
In Functie
-
-
INTEGER;
Slaat de pas geregistreerde gegevens op in de tijdelijke directory Retourneert: [zie ook * PC-LabCard's User Manual 818 bIz 100. * PC-LabCard's User Manual 718 Pascal support package bIz 78.
o 1
2 17 18
Good return, No error. No driver initialization. Invalid function number. Invalid beginning conversion number. Invalid number of conversion in parm [0].
Out *}
Function
Ac~Maximum_samplefreq :
REAL;
{*
In Functie
Berekent de maximale samplefrequentie die met de huidige procestijd en maximale opslagcapaciteit te bereiken is. Retourneert: Maximale samplefrequentie (real).
Uit *}
{*** Interne procedures en functies ***}
Function Bereken Minimum samplefreq : REAL; {*
- -
In Functie
Berekent de minimale samplefrequentie die ingesteld kan worden. Minimale samplefrequentie (real).
Uit *}
- 10 -
Function Bereken Aanbevolen samplefreq : REAL; {*
-
In Functie:
-
Berekend de samplefrequentie die optimaal is voor de instelde computerconfiguratie en de door de gebruiker ingestelde gegevens. Optimale samplefrequentie (real).
Uit *}
Function Haal_Type_Kaart : String; {*
In Functie :
Haalt uit de instellingen het type kaart op. Retourneert: String met daarin het type kaart ('718' of '818').
Out *}
Procedure Haal_gegevens; {*
In Functie
Haalt de proefgegevens op uit de PGG file en slaat ze op in variabelen die gebruikt kunnen worden zonder dat de PGG-file steeds gelezen moet worden. Retourneert: Niets.
Uit *}
{***************************************************************************} {* Implementatie-gedeelte *} {***************************************************************************} Implementation Const VULLINGSGRAAD
0.50;
BASIS ADRES IO POORT = $300;
{ Vullingsgraad van meetgegevens op een datadisk(ette). } { Default I/O poort adres van acquisitie kaart }
{ Interrupt level: met Checkit V3.0 gekeken welke vrij was. Andere opties: 2 tim 7 zijn niet allemaal vrij te gebruiken. Zie ook de file "\ACQ\CHECKIT.LOO". }
DMA LEVEL
3;
{ DMA level: met Checkit V3.0 gekeken welke vrij was. Beide opties 1 en 3 waren vrij. Zie ook de file "\ACQ\CHECKIT.LOO".
MEMORY SEGMENT
$7AOO;
{ Geheugen segment: plaats voor opslag DMA gegevens
}
}
MAX WAARDE
4096 / 2;
{ Het maximale digitale signaal dat met bipo1aire acquisitie behaald kan worden }
Var
{*** Benodigde variabelen voor het aanroepen van de kaart ***} Functienummer, Error INTEGER; Parameter Small_array; Arrayl, Array2
-
11 -
Function Bereken Aanbevolen samplefreq : REAL; { De sample frequentie die hier uit komt is berekend in KiloHertz, en is voorlopig even hard in de code gezet. Deze kan later berekend worden op basis van de snelheid van de PC, de opslagcapaciteit en de hoeveelheid RAM geheugen die beschikbaar is. }
Var Tmp str Procestijd Dummy Aantal meetparen per kanaal Dummy L, -Vrije:Ruimte
string; REAL; BOOLEAN; INTEGER; LONGINT;
begin { Haal procestijd op uit variabel persgegevens: Var } Dummy := Lees Variabele Gegevens; Tmp str := Copy (Var procestijd, 1, 6); while (Tmp_str [1] =-, ') do {Voorloop spaties weghalen } Delete (Tmp str, 1, 1); Dummy := Bewaar Variabele Gegevens; Procestijd := String naar-real (Tmp str); Vrije ruimte := Bepaal vrIje ruimte-(Cfg data dir [1]); { Voor formule zie: REINDERS-, IMPLEMENTATIE MODEL WPA 1547, bIz. 8 } Dummy_L := Trunc (VULLINGSGRAAD * Vrije_ruimte) DIV 3; { Indien er teveel opgeslagen zou worden, kies een andere samplefrequentie, dit getal is gekozen dit de bovensgrens van INTEGERS is. } if (Dummy_L > MAXINT) then begin Dummy := Lees Proefinstellingen; Val (Prf aantal meetgegevens, Aantal meetparen per kanaal, Aantal meetparen per kanaal); -Dummy := Bewaar ProefInstellingen; end else Aantal meetparen per kanaal := Dummy L; Aantal meetparen per kanaal := Aantal meetparen per kanaal DIV 6; { Er zi]n 6 kanalen }-Bereken aanbevolen samplefreq := Procestijd / Aantal meetparen per kanaal; end; {Einde functie-Bereken_aanbevolen_samplefrequentTe } -Function Bereken Minimum samplefreq REAL; { De sample frequentie dIe hier uit komt is berekend in KiloHertz, en is voorlopig even hard in de code gezet. Deze kan later berekend worden op basis van de procestijd en een minimum aantal meetparen (bv 100). Wordt nu nog even aangenomen als de minimale samplefrequentie van de acquisitiekaart. } Var Dummy B BOOLEAN; Tmp str String; Procestijd REAL; Aantal_meetparen_per_kanaal INTEGER; begin { Haal procestijd op uit variabel persgegevens: VAR } Dummy B := Lees Variabele Gegevens; Tmp_str := Copy-(var_procestijd, 1, 6); while (Tmp str [1] =' ') do Delete (Tmp str, 1, 1); Dummy B := Bewaar Variabele Gegevens; Procestijd := StrIng_naar_real (Tmp_str); { Haal aantal meetparen op uit proefgegevens: PGG } Dummy_B := Lees_Proefinstellingen; Val (Prf aantal meetgegevens, Aantal meetparen per kanaal, Aantal meetparen per kanaal); -Dummy_B := Bewaar_proefinstellingen;
- 12 -
{ Er zijn 6 kanalen } Aantal_meetparen_per_kanaal := Aantal_meetparen_per_kanaal DIV 6; { Ga uit van 10% van de meetgegevens } Bereken minimum samplefreq := 0.1 * (Procestijd / Aantal_meetparen_per_kanaal); end; {Einde functie Bereken_Minimum_samplefreq } Function ACCl.-Maximum_samplefreq : REAL; { De sample frequentie die hier uit komt is berekend in KiloHertz, en is voorlopig even hard in de code gezet. Deze kan later berekend worden op basis van de snelheid van de PC, de opslagcapaciteit en de hoeveelheid RAM geheugen die beschikbaar is. Wordt nu nog even aangenomen als de maximale samplefrequentie van de acquisitiekaart op basis van programma conversie. }
begin if (AcCl.-type_kaart = '818') then ACCl.-Maximum_samplefreq := 100 else ACCl.-Maximum_samplefreq := 60 end;
{ kHz } { kHz }
Function Sla_acquisitie_gegevens_op (Kett INTEGER; Var Dummy I, Fout,i INTEGER; Outputfile TEXT; Dummy B BOOLEAN; begin {*** Functie 9: Zet acquisitie data om naar een array ***} {*** Gebruikt in beide kaarten ***} PCLabCard (9, } { Functienummer 9 Acq Aantal meetgegevens, { Aantal elementen } $7AOO, { Source memory segment, ??????????????? overgenomen uit WPA 895 bIz 57 } 0, { Begin conversie nummer } Dummy I, { Niet gebruikt } Dummy-I, { Niet gebruikt } Dummy-I, { Niet gebruikt } Fout); { Errors die kunnen optreden worden hierin opgeslagen } { Nadat deze functie is opgeslagen staat aIle geconverteerde data in Array1. In Array2 staan de kanalen waar de waarden in Array1 vandaan komen. Vanuit deze array's worden aIle elementen in een ketting gezet, waardoor ze makkelijker te bewerken zijn. } if NOT (Fout = 0) then Sla acquisitie gegevens op := Fout else begin For i := 1 to AANTAL MEETGEGEVENS do begin if NOT «i-l) MOO-6 = Array2 [i] MOD 6) then Dummy B := Insert in ketting (Kett, 0, M_AFWEZIG) else begIn Val (Prf Kanalen, Dummy I, Dummy I); Case «Array2 [i] - Dummy I) MOD-6) of o : if NOT (Prf F1 signaal [1] = '0') then Dummy B Insert in ketting (Kett, Array1 [i], M_NORMAAL) else Dummy B := Insert in ketting (Kett, 0, M_AFWEZIG); 1 if NOT (Prf F2 signaal T1] = '0') then Dummy B Insert in ketting (Kett, Array1 [i), M_NORMAAL) else Dummy B := Insert in ketting (Kett, 0, M_AFWEZIG); 2 if NOT (Prf F3 signaal T1] = '0') then Dummy_B Insert_in_ketting (Kett, Arrayl [i], M_NORMAAL)
:= :=
:=
- 13 -
3
4
5
else Dummy B := Insert in ketting (Kett, if NOT (Prf Sl signaal [1] = '0') then Dummy B := Insert in ketting (Kett, else Dummy B := Insert in ketting (Kett, if NOT (Prf S2 signaal [1] = '0') then Dummy B := Insert in ketting (Kett, else Dummy B := Insert in ketting (Kett, if NOT (Prf 53 signaal [1] = '0') then Dummy B := Insert in ketting (Kett, else Dummy_B := Insert_in_ketting (Kett,
0, M_AFWEZIG); Array1 (i), M_NORMAAL) 0, M_AFWEZIG); Array1 (i), M_NORMAAL) 0, M_AFWEZIG); Array1 [i), M_NORMAAL) 0, M_AFWEZIG);
end; end; end; Sla acquisitie gegevens op := 0; end; end; {Einde procedure Sla_acquisitie_gegevens_op } Function Acquisitie (Kett : Ketting ptr) : INTEGER; { Deze functie wordt voorlopig nog-geimplementeerd op de manier zoals deze ook in WPA 895 stond. Er wordt hier geen gebruik gemaakt van het stopcriterium. } Var Fout, Status, Direction, Dummy I, AantaI meetpunten, startnIvo, Triggernivo, TriggerKanaal : INTEGER; Dummy S : String; begin Val (prf startcriterium [1), Triggerkanaal, Triggerkanaal); Val (Prf-kanalen, Dummy I, Dummy I); Case Triggerkanaal of Dummy S := Copy (Prf F1 signaal, 3, 5); 1 2 Dummy-S:= Copy (prf-F2-signaal, 3, 5); 3 Dummy-S:= Copy (Prf-F3-signaal, 3, 5); 4 Dummy-S:= Copy (Prf-S1-signaal, 3, 5); 5 Dummy-S:= Copy (Prf-S2-signaal, 3, 5); 6 Dummy-s:= Copy (prf:S3:signaal, 3, 5); end; Val (Dummy S, Triggernivo, Triggernivo); Val (Copy (Prf startcriterium, 3, 5), Startnivo, Startnivo); Triggernivo :=-Trunc (0.5 + Startnivo * (MAX WAARDE / Triggernivo) ); Triggerkanaal := Triggerkanaal + Dummy I; Status := Port [BASIS ADRES IO POORT +-8]; Direction := 0; {Positieve rIchting } {*** Functie 19: Trigger-wacht functie {*** Gebruikt in beide kaarten ***} PCLabCard (19, Triggerkanaal, Triggernivo, Direction, Dummy I, Dummy-I, Dummy-I, Fout);
***}
- 14 -
{ { { { { { { {
Functienummer 19 Trigger kanaal Trigger nivo "Richting" acquistie Niet gebruikt Niet gebruikt Niet gebruikt Errors die kunnen optreden worden hierin opgeslagen
} } } } } } } }
if NOT (Fout = 0) then begin { Er is iets fout gegaan } end else begin {*** Functie 6: A/D-conversie functie {*** Gebruikt in beide kaarten ***} PCLabCard (6,
***}
Ac~Aantal_meetgegevens,
Triggernivo, 1, 0,
Dummy I, Dummy-I, Fout);
{ Functienummer 6 } { } { Trigger nivo } { Gebruik pacer ipv externe trigger } { Doorgaan totdat Aantal meet gegevens binnen zijn. I = Doorgaan totadt functie 7 aangeroepen } } { Niet gebruikt } { Niet gebruikt { Errors die kunnen optreden worden hierin opgeslagen }
if NOT (Fout = 0) then begin { Er is iets fout gegaan } end else begin {*** Functie 8: Controleer interrupt + DMA-status ***} {*** Gebruikt in beide kaarten ***} { Functienummer 8 PCLabCard (8, Dummy I, { Dummy-I, { Dummy-I, { Dummy-I, { Dummy-I, { Dummy-I, { { Errors die kunnen optreden Fout); worden hierin opgeslagen While NOT (Parameter [1] = 0) do begin
} } } } } } } }
{*** Functie 8: Controleer interrupt + DMA-status ***} {*** Gebruikt in beide kaarten ***} PCLabCard (8, { Functienummer 8 } Dummy I, { } Dummy-I, { } Dummy-I, { } Dummy-I, { } Dummy-I, { } Dummy-I, { } Fout); { Errors die kunnen optre den worden hierin opgeslagen } end; {Einde While not paramter [1] O} end; end; Sla acquisitie gegevens op (Kett); end; {Einde functie AcquIsitie } Function Initialiseer kaart : INTEGER; Var i, Tmp, Fout, Counter1, Counter2, Dummy_I INTEGER;
- 15 -
Function Counter berekenen (Procestijd, Aantal meetgegevens INTEGER) : INTEGER; begin Counter berekenen := Trunc (0.5 + 1000 * Sqrt (Procestijd / Acq_Aantal_meetgegevens»; end; {Einde Functie Counter berekenen } begin Dummy I := 0; {*** Functie 0: Initialiseer de kaartdriver ***} {*** Gebruikt in beide kaarten ***} PCLabCard (0, } { Functie 0 { I/O poort adres } BASIS ADRES 10 POORT, IRQ LEVEL, } { Interrupt level DMA-LEVEL, } { DMA level } Dummy I, { Niet gebruikt Dummy-I, } { Niet gebruikt Dummy-I, } { Niet gebruikt Fout); { Errors die kunnen optreden worden hierin opgeslagen } if NOT (Fout = 0) then Initialiseer kaart := Fout else begin if (Acq Type Kaart = '818') then begin i :=-Acq Kanalen; Repeat {*** Functie 23: Initialiseer de kaartdriver ***} {*** AIleen gebruikt in 818 111 ***} PCLabCard (23, { Functie 23 } i, { Kanaal dat ingesteld moet worden} Acq_inputrange, { Zie: PC-LabCard User Manual C & Pascal Software driver } 3.2.24, bladzijde 93 } Dummy I, { Niet gebruikt Dummy-I, } { Niet gebruikt Dummy-I, } { Niet gebruikt Dummy-I, } { Niet gebruikt { Errors die kunnen optreden worden Fout); hierin opgeslagen } Inc (i); until «i > Acq Kanalen + 6) OR (NOT (Fout = 0»); end; {Einde If Acq Type Kaart = '818' Dit is voor de 718 niet nodig mogelijk deze altijd met een standaard input werkt van -10 tot +10 Volt. } if NOT (Fout = 0) then Initialiseer kaart := Fout else begin {*** Functie 1: Initialiseer de kaart ***} {*** Gebruikt in beide kaarten ***} PCLabCard (1, { Functienummer 1 } Ac~Kanalen, { I e kanaal van acquisitie } Acq Kanalen + 6,{ 6e (laatste) kanaal van acquisitie } Dummy I, { Niet gebruikt } Dummy-I, { Niet gebruikt } Dummy-I, { Niet gebruikt } Dummy-I, { Niet gebruikt } Fout); { Errors die kunnen optreden worden hierin opgeslagen } Initialiseer Kaart := Fout; end; if NOT (Fout = 0) then Initialiseer kaart := Fout else begin {*** Functie 17: Set pacer trigger rate ***} {*** Gebruikt in beide kaarten ***} Val (Var procestijd, Dummy I, Dummy I); Val (Prf=Aantal_meetgegevens, Tmp, Tmp);
- 16
Counter1 := Counter berekenen (Dummy I, Tmp); Counter2 := Counterl; PCLabCard (17, { Functienummer 17 Counter1, {De berekening van de counters staat Counter2, { i n PCL-718 PASCAL SUPPORT, USER MANUAL op bIz 69 en in PCL-818 PASCAL SOFTWARE DRIVER op bIz 83 Dummy I, {Niet gebruikt Dummy-I, {Niet gebruikt Dummy-I, {Niet gebruikt Dummy-I, {Niet gebruikt Dummy-I, {Niet gebruikt Fout); {Errors die kunnen optreden worden hierin opgeslagen Initialiseer Kaart := Fout; end; end; end; {Einde functie Initialiseer kaart INTEGER}
}
} } } } } } }
Procedure PCLabCard (F nummer, parO, par1, par2, par3, par4, parS INTEGER; Var err INTEGER) ; begin Parameter [0) := parO; Parameter [1) := par1; Parameter [2) := par2; Parameter [3) := par3; Parameter (4) := par4; Parameter (5) := parS; Functienummer := ~ nummer; If (Acq Type kaart-= '718') then PCL7l8 (Functienummer, Parameter [0], Array1 [0), Array2 [0), Error); else If (Acq Type kaart = '818') then PCL818 (Functienummer, Parameter [0), Array1 [0), Array2 [0), Error); err := Error; end; {Einde procedure PCLabCard } Procedure Baal gegevens; Var Dummy B : BOOLEAN ; begin Lees instellingen; if Lees Proefinstellingen then begin Acq startcriterium := Prf startcriterium; Acq-Stopcriterium := Prf-stopcriterium; Acq-Type kaart := Baal type kaart; Acq-F1 sIgnaal := Prf Fl signaal; Acq-F2-signaal := Prf-F2-signaal; Acq-F3-signaal := prf-F3-signaal; Aci:s1=signaal := prf=sl=signaal; Ac~S2 signaal := Prf S2 signaal; Ac~s3=signaal := prf=s3=signaal; Acq samplefreq := String naar real (Prf samplefreq); Val-(Prf kanalen, Acq Kanalen, Acq Kanalen); Val (Prf-aantal meetgegevens, Acq Aantal meetgegevens, Acq=Aantal=meetgegevens); -
- 17 -
case Prf inputrange of '1' -Ac~inputrange:= 3; '2' Acq inputrange := 2; '3' Acq-inputrange:= 1; '4' Acq-inputrange:= 0; '5' Acq-inputrange:= 8; end; end; Bewaar instellingen; Dummy B := Bewaar Proefinstellingen; end; {Einde procedure Haal_gegevens } Function Haal Type Kaart : String; begin -Lees instellingen; Haal-type kaart := Cfg type kaart; Bewaar instellingen; end; begin
{Begin UNIT Init_Acq }
Haal gegevens;
Ac~aanbevolen_samplefreq:=
Bereken aanbevolen samplefreq; Acq_minimum_samplefreq := Bereken_minimum_samplefreq; end.
{Einde UNIT Init_Acq }
- 18 -
1.2
unit INST AMP.PAS.
{***************************************************************************} *}
{*
{* {* {* {* {*
Unit Versie Functie
Inst AMP *} 1.0 *} Binnen deze unit worden procedures gegeven voor het*} ophalen en opslaan van het aantal meetpunten van *} een persproef. *}
Taal Systeemeisen
Borland Turbo Pascal versie 6.0 5 bytes vrije schijfruimte in de datadirectory
*} *}
Auteur
P.J.M. Reinders R.J.J. de Coninck 4 augustus 1993 18 november 1993
*} *} *} *} *}
Technische Universiteit Eindhoven, Laboratorium voor Omvormtechnologie.
*} *}
{*
*}
{* {* {*
*}
{* {* {* {* {*
Aanmaakdatum Datum laatste wijziging
{*
*}
{* {*
Copyright (C)
*}
{*
{* Gebruikt in Persproef-Analyse Programma versie 2.00 *} Unit Ketting *} {* {* Unit *} {***************************************************************************} Unit Inst_AMP; {***************************************************************************} {* Declaratie-gedeelte *} {***************************************************************************} Interface Uses { Library}
Inst_Io, DefInit, Inst_PGG;
type AantalRecord = Record F1, F2, F3, Sl, S2, S3 integer; end; data aantal = File of AantalRecord; Procedure Haal_aantal_meetpunten_op (var ptr : AantalRecord; Bestand : String); {*
In Functie Uit
De naam van het bestand waaruit het aantal meetpunten gehaald moet worden. ptr is een record waarin het aantal meetpunten word ingezet. Het ophalen van het aantal meetpunten van een bepaalde proef Het aantal meetpunten.
*}
Procedure Bewaar_aantal_meetpunten (ptr : AantalRecord; Bestand
String);
{*
In Functie Uit
Het aantal meetpunten record. Bestandsnaam. Deze procedure slaat het aantal meetgegevens op in file .
*}
- 19 -
{***************************************************************************} Implementatie-gedeelte
{*
*}
{***************************************************************************} Implementation Procedure Bewaar_aantal_meetpunten (ptr AantalRecord; Bestand Var Data data_aantal; begin { Open het bestand met het aantal meetpunten } Assign (Data, Bestand); Rewrite (Data); Write (Data, Ptr); { Sluit bestand } Close (Data); end;
string) ;
Procedure Haal_aantal_meetpunten_op (var ptr AantalRecord; Bestand Var Data data aantal; s string; begin { Open het bestand met het aantal meetpunten } Assign (Data, Bestand); Reset (Data); Read (Data, Ptr); { Sluit bestand } Close (Data); end; end.
{ Einde Unit Inst AMP }
-
20 -
string) ;
unit INST IO.PAS
1.3
{***************************************************************************} {* {* {*
{* {* {* {* {* {* {* {* {*
{* {* {* {*
Unit Versie Functie
INST 10 1.0 De routines in deze unit worden gebruikt voor het lezen en schrijven van het instellingen-bestand.
*}
*} *}
*}
Taal Systeemeisen Auteur Aangepast door Aanmaakdatum Datum laatste wijziging Copyright (C)
{* {*
{* {*
*} *}
Gebruikt in
Borland Turbo Pascal versie 6.0 IBM compatible XT of hoger C.P.I. van de Werff P.J.M. Reinders R.J.J. de Coninick 21 november 1992 13 november 1993 Technische Universiteit Eindhoven, Laboratorium voor omvormtechnologie. Persproef-Analyse Programma versie 2.00
*} *} *} *} *} *}
*} *} *} *} *} *}
*} *}
{***************************************************************************} Unit Inst_IO;
{***************************************************************************} Declaratie-gedeelte
{*
*}
{***************************************************************************} Interface Uses { Library } Definit, Diskfunc; Procedure Lees_instellingen; {*
In Functie
Leest het instellingenbestand Persprf.ins. Dit bestand bevat een aantal voor het Persproef-Analyse Programma belangrijke instellingen. Dit bestand wordt gezocht in de directory van waaruit het Persproef-Analyse Programma wordt opgestart. De gelezen waarden worden opgeslagen in de variabelen die gedefinieerd zijn in de unit Definit.pas.
Uit *}
Procedure Bewaar_instellingen; {*
In Functie
Bewaart een aantal voor het persproef-Analyse Programma belangrijke instellingen in het bestand Persprf.ins. Dit bestand wordt bewaard in de programma-directory. De te bewaren gegevens zijn afkomstig uit de variabelen die gedefinieerd zijn in de unit Definit.pas.
Uit *}
Function Controleer directories_aanwezig
Boolean;
{*
In Functie Out
Controleerd of de directories in het instellingen bestand bestaan. Retoutneert : True -> indien alles aanwezig is
- 21 -
False -> indien niet alles aanwezig is. *}
{***************************************************************************} {*
Implementatie-gedeelte
*}
{***************************************************************************} Implementation Const {*** Aanduiding voor een niet gebruikt opslagmedium ***} NIET GEBRUIKT = '0'; Function Controleer directories_aanwezig var Aanwezig, Hulp Boolean; Lengte Integer;
Boolean;
begin Aanwezig := True; Hulp := False; Lengte:= Length(Cfg prog dir); Hulp := Directory aanwezIg(copy(Cfg prog dir, 1, Lengte-1» if (Hulp) then begin Lengte:= Length(Cfg data dir); hulp := Directory aanwezIg(copy(Cfg data dir, 1, Lengte-1» if (Hulp) then begin Lengte:= Length(Cfg datal dir); hulp := Directory aanwezig(copy(Cfg datal dir, 1, Lengte-1»; if (Hulp) then -begin Lengte:= Length(Cfg tijd dir); hulp := Directory aanwezIg(copy(Cfg tijd dir, 1, Lengte-1»; if (NOT Hulp) then Aanwezig := False; end else Aanwezig := False; end else Aanwezig := False; end else Aanwezig := False; Controleer directories aanwezig := Aanwezig; end; { Interne procedure-controleer directories } Procedure Lees instellingen; Var Instellingen bestand Text; Drive tellerInteger; 5.25" DD Opslag_type Integer; { Waarde: 0 5.25" HD 1 2 = 3.5" DD 3 = 3.5" HD 4 HDD Niet_gebruikt } 5 begin { Initialiseer arrays met opslagmedium-specificaties } for Drive teller := 1 to MAX AANTAL DRIVES do begin Drive aanduiding[Drive teller) := NIET GEBRUIKT; orive-type[Drive teller) := Niet gedefInieerd; end; { Lees instellingen } Assign(Instellingen bestand, 'Persprf.ins'); Reset(Instellingen_bestand); ReadLn(Instellingen_bestand, Cfg_prog_dir);
-
22 -
ReadLn(Instellingen bestand, Cfg data dir); ReadLn(Instellingen-bestand, Cfg-dataI dir); ReadLn(Instellingen-bestand, Cfg-tijd dir); ReadLn(Instellingen-bestand, Cfg-type-kaart); ReadLn(Instellingen-bestand, Cfg-toeg-code); ReadLn(Instellingen-bestand, Cfg-print type); ReadLn(Instellingen=bestand, Lengte verwerkte persproef); ReadLn(Instellingen bestand, Gebruikte drives); for Drive teller :=-1 to Gebruikte drives do begin ReadLn(Instellingen bestand, Drive aanduiding[Drive teller]); ReadLn(Instellingen-bestand, Opslag type); case Opslag type ofo Drive-type[Drive teller] := DiskS 25DD; Drive-type [Drive-teller] := Disk5-25HD; 1 2 Drive-type [Drive-teller] := Disk3-5DD; 3 Drive-type [Drive-teller] := Disk3-5HD; 4 Drive-type [Drive-teller] := HDD; 5 Drive-type [Drive-teller] := Niet_gedefinieerd; end; end; Close(Instellingen bestand); end; { Procedure Lees_instellingen } Procedure Bewaar instellingen; Var Instellingen-bestand : Text; Drive tellerInteger; opslag_type : Integer; { Waarde: 0 = 5.25" DD 1 5.25" HD 2 = 3.5" DD 3 = 3.5" HD 4 HDD 5 = Niet_gebruikt } begin { Bewaar instellingen } Assign(Instellingen bestand, Cfg prog dir + 'Persprf.ins'); Rewrite(Instellingen_bestand); WriteLn(Instellingen bestand, Cfg prog dir); WriteLn(Instellingen-bestand, Cfg-data-dir); WriteLn(Instellingen-bestand, cfg-dataI dir); WriteLn(Instellingen-bestand, Cfg-tijd dir); WriteLn(Instellingen-bestand, Cfg-Type-kaart); WriteLn(Instellingen-bestand, Cfg-toeg-code); writeLn(Instellingen-bestand, cfg-print type); WriteLn(Instellingen-bestand, Lengte_verwerkte_persproef); WriteLn(Instellingen-bestand, Gebruikte drives); for Drive teller := I to Gebruikte drives do begin WriteLn(Instellingen bestand, Drive aanduiding[Drive teller]); case Drive type[Drive teller] of DiskS 250D :-Opslag type := 0; Disk5-25HD Opslag-type := 1; Disk3-5DD Opslag-type := 2; Disk3-5HD Opslag-type := 3; HDD Opslag-type := 4; Niet gedefinieerd Opslag-type:= 5; end; WriteLn(Instellingen bestand, opslag_type); end; Close(Instellingen bestand); end; { Procedure Bewaar instellingen } end. { Unit Inst_IO.pas-}
- 23 -
1.4
unit INST PGG.PAS
{***************************************************************************} {*
{* {* {* {*
*}
Unit Versie Functie
INST PGG *} 1.0 *} De routines in deze unit worden gebruikt voor het *} lezen en schrijven van de instellingen van de proef*}
Taal Systeemeisen Auteur
Borland Turbo Pascal versie 6.0 IBM compatible XT of hoger P.J.M. Reinders R.J.J. de Coninck 16 juni 1993
{*
{* {* {* {* {* {* {*
*}
Aanmaakdatum Datum laatste wijziging
12 november 1993
{*
{* {*
*}
Copyright (C)
Technische Universiteit Eindhoven, Laboratorium voor Omvormtechnologie.
*} *}
Gebruikt in
Persproef-Analyse Programma versie 2.00 Acquisitie gedeelte en Verwerkings gedeelte.
*} *}
{*
{* {*
*} *} *} *} *} *} *}
*}
{*
*}
{***************************************************************************} Unit Inst_PGG; {***************************************************************************} {* Declaratie-gedeelte *} {***************************************************************************} Interface Uses Var
Definit, Inst_IO, Diskfunc, Naam; {*** Proef variabelen ***} Prf kanalen, Prf-pers, prf=inputrange CHAR; Prf Sl signaal, Prf-s2-signaal, Prf-s3-signaal, Prf-F1-signaal, Prf-F2-signaal, Prf-F3-signaal, Prf-aantal meetgegevens, Prf-startcriterium, Prf-stopcriterium, prf:samplefreq String; Dummy
Char;
Function Lees proefinstellingen (PRV_naam :string): BOOLEAN; {*
-
In Functie : Leest de instellingen van de pers uit het bestand Pers- en Proefgegevens. Dit bestand bevat een aantal voor het Persproef-Analyse Programma belangrijke instellingen. Het wordt gezocht in de directory van waaruit het Persproef-Analyse Programma wordt opgestart. Uit *}
-
24 -
Function Bewaar Proefinstellingen (PRV naam :string): BOOLEAN; {*
-
-
In Functie : Bewaart de instellingen van de pers in het bestand Pers- en Proefgegevens. Het bevat een aantal voor het Persproef-Analyse Programma. Dit bestand wordt bewaard in de programma-directory. Uit *}
{***************************************************************************} Implementatie-gedeelte
{*
*}
{***************************************************************************} Implementation Function Lees Proefinstellingen (PRV naam :string): BOOLEAN; Var Instellingen bestand Text; Regel : String[34]; begin Assign (Instellingen_Bestand, PRV_naam);
{$I-} Reset (Instellingen Bestand);
{$I+}
-
if (IOResult = 0) then begin ReadLn(Instellingen Bestand, Regel); if (Regel = Persproef Analyse Programma V200) then begin ReadLn (Instellingen Bestand, Prf sarnplefreq); , ReadLn (Instellingen-Bestand, Prf-aantal meetgegevens); ReadLn (Instellingen-Bestand, Prf-inputrange); ReadLn (Instellingen-Bestand, Prf-startcriterium); ReadLn (Instellingen-Bestand, Prf-stopcriterium); ReadLn (Instellingen-Bestand, Prf-kanalen); ReadLn (Instellingen-Bestand, Prf-pers); ReadLn (Instellingen-Bestand, prf-Fl signaal); ReadLn (Instellingen-Bestand, prf-F2-signaal); ReadLn (Instellingen-Bestand, Prf-F3-signaal); ReadLn (Instellingen-Bestand, Prf-Sl-signaal); ReadLn (Instellingen-Bestand, prf-S2-signaal); ReadLn (Instellingen-Bestand, Prf-S3-signaal); Lees Proefinstellingen := TRUE; close(Instellingen bestand); end else Lees Proefinstellingen := FALSE; end else Lees Proefinstellingen := FALSE; end; { Procedure Lees_Proefinstellingen } Function Bewaar Proefinstellingen (PRV_naam :string): BOOLEAN; Var Instellingen_bestand : Text; begin { Bewaar instellingen } Assign (Instellingen bestand, PRV naam); Rewrite(Instellingen=bestand); WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn
(Instellingen bestand, (Instellingen-bestand, (Instellingen-Bestand, (Instellingen-bestand, (Instellingen-bestand, (Instellingen-bestand, (Instellingen=bestand,
Persproef Analyse Programma V200); Prf samplefreq); Prf-aantal meetgegevens); Prf-inputrange); prf-startcriterium); Prf-stopcriterium); prf=kanalen);
- 25 -
WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn
(Instellingen bestand, (Instellingen-bestand, (Instellingen-bestand, (Instellingen-bestand, (Instellingen-bestand, (Instellingen-bestand, (Instellingen=bestand,
Prf pers)i Prf-Fl signaal)i Prf-F2-signaal)i Prf-F3-signaal)i Prf-sl-signaal)i Prf-s2-signaal)i prf=S3=signaal)i
Flush (Instellingen bestand); Close (Instellingen-bestand)i Bewaar ProefinstellTngen := TRUEi end; { Procedure Bewaar_Proefinstellingen } end. { Unit Inst_PGG.pas }
-
26 -
unit INST PRS.PAS
1.5
{***************************************************************************} {*
*}
{* {* {* {* {*
unit Versie Functie
INST PRS *} 1.0 *} Binnen deze unit vindt wordt de perscode opgeslagen*} en kan hij weer opgeroepen worden. *} Tevens vindt er controle van de perscode plaats *}
Taal Systeemeisen
Borland Turbo Pascal versie 6.0 IBM compatible XT of hoger CGA, EGA of VGA grafische kaart P.J.M. Reinders 6 juli 1993
{*
*}
{* {* {* {* {* {* {*
28 juli 1993
*} *} *} *} *} *} *}
Copyright (C)
Technische Universiteit Eindhoven, Laboratorium voor Omvormtechnologie.
*} *}
Gebruikt in
Persproef-Analyse Programma versie 2.00 Acquisitie gedeelte
*} *}
Auteur Aanmaakdatum Datum laatste wijziging
{*
*}
{* {* {*
*}
{* {* {*
*}
{***************************************************************************} Unit In~t_PRS; {***************************************************************************} {* Declaratie-gedeelte *} {***************************************************************************} Interface Uses { Run-time lib } Crt, Dos, { Library } Layout, Definit, Invoer, Inst_Io, Diskfunc;
KeyCodes, Vid_buff, Cursor,
Var PRS_perscode
String [8];
Function Bewaar_perscode (Var Perscode
String)
INTEGER;
{*
In Functie
String met perscode. Slaat de perscode op in het bestand .PRS. Retourneert: o Bestand opgeslagen, alles OK. 1 Bestand bestaat al.
Uit *}
Function Verwijder_perscode (Var Perscode
string)
INTEGER;
{*
In Functie
String met perscode. Verwijderd de perscode uit het bestand .PRS. Retourneert: o Bestand verwijderd, alles OK. 1 Bestand niet gevonden.
Uit *}
Function Controleer_perscode (VAR Perscode {*
In
: Perscode string.
-
27 -
string)
INTEGER;
Functie
Controleert de perscode op geldigheid. Retourneert: o Perscode OK. Eerste letter is geen 'P'. 1 2 Tweede letter is geen 'A', '0', , N', , R' OF ' Z ' • 3 Maand klopt niet. 4 Proefnummer klopt niet.
'F',
'K', 'L', 'M',
Uit *}
{***************************************************************************} Implementatie-gedeelte
{*
*}
{***************************************************************************} Implementation Function Bewaar perscode (Var Perscode Var perscode file TEXT; file exists BOOLEAN;
string)
INTEGER;
begin PRS perscode := Perscode; Lees instellingen;
{$I-} assign (perscode file, Cfg_data_dir + Perscode + '.PRS'); Reset(perscode fIle); Close(perscode-file);
{$I+}
-
file_exists := (IOResult = 0) and (Cfg_data_dir + Perscode + '.PRS' <> "); if (file exists = TRUE) then begin Bewaar perscode := 1; PRS perscode := " ; end else begin Bewaar perscode := 0; Rewrite (perscode file); PRS perscode := Perscode; WriteLn (perscode file, perscode); Flush (perscode fIle); Close (perscode-file); end; Bewaar instellingen; end; {EInde functie Bewaar_perscode } Function Verwijder perscode (Var Perscode Var perscode file TEXT; file exists BOOLEAN;
string)
INTEGER;
begin PRS perscode := Perscode; Lees instellingen;
{$I-} assign (perscode file, Cfg_data_dir + Perscode + '.PRS'); Reset(perscode fIle); Close(perscode-file); {$I+}
-
file_exists := (IOResult = 0) and (Cfg_data_dir + Perscode + '.PRS' <> "); if (file_exists = TRUE) then begin Verwijder perscode := 0; Erase (perscode file); PRS_perscode :=-"; end else begin -
28 -
Verwijder perscode := 1; end; Bewaar instellingen; end; {EInde functie Verwijder_perscode } Function Controleer_perscode (Var Perscode Var Dummy CHAR; INTEGER; Tmp
string)
INTEGER;
begin { Controleer de lengte van de string. Ongelijk aan 8 wordt niet geaccepteerd. } if NOT (Length (Perscode) = 8) then begin Controleer perscode := 4; end else begin { Controle eerste letter perscode. Dit moet een 'P' zijn. } Perscode [1] := Upcase (Perscode [1]) ; Perscode [2] := Upcase (Perscode [2]) ; if NOT (Perscode [1] = 'P') then Controleer Perscode := 1 else begin { Controle tweede letter perscode. Deze kan 'A', '0', 'F', 'K', 'L', 'M', 'N', 'R' of 'z' zijn. } if NOT (Perscode [2] IN [' A', , 0', , F', , K', , L', , M', , N', , R', , Z ' ] ) then Controleer Perscode := 2 else begin { Controleer de weeknummer-cijfers op positie 5 en 6 in de perscode string op geldigheid. } Val (Copy (Perscode, 5, 2), Tmp, Tmp); if NOT (Length (Copy (Perscode, 5, 2» 2) then Controleer perscode := 3 else if NOT (Tmp IN [1 •• 53]) then Controleer perscode := 3 else begin Controleer perscode := 0; PRS perscode := Perscode; end; {-Einde if 'controle maand' else} end; {Einde if 'controle tweede letter' else } end; {Einde if 'controle eerste letter' else } end; {Einde if 'lengte perscode ongelijk aan 8' else} end; {Einde functie Controleer_perscode } end.
{Einde INST PRS.PAS }
- 29 -
1.6
unit INST PRV.PAS
{***************************************************************************} {* {* {* {* {* {* {*
Unit Versie Functie
INST PRV 1.0 De routines in deze unit worden gebruikt voor het lezen en schrijven van de rand-voorwaarden van de pers.
*} *} *} *} *} *}
{* {* {* {*
Taal Systeemeisen Auteur
{* {*
Aanmaakdatum Datum laatste wijziging
Borland Turbo Pascal versie 6.0 IBM compatible XT of hoger P.J.M. Reinders R.J.J de Coninck 1 juli 1993
*} *} *} *} *} *}
{* {* {* {* {* {* {*
*}
13 november 1993
*} *}
Copyright (C)
Technische Universiteit Eindhoven, Laboratorium voor Omvormtechnologie.
Gebruikt in
Persproef-Analyse Programma versie 2.00 Acquisitie- en Verwerkings gedeelte
*} *} *} *} *} *}
{*
{***************************************************************************}
Unit Inst_PRV;
{***************************************************************************} Declaratie-gedeelte
{*
*}
{***************************************************************************}
Interface Uses Var
Definit, Inst_Io, Diskfunc, Naam;
{*** Rand-voorwaarden ***} PRV projectleider, PRV-type pers, PRV-serienummer pers, PRV-materiaalsoort, PRV-herkomst materiaal, PRV-werkstofnummer, PRV-sO, PRV-datum, PRV-trekproefcode 1, PRV-trekproefcode-2, PRV-trekproefcode-3, PRV-operator, PRv-opmerking1, PRV-opmerking2, PRV-opmerking3, PRV=opmerking4, PRV_opmerkingS Dummy
string; Char;
Function Lees Proef Randvoorwaarden (PRV naam :string): BOOLEAN; {*
-
In Functie Uit
-
-
Leest de proef-randvoorwaarden uit het bestand Default.PRV.
*}
-
30 -
Function Bewaar Proef Randvoorwaarden (Prv_naam : string)
BOOLEAN;
{*
In Functie
Bewaart de instellingen van de pers in het bestand Default.PRV. Het wordt bewaard in de default programma-directory.
Uit *}
{***************************************************************************} Implementatie-gedeelte
{*
*}
{***************************************************************************} Implementation Function Lees Proef Randvoorwaarden (PRV naam :string): BOOLEAN; Var Instellingen bestand Text; Regel String[34]; begin Assign (Instellingen_Bestand, PRV_naam); {I-} Reset (Instellingen Bestand); {I+}
-
if (IOResult = 0) then begin ReadLn(Instellingen Bestand, Regel); if (Regel = Persproef Analyse Programma V200) then begin ReadLn (Instellingen Bestand, PRV projectleider); ReadLn (Instellingen-Bestand, PRV-type pers); ReadLn (Instellingen-Bestand, PRV-serienummer pers); ReadLn (Instellingen-Bestand, PRV-werkstofnummer); ReadLn (Instellingen-Bestand, PRV-materiaalsoort); ReadLn (Instellingen-Bestand, PRV-herkomst materiaal); ReadLn (Instellingen-Bestand, PRV-sO); ReadLn (Instellingen-Bestand, PRV-datum); ReadLn (Instellingen-Bestand, PRv-trekproefcode 1); ReadLn (Instellingen-Bestand, PRV-trekproefcode-2); ReadLn (Instellingen-Bestand, PRV-trekproefcode-3); ReadLn (Instel1ingen-Bestand, PRV-operator); ReadLn (Instellingen-Bestand, PRV-opmerking1); ReadLn (Instellingen-Bestand, PRV-opmerking2); ReadLn (Instellingen-Bestand, PRV-opmerking3); ReadLn (Instellingen-Bestand, PRV-opmerking4); ReadLn (Instellingen-Bestand, PRV-opmerkingS); Lees Proef Randvoorwaarden := TRUE; close(Instellingen bestand); end else Lees Proef Randvoorwaarden := FALSE; end else Lees Proef Randvoorwaarden := FALSE; end; { Procedure-Lees Proef Randvoorwaarden } Function Bewaar Proef Randvoorwaarden (PRV_naam :string) Var Instellingen_bestand : Text;
BOOLEAN;
begin { Bewaar instellingen } Assign (Instellingen bestand, PRV naam); Rewrite(Instellingen=bestand); WriteLn (Instellingen bestand, Persproef Analyse Programma V200); WriteLn (Instellingen-Bestand, PRV projectleider); WriteLn (Instellingen=Bestand, PRV=type_pers);
-
31 -
WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn
(Instellingen Bestand, (Instellingen-Bestand, (Instellingen-Bestand, (Instellingen-Bestand, (Instellingen-Bestand, (Instellingen-Bestand, (Instellingen-Bestand, (Instellingen-Bestand, (Instellingen-Bestand, (Instellingen-Bestand, (Instellingen-Bestand, (Instellingen-Bestand, (Instellingen-Bestand, (Inste1lingen-Bestand, (Instel1ingen:Bestand,
PRV serienummer pers); PRV-werkstofnummer); PRV-materiaalsoort); PRV-herkomst materiaal); PRV-sO); PRV-datum); PRV-trekproefcode 1); PRv-trekproefcode-2); PRV-trekproefcode-3); PRV-operator); PRV-opmerking1); PRV-opmerking2); PRV-opmerking3); PRV-opmerking4); PRv:opmerkingS);
Flush (Instellingen bestand); Close (Instellingen-bestand); Bewaar Proef Randvoorwaarden := TRUE; end; { Procedure Bewaar Proef Randvoorwaarden } end. { Unit Inst_PRV.pas }
- 32 -
1.7
unit INST VAR.PAS
{***************************************************************************} {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {*
Unit Versie Functie
INST VAR 1.0 De routines in deze unit worden gebruikt voor het lezen en schrijven van de variabele gegevens van de pers.
Taal Systeemeisen Auteur Aanmaakdatum Datum laatste wijziging
Borland Turbo Pascal versie 6.0 IBM compatible XT of hoger P.J.M. Reinders 1 juli 1993
Copyright (C)
Technische Universiteit Eindhoven, Laboratorium voor Omvormtechnologie.
Gebruikt in
Persproef-Analyse Programma versie 2.00 Acquisitie gedeelte
1 juli 1993
*} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *}
{***************************************************************************} Unit Inst_VARi {***************************************************************************} {* Declaratie-gedeelte *} {***************************************************************************} Interface
Uses Var
Definit, Inst_IO, Diskfunc, Naami {*** Variabele persgegevens ***} Var procestijd, Var-schnittslag druk, Var-schnittslag-slag, var-werkzeugsicherung, Var-festanschlag verstellung, Var-perskracht max druk, var-perskracht-max-kracht, Var-uitwerper max druk, Var-uitwerper-max-kracht, Var=onderste_slagbegrenzing_uitwerper, Var bovenste slagbegrenzing uitwerper, Var-onderste-slagbegrenzing-pers, Var-bovenste-slagbegrenzing-pers, var=vorschub=synchronsteuerung, Var luchtpunt blazen, Var-uitwerper-trekkussen punt van actie, Var-arbeitsgang 1, Var-arbeitsgang-2, Var-druckhaltezeit aan, Var-druckhaltezeit; Var-ausblasezeit, Var-dampfungzeit, Var-dampfung, Var-vorschub, Var-kurzhub ein, Var-einrichten ein, Var-tippen auf; Var-trekkussen ab, Var-trekkussen-auf, Var=auswerfer_auf,
-
33 -
Var auswerfer aus
string;
Var conversie perskracht, var:conversie:uitwerperkracht
REAL;
Function Lees_Variabele_Gegevens (Bestandnaam : string): BOOLEAN; {* In Bestandnaam dit is de het station de directory en de bestandnaam samen. Functie Leest de variabele pers gegevens uit het bestand Default.VAR. Uit
*} Function Bewaar_Variabele_Gegevens (Bestandnaam : string): BOOLEAN; {*
In Functie
Bestandnaam dit is de het station de directory en de bestandnaam samen. Bewaart de instellingen van de pers in het bestand Default.VAR. Het wordt bewaard in de default programma-directory.
Uit *}
{***************************************************************************} {* Implementatie-gedeelte *}
{***************************************************************************} Implementation Function Lees Variabele Gegevens (Bestandnaam Var Instellingen bestand Text; Regel String[34]; Dummy INTEGER; begin
string): BOOLEAN;
Assign (Instellingen_Bestand, Bestandnaam ); {I-}
Reset (Instellingen Bestand);
{I+}
-
if (IOResult = 0) then begin ReadLn(Instellingen Bestand, Regel); if (Regel = Persproef Analyse Programma V200) then begin ReadLn (Instellingen Bestand, Var procestijd); ReadLn (Instellingen-Bestand, Var-schnittslag druk); ReadLn (Instellingen-Bestand, Var-schnittslag-slag); ReadLn (Instellingen-Bestand, Var-werkzeugsicherung); ReadLn (Instellingen-Bestand, Var-festanschlag verstellung); ReadLn (Instellingen-Bestand, Var-perskracht max druk); ReadLn (Instellingen-Bestand, var-perskracht-max-kracht); ReadLn (Instellingen-Bestand, Var-uitwerper max druk); ReadLn (Instellingen-Bestand, Var-uitwerper-max-kracht); ReadLn (Instellingen-Bestand, Var-onderste slagbegrenzing uitwerper); ReadLn (Instellingen-Bestand, var-bovenste-slagbegrenzing-uitwerper); ReadLn (Instellingen-Bestand, var-onderste-slagbegrenzing-pers); ReadLn (Instellingen-Bestand, var-bovenste-slagbegrenzing-pers); ReadLn (Instellingen-Bestand, var-vorschub-synchronsteuerung); ReadLn (Instellingen-Bestand, Var-luchtpunt blazen); ReadLn (Instellingen-Bestand, Var-Uitwerper-trekkussen punt van actie); ReadLn (Instellingen-Bestand, Var-arbeitsgang 1); ReadLn (Instellingen-Sestand, Var-arbeitsgang-2); ReadLn (Instellingen-Bestand, Var-druckhaltezeit aan); ReadLn (Instellingen:Bestand, var:druckhaltezeit); -
34 -
ReadLn ReadLn ReadLn ReadLn ReadLn ReadLn ReadLn ReadLn ReadLn ReadLn ReadLn
(Instellingen Bestand, (Instellingen-Bestand, (Instellingen-Bestand, (Instellingen-Bestand, (Instellingen-Bestand, (Instellingen-Bestand, (Instellingen-Bestand, (Instellingen-Bestand, (Instellingen-Bestand, (Instellingen-Bestand, (Instellingen=Bestand,
Var ausblasezeit); Var-dampfungzeit); Var-dampfung); Var-vorschub); Var-kurzhub ein); Var-einrichten ein); Var-tippen auf); Var-trekkussen ab); Var-trekkussen-auf); Var-auswerfer auf); Var=auswerfer=aus);
Val (Copy (Var perskracht max kracht, 30, 6), Var conversie-perskracht, Dummy); Val (Copy (Var uitwerper max kracht, 30, 6), Var conversie uitwerperkracht, Dummy); Lees Variabele cegevens :~ TRUE; close(Instellingen bestand); end else Lees Variabele Gegevens := FALSE; end else Lees Variabele Gegevens := FALSE; end; { Procedure Lees_Variabele_Gegevens } Function Bewaar Variabele Gegevens (Bestandnaam Var Instellingen_bestand : Text;
string): BOOLEAN;
begin { Bewaar instellingen } Assign (Instellingen bestand, Bestandnaam ); Rewrite(Instellingen=bestand); WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn
(Instellingen bestand, (Instellingen-Bestand, (Instellingen-Bestand, (Instellingen-Bestand, (Instellingen-Bestand, (Instellingen-Bestand, (Instellingen-Bestand, (Instellingen-Bestand, (Instellingen-Bestand, (Instellingen-Bestand, (Instellingen-Bestand, (Instellingen-Bestand, (Instellingen-Bestand, (Instellingen-Bestand, (Instellingen-Bestand, (Instellingen-Bestand, (Instellingen=Bestand,
Persproef Analyse Programma V200); Var procestijd); Var-schnittslag druk); Var-schnittslag-slag); Var-werkzeugsiclierung); Var-festanschlag verstellung); var-perskracht max druk); Var-perskracht-max-kracht); Var-uitwerper max druk); Var-uitwerper-max-kracht); Var-onderste slagEegrenzing uitwerper); Var-bovenste-slagbegrenzing-uitwerper); Var-onderste-slagbegrenzing-pers); Var-bovenste-slagbegrenzing-pers); Var-vorschub-synchronsteuerung); Var-luchtpunt blazen); var=Uitwerper=trekkussen_punt_van_actie);
WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn
(Instellingen Bestand, (Instellingen-Bestand, (Instellingen-Bestand, (Instel1ingen-Bestand, (Instellingen-Bestand, (Instellingen-Bestand, (Instellingen-Bestand, (Instellingen-Bestand, (Instellingen-Bestand, (Instellingen-Bestand, (Inste1lingen-Bestand, (Instellingen-Bestand, (Instellingen-Bestand, (Instellingen-Bestand, (Instellingen=Bestand,
Var arbeitsgang 1); Var-arbeitsgang-2); Var-druckha1tezeit aan); Var-druckhaltezeit); Var-ausblasezeit); Var-dampfungzeit); Var-dampfung); Var-vorschub); Var-kurzhub ein); Var-einrichten ein); Var-tippen auf); Var-trekkussen ab); var-trekkussen-auf); Var-auswerfer auf); var=auswerfer=aus);
-
35 -
Close (Instellingen bestand); Bewaar Variabele Gegevens := TRUE; end; { Procedure Bewaar_variabele_Gegevens } end. { Unit Inst_VAR.pas }
-
36 -
1.8
unit INST VST.PAS
{***************************************************************************} {* {* {* {* {* {*
Unit Versie Functie
INST VST 1.0 De routines in deze unit worden gebruikt voor het lezen en schrijven van de Vaste gegevens van de pers.
*} *} *} *} *} *}
Borland Turbo Pascal versie 6.0 IBM compatible XT of hoger R.J.J. de Coninck 11 december 1993
*} *} *} *} *}
{* {*
Taal Systeemeisen Auteur Aanmaakdatum Datum laatste wijziging
{* {*
Copyright (C)
Technische Universiteit Eindhoven, Laboratorium voor Omvormtechnologie.
Gebruikt in
Persproef-Analyse Programma versie 2.00 Acquisitie gedeelte Verwerkings gedeelte
{* {* {* {*
{*
{* {* {* {* {* {*
*}
*} *} *} *} *} *} *} *} *}
{***************************************************************************}
Unit Inst_VSTi
{***************************************************************************} Declaratie-gedeelte
{*
*}
{***************************************************************************}
Interface Uses Var
Definit, Inst_IO, Diskfunc, Naami
{*** Vaste persgegevens ***} Vas Merk pers, Vas-Type-pers, Vas-Soort pers, Vas-Fabrikaat nr, Vas-Bestel nr~ Vas-TUE opdracht nr, Vas-Bouwjaar, Vas-Stempelkracht nominaal, Vas-Stempelslag nominaal, Vas-Uitwerper trekkussen kracht, vas-Uitwerper-trekkussen-slag, Vas-Opm stempelkracht, vas-Opm-Uitwerperkracht, Vas-Transfer breedte, Vas-Transfer-lengte, Vas-Inbouwhoogte max, vas-opspantafel breedte, Vas-Opspantafel-lengte, Vas-dikte tafel~ VaS-Centrale diameter, Vas-T sleuven diagonaal, Vas-stotertafel breedte, Vas-Stotertafel-lengte, Vas-Inspantap dIameter, vas-Inspantap-diepte, Vas-T sleuven-voor naar achter, Vas-UItwerper-trekkussen tafel breedte, Vas=Uitwerper=trekkussen=tafel=lengte, Vas_LVU, -
37 -
Vas SEZ, Vas-NKS, Vas-Totaal vermogen, Vas-Nachlaufweg, Vas-Sicherheits abst, VaS=Dampfung_persdruk_uitwerperdruk
string;
Function Lees_Vaste_Gegevens (Bestandnaam : string): BOOLEAN; {*
In Functie Uit
Bestandnaam dit is de het station de directory en de bestandnaam samen. Leest de Vaste pers gegevens uit het bestand Default.VST. True -> Ais alles is goed gegegaan. False -> Ais er iets is mis gegegaan.
*}
Function Bewaar_Vaste_Gegevens (Bestandnaam : string): BOOLEAN; {*
In Functie Uit
Bestandnaam dit is de het station de directory en de bestandnaam samen. Bewaart de instellingen van de pers in het bestand Default.VST. Het wordt bewaard in de default programma-directory. True -> Als alles is goed gegegaan. False -> Als er iets is mis gegegaan.
*}
{***************************************************************************} Implementatie-gedeelte
{*
*}
{***************************************************************************} Implementation Function Lees Vaste Gegevens (Bestandnaam Var -Instellingen bestand Text; Regel String[34];
string)
BOOLEAN;
begin Assign (Instellingen_Bestand, Bestandnaam);
{I-} Reset (Instellingen Bestand);
{I+}
-
if (IOResult = 0) then begin ReadLn(Instellingen Bestand, Regel); if (Regel = Persproef Analyse Programma V200) then begin ReadLn (Instellingen bestand, Vas Merk pers); ReadLn (Instellingen-bestand, Vas-Type-pers); ReadLn (Instellingen-bestand, Vas-Soort pers); ReadLn (Instellingen-bestand, Vas-Fabrikaat nr); ReadLn (Instellingen-bestand, Vas-Bestel nrT; ReadLn (Instellingen-bestand, Vas-TUE opdracht nr); ReadLn (Instellingen-bestand, Vas-Bouwjaar); ReadLn (Instellingen-bestand, Vas-Stempelkracht nominaal); ReadLn (Instellingen-bestand, Vas-Stempelslag nominaal); ReadLn (Instellingen-bestand, Vas-Uitwerper trekkussen kracht); ReadLn (Instellingen-bestand, Vas-Uitwerper-trekkussen-slag); ReadLn (Instellingen-bestand, Vas-Opm stempelkracht); ReadLn (Instellingen-bestand, vas-Opm-Uitwerperkracht); ReadLn (Instellingen-bestand, Vas-Transfer breedte); ReadLn (Instellingen-bestand, Vas-Transfer-Iengte); ReadLn (Instellingen-bestand, Vas-Inbouwhoogte max); ReadLn (Instellingen-bestand, Vas-Opspantafel breedte); ReadLn (Instellingen=bestand, vas=opspantafel=lengte);
-
38 -
ReadLn (Instellingen bestand, ReadLn (Instellingen-bestand, ReadLn (Instellingen-bestand, ReadLn (Instellingen-bestand, ReadLn (Instellingen-bestand, ReadLn (Instellingen-bestand, ReadLn (Instellingen-bestand, ReadLn (Instellingen-bestand, ReadLn (Instellingen-bestand, ReadLn (Instellingen-bestand, ReadLn (Instellingen-bestand, ReadLn (Instellingen-bestand, ReadLn (Instellingen-bestand, ReadLn (Instellingen-bestand, ReadLn (Instellingen-bestand, ReadLn (Instellingen-bestand, ReadLn (Instellingen-bestand, Lees Vaste Gegevens TRUE; close(Instellingen bestand); end else Lees Vaste Gegevens := FALSE; end else Lees Vaste Gegevens := FALSE; end; { procedure-Lees_vaste_Gegevens }
:=
Vas dikte tafel); Vas-Centrale diameter); Vas-T sleuven diagonaal); Vas-Stotertafel breedte); Vas-Stotertafel-lengte); Vas-Inspantap dIameter); vas-Inspantap-diepte); Vas-T sleuven-voor naar achter); vas-uItwerper-trekkussen tafel breedte); vas-Uitwerper-trekkussen-tafel-lengte); Vas-LVU); -Vas-SEZ); vas-NKS); Vas-Totaal vermogen); Vas-Nachlaufweg); Vas-Sicherheits abst); vas:Dampfung_persdruk_uitwerperdruk);
Function Bewaar Vaste Gegevens (Bestandnaam Var -Instellingen_bestand : Text;
string): BOOLEAN;
begin { Bewaar instellingen } Assign (Instellingen bestand, Bestandnaam); Rewrite(Instellingen:bestand); WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn WriteLn
(Instellingen bestand, (Instellingen-bestand, (Instellingen-bestand, (Instellingen-bestand, (Instellingen-bestand, (Instellingen-bestand, (Instellingen-bestand, (Instellingen-bestand, (Instellingen-bestand, (Instellingen-bestand, (Instellingen-bestand, (Instellingen-bestand, (Instellingen-bestand, (Instellingen-bestand, (Instellingen-bestand, (Instellingen-bestand, (Instellingen-bestand, (Instellingen-bestand, (Instellingen-bestand, (Instellingen-bestand, (Instellingen-bestand, (Instellingen-bestand, (Instellingen-bestand, (Instellingen-bestand, (Instellingen-bestand, (Instellingen-bestand, (Instellingen-bestand, (Instellingen-bestand, (Instellingen-bestand, (Instellingen-bestand, (Instellingen-bestand, (Instellingen:bestand,
Persproef Analyse Programma V200); Vas Merk pers); Vas-Type-pers); Vas-Soort pers); Vas-Fabrikaat nr); Vas-Bestel nr); Vas-TUE opdracht nr); Vas-Bouwjaar); Vas-stempelkracht nominaal); Vas-stempelslag nominaal); Vas-Uitwerper trekkussen kracht); Vas-Uitwerper-trekkussen-slag); Vas-Opm stempelkracht); Vas-Opm-Uitwerperkracht); Vas-Transfer breedte); Vas-Transfer-lengte); Vas-Inbouwhoogte max); Vas-Opspantafel breedte); Vas-Opspantafel-lengte); Vas-dikte tafel); Vas-Centrale diameter); Vas-T sleuven diagonaal); Vas-stotertafel breedte); Vas-Stotertafel-lengte); vas-Inspantap dIameter); Vas-Inspantap-diepte); Vas-T sleuven-voor naar achter); vas-uItwerper-trekkussen tafel breedte); vas-Uitwerper-trekkussen-tafel-lengte); Vas-LVU); -Vas-SEZ); Vas:NKS);
-
39
WriteLn (Instellingen bestand, Vas Totaal vermogen); WriteLn (Instellingen-bestand, Vas-Nachlaufweg); WriteLn (Instellingen-bestand, Vas-Sicherheits abst); WriteLn (Instellingen-bestand, Vas=Dampfung_persdruk_uitwerperdruk); Close (Instellingen bestand); Bewaar Vaste Gegevens := TRUE; end; { Procedure Bewaar_vaste_Gegevens } end. { Unit Inst_VST.pas }
-
40 -
unit KETTING.PAS
1.9
{***************************************************************************} {* {*
Unit Versie Functie
{* {*
KETTING 1.0 Binnen deze unit wordt de geregistreerde data in een ketting gezet. Deze ketting is in twee richtingen te 1ezen.
{* {* {* {*
{*
Taal Systeemeisen
{* {*
Auteur
{* {* {* {* {* {* {* {*
Aanmaakdatum Datum laatste wijziging
{*
Borland Turbo Pascal versie 6.0 Hoeveelheid RAM > het aantal geregistreerde gegevens. P.J.M. Reinders R.J.J. de Coninck 23 juni 1993 17 november 1993
Copyright (C)
Technische Universiteit Eindhoven, Laboratorium voor Omvormtechnologie.
Gebruikt in
Persproef-Analyse Programma versie 2.00 Unit PROEF Unit Ketting_Ver
{* {* {*
*} *} *} *}
*} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *}
{***************************************************************************}
Unit Ketting;
{***************************************************************************} Declaratie-gedeelte
{*
*}
{***************************************************************************} Interface Uses { Library } Type Richting Markeringstypen = ( M BEGIN, M-EINDE, M-VERWIJDERING, M-AFWEZIG, M-NORMAAL, M-FOUT, V-BEGIN, V-EINDE, V-BEGIN VERWIJDER, V-EINDE-VERWIJDER
{ { { { { { { { { {
Markeer Markeer Markeer Markeer Markeer Markeer Markeer Markeer Markeer Markeer
het begin van de ketting het einde van de ketting een verwijderd record afwezig record (= non actief kanaal) een normaal (ongemarkeerd) record een fout record het beginpunt van de verwerking het eindpunt van de verwerking punten voor het beginpunt punten na het eindpunt
} } } } } } } } } }
);
Ketting_Ptr
= AMeetRecord;
MeetRecord = RECORD Volgende, } { Pointer naar volgende Meetrecord Vorige Ketting_Ptr;{ Pointer naar vorige Meetrecord } Waarde Integer ; { Waarde van het geregistreerde signaal } Markering Markeringstypen; end; {Einde Record } OpslagRecord = Record
- 41 -
F1, F2, F3, 51, 52, 53 end;
{ { { { { {
Kracht 1 signaal } Kracht 2 signaal } Kracht 3 signaa1 } Weg 1 signaal } Weg 2 signaal } Weg 3 signaal }
datagegevens
integer;
File of OpslagRecord;
Var K ptr Function {*
In Functie
Deze functie initialiseert een ketting. Retourneert: De ketting kan niet gemaakt; Pointer -- NUL Startadres van de ketting. Pointer <> NUL
Uit *}
Procedure Verwijder_ketting (Kett : Ketting_Ptr); {*
In Functie
Pointer naar een ketting. Deze procedure verwijdert een ketting uit het geheugen. Retourneert:
Uit *}
Procedure Sla_ketting_op (Kett : Ketting_Ptr; Bestandsnaam : string); {*
In Functie
Pointer naar een ketting; Naam van het hestand waarin de ketting wordt opgeslagen. Deze procedure slaat een ketting op in een hestand. Retourneert:
Uit *}
Function Insert_in_ketting (Kett : Ketting ptr; Meetwaarde : INTEGER; Mark : Markeringstypen) : BOOLEAN; {*
In Functie
Pointer naar een ketting; Meetwaarde. Deze procedure voegt een record achter aan de genoemde ketting toe. Retourneert: TRUE Meetwaarde is in de ketting opgenomen. FALSE : Meetwaarde is niet in de ketting opgenomen.
Uit *}
Procedure
MeetRecord);
{*
In Functie Uit
Pointer naar een ketting Deze functie haalt een record op uit een ketting. Retourneert: Meetrecord waar de pointer naar wijst. Meetrecord waar naar gewezen wordt.
*}
-
42 -
Procedure Markeer_verwijdering (Kett : Ketting_Ptr); {*
In Functie
Pointer naar het element dat verwijderd moet worden. Deze procedure markeert een verwijdering in een ketting. Retourneert:
Uit *}
Procedure Herstel_markeer_verwijdering (Kett : Ketting_Ptr); {*
In Functie
Pointer naar het element dat hersteld moet worden. Deze procedure herstelt een verwijdering in een ketting. Retourneert:
Uit *}
Function Verplaats_pointer (Kett ptr Waarheen Hoeveel
Ketting Ptr; Richting; INTEGER)
: Ketting_ptr;
{*
In
Functie
Kett ptr => Pointer naar het huidige element Waarheen => De richting waarin verplaatst moet worden. Hoeveel => Hoeveel records in de richting waarheen verplaatst moet worden. Met deze procedure kan door een ketting gelopen worden in elke richting. Hierbij is het niet van belang naar welk record de pointer wijst. Retourneert: Pointer naar het gevraagde record.
Uit *}
Function Volgende record (Kett : Ketting_Ptr) : Ketting_Ptr; {*
-
In Functie : Deze functie geeft het adres van het volgende record in de ketting. Retourneert: Het adres van het volgende record. Uit *}
Function Vorige_record (Kett {*
In Functie
Deze functie geeft het adres van het vorige record in de ketting. Retourneert: Het adres van het vorige record.
Uit *}
Function Eerste record (Kett {*
In Functie
Deze functie geeft het adres van het eerste record in de ketting. Retourneert: Het adres van het eerste record.
Uit *}
-
43 -
Function Laatste record (Kett {*
In Functie
Deze functie geeft het adres van het laatste record in de ketting. Retourneert: Het adres van het laatste record.
Uit *}
{***************************************************************************} Implementatie-gedeelte
{*
*}
{***************************************************************************} Implementation Function Init ketting : Ketting Ptr; Var Begin Ptr, Eind ptr : Ketting_Ptr; begin New (Begin Ptr); New (Eind Ptr); With Begin Ptr~ do begin Vorige := NIL; volgende := Eind Ptr; Markering := M BEGIN; Waarde := 0; { In het eerste record, met markering M_Begin staan het aantal elementen dat in de ketting is opgenomen } end; With Eind Ptr~ do begin Vorige-:= Begin Ptr; Volgende := NIL; Markering := M EINDE; Waarde := 0; end; Init Ketting := Begin ptr; end; {-Einde functie InIt_ketting } Procedure Verwijder ketting (Kett Ketting_Ptr); begin { Ga naar het eerste record. } Kett := Eerste record (Kett); { Verwijder alle-records op 1 na } While (NOT (Kett~.Markering = M EINDE» do begin Dispose (Kett~.Vorige); Kett := KettA.Volgende; end; { Verwijder ook het laatste record } Dispose (Kett); end; {Einde procedure Verwijder_ketting } Procedure Sla Var Dummy ptr Data i
ketting op (Kett Ketting Ptr; TEXT;INTEGER;
Ketting_Ptr; Bestandsnaam
Procedure Bewaar schaalwaarde (Signaal string); begin if (Signaal [1] = '0') then Writeln (Bestandsnaam, Signaal [1]) else Writeln (Bestandsnaam, Copy (Signaal, 3, 5) );
- 44 -
string);
end;
{Einde Procedure Bewaar_schaalwaarde }
begin { Verplaats pointer naar het begin van de ketting } Kett := Verplaats pointer (Kett, R Begin, 0); { Open het bestand } Assign (Data, Cfg data dir + Bestandsnaam + '.DAT'); Rewrite (Data); Bewaar schaalwaarde (Prf F1 signaal); Bewaar-schaalwaarde (Prf-F2-signaal); Bewaar-schaalwaarde (Prf-F3-signaal); Bewaar-schaalwaarde (prf-s1-signaal); Bewaar-schaalwaarde (Prf-s2-signaal); Bewaar-schaalwaarde (prf:S3:signaal); i
:=
0;
While NOT (Kett = NIL) do With Kett A do begin if (Markering = M NORMAAL) then WriteLn (Data,-(i mod 6), , " Trunc (Waarde + 0.5»; Inc (i); Dummy ptr := Kett; Kett Verplaats pointer (Kett, R_Vooruit, 1); ~;
:=
-
{ Sluit bestand } Flush (Data); Close (Data); {Bewaar aantal meetpunten (i, Bestandsnaam);} end; {Einde procedure Sla_ketting_op } Function Insert_in_ketting (Kett Ketting Ptr; Meetwaarde : INTEGER; Mark Markeringstypen) : BOOLEAN; Var New ptr : Ketting Ptr; begin if (MaxAvail >= SizeOf (MeetRecord» then begin { Verhoog de waarde in het begin van de lijst. Hierin staat het aantal elementen die opgenomen zijn in de ketting. Hiervoor moet de pointer eerst naar het eerste datarecord wijzen (mbv functie Eerste_record), om vervolgens de waarde in het begin van de lijst aan te passen. } Kett := Eerste record (Kett); KettA.VorigeA.Waarde := KettA.vorigeA.Waarde + 1; { Ga naar het einde van de ketting, Kett wijst daarna naar het laatste record } Kett := Laatste record (Kett); { Maak nieuw record aan } New (New Ptr); With New-Ptr A do begin Vorige := Kett; Volgende := KettA.Volgende; Markering := Mark; Waarde := Meetwaarde; end; { Pas de pointers in de andere records aan } KettA.VolgendeA.Vorige := New Ptr; KettA.Volgende := New ptr; Insert in ketting := TRUE; end else Insert in ketting := FALSE; end; {Einde procedure Insert in_ketting } Procedure Lees waarde uit ketting (Kett begin -if (NOT (Kett = NIL» then Meting := Kett A else with Meting do begin Markering := M_FOUT;
-
Ketting_Ptr;VAR Meting
45 -
MeetRecord);
Volgende := NIL; Vorige := NIL; Waarde := 0; end; end; {Einde procedure Lees_waarde_uit_ketting } Procedure Markeer verwijdering (Kett : Ketting_Ptr); begin With Kett A do begin if (Markering = M NORMAAL) then Markering := M=VERWIJDERING; end; end; { Einde procedure Markeer_verwijdering } Procedure Herstel markeer verwijdering (Kett begin - With Kett A do begin if (Markering = M VERWIJDERING) then Markering := M=NORMAAL; end; end; {Einde procedure Herstel_markeer_verwijdering } Function Verplaats_pointer (Kett ptr : Ketting ptr; Waarheen Richting; Hoeveel : INTEGER) Var i : INTEGER; begin i f (Hoeveel < 0) then begin { Bij een negatieve hoeveel, moet de richting de andere kant Ope } Hoeveel := Abs (Hoeveel); if (Waarheen = R Vooruit) then Waarheen := R Achteruit else if (Waarheen = R Achteruit) then Waarheen := R Vooruit; end; Case Waarheen of R Nergens ; R-Begin Kett ptr := Eerste record (Kett ptr); R-Einde Kett-ptr := Laatste record (Kett ptr); R-Vooruit for T := 1 to Hoeveel do begin { Ga naar het volgende record als er niet naar het begin van de ketting gewezen wordt. } if NOT (Kett ptr = NIL) then Kett_ptr Volgende_record (Kett_ptr); end; R Achteruit for i := 1 to Hoeveel do begin { Ga naar het vorige record als er niet naar het begin van de ketting gewezen wordt. } if NOT (Kett ptr = NIL) then Kett_ptr Vorige_record (Kett_ptr); end; end; {Einde Case Waarheen } Verplaats pointer := Kett ptr; end; {Einde procedure Verplaats_pointer }
:=
:=
Function Volgenderecord (Kett Ketting_Ptr) begin With Kett A do begin if «VolgendeA.Markering = M_EINDE) OR (Volgende = NIL» then Volgende record := NIL else Volgende_record := Volgende; -
46 -
end; end; {Einde functie Volgende_record } Function Vorige record (Kett begin With Kett~ do begin if «Vorige~.Markering = M_BEGIN) OR (Vorige = NIL» then Vorige record := NIL else Vorige_record := Vorige; end; end; {Function Vorige_record } Function Eerste record (Kett Var Tmp ptr : Ketting_Ptr; begin Tmp ptr := Vorige record (Kett); WhiTe NOT (Tmp ptr = NIL) do begin Kett := Tmp-Ptr; Tmp ptr := Vorige record (Kett); end; Case Kett~.Markering of M BEGIN: Eerste record := Kett~.Volgende; M-EINDE : Eerste-record := Kett~.Vorige; eTse Eerste record := Kett; end; end; Function Laatste_record (Kett Ketting_Ptr) Ketting_Ptr; Var Tmp ptr : Ketting~Ptr; begin Tmp ptr := Volgende record (Kett); WhiTe NOT (Tmp ptr ~ NIL) do begin Kett := Tmp-Ptr; Tmp ptr := volgende record (Kett); end; Case Kett~.Markering of M BEGIN: Laatste record := Kett~.Volgende; M-EINDE : Laatste-record := KettA.Vorige; eTse Laatste record := Kett; end; end; end.
{Einde Unit Ketting }
- 47 -
1.10 unit NAAM.PAS {***************************************************************************} {* {* {*
{* {* {* {*
{* {* {* {*
{* {* {* {* {* {* {*
*}
Unit Versie Functie
NAAM 1.0 Bevat de naam en versie van het Persproef-Analyse Programma versie 2.00
*} *}
Taal Systeemeisen Auteur Aanmaakdatum Datum laatste wijziging
Borland Turbo Pascal versie 6.0 IBM compatible XT of hoger P.J.M. Reinders 1 juli 1993
*}
1 juli 1993
*} *}
Copyright (C)
Technische Universiteit Eindhoven, Laboratorium voor Ornvormtechnologie.
Gebruikt in
Persproef-Analyse Programma versie 2.00 Acquisitie gedeelte
*} *} *} *} *}
{*
*} *} *} *} *} *} *}
*}
{***************************************************************************}
Unit Naami
{***************************************************************************} {*
Declaratie-gedeelte
*}
{***************************************************************************}
Interface
Const persproef_Analyse_Programma_V200 = , [Persproef-Analyse Programma V200]'i
{***************************************************************************} {*
Implementatie-gedeelte
*}
{***************************************************************************}
Implementation
end. { Unit Naam.pas }
-
48 -
1.11 unit ORIGINEEL.PAS {***************************************************************************} {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {*
unit Versie Functie
Origineel 1.0 Bevat routines voor het wegschrijven en opvragen van de orginele persproef die bij de bewerkte persproef hoort.
Taal Systeemeisen
Borland Turbo Pascal versie 6.0 IBM compatible XT of hoger EGA of VGA grafische kaart R.J.J. de Coninck 20 november 1993
Auteur Aanmaakdatum Datum laatste wijziging
20 november 1993
Copyright (C)
Technische Universiteit Eindhoven, Laboratorium voor Omvormtechnologie.
Gebruikt in
Persproef-Analyse Programma versie 2.00 Verwerking-gedeelte
*} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *}
{***************************************************************************} Unit Orgineel;
{***************************************************************************} Declaratie-gedeelte
{*
*}
{***************************************************************************}
Interface
uses { Library } Dos, Crt; Procedure Lees_orginele_persproef (var Perscode : string; Bestand :string); {*
In Functie
Bestand -> naam en pad van het op te halen perscode. Perscode -> wordt het orginele perscode ingevuld. Ophalen van de orginele perscode bij de bewerkte persproef. Retourneert : orginele percode.
Out *}
Procedure Bewaar_orginele_persproef(Perscode : string; Bestand : string); {*
In Functie
Bestand -> naam en pad van het weg te schrijven perscode. Perscode -> wordt het orginele perscode ingevuld. Bewaren van de orginele percode. Retourneert
Out *}
{***************************************************************************} {*
Implementatie-gedeelte
*}
{***************************************************************************}
Implementation
-
49 -
Procedure Lees orginele persproef (var Perscode Var Data TEXT;
string; Hestand :string);
begin { Open van het bestand met de orginele persproef } Assign(Data, Hestand); {I-} Reset(Data); {I+}
if (IOResult 0) then begin ReadLn(Data, Perscode); { Sluiten van het bestand } Close(Data); end; end;
Procedure Bewaar orginele persproef (Perscode Var - Data TEXT;
string; Bestand :string);
begin { Open van het bestand met de orginele persproef } Assign(Data, Bestand);
{I-} Rewrite (Data) ; {I+}
if (IOResult = 0) then begin WriteLn(Data, Perscode); { Sluiten van het bestand } Close(Data) ; end; end; end. { Unit Orgineel }
- 50 -
1.12 unit P PGG IO.PAS {***************************************************************************} {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {*
unit Versie Functie
P PGG IO 1:0 De routines in deze unit worden gebruikt voor het lezen en schrijven Grafiekgegevens store
Taal Systeemeisen Auteur Aanmaakdatum Datum laatste wijziging
Borland Turbo Pascal versie 6.0 IBM compatible XT of hoger R.J.J. de Coninck 10 december 1993
Copyright (C)
Technische Universiteit Eindhoven, Laboratorium voor Omvormtechnologie.
Gebruikt in
Persproef-Analyse Programma versie 2.00 Verwerkings gedeelte.
*} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *}
{***************************************************************************} Unit P_PGG_IO;
{***************************************************************************} Declaratie-gedeelte
{*
*}
{***************************************************************************} Interface Uses
Var
{Run-time lib } } { library {verwerking }
Definit, Naam, Diskf 2, Ketting, Type_ver, Diskio_V; -
{*** Grafiekgegevens ***} FS Paar, FS-Aantal meetparen, FS-Min X,FS-Max-X, FS-Min-Y, FS-MAX-Y, {-=FS Bewerkt,} FS Max Kracht, FS-Aanvangsweg, FS-Eindweg, FS-Totale weg, FS-arbeidString;
Function Bewaar grafiek gegevens (FS bestand : string) : Boolean; {*
-
In Functie
-
-
FS bestand is het station de directory en bestandnaam. Bewaart de grafiekgegevens behorende bij een persproef.
Out *}
Function Lees_grafiek_gegevens (FS_bestand : string) : Boolean; {*
In Functie
FS bestand is het station de directory en bestandnaam. Leest de grafiekgegevens behorende bij een persproef.
Out *}
- 51 -
{***************************************************************************} Implementatie-gedeelte
{*
*}
{***************************************************************************} Implementation Function Lees grafiek gegevens (FS bestand : string) : Boolean; Var Grafiek bestand TEXT; Regel : String[34]; begin Assign (grafiek bestand, FS_bestand);
{$I-}
-
Reset (grafiek bestand);
{$I+}
-
if (IOResult = 0) then begin ReadLn(grafiek bestand, Regel); if (Regel = Persproef Analyse Programma V200) then begin ReadLn (grafiek bestand, FS Paar); ReadLn (grafiek-bestand, FS-Aantal meetparen); ReadLn (grafiek-bestand, FS-Min X); ReadLn (grafiek-bestand, FS-Max-X); ReadLn (grafiek=bestand, FS=Min=Y); ReadLn (grafiek bestand, FS Max Y); {ReadLn (grafiek bestand, FS Bewerkt);} ReadLn (grafiek bestand, FS Max Kracht); ReadLn (grafiek-bestand, FS-Aanvangsweg); ReadLn (grafiek-bestand, FS-Eindweg); ReadLn (grafiek-bestand, FS-Totale weg); ReadLn (grafiek-bestand, FS-Arbeid); Lees Grafiek gegevens := TRUE; close (grafiek bestand); end else Lees Grafiek gegevens := FALSE; end else Lees_Grafiek_gegevens := FALSE; end; { functie lees_grafiek_gegevens} Function Bewaar_grafiek_gegevens (FS_bestand
string)
Boolean;
Var Grafiek bestand
TEXT;
begin Assign
(Grafiek_bestand, FS bestand); {$I-} Rewrite (Grafiek_bestand); {$I+} if ( IOResult = 0 ) then begin WriteLn (grafiek bestand, Persproef_Analyse_Programma_V200); WriteLn (grafiek-bestand, FS Paar); WriteLn (grafiek-bestand, FS-Aantal meetparen); WriteLn (grafiek-bestand, FS-Min X); WriteLn (grafiek-bestand, FS-Max-X); WriteLn (grafiek-bestand, FS-Min-Y); WriteLn (grafiek-bestand, FS-Max-Y); WriteLn (grafiek-bestand, FS-Max-kracht); WriteLn (grafiek-bestand, FS-Aanvangsweg); WriteLn (grafiek-bestand, FS-Eindweg); WriteLn (grafiek:bestand, FS-Totale weg); WriteLn (grafiek bestand, FS-Arbeid); Bewaar grafiek gegevens:= TRUE; Close (grafiek=bestand);
- 52 -
end else Bewaar grafiek gegevens:= FALSE; end; {functIe bewaar_grafiek_gegevens}
-
53 -
2
Toeqevoeqen I Wijziqen van de alqemene Library.
2.1
unit DEFINIT.PAS
{***************************************************************************} {* {*
{* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {*
unit Versie Functie
DISKFUNC 1.0 Revisie 1 De in deze unit gedefinieerde procedures hebben betrekking op het werken met bestanden en diskettes.
Taal Systeemeisen Auteur Aanmaakdatum Datum laatste wijziging
Borland Turbo Pascal versie 6.0 IBM compatible XT of hoger C.P.I. van de Werff 28 oktober 1992
Copyright (C)
Technische Universiteit Eindhoven, Laboratorium voor Omvormtechnologie.
Gebruikt in
Trekproef-Analyse Programma versie 3.02
2 januari 1993
*} *}
*} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *}
{***************************************************************************} {*
*}
{* {*
Revisie-informatie:
{* {* {* {*
Revisie-versie Datum wijziging Uitgevoerd door
{* {* {* {* {* {*
Datum wijziging Betreft
{* {* {* {* {* {* {* {* {* {* {*
*} *}
1 11 augustus 1993 C.P.I. van de Werff R.J.J. de Coninck 4 januari 1994 Toevoeging van de functie Station_gereed. Functie Station gereed: Deze nieuwe functie bepaalt of een opgegeven station fysiek in staat is om een lees- of schrijfoperatie uit te voeren. Deze functie handelt aile I/O fouten af die kunnen optreden, en wordt gebruikt i.p.v. de functies Disk aanwezig en Schrijfbescherming (deze bleken te beperkt om hun taak adequaat uit te kunnen voeren. De bovengenoemde functies zijn echter wei gehandhaafd, omdat niet overal in het TrekproefAnalyse programma deze reeds door Station_gereed vervangen zijn.
*} *} *} *}
*} *} *} *} *} *} *} *} *} *} *}
*} *} *} *} *} *}
{***************************************************************************}
{***************************************************************************} {*
Declaratie-gedeelte
*}
{***************************************************************************}
Interface
uses Dos, Definit; Type {*** Aangeven of disk(ette) nog voldoende schrijfruimte bevat om een nieuwe trekproef toe te kunnen voegen ***} {*** Type I/O-operatie uitgevoerd op een opslagmedium ***} OperatieType = (Lezen, schrijven);
-
54 -
Function Bepaal vrije ruimte(Drive: Char): Longint; {*
--
In Drive -> letteraanduiding van het te controleren station; Functie : Bepaalt de nog aanwezige vrije ruimte op het opgegegen opslagmedium. Retourneert de vrije ruimte in bytes. Deze functie voert GEEN controles uit. Indien een fout optreedt is de retourwaarde van de functie nul. Controles moeten vooraf worden uitgevoerd m.b.v. een van de overige functies in deze unit. Uit *}
Function Bestand_aanwezig(Zoeknaam: String): Boolean; {*
In Functie
Zoeknaam -> naam plus volledige pad (drive + directory) van het te zoeken bestand; Controleert of het opgegeven bestand bestaat. Er worden verder GEEN controles uitgevoerd om te testen of de drive en directory in het opgegeven pad correct zijn. Dit moet dus vooraf aan het aanroepen van deze functie gecontroleerd zijn. Retourneert: - True, indien bestand bestaat; - False, indien bestand niet wordt gevonden.
Uit *}
Function Directory_aanwezig(Zoekdir: String): Boolean; {*
In Functie
Zoekdir -> naam van de te zoeken directory (inclusief driveaanduiding); Bepaalt of de ingevoerde directory bestaat. Er wordt NIET gecontroleerd of de drive-aanduiding in de opgegeven directory correct is. Dit moet dus vooraf aan het aanroepen van deze functie gecontroleerd zijn. Retourneert: - True, indien directory bestaat; - False, indien directory niet wordt gevonden;
Uit *}
Procedure Verwijder_bestand(Verwijder_naam: String); {*
In Functie
Verwijder_naam -> naam + volledige pad van het te verwijderen bestand; Verwijdert het opgegeven bestand. Indien het bestand niet wordt gevonden of de schijf is beschermd tegen schrijven, dan zal deze procedure worden afgebroken.
Uit *}
Function Station_gereed(DoelDir: String; Operatie: OperatieType): Integer; {*
In Functie
DoelDir -> Hele pad (drive + dir.) van het te controleren station; Operatie -> Type operatie dat op de opgegeven drive moet worden uitgevoerd (Lezen of Schrijven); Bepaalt of het opgegeven opslagmedium fysiek in staat is om de gekozen IjO-operatie uit te voeren. Retourneert: - IOResult-waarde voor de betreffende operatie: nul, indien operatie mogelijk; waarde <> nul, indien operatie niet mogelijk (waarden staan in TP 6.0 run-time error tabel).
Uit *}
-
55 -
{***************************************************************************} {* Implementatie-gedeelte *} {***************************************************************************} Implementation Function Bepaal_vrije_ruimte(Drive: Char): Longint; var Resultaat Drive nummer Dummy-
Longint; Integer; Integer;
begin Drive := UpCase(Drive); { Bepaal drive-nummer } Val (Chr(Ord(Drive) - (Ord('A') - Ord('l'»), Drive_nummer, Dummy); {$I-} Resultaat := DiskFree(Drive nummer); {$I+} if (Resultaat <>-1) then Bepaal vrije ruimte := Resultaat else Bepaal vrije ruimte := 0; end; { Functie Bepaal_vrije_ruimte } Function Bestand_aanwezig(Zoeknaam: String): Boolean; var Dir_info : Searchrec; begin FindFirst(Zoeknaam, Archive, Dir_info); if (DosError <> 0) then Bestand aanwezig := False else Bestand aanwezig := True; end; { Functie Bestand_aanwezig } Function Directory aanwezig(Zoekdir: String): Boolean; begin {$I-} ChDir (Zoekdir) ; {$I+} if (IOResult <> 0) then Directory aanwezig := False else Directory aanwezig := True; end; { Functie Directory_aanwezig } Procedure Verwijder_bestand(Verwijder_naam: String); var Verwijder_file : File; begin Assign(Verwijder file, Verwijder_naam); {$I-} Reset(Verwijder file); if (IOResult = 0) then begin Close(Verwijder file); Erase(Verwijder-file); end; {$I+} end; { Procedure Verwijder_bestand }
- 56 -
Function Station_gereed(DoelDir: String; Operatie: OperatieType): Integer; var HuidigeDir : DirStr; Schrijftest : Text; Resultaat integer; begin { Indien DoelDir is root-directory, dan ' \ ' toevoegen } if (Length(DoelDir) = 2) then DoelDir := DoelDir + ' \ ' ; { Controleren als er een subpad bij zit, de \ er bij staat deze \ weg halen } if ( (length(doeldir) > 3) AND «doeldir[length(doeldir)]) = '\'» Doeldir := copy(doeldir, 1, length(doeldir) - 1);
{$I-} ChDir(DoelDir); {Testfunctie} Resultaat := IOResult; {$I+} if «Resultaat = 0) AND (Operatie = Schrijven» then begin Assign(Schrijftest, DoelDir + 'Schrijf.tst'); {$I-} Rewrite(Schrijftest); Resultaat := IOResult; {$I+} if (Resultaat = 0) then begin Close(Schrijftest); Erase(Schrijftest); end; end; Station gereed := Resultaat; end; { Functie Station_gereed } end. { Unit Diskfunc }
- 57 -
then
2.2
unit DISKF 2.PAS
{***************************************************************************} {* {* {*
{* {* {* {* {*
{* {* {* {* {* {* {* {* {* {* {*
unit Versie Functie
DISKFUNC 1.0 Revisie 1 De in deze unit gedefinieerde procedures hebben betrekking op het werken met bestanden en diskettes.
Taal Systeemeisen Auteur Aanmaakdatum Datum laatste wijziging
Borland Turbo Pascal versie 6.0 IBM compatible XT of hoger C.P.I. van de Werff 28 oktober 1992
Copyright (C)
Technische Universiteit Eindhoven, Laboratorium voor Omvormtechnologie.
Gebruikt in
Trekproef-Analyse Programma versie 3.02
2 januari 1993
*} *} *}
*} *} *} *} *}
*} *} *} *} *} *} *} *} *} *} *}
{***************************************************************************} {* {*
*}
Revisie-informatie:
{* {* Revisie-versie
Datum wijziging {* Uitgevoerd door {*
{* {* {* {* {* {* {* {* {*
Datum wijziging Betreft
{* {* {* {* {*
{* {* {*
1 11 augustus 1993 C.P.I. van de Werff R.J.J. de Coninck 4 januari 1994 Toevoeging van de functie Station_gereed. Functie Station gereed: Deze nieuwe functie bepaalt of een opgegeven station fysiek in staat is om een lees- of schrijfoperatie uit te voeren. Deze functie handelt aIle I/O fouten af die kunnen optreden, en wordt gebruikt i.p.v. de functies Disk aanwezig en Schrijfbescherming (deze bleken te beperkt om hun taak adequaat uit te kunnen voeren. De bovengenoemde functies zijn echter weI gehandhaafd, omdat niet overal in het TrekproefAnalyse programma deze reeds door Station_gereed vervangen zijn.
{*
*} *} *} *}
*} *} *} *} *} *} *}
*} *} *}
*} *} *} *} *}
*} *} *} *}
{***************************************************************************}
{***************************************************************************} {*
Declaratie-gedeelte
*}
{***************************************************************************}
Interface
uses Dos, Definit; Type {*** Aangeven of disk(ette) nog voldoende schrijfruimte bevat om een nieuwe trekproef toe te kunnen voegen ***} {*** Type I/O-operatie uitgevoerd op een opslagmedium ***} OperatieType = (Lezen, schrijven); Function Bepaal_vrije_ruimte(Drive: Char): Longint; -
58 -
{* In Functie
Drive -> letteraanduiding van het te controleren station; Bepaalt de nog aanwezige vrije ruimte op het opgegegen opslagmedium. Retourneert de vrije ruimte in bytes. Deze functie voert GEEN controles uit. Indien een fout optreedt is de retourwaarde van de functie nul. Controles moeten vooraf worden uitgevoerd m.b.v. een van de overige functies in deze unit.
Uit *}
Function Bestand_aanwezig(Zoeknaam: String): Boolean; {*
In Functie
Zoeknaam -> naam plus volledige pad (drive + directory) van het te zoeken bestand; Controleert of het opgegeven bestand bestaat. Er worden verder GEEN controles uitgevoerd om te testen of de drive en directory in het opgegeven pad correct zijn. Dit moet dus vooraf aan het aanroepen van deze functie gecontroleerd zijn. Retourneert: - True, indien bestand bestaat; - False, indien best and niet wordt gevonden.
Uit *}
Function Directory_aanwezig(Zoekdir: string): Boolean; {*
In Functie
Zoekdir -> naam van de te zoeken directory (inclusief driveaanduiding); Bepaalt of de ingevoerde directory bestaat. Er wordt NIET gecontroleerd of de drive-aanduiding in de opgegeven directory correct is. Dit moet dus vooraf aan het aanroepen van deze functie gecontroleerd zijn. Retourneert: - True, indien directory bestaat; - False, indien directory niet wordt gevonden;
Uit *}
Procedure Verwijder_bestand(Verwijder_naam: String); {*
In Functie
Verwijder_naam -> naam + volledige pad van het te verwijderen bestand; Verwijdert het opgegeven bestand. Indien het bestand niet wordt gevonden of de schijf is beschermd tegen schrijven, dan zal deze procedure worden afgebroken.
Uit *}
Function Station_gereed(DoelDir: String; operatie: OperatieType): Integer; {*
In Functie
DoelDir -> Hele pad (drive + dir.) van het te controleren station; Operatie -> Type operatie dat op de opgegeven drive moet worden uitgevoerd (Lezen of Schrijven); Bepaalt of het opgegeven opslagmedium fysiek in staat is om de gekozen IjO-operatie uit te voeren. Retourneert: - IOResult-waarde voor de betreffende operatie: nul, indien operatie mogelijk; waarde <> nul, indien operatie niet mogelijk (waarden staan in TP 6.0 run-time error tabel).
Uit *}
{***************************************************************************}
- 59 -
{* Implementatie-gedeelte *} {***************************************************************************} Implementation Function Bepaal_vrije_ruimte(Drive: Char): Longint; var Resultaat Drive nummer Dummy-
Longint; Integer; Integer;
begin Drive := UpCase(Drive); { Bepaal drive-nummer } Val (Chr(Ord(Drive) - (Ord('A') - Ord('l'»), Drive_nummer, Dummy); {$I-} Resultaat := DiskFree(Drive nummer); {$I+} if (Resultaat <> -1) then Bepaal vrije ruimte := Resultaat else Bepaal vrije ruimte := 0; end; { Functie Bepaal_vrije_ruimte } Function Bestand_aanwezig(Zoeknaam: String): Boolean; var Dir info : Searchrec; begin FindFirst(Zoeknaam, Archive, Dir_info); if (DosError <> 0) then Bestand aanwezig := False else Bestand aanwezig := True; end; { Functie Bestand_aanwezig } Function Directory aanwezig(Zoekdir: String): Boolean; begin {$I-} ChDir(Zoekdir); {$I+} if (IOResult <> 0) then Directory aanwezig := False else Directory aanwezig := True; end; { Functie Directory_aanwezig } Procedure Verwijder_bestand(Verwijder_naam: String); var Verwijder_file : File; begin Assign(Verwijder file, Verwijder_naam); {$I-} Reset(Verwijder file); if (IOResult = 0) then begin Close(Verwijder file); Erase(Verwijder-file); end; {$I+} end; { Procedure Verwijder_bestand }
-
60 -
Function Station_gereed(DOelDir: string; Operatie: OperatieType): Integer; var HuidigeDir : DirStr; Schrijftest : Text; Resultaat : integer; begin { Indien DoelDir is root-directory, dan '\' toevoegen } if (Length(DoelDir) = 2) then DoelDir := DoelDir + ' \ ' ; { Controleren als er een subpad bij zit, de \ er bij staat deze \ weg halen } if ( (length(doeldir) > 3) AND «doeldir[length(doeldir)]) = '\')) then Doeldir := copy(doeldir, 1, length(doeldir) - 1);
{$I-} ChDir(DoelDir); {Testfunctie} Resultaat := IOResult; {$I+} if «Resultaat = 0) AND (Operatie = Schrijven)) then begin Assign(Schrijftest, DoelDir + 'Schrijf.tst'); {$I-} Rewrite(Schrijftest); Resultaat := IOResult; {$I+} if (Resultaat = 0) then begin Close(Schrijftest); Erase(Schrijftest); end; end; Station gereed := Resultaat; end; { Functie Station_gereed } end. { Unit Diskfunc }
- 61 -
LAYOUT. PAS
2.3
{***************************************************************************} {*
{* {* {* {* {*
*}
unit Versie Functie
{*
{* {* {*
{* {* {* {* {* {*
{*
Taal Systeemeisen Auteur Uitgebreidt door Aanmaakdatum Datum uitbreiding Datum laatste wijziging
{* {*
{* {* {* {* {* {*
LAYOUT 1.0 Bevat routines voor het opbouwen van benodigde schermen in tekst mode Bevat ook routines voor het opbouwen van benodigde schermen grafisch voor EGA en VGA. Borland Turbo Pascal versie 6.0 IBM compatible XT of hoger EGA of VGA grafische kaart C.P.I. van de Werff P.J.M Reinders R.J.J. de Coninck 15 oktober 1992 15 juni 1993
*} *} *} *} *}
15 j-uni 1993 21 december 1993
*} *}
*}
*} *} *}
*} *} *} *} *} *}
*}
Copyright (C) Gebruikt in
Technische Universiteit Eindhoven, Laboratorium voor Omvormtechnologie. Trekproef-Analyse Programma versie 3.02 Persproef-Analyse Programma versie 2.00
*} *} *} *} *} *}
{***************************************************************************}
Unit Layout; {***************************************************************************}
Declaratie-gedeelte
{*
*}
{***************************************************************************}
Interface
uses Crt, Definit, Dat_tijd, Vid_buff, Graph; type {*** Toon kadertype: wei of geen kader tonen ***} Toon_kadertype = (Kader, Zonder_kader); Const
{constanten die worden gebruikt bij het grafisch opbouwen van een scherm } KADER RAND 2; { Is de afstand tussen de lijnen in de kaderrand } KADER-SCHERM = 12; { Is de afstand van beeldscherm tot kaderrand } KADER-KLEIN 50; { Is de afstand van bovenkant tot onderkant van titelbalk boven/onder} KADER GROOT = 20; { Is afstand van het midden window tot de aan titelbalken}
Var
XB links boven, XB-rechts onder, YB-links boven, YB-rechts onder, XM-links boven, XM-rechts onder, YM-links boven, YM-rechts onder, XO-links boven, XO-rechts onder, YO-links boven, yo=rechts onder
integer;
-
62 -
Procedure Bepaal_schermkleuren(Var Kl_voorgrond, Kl_achtergrond: Byte); {*
In Functie
Uit
Bepaalt de op dit moment geldende voor- en achtergrondkleur van de actieve window. Kleuren worden afgeleid uit de TextAttrvariabele, waarvan de 4 meest significante bits de achtergrondkleur aangeven en de 4 minst significante bits de voorgrondkleur. Kl voorgrond -> geldende voorgrondkleur van de actieve window; Kl=achtergrond -> geldende ahtergrondkleur van de actieve window.
*}
Procedure WriteAcc(Tekststring: String; Kl_tekst, Kl_achtergr: Byte); {*
In Functie
Tekststring -> tekst die in inverse-video moet worden afgebeeld. Kl tekst -> tekstkleur; Kl-achtergr -> kleur tekstachtergrond; Accentueert een stuk tekst door dit in een andere kleur af te drukken, waarna de oorspronkelijke kleuren weer worden hersteld.
Uit *}
Procedure Centreer(Tekststring: String; Y_pos: Integer); {*
In Functie Uit
Tekststring -> tekst die binnen de huiduge actieve window gecentreerd moet worden; Centreert de opgegeven tekst binnen de huidige actieve window;
*}
Procedure Toon kader(Pos X lb, Pos Y lb, Pos X ro, Pos Y ro: Integer; Kader=voorgrond~ Kader_achtergrond:-Byte); {*
In
Functie
Pos_X_lb, Pos Y lb -> coordinaten hoek linksboven kader (relatief t.o.v. window); Pos_X_ro, Pos Y ro -> coordinaten hoek rechtsonder kader (relatief t.o.v. window); Kader_voorgrond -> kleur kader; Kader achtergrond -> achtergrondkleur kader; Aanmaken van een kader met de opgegeven maten. LET OP: Deze routine wist alle informatie die binnen het te plaatsen kader staat. Maak daarom altijd eerst het kader en zet dan pas tekst in dit kader.
Uit *}
Procedure {*
In Functie Uit
Selecteert het hele scherm als window.
*}
Procedure Toon_titelbalk_boven(Padnaam: String); {*
In Functie Uit
Padnaam -> geeft aan waar men zich in het programma bevindt; Toont de bovenste titelbalk. Zie schermontwerp voor inhoud.
*}
Procedure Toon_titelbalk_onder;
-
63 -
{*
In Functie Uit
Toont de onderste titelbalk. Zie schermontwerp voor inhoud.
*}
Procedure Selecteer_werkgebied(Kaderoptie: Toon_kadertype); {*
: Kaderoptie -> geeft aan of een kader om het werkgebied getekend moet worden: - Kader, teken kader; - Zonder kader, teken geen kader; Functie Selecteert het werkgebied. Dit is het gebied tussen de bovenste en onderste titelbalk. Zie schermontwerp voor precieze afmetingen. Uit In
*}
Procedure Init_Graph; {*
In Functie
Kijkt of de de grafische kaart EGA of VGA is en initialiseerd parameters voor het opbouwen van een grafisch scherm.
Out *}
Procedure Toon_titelbalk_boven_graf(Padnaam : string); {*
In Functie
Padnaam -> geeft aan waar men zich in het programma bevindt. Toont de bovenste titelbalk. Zie schermontwerp voor inhoud.
Out *}
Procedure Toon_titelbalk_onder_graf; {*
In Functie
Toont de onderste titelbalk. Zie schermontwerp voor inhoud.
Out *}
Procedure Selecteer_werkgebied_graf; {*
In Functie
Selecteert het werkgebied. Dit is een gebied tussen de bovenste en onderste titelbalk.
Out *}
Procedure Maak Graf window(Xl, Yl, X2, Y2 : integer; Tekst : string); {*
In
Functie Out
(Xl, Yl) is de linkerboven coordinaat van het window. (X2, Y2) is de rechteronder coordinaat van het window. Tekst is de titel van het window. Tekent een window met titel.
*}
Procedure Selecteer_graf_win(Xl, Yl, X2, Y2 : integer); {*
In
(Xl, Yl) is de linkerboven coordinaat van het
-
64 -
Functie
window. (X2, Y2) is de rechteronder coordinaat van het window. Maakt een viewport van de opgegeven meetparen. Dan kan men in deze viewport b.v. tekst zetten.
Out *}
Procedure Toon_horizontale_lijn(Y_pos: Integer; Lijnkleur: Byte); {*
In Functie
-> regel waarop de lijn moet worden getoond (relatief t.o.v. de actieve window); Lijnkleur -> kleur van de te tonen lijn; Tekent een horizontale lijn over de gehele breedte van de actieve window.
Uit *}
Procedure Byte) ; {*
In
Functie
-> regel waarop de lijn moet worden getoond (relatief t.o.v. de actieve window); X_begin -> beginpositie van de lijn (relatief t.o.v. het actieve window); X eind -> eindpositie van de lijn (relatief t.o.v. het actieve window); Lijnkleur -> kleur van de te tonen lijn; Tekent een enkele horizontale lijn over de gehele breedte van het actieve window. Y_pos
Uit *}
Procedure Toon horizontale lijn Dubbel(Y pos, Lijnkleur: Byte);
X eind
Integer;
{*
In
Functie
-> regel waarop de lijn moet worden getoond (relatief t.o.v. de actieve window); X_begin -> beginpositie van de lijn (relatief t.o.v. het actieve window); X eind -> eindpositie van de lijn (relatief t.o.v. het actieve window); Lijnkleur -> kleur van de te tonen lijn; Tekent een dubbele horizontale lijn over de gehele breedte van het actieve window. Y_pos
Uit *}
Procedure Byte) ;
Integer;
Lijnkleur:
{*
In
Functie
-> regel waarop de lijn moet worden getoond (relatief t.o.v. de actieve window); Y_begin -> beginpositie van de lijn (relatief t.o.v. het actieve window); Y eind -> eindpositie van de lijn (relatief t.o.v. het actieve window); Lijnkleur -> kleur van de te tonen lijn; Tekent een enkele vertikale lijn over de gehele breedte van het actieve window. X_pos
Uit *}
Procedure Byte) ; {*
In
-> regel waarop de lijn moet worden getoond (relatief
- 65 -
t.o.v. de actieve window); -> beginpositie van de lijn (relatief t.o.v. het actieve window); Y eind -> eindpositie van de lijn (relatief t.o.v. het actieve window); Lijnkleur -> kleur van de te tonen lijn; Tekent een dubbele verticale lijn over de gehele breedte van het actieve window. Y_begin
Functie Uit *}
Procedure Toon_Stop_Teken(X_pos, Y_pos : Integer; Tekenkleur: Byte); Procedure Toon_Teken_Omhoog(X_pos, Y_pos
Integer; Tekenkleur: Byte);
Procedure Toon_Teken_Omlaag(X_pos, Y_pos
Integer; Tekenkleur: Byte);
{***************************************************************************} Implementatie-gedeelte
{*
*}
{***************************************************************************} Implementation const LB HOEK RB-HOEK LO-HOEK RO-HOEK LIJN HOR LIJN-HOR ENKEL LIJN-VERT LIJN-VERT ENKEL TEKEN STOP TEKEN-OMHOOG TEKEN-OMLAAG
{* Ii' *} {* *} {* 1 *} {* dJ *} {* *} {* *} {* *} {* *} {* • *} {* .... X *} {* .... Y *}
= #201; = #187; #200; = #188; #205; #196; #186; = #179; #254; #24; #25;
{*** Interne routine ***} Procedure ReI naar abs(Re1 X, ReI Y: Integer; Wind lb: Word; var-Abs_x,-Abs_Y: Integer);{*
In Functie Uit
ReI X, ReI Y -> coordinaten relatief t.o.v. window; Wind lb -> linker bovenhoek window in absolute coordinaten (= WindMin); Converteert relatieve window-coord inaten om naar absolute scherm-coordinaten; Abs_X, Abs Y -> absolute scherm-coordinaten;
*}
begin Abs X := Lo(Wind_lb) + Rel X; Abs-Y := Hi(Wind lb) + Rel-Y; end; { Interne procedure Rel-naar abs }
{*** Einde interne routine ***} Procedure Bepaal schermkleuren(Var Kl voorgrond, Kl achtergrond: Byte); begin - { Achtergrondkleur actieve window: 4 meest significante bits TextAttr. Shift-right 4 (SHR 4) levert de gewenste achtergrondkleur. } Kl_achtergrond := (TextAttr SHR 4); { Voorgrondkleur actieve window: 4 minst significante bits TextAttr. Waarde TextAttr - 16 * achtergrondkleur levert gewenste voorgrondkleur. } Kl voorgrond := TextAttr - (16 * Kl achtergrond); end;-{ Procedure Bepaal_schermkleuren-}
-
66 -
Procedure WriteAcc(Tekststring: String; KI_tekst, KI_achtergr: Byte); var Oorspr voorgr oorspr=achtergr
Byte; Byte;
begin { Bepaal huidige schermkleuren } Bepaal_schermkleuren(Oorspr_voorgr, Oorspr_achtergr); { Inverse video } TextColor(KI tekst); TextBackground(KI_achtergr); Write(Tekststring); { Herstel oorspronkelijke schermkleuren } TextColor(Oorspr voorgr); TextBackground(Oorspr achtergr); end; { WriteAcc } Procedure Centreer(Tekststring: String; Y_pos: Integer); var Totale breedte centreerstring X_pos
Integer; String; Integer;
begin { Bepaal de breedte van de actieve window } Totale_breedte := Lo(WindMax) - Lo(WindMin); if (Length (Tekststring) > Totale breedte) then Centreerstring := copy(Tekststring, 1, Totale_breedte) else centreerstring := Tekststring; { Centreer tekst } X pos := «Totale breedte - Length(Centreerstring» GotoXY(X pos, Y pos); Write(Centreerstring); end; { Procedure Centreer }
DIV 2) + 1;
Procedure Toon kader(Pos X lb, Pos Y lb, Pos X ro, Pos Y ro: Integer; Kader=voorgrond; Kader_achtergrond:-Byte); var Teller Oorspr voorgr oorspr-achtergr Oorspr-WindMin oorspr-WindMax Abs X lb, Abs Y lb Abs=X=ro, Abs-Y-ro
Integer; Byte; Byte; Word; Word; Integer; Integer;
begin { Bewaar oorspronkelijke window-afmetingen } Oorspr WindMin := WindMin; Oorspr=WindMax := WindMax; { Bewaar oorspronkelijke schermkleuren } Bepaal_schermkieuren(oorspr_voorgr, Oorspr_achtergr); { Zet relatieve window-coord inaten om naar schermcoordinaten } ReI naar abs(Pos X lb, Pos Y lb, Oorspr WindMin, Abs X lb, Abs Y lb); Rel=naar=abs(pos=x=ro, pos=Y=ro, oorspr=WindMin, Abs:X:ro, Abs=Y=ro); { Wis kadergebied } Window (Abs_X_Ib , Abs_Y_lb, Abs_X_ro, Abs_Y_ro);
-
67 -
TextColor(Kader voorgrond); TextBackground(Kader achtergrond); ClrScr; { Teken kader } Schrijf video buffer(Abs X lb, Abs Y lb, Ord(LB HOEK»; for Teller :=-(Abs X lb + I) to (Abs-X ro - 1) do Schrijf video bUffer(Teller, Abs Y-lb, Ord(LIJN HOR»; Schrijf vIdeo buffer(Abs X ro, Abs-Y-lb, Ord(RB HOEK»; for Teller :=-(Abs Y lb + I) to (Abs-Y ro - 1) do begin - - Schrijf video buffer(Abs X lb, Teller, Ord(LIJN VERT»; Schrij f-video-buffer (Abs-X-ro, Teller, Ord(LIJN-VERT»; end; - Schrijf video buffer(Abs X lb, Abs Y ro, Ord(LO HOEK»; for Teller :=-(Abs X lb + I) to (Abs-X ro - 1) do Schrijf video buffer(Teller, Abs Y-ro, Ord(LIJN HOR»; Schrij f_vIdeo_buffer (Abs_X_ro, Abs:Y:ro, Ord(RO_HOEK»; { Herstel oorspronkelijke schermkleuren } TextColor(Oorspr voorgr); TextBackground(Oorspr_achtergr); { Herstel oorspronkelijke window-afmetingen } WindMin := Oorspr WindMin; WindMax := Oorspr-WindMax; end; { Procedure Kader } Procedure Selecteer hele_scherm; begin Window(l, 1, 80, 25); end; { Procedure Selecteer_hele_scherm } Procedure Toon titelbalk boven(Padnaam: String); begin Window(l, 1, 80, 3); TextBackground(KL TBB ACHTERGROND); TextColor(KL_TBB_VOORGROND); Toon_kader(l, 1, 80, 3, KL_TBB_KADER, KL_TBB_ACHTERGROND); GotoXY(3, 2); Write(Padnaam); end; { Procedure Toon_titelbalk_boven } Procedure Toon titelbalk onder; begin Window(l, 23, 80, 25); TextBackground(KL TBO ACHTERGROND); Textcolor(KL_TBO_VOORGROND); Toon_kader(l, 1, 80, 3, KL_TBO_KADER, KL_TBO_ACHTERGROND); Centreer(EIGENAAR, 2); Textcolor(KL TBO DATUMTIJD); GotoXY(3, 2); WrIte(Haal datum(Tekst»; GotoXY(74, 2); Write(Haal tijd); end; { Procedure Toon_titelbalk_onder } Procedure Selecteer werkgebied(Kaderoptie: Toon_kadertype); begin if (Kaderoptie = Kader) then begin
- 68 -
Window(l, 4, 80, 22); Toon kader(l, 1, 80, 19, KL_WERK_KADER, KL_WERK_ACHTERGROND); end; . Window(2, 5, 79, 21); {Window-afmetingen binnen kader } TextBackground(KL WERK ACHTERGROND); TextColor(KL WERK-VOORGROND); end; { Procedure selecteer_werkgebied } Procedure init Graph; Var GrDriver, Grmode : Integer; begin DetectGraph(GrDriver, GrMode); case (grDriver) of EGA begin GrMode := EGAHI; InitGraph(grDriver, GrMode,"); end; VGA begin GrMode := VGAHI; InitGraph(grDriver, GrMode,' '); end; end; XB links boven := KADER SCHERM; YB-links-boven := KADER-SCHERM; XB-rechts onder := GetmaxX - KADER_SCHERM; YB-rechts-onder := KADER_KLEIN; XM links boven YM-links-boven XM-rechts onder YM-rechts-onder
:= := := :=
KADER SCHERM; (KADER KLEIN + KADER GROOT); GetmaxX - KADER SCHERM; GetmaxY - (KADER_KLEIN + KADER_GROOT) - 10;
XO links boven YO-links-boven XO-rechts onder YO-rechts-onder
:= := := :=
KADER SCHERM; GetmaxY - KADER KLEIN; GetmaxX - KADER-SCHERM; GetmaxY - KADER:SCHERM;
SetTextstyle(SansSerifFont, HorizDir, 2); end; Procedure Toon titelbalk boven graf(Padnaam string) ; begin -Setbkcolor(KL TBB ACHTERGROND); Setcolor(KL TBB KADER); Setlinestyle(soIidln, a, 1); { maak bovenste kader } Rectangle(XB links boven, YB links boven, XB rechts onder, YB rechts onder); Rectangle(XB-links-boven + Kader rand, YB links boven + Kader-rand, XB-rechts onder - Kader rand, YB rechts onder - Kader rand); Setcolor(KL TBB VOORGROND); OuttextXY( KADER SCHERM + 6, «YB links boven + Kader rand) + (YB_rechts_onder - Kader_rand»DIV 2, Padnaam); end; Procedure Toon_titelbalk_onder_graf; begin Setbkcolor(KL TBO ACHTERGROND); Setcolor(KL TBO KADER); Setlinestyle(SoIidln, a, 1); { maak bovenste kader } Rectangle(XO links boven, YO links boven, XO rechts onder, YO rechts_onder); Rectangle(XO:links=boven + Kader_rand, YO_links_boven + Kader=rand,
- 69 -
XO rechts onder - Kader rand, YO rechts onder - Kader rand); SetColor(KL TBO VOORGROND); OuttextXY«GetmaxX - TextWidth(EIGENAAR» DIV 2, «YO links boven + Kader_rand) + (YO_rechts_onder - Kader_rand» DIV 2, EIGENAAR); SetColor(KL TBO DATUMTIJD); outtextXY(KADER-SCHERM + 10, (YO rechts onder OuttextXY(GetmaxX - 70, «YO (YO_rechts_onder
«YO links boven + Kader rand) + Kader rand» DIV 2, HaaI datum(Tekst»; links boven + Kader rand)-+ Kader_rand» DIV 2; Haal_tijd);
=
end; Procedure Selecteer_werkgebied_graf; begin Setbkcolor(KL TBO ACHTERGROND); Setcolor(KL TBO KADER); Setlinestyle(SoIidln, 0, 1); { maak bovenste kader } Rectangle(XM links boven, YM links boven, XM rechts onder, YM rechts onder); Rectangle(XM-links-boven + Kader rand, YM links boven + Kader-rand, XM-rechts onder - Kader_rand, YM rechts onder - Kader_rand); end; Procedure Toon horizontale lijn(Y pos: Integer; Lijnkleur: Byte); var Teller : Integer; Oorspr voorgr Byte; oorspr=achtergr: byte; begin { Bewaar oorpronkelijke schermkleuren } Bepaal_schermkleuren(oorspr_voorgr, Oorspr_achtergr); TextColor(Lijnkleur); for Teller := 1 to (Lo(WindMax) - Lo(WindMin) + 1) do begin GotoXY(Teller, Y pos); Write(LIJN HOR); end; { Herstel oorspronkelijke schermkleuren } TextColor(Oorspr voorgr); TextBackground(Oorspr achtergr); end; { Procedure Toon_horizontale_lijn } Procedure Maak_Graf_window(Xl, Y1, X2, Y2 : integer; Tekst : string); Const KADER = 2; TEKST AFSTAND = 5; Var lengte tekst X3, X4-
word; integer;
begin {vertikale lijnen links} Line(Xl, Yl, Xl, Y2); Line(Xl + KADER, Yl + KADER, Xl + KADER, Y2 - KADER); {vertikale lijnen rechts} Line(X2, Yl, X2, Y2); Line(X2 - KADER, Y1 + KADER, X2 - KADER, Y2 - KADER); {onderste lijnen} Line(Xl, Y2, X2,Y2); Line(Xl + KADER, Y2 - KADER, X2 - KADER, Y2 - KADER); lengte_tekst := Textwidth(tekst); x3 := (Round(lengte_tekst * (1/3») + Xl; x4 := x3 + lengte_tekst;
-
70 -
{ horizontale lijnen boven voor de tekst } Line(Xl, Yl, X3, Yl); Line(Xl + KADER, Yl + KADER, X3 , Yl+ KADER); { horizontale lijnen boven na de tekst } Line(X4 + TEKST AFSTAND, Yl, X2, Yl); Line(X4 + TEKST=AFSTAND, Yl + KADER, X2 - KADER, Yl + KADER); Setcolor( KL WIN TITEL); OuttextXY(X3-+ TEKST AFSTAND, Yl Setcolor(KL WIN TEKST); end; --
(KADER DIV 2), tekst);
Procedure Selecteer graf win(Xl, Yl, X2, Y2 begin Setviewport(Xl, Yl, X2, Y2, False); end;
integer);
Procedure Toon horizontale lijn Enkel(Y pos, X begin, X eind Byte); var Teller : Integer; Oorspr voorgr Byte; oorspr=achtergr: byte;
Integer; Lijnkleur:
begin { Bewaar oorpronkelijke schermkleuren } Bepaal_schermkleuren(Oorspr_voorgr, Oorspr_achtergr); TextColor(Lijnkleur); for Teller := X begin to X eind do begin GotoXY(Teller, Y pos); Write(LIJN_HOR ENKEL); end; { Herstel oorspronkelijke schermkleuren } TextColor(Oorspr voorgr); TextBackground(Oorspr achtergr); end; { Procedure Toon_horizontale_lijn_Enkel } Procedure Toon horizontale lijn Dubbel(Y pos, Lijnkleur: Byte); var Teller : Integer; Oorspr voorgr Byte; Oorspr=achtergr: byte;
X eind
Integer;
begin { Bewaar oorpronkelijke schermkleuren } Bepaal_schermkleuren(Oorspr_voorgr, Oorspr_achtergr); TextColor(Lijnkleur); for Teller := X begin to X eind do begin GotoXY(Teller, Y pos); Write(LIJN_HOR); end; { Herstel oorspronkelijke schermkleuren } TextColor(Oorspr voorgr); TextBackground(Oorspr achtergr); end; { Procedure Toon_horizontale_lijn_Dubbel } Procedure Toon Vertikale lijn Enkel(X pos, Y begin, Y eind - Byte); var Teller : Integer; Oorspr voorgr Byte; oorspr=achtergr: byte;
- 71 -
Integer; Lijnkleur:
begin { Bewaar oorpronkelijke schermkleuren } Bepaal_schermkleuren(Oorspr_voorgr, Oorspr_achtergr); Textcolor(Lijnkleur); for Teller := Y begin to Y eind do begin GotoXY(X pos, Teller); Write(LIJN_VERT ENKEL); end; { Herstel oorspronkelijke schermkleuren } TextColor(Oorspr voorgr); TextBackground(Oorspr achtergr); end; { Procedure Toon_Vertikale_lijn_Enkel } Procedure Toon Vertikale lijn Dubbel(X pos, Y begin, Y eind -Byte);var Teller : Integer; Oorspr voorgr Byte; oorspr=achtergr: byte;
Integer; Lijnkleur:
begin { Bewaar oorpronkelijke schermkleuren } Bepaal_schermkleuren(Oorspr_voorgr, Oorspr_achtergr); TextColor(Lijnkleur); for Teller := Y begin to Y eind do begin GotoXY(X pos, Teller); Write(LIJN_VERT); ~;
-
{ Herstel oorspronkelijke schermkleuren } TextColor(Oorspr voorgr); TextBackground(Oorspr achtergr); end; { Procedure Toon_vertikale_lijn_Dubbel } Procedure Toon stop Teken(X pos, Y_pos : Integer; Tekenkleur: Byte); var Oorspr voorgr - Byte; oorspr=achtergr: byte; begin { Bewaar oorpronkelijke schermkleuren } Bepaal_schermkleuren(Oorspr_voorgr, Oorspr_achtergr); TextColor(Tekenkleur); GotoXY(X_pos, Y_pos); Write(TEKEN_STOP); { Herstel oorspronkelijke schermkleuren } TextColor(Oorspr voorgr); TextBackground(Oorspr achtergr); end; { Procedure Toon_Stop_Teken } Integer; Tekenkleur: Byte);
Procedure Toon Teken Omhoog(X pos, Y_pos var Oorspr voorgr -Byte; oorspr=achtergr: byte;
begin { Bewaar oorpronkelijke schermkleuren } Bepaal_schermkleuren(Oorspr_voorgr, Oorspr_achtergr); TextColor(Tekenkleur); GotoXY(X_pos, Y_pos); Write(TEKEN_OMHOOG); { Herstel oorspronkelijke schermkleuren }
-
72
Textcolor(Oorspr voorgr); TextBackground(Oorspr achtergr); end; { Procedure Toon_Teken_omhoog } Procedure Toon Teken Ornlaag(X pos, Y_pos var Oorspr voorgr -Byte; oorspr:achtergr: byte;
Integer; Tekenkleur: Byte);
begin { Bewaar oorpronkelijke schermkleuren } Bepaal_schermkleuren(Oorspr_voorgr, Oorspr_achtergr); TextColor(Tekenkleur); GotoXY(X_pos, Y_pos); Write(TEKEN_OMLAAG); { Herstel oorspronkelijke schermkleuren } TextColor(Oorspr voorgr); TextBackground(Oorspr achtergr); end; { Procedure Toon_Teken_Ornlaag } end. { Unit Layout.pas }
-
73 -
unit MENU.PAS
2.4
{***************************************************************************} {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {* {*
Unit Versie Functie
MENU 1.0 Biedt routines voor het aanmaken van een keuzemenu.
Taa1 Systeemeisen
Borland Turbo Pascal versie 6.0 IBM compatible XT of hoger EGA of VGA grafische kaart C.P.I. van de Werff R.J.J. de Coninck
Auteur Aanmaakdatum Datum laatste wijziging
27 oktober 1993 27 oktober 1993 16 november 1993
Copyright (C)
Technische Universiteit Eindhoven, Laboratorium voor Omvormtechnologie.
Gebruikt in
Trekproef-Analyse Programma versie 3.02 Persproef-Analyse Programma versie 2.00
*} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *} *}
{***************************************************************************} Unit Menu;
{***************************************************************************} Declaratie-gedeelte
{*
*}
{***************************************************************************}
Interface
uses { Run-time lib. } crt, { Library } Definit, KeyCodes, Invoer, Geluid, Cursor, Layout; const KL MENU INACTIEF
= DarkGray;
Procedure Initialiseer_menu; {*
In Functie Uit
Zet het aantal aanwezige menu-items op nul: menu-record is leeg.
*}
Procedure Menu item(Select kar: Char; Itemstring: String; X_POS,-Y_pos: Integer); {*
In
Functie
Select kar -> karakter waarmee menu-item kan worden geselecteerd; Itemstring -> tekst menu-item; X_pos, Y_pos -> positie waar dit menu-item in het huidige window moet worden geplaatst; Voegt een menu-item toe aan het menu-record. MAX MENU ITEMS bevat het maximale aantal keren dat deze functie mag-worden aangeroepen voor het opbouwen van een menu.
Uit *}
Procedure Toon_menu; {*
In
- 74 -
Functie Uit
Toont de menu-items uit het menu-record op het scherm.
*}
Function Lees menukeuze: Char; {*
In Function
Leest een menukeuze uit de menu-items in het menu-record. Retourneert de menukeuze of een speciale toets, namelijk escape, return of Fl (help). Nadat op Fl gedrukt is, zal nog eens de functie Lees menukeuze moeten worden aangeroepen om een geldige menukeuze te-verkrijgen. De reden hiervoor is de volgende: Orndat de help-boodschappen in het Trekproef-Analyse Programma per onderdeel gegroepeerd zijn, moet de 'uses' lijst van deze unit per onderdeel worden aangepast om de betreffende helpboodschappen te vinden. Dit betekent dat deze unit dan echter niet meer universeel inzetbaar is. Daarom is besloten de helpafhandeling buiten deze unit te laten plaatsvinden. Indien het menu geen menu-items bevat, wordt EK NULL geretourneerd.
Uit *}
Procedure Maak_item_actief(Item_index: Integer); {*
In Functie
Item index geeft aan welk menu-item weer-actief moet worden gemaakt. Met deze procedure kan men een menu-item weer actief maken.
Out *}
Procedure Maak_item_inactief(Item_index: Integer); {*
In Functie
Item index geeft aan welk menu-item op nIet actief moet worden gezet. Met deze procedure kan men een menu-item op non-actief zetten.
Out *}
{***************************************************************************} {* Implementatie-gedeelte *} {***************************************************************************} Implementation const MAX_MENU_ITEMS type Menu_item_type
=
lSI { Maximale aantal menu-items in het menu-record }
= Record Item X Item-Y Item-selectie Item-tekst Item-actief end;
Menu_rec_type
Integer; Integer; Char; String; Boolean;
= Record Aantal menu items Default Item selectiestring
Item
Integer; Integer; String[MAX MENU ITEMS]; { Bevat alle Itemselectie-karakters: nodig voor controle ingvoerde menukeuze } Array[l •• MAX MENU ITEMS] of Menu_item_type; -
end;
-
75 -
{*** Interne routines ***}
Procedure Toon_item_inverse(Index: Integer); {*
In Functie Uit
Index -> item-array-index: geeft aan welk menu-item invers moet worden weergegeven; Geeft het opgegevens menu-item invers weer;
*}
begin with Menu record do begin if (Index <= Aantal menu items) then begin with Item[Index] do begin if (Item actief) then begin GotoXY(Item X, Item Y); WriteAcc(Item Selectie, KL_WERK_VOORGROND, KL_WERK_ACHTERGROND); GotoXY(Item X-+ 4, Item Y); WriteAcc(' , + Item tekst + ' , end else begin GotoXY(Item X, Item Y); WriteAcc(Item Selectie, KL MENU INACTIEF, KL WERK ACHTERGROND); GotoXY(Item X-+ 4, Item Y); WriteAcc(' , + Item tekst + ' " LightGray, KL_MENU_INACTIEF); end; end; end; end; end; { Interne procedure Toon_item_inverse } Procedure Toon_item_normaal(Index: Integer); {*
In
: Index -> item-array-index: geeft aan welk menu-item normaal (dus in de voor deze window geldende voor- en achtergrondkleur) moet worden weergegeven; Functie Geeft het opgegeven menu-item in de geldende schermkleuren weer; Uit *}
begin with Menu record do begin if (Index <= Aantal menu items) then begin with Item[Index] do begin if (Item actief) then begin GotoXY(Item X, Item Y); WriteAcc(Item Selectie, KL_WERK_VOORGROND, KL_WERK_ACHTERGROND); GotoXY(Item X-+ 4, Item Y); Wr i teAcc (' , + Item tekst + ' " KL WERK VOORGROND, KL_ WERK_ ACHTERGROND); end else begin GotoXY(Item X, Item Y); WriteAcc(Item Selectie, KL MENU INACTIEF, KL_WERK_ACHTERGROND); GotoXY(Item_x-+ 4, Item_Y); -
-
76 -
WriteAcc(' , + Item tekst + ' , KL_MENU_INACTIEF, KL_WERK_ACHTERGROND); end; end; end; end; end; { Interne procedure Toon_item_normaal } {*** Einde interne routines ***}
Procedure Initialiseer_menu; begin with Menu record do begin Aantal menu items := 0; Default item := 1; Selectiestring := " ; end; end; { Initialiseer menu } Procedure Menu item(Select kar: Char; Itemstring: String; x_pos,-Y_pos: Integer); begin with Menu record do begin if (Aantal menu items < MAX_MENU_ITEMS) then begin Inc(Aantal menu items); Selectiestring := Selectiestring + Select_kar; with Item[Aantal menu items] do begin -Item X := X pos; Item-Y := Y-pos; Item-selectIe := Select kar; Item-tekst :=.Itemstring; Item-actief := True; end; end; end; end; { Menu item } Procedure Toon_menu; var Teller : Integer; begin with Menu record do begin if (Aantal menu items > 0) then begin for Teller := 1 to Aantal menu items do begin with Item[Teller] do begin if (Item actief) then begin TextColor(KL WERK VOORGROND); GotoXY(Item X, Item Y); Write(Item Selectie, ' end else begin TextColor(KL MENU INACTIEF); GotoXY(Item X, Item Y); Write(Item Selectie, ' end; end;
- 77 -
',Item_tekst);
',Item_tekst);
end; end; end; end; { Toon_menu } Function Lees_menukeuze: Char; var Goede keuze KeuzeSp toets Item index
Boolean; String; Char; Integer; { Geeft aan welk menu-item invers getoond wordt }
begin with Menu record do begin if (Aantal menu items > 0) then begin Item index := Default item; Toon:item_inverSe(Item_index); Goede keuze := False; while-(NOT Goede keuze) do begin Leesveld(Keuze, " , Invoer string, 0, 1, 1, Onzichtbaar, Sp_toets); if (NOT (Keuze = "» thenbegin {Karakter ingevoerd } Keuze[1] := UpCase(Keuze[1]); if (Pos(Keuze, Selectiestring) <> 0) then begin if (Menu record.Item[Pos(Keuze, Selectiestring)].Item_actief) then begin Lees menukeuze := Selectiestring[Pos(Keuze, Selectiestring)]; Goede keuze := True; Toon Item normaal(Item index); Default item := Pos(Keuze, Selectiestring); Toon item inverse(Default item); end else begin Cursor uit; Waarschuwingstoon; Cursor aan; Toon item normaal(Item index); Toon-item-inverse(POS(Keuze, Selectiestring»; Item-index := Pos(Keuze, Selectiestring); Default item := Item index; end; end else begin Cursor uit; Waarschuwingstoon; Cursor aan; end; end else begin { Speciale toets ingevoerd } case Sp toets of EK F1begin Lees menukeuze := Sp toets; Default item := Item-index; Goede keuze := True;end; EK CURSOR UP
begin Toon_item_normaal(Item_index);
-
78 -
if (Item index> 1) then Dec(Item index) else Item index := Aantal menu items; Toon item inverSe(Item-index); end; EK CURSOR DOWN: begin Toon item normaal(Item index); if (Item Index < Aantal menu items) then Inc(Item index) -else Item index := 1; Toon item inverse(Item index); end; ENTER
begin if (Menu record.Item[Item index].Item actief) then begin Lees menukeuze := Selectiestring[Item index]; Goede keuze := True; Default item := Item index; end else begin Cursor uit; Waarscliuwingstoon; Cursor aan; end; end;
ESCAPE
begin Lees menukeuze := ESCAPE; Goede keuze := True; end; else {Niet toegestane speciale toets } begin Cursor uit; waarscliuwingstoon; Cursor aan; end; end; end; end; end else Lees menukeuze := EK_NULL; { Menu bevat geen items } end; end; { Lees menukeuze } Procedure Maak_item_actief(Item_index: Integer); begin if «Item index> 0) OR (Item index <= Menu record.Aantal menu items» Menu record.Item[Item indexT.Item actief True; -end; { Procedure Maak item actief} -
then
Procedure Maak_item_inactief(Item_index: Integer); begin if «Item index> 0) OR (Item index <= Menu record.Aantal_menu_items» Menu record.Item[Item indexT.Item actief := False; end; { Procedure Maak_item_inactief }-
then
:=
end. { Unit NewMenu.pas }
-
79 -
unit VRAAG IN.PAS
2.5
{***************************************************************************} {* {* {* {* {*
{* {* {* {* {* {* {* {* {* {* {* {* {* {* {*
Unit Versie Functie
VRAAG IN 1.0 Bevat a1le windows metja nee vragen die in het verwerkings gedeelte van het Persproef-Analyse Programma gebruikt worden.
Taal Systeemeisen Auteur Gewijzigd door Aanmaakdatum Datum laatste wijziging
Borland Turbo Pascal versie 6.0 EGA of VGA grafische kaart R.J.J. de Coninck
Copyright (C)
Technische Universiteit Eindhoven, Laboratorium voor Omvormtechnologie.
8 november 1993
Gebruikt in
Persproef-Analyse Programma versie 2.00 Verwerking
{*
*} *} *} *} *}
*} *} *} *} *} *} *} *} *} *} *} *} *} *} *}
*}
{***************************************************************************}
Unit Vraag_JN_V;
{***************************************************************************} Declaratie-gedeelte
{*
*}
{***************************************************************************}
Interface
Uses { Run-time lib } Crt, Dos, { Library } Layout, Definit, Invoer, Vid_buff, Geluid, {Verwerking } Fout_V; Const Midden x 39; X POS 2; Y-BOVEN = 10; Y-ONDER = 16; Type
{ { { {
Midden van het scherm } Begin positie tekst } Y-coordinaat van bovenkant van window } Y-coordinaat van onderkant van window }
{Het antwoord wat wordt terug gegeven } Antwoord = (JA, NEE);
Function Bepaal grootste(Getal1 : Integer; Geta12 : Integer) Integer; {* In Getal1 -> eerste getal; Geta12 -> tweede getal; Functie Vergelijkt twee getallen en bepaald de grootste daarvan. Retourneert (waarde van de langste); Out *}
Function Bereken lengte(Tekst1 Tekst2 Tekst3
string; string; string):integer;
{*
In Functie
Tekst1 -> Is de eerste regel die men kan opgeven; Tekst2 -> Is de tweede regel die men kan opgeven; Tekst3 -> Is de derde regel die men kan opgeven;; Bepaald welke string het langst is en berkend hiervan de lengte. Retourneert(lengte van de langste string)
- 80 -
Out *}
Function Toon vraag jn(Tekstl string; Tekst2 string; Tekst3 string; Aantal integer; Herstel_optie: Herstel_type): Antwoord; {*
-> -> -> ->
In
Tekstl Tekst2 Tekst3 Aantal
Is de eerste regel die men kan opgeven; Is de tweede regel die men kan opgeven; Is de derde regel die men kan opgeven; Is het aantal regels tekst die men wil afgebeeld wilt zien. Maximaal kan dit dus drie regels zijn; Herstel optie -> geeft aan of na het beeindigen van de melding het onderliggende scherm moet worden hersteld;
Functie
Toont de opgegeven tekst en vraag om een antwoord JA of Nee; Retourneert (voor deze window correcte) speciale toets-code ja of nee.
;
Uit *}
{***************************************************************************} Implementatie-gedeelte
{*
*}
{***************************************************************************} Implementation Function Bepaal grootste(Getall Integer; Getal2 Integer) : Integer; begin if (Getall < Getal2) then Bepaal_grootste := Getal2 else begin Bepaal grootste := Getall; end; end; Function Bereken lengte(Tekstl Tekst2 Tekst3 Var Lengte, Lengtel, Lengte2, Lengte3 Integer;
string; string; string): integer;
begin { Berekenen lengte van de tekstregels } Lengtel:= Length(Tekstl); Lengte2 := Length(Tekst2); Lengte3 := Length(Tekst3); Lengte := Bepaal grootste(Lengtel, Lengte2); Bereken lengte : =-Bepaal_grootste(Lengte, Lengte3); end; Function Toon vraag jn(Tekstl string; Tekst2 string; Tekst3 string; Aantal integer; Herstel_optie: Herstel_type): Antwoord; Var Lengte_tekst, X_links, X rechts
Integer;
- 81 -
string; Char; Antwoord; Boolean;
Dummy Sp toets Antwoord hulp Goede invoer
begin { Bepaal of het huidige scherm bewaard moet worden } if (Herstel optie = Herstellen) then Bewaar_sclierm; { Bereken van de langste srting } Lengte_tekst := Bereken_lengte(Tekst1, Tekst2, Tekst3); { Kijken of de langste string korter is dan de vaste tekst} if (Lengte tekst < (Length('Antwoord:'») then Lengte_tekst := Length('Antwoord:') + 10; { Kijken of de lengte even of oneven aantal karakters heeft } if (Lengte_tekst MOD 2) <> 0 then inc(Lengte_tekst); { Berkenen van de grootte van het window } X links := Midden x - (Lengte tekst DIV 2); X-rechts := Midden-x + (Lengte-tekst DIV 2) + 1; WIndow(X links - 1~ Y BOVEN - I, X rechts + 1, Yonder + 1); Toon kader(l, 1, (X Rechts - X links ) + 3, 9, KL_MLD_KADER, KL MLD-ACHTERGROND); Window(X links,-Y BOVEN, X rechts, Yonder); Textcolor(KL MLD VOORGROND); TextBackground(KL MLD ACHTERGROND); Clrscr; { Druk de tekst op de juiste positie af binnen het window } case aantal of 1 : begin GotoXY(X POS, 4); Write(Tekst1); end; 2 begin GotoXY(X pos, 3); Write(Tekst1); GotoXY(X pos, 4); Write(Tekst2); end; 3 begin GotoXY(X POS, 2); Write(Tekst1); GotoXY(X POS, 3); Write(Tekst2); GotoXY(X POS, 4); write(Tekst3); end; end; { End case aantal} {plaatsen van de vaste tekst} GotoXY«(X rechts - X links) DIV 2)-10, 6); Write('Antwoord:'); { Stel de gebruiker de vraag en vang het antwoord af } Goede invoer := False; Dummy-:= " ; {lege string} while (NOT (Goede invoer» do begin Leesveld(Dummy, 'J', Invoer string, 1, «X rechts - X_links) DIV 2)+1, 6, Zichtbaar, sp_toets); { Goede invoer is ' J ' of ' j ' of 'N' of 'n' .} -
82 -
if (Dummy[l] = 'J') OR (Dummy[l] begin Antwoord hulp := JA; Goede invoer := True; end
'j') then
else begin if (Dummy[l] = 'N') OR (Dummy[l] begin Antwoord hulp := NEE; Goede invoer := True; end; end; end;
=
'n') then
{ Bepaal of het onderliggende scherm hersteld moet worden } if (Herstel optie = Herstellen) then Herstel_scherm; Toon vraag jn := Antwoord_hulp end; begin end. {Unit Vraag_jn }
-
83 -
Literatuurlijst. [1]
C.P.I. van de Werff.
"Trekproef analyse programma PC-DT100 versie 3.02, Introductie, HS-Heerlen-HIo-Stageverslag 1, Eindhoven, Januari 1993, WPA 1450."
[2]
C.P.I. van de Werff.
"Trekproefanalyse Programma PC-DT100, versie 3.02, Het Essentieel Model, HS-Heerlen-HIo-Stageverslag 2, Eindhoven, Januari 1993, WPA 1451."
[3 ]
C.P.I. van de Werff.
"Trekproefanalyse Programma PC-DT100, versie 3.02, Het Implementatie Model, HS-Heerlen-HIo-Stageverslag 3, Eindhoven, Januari 1993, WPA 1452."
[4]
C.P.I. van de Werff.
"Trekproefanalyse Programma PC-DT100, versie 3.02, Analyse, HS-Heerlen-HIo-Stageverslag 4, Eindhoven, Januari 1993, WPA 1453."
[5]
C.P.I. van de Werff.
"Trekproefanalyse Programma PC-DT100, versie 3.02, Source code Programma onderdelen, HS-Heerlen-HIo-Stageverslag 5, Eindhoven, Januari 1993, WPA 1454."
[6]
C.P.I. van de Werff.
"Trekproefanalyse Programma PC-DT100, versie 3.02, Source code Library bestanden, HS-Heerlen-HIo-stageverslag 6, Eindhoven, Januari 1993, WPA 1455."
[7]
C.P.I. van de Werff.
"Trekproefanalyse Programma PC-DT100, versie 3.02, Gebruikershandleiding, HS-Heerlen-HIo-Stageverslag 7, Eindhoven, Januari 1993, WPA 1456."
-
84 -