TIA Bifolge auswerten

Habibi

Level-1
Beiträge
28
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich bin gerade dran den FESTO CMAX-Achscontroller zu programmieren.
Er wird ja über verschiedene Controll- und Statusbytes gesteuert.

Das Schreiben ist ja kein Problem mit einer MOVE-Box.

Aber wie kann ich das zurückbekommene Statusbyte auswerten. Wenn ein bestimmtes Bit des Bytes einen bestimmten Wert hat soll darauf reagiert werden.
Kann ich also irgenwie nur ein einzelnes Bit eines Bytes betrachten ohne das Byte in der Deklaration in einzelne Bit aufzugliedern?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Stichworte:
- Slice-Zugriffe (myByte.%X1)
- AT (Bool-Array und Byte übereinanderlegen)
- das Byte auf ein Bool-Array umkopieren und auf die Bits des Arrays zugreifen
- Bit mit Bitmaske ausmaskieren (myByte AND B#16#04)

Welche CPU hast Du?

Harald
 
Ich würde AT in jedem Fall dem Slice vorziehen, da man hier vernünftige Symbolinformationen nutzen kann.
 
Vielen Dank für die Rückmeldungen.
Ich nutze eine 1214C.

Mit (myByte.%X1) hat es super geklappt.
Ich denke mit Ausmaskieren ist auch eine super Lösung.

Wie gehe ich bei
AT vor, wie funktioniert es?


 
ah super.
Das mit AT ist ja mal richtig gut. Kann ich dann direkt jedes einzelne Bit ansprechen.
Kann man die Bits dann noch einzeln umbenennen?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du kannst das Byte (bzw. das Byte und die nächste Variable (*) ) auch mit einer Struktur aus Bools überlagern, dann kannst Du den Bits beliebige Namen und Kommentare geben.

(*) Strukturen beginnen immer an geraden Adressen

Der Speicher wo das AT sein soll darf nicht "optimiert" sein, er muß "Standard-Zugriff" haben (oder die Krücke mit dem Remanenz einstellen im IDB)

etwa so:
Code:
Statusbyte : Byte ;

Statusbits AT Statusbyte : STRUCT
  Bit_0  : BOOL ; //Bit 0: ...
  Bremse : BOOL ; //Bit 1: Bremse aktiv
  Fehler : BOOL ; //Bit 2: Fehler liegt an
  Bit_3  : BOOL ; //Bit 3: ...
...
  Bit_7  : BOOL ; //Bit 7: ...
END_STRUCT;
oder
Code:
Statusbits : STRUCT
  Bit_0  : BOOL ; //Bit 0: ...
  Bremse : BOOL ; //Bit 1: Bremse aktiv
  Fehler : BOOL ; //Bit 2: Fehler liegt an
  Bit_3  : BOOL ; //Bit 3: ...
...
  Bit_7  : BOOL ; //Bit 7: ...
END_STRUCT;

Statusbyte AT Statusbits : Byte ;
Zugreifen kannst Du dann so
Code:
Statusbyte := myStatusbyte;
myBit := Statusbits.Bremse OR Statusbits.Bit_0;

Harald
 
Zuletzt bearbeitet:
Es gibt von Festo doch fertige, offene Bausteine, sowohl für TIA als auch Simatic Manager (und ControlLogix, CodeSys, etc).

Die habe ich auch verwendet, speziell den FHPP universal Baustein für TIA (da war ein Byteswap-Bug drin, sonst alles tutti).
Ist schon recht gut ausprogrammiert, ich hab den für die Pneumatikregelung verwendet, da habe ich mir noch ein paar Ein und Ausgänge hinzuprogrammiert.

Der Baustein wertet auch die verschiedenen Regelungsmodi aus und passt die Werte entsprechend an.
Zweiter Eintrag von oben.
https://www.festo.com/net/de_corp/SupportPortal/default.aspx?q=fhpp&tab=4&s=t#result
 
Das mit den Strukturen muss ich mir mal anschauen und überlegen ob ich es so mache oder mit den AT lasse.

Es gibt leider keinen passenden Baustein für unseren Achscontroller CPX-CMAX.
Er wird ja über das Fest Tool FCT konfiguriert, mit der SPS steuer ich dann nur die vorher im FCT parametrierten Sätze an.

Das ganze ist für eine kleine Versuchsroboterzelle. Ein Roboter ist Master und fährt eine Position an, dann gibt er der SPS das Signal (Punktschweißen starten). Die SPS steuert dann über den Achscontroller eine pneumatische Schweißzange auf eine bestimmte Kraft. Dann sagt die SPS dem Schweißkoffer, los Strom durchjagen. Dann wieder Zange öffnen und Roboter zum nächsten Schweißpunkt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Es gibt den Universalbaustein, damit kannst Du Deine CMAX Baugruppe steuerung, ich habe damit auch eine CMAX gesteuert. Positionieren, Kraft auswerten, etc. Evtl musst Du kleine Änderungen machen, aber die grundsätzliche Kommunikation ist damit schon fertig.

kannst ja mal hineinschauen.

CTTHPS7tAAAAAElFTkSuQmCCAA==
Unbenannt.PNG
 
Zurück
Oben