[gelöst] Fifo Tabelle sichern?

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
NoCee
Beiträge: 170
Registriert: Do 3. Mär 2011, 21:34
OS, Lazarus, FPC: WinXp/7/10 Opensuse13.2/Leap15.3 (L 2.2.0 FPC 3.2.2 )
CPU-Target: Intel 32/64Bit, ARM9
Wohnort: Ulm

[gelöst] Fifo Tabelle sichern?

Beitrag von NoCee »

Hallo zusammen,

ich programmiere gerade für technische Versuche ein mini Hochregallager.
Da fahren 2 automatische Gabestapler für Kuststoffboxen im Lager spazieren.
Dazu gibt es eine kleine Fördertechnik mit Barcodescannern usw.
Das ist alles vorhanden und wird über einen Materialflußrechner gesteuer.
Die Stapler und die Fördertechnik haben eigenständige SPSen die über TCP/IP mit
dem Materialflußrechner angebunden sind.
Mein Programm ist in dem Szenario der Materialflußrechner der z.B. der Fördertechnik sagt:
Transportiere die Box von da zum Stapler 1. Ebenso werden die Stapler beauftragt:
Hole den Behälter da ab und bringe in dort hin.
Der MFR (Materialflußrechner) läuft unter Linux. Es gibt eine Datenbank für die Behälter im Lager
mit MariaDB und Lazarus mit Zeos.
Hier habe ich jetzt eine Designentscheidung zu treffenund weiß nicht genau wie ich das umsetzen soll/kann.

Für die Einlagerung von Boxen gibt es ein Förderelement vor den Staplern die mehrere Behälter aufnehmen kann.
Der MFR weiß welcher Behälter wo steht und muß den Staplern in der richtigen Reihenfolge (Fifo) die Einlageraufträge senden.
Also z.B. Hole den Behälter 4711 vom Übergabeplatz und stelle ihn ins Regalfach XYZ..
Problem ist der Datenerhalt wenn die Software neu gestartet wird. Defekt, Feierabend oder sonstwas.
Dann stehen da Behälter auf der Fördertechnik und der MFR kennt diese nicht mehr wenn diese nur im Ram gehalten wird.

Wie sichere ich die Daten der Fifotabelle?

Lege ich eine kleine Datenbanktabelle für diese Förderelemente an?
Da steht nur die Boxennummer, die Uhrzeit(mit Datum) wo dieser Behälter auf die Anlage gestellt wurde
und die Förderelementnummer. Das Fifo kann ich dann über den "ältester Datensatz" machen.
Alternativ könnte ich auch ein file je Förderelement anlegen und das Fifo über die Zeile machen. Ganz oben=älteste einzulagernde Box.
Noch ne Möglichkeit wäre im Datensatz der Box den es ja sowieso schon gibt, das Färderelement und die Einlagerzeit mit einzutragen.
Hier müsste aber die Datenbank durch 10 000 Datensätze suchen um die älteste zu finden.

Was macht da Sinn?
Performanz ist egal, da laufen nur technische Test.
Hat da jemand Erfahrung und kann mir bei der Marschrichtung einen Tipp geben?

Vielen Dank schon mal im Voraus.
NoCee
Zuletzt geändert von NoCee am Mo 17. Jan 2022, 10:30, insgesamt 1-mal geändert.

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: Fifo Tabelle sichern?

Beitrag von Winni »

Hi!

Ne kleine Tabelle "TransportStatus" anlegen.

Jede Box, die unterwegs ist, erhält einen einen Datensatz,
Jedes Umladen innerhalb des Transportwegs wird dort eingetragen.
Wenn die Box ordnungsgemäß angekommen ist, wird der Datensatz gelöscht.

Die Datenmenge bleibt so klein und im Fall des Ausfalls ist klar ersichtlich, zwischen welchen 2 Punkten sich die Box xyz gerade befindet.

Und wenn die Tabelle leer ist, ist nix unterwegs.

So etwas gehört aber in ein Echtzeit-Betriebssystem und nicht in Linux. Aber das ist wohl nicht Deine Entscheidung.

Winni

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Fifo Tabelle sichern?

Beitrag von af0815 »

Winni hat geschrieben:
Fr 14. Jan 2022, 13:33
So etwas gehört aber in ein Echtzeit-Betriebssystem und nicht in Linux. Aber das ist wohl nicht Deine Entscheidung.
Da stimme ich überhaupt nicht überein, es geht um simple Aufträge zu verwalten, nicht um Livebewegungen, die sind ja, wie beschrieben in SPS richtig aufgehoben.

Das die Aufträge am DB-Server am besten aufgehoben sind, hast du schon mit der 'kleinen' Tabelle beschrieben. Damit sind die Daten persistent und verschwinden nicht, wenn der SteuerPC abgedreht ist.

Es muss nur vom Protokoll her sichergestellt sein, das die SPSsen ihre Aufträge erst fertigmelden können, wenn der PC online ist. Damit kann während einer Transportaufgabe der PC auch abgedreht sein. Erst wenn er aktiv wird, kann der Auftrag in der SPS abgeschlossen, weil die hat normalerweise auch ihre internen Aufträge persistent abgelegt.

Damit kann alles in Linux unter nicht Echtzeitbedingungen bleiben.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

NoCee
Beiträge: 170
Registriert: Do 3. Mär 2011, 21:34
OS, Lazarus, FPC: WinXp/7/10 Opensuse13.2/Leap15.3 (L 2.2.0 FPC 3.2.2 )
CPU-Target: Intel 32/64Bit, ARM9
Wohnort: Ulm

Re: Fifo Tabelle sichern?

Beitrag von NoCee »

Hallo,
danke für eure Antworten.
Ich werd das dann in kleine Tabellen in die Datenbank mit einbauen.

Echtzeitfähig muß da nur das SPS System der Fördertechnik und der Stapler sein.
Das ist ja auch schon so. Da gibt es einen ausführlichen Telegrammverkehr zwischen
dem Materialflußrechner und den SPS Systemen bei der alle Telegramme auf Erhalt
und als fertig quittiert werden so daß da nichts flöten geht.

Vielen dank für die Unterstützung
und eine schöne Woche
Gruß
NoCee

Antworten