TIA POKE BLK Benutzen

onboardx

Level-2
Beiträge
167
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo. Im folgenden Code lasse ich ein 200er Ventil entsprechend der im Datenblock zugewiesenen Prioritätsreihenfolge laufen. Dann verwende ich einen DB für die Ausgabe und schreibe die Daten aus dem DB mit POKE BLK in die Q-Ausgangsfelder. Wenn ich es von der Priorität 200 auf das 1. Ventil von 196. Es beginnt vom Q-Ausgang des Ventils zu arbeiten. Wenn ich es in dem DB, den ich zwischendurch verwende, überprüfe, funktioniert es ab Ventil 200. Es schien, als gäbe es ein Problem mit dem Befehl POKE BLK, aber ich konnte es nicht lösen.


FUNCTION_BLOCK "VALVE_CONTROL_3"
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
VAR_INPUT
Valve : Array[1..200] of Int;
END_VAR

VAR_IN_OUT
ValveControl : Array[1..200] of Bool;
START : Bool;
END_VAR

VAR
START_PE {InstructionName := 'R_TRIG'; LibVersion := '1.0'} : R_TRIG;
i { S7_SetPoint := 'True'} : Int;
j : Int;
t : Int;
Siralama : Array[1..200] of Int;
Valve_Timer {InstructionName := 'TON_TIME'; LibVersion := '1.0'} : TON_TIME;
ValveTimer_PE {InstructionName := 'R_TRIG'; LibVersion := '1.0'} : R_TRIG;
Valve_Timer_IN_FE {InstructionName := 'F_TRIG'; LibVersion := '1.0'} : F_TRIG;
END_VAR


BEGIN
#START_PE(CLK := #START);

IF #START_PE.Q THEN

FOR #i := 1 TO 200 DO
FOR #j := 1 TO 200 DO
IF #Valve[#i] = #j THEN
#Siralama[#j] := #i;

END_IF;

END_FOR;

END_FOR;

#t := 1;
#ValveControl[#Siralama[#t]] := TRUE;
END_IF;



IF #START THEN

#Valve_Timer(IN := #ValveControl[#Siralama[#t]],
PT := T#1s);

#ValveTimer_PE(CLK := #Valve_Timer.Q);


IF #ValveTimer_PE.Q THEN

#ValveControl[#Siralama[#t]] := FALSE;

END_IF;

#Valve_Timer_IN_FE(CLK := #Valve_Timer.IN);


IF #Valve_Timer_IN_FE.Q THEN

#t += 1;

IF #t > 200 THEN

#START := FALSE;

ELSE
#ValveControl[#Siralama[#t]] := TRUE;

END_IF;

END_IF;

END_IF;

POKE_BLK(area_src:=16#84,
dbNumber_src:=35,
byteOffset_src:=400,
area_dest:=16#82,
dbNumber_dest:=0,
byteOffset_dest:=5,
count:=25);



END_FUNCTION_BLOCK
 
Zurück
Oben