s5 => S7 konvertieren

Zuviel Werbung?
-> Hier kostenlos registrieren
Die FB's wurden als FC's zwar konvertiert, sieht aber eher nach einer Mischung aus einem C++ und einem TurboPascal- Programm als nach AWL in s7 aus.

hehe,
du machst einen fatalen Fehler.

Der Konverter erzeugt keinen AWL - Code sondern EINE QUELLE !

Diese Quelle musst du erst übersetzen, dann hast du einen AWL Baustein.

Ich lach mich schlapp..... :ROFLMAO: :ROFLMAO: :ROFLMAO:
 
hehe,
du machst einen fatalen Fehler.

Der Konverter erzeugt keinen AWL - Code sondern EINE QUELLE !

Diese Quelle musst du erst übersetzen, dann hast du einen AWL Baustein.

Ich lach mich schlapp..... :ROFLMAO: :ROFLMAO:

Mit Hilfe dieses Forums (ich hatte mal gehört, daß man s5- Progis nach s7 übersetzen kann) habe ich den Konverter zum 1. Mal benutzt. Nach vielen Fehlversuchen und recht umfangreichem Studiums der Hilfe zu diesem Konverter war ich soweit, daß ich in s7 (nach den schon beschriebenen Fehlermeldungen bei der Konvertierung) die Quelldatei (eben die QUELLE !!!) öffnen könnte. Ich bemerkte, daß da allerdings nichts Brauchbares (weil der Aufwand der Nachbearbeitung zu hoch ist) dabei war.

Mir hätte es weitergeholfen, wenn Du mir einen weiteren Fehler im Umgang mit dem Konverter hättest aufzeigen können.
Aber ich freue mich trotzdem, daß ich wenigstens Dich gut unterhalten konnte.

@
Ich lach mich schlapp..... :ROFLMAO: :ROFLMAO:

Das ich, auch wenn ich in diesem speziellen Fall unwissend bin (was ich nie verheimlicht hatte), zu Deiner Unterhaltung beitragen konnte, wird mich auch in eventuell mal zukünftig vorkommenden düsteren Stunden noch froh machen. Ich danke Dir für Deine Hilfe
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ein anderes Problem zu diesem Projekt

Diesen Konvertierungs- Krimskrams habe ich aus schon genannten Gründen
seit 07.02.2007 für dieses Projekt aufgegeben (mir läuft die Zeit davon !!),
bin aber an der grundsätzlichen Vorgehensweise für die Konvertierung von s5 => s7 weiterhin interessiert.
_________________________________________________________________

Ich hatte schon weiter oben mal nach der Ausgabe von Fehlern gefragt.

Mir schwebt für's Erste Folgendes vor:
Ich nehme ein EW.
Der prinzipielle Aufbau: (als Beispiel)
=> EW 0 (= Fehler-WORD für max. 15 Fehlerzustände)

E 0.0 = StatusBit,
0= Warnung (Fehler wird angezeigt, Anlage darf weiter laufen [z.B. MSB-
Auslösung von Hilfsantrieben]),
1= Störung, (Fehler wird angezeigt, Anlage wird gestoppt [z.B. MSB-
Auslösung von Hauptantrieben, Druckwächtern, Schutztüren])

E 0.1 - E 0.7 und E 1.0 - E1.7 sind eben weitere Fehlereingänge.

Ich möchte 4 LED's (sollte das irgendwann mal nicht mehr reichen, dann eben 8 LED's => DW auf der Eingangsseite) binär als Fehleranzeige haben. (OP3 etc. wäre schöner, sprengt aber den Kostenrahmen).

Folgende Fragen:
- Kann ich das EW mit CMP <> 0 (od. 0000000000000000) vergleichen, um festzustellen, ob ein Fehler anliegt ?
- Wie kann ich einen anliegenden Fehler (ich halte es für relativ unwahrscheinlich, daß mehr als ein Fehler innerhalb einer Zykluszeit anliegt) bis zu seinem Nichtmehr- Vorhandensein auf ein MW zwischenspeichern und, auch wenn dannach (z.B. im nächsten Zyklus) noch andere Fehler auftreten, ausgeben? Die Fehleranzeige auf die 4 LED's stelle ich mir binär codiert vor. Es darf nur ein Fehler angezeigt werden, auch wenn mehrere Fehler anliegen. Dann muß eben der Erste, lt. Fehler- Ausgabe (diese 4 LED's) anliegende Fehler erst behoben werden => danach wird erst der 2. anliegende Fehler angezeigt.

