Subversion Repositories Actemium.ccr-dmv

Rev

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 dosering
  Setpoints 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.
  
  ![2019-03-11 10_40_49-SCR_1.png](:storage\\4bdae5ca-35fa-4e1b-a654-88165648d29a\\6494d719.png)
  
  O615:
  >Setpoint tag: p8_615_owtr_float
  >Weergave tag: p8_615_gwtr_float
  >IOX tag (analog): p8_615_owtr
  
  O616:
  >Setpoint tag: p8_616_owtr_float
  >Weergave tag: p8_616_gwtr_float
  >IOX tag (analog): p8_616_owtr
  
  De conversie tussen integer en float wordt in FactoryLink IML uitgevoerd, en wel op tijdbasis: iedere 5 seconden wordt de IML routine reken uitgevoerd.
  
  ```fortran
  DECLARE FLOAT hulpfloat
  
  PROC reken
  BEGIN
  DECLARE PROC p8_traf
  
  # omrekeningen tbv dosering O_615: omzetting m3 (float) <--> liter (integer)
          p8_615_owtr = p8_615_owtr_float * 1000
          hulpfloat = p8_615_gwtr
          p8_615_gwtr_float = hulpfloat \\ 1000
          hulpfloat = p8_615_awtr
          p8_615_awtr_float = hulpfloat \\ 1000
  
  # omrekeningen tbv dosering O_616: omzetting m3 (float) <--> liter (integer)
          p8_616_owtr = p8_616_owtr_float * 1000
          hulpfloat = p8_616_gwtr
          p8_616_gwtr_float = hulpfloat \\ 1000
          hulpfloat = p8_616_awtr
          p8_616_awtr_float = hulpfloat \\ 1000
  
  # omrekeningen tbv CIP TD elutiekeuken, oplostijden van fosfaat en chloor
  
          p8_fosfaat_th_min = p8_fosfaat_th_sec * 0.001666666667
          p8_chloor_th_min = p8_chloor_th_sec * 0.00166666667
  
  CALL PROC p8_traf
  
  END
  ```
  
  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:
  
  ```fortran
  PROC reken
  BEGIN
  DECLARE PROC p8_traf
  
    # omrekeningen tbv dosering O_615: omzetting m3 (float) <--> liter (integer)
    IF ?p8_615_owtr_float THEN
      p8_615_owtr = p8_615_owtr_float * 1000
    ENDIF
    
    p8_615_gwtr_float = p8_615_gwtr \\ 1000.0
    p8_615_awtr_float = p8_615_awtr \\ 1000.0
  
    # omrekeningen tbv dosering O_616: omzetting m3 (float) <--> liter (integer)
    IF ?p8_616_owtr_float THEN
      p8_616_owtr = p8_616_owtr_float * 1000
    ENDIF
    
    p8_616_gwtr_float = p8_616_gwtr \\ 1000.0
    p8_616_awtr_float = p8_616_awtr \\ 1000.0
  
    # omrekeningen tbv CIP TD elutiekeuken, oplostijden van fosfaat en chloor
    p8_fosfaat_th_min = p8_fosfaat_th_sec * 0.001666666667
    p8_chloor_th_min = p8_chloor_th_sec * 0.00166666667
  
    CALL PROC p8_traf
  END
  ```
  
  ## Verwerking ENTER key verlaten pagina
  Voor 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 scherm
  Bij 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 graphics
  In 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:
  ```fortran
                  IF TOPWINDOW_U = "SCR_1" THEN 
                          SCR1_DRW = Scherm1_array[Scherm1_pointer]  
                          PVB_DRW[1] = SCR1_DRW           
                          Scherm_pointer = Scherm1_pointer
                  ENDIF
                  IF TOPWINDOW_U = "SCR_2" THEN
                          SCR2_DRW = Scherm2_array[Scherm2_pointer] 
                          PVB_DRW[2] = SCR2_DRW           
                          Scherm_pointer = Scherm2_pointer
                  ENDIF
                  IF TOPWINDOW_U = "SCR_3" THEN   
                          SCR3_DRW = Scherm3_array[Scherm3_pointer] 
                          PVB_DRW[3] = SCR3_DRW           
                          Scherm_pointer = Scherm3_pointer
                  ENDIF
                  IF TOPWINDOW_U = "SCR_4" THEN 
                          SCR4_DRW = Scherm4_array[Scherm4_pointer] 
                          PVB_DRW[4] = SCR4_DRW           
                          Scherm_pointer = Scherm4_pointer
                  ENDIF
          Scherm_keuze = ""
          ENDIF
  END
  ```
  
  >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 graphics
  Op 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 GraphicObject
  Private scherm as STRING
  Global scr_nr as integer
  Global scr_pvb as string
  
  ' Use this object as the Frame for Process objects
  sub kz_el_g4903_DrawLoad
    Critical
    scherm = RIGHT(TOPWINDOW_U.value,1)
        scr_nr = scherm
        IF scherm = "1" THEN scr_pvb = SCR1_DRW.value
        IF scherm = "2" THEN scr_pvb = SCR2_DRW.value
        IF scherm = "3" THEN scr_pvb = SCR3_DRW.value
        IF scherm = "4" THEN scr_pvb = SCR4_DRW.value
    IF scherm = "1" THEN S1Process_ButtonEnable This
    IF scherm = "2" THEN S2Process_ButtonEnable This
    IF scherm = "3" THEN S3Process_ButtonEnable This
    IF scherm = "4" THEN S4Process_ButtonEnable This
    EndCritical
  end sub
  sub kz_el_g4903_WinGotFocus
    Critical
        IF scherm = "1" THEN scr_pvb = SCR1_DRW.value
        IF scherm = "2" THEN scr_pvb = SCR2_DRW.value
        IF scherm = "3" THEN scr_pvb = SCR3_DRW.value
        IF scherm = "4" THEN scr_pvb = SCR4_DRW.value
    IF scherm = "1" THEN S1Process_ButtonEnable This
    IF scherm = "2" THEN S2Process_ButtonEnable This
    IF scherm = "3" THEN S3Process_ButtonEnable This
    IF scherm = "4" THEN S4Process_ButtonEnable This
    EndCritical
  end sub
  ' Stop using this object
  sub kz_el_g4903_DrawUnload
    Critical
    IF scherm = "1" THEN S1Process_ButtonEnable PVB_Disable
    IF scherm = "2" THEN S2Process_ButtonEnable PVB_Disable
    IF scherm = "3" THEN S3Process_ButtonEnable PVB_Disable
    IF scherm = "4" THEN S4Process_ButtonEnable PVB_Disable
    EndCritical
  end sub```
  
  PVB code voor invoerveld van de **O615**, deze wordt van nieuwe PVB code voorzien:
  
  ```VB.NET
  Global scr_nr as integer
  Global scr_pvb as string
  
  sub kz_el_g4604_SP
  
   p8_615_owtr_floatpvb = p8_615_gwtr_float
  end sub
  
  
  Sub Update
    p8_615_owtr_floatpvb = p8_615_owtr_float
  End Sub
  
  
  sub kz_el_g4604_EnterKey
    'enter key niet uitvoeren
    if scr_pvb <> PVB_DRW(scr_nr).value then exit sub
  
    'enter key mag uitgevoerd worden
    p8_615_owtr_float = p8_615_owtr_floatpvb
  end sub
  
  
  sub kz_el_g4604_DrawLoad
    call Update
  end sub```
  
  PVB code voor invoerveld van de **O616**, deze wordt van nieuwe PVB code voorzien:
  
  ```VB.NET
  Global scr_nr as integer
  Global scr_pvb as string
  
  sub kz_el_g4635_SP
    p8_616_owtr_floatpvb = p8_616_gwtr_float
  end sub
  
  
  Sub Update
    p8_616_owtr_floatpvb = p8_616_owtr_float
  End Sub
  
  
  sub kz_el_g4635_EnterKey
  
    'enter key niet uitvoeren
    if scr_pvb <> PVB_DRW(scr_nr).value then exit sub
  
    'enter key mag uitgevoerd worden
    p8_616_owtr_float = p8_616_owtr_floatpvb
  end sub
  
  
  sub kz_el_g4635_DrawLoad
    call Update
  end sub```
  
  
  
  
'''
linesHighlighted: []
tags: []
isStarred: false
isTrashed: true