Allmänt meddelande

Collapse
No announcement yet.

Hysteres funktion

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

  • Hysteres funktion

    Hej

    Jag har tittat igenom de logiska funktioner som finns som standard i NAT, och hittar ingen som kan användas för en hysteres funktion.

    En hysteres funktion förklaras i länk:
    http://sv.wikipedia.org/wiki/Hysteres
    se hysteres i styrsystem...

    Har sökt på forumet men hittar inte någon färdig kod som gör detta, hjälp skulle uppskattas!

  • #2
    Alla former av medelvärden kan ju betraktas som hysteres.
    mvh
    Bertil

    Comment


    • #3
      Hysteres går att lösa på olika sätt, globala celler tex, eller Find() som kan leta upp värden i dataserier bakåt när ett villkor var sant n:e gången bakåt osv. Det beror nog lite på den konkreta problematiken vilken man väljer. Har du ett exempel vi kan utgå ifrån?

      Comment


      • #4
        Ett exempel skulle kunna vara en stochastic som man vill skall ge signal då den går över 60 men fortsätta att hålla kvar signalen ända ner till 40. Då stochastic gått under 40 och släckt signalen så skall den inte ge signal förrän stochastic är över 60 igen.

        Detta skulle ge en hysteres på 20...

        Comment


        • #5
          Vill alltså ha en analog signal in och en digital ut, kunna ställa ett börvärde och hysteres enkelt.

          Håller just nu på att knåpa ihop en funktion, men det blir tyvärr rätt mycket kod. Återkommer med lösning då den är klar.

          Comment


          • #6
            Tips, topbars kan användas för att veta vilket villkor som var sant senast.

            Comment


            • #7
              Skulle det gå att göra en hållkrets enligt nedan, får det inte riktigt att funka. Kanske beror på "återkopplingen" från sig2 via sig5 till sig2 igen?

              sigköp startar utsignalen sig2, och sigsälj stoppar signalen.

              sto1=stoc(c,10)
              sigköp=ge(sto1,70)
              sigsälj=le(sto1,30)
              sig2=or(sigköp,sig5)
              sig4=and(not(sigsälj),1)
              sig5=and(sig2,sig4)

              Där utsignal är sig2...

              Comment


              • #8
                Nja, det faller på att du använder villkoret "sig5" tidigare i scriptet än det beräknas. Det låter som att du jobbar med elektronik annars? Coolt! Man kan bygga en "schmitt-trigger" på lite olika sätt, men en variant är nedanstående som testar med fasta triggnivåer för att få "hållkretsen" att slå om. Analog input omvandlas till digital output.

                Det går även att bygga ut med en variant om man vill ha en fast hysteres räknat mot högsta och lägsta noteringar för Stoc(c,10) sedan förra omslaget hos "kretsen", men då blir det lite mer kod. Nedanstående kanske räcker? Den jämför helt enkelt tidpunkten i databasen då villkoren blev sanna senast, och tar den som hände senast i tid.




                sto1:=stoc(c,10)
                draw(sto1,2,bsa)
                draw(70,3,rsa)
                draw(30,4,rsa)
                condition70=find(gt(sto1,70),100,d,1)
                condition30=find(lt(sto1,30),100,d,1)
                output=if(gt(condition70,condition30),100,0)
                draw(output,5,dmsaw)
                add(0,0)
                Attached Files

                Comment


                • #9
                  En enkel lösning är följande:

                  sto1=stoc(c,10)
                  sigköp=ge(sto1,70)
                  sigsälj=le(sto1,30)
                  sig1=SetGvarIf(1,600,sigköp,T)
                  sig2=SetGvarIf(0,600,sigsälj,T)
                  sig3=or(sigköp,sig1)

                  Mult(sig3,10)

                  Comment


                  • #10
                    Fungerar också fint, men med nackdelen att en global cell "förbrukas" och scriptet bara kan användas till ett papper åt gången.

                    Comment


                    • #11
                      Ursprungligen postat av Rikard Nilsson Visa inlägg
                      Fungerar också fint, men med nackdelen att scriptet bara kan användas till ett papper åt gången.

                      Om man inte lägger in "intelligens" via scrpar() som tilldelar olika celler till olika papper.

                      Comment


                      • #12
                        Sedär! Två bra förslag, skall testas omgående.

                        Misstänkte att återkopplingen i mitt förslag inte skulle funka.

                        Nja jag har aldrig arbetat med elektronik, men programmerat en del styrsystem för drygt 20 år sedan, och därför är den "logiska" biten lätt för mig. Men den delen som gäller dataserier och liknande lite svårare...

                        Comment

                        Working...
                        X