Allmänt meddelande

Collapse
No announcement yet.

Global variabel och perioder

Collapse
X
 
  • Filter
  • Klockan
  • Show
Clear All
new posts

  • Global variabel och perioder

    Hej alla!

    Jag kör med ett masterscript som vid signal sätter en 1:a i globala variabeln 500 enligt nedan:

    setgvarif(0,500,1)
    setgvarif(1,500,signal6)


    Tänkte lösa problemet med spöksignaler i masterscriptet genom att använda ett slavscript som läser om det finns en 1:a i globala variabeln 500 eller ej.

    Om det finns en 1:a i de tre senaste 1 minutersperioderna skall slavscriptet bli sant.


    Alltså ett exempel,

    kl12:00 globala variabeln 500 är 1
    kl12:01 globala variabeln 500 är 1
    kl12:02 globala variabeln 500 är 1

    Kl12:03 Nu skall nedan slavscript bli sant


    {slavscript}

    val:=GetGVar(500)
    i1(
    signal1=Eqv(val,1)

    Mult(and(signal1,1),100)
    )


    Hur löser man detta om det är möjligt?

  • #2
    Det hänger på hur känslig/fladdrig modellen är. Om den inte är för fladdrig går det att tex
    sätta cellen till -1 vid not(signal6) och tidstämpel när cellen är -1 och signal6. Om tre minuter har passerat och cellen > 0 sätter du cellen till -2 som är triggern.

    Comment


    • #3
      Låter bra, men hur ser det ut i scriptform?

      Comment


      • #4
        signal6:=lt(mov(c,3,e),mov(c,10,e))
        time:=date()
        första:=and(signal6,lt(GetGvar(500),0))
        trigger1:=and(signal6,ge(sub(mult(frac(time),1440),mult(frac(GetGvar(500)),1440)),2))
        trigger2:=and(gt(GetGvar(500),0),trigger1)
        SetGvarIf(-1,500,not(signal6))
        SetGvarIf(time,500,första)
        SetGvarIf(-2,500,trigger2)
        eqv(GetGvar(500),-2)

        Du bör nog inte visa scriptet i diagrammet om du kör live. Kan då bli knas
        med globala cellerna.

        Comment


        • #5
          Tack Henric för scriptkoden!

          Har nu testat i några dagar och det fungerar som jag hade tänkt. Alla felsignaler är nu borta men även någon riktig.

          Kanske blev tidsfördröjningen något lång. Om man vill halvera tidsfördröjningen hur ser scriptet ut då?


          Än en gång tack för all hjälp!
          Last edited by Wheelie; 2012-05-22, 17:48.

          Comment


          • #6
            signal6:=lt(mov(c,3,e),mov(c,10,e))
            time:=date()
            första:=and(signal6,lt(GetGvar(500),0))
            {ersätt x nedan med valfri tid i sekunder}
            trigger1:=and(signal6,ge(sub(mult(frac(time),86400),mult(frac(GetGvar(500)),86400)),x))
            trigger2:=and(gt(GetGvar(500),0),trigger1)
            SetGvarIf(-1,500,not(signal6))
            SetGvarIf(time,500,första)
            SetGvarIf(-2,500,trigger2)
            eqv(GetGvar(500),-2)

            Comment


            • #7
              Tack, då var det som jag trodde men man vill ju vara säker.

              Comment

              Working...
              X