2 Datenbausteine gleichzeitig aufschlagen, geht das ?

was dieser perfektionist doch für ein arrogantes a..h ist ... naja, solange es bei seinen "programmen" funktioniert, bitte schön... ich machs dann doch lieber so, dass es andere auch verstehen, denn ich habe nicht den anspruch unersetzlich zu sein
 
Langer Rede, kurzer Sinn: einen AUF DBxx (der sich auch in einem L "DB",wert versteckt), will ich weder mir selbst noch anderen antun. Diese Art zu programmieren empfinde ich als fehlerträchtig und ist nur dadurch zu rechtfertigen, da es sich um ein Relikt aus S5-Zeiten handelt.

magst du dann Pointer auch nicht?

P#DB100.DBX0.0 Byte 10

oder Vergleicher

L DB100.DBD 100 // aktueller Wert
L "VisuWert"
== D

usw..
 
Verwendest Du überhaupt DBs?
ist das so unlaublich, dass man (ICH!) ohne Global-DB auskommen kann?

Die Screenshots zeigen einen Gebindepacker mit insgesamt zwölf zueinander synchronisierten Achsen, wobei die Motion-Control in der S7 gerechnet wird. Ist da die Belegung bis MW140 ungewöhnlich für global bedeutsame Signale? Dabei ist anzumerken, dass bis MB127 vielfach nur Verwaltungssachen wie Bitmeldungen anzutreffen sind ...
 

Anhänge

  • Manager.jpg
    Manager.jpg
    205,2 KB · Aufrufe: 45
  • Belegung.jpg
    Belegung.jpg
    150,3 KB · Aufrufe: 45
  • Umwickelmaschine.jpg
    Umwickelmaschine.jpg
    37,7 KB · Aufrufe: 41
Zuviel Werbung?
-> Hier kostenlos registrieren
ist das so unlaublich, dass man (ICH!) ohne Global-DB auskommen kann?

Die Screenshots zeigen einen Gebindepacker mit insgesamt zwölf zueinander synchronisierten Achsen, wobei die Motion-Control in der S7 gerechnet wird. Ist da die Belegung bis MW140 ungewöhnlich für global bedeutsame Signale? Dabei ist anzumerken, dass bis MB127 vielfach nur Verwaltungssachen wie Bitmeldungen anzutreffen sind ...

Und dann pokst du in den IDB der FB rum oder wie genau machst du das?
Ich glaube ich bin zu dumm für diese schöne neue Welt! :confused:
 
was dieser perfektionist doch für ein arrogantes a..h ist ... naja, solange es bei seinen "programmen" funktioniert, bitte schön... ich machs dann doch lieber so, dass es andere auch verstehen, denn ich habe nicht den anspruch unersetzlich zu sein
kann es sein, dass Du ein völlig falsches Bild von dem hast, was ich mache?
 
Und dann pokst du in den IDB der FB rum oder wie genau machst du das?
Nein - Querzugriffe, sodenn es sich um global bedeutsame Signale handelt, werden öfter mal der Faulheit wegen über globale Merker abgewickelt statt über die Schnittstelle.

Ich glaube ich bin zu dumm für diese schöne neue Welt! :confused:
Dazu kann ich nur wenig sagen. Das wenige, was ich an fremder Software bislang gesehen habe, mutete eher nach S5-Programmierstil an. Und stammt aus einer Zeit, als man noch von S5 nach S7 portierte und nicht neu schrieb. Auch Siemens-Bausteine haben bei mir oft die Anmutung von S5 hinterlassen. Bei irgendeiner Zählerbaugruppe gibts von Siemens einen FC der mit einem Global-DB zusammenarbeitet. Ich hab mir erlaubt, diesen Global-DB als UDT in einem FB zu deklarieren (leider mit der Einschränkung, dass dann keine IN/OUT möglich sind, da Offset 0 erforderlich) und habe den FC dann innerhalb des FB werkeln lassen und dann in dem FB auf den nun instanzieren Datenbereich des FC zugegriffen und die Signale dann auf Globalmerkern rausgereicht. Trotzdem steht an diesem mistigen FC die DB-Nr dran :?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@Perfektionist:
Dein Programmierstil würde zu der Art unserer Maschinen überhaupt nicht passen: Indirekte Adressierung lässt sich quasi nicht vermeiden. Merker müssen vermieden werden (ich verwende in dem gesamten Programm 128 Merker, davon 64 in Form von 4 Merkerwörtern), stattdessen mache ich fast alles über IDBs und die statischen Variablen.
Leider bringt das ganze auch einen fast unvermeidbaren Direktzugriff auf IDB-Inhalte mit sich.
Die Art, wie Du programmierst ist interessant, aber bei unseren Maschinen würde das ganze den Code aufblähen.
 
