Modbus Protocol

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Andi_F
User
Beiträge: 5
Registriert: Mittwoch 15. Oktober 2014, 16:41

Hallo zusammen

Ich habe ein Modul mit "Python script interpreter engine v. 2.7.2 multi thread".

Wir würden gerne hierzu eine Modbus library verwenden die man auf dieser Interpreter engine verwenden kann.
z.Bps. http://minimalmodbus.sourceforge.net/index.html

Aber woran kann ich sehen ob diese Library hier funktionieren kann?
Oder hat jemand einen Tipp, welche Modbus library ich hier verwenden könnten, dass diese mit dem 2.7.2 verwendbar ist?

danke für Eure Hilfe

(Sicher ein Anfängerfrage :-)
BlackJack

@Andi_F: Die in Deinem Beitrag verlinkte Dokumentation hat ziemlich am Anfang einen Link auf den PyPI-Eintrag von dem Projekt: https://pypi.python.org/pypi/MinimalModbus/

Und dort steht ebenfalls ziemlich am Anfang als letztes im „Introduction”-Abschnitt der Satz „Tested with Python2.7 and Python3.2.”

Edit: Der selbe Text steht auch in der verlinkten Dokumentation. Wahrscheinlich hat mich das rot der Seitenleiste einfach nur zu schnell von dieser Webseite verscheucht. :-)
Andi_F
User
Beiträge: 5
Registriert: Mittwoch 15. Oktober 2014, 16:41

okay, sorry bin da nichtt 100% vom Fach ..
also sollte es passen :-)
Andi_F
User
Beiträge: 5
Registriert: Mittwoch 15. Oktober 2014, 16:41

Hi so nachdem das mit dem 2.7 geklärt ist :-)
folgende Fragestellung:

1) Habe noch das problem mit dem serialPort:
das Minimlamodbus (so wie ich verstehe) verwendet folgendes für den serial port: http://pyserial.sourceforge.net/

2) Auf meiner hardware habe dieses als Serial Port zu verwenden:
http://sourceforge.net/projects/pyseria ... /pyserial/


Meine Frage: ist die pyserial aus 1) die gleiche wie unter 2)?

Wäre super wenn Ihr mir hier helfen könntet?
danke
grüße
andi
BlackJack

@Andi_F: Ja das ist das gleiche.
Andi_F
User
Beiträge: 5
Registriert: Mittwoch 15. Oktober 2014, 16:41

Hi, erstmal noch vielen dank, leider hatte ich mich da versehen:

Ich muss mal nachjustieren:
also die hardware auf der das Python script läuft spricht die Serielle schnittstelle über eine spezielle Library an:
Download: https://www.zeta-uploader.com/de/dl-h?hash=858343234
Ser.py


Tja, und das ist jetzt noch die Frage ob damit das minimalmodbus trotzdem noch geht.
Na ja, wenn einer kurz zeit wär es natürlich super wenn Ihr euch das kurz anschaut.. aber kann ich verstehen wenn das zuviel aufwand jetzt wäre... :-)
Vielleicht habt Ihr aber trotzdem ein paar tipps..

danke!
BlackJack

@Andi_F: Wer oder was benutzt dieses Skript? „Die Hardware” lässt ja kein Python laufen. Dieses `Ser.py` scheint doch auch nur das `serial`-Modul zu verwenden‽

Der Autor verwendet erschreckend oft ``global``, selbst wenn das überhaupt keinen Sinn macht. Und jedes noch so kleine Zwischenergebnis wird an einen Namen gebunden. Mal eine Kostprobe:

Code: Alles auswählen

def getRTS():
  global freeser
  print 'dummy getRTS()'
  rts = False
  if rts == False:
    result = 0
  else:
    result = 1
  return result
WTF‽
Benutzeravatar
darktrym
User
Beiträge: 784
Registriert: Freitag 24. April 2009, 09:26

Schlimmer noch der Autor kann nicht pogrammieren weder in Python noch allgemein.
Der Code könnte so auch als Lehrbeispiel für notwendiges Refactoring gelten. Hart kodierte Konstanten, fehlende Kommentare, global Nutzung(für was eigentlich), Duplizierung vorhandenen Codes, Ignorieren von Konventionen.
Ich würde annehmen Speed wäre eine Ganzzahl und kein String!

Als Anregung:

Code: Alles auswählen

if speed in ('300', '600', '1200', '2400', '4800', '9600', '19200', '38400', '57600', '115200'):
    freeser.setBaudrate(int(speed))
oder besser gleich ein Dictionary.
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

Was man an dem Code auch immer schön machen kann, wenn man das Interface nicht anfassen will:
ser.py
Andi_F
User
Beiträge: 5
Registriert: Mittwoch 15. Oktober 2014, 16:41

Hi ertsmal danke für Eure Antworten:
ALSO: das Modul ist ein Telit: www.telit.com

die ser.py emuliert die auf dem Modul vorhandene RS232 schnittstelle auf einer PC Umgebung
Auf Seite 93 ist das so beschreiben: https://www.zeta-uploader.com/446378908

A collection of Python modules written in Python (not built-in) that emulates custom built-in
modules is available.
MDM.py
MDM2.py
SER.py
SER2.py
GPIO.py
GPS.py
USB0.py
Copy these files on PC.
These modules make the difference between running the script on PC and on module



Möglicherweise bin ich jetzt von einem ins tausendste gekommen und habe euch die Ser.py geschciokt, die ja so wie Ihr sagt ..nicht komplett sein kann

...Ich möchte ja nur wissen ob ich minimalmodbus verwenden kann. und scheinbar gibt es hier einschränkungen bei dem Teilit was den seriellen Port angeht..
Mein Problem ist: ich weiss gar nicht wo ich nachschauen soll um eine solche Frage zu beantworten?
BlackJack

@Andi_F: Also dann gibt es auf dem Gerät also ein `SER.py`-Modul dessen API mit dem Modul das Du hochgeladen hast auf dem PC emuliert wird. Man bräuchte also für ein Modul das `serial` verwendet für das Gerät ein Modul das die `serial`-API mit Hilfe der `SER.py` zur Verfügung stellt. Quasi genau das Gegenteil von der `Ser.py` für den PC.
Antworten