BESCHRIJVING VAN DE SOFTWARE-INTERFACE TUSSEN HET DOSEERALGORITME EN DE PROCESBESTURING VOOR TOERITDOSEERTOESTELLEN.
RIJKSWATERSTAAT Adviesdienst Verkeer en Vervoer Afdeling IBW Boompjes 200 Postbus 1031 3000 BA Rotterdam tel. 010 - 282 5904
datum: 30 oktober 2002 status: definitief
INHOUDSOPGAVE 1.
Inleiding. .................................................................................................................................. 4 1.1 Bereik. .................................................................................................................................... 4 1.2 Wijzigingen t.o.v. versie 3. .................................................................................................... 4 1.3 Afkortingen. ........................................................................................................................... 5
2.
Principe. ................................................................................................................................... 6 2.1 Functioneel............................................................................................................................. 6 2.2 Implementatie......................................................................................................................... 7 2.2.1 Interface opbouw............................................................................................................ 7
3.
Doseeralgoritme....................................................................................................................... 8 3.1 Algemeen. .............................................................................................................................. 8 3.2 Besturing doseeralgoritme. .................................................................................................... 8 3.2.1 Returnwaarde functie doseeralgoritme()........................................................................ 8
4.
Procesbesturing........................................................................................................................ 9 4.1 Algemeen. .............................................................................................................................. 9 4.2 Activeren doseeralgoritme. .................................................................................................... 9 4.2.1 Reactietijd procesbesturing. ........................................................................................... 9 4.2.2 Tijdsafhankelijke acties.................................................................................................. 9 4.2.3 Schrijven en lezen doseerinterface................................................................................. 9
5.
Doseerinterface. ..................................................................................................................... 10 5.1 Algemeen. ............................................................................................................................ 10 5.1.1 Buffers.......................................................................................................................... 10 5.1.2 Namen en typen............................................................................................................ 10 5.1.3 Initialisatie.................................................................................................................... 11 5.2 Parameters (PARM). ............................................................................................................ 11 5.2.1 Databuffer .................................................................................................................... 11 5.2.2 Controlebuffers ............................................................................................................ 11 5.2.3 Algemene wijzigingsvlaggen ....................................................................................... 12 5.2.4 Initialisatie.................................................................................................................... 12 5.3 Ingangssignalen (IS)............................................................................................................. 13 5.3.1 Databuffer .................................................................................................................... 13 5.3.2 Controlebuffer .............................................................................................................. 15 5.3.3 Algemene wijzigingsvlag ............................................................................................. 15 5.3.4 Initialisatie.................................................................................................................... 15 5.4 Variabelen (VAR). ............................................................................................................... 15 5.4.1 Databuffer .................................................................................................................... 15 5.4.2 Geen controlebuffer ..................................................................................................... 15 5.4.3 Algemene wijzigingsvlag ............................................................................................. 15 5.4.4 Initialisatie.................................................................................................................... 16 5.5 Uitgangssignalen (DS) ......................................................................................................... 16 5.5.1 Databuffer .................................................................................................................... 16 5.5.2 Controlebuffer .............................................................................................................. 17 5.5.3 Algemene wijzigingsvlag ............................................................................................. 17 5.5.4 Initialisatie.................................................................................................................... 17 5.6 Configuratie constanten ....................................................................................................... 17 5.7 100 mS teller ........................................................................................................................ 18 5.8 Versienummer ...................................................................................................................... 18
6.
Testfaciliteit doseerinterface.................................................................................................. 19 2
6.1 6.2 6.3 6.4
Algemeen ............................................................................................................................. 19 Doseeralgoritme ................................................................................................................... 20 Rol procesbesturing in communicatie met testapparaat....................................................... 20 Berichtbuffers....................................................................................................................... 20 6.4.1 Invoerberichten............................................................................................................. 21 6.4.2 Uitvoerberichten........................................................................................................... 21 6.4.3 Initialisatie.................................................................................................................... 21
7.
Literatuur en programmatuur................................................................................................. 22
8.
Implementatie......................................................................................................................... 23 8.1 dos_int.h. .............................................................................................................................. 23 8.2 dos_def.h .............................................................................................................................. 30 8.3 dos_typ.h .............................................................................................................................. 32
3
1.
INLEIDING.
1.1
Bereik.
Dit document beschrijft doseerinterface versie 4, de software-interface tussen het doseeralgoritme en de procesbesturing van doseertoestellen. De doseerinterface alsmede het doseeralgoritme zijn geschreven in de programmeertaal “C” en zijn tezamen beschikbaar als broncode onder de naam RWS C-doseeralgoritme [C_D]. Het doseeralgoritme is beschreven in de standaard verkeerstechnische specificatie voor een toeritdoseerinstallatie [DOS]. De elementen van de doseerinterface zijn beschreven in het document “LIJST MET PARAMETERS, VARIABELEN e.d.” [LIJST_PV]. Het doseeralgoritme is algemeen toepasbaar in doseertoestellen, d.w.z. het programma RWS Cdoseeralgoritme is geldig voor alle TDI’s en is configuratie onafhankelijk.
1.2
Wijzigingen t.o.v. versie 3.
T.o.v. versie 3 van de doseerinterface zijn de volgende zaken van belang: Het principe van de interface is niet gewijzigd, wel is in dit document een beschrijving van dit principe toegevoegd in hoofdstuk 2. Hierdoor is de nummering van de andere hoofdstukken met één verhoogd. In hoofdstuk 3, doseerinterface, zijn een aantal nieuwe returnwaarden van het doseeralgoritme opgenomen. Zij hebben betrekking op de melden van foutieve situaties. Hoofdstuk 5,welke de doseerinterface beschrijft, heeft een ander indeling. In plaats van een hoofdindeling naar datastructuren van de doseerinterface, databuffers, controlebuffers enz. is een verdeling naar functionaliteit gehanteerd, i.e. parameters, ingangssignalen, variabelen, uitgangssignalen enz. Toegevoegd is hoofdstuk 6 welke testfaciliteiten t.b.v. de doseerinterface en de procesbesturing beschrijft. De literatuur verwijzing heeft een hoofdstuknummer gekregen, hoofdstuk 7. Sterk gewijzigd is hoofdstuk 8, implementatie. Het aantal files van de doseerinterface is verminderd, en ook de namen zijn anders. De inhoud van de files beschrijven de nieuwe situatie volgens [DOS] en [LIJST_PV].
4
1.3
Afkortingen.
CIF
C-regelaar interface, software-interface tussen de RWS C-regelaar en de procesbesturing van doseertoestellen CTMS Centraal Toeritdoseer Management Systeem. DIF dos_interface dos_interface doseerinterface, software-interface tussen het doseeralgoritme en de procesbesturing van doseertoestellen. DS uitgangssignaal. IS ingangssignaal. PARM parameter. TDI toeritdoseerinstallatie VAR variabele
5
2.
PRINCIPE.
2.1
Functioneel
Het doseeralgoritme bepaalt aan de hand van door de procesbesturing geleverde informatie het al of niet doseren, de feitelijke doseertijd e.d. Het algoritme stelt deze uitkomsten weer beschikbaar aan de procesbesturing. De procesbesturing draagt deze gegeven over aan de RWS C-regelaar. De RWS Cregelaar bepaalt of er daadwerkelijk geregeld wordt en de gewenste uitsturing van de signaalgroepen. De procesbesturing zorgt er vervolgens voor dat de gewenste uitsturing gerealiseerd wordt. Daarnaast zorgt de procesbesturing ervoor dat informatie beschikbaar is voor het management systeem CTMS. Het uitwisselen van de betreffende informatie tussen procesbesturing en doseeralgoritme vindt plaats d.m.v. de doseerinterface. De doseerinterface is een verzameling geheugenplaatsen welke door zowel procesbesturing als doseeralgoritme gelezen en/of geschreven kan worden.
CTMS
proces besturing
Detectoren
Signaal groepen
1
doseer interface
DIF
C-regelaar interface
CIF
RWS C-regelaar
doseer algoritme 2
3
Figuur 1: Systeem opzet
6
2.2
Implementatie.
Het doseeralgoritme is geïmplementeerd als een functie welke door de procesbesturing wordt aangeroepen. De doseerinterface is geïmplementeerd als een gemeenschappelijk datagebied waardoor de benodigde informatie uitgewisseld kan worden. . gelezen data proces besturing te schrijven data aanroep
gemeenschappelijk data gebied
return waarde input parameter
gelezen data doseer algoritme te schrijven data
Figuur 2: Activering en data-uitwisseling Naast de informatie uitwisseling d.m.v. het gemeenschappelijk datagebied wordt er bij de functieaanroep een inputparameter meegegeven en wordt een returnwaarde teruggegeven. 2.2.1 Interface opbouw De doseerinterface is opgebouwd uit verschillende soorten informatie t.b.v. het doseeralgoritme t.b.v. instellingen voor het doseeralgoritme. •= Parameters t.b.v. resultaten van berekeningen en metingen. •= Variabelen t.b.v. de invoer van actuele meetgegevens. •= Ingangssignalen t.b.v. het resultaat van het doseeralgoritme. •= Uitgangssignalen Configuratie constanten t.b.v. de definitie van de fysieke configuratie van de toerit. •= t.b.v. tijdsafhankelijke berekeningen door het doseeralgoritme. •= 100mS teller t.b.v. de versie van de doseerinterface. •= Versienummer proces besturing.
ingangs signalen variabelen
teller
uitgangs signalen constanten
versie nummer
parameters doseer interface taak parameter buffer.
ingangs signalen buffer.
100mS teller
variabelen buffer.
uitgangs signalen buffer.
constanten.
status
variabelen parameters
ingangs signalen
constanten
teller uitgangs signalen
doseer algoritme.
Figuur 3: Elementen doseerinterface 7
versie nummer.
3.
DOSEERALGORITME.
3.1
Algemeen.
Het doseeralgoritme biedt, aan de hand van de door de procesbesturing op de doseerinterface aangeboden informatie, variabelen, uitgangssignalen en parameters aan op de doseerinterface ter afhandeling door de procesbesturing.
3.2
Besturing doseeralgoritme.
Het doseeralgoritme wordt bestuurd vanuit een hoofdfunctie doseeralgoritme(). Declaratie: int16 doseeralgoritme(int16 taak); Parameter functie doseeralgoritme().
Naast de normale aanroep t.b.v. het uitvoeren van het algoritme is een speciale aanroep nodig t.b.v. initialisatie. Bij het aanroepen van het algoritme wordt daarom m.b.v. de input parameter “taak” meegegeven of het om een normale of een “initialisatie-aanroep” gaat. Waarde
Symbool
Betekenis
0 1
DIF_K_GEEN_INIT DIF_K_INIT
‘normale’ aanroep initialisatie na programma start
3.2.1 Returnwaarde functie doseeralgoritme(). De functie geeft een waarde terug m.b.t. het resultaat van de aanroep. Hiermee wordt aangegeven of en welke fouten geconstateerd zijn door de het doseeralgoritme. Waarde
Symbool
Betekenis
0 -1
DIF_K_GEEN_FOUT DIF_K_INIT_FOUT
1 2
DIF_K_DOS_FOUT1 DIF_K_DOS_FOUT2
4 8
DIF_K_DOS_FOUT3 DIF_K_DOS_FOUT4
geen fout opgetreden initialisatie fout doseeralgoritme Wordt teruggeven in de volgende gevallen: •= De constanten van de doseerinterface bevatten een ongeldige waarde. Dit wordt gecontroleerd in de initialisatie-aanroep. •= De eerste aanroep na programmastart is geen initialisatie-aanroep. doseerinterface bevat parameter met ongeldige waarde. doseerinterface bevat ingangssignaal met ongeldige waarde. ongeldige input parameter in functie aanroep ongeldige waarde wijzigingsvlag Bij aanroep van de doseerinterface wordt verwacht dat de procesbesturing alle voorgaande wijzigingen, aangebracht door het doseeralgoritme, verwerkt heeft en de bijbehorende wijzigingsvlaggen gereset heeft.
N.B. De fouten DIF_K_DOS_FOUT1, DIF_K_DOS_FOUT2 en DIF_K_DOS_FOUT4 kunnen gelijktijdig optreden. In die gevallen bestaat de returnwaarde uit een combinatie van de betreffende foutwaarden, voor het bepalen van deze combinatie wordt een binaire OR functie gebruikt.
8
4.
PROCESBESTURING.
4.1
Algemeen.
De procesbesturing biedt op de doseerinterface de door het doseeralgoritme gewenste ingangssignalen en parameterwijzigingen aan. De procesbesturing handelt de door het algoritme op de doseerinterface aangeboden variabelen, uitgangssignalen en parameters af.
4.2
Activeren doseeralgoritme.
De procesbesturing dient de functie doseeralgoritme() aan te roepen teneinde het doseeralgoritme uit te voeren. De procesbesturing maakt daarbij onderscheidt tussen een normale aanroep en een aanroep t.b.v. het initialiseren van de doseerinterface. 4.2.1 Reactietijd procesbesturing. De procesbesturing dient de functie doseeralgoritme() tenminste iedere 0.1 sec aan te roepen. 4.2.2 Tijdsafhankelijke acties T.b.v. het bijhouden van tijdsafhankelijke acties in het doseeralgoritme dient de procesbesturing een teller elke 0.1 sec te verhogen. Deze teller is ook onderdeel van de doseerinterface. 4.2.3 Schrijven en lezen doseerinterface Gewijzigde ingangssignalen en parameters dienen voorafgaande aan iedere aanroep van de functie doseeralgoritme() te worden aangeboden op de doseerinterface. Tijdens uitvoering van de functie doseeralgoritme() mag door de procesbesturing niet in de doseerinterface worden geschreven of gelezen. Op de doseerinterface aangeboden en gewijzigde variabelen, uitgangssignalen en parameters dienen direct volgende op iedere aanroep van functie doseeralgoritme() te worden afgehandeld.
9
5.
DOSEERINTERFACE.
5.1
Algemeen.
De informatie-uitwisseling tussen het doseeralgoritme en de procesbesturing vindt uitsluitend plaats via de doseerinterface, ook wel “dos_interface” genoemd. Deze interface is opgebouwd uit buffers, enkelvoudige data-elementen en constanten die zowel voor het doseeralgoritme als de procesbesturing bereikbaar zijn. 5.1.1 Buffers Parameters, variabelen, ingangs- en uitgangssignalen zijn georganiseerd in buffers, “arrays” met data en controle informatie. De databuffers bevatten de actuele waarden. De controlebuffers bestaan uit wijzigingsvlaggen en zijn bedoeld om aan te geven dat een data-element van een nieuwe waarde voorzien is. Naast de controlebuffers, die wijzigingen per element aangeven, zijn er ook algemene wijzigingsvlaggen welke aangeven dat er überhaupt in een buffer geschreven is. Er zijn verschillende wijzigingvlaggen om onderscheid te kunnen maken in de onderdelen die verantwoordelijk zijn voor het schrijven in de betreffende databuffer, ...DOS voor doseerinterface en ...PB voor procesbesturing. 0
1
2
n waarden wijzigingsvlaggen ...DOS wijzigingsvlaggen ...PB
buffers
algemene vlag
Figuur 4: Schema – Buffers N.B. Niet in alle gevallen zijn er wijzigingsvlaggen voor doseerinterface EN procesbesturing aanwezig. Voor de realisatie van het hierboven beschreven principe wordt verwezen naar de paragrafen met de gedetailleerde beschrijving van parameters, ingangssignalen, variabelen en uitgangssignalen. Voor de databuffers geldt dat het aanbieden van nieuwe data slechts is toegestaan als de desbetreffende vlag in het bijbehorende controlebuffer aangeeft dat eerder aangeboden data gelezen en verwerkt is. 5.1.2 Namen en typen. Alle buffers, variabelen, indices, constanten (m.u.v. de configuratie-variabelen) en conditiesymbolen hebben een naam die begint met het voorvoegsel ”DIF_...”, gevolgd door het naamstructuur type: •= DIF_A_... Doseerinterface Array variabele •= DIF_V_... Doseerinterface enkelvoudige Variabele •= DIF_I_... Doseerinterface array Index 10
•= DIF_K_... Doseerinterface Konstante •= DIF_C_... Doseerinterface Conditie •= DIF_M_... Doseerinterface bit Masker In dit document worden de volgende typen variabelen gebruikt: •= int16 16 bits signed integer •= int32 32 bits signed integer De wijze waarop de types int16 en int32 bepaald worden is afhankelijk van de gebruikte compiler. Zij zijn op de meest voorkomende manier gedefinieerd in het bestand “dos_typ.h”. 5.1.3 Initialisatie. Initialisatie van de doseerinterface geschiedt bij programmastart, in nauwe samenwerking tussen de procesbesturing en het doseeralgoritme. Wat betreft de initiële inhoud van de doseerinterface wordt verwezen naar de afzonderlijke onderdelen. Vanuit de procesbesturing gezien vinden de volgende stappen plaats: 1. Programmastart. 2. Initialisatie van de doseerinterface, voor zover in de hierna volgende paragrafen is beschreven. 3. Initialisatie-aanroep van doseeralgoritme. 4. Invullen gewijzigde parameters en actuele ingangssignalen in de doseerinterface 5. Eerste normale aanroep doseeralgoritme. 6. Verwerken uitgangssignalen uit doseerinterface. De stappen 4, 5 en 6 worden vervolgens periodiek herhaald t.b.v. de normale uitvoering van de doseeralgoritme.
5.2
Parameters (PARM).
5.2.1 Databuffer Parameters worden door het doseeralgoritme en de procesbesturing in de databuffer int32 DIF_A_PARM[] van de interface geschreven. De symbolische namen, betekenis en de eigenschappen van de elementen van dit buffer liggen vast in het document “LIJST MET PARAMETERS, VARIABELEN e.d.” [LIJST_PV]. Het betreft de elementen waarvan de naamgeving t.b.v. de doseerinterface begint met DIF_I_PARM... . De indices van de elementen zijn met hun symbolische naam gedefinieerd in het bestand “dos_int.h”. De grootte van de buffers staat vermeld in de constante int16 DIF_V_PB_AANT_PARM. 5.2.2 Controlebuffers Parameters kunnen zowel door de procesbesturing als het doseeralgoritme geschreven worden. Om die reden zijn er twee controlebuffers met wijzigingsvlaggen, int16 DIF_A_PARMWIJZPB[] voor wijzigingen door de procesbesturing en int16 DIF_A_PARMWIJZDOS[] voor wijzigingen door het doseeralgoritme. Bij wijziging in de databuffer DIF_A_PARM[] door de procesbesturing dient de bijbehorende wijzigingsvlag in de betreffende controlebuffer, DIF_A_PARMWIJZPB[], op de waarde 11
DIF_K_GESCHREVEN gezet te worden. Bij de verwerking door het doseeralgoritme wordt de vlag op de waarde DIF_K_GELEZEN gezet. Bij wijziging in de databuffer DIF_A_PARM[] door het doseeralgoritme wordt de bijbehorende wijzigingsvlag in de betreffende controlebuffer, DIF_A_PARMWIJZDOS[], op de waarde DIF_K_GESCHREVEN gezet. Bij het verwerken door de procesbesturing dient de vlag op de waarde DIF_K_GELEZEN gezet te worden. Waarde
Symbool
Betekenis
1 0
DIF_K_GESCHREVEN DIF_K_GELEZEN
in buffer geschreven buffer gelezen
5.2.3 Algemene wijzigingsvlaggen Naast de wijzigingsvlaggen in de controlebuffer dient ook de algemene wijzigingsvlag gezet te worden, int16 DIF_V_PARMWIJZPB bij wijzigingen door de procesbesturing en int16 DIF_V_PARMWIJZDOS bij wijzigingen door het doseeralgoritme. Het is van belang om te weten of de parameters van initiële waarden voorzien zijn door het doseeralgoritme. Om die reden krijgen de algemene wijzigingsvlaggen niet de waarden DIF_K_GESCHREVEN of DIF_K_GELEZEN, maar de volgende speciale waarden: Waarde
Symbool
Betekenis
-1 -2 -3
DIF_K_GEEN_PARMWIJZ DIF_K_MEER_PARMWIJZ DIF_K_INIT_PARM
geen wijzigingen in parameterbuffer één of meer wijzigingen in buffer. initiële waarden in parameterbuffer
Bij initialisatie door het doseeralgoritme wordt de algemene wijzigingsvlag DIF_V_PARMWIJZDOS op de waarde DIF_K_INIT_PARM gezet. Bij het verwerken door de procesbesturing dient de vlag op de waarde DIF_K_GEEN_PARMWIJZ gezet te worden. In de andere gevallen dat het doseeralgoritme parameters wijzigt wordt de algemene wijzigingsvlag DIF_V_PARMWIJZDOS op de waarde DIF_K_MEER_PARMWIJZ gezet. Bij het verwerken door de procesbesturing dient de vlag op de waarde DIF_K_GEEN_PARMWIJZ gezet te worden. Bij wijziging door de procesbesturing dient de algemene wijzigingsvlag DIF_V_PARMWIJZPB op de waarde DIF_K_MEER_PARMWIJZ gezet te worden. Bij het verwerken door het doseeralgoritme wordt de vlag op de waarde DIF_K_GEEN_PARMWIJZ gezet. 5.2.4 Initialisatie Door de procesbesturing dient na programmastart, voorafgaande aan de initialisatie-aanroep van het doseeralgoritme, zie 5.1.3, de volgende initialisatie uitgevoerd te worden: 1. Alle wijzigingsvlaggen in de controlebuffer DIF_A_PARMWIJZPB[] dienen de waarde DIF_K_GELEZEN te krijgen. 2. De algemene wijzigingsvlag DIF_V_PARMWIJZPB dient de waarde DIF_K_GEEN_PARMWIJZ te krijgen.
12
Door het doseeralgoritme wordt tijdens de initialisatie-aanroep de volgende initialisatie uitgevoerd: 1. Alle parameters worden op hun default waarde gezet in DIF_A_PARM[]. De default waarden liggen vast in het document “LIJST MET PARAMETERS, VARIABELEN e.d.” [LIJST_PV]. 2. De bij de parameters behorende wijzigingsvlaggen in controlebuffer DIF_A_PARMWIJZDOS[] krijgen de waarde DIF_K_GESCHREVEN. 3. De algemene wijzigingsvlag DIF_V_PARMWIJZDOS krijgt de waarde DIF_K_INIT_PARM. De parameters zijn nu voorzien van hun initiële waarde, zij kunnen echter een andere waarde gekregen hebben die afwijkt van de initiële waarde. Het bewaren van afwijkende parameterwaarden is een functie van de procesbesturing. Daarom moet door de procesbesturing, direct na boven vermelde initialisatie, de volgende aanvullende initialisatie uitgevoerd worden: 1. Alle door de procesbesturing bewaarde (afwijkende) parameters dienen opnieuw te worden geschreven in DIF_A_PARM[]. 2. De bijbehorende wijzigingsvlaggen in de controlebuffer DIF_A_PARMWIJZPB[] krijgen de waarde DIF_K_GESCHREVEN. 3. De algemene wijzigingsvlag DIF_V_PARMWIJZPB krijgt de waarde DIF_K_MEER_PARMWIJZ Bij de eerstvolgende normale aanroep van het doseeralgoritme zullen nu de juiste parameter waarden gebruikt worden.
5.3
Ingangssignalen (IS).
5.3.1 Databuffer Ingangssignalen worden door de procesbesturing in de databuffer int32 DIF_A_IS[] van de interface geschreven. De symbolische namen, betekenis en de eigenschappen van de elementen van dit buffer liggen vast in het document “LIJST MET PARAMETERS, VARIABELEN e.d.” [LIJST_PV]. Het betreft de elementen waarvan de naamgeving t.b.v. de doseerinterface begint met DIF_I_IS... . De indices van de elementen zijn met hun symbolische naam gedefinieerd in het bestand “dos_int.h”. De grootte van de buffers staat vermeld in de constante int16 DIF_V_PB_AANT_IS. In aanvulling op het document [LIJST_PV] gelden voor de volgende ingangssignalen speciale waarden. De gebruikte symbolen en waarden zijn gedefinieerd in de file “dos_int.h”. De elementen DIF_A_IS[DIF_I_IS_det_RWso_i] en DIF_A_IS[DIF_I_IS_det_RWsa_i] dienen te worden gevuld met het volgende bitmasker: Waarde
Symbool
Betekenis
0 2
DIF_M_DET_STORING
geen storing detectie storing
13
De elementen DIF_A_IS[DIF_I_IS_SG1i_1], DIF_A_IS[DIF_I_IS_SG1i_2] en DIF_A_IS[DIF_I_IS_SG1i_7], dienen te worden gevuld met het volgende bitmasker: Waarde
Symbool
Betekenis
0 1 2 4 8
DIF_M_DET_BEZET DIF_M_DET_STORING DIF_M_DET_BOVENGEDRAG DIF_M_DET_ONDERGEDRAG
geen storing detectie bezet detectie storing detectie bovengedrag detectie ondergedrag
De elementen DIF_A_IS[DIF_I_IS_wus_SG1i] dienen te worden gevuld met het volgende bitmasker. Waarde
Symbool
Betekenis
0 1 2 3 4
DIF_K_ROOD DIF_K_GROEN DIF_K_GEEL DIF_K_KNIPWIT DIF_K_GEDOOFD
rood groen / wit / witknipperen geel / groenknipperen witknipperen lantaarn(s) gedoofd
Het element DIF_A_IS[DIF_I_IS_DOSR_STATUS] dient te worden gevuld met het volgende bitmasker: Waarde
Symbool
Betekenis
0 1 2 3 4 5
DIF_K_STAT_ONGEDEF DIF_K_STAT_GEDOOFD DIF_K_STAT_KP DIF_K_STAT_GEEL DIF_K_STAT_AR DIF_K_STAT_DOS
ongedefinieerd gedoofd knipperen geel bij inschakelen alles rood doseren (=regelen)
Het element DIF_A_IS[DIF_I_IS_I_delta_IV_C] kan een waarde hebben van 0 t/m 1000. Deze waarde representeert een aanbod in vtg/uur. De elementen DIF_A_IS[DIF_I_IS_V_RWso_i] en DIF_A_IS[DIF_I_IS_V_RWsa_i] kunnen een waarde hebben van 0 t/m 200. Deze waarde representeert een snelheid in km/uur. De elementen DIF_A_IS[DIF_I_IS_pardon_SG1i] kunnen een waarde hebben van 0 t/m 4000. Deze waarde representeert een tijd in tiende seconden. Het element DIF_A_IS[DIF_I_IS_L_FOUT_UIT] dient te worden gevuld met het volgende bitmasker: Waarde
Symbool
Betekenis
0 1
DIF_K_UIT DIF_K_AAN
uit aan
14
5.3.2 Controlebuffer Ingangssignalen worden alleen door de procesbesturing geschreven. Om die reden is er één controlebuffer met wijzigingsvlaggen, int16 DIF_A_ISWIJZPB[]. Bij wijziging in de databuffer DIF_A_IS[] door de procesbesturing dient de bijbehorende wijzigingsvlag in de controlebuffer DIF_A_ISWIJZPB[] op de waarde DIF_K_GESCHREVEN gezet te worden. Bij het verwerken van de wijziging door het doseeralgoritme wordt de vlag op de waarde DIF_K_GELEZEN gezet. Waarde
Symbool
Betekenis
1 0
DIF_K_GESCHREVEN DIF_K_GELEZEN
in buffer geschreven buffer gelezen
5.3.3 Algemene wijzigingsvlag Naast de wijzigingsvlaggen in de controlebuffer dient ook de algemene wijzigingsvlag gezet te worden, int16 DIF_V_ISWIJZPB. Hiervoor worden ook de waarden DIF_K_GESCHREVEN en DIF_K_GELEZEN gebruikt. 5.3.4 Initialisatie Door de procesbesturing dient na programmastart, voorafgaande aan de initialisatie-aanroep van het doseeralgoritme, zie 5.1.3, de volgende initialisatie uitgevoerd te worden. 1. Alle ingangssignalen in DIF_A_IS[] krijgen de waarde 0 2. Alle wijzigingsvlaggen in de controlebuffer DIF_A_ISWIJZPB[] krijgen de waarde DIF_K_GELEZEN. 3. De algemene wijzigingsvlag DIF_V_ISWIJZPB krijgt de waarde DIF_K_GELEZEN
5.4
Variabelen (VAR).
5.4.1 Databuffer Variabelen worden door het doseeralgoritme in de int32 DIF_A_VAR[] buffer van de interface geschreven. Dit vindt voor alle variabelen plaats na afloop van een meetperiode en tijdens de meetperiode alleen voor een nieuw berekende doseertijd, DIF_I_VAR_DOS_TIJD_BER. De symbolische namen, betekenis en de eigenschappen van de elementen van dit buffer liggen vast in het document “LIJST MET PARAMETERS, VARIABELEN e.d.” [LIJST_PV]. Het betreft de elementen waarvan de naamgeving, t.b.v. de doseerinterface, begint met DIF_I_VAR... . De indices van de elementen zijn met hun symbolische naam gedefinieerd in het bestand “dos_int.h”. De grootte van de buffers staat vermeld in de constante int16 DIF_V_PB_AANT_VAR. 5.4.2 Geen controlebuffer Omdat wijzigingen in de variabelen zich tot twee situaties beperken, alle variabelen na afloop van de meetperiode en anders alleen de doseertijd, is er geen controlebuffer met wijzigingsvlaggen per variabele. In plaats daarvan wordt de beschikbaarheid van nieuwe informatie d.m.v. uitgangssignalen medegedeeld aan de procesbesturing, zie 5.5. 5.4.3
Algemene wijzigingsvlag 15
De algemene wijzigingsvlag int16 DIF_V_VARWIJZDOS dient wel gezet te worden door het doseeralgoritme. Hiervoor worden de waarden DIF_K_GESCHREVEN en DIF_K_GELEZEN gebruikt. Waarde
Symbool
Betekenis
1 0
DIF_K_GESCHREVEN DIF_K_GELEZEN
in buffer geschreven buffer gelezen
5.4.4 Initialisatie. Door het doseeralgoritme worden tijdens de initialisatie-aanroep de volgende initialisatie uitgevoerd: 1. Alle variabelen worden op “niet bekend/berekend” (= -1) gezet in DIF_A_VAR[]. 2. Een aantal variabelen wordt voorzien van een default waarde. 3. De algemene wijzigingsvlag DIF_V_VARWIJZDOS krijgt de waarde DIF_K_GESCHREVEN. Een aantal variabelen wordt in het begin van de eerste meetperiode voorzien van een waarde. De overige variabelen worden pas voorzien van een waarde nadat de eerste meetperiode verstreken is.
5.5
Uitgangssignalen (DS)
5.5.1 Databuffer Uitgangssignalen worden door het doseeralgoritme de in de int32 DIF_A_DS[] buffer van de interface geschreven. De symbolische namen, betekenis en de eigenschappen van de elementen van dit buffer liggen vast in het document “LIJST MET PARAMETERS, VARIABELEN e.d.” [LIJST_PV]. Het betreft de elementen waarvan de naamgeving, t.b.v. de doseerinterface, begint met DIF_I_DS... . De indices van de elementen zijn met hun symbolische naam gedefinieerd in het bestand “dos_int.h”. De grootte van de buffers staat vermeld in de constante int16 DIF_V_PB_AANT_DS. In aanvulling op het document [LIJST_PV] gelden voor de volgende uitgangssignalen speciale waarden. Deze gebruikte symbolen en waarden zijn gedefinieerd in de file “dos_int.h”. De betekenis van DIF_A_DS[DIF_I_DS_berek_per_meetper] is: Waarde
Symbool
Betekenis
0 1
DIF_K_AFWEZIG DIF_K_AANWEZIG
geen nieuwe variabelen beschikbaar nieuwe variabelen beschikbaar
De betekenis van DIF_A_DS[DIF_I_DS_berek_dos_tijd] is: Waarde
Symbool
Betekenis
0 1
DIF_K_AFWEZIG DIF_K_AANWEZIG
geen nieuwe DOS_TIJD_BER beschikbaar nieuwe DOS_TIJD_BER beschikbaar
16
5.5.2 Controlebuffer Uitgangssignalen worden alleen door het doseeralgoritme geschreven. Om die reden is er één controlebuffer met wijzigingsvlaggen, int16 DIF_A_DSWIJZDOS[]. Bij wijziging in de databuffer DIF_A_DS[] dient de bijbehorende wijzigingsvlag door het doseeralgoritme op de waarde DIF_K_GESCHREVEN gezet te worden. Bij het verwerken van de wijziging dient de vlag door de procesbesturing op de waarde DIF_K_GELEZEN gezet te worden. Waarde
Symbool
Betekenis
1 0
DIF_K_GESCHREVEN DIF_K_GELEZEN
in buffer geschreven buffer gelezen
5.5.3 Algemene wijzigingsvlag Naast de wijzigingsvlaggen in de controlebuffer dient ook de algemene wijzigingsvlag gezet te worden, int16 DIF_V_DSWIJZDOS. Hiervoor worden ook de waarden DIF_K_GESCHREVEN en DIF_K_GELEZEN gebruikt. 5.5.4 Initialisatie. Door het doseeralgoritme wordt tijdens de initialisatie-aanroep de volgende initialisatie uitgevoerd te worden: 1. Alle uitgangssignalen in DIF_A_DS[] krijgen de waarde 0. 2. Alle wijzigingsvlaggen in de controlebuffer DIF_A_DSWIJZDOS[] krijgen de waarde DIF_K_GESCHREVEN. 3. De algemene wijzigingsvlag DIF_V_DSWIJZDOS krijgt de waarde DIF_K_GESCHREVEN.
5.6
Configuratie constanten
De configuratieconstanten beschrijven de locale situatie van de toeritdosering en liggen vast in de volgende variabelen: •= •= •= •= •= •= •= •= •= •=
int16 aantal_stroken_TRsa int16 aantal_stroken_TRss int16 aantal_stroken_TRso int16 aantal_stroken_TRfile int16 aantal_stroken_RWso int16 aantal_stroken_RWsa int16 aantal_LT_hoog int16 aantal_LT_laag int16 busstrook int16 id_doseertoestel
De symbolische namen, betekenis en de eigenschappen van deze constanten liggen vast in het document “LIJST MET PARAMETERS, VARIABELEN e.d.” [LIJST_PV]. De hierboven gegeven namen komen overeen met de in deze lijst gehanteerde naamgeving t.b.v. de doseerinterface. De configuratie constanten worden niet gewijzigd door procesbesturing of doseeralgoritme, hun waarde wordt bepaald door de definities in bestand “dos_def.h”. 17
Het bestand “dos_def.h” dient door de fabrikant ingevuld te worden op basis van de door de opdrachtgever verstrekte configuratie van de betreffende toerit.
5.7
100 mS teller
T.b.v. tijdsafhankelijke functies van het doseeralgoritme dient de procesbesturing een teller bij te houden waarin de tienden van seconden, 100 mS, geteld worden, int32 DIF_V_TSEC_KLOK. Voor elke aanroep van het doseeralgoritme dient de procesbesturing deze variabele, indien nodig, bij te werken. Na het bereiken van de maximale waarde van deze variabele, int32_max, dient weer vanaf nul te worden geteld.
5.8
Versienummer
Het versienummer ligt vast in de volgende variabele int16 DIF_V_VERSIE_NR. Deze variabele kan door de procesbesturing worden gelezen en eventueel gebruikt worden om de afstemming van procesbesturing en doseerinterface te controleren.
18
6.
TESTFACILITEIT DOSEERINTERFACE
6.1
Algemeen
Ten behoeve van het functioneel testen van de doseerinterface in samenwerking met de procesbesturing worden faciliteiten aangebracht in doseeralgoritme, doseerinterface en procesbesturing. M.b.v. deze faciliteiten is het mogelijk om wijzigingen in de doseerinterface, aangebracht door de procesbesturing, ter controle te presenteren op een testapparaat. Omgekeerd kunnen vanuit dat testapparaat wijzigingen in de doseerinterface aangebracht worden, waarna de reactie van de procesbesturing hierop geobserveerd kan worden. Acties en reacties kunnen namelijk ook via andere kanalen ( lokale terminal, instelapparaat, detectoren, enz.) worden ingegeven respectievelijk worden waargenomen. T.b.v. de testfaciliteit dient een data-uitwisseling tot stand gebracht te worden tussen een testvoorziening in het doseeralgoritme en het op het doseertoestel aan te sluiten testapparaat. De testvoorziening in het algoritme interpreteert commando’s van het testapparaat en verstuurt hierop een antwoord. Ontvangen en versturen gaat door middel van een uitbreiding van de doseerinterface in samenwerking met de procesbesturing. De commando’s hebben betrekking op het lezen en/of schrijven van elementen van de doseerinterface. doseer interface testapparaat
test data via RS232 verbinding TDI Detector simulatoren
proces besturing
Signaal groepen
1 test data
Instel apparaat
doseer interface invoer en uitvoer buffers uitbreiding
PARM, VAR, IS, DS, enz.
lokale terminal CTMS
C-regelaar interface
test data
doseer algoritme interface test voorziening 4
doseer algoritme berekeningen
RWS C-regelaar 3
2
doseeralgoritme
Figuur 5: Testfaciliteiten 19
6.2
Doseeralgoritme
Het doseeralgoritme is op te splitsen in twee delen, de standaard afhandeling van het doseeralgoritme en de testvoorziening om de doseerinterface te kunnen lezen en schrijven. Slechts één van de twee is op een gegeven moment actief.
6.3
Rol procesbesturing in communicatie met testapparaat.
Om informatie over te dragen tussen testapparaat en testvoorziening in het doseeralgoritme speelt de procesbesturing een rol. Het doseerinterface testapparaat wordt d.m.v. een RS232 verbinding op het doseertoestel aangesloten. De karakteristieken van deze verbinding zijn: 9600 baud, 8 bits en geen pariteit. De procesbesturing dient karakters te lezen van dit seriele kanaal. De gelezen karakters dienen doorgegeven te worden aan het doseeralgoritme. Omgekeerd dienen karakters aangeboden door het doseeralgoritme verstuurd te worden over dit seriele kanaal. Doorgeven van karakters vindt plaats via een uitbreiding van de doseerinterface: de bericht buffers.
6.4
Berichtbuffers
T.b.v. invoer en uitvoer van berichten wordt de doseerinterface uitgebreid met twee buffer mechanismen, één voor invoer en één voor uitvoer De buffermechanismen worden uitgevoerd als ringbuffers, hierdoor is het mogelijk om meerdere karakters van een bericht tegelijkertijd door te geven. Een ringbuffer maakt gebruik van de volgende elementen: invoerindex uitvoerindex aantal karakters data buffer
Figuur 6: Elementen ringbuffer T.b.v. het plaatsen van data in een ringbuffer geldt het volgende mechanisme: Indien het aantal aanwezige karakters in de buffer kleiner is dan de lengte van de databuffer dan: •= Plaats het nieuwe karakter in de buffer op de locatie van de invoerindex. •= Verhoog de invoerindex •= Indien deze nu voorbij het einde van de buffer wijst wordt de index op het begin van de buffer gezet. •= Verhoog het aantal karakters. Anders: •= Is er geen plaats in de buffer. T.b.v. het lezen van data uit een ringbuffer geldt het volgende mechanisme: Indien het aantal karakters in de buffer groter is dan 0 dan: •= Lees het karakter uit de buffer op de locatie van de uitvoerindex. 20
•= Verhoog de uitvoerindex •= Indien deze nu voorbij het einde van de buffer wijst wordt de index op het begin van de buffer gezet. •= Verlaag het aantal karakters. Anders: •= Is er geen karakter aanwezig in de buffer. 6.4.1 Invoerberichten T.b.v. de invoer van berichten, i.e. van testapparaat naar doseeralgoritme, zijn de volgende elementen aanwezig in de doseerinterface: Databuffer •= char DIF_A_IBER[] int32 DIF_V_IBER_IN_INDEX Invoerindex •= Uitvoerindex •= int32 DIF_V_IBER_UIT_INDEX Aantal karakters in databuffer •= int32 DIF_V_IBER_AANTAL Lengte databuffer •= int32 DIF_V_IBER_LENGTE Met bovenstaande elementen wordt het ringbuffermechanisme geïmplementeerd. De procesbesturing plaats karakters in de ringbuffer, het doseeralgoritme leest karakters uit deze ringbuffer. N.B. Indien er geen plaats is in een ringbuffer is dit een indicatie dat “de andere” kant de data niet “snel genoeg” verwijdert. In geval van invoerberichten wordt het doseeralgoritme dan niet “vaak genoeg” aangeroepen. 6.4.2 Uitvoerberichten T.b.v. de uitvoer van berichten, i.e. van doseeralgoritme naar testapparaat, zijn de volgende elementen aanwezig in de doseerinterface: Databuffer •= char DIF_A_UBER[] Invoerindex •= int32 DIF_V_UBER_IN_INDEX Uitvoerindex •= int32 DIF_V_UBER_UIT_INDEX Aantal karakters in buffer •= int32 DIF_V_UBER_AANTAL Lengte databuffer •= int32 DIF_V_UBER_LENGTE Met bovenstaande elementen wordt het ringbuffermechanisme geïmplementeerd. Het doseeralgoritme plaats karakters in de ringbuffer voor, de procesbesturing leest karakters uit deze ringbuffer. N.B. Indien er geen plaats is in een ringbuffer is dit een indicatie dat “de andere” kant de data niet “snel genoeg” verwijdert. In geval van uitvoerberichten dient de procesbesturing de data te verwijderen alvorens het doseeralgoritme weer aan te roepen. 6.4.3 Initialisatie. Tijdens de initialisatie-aanroep van het doseeralgoritme worden de ringbuffers geïnitialiseerd. Invoer en uitvoer indices en het aantal karakters worden op 0 gezet.
21
7.
LITERATUUR EN PROGRAMMATUUR
Literatuur: [DOS]
[LIJST_PV]
Verkeerstechnische specificatie van een doseeralgoritme voor toeritdoseerinstallaties. Standaard verkeerstechnische specificatie voor een toeritdoseerinstallatie, Rijkswaterstaat, Adviesdienst Verkeer en Vervoer, Afdeling IBW Versie 1.1, d.d. 15 december 2000 Standaard verkeerstechnische specificatie voor een TDI LIJST MET PARAMETERS, VARIABELEN e.d. Versie 2.08, d.d. 18 juli 2002, definitief
Programmatuur: [C_D] RWS C-doseeralgoritme Versie 4.02, d.d. 30 oktober 2002
22
8.
IMPLEMENTATIE.
8.1
dos_int.h.
/** ;============================================================================= ;Project : TDI algoritme ;Versie : 4.02 ;File : dos_int.h ;Beschrijving: Header file met definitie van de elementen van de doseerinterface ;Bevat : VARIABELEN: ; : DIF_I_VAR... Indices in variabelen arrays ; : DIF_K_AANT_VAR Lengte variabelen array ; : DIF_A_VAR Array met waarden ; : DIF_V_VARWIJZDOS Algemene wijzigingsvlag ; : DIF_V_PB_AANT_VAR Constante met lengte arrays ; : ; : PARAMETERS: ; : DIF_I_PARM... Indices in parameters arrays ; : DIF_K_AANT_PARM Lengte parameters arrays ; : DIF_A_PARM Array met waarden ; : DIF_A_PARMWIJZDOS Array met wijzigingsvlaggen ; : DIF_A_PARMWIJZPB Array met wijzigingsvlaggen ; : DIF_V_PARMWIJZDOS Algemene wijzigingsvlag ; : DIF_V_PARMWIJZPB Algemene wijzigingsvlag ; : DIF_V_PB_AANT_PARM Constante met lengte arrays ; : ; : INGANGSSIGNALEN: ; : DIF_I_IS... Indices in ingangssignalen arrays ; : DIF_K_AANT_IS Lengte ingangssignalen arrays ; : DIF_A_IS Array met waarden ; : DIF_A_ISWIJZPB Array met wijzigingsvlaggen ; : DIF_V_ISWIJZPB Algemene wijzigingsvlag ; : DIF_V_PB_AANT_IS Constante met lengte arrays ; : ; : UITGANGSSIGNALEN: ; : DIF_I_DS... Indices in uitgangssignalen arrays ; : DIF_K_AANT_DS Lengte uitgangssignalen arrays ; : DIF_A_DS Array met waarden ; : DIF_A_DSWIJZDOS Array met wijzigingsvlaggen ; : DIF_V_DSWIJZDOS Algemene wijzigingsvlag ; : DIF_V_PB_AANT_DS Constante met lengte arrays ; : ; : CONSTANTEN: ; : aantal_stroken_TRss Aantal rijstroken bij de stopstreep ; : aantal_stroken_TRfile Aantal rijstroken bij het filemeldpunt ; : aantal_stroken_RWso Aantal rijstroken rijksweg stroomopwaarts ; : aantal_stroken_RWsa Aantal rijstroken rijksweg stroomafpwaarts ; : aantal_LT_hoog Aantal hoge lantaarns ; : aantal_LT_laag Aantal lage lantaarns ; : busstrook Busstrook aanwezig ; : id_doseertoestel Identificatienummer doseertoestel ; : aantal_stroken_TRsa Aantal rijstroken toerit stroomafwaarts ; : aantal_stroken_TRso Aantal rijstroken toerit stroomopwaarts ; : ; : KLOK: ; : DIF_V_TSEC_KLOK 100 mS teller ; : ; : VERSIENUMMER: ; : DIF_V_VERSIE_NR Versie nummer interface ; : ; : RINGBUFFERS T.B.V. IN- en UITVOER TESTBERICHTEN: ; : DIF_A_IBER Databuffer ; : DIF_V_IBER_IN_INDEX Invoerindex ; : DIF_V_IBER_UIT_INDEX Uitvoerindex ; : DIF_V_IBER_AANTAL Aantal karakters in databuffer ; : DIF_V_IBER_LENGTE Lengte databuffer ; : ; : DIF_A_UBER Databuffer ; : DIF_V_UBER_IN_INDEX Invoerindex ; : DIF_V_UBER_UIT_INDEX Uitvoerindex ; : DIF_V_UBER_AANTAL Aantal karakters in databuffer ; : DIF_V_UBER_LENGTE Lengte databuffer ; : ; : SPECIALE WAARDEN: ; : t.b.v. lees en schrijf vlaggen
23
; : t.b.v. aanroep en returnwaarde doseeralgoritme ; : t.b.v. uitsturing signaalgroepen ; : t.b.v. programmastatus doseertoestel ; : t.b.v. detectorstatus detectoren ; : t.b.v. maxima aantal rijstroken en lantaarns ; : ; : PROCEDURE: ; : doseeralgoritme() is welliswaar geen onderdeel van dos_int.c ; : maar is t.b.v. de compleetheid van de interface ; : in deze headerfile opgenomen ; ;Compiler : ANSI C ;Controls : ; ;Historie : ; ;$Log: S:\archive\source\Dos_int.h_v $ ; ; Rev 1.13 09 Oct 2002 09:38:44 VSEDM ;Version in file adjusted ; ; Rev 1.12 09 Oct 2002 09:25:56 VSEDM ;TDI adjusted to "lijst_PV" version 2.08 ; ; Rev 1.11 28 Mar 2000 12:24:20 VSEDM ;Op verzoek van AVV is de "lange" historie verwijderd. ; ;=============================================================================*/ #ifndef __DOS_INT_H__ #define __DOS_INT_H__ #include "dos_typ.h" /*===================================================================================*/ /* MACRO DEFINITIES */ /*===================================================================================*/ /*===================================================================================*/ /* MACRO VERSIENUMMER */ /*===================================================================================*/ #define DIF_K_VERSIE_NR 4 /* Versie nummer interface */ /*===================================================================================*/ /* MACRO's VARIABELEN (VAR), Indices, DIF_I_VAR... */ /*===================================================================================*/ #define DIF_I_VAR_I_RWso_i 0 /* 1 t/m 4 */ #define DIF_I_VAR_I_RWso_1 0 /* ID = 1 */ #define DIF_I_VAR_I_RWso_2 1 /* ID = 2 */ #define DIF_I_VAR_I_RWso_3 2 /* ID = 3 */ #define DIF_I_VAR_I_RWso_4 3 /* ID = 4 */ #define #define #define #define #define
DIF_I_VAR_I_RWsa_i DIF_I_VAR_I_RWsa_1 DIF_I_VAR_I_RWsa_2 DIF_I_VAR_I_RWsa_3 DIF_I_VAR_I_RWsa_4
4 4 5 6 7
/* /* /* /* /*
1 t/m 4 ID = 5 ID = 6 ID = 7 ID = 8
*/ */ */ */ */
#define #define #define
DIF_I_VAR_I_TRso_i DIF_I_VAR_I_TRso_1 DIF_I_VAR_I_TRso_2
8 8 9
/* 1 t/m 2 /* ID = 9 /* ID = 10
*/ */ */
#define #define #define
DIF_I_VAR_I_TRsa_i DIF_I_VAR_I_TRsa_1 DIF_I_VAR_I_TRsa_2
10 10 11
/* 1 t/m 2 /* ID = 11 /* ID = 12
*/ */ */
#define #define #define
DIF_I_VAR_ROOD_RIJDERS_i DIF_I_VAR_ROOD_RIJDERS_1 DIF_I_VAR_ROOD_RIJDERS_2
12 12 13
/* 1 t/m 2 /* ID = 13 /* ID = 14
*/ */ */
#define #define #define #define #define
DIF_I_VAR_V_RWso_i DIF_I_VAR_V_RWso_1 DIF_I_VAR_V_RWso_2 DIF_I_VAR_V_RWso_3 DIF_I_VAR_V_RWso_4
14 14 15 16 17
/* /* /* /* /*
*/ */ */ */ */
24
1 t/m 4 ID = 15 ID = 16 ID = 17 ID = 18
#define #define #define #define #define
DIF_I_VAR_V_RWsa_i DIF_I_VAR_V_RWsa_1 DIF_I_VAR_V_RWsa_2 DIF_I_VAR_V_RWsa_3 DIF_I_VAR_V_RWsa_4
18 18 19 20 21
/* /* /* /* /*
1 t/m 4 ID = 19 ID = 20 ID = 21 ID = 22
*/ */ */ */ */
#define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define
DIF_I_VAR_I_g_RWso DIF_I_VAR_I_RWsa DIF_I_VAR_I_g_TRso DIF_I_VAR_I_TRsa DIF_I_VAR_I_gh_RWso DIF_I_VAR_I_h_RWsa DIF_I_VAR_I_gh_TRso DIF_I_VAR_I_h_TRsa DIF_I_VAR_I_kr_IN DIF_I_VAR_V_kr_IN DIF_I_VAR_I_kr_UIT DIF_I_VAR_V_kr_UIT DIF_I_VAR_VA_DOSEREN DIF_I_VAR_VA_REGELEN DIF_I_VAR_D_L_FOUT_UIT DIF_I_VAR_UITSCHAKELEN DIF_I_VAR_L_FOUT_UIT DIF_I_VAR_FILE_TR DIF_I_VAR_LAGE_V_RW_DOS DIF_I_VAR_LOGGEN DIF_I_VAR_DOS_TIJD_BER DIF_I_VAR_I_delta_IV_C
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
/* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /*
ID ID ID ID ID ID ID ID ID ID ID ID ID ID ID ID ID ID ID ID ID ID
55 56 57 58 59 60 61 62 74 75 77 78 86 87 89 91 92 94 95 96 109 113
*/ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */
#define #define #define #define #define
DIF_I_VAR_bes_RWso_i DIF_I_VAR_bes_RWso_1 DIF_I_VAR_bes_RWso_2 DIF_I_VAR_bes_RWso_3 DIF_I_VAR_bes_RWso_4
44 44 45 46 47
/* /* /* /* /*
1 t/m 4 ID = 701 ID = 702 ID = 703 ID = 704
*/ */ */ */ */
#define #define #define #define #define
DIF_I_VAR_bes_RWsa_i DIF_I_VAR_bes_RWsa_1 DIF_I_VAR_bes_RWsa_2 DIF_I_VAR_bes_RWsa_3 DIF_I_VAR_bes_RWsa_4
48 48 49 50 51
/* /* /* /* /*
1 t/m 4 ID = 705 ID = 706 ID = 707 ID = 708
*/ */ */ */ */
#define #define #define
DIF_I_VAR_bes_TRso_i DIF_I_VAR_bes_TRso_1 DIF_I_VAR_bes_TRso_2
52 52 53
/* 1 t/m 4 */ /* ID = 709 */ /* ID = 710 */
#define #define #define
DIF_I_VAR_bes_TRsa_i DIF_I_VAR_bes_TRsa_1 DIF_I_VAR_bes_TRsa_2
54 54 55
/* 1 t/m 4 */ /* ID = 711 */ /* ID = 712 */
#define #define #define
DIF_I_VAR_B_FOUT_UIT DIF_I_VAR_I_agh_RWso DIF_I_VAR_I_agh_TRso
56 57 58
/* ID = 713 */ /* ID = 714 */ /* ID = 715 */
#define #define #define #define #define
DIF_I_VAR_V_a_RWso_i DIF_I_VAR_V_a_RWso_1 DIF_I_VAR_V_a_RWso_2 DIF_I_VAR_V_a_RWso_3 DIF_I_VAR_V_a_RWso_4
59 59 60 61 62
/* /* /* /* /*
1 t/m 4 ID = 716 ID = 717 ID = 718 ID = 719
*/ */ */ */ */
#define #define #define #define #define
DIF_I_VAR_V_a_RWsa_i DIF_I_VAR_V_a_RWsa_1 DIF_I_VAR_V_a_RWsa_2 DIF_I_VAR_V_a_RWsa_3 DIF_I_VAR_V_a_RWsa_4
63 63 64 65 66
/* /* /* /* /*
1 t/m 4 ID = 720 ID = 721 ID = 722 ID = 723
*/ */ */ */ */
#define #define #define #define
DIF_I_VAR_V_agm_RWso DIF_I_VAR_V_agm_RWsa DIF_I_VAR_LAGE_I_TR DIF_I_VAR_EXTRA_LAGE_V_RW
67 68 69 70
/* /* /* /*
ID ID ID ID
*/ */ */ */
#define
DIF_K_AANT_VAR
71
/* Aantal
= = = = = = = = = = = = = = = = = = = = = =
= = = =
724 725 726 727
*/
/*===================================================================================*/ /* MACRO's PARAMETERS (PARM) Indices, DIF_I_PARM... */ /*===================================================================================*/ #define DIF_I_PARM_MEETPER 0 /* ID = 147 */ #define DIF_I_PARM_CAPACITEIT_RW 1 /* ID = 149 */ #define DIF_I_PARM_SCHAKELAAR_PF 2 /* ID = 153 */
25
#define #define #define #define #define #define #define #define #define #define #define #define #define #define #define
DIF_I_PARM_DOS_TIJD_MAX DIF_I_PARM_DOS_delta DIF_I_PARM_I_dr_RWso_IN DIF_I_PARM_I_dr_TRso_IN DIF_I_PARM_V_dr_RWso_IN DIF_I_PARM_V_dr_RWsa_IN DIF_I_PARM_I_dr_RWso_UIT DIF_I_PARM_I_dr_TRso_UIT DIF_I_PARM_V_dr_RWso_UIT DIF_I_PARM_V_dr_RWsa_UIT DIF_I_PARM_I_vast_RWso DIF_I_PARM_I_vast_TRso DIF_I_PARM_V_vast_RWso DIF_I_PARM_V_vast_RWsa DIF_I_PARM_TIJD_NA_FILE
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
/* /* /* /* /* /* /* /* /* /* /* /* /* /* /*
ID ID ID ID ID ID ID ID ID ID ID ID ID ID ID
155 156 189 190 192 193 195 196 198 199 203 204 206 207 213
*/ */ */ */ */ */ */ */ */ */ */ */ */ */ */
#define #define #define #define #define
DIF_I_PARM_besp_RWso_i DIF_I_PARM_besp_RWso_1 DIF_I_PARM_besp_RWso_2 DIF_I_PARM_besp_RWso_3 DIF_I_PARM_besp_RWso_4
18 18 19 20 21
/* /* /* /* /*
1 t/m 4 ID = 728 ID = 729 ID = 730 ID = 731
*/ */ */ */ */
#define #define #define #define #define
DIF_I_PARM_besp_RWsa_i DIF_I_PARM_besp_RWsa_1 DIF_I_PARM_besp_RWsa_2 DIF_I_PARM_besp_RWsa_3 DIF_I_PARM_besp_RWsa_4
22 22 23 24 25
/* /* /* /* /*
1 t/m 4 ID = 732 ID = 733 ID = 734 ID = 735
*/ */ */ */ */
#define #define #define
DIF_I_PARM_besp_TRso_i DIF_I_PARM_besp_TRso_1 DIF_I_PARM_besp_TRso_2
26 26 27
/* 1 t/m 2 */ /* ID = 736 */ /* ID = 737 */
#define #define #define
DIF_I_PARM_besp_TRsa_i DIF_I_PARM_besp_TRsa_1 DIF_I_PARM_besp_TRsa_2
28 28 29
/* 1 t/m 2 */ /* ID = 738 */ /* ID = 739 */
#define #define #define #define #define #define #define #define #define #define
DIF_I_PARM_a_I DIF_I_PARM_b_I DIF_I_PARM_a_V DIF_I_PARM_b_V DIF_I_PARM_I_dr_TR DIF_I_PARM_V_dr_RWso_DOS DIF_I_PARM_V_dr_RWsa_DOS DIF_I_PARM_V_dr_EXTRA_LAAG DIF_I_PARM_V_dr_EINDE_EXTRA_LAAG DIF_I_PARM_DOS_TIJD_EXTRA_MAX
30 31 32 33 34 35 36 37 38 39
/* /* /* /* /* /* /* /* /* /*
#define
DIF_K_AANT_PARM
40
/* Aantal
ID ID ID ID ID ID ID ID ID ID
= = = = = = = = = = = = = = =
= = = = = = = = = =
740 741 742 743 744 745 746 747 748 749
*/ */ */ */ */ */ */ */ */ */ */
/*===================================================================================*/ /* MACRO's INGANGSSIGNALEN (IS) Indices, DIF_I_IS... */ /*===================================================================================*/ #define DIF_I_IS_DOSR_STATUS 0 /* ID = 144 */ #define DIF_I_IS_I_delta_IV_C 1 /* ID = 351 */ #define #define #define #define #define
DIF_I_IS_det_RWso_i DIF_I_IS_det_RWso_1 DIF_I_IS_det_RWso_2 DIF_I_IS_det_RWso_3 DIF_I_IS_det_RWso_4
2 2 3 4 5
/* /* /* /* /*
1 t/m 4 ID = 355 ID = 356 ID = 357 ID = 358
*/ */ */ */ */
#define #define #define #define #define
DIF_I_IS_det_RWsa_i DIF_I_IS_det_RWsa_1 DIF_I_IS_det_RWsa_2 DIF_I_IS_det_RWsa_3 DIF_I_IS_det_RWsa_4
6 6 7 8 9
/* /* /* /* /*
1 t/m 4 ID = 359 ID = 360 ID = 361 ID = 362
*/ */ */ */ */
#define #define #define #define #define
DIF_I_IS_V_RWso_i DIF_I_IS_V_RWso_1 DIF_I_IS_V_RWso_2 DIF_I_IS_V_RWso_3 DIF_I_IS_V_RWso_4
10 10 11 12 13
/* /* /* /* /*
1 t/m 4 ID = 525 ID = 526 ID = 527 ID = 528
*/ */ */ */ */
#define #define #define #define #define
DIF_I_IS_V_RWsa_i DIF_I_IS_V_RWsa_1 DIF_I_IS_V_RWsa_2 DIF_I_IS_V_RWsa_3 DIF_I_IS_V_RWsa_4
14 14 15 16 17
/* /* /* /* /*
1 t/m 4 ID = 541 ID = 542 ID = 543 ID = 544
*/ */ */ */ */
26
#define #define #define
DIF_I_IS_SG1i_1 DIF_I_IS_SG11_1 DIF_I_IS_SG12_1
18 18 19
/* 1 t/m 2 */ /* ID = 557 */ /* ID = 558 */
#define #define #define
DIF_I_IS_SG1i_2 DIF_I_IS_SG11_2 DIF_I_IS_SG12_2
20 20 21
/* 1 t/m 2 */ /* ID = 565 */ /* ID = 565 */
#define #define #define
DIF_I_IS_SG1i_7 DIF_I_IS_SG11_7 DIF_I_IS_SG12_7
22 22 23
/* 1 t/m 2 */ /* ID = 571 */ /* ID = 572 */
#define #define #define
DIF_I_IS_wus_SG1i DIF_I_IS_wus_SG11 DIF_I_IS_wus_SG12
24 24 25
/* 1 t/m 2 */ /* ID = 579 */ /* ID = 580 */
#define
DIF_I_IS_L_FOUT_UIT
26
/* ID = 587 */
#define #define #define
DIF_I_IS_pardon_SG1i DIF_I_IS_pardon_SG11 DIF_I_IS_pardon_SG12
27 27 28
/* 1 t/m 2 */ /* ID = 588 */ /* ID = 589 */
#define #define #define
DIF_I_IS_FILE_TR DIF_I_IS_LOGGEN DIF_I_IS_UITSCHAKELEN
29 30 31
/* ID = 597 */ /* ID = 598 */ /* ID = 599 */
#define
DIF_K_AANT_IS
32
/* Aantal
*/
/*===================================================================================*/ /* MACRO's UITGANGSSIGNALEN (DS) Indices, DIF_I_DS... */ /*===================================================================================*/ #define DIF_I_DS_berek_per_meetper 0 /* ID = 600 */ #define DIF_I_DS_berek_dos_tijd 1 /* ID = 601 */ #define
DIF_K_AANT_DS
2
/* Aantal
*/
/*===================================================================================*/ /* MACRO's SPECIALE WAARDEN */ /*===================================================================================*/ /* T.b.v. wijzigingsvlaggen */ #define DIF_K_GESCHREVEN 1 /* in buffer geschreven */ #define DIF_K_GELEZEN 0 /* buffer gelezen */ #define DIF_K_GEEN_PARMWIJZ -1 /* geen wijzigingen in parameterbuffer */ #define DIF_K_MEER_PARMWIJZ -2 /* een of meerdere wijzigingen in parameterbuffer */ #define DIF_K_INIT_PARM -3 /* initiele waarden in parameterbuffer */ /* T.b.v aanroep en returnwaarde doseeralgoritme() #define DIF_K_GEEN_INIT 0 /* 'normale' aanroep #define DIF_K_INIT 1 /* init na programmastart
*/ */ */
#define DIF_K_GEEN_FOUT #define DIF_K_INIT_FOUT #define DIF_K_DOS_FOUT1
0 -1 1
*/ */
#define DIF_K_DOS_FOUT2
2
#define DIF_K_DOS_FOUT3
4
#define DIF_K_DOS_FOUT4
8
/* geen fout /* initialisatie fout /* doseerprogramma leest een ongeldige parameter /* doseerprogramma leest een ongeldig ingangssignaal /* doseerprogramma aangeroepen met ongeldige code /* wijzigingsvlag niet gereset, i.e. DIF_K_GELEZEN
/* T.b.v uitsturing signaalgroepen: ingangssignaal DIF_I_IS_wus_SG11 t/m DIF_I_IS_wus_SG12 #define DIF_K_ROOD 0 /* rood #define DIF_K_GROEN 1 /* groen / wit / wit knipperen #define DIF_K_GEEL 2 /* geel / groen knipperen #define DIF_K_KNIPWIT 3 /* wit knipperen #define DIF_K_GEDOOFD 4 /* lantaarn(s) gedoofd /* T.b.v. programma status doseertoestel: ingangssignaal DIF_I_IS_DOSR_STATUS #define DIF_K_STAT_ONGEDEF 0 /* Ongedefinieerd #define DIF_K_STAT_GEDOOFD 1 /* Gedoofd #define DIF_K_STAT_KP 2 /* Knipperen #define DIF_K_STAT_GEEL 3 /* Geel bij inschakelen #define DIF_K_STAT_AR 4 /* Alles rood */
27
*/ */ */ */ */ */ */ */ */ */ */ */ */ */ */
#define DIF_K_STAT_DOS
5
/* Doseren (==regelen)
/* T.b.v. detectorstatus: ingangssignaal DIF_I_IS_SG11_1 t/m DIF_I_IS_SG12_7 #define DIF_M_DET_BEZET 1 /* Detector bezet #define DIF_M_DET_STORING 2 /* Detector in storing #define DIF_M_DET_BOVENGEDRAG 4 /* Detectie bovengedrag #define DIF_M_DET_ONDERGEDRAG 8 /* Detectie ondergedrag /* Maxima voor configuratie constanten #define DIF_K_max_aantal_stroken_TR 2 #define DIF_K_max_aantal_stroken_RW 4 #define DIF_K_max_aantal_LT 2
*/ */ */ */ */ */
#define DIF_K_max_id_doseertoestel
255
*/ /* Maximum aantal stroken op de toerit */ /* Maximum aantal stroken op de rijksweg*/ /* Maximum aantal lantaarns, hoog en/of laag */ /* Maximum versienummer doseertoestel */
/* Minima voor configuratie constanten #define DIF_K_min_aantal_stroken_TR #define DIF_K_min_aantal_stroken_RW #define DIF_K_min_aantal_LT_hoog #define DIF_K_min_aantal_LT_laag #define DIF_K_min_id_doseertoestel
1 1 0 1 1
/* /* /* /* /*
Minimum Minimum Minimum Minimum Minimum
*/ aantal stroken op de toerit */ aantal stroken op de rijksweg*/ aantal lantaarns hoog */ aantal lantaarns laag */ versienummer doseertoestel */
/* T.b.v. algemene waarden van variabelen en ingangs- en uitgangssignalen #define DIF_K_UIT 0 #define DIF_K_AAN 1 #define DIF_K_AFWEZIG #define DIF_K_AANWEZIG
0 1
#define DIF_K_ONBEKEND
-1
*/
/*===================================================================================*/ /* DATA DEFINITIES */ /*===================================================================================*/ /* VARIABELEN */ extern int32 DIF_A_VAR extern int16 DIF_V_VARWIJZDOS;
[];
/* Array met waarden */ /* Algemene wijzigingsvlag (door doseeralgoritme) */ /* Aantal variabelen */
extern const int16 DIF_V_PB_AANT_VAR; /* PARAMETERS */ extern int32 DIF_A_PARM extern int16 DIF_A_PARMWIJZDOS
[]; [];
extern int16 DIF_A_PARMWIJZPB
[];
/* Array met waarden /* Array met wijzigingsvlaggen (door doseeralgoritme) /* Array met wijzigingsvlaggen (door procesbesturing) /* Algemene wijzigingsvlag (door doseeralgoritme) /* Algemene wijzigingsvlag (door procesbesturing) /* Aantal parameters
extern int16 DIF_V_PARMWIJZDOS; extern int16 DIF_V_PARMWIJZPB; extern const int16 DIF_V_PB_AANT_PARM; /* INGANGSSIGNALEN */ extern int32 DIF_A_IS extern int16 DIF_A_ISWIJZPB
[]; [];
/* Array met waarden /* Array met wijzigingsvlaggen (door procesbesturing) /* Algemene wijzigingsvlag (door procesbesturing) /* Aantal ingangssignalen
extern int16 DIF_V_ISWIJZPB; extern const int16 DIF_V_PB_AANT_IS; /* UITGANGSSIGNALEN */ extern int32 DIF_A_DS extern int16 DIF_A_DSWIJZDOS
[]; [];
/* Array met waarden /* Array met wijzigingsvlaggen (door doseeralgoritme) /* Algemene wijzigingsvlag (door doseeralgoritme) /* Aantal uitgangssignalen
extern int16 DIF_V_DSWIJZDOS; extern const int16 DIF_V_PB_AANT_DS; /* CONSTANTEN */ extern const int16 aantal_stroken_TRss;
*/ */ */ */ */ */ */ */ */ */ */ */ */ */
/* ID = 136, Aantal rijstroken bij de stopstreep */ /* ID = 137, Aantal rijstroken bij het filemeldpunt */ /* ID = 138, Aantal rijstroken rijksweg stroomopwaarts*/ /* ID = 139, Aantal rijstroken rijksweg stroomafwaarts*/
extern const int16 aantal_stroken_TRfile; extern const int16 aantal_stroken_RWso; extern const int16 aantal_stroken_RWsa;
28
extern extern extern extern
const const const const
int16 int16 int16 int16
aantal_LT_hoog; aantal_LT_laag; busstrook; id_doseertoestel;
/* /* /* /*
Aantal hoge lantaarns Aantal lage lantaarns Busstrook aanwezig Identificatienummer doseertoestel /* ID = 353, Aantal rijstroken toerit stroomafwaarts /* ID = 354, Aantal rijstroken toerit stroomopwaarts
*/ */ */
/* KLOK */ extern int32 DIF_V_TSEC_KLOK;
/* 100 mS kloktik
*/
/* VERSIENUMMER */ extern int16 DIF_V_VERSIE_NR;
/* Versienummer interface
*/
extern const int16 aantal_stroken_TRsa; extern const int16 aantal_stroken_TRso;
ID ID ID ID
= = = =
140, 141, 142, 143,
*/ */ */
/* RINGBUFFERS T.B.V. IN- en UITVOER TESTBERICHTEN */ extern char DIF_A_IBER []; /* Databuffer extern int32 DIF_V_IBER_IN_INDEX; /* Invoerindex extern int32 DIF_V_IBER_UIT_INDEX; /* Uitvoerindex extern int32 DIF_V_IBER_AANTAL; /* Aantal karakters in databuffer extern const int32 DIF_V_IBER_LENGTE; /* Lengte databuffer
*/ */ */ */ */
extern extern extern extern extern const
*/ */ */ */ */
char int32 int32 int32 int32
DIF_A_UBER []; DIF_V_UBER_IN_INDEX; DIF_V_UBER_UIT_INDEX; DIF_V_UBER_AANTAL; DIF_V_UBER_LENGTE;
/* /* /* /* /*
Databuffer Invoerindex Uitvoerindex Aantal karakters in databuffer Lengte databuffer
/*===================================================================================*/ /* PROCEDURE DEFINITIE */ /*===================================================================================*/ extern int16 doseeralgoritme(int16 task); #endif /* __DOS_INT_H__
/* Doseeralgoritme
*/
29
*/
8.2
dos_def.h
/** ;========================================================================= ;Project : TDI algoritme ;Versie : 4.02 ;File : dos_def.h ;Beschrijving: Definities doseeralgoritme ; : Invulling voor de configuratie constanten van de doseerinterface ;Bevat : DIF_K_aantal_stroken_TRsa voor aantal_stroken_TRsa en ; : voor aantal_stroken_TRss ; : DIF_K_aantal_stroken_TRso voor aantal_stroken_TRso en ; : voor aantal_stroken_TRfile ; : DIF_K_busstrook voor busstrook ; : DIF_K_aantal_stroken_RWsa voor aantal_stroken_RWsa ; : DIF_K_aantal_stroken_RWso voor aantal_stroken_RWso ; : DIF_K_aantal_LT_hoog voor aantal_LT_hoog ; : DIF_K_aantal_LT_laag voor aantal_LT_laag ; : DIF_K_id_doseertoestel voor id_doseertoestel ; ;Compiler : ANSI C ;Controls : ; ;Historie : ; ;$Log: S:\archive\source\Dos_def.h_v $ ; ; Rev 1.9 09 Oct 2002 09:57:12 VSEDM ;Now version in file adjusted for real ; ; Rev 1.8 09 Oct 2002 09:38:42 VSEDM ;Version in file adjusted ; ; Rev 1.7 09 Oct 2002 09:25:56 VSEDM ;TDI adjusted to "lijst_PV" version 2.08 ; ; Rev 1.6 31 Mar 2000 09:28:06 VSEDM ;Op verzoek van AVV is de "lange" historie verwijderd. ; ;========================================================================== */ #ifndef __DOS_DEF_H__ #define __DOS_DEF_H__ #include "dos_typ.h" /************************************************************************* * DE VOLGENDE DEFINITIES MOETEN,IN OVERLEG MET DE OPDRACHTGEVER * * AANGEPAST WORDEN AAN DE CONFIGURATIE VAN DE TOERITDOSEERINSTALLATIE. * *************************************************************************/ /* Aantal rijstroken op de toerit #define DIF_K_aantal_stroken_TRsa #define DIF_K_aantal_stroken_TRso
*/ 2 2
/* 1 of 2 /* 1 of 2
*/ */
/* Busstrook aanwezig op de toerit #define DIF_K_busstrook
*/ TRUE
/* TRUE of FALSE
*/
/* 1, 2, 3 of 4 /* 1, 2, 3 of 4
*/ */
/* Aantal rijstroken op de rijksweg */ #define DIF_K_aantal_stroken_RWsa 4 #define DIF_K_aantal_stroken_RWso 4
30
/* Aantal hoge en lage lantaarns #define DIF_K_aantal_LT_hoog #define DIF_K_aantal_LT_laag
*/ 0 2
/* 0, 1 of 2 /* 1 of 2
*/ */
/* ID nummer van het toestel #define DIF_K_id_doseertoestel
*/ 1
/* 1 t/m 255
*/
#endif /* __DOS_DEF_H__ */
31
8.3
dos_typ.h
/** ;========================================================================== ;Project : TDI algoritme ;Versie : 4.01 ;File : dos_typ.h ;Beschrijving: Algemene doseer definities en datatypes ;Bevat : ; ;Compiler : ANSI C ;Controls : ; ;Historie : ; ;$Log: S:\archive\source\Dos_typ.h_v $ ; ; Rev 1.7 31 Mar 2000 09:29:14 VSEDM ;Nu wel op verzoek van AVV is de "lange" historie verwijderd. ; ;========================================================================== */ #ifndef __DOS_TYP_H__ #define __DOS_TYP_H__ /***************************************************************** * Macro constant definitions * *****************************************************************/ #define #define
TRUE FALSE
1 0
/* logical TRUE */ /* logical FALSE */
#define #define #define #define
int16_max int16_min int32_max int32_min
((int16)(0x7fff)) ((int16)(0x8000)) ((int32)(0x7fffffff)) ((int32)(0x80000000))
/***************************************************************** * Type definitions * * De onderstaande typedefinities zijn gedefinieerd volgens de * * ANSI-C standaard. Als de door de fabrikant gebruikte compiler * * typen met afwijkende omvang gegenereerd dienen de onderstaande* * typedefinities aangepast te worden zodat aan de vereiste * * omvang voldaan wordt (resp. 16 en 32 bits) * * * * DIT ZIJN DE ENIGE TWEE PROGRAMMAREGELS DIE IN DEZE FILE * * GEWIJZIGD MOGEN WORDEN. * *****************************************************************/ typedef typedef #endif
short long
int16; int32;
/* __DOS_TYP_H__ */
32
/* 16 bits integer */ /* 32 bits integer */