Sida 1 av 1

Hjälp med CDEF

Postat: 16 aug 2016, 20:37
av Elva
Hittade lite beräkning för gränsvärde när mögel börjar trivas på http://www.franzens.nu/2016/06/30/styrn ... -domoticz/ ( post29179.html )

Kod: Markera allt

      if (temp < 0) then humidityThreshold = 100 elseif (temp > 22) then
         humidityThreshold = 79 - 5
      else
         humidityThreshold = integer(-0.0015 * temp ^ 3+0.1193 * temp ^ 2 - 2.9878 * temp + 102.96) - 5

         if (humidityThreshold > 100) then
            humidityThreshold = 100
         elseif (humidityThreshold < 0) then
            humidityThreshold = 0
         end
 
      end
Försöker översätta hela beräkningen till RPN men kommer inte längre än såhär
CDEF:Mi=-0.0015,Temp,LOG,3,*,EXP,*,0.1193,Temp,LOG,2,*,EXP,*,+,2.9878,Temp,*,-,102.96,+,5,-

Vilket motsvarar (ser så ut iaf, om jag är rätt på det)
humidityThreshold = integer(-0.0015 * temp ^ 3+0.1193 * temp ^ 2 - 2.9878 * temp + 102.96) - 5

Hur får man till IF villkor tex?

Någon som vill hjälpa till?


//Lenny

Re: Hjälp med CDEF

Postat: 17 aug 2016, 09:03
av motoz
Rpn är kul...

Tycker det ser riktigt ut så långt.

'IF' fungerar så här:
Pops three elements from the stack. If the element popped last is 0 (false), the value popped first is pushed back onto the stack, otherwise the value popped second is pushed back
Så kombinerat med GT (greater than) och LT (less than) så blir det kanske ungefär såhär:

Kod: Markera allt

CDEF:Ht=Mi,0,LT,0,Mi,100,GT,100,Mi,IF,IF
Eller så kan du göra det enklare med MIN och MAX eftersom det handlar om att begränsa data til intervallet 0..100

Kod: Markera allt

CDEF:Ht=Mi,100,MIN,0,MAX

Re: Hjälp med CDEF

Postat: 19 aug 2016, 23:51
av Elva
Stort tack för hjälpen.

//Lenny