Nun kommt ein Zylinder mit 2 Ausgängen und 2 Eingängen:
FUNCTION_BLOCKCylinder2Out2InIMPLEMENTSICylinderVAR
  DO_Cylinder2WorkingPos: POINTERTOBOOL; (* digital output for move cylinder to working position *)
  DO_Cylinder2HomePos: POINTERTOBOOL; (* digital output for move cylinder to home position *)
  DI_CylinderInHomePos: POINTERTOBOOL; (* digital input for cylinder is in home position *)
  DI_CylinderInWorkingPos: POINTERTOBOOL; (* digital input for cylinder is in working position *)END_VARMETHODmove2Home: ICylinder
  DO_Cylinder2WorkingPos^ :=FALSE;
  DO_Cylinder2HomePos^ :=TRUE;
  move2Home :=this;METHODmove2WorkingPos: ICylinder
  DO_Cylinder2WorkingPos^ :=TRUE;
  DO_Cylinder2HomePos^ :=FALSE;
  move2Home :=this;METHODisInHomePos: BOOL
  isInHomePos :=((DI_CylinderInHomePos^)AND(NOT(DI_CylinderInWorkingPos^)));METHODisInWorkingPos: BOOL
  isInHomePos :=((DI_CylinderInWorkingPos^)AND(NOT(DI_CylinderInHomePos^)));METHODconstructor: Cylinder2Out2InVAR_INPUT
  doCylinder2WorkingPos: POINTERTOBOOL; (* digital output for move cylinder to working position *)
  doCylinder2HomePos: POINTERTOBOOL; (* digital output for move cylinder to home position *)
  diCylinderInHomePos: POINTERTOBOOL; (* digital input for cylinder is in home position *)
  diCylinderInWorkingPos: POINTERTOBOOL; (* digital input for cylinder is in working position *)END_VAR
  DO_Cylinder2WorkingPos :=doCylinder2WorkingPos;
  DO_Cylinder2HomePos :=doCylinder2HomePos;
  DI_CylinderInHomePos :=diCylinderInHomePos;
  DI_CylinderInWorkingPos :=diCylinderInWorkingPos;
  constructor :=this; Â
so würde das Ganze in etwa aussehen, ich weiß es gibt keine Fehlerbehandlung und die getter für home und working pos sind auch nicht schön...
Mein Problem ist ich bekomme keine Bits in die Klasse, Booleans haben eine länge von 1 Byte... liegen nun meine Ausgänge auf QX1.0 und QX1.1 dann Funktioniert das nicht.
Nun könnte man sagen, abreite halt mit Byte und Bit Adressen:
  OutByte^.DO_Cylinder2WorkingPos:=TRUE;
Aber das ist auch Lahm, nun hat sich 3S sicher was dabei gedacht uns Klassen und Interfaces zur Verfügung zu stellen, denn PLCs verarbeiten halt Hauptsächlich IOs.
POINTER TO BIT geht leider nicht, REFERENCE TO BIT geht auch nicht. Ist auch logisch die Adressen können vom Aufbau her auf nichts zeigen was kleiner wie ein Byte ist, Siemens kann dass, dafür sind Siemens Pointer für sonst nichts zu gebrauchen, da sie auf keine echten Bereiche im Speicher zeigen.
Das ist der nächste Punkt, ich will eigentlich nicht mit Pointern Arbeiten sondern mit Referencen aber ich bekomme die Referencen via setter nicht initialisiert.
Ich habe mich gefreut über die Interfaces, weil wir so Polymorphie in die Steuerungen bekommen, aber ich brauche IOs.
Ich bin dankbar für Hints und Lösungen, Flames bitte an e flames@trashmail.com e
Viele Grüße
elfrosch
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hallo zusammen,
ich hab mit der sufu nichts brauchbares gefunden und google war auch nicht mein Freund, darum trage ich mein Anliegen hier vor...
Ich wollte zum spielen mal einen Zylinder implementieren
also erstmal ein Interface:
Nun kommt ein Zylinder mit 2 Ausgängen und 2 Eingängen:
so würde das Ganze in etwa aussehen, ich weiß es gibt keine Fehlerbehandlung und die getter für home und working pos sind auch nicht schön...
Mein Problem ist ich bekomme keine Bits in die Klasse, Booleans haben eine länge von 1 Byte... liegen nun meine Ausgänge auf QX1.0 und QX1.1 dann Funktioniert das nicht.
Nun könnte man sagen, abreite halt mit Byte und Bit Adressen:
Aber das ist auch Lahm, nun hat sich 3S sicher was dabei gedacht uns Klassen und Interfaces zur Verfügung zu stellen, denn PLCs verarbeiten halt Hauptsächlich IOs.
POINTER TO BIT geht leider nicht, REFERENCE TO BIT geht auch nicht. Ist auch logisch die Adressen können vom Aufbau her auf nichts zeigen was kleiner wie ein Byte ist, Siemens kann dass, dafür sind Siemens Pointer für sonst nichts zu gebrauchen, da sie auf keine echten Bereiche im Speicher zeigen.
Das ist der nächste Punkt, ich will eigentlich nicht mit Pointern Arbeiten sondern mit Referencen aber ich bekomme die Referencen via setter nicht initialisiert.
Ich habe mich gefreut über die Interfaces, weil wir so Polymorphie in die Steuerungen bekommen, aber ich brauche IOs.
Ich bin dankbar für Hints und Lösungen, Flames bitte an e flames@trashmail.com e
Viele Grüße
elfrosch