Step 7 Frage zum Fremdprogramm und zur allgemeinen Projekt-Doku

RoBop

Level-2
Beiträge
130
Reaktionspunkte
10
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe ein bestehendes Projekt vom Kunden übernommen und bin dabei, es "aufzuräumen".
Laut Kunden kann schon immer einiges nicht funktioniert.

Es ist in AWL, was kein großes Problem darstellt, jedoch bin ich über einige Sachen gestolpert.
Wie es halt immer so ist, werden grundsätzlich einige Bausteine nirgendwo aufgerufen und zudem ist das Programm sehr schlecht dokumentiert.
Symbole von E/As, Merker sind teilweise nicht vorhanden oder komplett falsch zugewiesen.
Zudem wurden keine "Antriebsbausteine" verwendet und Fehlermeldungen der jeweiligen Antriebe im Programm erst gar nicht berücksichtigt.

Ich habe hier z.B. einen FC ohne Bausteinvariablen.
Im FC werden PEW´s eingelesen und in DB´s geschrieben.

Dieser FC wird 2 Mal aufgerufen. Einmal im OB35 (100ms eingestellt) und im Neustart OB 100.

--> Die erste Frage, hat das einen Sinn?

Zudem habe ich ein kleines Veständnisproblem was das Laden von lokalen Variablen betrifft. LD habe ich bisher noch nie benutzt.

Beispiel in diesem FC:

L PEW190
T LD 0
L LD 0
DTR
L 10.0
*R
T DB1.DBD0


L PEW192
T LD 0
L LD 0
DTR
L 10.0
*R
T DB1.DBD4

--> Das Verstehe ich nicht so ganz. Worin liegt der Vorteil von "LD"? Man könnte sich das doch auch sparen? Zudem, greift man da nicht auf die Variablen des FC´s? Es sind aber keine angelegt?

Ich habe das Projekt nur "offline" da und kann auf der SPS nicht mal schnell schauen, ob das Programm funktioniert.

Was mich auch die ganze Zeit schon interessiert, gibt es eine "unbekannte" Software, um gespeicherte Projekte zu verwalten?

Wenn z.B. mehrere Kollegen gleichzeitig an einem Projekt arbeiten. Das Projekt besteht aus dem CPU-Programm und einem Touchpanel.
Kollege 1 schreibt gerade das Programm und Kollege 2 das Touchpanel. Am Ende vom Tag müssen beide Projekte wieder verheiratet werden.
Vielleicht gibt es eine Software, die z.B. über den Zeitstempel der Projektabschnitte ein projekt zaubert.

Ich speicher das Projekt bei Änderung neu ab. Der Dateiname sieht so aus: "Projekt_Step7-Version_Kürzel-Mitarbeiter_Datum-rückwärts" also z.B. "MusterstadtWV_S7V55_DM_160930".
Zudem werden änderungen in den Netzwerkkommentaren dokumentiert und zusätzlich gibt es eine Textdatei mit genauen Infos - von wem, wann, warum und was geändert wurde.

Wie sichert ihr eure Projekte?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das wird wohl in LD geladen um wirklich 32Bit vollzumachen. Aber soweit ich weiss war das schon immer so das ein Ladebefehl auch eines Wortes oder Bytes die 32Bit des Akkus überschrieben hat. Danach mit DTR gewandelt. Also ist LD lesen beschreiben eigentlich nicht nötig.

Könnte ein überbleibsel eines FUP oder SCL Bausteines sein.

mfG René
 
Wenn das ein AG-Abzug ist, könnte LD 0 ursprünglich ein Symbol wie "HM_DINT" vom Typ DINT gehabt haben. Muss man nicht so machen, wenn du so etwas in FUP programmierst dann ist dieser Zwischenschritt beispielsweise notwendig. Das war aber kein FUP, dann wären ein paar mehr Sprünge vorhanden.
Es stört auf alle Fälle nicht. Gelegentlich füge ich selber auch solche expliziten Zwischenschritte ein, um das Programm einfacher nachvollziehbar zu gestalten.

Das mit dem Aufruf im OB100 könnte insofern Sinn ergeben, dass nach einem Neuanlauf im ersten OB1 Zyklus gültige Messwerte vorliegen, wenn das Einlesen später nur noch im OB35 geschieht. Ich weiß jetzt nicht wann nach dem Neuanlauf das erste mal der OB35 angetriggert wird, wenn z.B. erst nachdem das Intervall nach einem Neuanlauf abgelaufen ist, hättest du ansonsten die ersten paar OB1 Zyklen keinen gültigen Messwert, bzw. den vor dem letzten SPS-Stopp, wenn die Daten remanent abgelegt sind.
 
Ich habe ein bestehendes Projekt vom Kunden übernommen und bin dabei, es "aufzuräumen".
Laut Kunden kann schon immer einiges nicht funktioniert.

