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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 17

Thema: Auswertung einer TCP-Message

  1. #1
    Registriert seit
    26.03.2014
    Beiträge
    77
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    ich sende von meinem PC per TCP Telegramme an meine S7. Diese werden auch aktuell über Chars to String und COMPARE ausgwertet und verglichen.
    Ich möchte nun gerne folgendes mit einer Nachricht tun:

    Der Aufbau ist folgender: M12384ON
    Das soll bedeuten: Der Merker 12384 soll gesetzt werden.

    Oder genauso: M12384OFF
    Das soll bedeuten: Der Merker 12384 soll zurückgesetzt werden.

    Wie mache ich das in FUP am einfachsten?
    Ich möchte natürlich, dass die SPS immer nachguckt ob es diesen Merker mit der Nummer überhaupt in der PLC-Tabelle gibt und den dann setzt. Ich möchte das ganze natürlich variabel mit den Nummern halten.


    Vielen Dank für Tipps.

    Gruß kami
    Zitieren Zitieren Auswertung einer TCP-Message  

  2. #2
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.163
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard

    Sowas destruktives würde ich auf gar keinen Fall implementieren
    Und dann auch noch in FUP... kaum Ahnung vom Programmieren, aber von außen wild im SPS-Speicher rumschmieren wollen...

    Sowas gibt es übrigens schon fertig, wo man in der CPU nichtmal was programmieren muß, das nennt sich "unspezifizierte S7-Verbindung".
    Welche CPU willst Du programmieren?

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  3. #3
    Registriert seit
    29.03.2004
    Beiträge
    5.731
    Danke
    143
    Erhielt 1.685 Danke für 1.225 Beiträge

    Standard

    Zitat Zitat von PN/DP Beitrag anzeigen
    Sowas destruktives würde ich auf gar keinen Fall implementieren
    Und dann auch noch in FUP... kaum Ahnung vom Programmieren, aber von außen wild im SPS-Speicher rumschmieren wollen...
    Im Gegenteil hat er über die TCP-Verbindung und Auswertung der Telegramme in der SPS die volle Kontrolle darüber welche Werte wo in den Speicher geschrieben werden können. Bei einer S7-Verbindung kann dir jeder wie er will im Speicher "rumschmieren".

    Möglich ist das durchaus auch in FUP.
    Ich würde aber das Format zwecks einfacherer Verarbeitung etwas umstellen.
    1. Zeichen fix: 1 Char Speicherbereich (z.B. M)
    2./3./4./5. Zeichen: 4 Chars für die Adresse mit führenden Nullen (z.B. 0012)
    6. Zeichen fix =
    7. Zeichen für den Wert der geschrieben werden soll. Wenn nur Bool-Werte geschrieben werden dann nur 0 und 1 erlaubt.

    Dann setzt "M0012=1" Merker 12 (welches Bit musst du wissen) auf 1.

    Dadurch, dass alle Positionen fest sind muss nichts durchsucht werden, sondern nur die Werte auf Gültigkeit geprüft werden.

  4. #4
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.708
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard

    Naja ... um aber bei der Frage zu bleiben ...
    Das, was du da sendest, ist ein String. Du mußt dir also den String zerlegen um dann via String-Vergleich die gewünschten Aktionen ausführen.
    Und an der Stelle wird es dann auch ganz schnell unpraktikabel. Wenn es sich hier nämlich um viele Variablen handelt, die es zu zerlegen gilt dann nimmt dein Vergleichs-Programm sehr schnell astronomische Dimensionen an.

    Gruß
    Larry

  5. #5
    Registriert seit
    29.03.2004
    Beiträge
    5.731
    Danke
    143
    Erhielt 1.685 Danke für 1.225 Beiträge

    Standard

    Wenn die Länge einer Anweisung fix ist, benötigt er überhaupt keine Stringfunktionen, wahrscheinlich weil er vom PC aus auch keinen S7-String sondern einen nullterminierten String sendet. Er kann in der SPS jedes Zeichen einzeln durchgehen, auf Gültigkeit prüfen und auswerten. In FUP muss dazu die Typüberprüfung am Operanden abgeschaltet werden, damit man mit den Vergleichsfunktionen für Integer auch Chars / Bytes vergleichen kann.

    Das Zerlegen so eines Telegrammes ist auch in FUP möglich. Für die indirekte Adressierung kommt er aber wohl um AWL nicht herum, das sind aber nur noch wenige Zeilen.

  6. #6
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.708
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard

    OK ... das geht natürlich auch. Ist im Grunde nicht sehr viel anders als wenn man mit ANY-Pointern arbeitet.
    Klar - den Empfangsstring zerlegen in Speicherbereich (Char) und die Adresse (z.B. Integer), eventuell noch irgend was mit der Bitnummer machen und am Ende die Aktion.
    Du hast Recht - das ist dann gar nicht mehr so ein schrecklicher Aufwand ...

    Gruß
    Larry

  7. #7
    kami ist offline Benutzer
    Themenstarter
    Registriert seit
    26.03.2014
    Beiträge
    77
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hi,

    habe ich soweit verstanden. Zur Zeit sieht der ganze Spaß so aus. Klappt auch super, nur soll halt von der ID nun nicht immer nur Merker 4.0 angesprochen werden, sondern der dementsprechend passende.

    Gruß kami

    Unbenannt1.JPG

    Unbenannt2.JPG
    Unbenannt3.JPG

  8. #8
    Registriert seit
    29.03.2004
    Beiträge
    5.731
    Danke
    143
    Erhielt 1.685 Danke für 1.225 Beiträge

    Standard

    Was hast du denn für eine SPS? Eine 300/400, 1200 oder 1500?

  9. #9
    kami ist offline Benutzer
    Themenstarter
    Registriert seit
    26.03.2014
    Beiträge
    77
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Sorry hatte ich vergessen. Habe eine S7-1214C

  10. #10
    Registriert seit
    29.03.2004
    Beiträge
    5.731
    Danke
    143
    Erhielt 1.685 Danke für 1.225 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Bei der 1200 ist so ein Zugriff auf Merker soweit ich weiß nur in SCL möglich. Dort gibt es dazu die "schönen" PEEK und POKE, zum Schreiben wäre dann POKE_BOOL der richtige Befehl.
    Wenn du anstatt auf Merker auf einen speziellen Datenbaustein der ein Bool-Array (als Merkerersatz sozusagen) beinhaltet schreibst, ist es auch in FUP möglich. Dann bräuchtest du nichtmal spezielle Funktionen, weil man bei der 1200 auch in FUP ganz einfach per Array-Index darauf zugreifen kann.

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 07.08.2014, 08:19
  2. Step 7 Auswertung einer Bytefolge aus einem Array
    Von alik im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 04.08.2013, 15:34
  3. Auswertung einer positiven Flanke
    Von xstef im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 04.04.2012, 10:50
  4. Antworten: 3
    Letzter Beitrag: 21.09.2010, 11:54
  5. Auswertung einer Anzahl von Aggregaten
    Von ellawo im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 29.04.2009, 09:26

Lesezeichen

Berechtigungen

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