Vermeiden von Globaldaten

Zuviel Werbung?
-> Hier kostenlos registrieren
Pauschal? Vielleicht solltest du noch einmal genauer lesen.
Es wurden einige Hinweise gegeben, warum es Mist ist eine IDB zu vergewaltigen.

Aber jeder soll das machen was er oder sie für richtig hält.
Diese Hinweise konnte ich glaub ich größtenteils auch widerlegen.
Ich muss ja gestehen dass ich in 90% meiner Anlagen auch Global-DBs für die Visu habe. Aber ich bin der Meinung dass man durchaus ein konsistentes System aufsetzen kann bei dem die Visu auf Instanz-DBs (zumindest bei Standard-Bausteinen) zugreift. Wichtig ist für mich dass es schlüssig ist. Und ich denke mir, wenn die Vorteile die Nachteile überwiegen, warum nicht?
 
Unser Programmierrichtlinie beginnt mit dem Satz:

Jedes Programm, das die Aufgabe erfüllt für das erstellt wurde, ist ein gutes Prgramm.


bike
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich bestimmt nicht.
Doch wir haben jedes Jahr mehrere Studis, die ihre Master- oder Diplomarbeit bei uns machen und diese Diskussion kommt bei fast jedem neu auf.
Deine Ansicht hat aber leider mit PLC Programmierung nicht so echt viel zu tun, denn C, mit den entsprechenden Zusatzzeichen, ist ein völlig andere Welt.

bike

Ich für mich auch nicht. Aber stehen bleiben will ich auch nicht. Seinen eigenen Standard in regelmäßigen Abständen zu überprüfen ob er noch allen Anforderungen gerecht wird halte ich jetzt nicht für besonders ungewöhnlich.
Keine Sorge ich bin schon länger kein Studi mehr.
 
Ich verstehe nicht was an meiner Art Schnittstelle nicht vernünftig ist ?
Sie ist eindeutig, strukturiert und einfach zu beobachten.
Im Gegensatz zu einem Global-DB der viele Antriebe enthält und wohl möglich auch noch verschiedene, die dann auch noch alle zu 50% aus Reserve bestehen.

Ist die Idee von vollständiger Kapselung so exotisch ?


Hallo,
da ich ja schon aus dem zusammenhang heraus zitiert wurde ... hier nun mein Statement dazu :
Die von dir genannte Vorgehensweise ist für die meißten SPS-Programmierer mehr als exotisch. Auf solche Ideen kommt man nur, wenn man sich mit OOP oder Dot-Net beschäftigt / beschäftigt hat.
Natürlich ist in SPS-Programmen jede Form von Strukturierung verpöhnt und nicht erwünscht. Ein Programm ist dann wirklich gut, wenn die Variablen davon überall verstreut sind ... 8)

Nein ... im Ernst.
Das von dir genannte Verfahren wird von mir (und meinen Kollegen) in ähnlicher Weise praktiziert.
Eine Station hat auf den Schnittstelle ihre E/A' und den koppelbereich, den sie nun mal nach "Aussen" braucht. Alles andere hat sie in der Instanz. Dazu gehören z.B. Parameter, Istwerte, Hand-Steuerbits, Fehler-Meldungen.
Ich muss hier aber auch sagen, dass sich diese Vorgehensweise bei uns aufgrund unserer Anlagen geradezu anbietet - Es sind Rundschalttische mit einzelnen Bearbeitungsstationen. Jede dieser Stationen hat mit einer Anderen i.d.R. gar nichts zu tun. Die einzige Kopplung, die es hier gibt ist die Befehls-Melde-Ebene zum ansteuernden Tisch und der Schiebespeicher, der den Abarbeitungs-Status und ggf. auch die Messwerte der Bauteile verwaltet.

Selbstverständlich habe ich die von mir (für mich !!!) aufgestellten Reglen auch schon das eine oder andere Mal ein wenig aufgeweicht - keine Regel ohne Ausnahme. Ist aber deswegen der Ansatz falsch ?
Ein Querzugriff auf die Instanz (außer von der Visu, die das bei mir aus mehreren Gründen ausdrücklich darf) ist bei uns kein Thema - außer der einzige Daseinszweck dieser Instanz ist es, genau dafür da zu sein.
Das ist dann aber halt meine Philosophie und soll ausdrücklich nicht irgendwem als Leitfaden (und ganz sicher nicht Thomas_V2.1) dienen. Jeder nach seiner Fasson.

Aus jeden Fall - als Fazit :
Ich finde die Idee grundsätzlich gut, wie du es vorhast. An den Details kann man immer noch feilen ...

Gruß
Larry
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Die von dir genannte Vorgehensweise ist für die meißten SPS-Programmierer mehr als exotisch. Auf solche Ideen kommt man nur, wenn man sich mit OOP oder Dot-Net beschäftigt / beschäftigt hat.

Gruß
Larry

Ja genau ich beschäftige mich auch viel mit OOP und probiere den Denkansatz auf S7 zu Übertragen.
Da er meiner Meinung nach viele Vorteile bringt, besonders was es Modularität, Struktur, und Umfang des Programms angeht.

Auch für unsere Maschinen bietet sich dieses Konzept an da ich bei einem Anlagenbauer arbeite dessen Verfahrenstechnik modular aufgebaut ist.

Die Idee ist momentan noch in der Planungsphase und ich beschäftige mich eher mit der Umsetzbarkeit. Insbesondere mit dem Thema was lässt S7 zu und was nicht.
Das S7 zulässt Strukturen im STAT Bereich eines IDB anzulegen und ich diese über eine Strukturvariable aus WinCC oder WinCC Flex ansprechen kann halte ich
  1. für einen Vorteil von S7
  2. gehe ich davon aus das die Siemens leute diese Möglichkeit bewusst zulassen.
Das ich von der Visu aus auf den STAT Bereich des IDB zugreifen will halte ich auch nicht für eine Verletzung der Instanz. Es handelt sich hier bei lediglich um eine weitere Schnittstelle für nicht physikalisch vorhandene Variablen. Die Faceplate ist bei meinem Model ein fester Bestandteil des FB bzw. der Instanz.
 
Ja genau ich beschäftige mich auch viel mit OOP und probiere den Denkansatz auf S7 zu Übertragen.
Da er meiner Meinung nach viele Vorteile bringt, besonders was es Modularität, Struktur, und Umfang des Programms angeht.

Auch für unsere Maschinen bietet sich dieses Konzept an da ich bei einem Anlagenbauer arbeite dessen Verfahrenstechnik modular aufgebaut ist.

Die Idee ist momentan noch in der Planungsphase und ich beschäftige mich eher mit der Umsetzbarkeit. Insbesondere mit dem Thema was lässt S7 zu und was nicht.
Das S7 zulässt Strukturen im STAT Bereich eines IDB anzulegen und ich diese über eine Strukturvariable aus WinCC oder WinCC Flex ansprechen kann halte ich
  1. für einen Vorteil von S7
  2. gehe ich davon aus das die Siemens leute diese Möglichkeit bewusst zulassen.
Das ich von der Visu aus auf den STAT Bereich des IDB zugreifen will halte ich auch nicht für eine Verletzung der Instanz. Es handelt sich hier bei lediglich um eine weitere Schnittstelle für nicht physikalisch vorhandene Variablen. Die Faceplate ist bei meinem Model ein fester Bestandteil des FB bzw. der Instanz.

Etwas kopfschüttelnd sitze ich schon da.
Ich glaube, dabei wird unwartbarer Code entstehen, der das Unternehmen in große Schwierigkeiten bringen wird, wenn du einmal nicht mehr verfügbar bist (warum auch immer), weil nur ein Insider, der das mit aufgebaut hat, überhaupt noch durchblickt. Dein Programm mag dann fein und schick aussehen, aber kleinste Änderungen werden dann zum großen Problem, man ändert an der Stucktur und weder WinCC noch das Step7-Programm arbeiten noch, wie man das vernutet hätte. Mir sind bisher zwei solche Maschinen untergekommen, Hersteller Pleite, Programmierer weg, Kunde am A... Da half nur neu programmieren, da auch noch die Quellen unvollständig waren. Wer so etwas einmal miterleben durfte, der programmiert lieber wieder etwas mehr bodenständig und in möglichst einfacher verständlicher Weise.

Ach so, aus mehrfacher tragischer Erfahrung, kann ich nur eins sagen: "Informatiker, Hände weg von einer SPS!"

PS: Ausnahmen bestätigen natürlich die Regel. :p
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja genau ich beschäftige mich auch viel mit OOP und probiere den Denkansatz auf S7 zu Übertragen.
Da er meiner Meinung nach viele Vorteile bringt, besonders was es Modularität, Struktur, und Umfang des Programms angeht.

