I want to execute a routine in slowsequence (in the program of CR1000) but when I put some values in public and so the routine start. Is it possible?
I think the below example code will answer your program. The Trigger variable is only ever set to True by a user manually changing it with connected software.
Public PTemp, Batt_volt
Public Trigger As Boolean
'Main Program
BeginProg
Scan (1,Sec,0,0)
PanelTemp (PTemp,60)
Battery (Batt_volt)
CallTable Test
NextScan
SlowSequence
Scan (1,Sec,3,0)
If Trigger Then
Trigger = False 'Include this line if you want sequence to only run once
'Add other code here.
EndIf
NextScan
EndProg
Thank you very much it is work.
An aditional question:
when I want the sequence starts and with some values like for example: hour=16 , day=05 , year=20 .
like so
If Trigger AND hour AND day AND year Then
Trigger = False 'Include this line if you want sequence to only run once
'Add other code here AND THIS CODE CONTAINS THE VARS HOUR, DAY AND YEAR.
EndIf
Yes, you can combine conditions. I prefer to always add parentheses to make sure the order of operations is what I expect.
If (Trigger = True) AND (hour = 16) AND (day=5) Then
Personally I find more than one AND conditional argument problematic and you quite often get unexpected results.
I have found it far more reliable to nest 'if' arguments for each question, despite more code, it is easier to read through a program
See this example, I have string for 5 treatments for each month of the year. Each minute scan I pass the strings collection through this test. If they fail the first stage it passes to the next for next.
I ask for the current julian day, this has to be correct to then current hour, if this is correct then compare the minute then a conditional trigger.
If this is all correct then i can break up the string to redefine program parameters.
When I tested this with 'AND' 'AND' 'AND' it didn't always work. Same with 'OR' conditions. You seem to have to add parentheses to make ((a = b) AND ( c = d)) AND (( e = f) AND (g = h)), which isnt the same argument.
For y=1 To 5
For x=1 To 12
QD = Mid(KeyTreatment(x,y),2,3)'JulianDay
QH = Mid(KeyTreatment(x,y),5,2)'Hour
QM = Mid(KeyTreatment(x,y),7,2)'Minute
QT = Mid(KeyTreatment(x,y),25,2)'Treatment number, Treatment lock
'Load treatment into keycurrent on triggers,Julian,Hour,Minute
If QD = JulianDay Then
If QH = Hour Then
If QM = Minute Then
If QT = Treatmentlock(y) Then
KeyCurrent(y) = Left(KeyTreatment(x,y),26)'loads whole keytreatment key number into keycurrent
'Load keycurrent setup into treatment
EventApp(y)=Mid(KeyCurrent(y),9,3)
Climate_mm(y) = Mid(KeyCurrent(y),12,2)
Rain0_IrrigC1_Irrig2(y) = Mid(KeyCurrent(y),14,3)
IrrigDays(y) = Mid(KeyCurrent(y),17,2)
Intensity(y) = Mid(KeyCurrent(y),19,3)
HighLowLimit(y) = Mid(KeyCurrent(y),22,3)
EndIf
EndIf
EndIf
EndIf
Next x
Next y