Quantcast
Channel: SPS-Forum - Automatisierung und Elektrotechnik
Viewing all articles
Browse latest Browse all 50236

Step 7 Pointer auf FC-Ausgang

$
0
0
Hallo zusammen,

ich möchte gerne einen Schnittstellen-Baustein zu den Ein- und Ausgangskarten schreiben.
Bei den analogen Eingängen schreibe ich auf X13 (Any) den Pointer auf die Adresse mit länge: z.B. P#E100.0 WORD 8
Mit BLKMOV schieb ich die Daten dann auf das statische Array und ich kann die Datan dann "verwerten". Das funktioniert.

Nach dem selben Prinzip möchte ich nun die Ausgänge behandeln. Der Ausgang kann ich nicht als Any deklarieren. Wenn ich ihn als "Array [0 .. 3] of int" deklariere, kann ich ihn beim Aufruf nicht mit einem Pointer verbinden, da die Typen nicht aufeinander passen... Kann mir hier eventuell jemand einen Tipp geben?

Ich weiß, dass ich auch die Übertragung mit Doppelwörter oder Worter machen kann, das erhöt jedoch meine "Aufschaltung" und geht gegen das konzept, dass ich jedes IO-Modul dem Baustein übergebe.

Danke schonmal,

Code:

FUNCTION_BLOCK "IO_Interface"
VERSION : 0.1
  VAR_INPUT
      X13 : Any;
  END_VAR

  VAR_OUTPUT
      X23 : Array[0..3] of Int;
  END_VAR

  VAR_IN_OUT
  END_VAR

  VAR
      XIW13 : Array[0..7] of Int;
  END_VAR

  VAR_TEMP
      tmp : Bool;
      iTmp : Int;
      buffer : DInt;
      retval : Int;
  END_VAR

BEGIN
// ----------- Eingänge ---------------
REGION X13 -> PIW700 .. PIW714   

#retval := BLKMOV(SRCBLK := #X13,
                  DSTBLK => #XIW13);
    #iTmp := #XIW13[0];
    #iTmp := #XIW13[1];
    #iTmp := #XIW13[2];
    #iTmp := #XIW13[3];
    #iTmp := #XIW13[4];
    #iTmp := #XIW13[5];
    #iTmp := #XIW13[6];
    #iTmp := #XIW13[7];

END_REGION

REGION X23 -> PQW700 .. PQW714   
    #XIW23[0] := #iTmp;
    #XIW23[1] := #iTmp ;
    #XIW23[2] := #iTmp ;
    #XIW23[3] := #iTmp ;
END_REGION
           
END_FUNCTION_BLOCK


Viewing all articles
Browse latest Browse all 50236

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>