Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[Python]Socket verbinding met PLC

Pagina: 1
Acties:

  • Stijnb_
  • Registratie: Oktober 2009
  • Laatst online: 28-09 00:26
Beste Tweakers,

Momenteel ben ik aan het proberen om data te versturen van mijn plc(siemens S7-1200) naar mijn pc.
Via een python script wil ik de data ontvangen via TCP.

Op mijn plc draait momenteel een dom programma die 1 Byte verstuurd via TCP naar mijn pc.
Maar het probleem is dat ik niet ontvang op mijn pc. Hij maakt met succes een verbinding met de pc maar alleen kom ik met het probleem dat ik niets van data zie.
Soms zie ik gewoon een "?" verschijnen in de commandline maar voor de rest zie ik niet veel.
Ik verstuur dus gewoon binaire data van mijn Byte door naar mijn pc.

Dit is mijn script:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#! /usr/bin/env python

#Socket importeren
import socket
import sys

#Server Data
serverHost = '192.168.0.4'
serverPort = 2000

# Socket aanmaken
socketConnection = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

print 'Socket created!'

# Socket binden aan IP
socketConnection.bind((serverHost, serverPort))

print 'Socket is binded'


socketConnection.listen(10)

print 'Socket is now listening'

while True:
    plcConnection, plcAddress = socketConnection.accept()
    print 'Connected with ' + plcAddress[0] + ':' + str(plcAddress[1])
    
    data = plcConnection.recv(4)
    print repr(data)

    if not data:
        print "no data"
        break
    
plcConnection.close()
socketConnection.close()


Ik heb al een paar dingen geprobeerd en opgezocht op internet.
Maar kom niet direct tot een goed resultaat. Ik krijg ook niet "no data" dus er moet wel data aanwezig zijn maar krijg geen output. Ziet iemand van jullie de oplossing?

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 13:12
Welk byte verstuur je?

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • Stijnb_
  • Registratie: Oktober 2009
  • Laatst online: 28-09 00:26
Ik verstuur gewoon een Byte van de plc mb100.

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 13:12
Zou dat een non printable character zou kunnen zijn waar print niets mee kan? Probeer eens vanuit de PLC iets te versturen wat te vertalen is naar een printable character.

Een andere check die je zou kunnen doen is wat de lengte van de string is die je ontvangt, je test nu zo te zien alleen op het feit of je een string terugkrijgt maar niet of de lengte > 0 is.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • Stijnb_
  • Registratie: Oktober 2009
  • Laatst online: 28-09 00:26
Ik heb in plaats van een Byte te versturen een String geprobeerd die de waarde 12345 verstuurd.
Momenteel krijg ik data binnen alleen is deze wat onbruikbaar.

Dit is de output:
code:
1
2
3
4
5
6
    EL?Q@?  ??!
?h ???#HD??    (
d?? ?0?@?H
? 12345? %P@@?A ?@?D@??? (??B??0H0??J?E0??
                                         @? 1?D?
 ? ????&D@?A?`?


Mijn string is te zien 12345. Alleen die andere tekens moeten worden weggefilterd alleen weet ik niet hoe ik dit allemaal weg krijg. Omdat ik maar net begonnen ben met python.

  • Mijzelf
  • Registratie: September 2004
  • Niet online
Dit ziet eruit alsof er nog een protocol omheen zit.

Als je pyton servertje draait kun je met telnet ofzo verbinden, en gewoon wat intypen. Dat zou 'normaal' binnen moeten komen.

  • Rutix
  • Registratie: Augustus 2009
  • Laatst online: 05-09-2024
Normaal gebruik je een OPC server om te communiceren met PLC's. Maar je kunt het ook doen door TCON,TSEND en TRECV blocks te gebruiken in de PLC en je eigen communicatie dingetje te maken door een byte over te zenden. Hoe doe je het op dit moment?

[ Voor 17% gewijzigd door Rutix op 20-07-2013 12:00 ]

Nothing to see here!


  • Stijnb_
  • Registratie: Oktober 2009
  • Laatst online: 28-09 00:26
Nu met tcon en tsend omdat ik geen software van siemens wil gebruiken. Ik wil het zoveel mogelijk gratis houden.

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 13:12
Heb je een configuratie instelling waarmee je kunt aangeven dat het ding "raw TCP" moet gaan doen? Dit is echt weer zo'n Siemens ding zo te zien. Valt nog mee dat je je ethernet verbinding niet moet instellen op 9600,E,7,2 :D
Zo'n beetje elke andere PLC boer heeft standaard de mogelijkheid om met Modbus/TCP dingen te doen, maar dat zal bij Siemens ook nog steeds niet het geval zijn denk ik?

[edit]
Rutix schreef op zaterdag 20 juli 2013 @ 11:57:
Normaal gebruik je een OPC server om te communiceren met PLC's.
Die OPC server heeft net zo goed een module/client om met de PLC te communiceren.

[ Voor 23% gewijzigd door farlane op 20-07-2013 21:25 ]

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • Stijnb_
  • Registratie: Oktober 2009
  • Laatst online: 28-09 00:26
Ik ben momenteel aan het testen met de s7-1214c en normaal gezien zou er ook modbus mogelijkheden inzitten. Momenteel heb al een beter output omdat ik mijn python programma heb aangepast. Zal deze morgens eens posten en zal dan ook eens proberen om een communicatie optestarten met modbus.

  • CM5
  • Registratie: Maart 2003
  • Niet online

CM5

Al gekeken naar libnodave? Heb het wel eens gebuikt in vb.net omgeving, werkt prima.

Er bestaat ook een pytohon wrapper zie ik. https://github.com/netdata/python-libnodave

  • Stijnb_
  • Registratie: Oktober 2009
  • Laatst online: 28-09 00:26
Ik heb al rond gekeken op internet. Maar velen konden geen verbinding opzetten met de libnodave naar eens s7-1200. Met s7-300/400 is het geen probleem maar met de nieuwere plcs zouden er problemen zijn.

Ik ben dus gaan kijken of modbus beschikbaar was via de S7-1200 serie.
Dit is dus beschikbaar en ben aan de slag er mee.
Momenteel gebruik ik de "pymodbus" module deze is erg goed en krijg er mooie resultaten mee.

[ Voor 35% gewijzigd door Stijnb_ op 21-07-2013 17:22 ]


  • Matis
  • Registratie: Januari 2007
  • Laatst online: 20:57

Matis

Rubber Rocket

Wat zegt wireshark als je die de poort mee laat sniffen?

If money talks then I'm a mime
If time is money then I'm out of time

Pagina: 1