Auch für unsere Maschinen bietet sich dieses Konzept an da ich bei einem Anlagenbauer arbeite dessen Verfahrenstechnik modular aufgebaut ist.

Die Idee ist momentan noch in der Planungsphase und ich beschäftige mich eher mit der Umsetzbarkeit. Insbesondere mit dem Thema was lässt S7 zu und was nicht.
Das S7 zulässt Strukturen im STAT Bereich eines IDB anzulegen und ich diese über eine Strukturvariable aus WinCC oder WinCC Flex ansprechen kann halte ich
  1. für einen Vorteil von S7
  2. gehe ich davon aus das die Siemens leute diese Möglichkeit bewusst zulassen.
Das ich von der Visu aus auf den STAT Bereich des IDB zugreifen will halte ich auch nicht für eine Verletzung der Instanz. Es handelt sich hier bei lediglich um eine weitere Schnittstelle für nicht physikalisch vorhandene Variablen. Die Faceplate ist bei meinem Model ein fester Bestandteil des FB bzw. der Instanz.

Gerade bei den Strukturvariablen in WinCCflexible (zu WinCC kann ich magels Erfahrung keine Aussage treffen) gibts das Problem dass man diese nur Absolut angeben kann. Und wer will sich heute noch mit absoluten Adressen ärgern, vor allem wenn man keine Reserve in den DB´s haben will?
 
Hallo miasma,

ich kann Dir bestätigen, dass ich seit Jahren so arbeite, wie Du arbeiten möchtest. Und nicht viel Bestätigung dafür aus dem Forum erhalten habe.

Es gibt eine Sache, die bei TIA (soweit ich mich an den kurzen Zeitraum richtig zurückerinnere, als ich es nutzen durfte) lästig ist: das CTRL-SHIFT-F und ...B funktioniert dort (noch?) nicht.

Was bei TIA gut ist: die Querverweise funktionieren rundrum vorwärts und rückwärts von Visu zu SPS und eben zurück, also dieser "Pfusch der Visu in den Lokaldaten" kann man als Pfusch sehen oder auch nicht.

...tja, dann gibs noch bei TIA das Thema optimierte Datenablage. Ich konnte mit diesem Feature noch nicht experimentieren, da ich mit TIA leider nur Classic-CPUs bearbeitet habe. Ich vermute jedoch, dass diese neue Datenstrukturierung viele der Classic-Probleme lösen wird.
 
Hallo miasma,

...tja, dann gibs noch bei TIA das Thema optimierte Datenablage. Ich konnte mit diesem Feature noch nicht experimentieren, da ich mit TIA leider nur Classic-CPUs bearbeitet habe. Ich vermute jedoch, dass diese neue Datenstrukturierung viele der Classic-Probleme lösen wird.

Du meinst vermutlich die Funktion das Datenbausteine nur noch Symbolisch Adressierbar sind ?
Das wäre eine feine Sache und würde auch gleichzeitig bedeuten das Siemens die Möglichkeiten seines Systems ausbaut.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du meinst vermutlich die Funktion das Datenbausteine nur noch Symbolisch Adressierbar sind ?
Das wäre eine feine Sache und würde auch gleichzeitig bedeuten das Siemens die Möglichkeiten seines Systems ausbaut.

Jein, in erster Linie bedeutet das, das ein Datenpunkt keine bekannte Adresse mehr hat, also du auch mit SFC20 nichts mehr sichern kannst,
wie du mir das oben ja so schön (umständlich) beschrieben hast.

P.S.
@Ralle, es scheint, das wir uns mal auf eine Hopfenkaltschale treffen sollten, offensichtlich haben wir beide ein Talent, immer Negativ-Beispiele zu erwischen ...

Mfg
Manuel
 
Zuletzt bearbeitet:
Jein, in erster Linie bedeutet das, das ein Datenpunkt keine bekannte Adresse mehr hat, also du auch mit SFC20 nichts mehr sichern kannst,
wie du mir das oben ja so schön (umständlich) beschrieben hast.

Bei gleich bleibenden Symbolen ja auch unnötig. Da alle Adressen dann immer eindeutig (der String ändert sich ja nicht) sind kann ich alle in eine Liste schreiben.
Von dort aus kann ich sie einzeln und gruppenweise (ihre Strukturzugehörigkeit lässt sich aus dem String auslesen) wieder herstellen.
 
