Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 19 von 19

Thema: Abfrage Logik für ein Hochregallager

  1. #11
    Registriert seit
    21.11.2017
    Beiträge
    104
    Danke
    3
    Erhielt 11 Danke für 10 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Bild1.jpg

    Bild2.jpg

    Bild3.jpg

    Bezogen auf obriges Beispiel:

    M4000.0 ist der Befehl zum Suchen des nächsten freien Platzes:
    M4100.0 bis 4100.5 sind die Plätze für Etage 1, analog 4200.0 ... für Etage 2

    Der Baustein hat 2 Ausgänge in Form von Integers iEtage und iPlatz.

    P.S. In Netzwerk 8 ist die Überschrift nicht richtig, aber sollte klar sein was da stehen müsste.
    P.S.S. Zwischen Netzwerk 8 und 9 müsste eigentlich noch ein Netzwerk um nach Etage 3 zu springen.
    Geändert von Clyde82 (16.05.2018 um 13:15 Uhr)

  2. #12
    Registriert seit
    27.06.2015
    Ort
    Hamburg
    Beiträge
    486
    Danke
    60
    Erhielt 119 Danke für 110 Beiträge

    Standard

    Moin,
    wie shrimps in #2 schon geschrieben hat, wäre das mit einem Platzdate-DB und einem zweidimensionalem Array sehr charmant zu lösen.
    Dafür müsstest du als erstes einen DB bestehend aus Array[1..5,1..5] of Bool erstellen
    Der erste Bereich des Arrays repräsentiert deine X-Koordinaten, der zweite deine Y-Koordinaten.
    -> ist der Bool-Eintrag true, dann ist das Fach belegt.
    Regalmatrix-DB.JPG
    Dein FC müsste in SCL jetzt z.B. so aussehen, dass du zwei ineinander geschachtelte FOR-Schleifen verwendest, in der äußeren zählst du bspw. die Y-Koordinaten hoch, in der inneren die X-Koordinaten.
    Hast du ein freies Feld gefunden, dann gibst du die Schleifenzähler als Koordinaten aus deinem Baustein heraus.
    findeFreiesFach.JPG
    Das wäre mal ein mögliches Vorgehen. Dazu kannst du deinen DB remanent machen, dann behält er auch beim Ausschalten, deine aktuelle Belegung.
    Den FC könntest du noch mit einem Start-Eingang versehen, um ihn einmal vor deiner Positionierung zu starten.
    Den Fall, wenn kein Fach frei ist, musst du gesondert behandeln -> was soll dann passieren (z.B. Störung "Lager ist voll" anzeigen)

  3. #13
    Imero ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    14.05.2018
    Beiträge
    5
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    okay danke ich versuche es mal hoffentlich schaffe ich das .

  4. #14
    Registriert seit
    19.10.2010
    Beiträge
    342
    Danke
    15
    Erhielt 38 Danke für 33 Beiträge

    Standard

    Sowas hatte ich vor ganz langer Zeit in der Ausbildung auch mal zu automatisieren. Ich habe das so gelöst, dass ich einen Zähler hatte den ich Dividiert habe mit der Maximalzahl der Plätze pro Etage für die Bestimmung der Höhe und eine Modulodivison gemacht habe um den Platz in der Etage zu ermitteln. Das ganze hatte den Charme, dass ich so auch gleich die Sollwerte für die Impulszählung der Positionsbestimmung hatte.
    Ich hoffe ich habe mich ein wenig verständlich ausgedrückt.

    Gesendet von meinem SM-G930F mit Tapatalk

  5. Folgender Benutzer sagt Danke zu SPS-freak1 für den nützlichen Beitrag:

    RedCali (19.05.2018)

  6. #15
    Registriert seit
    24.01.2018
    Beiträge
    88
    Danke
    19
    Erhielt 17 Danke für 17 Beiträge

    Standard

    Zitat Zitat von SPS-freak1 Beitrag anzeigen
    Sowas hatte ich vor ganz langer Zeit in der Ausbildung auch mal zu automatisieren. Ich habe das so gelöst, dass ich einen Zähler hatte den ich Dividiert habe mit der Maximalzahl der Plätze pro Etage für die Bestimmung der Höhe und eine Modulodivison gemacht habe um den Platz in der Etage zu ermitteln. Das ganze hatte den Charme, dass ich so auch gleich die Sollwerte für die Impulszählung der Positionsbestimmung hatte.
    Ich hoffe ich habe mich ein wenig verständlich ausgedrückt.

    Gesendet von meinem SM-G930F mit Tapatalk
    Das mit der Rechnung und Modulo ist natürlich sehr elegant, kurz und knackig
    Lesbarkeit ist etwas gewöhnungsbedürftig

    Man könnte mit der Rechung auch ein Kombination mit dem Array machen
    Division den Reihen-, Module den Spalten Index und im Array dann einen UDT für den Lagerplatz "Inhalt"

  7. #16
    Registriert seit
    10.07.2014
    Ort
    NordOsten
    Beiträge
    486
    Danke
    182
    Erhielt 13 Danke für 13 Beiträge

    Standard

    Aber wenn du nu 3 rest 2 rausbekommst, weist du doch noch nicht welche Plätze frei sind. Ausser es wird explizit nacheinander eingelagert.
    Was ist aber wenn in Etage 2 Platz 2 was rausgenommen wird? Ergäbe das nicht 1 Rest 4? Das sagt dann aber nichts über die freie Position, oder?
    Das Leben ist schön ...

  8. #17
    Registriert seit
    25.06.2017
    Ort
    Oerlinghausen
    Beiträge
    891
    Danke
    69
    Erhielt 157 Danke für 130 Beiträge

    Standard

    Das elegante an der ModuloLösung ist, dass sie anscheinend keiner versteht ;o)
    Damit wird doch nur aus einer laufenden Numerierung die "SpaltenNr" extrahiert!
    So, wie man durch Division und "Abschneiden" der NachkommaStellen die "ZeilenNr" isolieren würde.
    Das Problem, sich ausserdem noch merken zu müssen, welche Plätze frei bzw. belegt sind, erledigt sich dadurch leider nicht.

    Gruss, Heinileini

  9. #18
    Registriert seit
    03.12.2013
    Ort
    Ansbach
    Beiträge
    108
    Danke
    0
    Erhielt 50 Danke für 22 Beiträge

    Standard

    Vorschlag:
    Für jede Etage ein Word reservieren (z.B.in DB_Regal), dann kannst du das bis max 16 Plätze je Etage erweitern.
    Das machst du am besten als Array!

    Dann machst du dir einen FC, der aus einem Word die erste Null in den Bits findet (das gibt' sicherlich fertig)
    den rufst du 5x hintereinader mit dem entsprechenden WORD für die Etage auf.

    Das Signal, dass der FC eine 0 gefunden hat auf einen Hilfsmerker,
    mit diesem Hilfsmererker dann alle der nachfolgenden FC-Aufrufe blockieren.

    das geht alles in FUP, wenn's denn unbedingt sein muss!

  10. #19
    Registriert seit
    03.12.2013
    Ort
    Ansbach
    Beiträge
    108
    Danke
    0
    Erhielt 50 Danke für 22 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hier eine Demo, hab ich zwar auf die Schnelle in Step7 gemacht, funktioniert aber in TIA genauso.

    Hier noch der Code von FindFirstBit, (ist direkt aus TIA kopiert)
    Ist noch AWL und geht daher nicht auf der 1200er

    Code:
    FUNCTION "m7a_FirstBit_INT" : Void
    TITLE = sucht das erste gesetzte Bit in einem INT-Wert : BIE:= >0
    { S7_Optimized_Access := 'FALSE' }
    AUTHOR :  
    FAMILY :  
    VERSION : 0.1
    //
       VAR_INPUT 
          Wert : Int;   // zu prüfender Wert
       END_VAR
    
       VAR_OUTPUT 
          BitPos : Int;   // Position des ersten gesetzten Bits
       END_VAR
    
    
    BEGIN
    NETWORK
    TITLE = Nr des ersten gesetzten Bits
          L #Wert;// zu prüfenden Wert in Akku
          L 0;// vergleichen ob Wert = 0
          <>I;// dann Ende, wenn nicht muss mind. 1 Bit gesetzt sein
          SAVE;// Anzahl Bits <> 0 in BIE-Bit speichern
          SPBN end;// ENDE, wenn Wert = 0
          INC 1;// Schleifenzaehler in Akku 1 auf 1 stellen = BitPosition
          TAK;// zu prüfende Bits in Akku 1 zurück
    Loop:      SRW 1;// 1 Bit hinausschieben
          SPP save;// wenn poitiv, dann erstes Bit gefunden => speichern
          TAK;// Schleifenzaehler in Akku 1
          INC 1;// erhöhen Schleifenzaehler, BitNr.
          TAK;// zu prüfende Bits in Akku zurück
          SPA Loop;// Schleife für nächstes Bit wiederholen
    save:      TAK;// Schleifenzaehler, BitNr in Akku 1
    end:      T #BitPos;// BitPosition zurückgeben
    
    
    END_FUNCTION

    FB20.jpg

Ähnliche Themen

  1. Antworten: 1
    Letzter Beitrag: 18.03.2013, 12:23
  2. Mini-FU mit ein bisschen Logik gesucht
    Von Ludewig im Forum Antriebstechnik
    Antworten: 10
    Letzter Beitrag: 09.06.2012, 23:35
  3. SPS 5 - suche Logik für eine Schaltung
    Von ghost-ghost im Forum Simatic
    Antworten: 15
    Letzter Beitrag: 18.03.2012, 13:54
  4. Programm um Logik für eine SPS zu visualisieren (Doku)
    Von Daimonion im Forum PC- und Netzwerktechnik
    Antworten: 20
    Letzter Beitrag: 20.12.2010, 23:41
  5. Logik für Kompressorverbund
    Von hank12 im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 22.05.2010, 19:38

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •