twincat3: programmierung eines Rundschalttisches

Zuviel Werbung?
-> Hier kostenlos registrieren
Also so manches mal frage ich mich schon, wie blauäugig hier manche ans Werk gehen.
Keine Ahnung von den elementarsten Grundlagen der Elektrotechnik aber SPS programmieren wollen ...

Anhang anzeigen 45005

Bei manchen wär ein Elektrobaukasten vielleicht sinnvoll zum Einstieg

falls diese nachricht an mich gerichtet ist: ich studiere Mechatronik und habe vor einem jahr sps entdeckt. bis jetzt habe ich nur aufgaben von sps im Buch von Wellenreuther und Zastrow gemacht. vor paar monaten habe ich mir vorgenommen ein projekt von Anfang bis zu ende zu implementieren. Spricht Montage, programmierung und inbetriebnahme.

und auf dieser webseite konnte ich vieles lernen, was nicht im buch steht. vielleicht sind oder werden einige meiner fragen fuer sie bloed. Aber eine antwort darauf macht mich ein stückt schlauer.

danke fuer deine Beitraege.
 
daran habe ich auch gedacht , aber ich kam nicht weiter, weil ich nicht wusste, was ich als transitionsbedingung nehmen sollte. ich habe gesucht,aber nichts gefunden.

koenntest du vielleicht mir ein paar hinweise geben oder mir sagen wie ich das machen kann...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
hallo twincat-welt,

ich habe eine frage bezüglich der software Twincat 3.
ich habe im POU1 einen ausgang Z3 als Var_output. in einen POU2 moechte ich Z3 wieder anwenden aber am eingang eines bausteins. es erscheint das fenster, in dem ich Z3 nochmal deklarieren muss. ich habe Z3 wieder als var_output im POU2. ist das richtig?

danke im voraus fuer ihren beitrag
 
guten morgen SPS-Welt!!!

kann jemand mir sagen, ob es einen schieberegister-Baustein bei Twincat 3 gibt?
ich moechte gern das signal (0 oder 1) eines sensors zum beispiel in station 3 bei der station6 verwenden. und dachte mir, dass ich das signal nach jedem zyklus(2sekunden) verschieben kann. ist das überhaupt richtig?

oder koennte jemand mir helfen, dies zu loesen.

danke
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ob es einen Schieberegisterbaustein gibt weiß ich gerade nicht.
Ein Schieberegister ist erstmal nur eine normale Word- oder Byte-Variable, bei der Du die einzelnen Bits interpretierst.
In Twincat geht das normalerweise so:
wordvariable.bitnummer (0...15)
Also auf Bit 0 von wordvariable greifst Du mit wordvariable.0 zu.

Zum schieben gibts dann die Schiebefunktionen SHL (schiebe links) bzw SHR (schiebe rechts).
Die Schiebeoperation rufst Du also getriggert durch die Bewegung Deines Tischs auf.
Ein Bit welches Du 4 Stationen später abfragen möchtest setzt Du beispielsweise im ersten Step:
wordvariable.0:=true;
Bei jedem Schritt rufst Du auf:
shl (wordvariable,1); bzw. das FUP Pendant siehe https://infosys.beckhoff.com/index....html/tcplcctrl_shl.htm&id=8925795668220641554
In Schritt 4 fragst Du dann
if wordvariable.3 then tu dies oder jenes; end_if; bzw die Entsprechungen in FUP

Fertig is der Lack
Mit der Wordvariable hast Du 16 Bitpositionen, mit der Bytevariable 8. Schiebst Du gleich um 2 Positionen könntest Du in der Wordvariable gleich zwei Zustände zur späteren Bearbeitung verwalten und programmierst das Schieberegister nur einmal (für faule...). Da aber keine Ressourcenknappheit zu vermuten ist würde ich das nicht empfehlen wegen der Übersichtlichkeit.

Das ganze kann man noch deutlich aufbohren, wenn es um mehrere Zustände, Bearbeitungsergebnisse etc geht. Dann würde sich eine äquvalente Programmierung als geschobenes Array of irgendwas anbieten.
Wichtig! Hänge das Schiebesignal an eine Flanke, zum Beispiel für den Motorstart oder für das Erreichen der Position.
 
Zuletzt bearbeitet:
Ähm, so mal nebenbei....
Bitte eine ordentliche Benamung der Variablen angewöhnen...
Das kann sonst keiner mehr lesen. ;)
 
