TIA POKE BLK Benutzen

onboardx

Level-2
Beiträge
167
Reaktionspunkte
1
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
 
Welche CPU genau verwendest du? Welche TIA Version?
Ich verstehe deinen Text leider nicht. Daher kurz gefasst: Was ist dein Problem, was ist deine Frage?
Was ist ein "200er Ventil"?
 
Zurück
Oben