Adviesdienst Verkeer en Vervoer
Procesbesturing Handleiding
CCOL
-
FLASH
Adviesdienst Verkeer en Vervoer
Procesbesturing Handleiding
Datum Kenmerk Eerste versie
7 juni 2001 AVV257/Ptf/6345 1 september 2000
CCOL
-
FLASH
Documentatiepagina
Opdrachtgever(s)
Titel rapport
Kenmerk
Datum publicatie
Projectteam opdrachtgever(s)
Projectteam Goudappel Coffeng
Projectomschrijving
Trefwoorden
Adviesdienst Verkeer en Vervoer
Procesbesturing CCOL - FLASH Handleiding AVV257/Ptf/ 7 juni 2001 de heer ing. P. de Jong (projectleider) de heer ing. F.P.M. Peters (projectleider), de heer ing. L.H.A. Prinsen CCOL
onder FLASH
procesbesturing, CCOL, FLASH, handleiding
Inhoud
Pagina
1
Inleiding
1
2 2.1 2.2 2.3 2.4 2.5 2.5.1 2.5.2 2.5.3 2.5.4
Installatie Installatie CCOL en procesbesturing Selecteren MAKEFILE voor bepaalde Visual C++ compiler Installatie Visual C++ compiler Instellingen CCOL binnen FLASH Aanpassingen sourcecode t.b.v. CCOL onder FLASH Aanmaken nieuwe regelaar Aanvullende bestanden CCOLFLS.C en CCOLFLS.DEF Nummers en statussen van eigen en gekoppelde regelaars Fixatie
2 2 3 3 4 4 4 5 6 7
3 3.1 3.2 3.3 3.4 3.5 3.6 3.6.1 3.6.2
Werken met CCOL onder FLASH FLXCCOL Compileren Aangemaakte files en betekenis Melding in workbench bij opstarten regeling Dumpen/dumpfilenaam Debugmogelijkheden Commando-parser Printxy
8 8 8 9 9 10 10 10 10
4 4.1 4.2
Tips en trucs Commando-parser reageert niet op ingevoerd commando Commando-parser of printxy vensters komen niet in beeld
12 12 12
5
Inlichtingen
13
Pagina 1
1
Inleiding
Reeds enige tijd is het programma FLASH in gebruik. Tot nu toe was het binnen FLASH alleen mogelijk om gebruik te maken van kruispuntregelingen van FLXCOL76 en de RWS-C regelaar. Als gevolg van de wens om ook de CCOL kruispuntregelaar onder te brengen onder FLASH is in opdracht van de Adviesdienst Verkeer en Vervoer door Goudappel Coffeng de procesbesturing CCOL - FLASH ontwikkeld. Dit zal in deze handleiding worden toegelicht.
Pagina 2
2
Installatie
2.1
Installatie CCOL en procesbesturing
De CCOL-procesbesturing wordt uitgeleverd in drie directories. Deze directories zijn BIN, REG en STANDARD. Hieronder volgt een overzicht van de voor gebruikers interessante bestanden in de verschillende directories: BIN
FLXCCOL.EXE
REG
-
REG\DEFAULT
-
REG\DEFAULT
CCOLFLS.C
REG\DEFAULT
CCOLFLS.DEF
REG\DEFAULT
MAKEFILE
Programma om uit de CCOLsourcecode een CONFIL-file te genereren t.b.v. FLEXSYT Directory waarin de regelingen geplaatst kunnen worden Directory waar de default-bestanden staan die nodig zijn om een CCOLregeling onder FLASH te laten werken (kunnen worden gebruikt bij aanmaken nieuwe regeling binnen FLASH) Totaal van sourcecode van CCOL DLL (beschrijving inhoud volgt verderop) Definitiefile t.b.v. aanmaken CONFIL (beschrijving inhoud volgt in paragraaf 2.5) De benodigde MAKEFILE om een CCOL-regeling aan te maken voor FLASH
REG\DEFAULT
MAKEFILE.V5
REG\DEFAULT
MAKEFILE.V6
STANDARD\CCOLPBRT CONVCCOL.EXE
STANDARD\CCOLPBRT CCOLUTLS.H
De MAKEFILE indien gebruik wordt gemaakt van Visual C++ versie 5 (zie paragraaf 2.2) De MAKEFILE indien gebruik wordt gemaakt van Visual C++ versie 6 (zie paragraaf 2.2) Programma om een bestand CONV.C aan te maken dat tijdens het aanmaken van de CCOL DLL tijdelijk nodig is Include bestand dat moet worden ge-include indien gebruikgemaakt wordt van de functionaliteit van
Pagina 3
STANDARD\LIB
2.2
CCOLW.LIB
printxy (beschrijving volgt verderop) Procesbesturingsbibliotheek om CCOL aan FLASH te koppelen
Selecteren MAKEFILE voor bepaalde Visual C++ compiler
In de REG\DEFAULT bevindt zich het bestand MAKEFILE. De MAKEFILE is nodig om een CCOL-regeling te kunnen compileren tot een DLL die binnen FLASH zal worden gebruikt. Standaard is de MAKEFILE voor de Microsoft Visual C++ compiler, versie 6. Het bestand MAKEFILE is identiek aan MAKEFILE.V6. Heeft de gebruiker versie 5 van deze compiler, dan dient in deze directory het bestand MAKEFILE.V5 gekopieerd te worden naar MAKEFILE. Wordt later alsnog overgegaan naar versie 6 van de compiler, dan kan overeenkomstig MAKEFILE.V6 worden gekopieerd naar MAKEFILE.
2.3
Installatie Visual C++ compiler
Voordat FLASH wordt opgestart, dienen enkele settings voor de compiler gecontroleerd te worden. Indien deze settings nog niet bestaan, moeten ze worden toegevoegd. Dit kan in de AUTOEXEC.BAT of via een batchfile. Het betreft het volgende (uitgaande van installatie van de compiler in de directory C:\PROGRAM FILES\DEVSTUDIO\VC): SET INCLUDE=C:\PROGRA~1\DEVSTU~1\VC\INCLUDE;C:\PROGRA~1\DEVSTU~1\VC\INCLUDE\SYS SET LIB=C:\PROGRA~1\DEVSTU~1\VC\LIB
Bij gebruik van Visual C++ versie 5.0 Bij het compileren wordt gebruikgemaakt van de bestanden MSDIS100.DLL, MSPDB50.DLL, RC.EXE en RCDLL.DLL. Deze bestanden worden bij het installeren van de compiler MS Visual C++ 5.0 in de verkeerde directory gezet. Daarom moeten deze bestanden gekopieerd worden van ..\SharedIDE\Bin naar ..\VC\Bin. Er treedt mogelijk een probleem op bij het gebruik van Visual C++ versie 5. De procesbesturing is ontwikkeld met behulp van Visual C++ versie 6. Om de procesbesturing onder Visual C++ versie 5 te kunnen gebruiken, dient de meest recente versie van Visual C++ versie 5 geïnstalleerd te zijn. Dit betekent dat na de installatie van versie 5 ook het zogenaamde Visual C++ Service Pack 3 (of hoger) geïnstalleerd dient te zijn. De meeste gebruikers hebben deze update echter niet. Daarom zijn in de directory \Visual5 de twee bestanden opgenomen die in ieder geval vernieuwd moeten worden. Deze bestanden bevinden zich in de volgende directories van de Visual C++ installatie: LINK.EXE staat in ..\Vc\Bin
Pagina 4
MSDIS100.DLL staat in ..\SharedIDE\Bin én de directory ..\Vc\Bin Bij gebruik van Visual C++ versie 6.0 Bij het compileren wordt gebruikgemaakt van de bestanden MSDIS110.DLL, MSPDB60.DLL, RC.EXE en RCDLL.DLL. Deze bestanden worden bij het installeren van de compiler MS Visual C++ 6.0 in de verkeerde directory gezet. Daarom moeten deze bestanden gekopieerd worden van ..\Common\MSDev98\Bin naar ..\VC98\Bin.
2.4
Instellingen CCOL binnen FLASH
Na het opstarten van FLASH moet onder het pull-down-menu 'Instellingen' het submenu 'Lokaties bestanden...' aangeklikt worden. Dan moet worden gekozen voor het tabblad 'CCOL Regelaar' om de juiste paden voor de CCOL-regelaar te kunnen instellen. Uitgaande van installatie van de CCOL-regelaar in de standaarddirectory C:\CCOL moeten de instellingen als volgt worden ingevuld: FLXCCOL C:\CCOL\BIN\FLXCCOL.EXE Pad CCOL code C:\CCOL\STANDARD Pad nieuwe CCOL C:\CCOL\REG\DEFAULT Voor de instelling van de overige tabbladen wordt verwezen naar de respectievelijke handleidingen. Eén opmerking: in het tabblad 'FLASH' dient het pad voor de compiler aangegeven te worden. Hierbij moet verwezen worden naar de subdirectory BIN van de betreffende compiler. Is bijvoorbeeld de compiler in de directory C:\PROGRAM FILES\DEVSTUDIO\VC98 geïnstalleerd, dan wordt het pad als volgt ingesteld: Pad C-compiler C:\PROGRA~1\DEVSTU~1\VC98\BIN
2.5
Aanpassingen sourcecode t.b.v. CCOL onder FLASH
Om CCOL-regelingen in FLASH te kunnen testen en simuleren, moet er een regelaar in FLASH worden aangemaakt. Ook moeten er enkele bestanden in de betreffende ‘REG’directory worden toegevoegd en moeten er enkele aanvullingen in de files van het regelprogramma worden opgenomen. Het aanmaken van de regelaar, de extra bestanden en aanvullingen worden in de navolgende subparagrafen besproken. 2.5.1 Aanmaken nieuwe regelaar Onder het pull-down-menu 'Instellingen' kan via 'Regelaars...' een nieuwe regelaar beschikbaar gemaakt worden voor gebruik binnen FLASH. In de door de gebruiker aangegeven directory plaatst FLASH de volgende bestanden: CCOL_FLS.C, CCOL_FLS.DEF en MAKEFILE. Indien de files al bestaan, wordt gevraagd of ze overschreven moeten worden.
Pagina 5
De MAKEFILE is nodig om de regeling te kunnen compileren. Controleer derhalve of dit bestand daadwerkelijk in de werkdirectory voor de betreffende CCOL-regelaar staat. Is dit niet het geval, dan is waarschijnlijk de instelling van 'Pad nieuwe CCOL' niet correct, of is de directory waar naar wordt verwezen leeg. 2.5.2 Aanvullende bestanden CCOLFLS.C en CCOLFLS.DEF In het bestand CCOLFLS.C moeten de regelaarbestanden van het regelprogramma worden ge-include. Het bestand CCOLFLS.C is het enige bestand dat wordt gecompileerd. Neem via een of meer #include statements het bestand of de bestanden op die de complete regeling bevatten. Hieronder is een voorbeeld van de inhoud van dit bestand weergegeven: #include ‘demorga.c’ #include ‘demorgb.c’ In het bestand CCOLFLS.DEF wordt de filenaam opgenomen van het bestand waarin de definities van de signaalgroepen en detectoren zijn opgenomen, bijvoorbeeld demosys.c. In dit bestand van het verkeersregelprogramma moeten enkele toevoegingen worden gedaan zodat het programma FLXCCOL een CONFIL-file kan genereren. Tussen de commentaarstrings ‘/* begin detectoren */’ en ‘/* einde detectoren */’ wordt per detector in een commentaarstring de volgende informatie opgenomen: detectortype (DP: aanwezigheidsdetector, DK: drukknop, DS: selectieve detector); signaalgroepnummer; volgnummer; eventueel aanvullend commentaar. Hieronder is een voorbeeld van de detectorinformatie voor FLASH opgenomen: /* begin detectoren */ #define d011 0 /* DP 1 1 */ #define d021 1 /* DP 2 1 */ #define d022 2 /* DP 2 2 */ #define d081 3 /* DP 8 1 */ #define d082 4 /* DP 8 2 */ #define d091 5 /* DP 9 1 */ #define d101 6 /* DP 10 1 */ #define d121 7 /* DP 12 1 */ #define d311 8 /* DK 31 1 - drukknop */ #define d312 9 /* DK 31 2 - drukknop */ #define d321 10 /* DK 32 1 - drukknop */ #define d322 11 /* DK 32 2 - drukknop */ /* einde detectoren */
Pagina 6
Tussen de commentaarstrings ‘/* begin fasecycli */’ en ‘/* einde fasecycli */’ wordt per fasecyclus in een commentaarstring het nummer van de fasecyclus opgenomen (met eventueel aanvullend commentaar). Hieronder is een voorbeeld van de fasecyclusinformatie voor FLASH opgenomen: /* begin fasecycli */ #define fc01 0 /* 1 */ #define fc02 1 /* 2 */ #define fc08 2 /* 8 */ #define fc09 3 /* 9 */ #define fc10 4 /* 10 */ #define fc12 5 /* 12 */ #define fc31 6 /* 31 */ #define fc32 7 /* 32 */ /* einde fasecycli */ In het definitiebestand moet ook het kruispuntnummer voor FLASH worden gedefinieerd middels het statement #define FLS_ID (#define FLS_ID 123 /* kruispuntnummer */). De aanwezigheid van deze definitie kan in het regelprogramma ook worden gebruikt om code voor de FLASH-omgeving aan te geven (met een #ifdef FLS_ID .. code .. #endif). Worden geen koppelsignalen gebruikt, dan kan de gebruiker hier een extra definecommando #define FLS_NO_IKS_UKS opnemen. Worden er wel koppelsignalen gebruikt, zie de volgende paragraaf. 2.5.3 Nummers en statussen van eigen en gekoppelde regelaars In FLASH zijn voorzieningen opgenomen voor het oversturen van de status van de verschillende regelaars en van koppelsignalen. Deze voorzieningen bestaan uit een buffer voor uitgaande koppelsignalen en een buffer voor inkomende koppelsignalen. De FLS_US[]-buffer bestaat uit 138 elementen, namelijk 128 uitgaande koppelsignalen en 10 kruispuntnummers. De FLS_IS[]-buffer bestaat uit 148 elementen, namelijk 128 inkomende koppelsignalen, 10 kruispuntnummers en 10 kruispuntstatussen.
De in- en uitgangssignalen voor FLASH dienen te worden gedefinieerd (tussen #ifdef FLS_ID en #endif). Let op: de nummering van de koppelsignalen is vanaf 1 (0 is niet toegestaan). Hieronder is een voorbeeld van deze definitie opgenomen: /* tbv in-uitgangssignalen Flash */ #ifdef FLS_ID #define fls_is_puls_12
1
#define fls_us_puls_11 1#endif
Pagina 7
In de functie ‘fls_status_iks_uks_reg ()’ moeten de inkomende en de uitgaande koppelsignalen worden opgezet. Het eerste element na de uitgaande koppelsignalen (FLS_US[FLS_UKSMAX]) wordt gevuld met het kruispuntnummer (FLS_ID) van de betreffende regelaar. Vervolgens worden de gekoppelde regelaars opgenomen. Hieronder is een voorbeeld van de in te vullen functie opgenomen: void fls_status_iks_uks_reg(void) { /* inkomende koppelsignalen */ CIF_IS[is_puls_12]=FLS_IS[fls_is_puls_12]; /* uitgaande koppelsignalen */ FLS_US[fls_us_puls_11]=CIF_GUS[us_puls_11]; /* gekoppelde regelaars */ FLS_US[FLS_UKSMAX] =FLS_ID; /* schrijf kruispuntnummer */ FLS_US[FLS_UKSMAX+1]=11;
/* schrijf kruispuntnummer */
}
Worden geen koppelsignalen gebruikt, dan kan de gebruiker volstaan met het commando “#define FLS_NO_IKS_UKS”. Zie ook 2.5.2. 2.5.4 Fixatie In FLASH is het mogelijk regelingen te fixeren. In het regelingsbestand van CCOL moet hiertoe de volgende code worden toegevoegd: #ifdef FLS_ID #define FIXATIE (FLS_FIXATIE) #else #define FIXATIE (CIF_IS[is_fix]) #endif
In het regelprogramma moet aan FIXATIE worden gerefereerd (bijvoorbeeld YM[fc02]= FIXATIE).
Pagina 8
3
Werken met
3.1
FLXCCOL
CCOL
onder
FLASH
Vanuit de workbench van FLASH dient het bestand CONFIL aangemaakt te worden waardoor FLASH weet welke detectoren, signaalgroepen etc. aanwezig zijn. Dit aanmaken van het bestand CONFIL geschiedt door het in de workbench aanklikken van de button FLXCCOL. Hierdoor wordt het programma FLXCCOL opgestart die het bestand CCOLFLS.DEF leest uit de regelaardirectory. In dit bestand moet vermeld staan welk bestand de definities voor kruispuntnummer, detectoren en signaalgroepen bevat (zie ook hoofdstuk 2.5). Dit bestand wordt dan gelezen waarna de CONFIL zal worden gemaakt.
3.2
Compileren
Om een CCOL-regeling voor FLASH te maken moeten de broncodebestanden gecompileerd worden. Na het compileren worden de gecompileerde bestanden met een aantal bibliotheekbestanden samengevoegd tot een CCOL DLL. Dit gebeurt met het bestand MAKEFILE. Direct nadat in de workbench op de knop ‘Compileren...’ is gedrukt, wordt de compiler aangeroepen en worden de instructies in de MAKEFILE uitgevoerd. Het compileerproces (ook eventuele waarschuwingen en/of foutmeldingen) kan in de workbench worden gevolgd. De MAKEFILE hoeft vrijwel niet aangepast te worden door een gebruiker. Standaard worden bij het aanmaken van een CCOL DLL de bibliotheken CCOLW.LIB en CCOLREG.LIB meegenomen. Hier hoeft de gebruiker zich geen zorgen over te maken. Afhankelijk van de opties die binnen CCOL gebruikt worden, kan het noodzakelijk zijn een of meerdere extra CCOL-bibliotheken mee te nemen in de CCOL DLL. In de MAKEFILE kan dit eenvoudig met gebruikmaking van een teksteditor (bijvoorbeeld NOTEPAD) worden aangegeven. Onderstaand een stukje uit het begin van het bestand MAKEFILE: # Ten behoeve van het meenemen van een bepaalde library voor CCOL # dient op de navolgende regels aangegeven te worden of een library # wel (JA) danwel niet (NEE) meegelinkt dient te worden. # Library modulenstructuur MLFUNC=JA # Library uitgebreide modulenstructuur MLEFUNC=NEE # Library langstwachtende structuur LWFUNC=JA
Pagina 9
# Library langstwachtende modulenstructuur LWMLFUNC=NEE # Library uitgebreide standaard functies STDFUNC=JA # Library signaalplansturing PLFUNC=NEE # Library uitgebreide signaalplansturing PLEFUNC=NEE De regels beginnend met ‘#‘ zijn commentaarregels die kunnen worden genegeerd. De overige regels bevatten de namen van de andere bestaande CCOL-bibliotheken. Per bibliotheek kan middels een ‘ja’ (of ‘JA’) of een ‘nee’ (of ‘NEE’) worden aangegeven of deze bibliotheek wel of niet dient te worden opgenomen in de CCOL-regeling. Om succesvol gebruik te kunnen maken van een bibliotheek dient deze aanwezig te zijn in de directory LIB die een subdirectory is van de directory aangegeven door ‘Pad CCOL code’ in het CCOL-instellingenscherm. In deze directoy bevindt zich o.a. ook het bestand CCOLW.LIB.
3.3
Aangemaakte files en betekenis
Nadat een CCOL DLL succesvol is gecompileerd, zijn de volgende bestanden in de regelaardirectory aangemaakt: CONFIL CCOLREG.DLL CCOLREG.OBJ CCOLW.RES
3.4
nodig voor simulatie: niet weggooien DLL van de CCOL-regeling: niet weggooien Compiler uitvoerbestand Compiler uitvoerbestand
Melding in workbench bij opstarten regeling
Tijdens het opstarten van een CCOL-regeling binnen FLASH wordt een boodschap in de workbench van FLASH afgebeeld ten teken dat het opstarten wel of niet gelukt is. Is het opstarten gelukt, dan verschijnt een regel in de workbench met daarin opgenomen het versienummer van de gebruikte procesbesturing CCOL- FLASH gevolgd door de tekst die in de CCOL-variabele VERSION is opgenomen. Bestaat deze variabele niet, dan wordt een standaard door CCOL gegenereerde tekst afgebeeld.
Pagina 10
3.5
Dumpen/dumpfilenaam
Tijdens het werken met een CCOL-regeling kan door de regeling of door de gebruiker een dump worden aangemaakt van de op dat moment draaiende regeling. De dump wordt in een bestand geschreven (in de regelaardirectory) met als naam CCOL???.DMP. Op de plaats van de vraagtekens komt een drie-cijferig nummer te staan als zijnde het volgnummer van de dump (bijvoorbeeld: CCOL012.DMP).
3.6
Debugmogelijkheden
3.6.1 Commando- parser Vlak na het opstarten van een CCOL DLL verschijnt een Windows-venster met daarin de commando-parser van CCOL. In het onderste venster van deze commando-parser kan de gebruiker commando’s invoeren. De CCOL-regeling zal dan in het bovenste venster antwoorden. De te gebruiken commando’s zijn hetzelfde als in de bestaande CCOL-versies. Een commando dient te worden afgesloten met een druk op de ENTER-toets. Het indrukken van deze toets is het sein voor de commando-parser om het commando naar de regeling te sturen en eventuele resultaten af te beelden. Het venster van de commando-parser kan maximaal ongeveer 27.000 tekens bevatten, waarbinnen de gebruiker vrijelijk kan scrollen, aanpassen, verwijderen, toevoegen etc. Komen er meer dan de maximale hoeveelheid tekens in het venster, dan zal automatisch een aantal tekens aan het begin worden verwijderd, een zogenaamd ringbuffer. In de commando-parser is het ook mogelijk om de data in het venster te bewaren in een ASCII-bestand. Daarnaast is er ook een mogelijkheid om de inhoud van het venster af te drukken op een printer. 3.6.2 Printxy Naast het gebruik van de commando-parser kan de gebruiker nog van een andere mogelijkheid gebruik maken om te debuggen. Dit kan via het statement ‘printxy’. Het statement printxy kan in de broncode van de regeling worden opgenomen tussen #ifdef FLS_ID en #endif regels. Indien gebruik gemaakt wordt van printxy is het noodzakelijk dat het bestand CCOLUTLS.H wordt ge-include. Indien gebruik wordt gemaakt van printxy, zal de procesbesturing een extra venster op het scherm plaatsen met daarin de resultaten van de printxy-statements. Een printxy statement is als volgt opgebouwd:
Pagina 11
printxy (kolomnummer, regelnummer, tekst, variabelen); Het kolomnummer (0 tot en met 79) en regelnummer (0 tot en met 24) bepalen de plaats in het venster waar de tekst zal gaan verschijnen. De tekst en variabelen kunnen worden opgebouwd als in het statement sprintf. Voorbeeld 1: printxy (0, 2, "Dit is een test"); De tekst ‘Dit is een test’ zal verschijnen in de eerste kolom op de derde regel van het venster. Voorbeeld 2: int test = 4; int geentest = 7; printxy (12, 18, "De waarde van test = %d, de waarde van geentest = %d", test, geentest); De tekst ‘De waarde van test = 4, de waarde van geentest = 7’ zal verschijnen in de dertiende kolom op de negentiende regel van het venster. In bestaande regelingen moeten printf-statements worden uitgeschakeld/verwijderd of worden vervangen door printxy-statements.
Pagina 12
4
Tips en trucs
4.1
Commando- parser reageert niet op ingevoerd commando
Het kan voorkomen dat de gebruiker een commando ingeeft in de commando-parser, maar er gebeurt niets. Controleer in dit geval eerst of het commando is afgesloten met een ENTER of RETURN. Is dat zo, controleer dan het bestand SYSDEF.C in de INCLUDE directory van CCOL. In dit bestand staan twee regels: #define CMDPARSE en #define PARMCMD. Zorg ervoor dat deze regels niet tussen commentaartekens staan.
4.2
Commando- parser of printxy vensters komen niet in beeld
Bij het opstarten van een CCOL DLL komt de commando-parser en/of het printxyvenster niet in beeld (terwijl wel gebruik wordt gemaakt van printxy). Het is dan mogelijk dat deze vensters in de rechterbenedenhoek van het scherm zijn weggedrukt. Lukt het niet om ze daar vandaan naar de gewenste positie op het beeldscherm te slepen, beëindig dan de regeling en verwijder in de regelaar directory respectievelijk de bestanden cmdparsr.ini en printxy.ini. Herstart de regeling, en de vensters staan weer op hun oorspronkelijke posities.
Pagina 13
5
Inlichtingen
De procesbesturing CCOL - FLASH is eigendom van: Rijkswaterstaat Adviesdienst Verkeer en Vervoer Het beheer en onderhoud wordt verzorgd door: Goudappel Coffeng BV Postbus 161 7400 AD DEVENTER Tel.: 0570 - 666 222 Fax: 0570 - 666 888