https://infosys.beckhoff.com/index...._intro/2532187787.html&id=6879874861369598828

So geht das mit dem Enable-Eingang.

Inwiefern hast Du das mit der Flanke und dem Bewegungstakt nicht verstanden? Irgendwann startest Du doch den Motor. Dieses Signal (über eine Flanke in seiner Lage und Länge definiert) benutzt Du um qasi zeitgleich mit der physikalischen Bewegung auch den Bitzustand im Register zu schieben. Alternativ kannst du natürlich auch den Ini für den Stop benutzen. Wichtig ist aber die Flanke, weil das mit dem schieben sonst mehrfach (in jedem Zyklus) passieren könnte.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Inwiefern hast Du das mit der Flanke und dem Bewegungstakt nicht verstanden?
Nicht jedem, der sich in die SPS-Programmierung einarbeitet, wurde in die Wiege gelegt, was SPS-Programmierer unter einer Flanke verstehen.
Könnte es sein, dass die Verständigung momentan an solch einer Kleinigkeit scheitert? ;)
 
Da "Flanke" im bisherigen Thread nicht erwähnt wurde zielte meine Frage genau in diese Richtung.

In meiner Wiege lag auch nur ein Kissen, eine Decke und ein Plüschhund.
 
https://infosys.beckhoff.com/index...._intro/2532187787.html&id=6879874861369598828

So geht das mit dem Enable-Eingang.

Inwiefern hast Du das mit der Flanke und dem Bewegungstakt nicht verstanden? Irgendwann startest Du doch den Motor. Dieses Signal (über eine Flanke in seiner Lage und Länge definiert) benutzt Du um qasi zeitgleich mit der physikalischen Bewegung auch den Bitzustand im Register zu schieben. Alternativ kannst du natürlich auch den Ini für den Stop benutzen. Wichtig ist aber die Flanke, weil das mit dem schieben sonst mehrfach (in jedem Zyklus) passieren könnte.

also bei jeder steigenden flanke des positioninitiatiator sollte das signal S13 um ein Bit vershoben werden. so wuerde es aussehenAnhang anzeigen Bachelor1.project.pdf

S13 ist ein boolesche signal. Aber der operator SHL (von twincat3) kann nur Byte,Word und Dword verschieben. wo meine frage:ist das ueberhaupt richtig, was ich gemacht habe?
oder muss ich S13 in ZB: Byte umwandeln?
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Wie oben schon geschrieben steht. Benutze eine Box für SHL, welche den enable (en) Eingang hat.
Auf IN und OUT kommt die gleiche Variable (WORD) und an EN dann die Flanke. Die Variable an IN wird um n Positionen an OUT wieder ausgegeben. n sollte entsprechend also 1 als Konstante sein.
Gut erläutert wird dasmeist auch im Infosys, wobei man sich dort die Informationen aber meistens zusammensuchen muss.
 
also bei jeder steigenden flanke des positioninitiatiator sollte das signal S13 um ein Bit vershoben werden. so wuerde es aussehenAnhang anzeigen 45418

S13 ist ein boolesche signal. Aber der operator SHL (von twincat3) kann nur Byte,Word und Dword verschieben. wo meine frage:ist das ueberhaupt richtig, was ich gemacht habe?
oder muss ich S13 in ZB: Byte umwandeln?

wäre ratsam :)
 
guten morgen!!

ich habe ein paar fragen.
frage1: ich habe meine steuerung montiert. alle sensoren(EL1008und aktoren(EL2008 sind in richtigen steckplatz und auf (EL9184) angeschlossen. jetzt habe ich die maschine unter spannung. aber außer meine EThercat-klemme (EK1100) leuchtet keine andere klemme. woran kann das liegen? oder muss man erst das program in die steuerung laden?


Frage2: ich versuche mein sps-projekt in die ziel-system(cp6700-0001-0050) zu laden,wie in infosys-beckhoff beschrieben ist, leider ohne erfolg,. ich habe ueber ** system-->choose target--> brodcoast search ** mein ziel-system ausgewählt.
jetzt lade ich das program ueber Activate Configuration ,dann einlogen und run. aber es passiert nichts. kann jemand mir sagen, was ich hier falsch mache?
 
Zurück
Oben