Bei gleich bleibenden Symbolen ja auch unnötig. Da alle Adressen dann immer eindeutig (der String ändert sich ja nicht) sind kann ich alle in eine Liste schreiben.
Von dort aus kann ich sie einzeln und gruppenweise (ihre Strukturzugehörigkeit lässt sich aus dem String auslesen) wieder herstellen.

Klar, und das machst du wenn 10 Leute hinter dir stehen, um 3 Uhr Nachts weils mal wieder pressiert, sprich die Kiste steht, und du eigentlich nur schnell ne Kleinigkeit ändern wolltest.
Wobei sich am Grundproblem, das der DB initialisiert wird bzw. mit den Aktualwerten des Offline-Projektes überschrieben wird ja vom Verhalten her auch beim optimierten DB nichts geändert hat.

Mfg
Manuel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Klar, und das machst du wenn 10 Leute hinter dir stehen, um 3 Uhr Nachts weils mal wieder pressiert, sprich die Kiste steht, und du eigentlich nur schnell ne Kleinigkeit ändern wolltest.
Wobei sich am Grundproblem, das der DB initialisiert wird bzw. mit den Aktualwerten des Offline-Projektes überschrieben wird ja vom Verhalten her auch beim optimierten DB nichts geändert hat.

Mfg
Manuel

Dazu kann ich nichts sagen. Ich bin noch nie in die Situation gekommen, nachts um drei "mal wieder" mein Programm "nur schnell" zu ändern weil "die Kiste" nicht läuft.

Dies liegt wahrscheinlich daran das ich der Auffassung bin das nichts "schnell" gemacht werden sollte.
Außerdem bin ich jedes mal ein kleines bisschen stolz wenn ich die Baustelle verlasse und sich der Kunde freut das unsere Maschine wie am Schnürchen läuft während nebenan die "Kiste" von der Konkurrenz mal wieder steht, aus der Reihe tanzt oder gar einen Crash gefahren hat.

Deshalb betreibe ich ja den ganzen Aufwand mit der Modularität. Ich habe keine Lust in die Verlegenheit zu kommen nachts um drei mein Programm ändern zu müssen weil ich es versäumt habe meine Lösungen den stetig steigenden Anforderungen an die Steuerung und das Qualitätsbewusstsein der Kunden anzupassen.
 
Zuletzt bearbeitet:
Dazu kann ich nichts sagen. Ich bin noch nie in die Situation gekommen, nachts um drei "mal wieder" mein Programm "nur schnell" zu ändern weil "die Kiste" nicht läuft.

Dies liegt wahrscheinlich daran das ich der Auffassung bin das nichts "schnell" gemacht werden sollte.
Außerdem bin ich jedes mal ein kleines bisschen stolz wenn ich die Baustelle verlasse und sich der Kunde freut das unsere Maschine wie am Schnürchen läuft während nebenan die "Kiste" von der Konkurrenz mal wieder steht, aus der Reihe tanzt oder gar einen Crash gefahren hat.

Deshalb betreibe ich ja den ganzen Aufwand mit der Modularität. Ich habe keine Lust in die Verlegenheit zu kommen nachts um drei mein Programm ändern zu müssen weil ich es versäumt habe meine Lösungen den stetig steigenden Anforderungen an die Steuerung und das Qualitätsbewusstsein der Kunden anzupassen.

Deine Sprüche dazu passen zu Siemens, fang doch da an! :ROFLMAO:

Mal im Ernst, das Ziel haben ja wohl (fast alle) und ich behaupte mal, meine Anlagen laufen auch entsprechend gut und das komplett ohne OOP-Ansätze. Ansonsten hätte ich schon lange keine Aufträge mehr.

PS: Niemand strickt schnell eine komplette Anlage um, man sucht aber doch auch mal Fehler. Und ich will den sehen, der ohne Fehler programmiert, aber in dir haben wir ja nun zumindest einen Programmierer, der das von sich behaupten kann...
Deine Äußerungen zeugen aber zumindest von einer gewissen Arroganz anderen Kollegen oder Firmen gegenüber.
 