Nach meiner Erfahrung können Maschinenbediener nix mit blinkenden oder leuchtenden Lämpchen (allerdings auch nix mit Klartext- Fehlermeldungen) anfangen. Rote LED's reichen, um das Wartungspersonal zu rufen. Dieses sollte aber wenigstens einen Tipp bekommen, wo der Fehler zu suchen ist.

Funktioniert so ein "Fehlerspeicher" über ein Schieberegister ?
Oder gibt es in s7 sowas Ähnliches wie Arrays (z.B. in C++) auf die man Pointer setzen kann ?
 
Kann ich das EW mit CMP <> 0 (od. 0000000000000000) vergleichen, um festzustellen, ob ein Fehler anliegt ?
Ja, CMP <>I wäre da angesagt z.B.:
Code:
L EW0
L 0
<>I
S M 1.0
Wie kann ich einen anliegenden Fehler (ich halte es für relativ unwahrscheinlich, daß mehr als ein Fehler innerhalb einer Zykluszeit anliegt) bis zu seinem Nichtmehr- Vorhandensein auf ein MW zwischenspeichern und, auch wenn dannach (z.B. im nächsten Zyklus) noch andere Fehler auftreten, ausgeben? Die Fehleranzeige auf die 4 LED's stelle ich mir binär codiert vor. Es darf nur ein Fehler angezeigt werden, auch wenn mehrere Fehler anliegen. Dann muß eben der Erste, lt. Fehler- Ausgabe (diese 4 LED's) anliegende Fehler erst behoben werden => danach wird erst der 2. anliegende Fehler angezeigt.

Funktioniert so ein "Fehlerspeicher" über ein Schieberegister ?
IMHO gibt's mindestens 2 Möglichkeiten, bei mehreren anstehenden Fehlern nur einen (nach dem anderen) anzuzeigen:
  • Der höchstwertige/niederwertigste anstehende Fehler wird angezeigt
  • Der zuerst (FIFO) / zuletzt (LIFO) aufgetretene Fehler wird angezeigt
Insbesondere, wenn jeder Fehler quittiertpflichtig sein soll, wäre IMHO ein Schieberegister das Mittel der Wahl. Einfach mal im Forum nach Schieberegister, FIFO und/oder LIFO suchen.

Oder gibt es in s7 sowas Ähnliches wie Arrays (z.B. in C++) auf die man Pointer setzen kann ?
Ja, es gibt die Möglichkleit mit Array zu arbeiten und eine Referenzierung mittels Pointer sollte auch möglich sein. Zu diesem Kapitel bitte ich jedoch diejenigen, die sich - im Gegensatz zu mir - damit auskennen, ne Hilfestellung zu geben.
 
Guten Morgen,
Mir hätte es weitergeholfen, wenn Du mir einen weiteren Fehler im Umgang mit dem Konverter hättest aufzeigen können.

Was der Kollege auf seine uncharmante Art Dir mitteilen wollte: Das Problem ist nicht der fehlerhafte Umgang mit dem Konverter sondern hier mangelnde Kenntnis von Step7.
Öffne die Datei *.AWL im Bausteineditor von Step7 und wähle dann den Menupunkt /Datei/Übersetzen (alternativ glaub ich Ctrl+B) und laß Dich überraschen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
s5 -> s7

Hallo mega_ohm,

mein Angebot steht noch. Schick einfach mal das S5-Programm per Mail (siehe HP). Ich schau mal und geb dir Bescheid. Werd es auch gleich per Mal schicken - will mir ja die Quote mit den Werbesendungen hier nicht versauen.

MfG
André Räppel
 
Code:
 Mir schwebt für's Erste Folgendes vor:
 Ich nehme ein EW.
 Der prinzipielle Aufbau: (als Beispiel)
 => EW 0 (= Fehler-WORD für max. 15 Fehlerzustände)
