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

Page 2 of 3 FirstFirst 123 LastLast
Results 11 to 20 of 27

Thread: Abfrage Logik für ein Hochregallager

  1. #11
    Join Date
    21.11.2017
    Posts
    178
    Danke
    7
    Erhielt 16 Danke für 15 Beiträge

    Default


    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.
    Last edited by Clyde82; 16.05.2018 at 13:15.

  2. #12
    Join Date
    27.06.2015
    Location
    Hamburg
    Posts
    860
    Danke
    159
    Erhielt 238 Danke für 198 Beiträge

    Default

    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 is offline Neuer Benutzer
    Themenstarter
    Join Date
    14.05.2018
    Posts
    5
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Default

    okay danke ich versuche es mal hoffentlich schaffe ich das .

  4. #14
    Join Date
    19.10.2010
    Posts
    349
    Danke
    15
    Erhielt 40 Danke für 35 Beiträge

    Default

    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
    Join Date
    24.01.2018
    Posts
    159
    Danke
    29
    Erhielt 36 Danke für 32 Beiträge

    Default

    Quote Originally Posted by SPS-freak1 View Post
    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
    Join Date
    10.07.2014
    Location
    NordOsten
    Posts
    604
    Danke
    217
    Erhielt 25 Danke für 23 Beiträge

    Default

    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
    Join Date
    25.06.2017
    Location
    Oerlinghausen
    Posts
    1,683
    Danke
    142
    Erhielt 311 Danke für 255 Beiträge

    Default

    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
    Join Date
    03.12.2013
    Location
    Ansbach
    Posts
    121
    Danke
    0
    Erhielt 52 Danke für 24 Beiträge

    Default

    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
    Join Date
    03.12.2013
    Location
    Ansbach
    Posts
    121
    Danke
    0
    Erhielt 52 Danke für 24 Beiträge

    Default

    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

  11. #20
    Join Date
    13.06.2018
    Posts
    2
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Default


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Es gab ein Problem unten der Beitrag ist der richtige

Similar Threads

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

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •