From 687c7ab91a586823a92ccb774e4961e72be0934e Mon Sep 17 00:00:00 2001 From: Sven Sager Date: Fri, 12 Feb 2021 19:43:11 +0100 Subject: [PATCH] Flat: Switch and Relais as real io of core class, added MEMs to pictory.py --- revpimodio2/__init__.py | 4 ++-- revpimodio2/device.py | 25 +++++++++++++++++++++---- revpimodio2/pictory.py | 6 ++++++ setup.py | 2 +- 4 files changed, 30 insertions(+), 7 deletions(-) diff --git a/revpimodio2/__init__.py b/revpimodio2/__init__.py index d5d06f2..136c442 100644 --- a/revpimodio2/__init__.py +++ b/revpimodio2/__init__.py @@ -16,7 +16,7 @@ __all__ = [ "RevPiModIO", "RevPiModIODriver", "RevPiModIOSelected", "run_plc", "RevPiNetIO", "RevPiNetIODriver", "RevPiNetIOSelected", "Cycletools", "EventCallback", - "AIO", "COMPACT", "DI", "DO", "DIO", + "AIO", "COMPACT", "DI", "DO", "DIO", "FLAT", ] __author__ = "Sven Sager " __copyright__ = "Copyright (C) 2020 Sven Sager" @@ -96,7 +96,7 @@ def consttostr(value) -> str: # Benötigte Klassen importieren -from .pictory import AIO, COMPACT, DI, DO, DIO +from .pictory import AIO, COMPACT, DI, DO, DIO, FLAT from .helper import Cycletools, EventCallback from .modio import RevPiModIO, RevPiModIODriver, RevPiModIOSelected, run_plc from .netio import RevPiNetIO, RevPiNetIODriver, RevPiNetIOSelected diff --git a/revpimodio2/device.py b/revpimodio2/device.py index 57ec747..271d557 100644 --- a/revpimodio2/device.py +++ b/revpimodio2/device.py @@ -1158,16 +1158,17 @@ class Flat(Base): """ __slots__ = "_slc_temperature", "_slc_frequency", "_slc_led", \ + "_slc_switch", "_slc_dout", \ "a1green", "a1red", "a2green", "a2red", \ "a3green", "a3red", "a4green", "a4red", \ - "a5green", "a5red", "wd" + "a5green", "a5red", "relais", "switch", "wd" def __setattr__(self, key, value): """Verhindert Ueberschreibung der LEDs.""" if hasattr(self, key) and key in ( "a1green", "a1red", "a2green", "a2red", "a3green", "a3red", "a4green", "a4red", - "a5green", "a5red", "wd"): + "a5green", "a5red", "relais", "switch", "wd"): raise AttributeError( "direct assignment is not supported - use .value Attribute" ) @@ -1178,9 +1179,11 @@ class Flat(Base): """Core-Klasse vorbereiten.""" # Statische IO Verknüpfungen des Compacts - self._slc_led = slice(6, 8) + self._slc_led = slice(7, 9) self._slc_temperature = slice(4, 5) self._slc_frequency = slice(5, 6) + self._slc_switch = slice(6, 7) + self._slc_dout = slice(11, 12) # Exportflags prüfen (Byte oder Bit) lst_led = self._modio.io[self._slc_devoff][self._slc_led.start] @@ -1252,7 +1255,21 @@ class Flat(Base): exp_a5red, None, "LED_A5_RED", "9" ], OUT, "little", False) - # todo: Add internal switch and relay, like Connect + # Real IO for switch + lst_io = self._modio.io[self._slc_devoff][self._slc_switch.start] + exp_io = lst_io[0].export + self.switch = IOBase(self, [ + "flat.switch", 0, 1, self._slc_switch.start, + exp_io, None, "Flat_Switch", "0" + ], INP, "little", False) + + # Real IO for relais + lst_io = self._modio.io[self._slc_devoff][self._slc_dout.start] + exp_io = lst_io[0].export + self.relais = IOBase(self, [ + "flat.relais", 0, 1, self._slc_dout.start, + exp_io, None, "Flat_Relais", "0" + ], OUT, "little", False) # Software watchdog einrichten self.wd = IOBase(self, [ diff --git a/revpimodio2/pictory.py b/revpimodio2/pictory.py index 1ec623f..145af7d 100644 --- a/revpimodio2/pictory.py +++ b/revpimodio2/pictory.py @@ -126,3 +126,9 @@ class COMPACT: AIN_MODE_0_10V = 1 # 0 - 10V AIN_MODE_PT100 = 3 # PT100 AIN_MODE_PT1000 = 7 # PT1000 + + +class FLAT: + """Memory value mappings for RevPi Flat 1.0 (RevPiFlat_20200921_1_0.rap).""" + IN_RANGE_0_10V = 0 + IN_RANGE_4_20MA = 1 diff --git a/setup.py b/setup.py index 0b1789a..1f7fb72 100644 --- a/setup.py +++ b/setup.py @@ -17,7 +17,7 @@ setup( license="LGPLv3", name="revpimodio2", - version="2.5.6", + version="2.5.6a", packages=["revpimodio2"], python_requires="~=3.2",