Es ist in AWL, was kein großes Problem darstellt, jedoch bin ich über einige Sachen gestolpert.
Wie es halt immer so ist, werden grundsätzlich einige Bausteine nirgendwo aufgerufen und zudem ist das Programm sehr schlecht dokumentiert.
Symbole von E/As, Merker sind teilweise nicht vorhanden oder komplett falsch zugewiesen.
Zudem wurden keine "Antriebsbausteine" verwendet und Fehlermeldungen der jeweiligen Antriebe im Programm erst gar nicht berücksichtigt.

Ich habe hier z.B. einen FC ohne Bausteinvariablen.
Im FC werden PEW´s eingelesen und in DB´s geschrieben.

Dieser FC wird 2 Mal aufgerufen. Einmal im OB35 (100ms eingestellt) und im Neustart OB 100.

--> Die erste Frage, hat das einen Sinn?



Was mich auch die ganze Zeit schon interessiert, gibt es eine "unbekannte" Software, um gespeicherte Projekte zu verwalten?

Wenn z.B. mehrere Kollegen gleichzeitig an einem Projekt arbeiten. Das Projekt besteht aus dem CPU-Programm und einem Touchpanel.
Kollege 1 schreibt gerade das Programm und Kollege 2 das Touchpanel. Am Ende vom Tag müssen beide Projekte wieder verheiratet werden.
Vielleicht gibt es eine Software, die z.B. über den Zeitstempel der Projektabschnitte ein projekt zaubert.

Ich speicher das Projekt bei Änderung neu ab. Der Dateiname sieht so aus: "Projekt_Step7-Version_Kürzel-Mitarbeiter_Datum-rückwärts" also z.B. "MusterstadtWV_S7V55_DM_160930".
Zudem werden änderungen in den Netzwerkkommentaren dokumentiert und zusätzlich gibt es eine Textdatei mit genauen Infos - von wem, wann, warum und was geändert wurde.

Wie sichert ihr eure Projekte?

Das ist natürlich beschissen, aber das kommt durchaus öfter vor. Ich hatte in den letzten Jahren sehr oft mit Projekten zu tun die AG Abzüge waren.

Zum FC:
Wenn er auf PEW zugreift, liest er damit die Signale von einem an die SPS angeschlossenen Gerät ein. Man kann bei einer SPS den Ein- und Ausgangsbereich einstellen den man mit EX.X und AY.Y ansprechen kann. Der ist "normalerweise" kleiner eingestellt wie die SPS könnte. Um auf den restlichen Bereich zugreifen zu können muss man mit PEW arbeiten. Im OB 100 werden die Daten einmal bei Neustart ausgelesen und ansonsten alle 100ms, anstatt jeden Zyklus.

Der Sinn dahinter erschließt sich mir ohne Kontext auch nicht. Aber unter Umständen hat das schon einen Sinn wenn z.B. das Gerät die Daten einfach nicht schneller zur Verfügung stellt.
50 mal die gleichen Daten in einen DB schreiben kostet jedes mal Zykluszeit, wenn ich die Daten aber eh nicht schneller erhalte, macht das vielleicht schon Sinn die Daten nur einmal alle 100ms einzulesen.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich bedanke mich für die Antworten.
Klingt schon alles plausibel :ROFLMAO:

Jedoch weiß ich nicht, warum der Messwert beim Neustart und alle 100ms eingelesen wird.
Die SPS ist eigentlich dazu da, mehrere Durchflüsse zu regeln, abhängig von einer Temperaturmessung.
Temperaturen und Dürchflüsse ändern sich recht träge. Der MID selbst ändert seinen Messwert jede Sekunde und Temperatur ist ohnehin schon sehr träge.

Ich selbst rufe immer den Standard-Regelbaustein und alle solchen trägen Messungen immer im OB35 (eingestellt 1000ms) auf.

Sehr interessant ist allerdings, dass in der Runtime zwar "Regelparameter" vorhanden sind, die Einstellungen in der SPS sogar in einen DB geschrieben werden, aber die Regelbausteine (bestehen aus mehren Bausteinen der "Modular PID Control"-Reihe von Siemens) nirgendwo aufgerufen werden. Sie sind zwar alle in einem FC aufgerufen und parametriert, aber der FC wird nirgendwo aufgerufen.
Aus alten Archiven hat sich auch ergeben, dass sich das PAW auch nie geändert hat, obwohl der Betreiber den Sollwert oft geändert hat. Sprich - die Regelung hat noch nie funktioniert.
Ich musste mindestens 10 Mal das Programm lesen, um das zu glauben. Ich weiß auch nicht, warum der Programmierer einen solch komplizierten Baustein mit den "Modular PID Control" für eine Durchflussregelung geschrieben hat.
Für solche einfachen Regelungen reichen doch CONT-C - CONT-S völling aus. (Abhängig ob Regelschieber oder Pumpe).

Das ist schon alles recht verwirrend...
 
Zurück
Oben