Hallo Zusammen,

Mayx1988

Level-1
Beiträge
7
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Titel soll natürlich heißen: Rezeptur-Synchronisation :)

Und jetzt "Hallo Zusammen"
ich hab an die Experten hier im Forum eine Frage und zwar wie kann ich von zwei Basic Panels (beide KTP 1000 DP) die Rezepturdaten synchronisieren?

Also wenn ich auf einem Panel einen neuen Datensatz eingeben, soll dieser automatisch ans andere Panel übertragen werden?
Gibt es da eine Lösung?

Der Aufbau der Hardware ist im Anhang abgebildet.

Für eine Antwort wäre ich sehr dankbar.

mfg
 

Anhänge

  • SPS-Aufbau.png
    SPS-Aufbau.png
    22,5 KB · Aufrufe: 68
Also wenn ich auf einem Panel einen neuen Datensatz eingeben, soll dieser automatisch ans andere Panel übertragen werden?
Gibt es da eine Lösung?

Da kann ich dir nur empfehlen, das Rezeptussystem in die SPS einzulagern.
Ist zwar schade drum, aber leider nicht zu ändern.

Frank
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Da kann ich dir nur empfehlen, das Rezeptussystem in die SPS einzulagern.
Ist zwar schade drum, aber leider nicht zu ändern.

Frank

Warum Schade?
Ich halte meist die Rezepte und deren Verwaltung in der PLC.
DB gibt es genug und wenn einmal die entsprechenden Bausteine für speichern, suchen und erstellen geschrieben sind ist das doch eine gute Lösung.
Als Luxus dann die Rezepte noch auf eine MMC schreiben, dann klappt es auch mit dem Rezept. ;)


bike
 
Schon einmal vielen Dank für die Antworten. Das hat mich schon mal ein Stück weiter gebracht.

Jetzt taucht bei mir aber gleich die nächste Frage auf und zwar muss ich dann pro Rezeptur ein Datenbaustein (DB) anlegen?
Oder lässt es sich einfacher realisieren?

Meine zweite Frage wäre, wie ich einen String in der SPS abspeichen kann?
Wenn ich nämlich die Rezeptur mit einem Bereichzeiger an die SPS übertragen lasse und diese dann anschließend auf den beiden Touchpanels anzeigen lasse, erhalte ich nur viele Rautezeichen?! Kann es mir aber nicht erklären. Der Datentyp den ich dafür genommen habe ist String[256] welcher ich mit DB3.DBB6 über das Basic Panel ansprechen kann.

Hat mir hier vielleicht jemand auch einen guten Tip?

Vielen Dank schon im Voraus

MFG
Mayx1988
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Schon einmal vielen Dank für die Antworten. Das hat mich schon mal ein Stück weiter gebracht.

Jetzt taucht bei mir aber gleich die nächste Frage auf und zwar muss ich dann pro Rezeptur ein Datenbaustein (DB) anlegen?
Oder lässt es sich einfacher realisieren?

Meine zweite Frage wäre, wie ich einen String in der SPS abspeichen kann?
Wenn ich nämlich die Rezeptur mit einem Bereichzeiger an die SPS übertragen lasse und diese dann anschließend auf den beiden Touchpanels anzeigen lasse, erhalte ich nur viele Rautezeichen?! Kann es mir aber nicht erklären. Der Datentyp den ich dafür genommen habe ist String[256] welcher ich mit DB3.DBB6 über das Basic Panel ansprechen kann.

Hat mir hier vielleicht jemand auch einen guten Tip?

Vielen Dank schon im Voraus

MFG
Mayx1988

Ja, habe ich.
Du musst wissen wie groß dein Rezept ist.
Mit den einzelnen Parametern würde ich eine UDT erstellen und diese in einem DB aufrufen.
Wie viele Rezepte hast du?
Es kann dann sein, dass du ab einer gewissen Anzahl mehrere DB brauchst, das kann sein z.B ab Rezept 100, 200 ....

Warum hast du dir solch langen String definiert?
Wenn du nur # hast stimmt die Kommunikation nicht, wenn du ASCII Zeichen siehst, aber nicht die richtigen, dann hast du ggF ein Format Problem.
Was steht in DB? Wenn Online den Baustein öffdnest
Du muss bedenken, dass wenn du CHAR anzeigst, du nicht ab dem ersten Byte im DB lesen darfst, wenn dieser als String definiert ist.

