1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
(* Déclaration variables *)
INPUT
Add HW_SUBMODULE 0.0 0 Identification des entrées/sorties
TEMP
HWModule Struct 0.0
Nbr_In UDInt 0.0
Size_In UInt 4.0
Nbr_Out UDInt 6.0
Size_Out UInt 10.0
Ret_val Int 12.0
(* fin déclaration *)
#HWModule.Ret_val := RD_ADDR(LADDR := #Add, PIADDR => #HWModule.Nbr_In, PICount => #HWModule.Size_In, PQADDR => #HWModule.Nbr_Out, PQCount => #HWModule.Size_Out);
//Lectures des entrées
LECTURE DES ADRESSES
FOR #Count := 0 TO UINT_TO_INT(#HWModule.Size_In) - 1 DO
#Buffer[#Count] := PEEK(area := 16#81, dbNumber := 0, byteOffset := UDINT_TO_INT(#HWModule.Nbr_In) + #Count);
END_FOR;
//Ecriture des sorties
FOR #Count := 0 TO UINT_TO_INT(#HWModule.Size_Out) - 1 DO
POKE(area := 16#82,
dbNumber := 0,
byteOffset := UDINT_TO_INT(#HWModule.Nbr_Out) + #Count,
value := #Buffer[#Count]);
END_FOR; |
Partager