DB aus Programm erstellen

Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen,

ich wollte das Thema CPU-DB aufgreifen.
Hier in der Firma bin ich neu und stehe vor einem wüsten S7 Programm Haufen! Bei sehr vielen Bausteinen fehlt die Symbolik und auch Merker, Ein- und Ausgänge sind nur teilweise Beschriftet :sw9:
Wie finde ich heraus, wo diese CPU-DBs erzeugt werden? Die SFC22 und co sind im Programm nicht verwendet, aber die DBs werden bearbeitet?!

Viele Grüße
Eric
 
Hallo,

ich möchte ebenfalls aus dem Programm heraus mit dem SFC22 DB´s erstellen.

In den bereits angelegten DB´s ist an der Adresse 0 die Variable "Parametersatz" vom Typ ARRAY[1..9] vom Typ UDT1 angelegt (Insgesamt also 9xUDT1 = 72 Byte).
Jeder DB, welcher mit dem SFC22 erstellt wird, soll die gleiche Architektur erhalten wie die bereits angelegten DB´s.
Nun könnte man am Eingangsparameter COUNT ja einfach 72 angeben. Allerdings gehen dann alle Zuordnungen der Adressen in den neuen DB´s verloren.

Hintergrund ist der, das ich dem Maschinenbetreiber ermöglichen mag, durch Tastendruck seine Datenfamilie um je eine neue Datenbank zu erweitern. Ich finde es unschön hier pauschal x leere Datenbanken vorzuprogrammieren...

Kann mir hier jemand helfen, eine saubere Lösung zu finden?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du kannst den DB mit jeder beliebigen Nummer, sowie beliebigen Länge erzeugen.
Innerhalb der jeweiligen CPU-Grenzen natürlich.

Was du aber unter keinen Umständen kannst, dem erzeugten DB irgend eine Strucktur verpassen.

Der DB ist in der Online-Sicht immer ein ARRAY OF BYTE.

Mfg
Manuel
 
Du kannst den DB mit jeder beliebigen Nummer, sowie beliebigen Länge erzeugen.
Innerhalb der jeweiligen CPU-Grenzen natürlich.

Was du aber unter keinen Umständen kannst, dem erzeugten DB irgend eine Strucktur verpassen.

Der DB ist in der Online-Sicht immer ein ARRAY OF BYTE.

Mfg
Manuel

hmmm.....

für die SPS spielt das für die Bearbeitung ja keine Rolle, aber wenn jemand online in die Datensätze im DB reinguggt hat er halt keine Zuordnung was was ist.

Es wäre wirklich prima, dem Datenbaustein eine Struktur zu geben. Und wie ist es wenn man einen DB kopiert? Gibt es vielleicht einen SFC zum DB´s aus dem Programm heraus zu kopieren mit Angabe des Nummernbereichs wie beim SFC22?
 
Hi,
kannst du nicht mit SFC24 testen ob der Baustein da ist ?
Ret_Val bringt wenn er da ist W#16#80B1
da konnte man ein jump-Bedingung einfügen
damit er nicht 2x erstellt wird, ich versuch auch grad sowas
ähnliches...bin noch am probieren...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du kannst den DB mit jeder beliebigen Nummer, sowie beliebigen Länge erzeugen.
Innerhalb der jeweiligen CPU-Grenzen natürlich.

Was du aber unter keinen Umständen kannst, dem erzeugten DB irgend eine Strucktur verpassen.

Der DB ist in der Online-Sicht immer ein ARRAY OF BYTE.

Was man aber machen könnte um das Zeug zu speichern und dann auch in vernünftiger Struktur zu sichten wäre im Programm einen Blockmove zu machen und zwar auf einen offline erstellten DB dem man die passende Struktur gegeben hat.

Danach könnte man die im Programm erstellten DBs per Blockmove zum offline erstellten kopieren und könnte die Inhalte vernünftig sichten.

Irgendwo müsste man dann noch hinterlegen wieviele DBs erstellt wurden damit man auch weiss bis zu welchem DB man daten sichten kann.
 
Datenbaustein im Ladespeicher erzeugen mit der SFC 82 "CREA_DBL"
oder
Einen Datenbaustein erzeugen mit der SFC 85 "CREA_DB"

oder das:
Schreiben in einen Datenbaustein im Ladespeicher mit der SFC 84 "WRIT_DBL"
könnte was sein betrifft sfc22

hab ich grad gefunden evtl hilft der ?
 
Zuletzt bearbeitet:
Und wenn mal einer da ist, kannst du auch offline den mit der Strukrut kopieren so oft du willst (ausser CPU grenzen natürlich), sind dann alle gleich und wenn du sichern lassen willst, brauchst du nur den entsprechenden anzuwählen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ist mir gerade eingefallen: DB der in der SPS erzeugt wurdo ohne, kommentar, . . .
wenn du die details haben willst, dann übertrag den Inhalt in einen DB den du entsprechend kommentiert hast. Das ein bisschen vorbereitet ev in Visu KDaten übertragen anstossen, dann kannst du in dem einen kommentierten super deine Daten betrachten, in der Visu stosst du das mit der entsprechenden DB Auswahl.

ev hilft dir das weiter.
 
Hallo, erstmal danke für die rege Hilfe. Ich werde mich gleich morgen wieder im Geschäft dranmachen und weiter probieren.

Nochmal zum genaueren erklären:
ich habe eine variable Datenbank. Man kann es sich so vorstellen:

Pro Teilefamilie einen Datenbaustein (derzeit 3).
Pro Datenbaustein die Parameter für bis zu 9 Teile aus einem UDT.

Um dem Kunden eben die Möglichkeit zu geben eine neue Teilefamilie anzulegen möchte ich realisieren, das er durch Tastendruck in der Viso einen neuen DB erstellt.
Mit dem SFC22 geht das ja prima durch die Eingrenzung der Bausteinnummern in einen Bereich und die automatisch angenommene nächste freie Nummer. Als Anzahl der Bytes kann man ja auch die Summe der Bytes über die 9 UDT´s am SFC22 angeben.
Soweit funktioniert es ja auch ganz gut.
Der einzigste Nachteil ist eben, dass ein online erstellte DB keine Kommentare besitzt und somit "nur" eine Byteliste beinhaltet.
Da das Programm über indirekte Adressierung auf die DB´s zugreift stört sich das Programm ja auch nicht daran, das keine Kommentare im DB sind. Es werden ja nur die Dateninhalte verarbeitet.

Nur wenn ein Techniker mal ins Programm schauen muss ist es halt für ihn sehr schwer alles nachzuvollziehen. Daher suche ich eben noch die Möglichkeit in den online erstellten Baustein durch reine Programmierung auch die Kommentare in den DB zu bekommen. Das erweitern der Datenbank soll rein online möglich sein.

Auch ein Kopieren der Inhalte eines anderen DB´s in den online erstellten DB über BLOCKMOVE ist auch keine Lösung, da ja hier auch nur die Dateninhalte kopiert und keinen Einfluss auf die Kommentare nimmt.

Ein SFC der DB´s kopiert im Stil des SFC22 mit Bereicheinschränkung und Ermittlung der nächsten freien Nummer wäre sozusagen die Eierlegendewollmilchsau.

Vielleicht fällt noch jemandem was Anderes ein was ich noch ausprobieren kann.
Die OSCAT-Bibliothek hab ich kurz vor Feierabend auch schon grob überflogen aber nichts passendes gefunden.
 
Zurück
Oben