Blame | Last modification | View Log | Download
createdAt: "2019-03-19T14:38:24.043Z"updatedAt: "2019-03-19T14:38:49.330Z"type: "MARKDOWN_NOTE"folder: "815252a7abc1a08e1fa6"title: "Dosering water O615 en O616 copy"content: '''# Dosering water O615 en O616## Setpoint water doseringSetpoints voor water dosering zijn in level 3 (FactoryLink) te vinden op graphic kz_el.g. Deze setpoints zijn ook beschikbaar in level2. Voor goede werking van ingeven setpoint op level 2 dient de verwerking van het setpoint op level 3, in factoryLink aangepast te worden. setpoint verwerking dient conform standaard verwerking setpoint lvl2\\lvl3 te worden.Ten gevolge van andere afhandeling in FactoryLink is een setpoit wijziging in level 2 niet mogelijk (oude waarde wordt weer terug gezet) en wordt de op level 2 ingegeven waarde nooit zichtbaar op het FL scherm.O615:>Setpoint tag: p8_615_owtr_float>Weergave tag: p8_615_gwtr_float>IOX tag (analog): p8_615_owtrO616:>Setpoint tag: p8_616_owtr_float>Weergave tag: p8_616_gwtr_float>IOX tag (analog): p8_616_owtrDe conversie tussen integer en float wordt in FactoryLink IML uitgevoerd, en wel op tijdbasis: iedere 5 seconden wordt de IML routine reken uitgevoerd.```fortranDECLARE FLOAT hulpfloatPROC rekenBEGINDECLARE PROC p8_traf# omrekeningen tbv dosering O_615: omzetting m3 (float) <--> liter (integer)p8_615_owtr = p8_615_owtr_float * 1000hulpfloat = p8_615_gwtrp8_615_gwtr_float = hulpfloat \\ 1000hulpfloat = p8_615_awtrp8_615_awtr_float = hulpfloat \\ 1000# omrekeningen tbv dosering O_616: omzetting m3 (float) <--> liter (integer)p8_616_owtr = p8_616_owtr_float * 1000hulpfloat = p8_616_gwtrp8_616_gwtr_float = hulpfloat \\ 1000hulpfloat = p8_616_awtrp8_616_awtr_float = hulpfloat \\ 1000# omrekeningen tbv CIP TD elutiekeuken, oplostijden van fosfaat en chloorp8_fosfaat_th_min = p8_fosfaat_th_sec * 0.001666666667p8_chloor_th_min = p8_chloor_th_sec * 0.00166666667CALL PROC p8_trafEND```Als gevolg van het op tijd uitvoeren van de 'reken' routine wordt iedere 5 seconden het setpoint dat naar de PLC gestuurd wordt (p8_615_owtr of p8_616_owtr) overschreven met de waarde die op het scherm weergegeven wordt. Om het level 2 setpoint te handhaven wordt alleen bij wijziging op het scherm het setpoint in de PLC aangepast. Hiertoe wordt de 'reken' routine aangepast:```fortranPROC rekenBEGINDECLARE PROC p8_traf# omrekeningen tbv dosering O_615: omzetting m3 (float) <--> liter (integer)IF ?p8_615_owtr_float THENp8_615_owtr = p8_615_owtr_float * 1000ENDIFp8_615_gwtr_float = p8_615_gwtr \\ 1000.0p8_615_awtr_float = p8_615_awtr \\ 1000.0# omrekeningen tbv dosering O_616: omzetting m3 (float) <--> liter (integer)IF ?p8_616_owtr_float THENp8_616_owtr = p8_616_owtr_float * 1000ENDIFp8_616_gwtr_float = p8_616_gwtr \\ 1000.0p8_616_awtr_float = p8_616_awtr \\ 1000.0# omrekeningen tbv CIP TD elutiekeuken, oplostijden van fosfaat en chloorp8_fosfaat_th_min = p8_fosfaat_th_sec * 0.001666666667p8_chloor_th_min = p8_chloor_th_sec * 0.00166666667CALL PROC p8_trafEND```## Verwerking ENTER key verlaten paginaVoor setpoints in FL geldt dat een setpoint bevestigd moet worden met de Enter toets, pas na een enter wordt op het scherm ingegeven waarde in de bijbehorende FL-tag geschreven.!!!caution !ENTER key bij verlaten schermBij verlaten graphics wordt implicit een ENTER uitgevoerd, eventueel niet doorgevoerde setpoint wijzigingen worden dan als nog uitgevoerd.!!!### IML aanpassing voor negeren ENTER key bij verlaten graphicsIn IML dient {FLAPP}\\user\\procs\\scherm.prg aangepast te worden, om de enter key bij verlaten graphic scherm af te vangen. Geregistreerd wordt het moment waarop een scherm wissel aangevraagd, er wordt dan de aanvraag voor het nieuwe scherm bewaard.Bij controle op d eEnter key kan nu bepaald worden of er sprake is van een scherm wissel.In scherm.prg worden 4 regels toegevoegd:> PVB_SCR[x] = SCRx_DRW (met x = 1,2,3 of 4)De eerste regel in onderstaande code is regel 95:```fortranIF TOPWINDOW_U = "SCR_1" THENSCR1_DRW = Scherm1_array[Scherm1_pointer]PVB_DRW[1] = SCR1_DRWScherm_pointer = Scherm1_pointerENDIFIF TOPWINDOW_U = "SCR_2" THENSCR2_DRW = Scherm2_array[Scherm2_pointer]PVB_DRW[2] = SCR2_DRWScherm_pointer = Scherm2_pointerENDIFIF TOPWINDOW_U = "SCR_3" THENSCR3_DRW = Scherm3_array[Scherm3_pointer]PVB_DRW[3] = SCR3_DRWScherm_pointer = Scherm3_pointerENDIFIF TOPWINDOW_U = "SCR_4" THENSCR4_DRW = Scherm4_array[Scherm4_pointer]PVB_DRW[4] = SCR4_DRWScherm_pointer = Scherm4_pointerENDIFScherm_keuze = ""ENDIFEND```>In de tabel USER "Math and Logic Variables" dient de tag PVB_DRW[0] toegevoegd te worden.### PVB aanpassing voor negeren ENTER key bij verlaten graphicsOp de graphic 'kz_el' dienen de twee setpoints voor water voorzien te worden PVB code.Om alles te laten functioneren dient ook de initialisatie bij scherm laden aangepast te worden.De volledige PVB-code is als volgt:```VB.NET'-----------------------------------------' dd. 15-07-96' This object uses the Style1 class methods' found in the PowerVB Library style1.pls.'-----------------------------------------Declare sub S1Process_ButtonEnable (Lthis as GraphicObject)Declare sub S2Process_ButtonEnable (Lthis as GraphicObject)Declare sub S3Process_ButtonEnable (Lthis as GraphicObject)Declare sub S4Process_ButtonEnable (Lthis as GraphicObject)Private PVB_Disable as GraphicObjectPrivate scherm as STRINGGlobal scr_nr as integerGlobal scr_pvb as string' Use this object as the Frame for Process objectssub kz_el_g4903_DrawLoadCriticalscherm = RIGHT(TOPWINDOW_U.value,1)scr_nr = schermIF scherm = "1" THEN scr_pvb = SCR1_DRW.valueIF scherm = "2" THEN scr_pvb = SCR2_DRW.valueIF scherm = "3" THEN scr_pvb = SCR3_DRW.valueIF scherm = "4" THEN scr_pvb = SCR4_DRW.valueIF scherm = "1" THEN S1Process_ButtonEnable ThisIF scherm = "2" THEN S2Process_ButtonEnable ThisIF scherm = "3" THEN S3Process_ButtonEnable ThisIF scherm = "4" THEN S4Process_ButtonEnable ThisEndCriticalend subsub kz_el_g4903_WinGotFocusCriticalIF scherm = "1" THEN scr_pvb = SCR1_DRW.valueIF scherm = "2" THEN scr_pvb = SCR2_DRW.valueIF scherm = "3" THEN scr_pvb = SCR3_DRW.valueIF scherm = "4" THEN scr_pvb = SCR4_DRW.valueIF scherm = "1" THEN S1Process_ButtonEnable ThisIF scherm = "2" THEN S2Process_ButtonEnable ThisIF scherm = "3" THEN S3Process_ButtonEnable ThisIF scherm = "4" THEN S4Process_ButtonEnable ThisEndCriticalend sub' Stop using this objectsub kz_el_g4903_DrawUnloadCriticalIF scherm = "1" THEN S1Process_ButtonEnable PVB_DisableIF scherm = "2" THEN S2Process_ButtonEnable PVB_DisableIF scherm = "3" THEN S3Process_ButtonEnable PVB_DisableIF scherm = "4" THEN S4Process_ButtonEnable PVB_DisableEndCriticalend sub```PVB code voor invoerveld van de **O615**, deze wordt van nieuwe PVB code voorzien:```VB.NETGlobal scr_nr as integerGlobal scr_pvb as stringsub kz_el_g4604_SPp8_615_owtr_floatpvb = p8_615_gwtr_floatend subSub Updatep8_615_owtr_floatpvb = p8_615_owtr_floatEnd Subsub kz_el_g4604_EnterKey'enter key niet uitvoerenif scr_pvb <> PVB_DRW(scr_nr).value then exit sub'enter key mag uitgevoerd wordenp8_615_owtr_float = p8_615_owtr_floatpvbend subsub kz_el_g4604_DrawLoadcall Updateend sub```PVB code voor invoerveld van de **O616**, deze wordt van nieuwe PVB code voorzien:```VB.NETGlobal scr_nr as integerGlobal scr_pvb as stringsub kz_el_g4635_SPp8_616_owtr_floatpvb = p8_616_gwtr_floatend subSub Updatep8_616_owtr_floatpvb = p8_616_owtr_floatEnd Subsub kz_el_g4635_EnterKey'enter key niet uitvoerenif scr_pvb <> PVB_DRW(scr_nr).value then exit sub'enter key mag uitgevoerd wordenp8_616_owtr_float = p8_616_owtr_floatpvbend subsub kz_el_g4635_DrawLoadcall Updateend sub```'''linesHighlighted: []tags: []isStarred: falseisTrashed: true