bike
 
Also soviel rezepte sind es nicht (so ungefähr 20 bis 30 Stück)
Wenn ich dich also richtig verstehe kann ich die Rezepturgeschichte im Touchpanel komplett vergessen und mach das rein über die Variablen.

Aber mir ist es noch nicht ganz klar wie ich das realisieren kann?!!
Also in meine Test-Rezeptur hat eine INT, eine REAL, und eine STRING[25] Variable.
So habe ich auch die den UDT angelegt.
Muss ich dann pro Rezeptur die ich speichern möchte ein UTD Datentyp in einem DB anlegen oder wie geht das?
Wenn ja wie kann ich diese verschiedenen DB Adressen über das TouchPanel ansprechen?

Das mit der String-Konvertierung war ein guter Tip. Das Problem habe ich jetzt wenigstens hinbekommen.

Vielen Dank
 
gibts mehrere Möglichkeiten:

Der Bereich im DB ist zu klein
Das Ausgabefeld ist zu klein oder falsch parametriert (kein String, Länge stimmt nicht, . . .)

Warum willst du String nehmen?
wenn es um aktuelle Variablen in der SPS geht, dann sind INT oder REAL ev auch DINT Werte meist die bessere Wahl.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also soviel rezepte sind es nicht (so ungefähr 20 bis 30 Stück)
Wenn ich dich also richtig verstehe kann ich die Rezepturgeschichte im Touchpanel komplett vergessen und mach das rein über die Variablen.

Aber mir ist es noch nicht ganz klar wie ich das realisieren kann?!!
Also in meine Test-Rezeptur hat eine INT, eine REAL, und eine STRING[25] Variable.
So habe ich auch die den UDT angelegt.
Muss ich dann pro Rezeptur die ich speichern möchte ein UTD Datentyp in einem DB anlegen oder wie geht das?
Wenn ja wie kann ich diese verschiedenen DB Adressen über das TouchPanel ansprechen?

Das mit der String-Konvertierung war ein guter Tip. Das Problem habe ich jetzt wenigstens hinbekommen.

Vielen Dank

Wenn ich jetzt mich nicht verzählt habe, ist deine UDT dann 30 Worte lang.

Für jedes Rezept eine UDT in dem DB anlegen.
Dann hast du einen DB von ca 1000 Worten. Das kann nahezu jede S7 300.
Zugreifen kannst du über Pointer auf den DB.
Der String ist der Name des Rezeptes? Wird dieses eingegeben oder ist INT die Rezeptnummer?
Wenn du mit dem String arbeiten musst, dann brauchst du eine Routine um den String zu suchen, damit das Rezept aktiv wird. Auch brauchst du Funktionen zum Einfügen eines neuen Rezeptes und Löschen.
Beispiele für solche Routinen gibt es hier als Beispiel,, wenn du nichts findest, dann kann ich ggF etwas zuschicken.

bike
 
Der String ist der Name des Rezeptes? Wird dieses eingegeben oder ist INT die Rezeptnummer?
Wenn du mit dem String arbeiten musst, dann brauchst du eine Routine um den String zu suchen, damit das Rezept aktiv wird. Auch brauchst du Funktionen zum Einfügen eines neuen Rezeptes und Löschen.
Beispiele für solche Routinen gibt es hier als Beispiel,, wenn du nichts findest, dann kann ich ggF etwas zuschicken.

bike

Richtig, der String ist der Name der Rezeptur. Also sollte ich, um es zu vereinfachen, der Rezepturen eine fortlaufende Nummer geben?

Wie sieht dann so eine Routine aus, die meine aktuell ausgewählten Rezepturdaten in den dafür vorgesehenen DB speichert?
Bis jetzt kenne ich nur den Weg in dem ich für jede Rezeptur eine eigenen Übertragungsanweisung programmieren muss (also mit Merker).
Da gibt es doch bestimmt auch eine andere Lösung???


Danke für die Hilfe
 
Zuletzt bearbeitet:
Zurück
Oben