geht, vom Prinzip. Damit legst Du Dich aber definitiv auf eine feste Struktur der Beschaltung der Eingangskarten fest.
Vorschlag: Die Fehlereingaenge werden auf Datenwoerter eines "Fehlerdatenbausteins" z.B. DB111 gelegt. Der (z.B.) DB112 ist genau so gross wie der DB111. Vorteil: Die Fehler werden so geordnet, dass ein Datenwort oder -byte einer Fehlerlampe (Motor 1 gestoert) entspricht. Eine zweite Fehlerlampe gibt die Art des Fehlers an, z.B. Bit 0 = Motorschutz.
Fehler = 1
Eingangsvariable Start = INT
Eingangsvariable Lenght = INT
Eingangsvariable koennen auch Zahlen sein...
Temporaere Variable temp = INT
U #RESET Dein Resettaster oder "Fehlerweiterschalt-Taster"
S M100.0 ....ist nur een Vorschlag...

L #Start
SLW 3
LAR1
L #Lenght
loop: T #temp
AUF DB 112
L DBW [AR1,P#0.0] oder L DBB [AR1,P#0.0]
AUF DB111
L DBW [AR1,P#0.0] oder L DBB [AR1,P#0.0]
== I
spb Nbit //kein Fehler -> next bit
> i
spb Fehl //naechster Fehler
//Backup gleich machen, da Fehler "gegangen" ist
AUF DB112
T DBW [AR1,P#0.0]
spa Nbit //.. und naechster Patient....
Fehl: T AW 60 //sind Deine Fehler-Art-Lampen
L #temp
ITB //fuer Deine 7-Segmentanzeige
T AW 62
UN M100.0 //...unsere "Weiterschaltng"
BEB //kein Reset -> machen wir schluss
R M100.0
AUF DB 111
L DBW [AR1,P#0.0] oder L DBB [AR1,P#0.0]
AUF DB112
T DBW [AR1,P#0.0] oder T DBB [AR1,P#0.0]
Nbit: TAR1 //Loop vorbereiten
L P#2.0 oder L P#1.0
+D
LAR1
L #temp
LOOP loop //...und loopen



So, ich habe das mal so ohne zu testen mal hingeschrieben. Sind bestimmt jede Menge Fehler drinn. Aber der Sinn ist das Entscheidende. Prinzip: Jeder Fehler wird angezeigt mit 7-Segmentanzeige und 8 oder ... bis max. 16, oder was weiss ich mit wieviel LEDs. Die LED symbolisieren die Fehlerart. Die Siebensegmentanzeigen den Ort, Aggregat oder Maschinenteil.

mfg

Hubert

Falls Du mir mal das S5-Programm mailen willst:
HubertSchoenherr@mail.RU
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Morgen,

Was der Kollege auf seine uncharmante Art Dir mitteilen wollte: Das Problem ist nicht der fehlerhafte Umgang mit dem Konverter sondern hier mangelnde Kenntnis von Step7.
Öffne die Datei *.AWL im Bausteineditor von Step7 und wähle dann den Menupunkt /Datei/Übersetzen (alternativ glaub ich Ctrl+B) und laß Dich überraschen.

Ja, genau dazu wollte ich ihn bewegen....
Hätte nie gedacht, das jemand versucht, den Quellcode in einen AWL Baustein zu kopieren...

:sm2:


Man lernt halt immer noch dazu ....
 
Ja, genau dazu wollte ich ihn bewegen....
Hätte nie gedacht, das jemand versucht, den Quellcode in einen AWL Baustein zu kopieren...

:sm2:


Man lernt halt immer noch dazu ....

Ich habe die Quelle (vorher konvertiert) geöffnet und hatte festgestellt, daß nix brauchbares dabei ist. DieProblematik hatte ich weiter oben schon beschrieben. Nun habe ich die Quelle "übersetzen" lassen und das Ergebnis war fast identisch. Zwar waren die FC's, die in s5 FB's waren, jetzt ohne Nacharbeit übersetzt, aber die PB's sind nach wie vor nicht da, weil sie nicht mitkonvertiert wurden.
Sie wurden im Konverter angezeigt und dann nach der Konvertierung als "nicht vorhanden" deklariert.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Erst einmal vielen Dank an alle.

Ich habe nächste Woche Nachtschicht und finde da vielleicht mal etwas mehr Zeit, mich in die Tipps von JörgK und Hubbl-e reinzudenken.
Leider kann ich noch nix testen, weil sich der Schaltschrank noch im Baustadium befindet und ich eine CPU (ich dachte an eine S7-314) und die DI und DO erst noch bestellen muß. Deswegen kann ich mich aber mit dem FIFO bzw. DB111 mal näher befassen.
 
Hallo mega_ohm,

hab ja geschrieben du kannst das Programm mal zumailen.

MfG
André Räppel

Ich hatte schon weiter oben geschrieben, daß ich nur DIESES eine Progi nutzen, im weitesten Sinne anpassen darf (zuzüglich der Projektierungsunterlagen [E-Pläne, Leitungs-/ Kabelpläne...]).
Zudem vermerkte ich, daß ich die Erlaubnis für dieses Projekt von der Maschinenbau- Firma erhielt, weil z.B. der Ursprung der Programmierung mehr als 10 Jahre zurück liegt.

Ich möchte mich nicht auch noch mit "Urheberrecht" etc. behängen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Mich hat es immer begeistert, Maschinen zu programmieren.
Dafür habe ich Assembler, C++, Pascal, VB gelernt.
Autodidaktisch habe ich eben aus diesem Grund in s5 bzw. s7 "staubgewischt".

Darf ich mal fragen, ob es Buchempfehlungen oder Links gibt ?

Ich kann s7-AWL lesen und verstehen, programmiere aber lieber in FUP.
Ich habe bisher ca. 20 Projekte in s7 bzw. MicroWin (2 Projekte) erfolgreich programmiert.
Ich hatte vor ca. 12 Jahren eine 1-monatige Ausbildung in ABB-SPS.

Ich hatte schon angefragt, wie eine 'einigermaßen' nachvollziehbare Fehlermeldung nur mit LED's realisierbar ist. Wichtig ist, daß nur 1 Fehler angezeigt wird, auch wenn mehrere Fehler gleichzeitig anliegen (z.b: bei der Inbetriebnahme werden die einzelnen MSB nacheinander zugeschaltet).
 
Guten Morgen, (oder wie man hier sagt: dobri ranok) mega_ohm,
Ich möchte mich nicht auch noch mit "Urheberrecht" etc. behängen.
du bedeckst Dich mit Urheberrechten mehr als noetig. SPS-Programme unterliegen grundsaetzlich nicht eines Urheberrechtes. Sie sind zustaendig eine urheberrechtlich geschuetzte Maschine zu steuern. Sie unterliegen waehrend der Garantie- Gewaehrleistungszeit eines Urheberrechtes.
Du moechtest die Maschine modernisieren. Somit musst Du auch das Programm modernisieren. Das alte Programm verliert somit sogar die "Daseinsberechtigung".
Liebe Leser, kotzt Euch jetzt bitte nicht ueber das Schuetzen und "einmaligsein" von Programmen aus. Ich moechte hier sagen, dass wir bei allem Know How nur vorgedachte mechanische Prozesse steuern/regeln oder/und vorgedachte technologische/technische Prozesse sinnbildlich darstellen.
Also mega_ohm, frag, falls Du unsicher bist, nochmal nach und schicke uns das Programm. Wir wollen und koennen da nichts kopieren. Zum Einen fehlt uns die Maschine dazu und zum Anderen ist hier ein rein technisches Forum.

Nu mega_ohm sehas tui idiosh saftrakatch i potom mui goworim dalhe.
Uebersetzt: Nun mega_ohm jetzt geh fruehstuecken und dann reden wir weiter.
 
Ich hatte schon angefragt, wie eine 'einigermaßen' nachvollziehbare Fehlermeldung nur mit LED's realisierbar ist. Wichtig ist, daß nur 1 Fehler angezeigt wird, auch wenn mehrere Fehler gleichzeitig anliegen (z.b: bei der Inbetriebnahme werden die einzelnen MSB nacheinander zugeschaltet).

Falls es noch von Interesse ist, anbei eine mögliche, mit PLCSim getestete, Lösung.

Mir ist klar, dass es sicherlich auch eleganter (Schleife & Pointer) geht, nur ist die Pointer-Geschichte für mich (noch) etwas zu hoch. Dazu kommt meine Intension, dass der durchschnittliche Betriebselektriker ein Programm auch noch verstehen bzw. nachvollziehen können muss ... und die meisten können wohl mit ner Pointer-adressierten Sache nichts anfangen. (Bitte fangt jetzt nicht wieder ne Diskussion zu diesem Thema an ;) )
 

Anhänge

  • Test998.zip
    207,5 KB · Aufrufe: 20
Zuviel Werbung?
-> Hier kostenlos registrieren
Falls es noch von Interesse ist, anbei eine mögliche, mit PLCSim getestete, Lösung.

Mir ist klar, dass es sicherlich auch eleganter (Schleife & Pointer) geht, nur ist die Pointer-Geschichte für mich (noch) etwas zu hoch. Dazu kommt meine Intension, dass der durchschnittliche Betriebselektriker ein Programm auch noch verstehen bzw. nachvollziehen können muss ... und die meisten können wohl mit ner Pointer-adressierten Sache nichts anfangen. (Bitte fangt jetzt nicht wieder ne Diskussion zu diesem Thema an ;) )

Die gesamte Problematik, von der Überschrift des Strangthemas bis zur Frage nach einer Fehlerausgabe, ist für mich von Interesse.

- Die Konvertierung habe ich gelöst, weiß jetzt wie es ungefähr geht, habe
alle FB's und PB's in s7- FC's konvertiert bekommen. Da aber in der
Symboltabelle ganz viele Merker nicht beschrieben sind und der Aufwand
für die Suche nach dem Sinn dieser Merker hochgradig aufwendig ist -
schreibe ich das Programm nun doch komplett neu. Einige Lösungen (wie
verschiedene "Hydraulikzylinder nachspannen") kann ich mir ja immer
noch ganz genau im s5- Progri anschauen.

- Für mich ist es unbedingt wichtig, daß ich Deinen Lösungsvorschlag auch verstehe. Würde ich die Lösung nur abtippseln, stehe ich ja bei einem ähnlich gelagerten Problem ja wieder da und weiß nix. Ich schaue mir Deine Lösung heute abend sofort an. (habe zu Hause kein s7)

Ich habe mal noch eine Frage:
Ich muß mit meiner Steuerung Antriebe in einem anderen (uralt)- Schaltschrank, der jetzt in Betrieb ist und auch nicht geändert werden soll, mitstarten und abschalten. Dort befinden sich klassische Schütz-/ Hilfsrelaissteuerungen.
Die Koppelrelais für das Starten sind kein Ding. Reicht aber ein Koppelrelais aus, um die Antriebe zu stoppen oder sollte man redundant ausschalten, in dem man z.B. einmal die Steuerung und zusätzlich noch ein Hauptschütz im Leistungsstromkreis schaltet ? Das soll KEINE Hobbylösung für ein
NOT-AUS werden, obwohl es Diesen im alten Schaltschrank nicht gibt.
 
Mir ist klar, dass es sicherlich auch eleganter (Schleife & Pointer) geht, nur ist die Pointer-Geschichte für mich (noch) etwas zu hoch.
Da mich das mit den Pointern nu doch gereizt hat, hab ich mich mal aufgerafft, mich des Beitrags von plc-tippser befleissigt und was soll ich sagen, dem Grundsatz nach schein ich's verstanden zu haben. :sm2:

Anbei also nu ne Variante mit Schleife und Pointer. Sachliche Kritik zur einer besseren Struktur ist natürlich willkommen. ;)
 

Anhänge

  • 998_2.zip
    31,6 KB · Aufrufe: 9
Hallo Ihr Alle,
Hallo mega_ohm,

auch ich habe gestern etwas Zeit gehabt und habe meinen Vorschlag fuer Dich ein bisschen aufgearbeitet.
Schau Dir das mal an::???:
Mit dem E60.0 schaltest Du die Fehler der Reihe nach im Einzelnen durch. Wenn keine Fehler mehr kommen -> keine weitere Anzeige. Mit dem E60.1 kannst Du Alles noch einmal machen.
 

Anhänge

  • Test998.zip
    356,3 KB · Aufrufe: 7
Zurück
Oben