@Ralle:
das mit der Arroganz habe ich so in den bisherigen Beiträgen (außer bei meinem) nicht realisiert.
Die Idee des TE, da ich sie ja auch selber verfolge und die von dir erwähnten Probleme gerade wegen der Kapselung nicht kenne, finde ich aber gut, wenn sie auch gut gemacht wird / ist.
Was spricht dagegen, Dinge, die zusammen gehören, auch zusammen zu packen ?

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@Ralle:
das mit der Arroganz habe ich so in den bisherigen Beiträgen (außer bei meinem) nicht realisiert.
Die Idee des TE, da ich sie ja auch selber verfolge und die von dir erwähnten Probleme gerade wegen der Kapselung nicht kenne, finde ich aber gut, wenn sie auch gut gemacht wird / ist.
Was spricht dagegen, Dinge, die zusammen gehören, auch zusammen zu packen ?

Gruß
Larry

Ich meinte ausschließlich den zitierten #75 Thread.

Was ich problematisch finde, ist, das in den FB/FC die rel. große (alle) Datenmengen hin- und herkopiert werden, zusätzlich noch aus der HMI heraus damit gearbeitet wird und dann am Besten auch noch Querzugriffe aus anderen Bausteinen erfolgen (denn das wird dann auch noch kommen). Das kann man machen, wer das System kennt, findet sich wahrscheinlich auch zurecht, zumindest am Anfang. Wenn aber ein "nicht eingeweihter" dort irgend etwas sucht, dann wird er Schwierigkeiten haben. Außerdem ist jede kleine Änderung von einer Orgie an roten Bausteinaufrufen, neu zu erzeugenden und zu übertragenden FB/DB usw. begleitet. Das mag in der Erstellungsphase der Software noch ok sein, wenn aber vor Ort eine kleine Änderung nötig ist, anschließend aber jede Menge Bausteine übersetzt und in die SPS übertragen werden müssen und schlußendlich die HMI nicht mehr korrekt arbeitet, weil dort nicht alle Änderungen mitgelaufen sind, dann wird es wirklich interessant. Ähnliches hat man ja auch bei Graph7, jede kleine Änderung zieht einen Rattenschwanz hinter sich her, aber da ist das noch recht übersichtlich, weil wirklich komplett gekapselt.
Ist nicht so lange her, da habe ich mit einem solchen Konzept gearbeitet. Wirkliche Probleme traten erst ganz am Schluß richtig zutage, man hatte es einfach unglaublich schwer die Stelle zu finden, an der das Programm irgendein Bit schlußendlich beeinflußt hat. Wenn das so ist, dann pfeife ich auf eine schnelle und einfache Projektierungsphase und mache mir lieber da 10 Mal soviel (Hand) Arbeit mit einzeln korrekt ausprogrammierten Bausteinen, als später in dem Wust von IDB-, HIM-, FB-, Umkopierabhängikeiten nach Fehlern zu suchen. Ich bin an der Stelle tatsächlich absolut konservativ und halte die neunen Ideen nicht unbedingt immer für die besten Ideen, dafür habe ich schon zu oft im (mal gut gedachten) Mist anderer rumrühren dürfen.

PS: Ich packe natürlich auch das zusammen, was zusammengehört, aber das muß nicht alles in einen IDB, der dann von 5 Seiten aus befummelt wird.
 
@Alle,

Meine Herren,
dieses Thema ist wieder ein Typisches Beispiel wie hier in diesem Forum diskutiert wird und es ehrt uns nicht.
Fakt ist dass, die Siemens Steuerungen durchaus über ein eingebautes und vom System unterstütztes Meldeverfahren, Variablenarchivierung und Beobachtungskonzept verfügen.
Zum Beispiel: Simatic Manager->Extras->CPU Meldungen oder HW-Konfig ->Systemfehler Melden.
Da wundert man sich welche Meldungen automatisch über ALARM-S generiert werden und von Zauberhand an einem Panel erscheinen können.
Dass es Keine Tools gibt gehört auch mehr zu den Legenden die sich hartnäckig halten.
Nutzt man CFC in Kombination mit WinCC werden alle Variablen, und jetzt kommt es, aus den IDB´s angelegt. Der Begriff nennt sich AS-OS Engineering und kommt von PCS7, ist jedoch im Standard auch vorhanden.
Hierfür müssen jedoch die IN/OUT Variablen der FB’s über entsprechende Attribute gekennzeichnet werden. (FB Öffnen, Rechte Maustaste auf einen IN oder OUT Parameter, Objekteigenschaften-> Reiter Attribute; dies geht selbst mit Know-How geschützten FB´s dritter)
Das Thema ist nicht trivial aber lohnend und kann mit etwas Arbeit aus den Hilfetexten entnommen werden.
Gruß
Johannes
 
Zurück
Oben