From 3771a7847e4cf043774a038aa8eb1e43f0b648d0 Mon Sep 17 00:00:00 2001 From: Sven Sager Date: Tue, 7 Feb 2023 09:38:11 +0100 Subject: [PATCH] Replaces Master-Slave with Client-Server Expunging all occurrences of inappropriate language of the query and response paradigm of PLC communications. We are familiar with the Modbus terminology and fully support this change. https://www.modbus.org/docs/Client-ServerPR-07-2020-final.docx.pdf --- docs/conf.py | 4 ---- docs/index.rst | 2 +- src/revpimodio2/netio.py | 48 ++++++++++++++++++++-------------------- 3 files changed, 25 insertions(+), 29 deletions(-) diff --git a/docs/conf.py b/docs/conf.py index ca0f46a..2a556bd 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -2,7 +2,6 @@ # Configuration file for the Sphinx documentation builder. # # For the full list of built-in configuration values, see the documentation: -# https://www.sphinx-doc.org/en/master/usage/configuration.html import os import sys @@ -11,7 +10,6 @@ sys.path.insert(0, os.path.abspath('../src')) from revpimodio2 import __version__ # -- Project information ----------------------------------------------------- -# https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information project = 'revpimodio2' copyright = '2023, Sven Sager' @@ -19,7 +17,6 @@ author = 'Sven Sager' version = __version__ # -- General configuration --------------------------------------------------- -# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration extensions = [ 'sphinx.ext.autodoc', @@ -31,7 +28,6 @@ templates_path = ['_templates'] exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] # -- Options for HTML output ------------------------------------------------- -# https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output html_theme = 'alabaster' html_static_path = ['_static'] diff --git a/docs/index.rst b/docs/index.rst index 50cf826..8fc05d2 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -1,4 +1,4 @@ -.. revpimodio2 documentation master file, created by +.. revpimodio2 documentation main file, created by sphinx-quickstart on Sun Jan 22 17:49:41 2023. You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive. diff --git a/src/revpimodio2/netio.py b/src/revpimodio2/netio.py index a315db2..1007a40 100644 --- a/src/revpimodio2/netio.py +++ b/src/revpimodio2/netio.py @@ -62,7 +62,7 @@ class NetFH(Thread): "__int_buff", "__dictdirty", "__flusherr", "__replace_ios_h", \ "__pictory_h", "__position", "__sockerr", "__sockend", \ "__socklock", "__timeout", "__waitsync", "_address", \ - "_slavesock", "daemon" + "_serversock", "daemon" def __init__(self, address: tuple, check_replace_ios: bool, timeout=500): """ @@ -91,7 +91,7 @@ class NetFH(Thread): self.__timeout = None self.__waitsync = None self._address = address - self._slavesock = None # type: socket.socket + self._serversock = None # type: socket.socket # Parameterprüfung if not isinstance(address, tuple): @@ -105,8 +105,8 @@ class NetFH(Thread): self.__set_systimeout(timeout) self._connect() - if self._slavesock is None: - raise FileNotFoundError("can not connect to revpi slave") + if self._serversock is None: + raise FileNotFoundError("can not connect to revpi server") # NetFH konfigurieren self.__position = 0 @@ -129,10 +129,10 @@ class NetFH(Thread): # Alles beenden, wenn nicht erlaubt self.__sockend.set() self.__sockerr.set() - self._slavesock.close() + self._serversock.close() raise AclException( "write access to the process image is not permitted - use " - "monitoring=True or check aclplcslave.conf on RevPi and " + "monitoring=True or check aclplcserver.conf on RevPi and " "reload revpipyload!" ) @@ -146,8 +146,8 @@ class NetFH(Thread): self.__timeout = value / 1000 # Timeouts in Socket setzen - if self._slavesock is not None: - self._slavesock.settimeout(self.__timeout) + if self._serversock is not None: + self._serversock.settimeout(self.__timeout) # 45 Prozent vom Timeout für Synctimer verwenden self.__waitsync = self.__timeout / 100 * 45 @@ -156,7 +156,7 @@ class NetFH(Thread): raise ValueError("value must between 10 and 60000 milliseconds") def _connect(self) -> None: - """Stellt die Verbindung zu einem RevPiSlave her.""" + """Stellt die Verbindung zu einem RevPiPlcServer her.""" # Neuen Socket aufbauen so = socket.socket(socket.AF_INET, socket.SOCK_STREAM) try: @@ -205,10 +205,10 @@ class NetFH(Thread): else: # Alten Socket trennen with self.__socklock: - if self._slavesock is not None: - self._slavesock.close() + if self._serversock is not None: + self._serversock.close() - self._slavesock = so + self._serversock = so self.__sockerr.clear() # Timeout setzen @@ -241,7 +241,7 @@ class NetFH(Thread): send_len = len(send_bytes) while counter < send_len: # Send loop to trigger timeout of socket on each send - sent = self._slavesock.send(send_bytes[counter:]) + sent = self._serversock.send(send_bytes[counter:]) if sent == 0: self.__sockerr.set() raise IOError("lost network connection while send") @@ -249,7 +249,7 @@ class NetFH(Thread): self.__buff_recv.clear() while recv_len > 0: - count = self._slavesock.recv_into( + count = self._serversock.recv_into( self.__buff_block, min(recv_len, self.__buff_size) ) if count == 0: @@ -270,7 +270,7 @@ class NetFH(Thread): def clear_dirtybytes(self, position=None) -> None: """ - Entfernt die konfigurierten Dirtybytes vom RevPi Slave. + Entfernt die konfigurierten Dirtybytes vom RevPi Server. Diese Funktion wirft keine Exception bei einem uebertragungsfehler, veranlasst aber eine Neuverbindung. @@ -319,17 +319,17 @@ class NetFH(Thread): self.__sockerr.set() # Vom Socket sauber trennen - if self._slavesock is not None: + if self._serversock is not None: try: self.__socklock.acquire() - self._slavesock.sendall(_sysexit) - self._slavesock.shutdown(socket.SHUT_WR) + self._serversock.sendall(_sysexit) + self._serversock.shutdown(socket.SHUT_WR) except Exception: pass finally: self.__socklock.release() - self._slavesock.close() + self._serversock.close() def flush(self) -> None: """Schreibpuffer senden.""" @@ -538,12 +538,12 @@ class NetFH(Thread): # Kein Fehler aufgetreten, sync durchführen wenn socket frei if self.__socklock.acquire(blocking=False): try: - self._slavesock.sendall(_syssync) + self._serversock.sendall(_syssync) self.__buff_recv.clear() recv_lenght = 2 while recv_lenght > 0: - count = self._slavesock.recv_into( + count = self._serversock.recv_into( self.__buff_block, recv_lenght ) if count == 0: @@ -857,7 +857,7 @@ class RevPiNetIO(_RevPiModIO): def net_cleardefaultvalues(self, device=None) -> None: """ - Loescht Defaultwerte vom PLC Slave. + Loescht Defaultwerte vom PLC Server. :param device: nur auf einzelnes Device anwenden, sonst auf Alle """ @@ -879,7 +879,7 @@ class RevPiNetIO(_RevPiModIO): def net_setdefaultvalues(self, device=None) -> None: """ - Konfiguriert den PLC Slave mit den piCtory Defaultwerten. + Konfiguriert den PLC Server mit den piCtory Defaultwerten. Diese Werte werden auf dem RevPi gesetzt, wenn die Verbindung unerwartet (Netzwerkfehler) unterbrochen wird. @@ -924,7 +924,7 @@ class RevPiNetIO(_RevPiModIO): dirtybytes += \ int_byte.to_bytes(length=1, byteorder="little") - # Dirtybytes an PLC Slave senden + # Dirtybytes an PLC Server senden self._myfh.set_dirtybytes( dev._offset + dev._slc_out.start, dirtybytes )