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

Seite 6 von 17 ErsteErste ... 4567816 ... LetzteLetzte
Ergebnis 51 bis 60 von 170

Thema: PHP + Siemens PLC

  1. #51
    Registriert seit
    29.03.2004
    Beiträge
    5.594
    Danke
    141
    Erhielt 1.653 Danke für 1.203 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Nochmal zurück zum Destination TSAP:
    Das erste Byte stellt die Verbindungsressource dar.

    Dazu steht in der WinCC Hilfe:
    Zitat Zitat von WinCC Online Hilfe
    Verbindungsressource
    gibt die Verbindungsressource als Hexadezimalwert an. Das Feld ist nur aktiviert, wenn das Kontrollkästchen "Rohdatenblock senden/empfangen" aktiviert wurde.Die Verbindungsressource wird bei der Projektierung der festprojektierten Verbindung (sog. PBK-Verbindung) in der AS von STEP7 vergeben.Wertebereich (hex) :10 - DF
    Wenn die Option "Rohdatenblock senden/empfangen" nicht angehakt ist, wird dort immer ein 0x02 übertragen.

  2. #52
    Registriert seit
    27.08.2010
    Ort
    OWL
    Beiträge
    19
    Danke
    2
    Erhielt 2 Danke für 1 Beitrag

    Standard

    So, nun war Wochenende und ich bin auch nen Schritt weitergekommen.

    Basis war das auf der Siemens Website vorhandene Beispiel zur Verbindung zwischen 2 1200er Steuerungen. Hab dort einen unspezifizierten Partner mit der IP meines Webservers eingestellt, anstelle der sendenden 1200er.
    Der verwendete Baustein bietet keine Möglichkeit zur Tsap eingabe, sei hier kurz angemerkt.

    Im Script hier meine Ip Adresse eingetragen, Racknummer gelassen und als Steckplatz 1 angegeben. Das Script gestartet und ein Erfolgserlebnis.

    Lesen klappt vorzüglich.

    Nun wollte ich denn auch mal schreiben

    Schwups, den Projektteil mit dem Senden gegen den mit dem Empfangsbaustein ausgetauscht. Und nichts ging!!

    Habe dann noch ein bisschen mit dem Script hier rumgespielt, dabei aber nur besonderheiten der 1200er aufdecken können.

    In der CPU ist nur noch der Empfangsbaustein mit entsprechenden DB's und trotzdem kann das Script den DB noch auslesen.

    Eigentlich wird doch der Socket im Script geschlossen oder hab ich das falsch gelesen?

    Demzufolge hätte ich doch beim nächsten Start keinen sendenden Partner mehr wenn der Baustein in der Cpu nicht vorhanden ist und müsste eine Fehlermeldung bekommen.
    Spannung von der Cpu entfernen und Neustart nur mit dem recv Baustein, trotzdem kann ich Aktualdaten aus dem DB lesen.

    Statusänderung am Recv Baustein hab ich nicht. Der behauptet er würde auf eine Verbindung warten.

    Jetzt vermute ich mal die bestehende Verbindung zum Senden an das script verhindert das ich schreiben kann.

    Hat evtl. noch jemand ne Idee?

    Und im Script steht beim read was von "x02" ; Typ Byte
    und beim write was von "Chr(132)" 0x84 Datenbaustein.

    Weiss da jemand die Kennungen für Word , String etc. bzw. was ausser DB kann man da noch angeben ? über ?


    LG Bitti

  3. #53
    Registriert seit
    03.11.2006
    Beiträge
    8
    Danke
    1
    Erhielt 1 Danke für 1 Beitrag

    Standard

    "Weiss da jemand die Kennungen für Word , String etc. bzw. was ausser DB kann man da noch angeben ? über ?"

    Siehe beim Any-Pointer

    http://sps-forum.de/showthread.php?t...+merkerbereich

  4. Folgender Benutzer sagt Danke zu Einherjer14 für den nützlichen Beitrag:

    bitsearcher (21.10.2010)

  5. #54
    Registriert seit
    28.10.2010
    Beiträge
    1
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Genau was ich gesucht hab, bei google war ich nicht wirklich erfolgreich - aber per Zufall hier gelandet und siehe da...

    Danke dass sich jemand die Mühe gemacht hat das in PHP umzusetzen!

    Ich werd's dann gleich mal nächste Woche testen.

  6. #55
    Registriert seit
    10.02.2011
    Beiträge
    2
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von Thomas_v2.1 Beitrag anzeigen
    Ich habe mal auf die schnelle was in php zusammengestümpert, kannst ja mal testen ob das bei dir funktioniert, und ob das so ist wie du dir das vorgestellt hast. Ich hab das eben nur mal mit meinem nettoplcsim grob durchgetestet - Daten kommen zumindest rein.
    Hallo
    Das PHP Script funktioniert bei mir mit einer S7-400 aber bei einer S7-300
    nicht.
    400er: $plc = new S7PLC("S7400", "121.11.58.10", 0, 3, "TestSPS");
    Ist OK
    300er: $plc = new S7PLC("S7300", "121.11.74.23", 0, 2, "TestSPS");
    NOK
    Fehlermeldung
    Uncaught exception 'Exception' with message 'WrongNumberReceivedBytes'
    an der Stelle werden 0 Bytes zurueckgegeben.
    Vielleicht kann mir jemand helfen den Fehler einzukreisen.
    Danke

  7. #56
    Registriert seit
    29.03.2004
    Beiträge
    5.594
    Danke
    141
    Erhielt 1.653 Danke für 1.203 Beiträge

    Standard

    Zitat Zitat von 1007 Beitrag anzeigen
    Hallo
    Das PHP Script funktioniert bei mir mit einer S7-400 aber bei einer S7-300
    nicht.
    400er: $plc = new S7PLC("S7400", "121.11.58.10", 0, 3, "TestSPS");
    Ist OK
    300er: $plc = new S7PLC("S7300", "121.11.74.23", 0, 2, "TestSPS");
    NOK
    Fehlermeldung
    Uncaught exception 'Exception' with message 'WrongNumberReceivedBytes'
    an der Stelle werden 0 Bytes zurueckgegeben.
    Vielleicht kann mir jemand helfen den Fehler einzukreisen.
    Danke
    Hallo,
    die Auswahl ob "S7300" oder "S7400" ist nicht relevant, du kannst also auch auf eine 300er mit "S7400" zugreifen.

    Welche Version verwendest du denn, die erste von dieser Seite dieses Threads? Das war nur ein "Schnellschuss" sozusagen. Kann sein dass deine 300er fragmentierte Pakete verschickt (habe ich bisher nur bei einer WinAC so gesehen), die diese php Version nicht verarbeiten kann.

    Ich hänge meine letzte Version mal an in der ich das korrigiert habe, und zusätzlich ein paar Konvertierungsfunktionen vorhanden sind.
    Kannst ja mal testen ob sich das mit der anders verhält.

    Ansonsten entwickle ich das nicht weiter, und nutze das auch kaum. Aber ich habe das mittlerweile schon an mehrere Leute per Email verschickt. Leider gab es weder positive oder negative Rückmeldungen

    Gruß
    Thomas
    Angehängte Dateien Angehängte Dateien

  8. #57
    Registriert seit
    10.02.2011
    Beiträge
    2
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo
    Ich glaube ich hab den Fehler gefunden. Hatte nicht die erste Version genommen. Musste folgende Aenderung machen und es lief .
    [PHP] //S7300: Chr(194) & Chr(2) & Chr(3) & Chr(2) 'Fremder Tsap
    $bSend1[15] = 194;
    $bSend1[16] = 2;
    $bSend1[17] = 3;
    $bSend1[18] = $this->Rack * 2 * 16 + $this->Slot;
    break;
    [/PHP]$bSend1[17] = 2;
    Soll das die Slotnummer sein? Werd aber nun deine neue Version
    nehmen.
    Danke.
    Geändert von 1007 (11.02.2011 um 17:04 Uhr)

  9. #58
    Registriert seit
    29.03.2004
    Beiträge
    5.594
    Danke
    141
    Erhielt 1.653 Danke für 1.203 Beiträge

    Standard

    Zitat Zitat von 1007 Beitrag anzeigen
    Hallo
    Ich glaube ich hab den Fehler gefunden. Hatte nicht die erste Version genommen. Musste folgende Aenderung machen und es lief .
    [PHP] //S7300: Chr(194) & Chr(2) & Chr(3) & Chr(2) 'Fremder Tsap
    $bSend1[15] = 194;
    $bSend1[16] = 2;
    $bSend1[17] = 3;
    $bSend1[18] = $this->Rack * 2 * 16 + $this->Slot;
    break;
    [/PHP]$bSend1[17] = 2;
    Soll das die Slotnummer sein? Werd aber nun deine neue Version
    nehmen.
    Danke.
    Nein, die Rack/Slot-Nummern sind wie zu sehen in Byte 18 verwurstet.

    Das Ganze ist Teil des COTP-Protokolls.

    $bSend1[15] = 194; <-- 0xc2, zeigt an dass als nächstes ein Parameter vom Typ "destination tsap" folgt

    $bSend1[16] = 2; <-- zeigt an dass der Parameter 2 Bytes lang ist

    $bSend1[17] = 2; <-- Byte 1 des Parameters, Siemens Spezial (2=OP Funktion)

    $bSend1[18] = <-- Byte 2 des Parameters, Siemens Spezial Rack/Slot

  10. #59
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.730
    Danke
    208
    Erhielt 419 Danke für 336 Beiträge

    Standard

    Zitat Zitat von Thomas_v2.1 Beitrag anzeigen
    Ansonsten entwickle ich das nicht weiter, und nutze das auch kaum. Aber ich habe das mittlerweile schon an mehrere Leute per Email verschickt. Leider gab es weder positive oder negative Rückmeldungen

    Gruß
    Thomas
    Hier mal ne Rückmeldung: Nutze immer noch die Erste Version welche Ich um die schreibfunktionen erweitert hab. Funzt astrein, Steuere damit mein Garagen und meinbScheunentor, sowie die Lichter! Danke für die Lib!

    P.S. Hast du die schreibfunktionen in deine neue Version auch eingebaut?
    ---------------------------------------------
    Jochen Kühner
    http://jfk-solutions.de/ - Softwareentwicklung, Programmierung, ...
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten
    IPhoneS7 - Inbetriebnahme Tool fürs IPhone (VarTab, Baustein-, PLC-Status)

  11. #60
    Registriert seit
    29.03.2004
    Beiträge
    5.594
    Danke
    141
    Erhielt 1.653 Danke für 1.203 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Jochen Kühner Beitrag anzeigen
    Hier mal ne Rückmeldung: Nutze immer noch die Erste Version welche Ich um die schreibfunktionen erweitert hab. Funzt astrein, Steuere damit mein Garagen und meinbScheunentor, sowie die Lichter! Danke für die Lib!

    P.S. Hast du die schreibfunktionen in deine neue Version auch eingebaut?
    Hm, eine WriteBytes und WriteBit Funktion habe ich drin. Und ich habe noch etwas bezüglich timeout-Verhalten angepasst, wenn eine IP nicht erreichbar ist. Der Socket wird auf non-blocking gesetzt und kehrt in dem Fall sofort zurück, und nicht erst nach x Sekunden.

Ähnliche Themen

  1. Antworten: 17
    Letzter Beitrag: 18.11.2010, 16:36

Lesezeichen

Berechtigungen

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