Twincat Programme aufrufen

simonbohner

Level-1
Beiträge
11
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
Ich bin neu hier im Forum und habe gleich mal meine erste Frage.

Seit dieser Woche habe ich mit meiner Technikerarbeit angefangen, welche ich in Twincat 2 programmieren muss.
Da ich mit Twincat noch nie etwas programmiert habe tue ich mir seit Tagen extrem schwer mir die Programmiersprache ST selbst beizubringen. Fragen kann ich hier leider auch
niemanden, da mein Betreuer seit Mittwoch nicht mehr im Büro war.

Zu meiner Aufgabe:

Ich soll eine Anlage mit verschiedenen Fürderbändern, Sensoren, etc. automatisieren.

Nun habe ich ein Programm für den Einrichtbetrieb (PRG_einrichten) geschrieben, womit ich alle Bänder und so einzeln fahren kann.
Als nächstes habe ich eine kleine Schrittkette (PRG_grundstellung) geschrieben, mit welcher ich die Anlage in die Grundstellung fahren will.

Beide Programme sollen über PRG_MAIN aufrufbar sein. Wenn man z.B. am Panel "einrichten" drückt, soll nur das PRG_einrichten abgearbeitet werden und wenn
mann "Grundstellung" drückt nur das PRG_grunstellung.

Irgendwie wird aber immer das PRG_einrichten abgearbeitet, egal was ich schon versucht habe. Vllt. funktioniert das so wie ich es geschrieben hab auch gar nicht, aber
so langsam bin ich echt ratlos.

Hab ein Screenshot meines PRG_MAIN angehängt.

Hoffe mir kann jemand weiterhelfen wie ich das realisieren soll.

Danke im Vorraus
Screenshot_1.jpg
 
Deine Unterprogramme werden nur so lange ausgeführt wie die Taster gedrückt sind. Werden die Taster losgelassen werden beide Programme nicht mehr aufgerufen. Ausserdem ist es bei dir möglich beide Programme gleichzeitig laufen zu lassen (Wenn beide Taster gedrückt sind).

Du brauchst also eine Variable in der gespeichert wird, welche Programm laufen soll. Bei nur 2 Programmen reicht ein Bool, wenn es mehr Fälle gibt kannst du ein Int nehmen oder dir ein Enum erstellen.

Code:
var
  bEinricht :bool;
end_var

If e_S_Pult_Taster15 and not e_S_Pult_Taster16 then   (*verriegelung der Taster gegeneinander*)
  bEinricht := true;
elsif e_S_Pult_Taster16 and not e_S_Pult_Taster15 then
  bEinricht := false;
end_if

if bEinricht then
  PRG_einrichten();
else
  PRG_grundstellung();
end_if

Wenn du noch einen Zustand brauchst in dem keines der beiden Programme läuft nimmst du ein INT als Merker und ruft die Programme dann in einer CASE Struktur auf.

Code:
var
  iAuswahl :int;
end_var

If e_S_Pult_Taster15 and not e_S_Pult_Taster16 then   (*verriegelung der Taster gegeneinander*)
  iAuswahl := 1;
elsif e_S_Pult_Taster16 and not e_S_Pult_Taster15 then
  iAuswahl := 2;
elsif e_S_Pult_Taster15 and e_S_Pult_Taster16 (*wenn beide Taster gleichzeitig gedrückt sind*)
  iAuswahl := 0;
end_if

CASE iAuswahl OF

  1: PRG_einrichten();

  2: PRG_grundstellung();

ELSE
  Störung(); (*oder was auch immer*)
END_CASE
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke für deine Hilfe,
hab das Programm von dir heute Morgen so übernommen aber es hat sich gar nichts verändert gehabt.

Es wurde immer das PRG_einrichten abgearbeitet.

Nach weiterem 2 Stunden suchen bin ich dann auf des Rätsels Lösung gekommen.

Ich hatte in der Taskkonfiguration alles 3 Programme untereinander stehen. Weis gar nicht so genau was man da macht, aber als ich PRG_einrichten und PRG_grundstellung aus der Taskkonfig. gelöscht hatte funktionierte alles wunderbar.

Den Teil von Dir mit der iAuswahl hab ich aber trotzdem im Programm stehen lassen, sieht viel besser aus:)
 
Zurück
Oben