nachdem ich hier so Sachen wie "arrogantes a..h" habe lesen müssen, hab ich mit etwas Widerwillen diesen Thread nochmal angeschaut. Aber ich bin neugierig. Neugierig, zu erfahren, warum ich auf andere so wirke, wie mir hier mal wieder unverblümt mitgeteilt wurde, neugierig aber auch (und vor allem), zu erfahren, welche Probleme es gibt, die es in einer SPS zu lösen gibt, die Querzugriffe erfordern.
@Perfektionist:
Dein Programmierstil würde zu der Art unserer Maschinen überhaupt nicht passen: Indirekte Adressierung lässt sich quasi nicht vermeiden.
Also bei mir ist es so: ich programmiere Gebindepacker, Kartonierer, Schlauchbeutelmaschinen, Handlingsysteme, Zuführ-, Einlege- und Transfersysteme. Und ich würde mir zutrauen, irgendwelche wie auch immer ähnliche Aufgaben mit 300er-System (bis 319er), mit Größenordnung 100 E/A-Punkten und bis zwanzig Achsen mit Istwertstellungsgeber und einem Hauptbedienteil (Flex) in diesem (meinem) Stil zu realisieren. Codegröße (Ladespeicher) hat bislang 128kB nicht überstiegen.

Merker müssen vermieden werden
führt zu:
Leider bringt das ganze auch einen fast unvermeidbaren Direktzugriff auf IDB-Inhalte mit sich.
Fragezeichen? Habe ich das so richtig interpretiert?
Mein Gedanke: Wer sagt, dass Merker zu vermeiden sind? Das kann ja bedeuten, dass man auch E/A-Punkte vermeiden müsse (je nach Begründung, die für die Vermeidung von Merkern geliefert wird)? Bei mir ist es so, dass beispielsweise die aktuelle Produktionsgeschwindigkeit eine Größe ist, die nicht irgendwo in einem IDB namens Hauptantrieb versteckt ist, sondern global für die gesamte Maschine gilt und daher als Merkerdoppelwort für alle Prozesse verfügbar vorliegt. z.B. im Kartonierer für den Prozess Leimung als Berechnungsgrundlage für Leimauftragsvorhalt, für den Auspusher als Berechnungsgrundlage für Vorhalt, ... usw.

Die Art, wie Du programmierst ist interessant, aber bei unseren Maschinen würde das ganze den Code aufblähen.
Danke für das Kompliment (das meine ich ehrlich so - nichts finde ich schlimmer, als wenn jemand sagen würde: "so geht das überhaupt nicht" und einfach voreingenommen eine andere Sicht- oder Arbeitsweise grundsätzlich ablehnt. aber das muss ich bei mir selbst sogar bisweilen hinterfragen. Woher sonst kommen solch a..h-Reaktionen?) Um nochmals auf den Punkt zu kommen: mich würde sehr interessieren, was dies für Maschinen sind, die eine von meiner Arbeitsweise derart starke Abweichung von meiner persönlichen Lösungsstrategie erfordern.
 
Mir läuft bald die Galle über

Hallo,

Perfektionist schrieb:
kann es sein, dass Du ein völlig falsches Bild von dem hast, was ich mache?

Dann mal im Umkehrschluss : Kann es sein, das Du ein völlig falsches Bild von dem hast, was Du da so machst *ROFL*

Da gibt es schon Leute, die Ihre Fähigkeiten eigentlich vollkommen überschätzen, so wie unser "Kühner", der zwar stündlich wie ein Zirkusdirektor neue Attraktionen ankündigt (und dabei auf ein fremdes Pferd namens "LibNoDave" aufsetzt und hier im Forum fremde Federn sammelt, die er sich auf seinen Häuptlingsring aufsteckt) ... Aber er ist wenigstens so ehrlich, und gibt zu, das da noch nichts wirklich funktioniert. Ist aber wirklich nur ein Hilferuf, um mit Nichtigkeiten Aufmerksamkeit auf eine etwas gestörte Persönlichkeit zu ziehen.

Und Du gehörst auch in diese Kategorie, es nervt langsam.

Gruß

Question_mark
 
Zuviel Werbung?
-> Hier kostenlos registrieren
mich würde sehr interessieren, was dies für Maschinen sind, die eine von meiner Arbeitsweise derart starke Abweichung von meiner persönlichen Lösungsstrategie erfordern.

Wir bauen Lagertechnik.
Unsere Maschinen haben bis zu vier identische Anlagenteile mit jeweils bis zu 16 identischen Teilen. Fast alles ist über FBs. Globale Daten für die gesamte Anlage sind bis auf einige wenige Merker und Eingänge nicht vorhanden. Würde ich hier viel mit Merkern machen, hätte ich den deutlichen Nachteil, dass ich die Bausteine für jeden der vier Anlagenteile separat anlegen und pflegen müsste und somit das vierfache an potentiellen Fehlerquellen hätte.
Der Direktzugriff auf die IDBs kommt daher, dass ich einen FB, den ich innerhalb eines anderen FBs aufrufe, noch einmal mit der gleichen Aufrufumgebung im OB 40 aufrufen muss.
 
Zurück
Oben