Hilfe bei Konvertierung in andere Sprache

Wenn Du etwas lernen willst, wofür die Semesterarbeit ja auch gedacht ist, dann solltest Du dich schon selber damit beschäftigen.
Das ist aber auch nur meine persönliche Meinung.
 
//edited due deleting account
 

Anhänge

  • Doppelhub.rar
    19 KB · Aufrufe: 10
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
KOP, FUP und AWL kannst Du einfach konvertieren.

Rechtemaustaste auf dem Baustein und Objekt konvertieren auswählen.

ST, AS und CFC musst Du dann aber noch von Hand erstellen. Wobei FUP->CFC ja simples abmalen darstellt.
 
ich weiß noch, dass genau bei der geschichte mit "rechte maustaste und objekt konvertieren" das programm mir sagte "bitte zuerst das objekt übersetzen" und war dann ende :confused:

Bist du mittlerweile denn schon weitergekommen?
Ich habe mir dein Programm mal angesehen. Damit ich dein Programm übersetzen konnte musste ich einmal bei den globalen Variablen die Adressen korrigieren und dann noch einen entsprechenden Main-Task anlegen.

Dann solltest du das Programm übersetzen können, und auch deine Bausteine in AWL konvertieren können.
Der Weg FUP->AWL->ST scheint wirklich der einfachste zu sein, denn dann kannst du viele Dinge aus dem AWL-Code mehr oder weniger 1:1 übernehmen.
Um ein paar Grundkenntnisse in AWL und ST wirst du aber nicht herumkommen, aber bei der geringen Komplexität deines Programmes sollte das auch für einen Programmierlaien keinen großes Problem darstellen.

Als Beispiel mal die ersten beiden Netzwerke des Bausteins "A12_Doppel":

AWL:
Code:
	(* Netzwerk 1 *)
	CAL		SRinst(SET1 := DT_GR, RESET := DT_RT)

        LD		SRinst.Q1
	ST		LM_GR

	(* Netzwerk 2 *)
	LD		DT_GR
        ANDN		EING2
	ST		SRinst2.SET1
	CAL		SRinst2(RESET := EING1)

	LD		SRinst2.Q1
	ST		ZYL_EIN

in ST:
Code:
(* Netzwerk 1 *)
SRinst(
	SET1 := DT_GR,
	RESET := DT_RT
);

LM_GR := SRinst.Q1;

(* Netzwerk 2 *)
SRinst2(
	SET1 := DT_GR AND NOT EING2,
	RESET := EING1
);

ZYL_EIN := SRinst2.Q1;
 
(* Netzwerk 4 *)
ZYL_AUS := 2#1001_0011 AND 2#1000_1010;
2#1001_0011 := TONinst2;
2#1000_1010 := CTDinst;

TONinst2(IN := END_EIN , PT:= T#4s);
ZYL_AUS := TONinst.Q;

CTDinst(CD := END_EIN , LOAD := DT_GR , PV := 2);
ZYL_AUS := CTDinst.Q;
VarINT2 := CTDinst.CV

Wie kommst du denn zu der Übersetzung von Netzwerk 4? Das sieht ja mal garnicht gut aus ;-)

Ich meine deine Idee mit den Binärkonstanten 2#....
Einer Konstanten kannst du keinen anderen Wert zuweisen, das sollte auch aus der normalen Mathematik bekannt sein (1=2). Im FUP Programm taucht diese Konstante auch garnicht auf.

Eine grundsätzliche Anmerkung zur Programmlogik (nicht zur Übersetzung) habe ich noch:
Es wird schon im ursprünglichen Programm die Variable "ZYL_EIN" dreimal zugewiesen. Ein SPS-Programm wird zyklisch aufgerufen und das Ausgangsabbild am Ende des Zyklus auf die Ausgänge gegeben. D.h. alle Zuweisungen vor der im letzten Netzwerk sind überflüssig und ohne Funktion.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Schau dir das Netzwerk 4 nochmal in FUP an.
Dort sind die beiden Bausteine TONinst2 und CTDinst. Die Ausgänge von diesen Bausteinen (.Q) wird über eine logische Verknüpfung (AND) dem Ausgang ZYL_EIN zugewiesen. Der Kringel am AND ist eine Negation.
Genauso machst du es dann in ST: Erst die beiden FB-Aufrufe, und dann die logische Verknüpfung mit den Ausgängen der FB.

PS: Dein AWL Code in deinem vorletzten Post ist auch etwas anders als in dem Programm was du am Anfang mal hochgeladen hattest.
 
Mit FB-Baustein meinst du dann jene TONinst und CTDinst, woll?
Genau!

Und die Ausgänge der FB, die ich dann vermeindlich an die logische Verknüpfung AND anbringen soll, währen dies dann die Bezeichnung ****.Q ?
Gut erkannt. Die Bezeichnung der Ausgänge kannst du dir auch aus deinem FUP-Programm ablesen. An diesen ändert sich nämlich nichts.

Oder setze ich für die Ausgänge der FB-Steine eine Konstante und diese dann erst an die AND-Verknüpfung? Weil doch beide .Q-Ausgänge in die AND-Verknüpfung gehen und dann weiter "zum ZYL_AUS"?
Und genau diese AND-Verknüpfung machst du in ST auch. Für die Negation gibt es ein NOT, das hast du in Netzwerk 2 ja auch schon verwendet.

Habe ich in der AWL-Übersetzung einen oder mehrere Fehler drin? Dachte eigentlich, dass hätte ich ganz gut hinbekommen. Wo wäre dieser?
Ich habe den AWL-Code von Twincat erzeugen lassen. Rechte Maustaste auf den Baustein in der Bausteinliste, dann "Objekt konvertieren" auswählen. Neuen Namen vergeben und Zielsprache AWL anwählen. Z.B. VarINT2 gibt es in meiner Version garnicht.
 
Zurück
Oben