|
@@ -5,8 +5,7 @@ import colorama
|
|
|
from colorama import Fore
|
|
|
from time import sleep
|
|
|
from serial import Serial
|
|
|
-from mb_registers import AO_REGS
|
|
|
-
|
|
|
+from mb_registers import AoReg
|
|
|
|
|
|
class IO_AnalogOutput(IO_Module):
|
|
|
|
|
@@ -18,21 +17,57 @@ class IO_AnalogOutput(IO_Module):
|
|
|
|
|
|
# Значения состояний выходов вкл./выкл. (битовое поле)
|
|
|
def get_outputs_state(self):
|
|
|
- data = self.modbus.read_holding_registers(AO_REGS['aout_state'], 1)
|
|
|
+ data = self.modbus.read_holding_registers(AoReg.OUT_STATE.value, 1)
|
|
|
+ if self.DBG:
|
|
|
+ print(Fore.GREEN + f'Read reg {[hex(AoReg.OUT_STATE.value)]} outputs state: {format(data[0], '04b')}')
|
|
|
+ return format(data[0], '04b')
|
|
|
+
|
|
|
+ # Значения состояний выходов вкл./выкл. в безопасном режиме (битовое поле)
|
|
|
+ def get_outputs_state_save(self):
|
|
|
+ data = self.modbus.read_holding_registers(AoReg.OUT_STATE_SAVE.value, 1)
|
|
|
+ if self.DBG:
|
|
|
+ print(Fore.GREEN + f'Read reg {[hex(AoReg.OUT_STATE_SAVE.value)]} outputs state (SAVE MODE): {format(data[0], '04b')}')
|
|
|
return format(data[0], '04b')
|
|
|
|
|
|
- # Режим аналоговых выходов (0 - напряжение или 1 - ток. (битовое поле))
|
|
|
+ # Режим работы аналоговых выходов (0 - напряжение или 1 - ток. (битовое поле))
|
|
|
def get_outputs_mode(self):
|
|
|
- data = self.modbus.read_holding_registers(AO_REGS['aout_mode'], 1)
|
|
|
+ data = self.modbus.read_holding_registers(AoReg.OUT_MODE.value, 1)
|
|
|
+ if self.DBG:
|
|
|
+ print(Fore.GREEN + f'Read reg {[hex(AoReg.OUT_MODE.value)]} outputs mode: {format(data[0], '04b')}')
|
|
|
+ return format(data[0], '04b')
|
|
|
+
|
|
|
+ # Режим работы аналоговых выходов (0 - напряжение или 1 - ток. (битовое поле))
|
|
|
+ def get_outputs_mode_save(self):
|
|
|
+ data = self.modbus.read_holding_registers(AoReg.OUT_MODE_SAVE.value, 1)
|
|
|
+ if self.DBG:
|
|
|
+ print(Fore.GREEN + f'Read reg {[hex(AoReg.OUT_MODE_SAVE.value)]} outputs mode (SAVE MODE): {format(data[0], '04b')}')
|
|
|
return format(data[0], '04b')
|
|
|
|
|
|
'''Установка параметров'''
|
|
|
|
|
|
+ # Значения состояний выходов вкл./выкл. (битовое поле)
|
|
|
def set_outputs_state(self, val):
|
|
|
- self.modbus.write_holding_register(AO_REGS['aout_state'], val)
|
|
|
+ if self.DBG:
|
|
|
+ print(Fore.BLUE + f'Write reg {[hex(AoReg.OUT_STATE.value)]} outputs state: {format(val, '04b')}')
|
|
|
+ self.modbus.write_holding_register(AoReg.OUT_STATE.value, val)
|
|
|
|
|
|
- def set_inputs_mode(self, val):
|
|
|
- self.modbus.write_holding_register(AO_REGS['aout_mode'], val)
|
|
|
+ # Значения состояний выходов вкл./выкл. в безопасном режиме (битовое поле)
|
|
|
+ def set_outputs_state_save(self, val):
|
|
|
+ if self.DBG:
|
|
|
+ print(Fore.BLUE + f'Write reg {[hex(AoReg.OUT_STATE_SAVE.value)]} outputs state (SAVE MODE): {format(val, '04b')}')
|
|
|
+ self.modbus.write_holding_register(AoReg.OUT_STATE_SAVE.value, val)
|
|
|
+
|
|
|
+ # Значения состояний выходов вкл./выкл. (битовое поле)
|
|
|
+ def set_outputs_mode(self, val):
|
|
|
+ if self.DBG:
|
|
|
+ print(Fore.BLUE + f'Write reg {[hex(AoReg.OUT_MODE.value)]} outputs mode (SAVE MODE): {format(val, '04b')}')
|
|
|
+ self.modbus.write_holding_register(AoReg.OUT_MODE.value, val)
|
|
|
+
|
|
|
+ # Значения состояний выходов вкл./выкл. в безопасном режиме (битовое поле)
|
|
|
+ def set_outputs_mode_save(self, val):
|
|
|
+ if self.DBG:
|
|
|
+ print(Fore.BLUE + f'Write reg {[hex(AoReg.OUT_MODE_SAVE.value)]} outputs mode (SAVE MODE): {format(val, '04b')}')
|
|
|
+ self.modbus.write_holding_register(AoReg.OUT_MODE_SAVE.value, val)
|
|
|
|
|
|
|
|
|
|
|
@@ -41,16 +76,22 @@ def main():
|
|
|
serial_port = Serial('COM24', 115200, timeout=0.05, parity='N', xonxoff=False)
|
|
|
ao_modbus = Modbus(serial_port, 8)
|
|
|
ao = IO_AnalogOutput(ao_modbus)
|
|
|
+ ao.DBG = True
|
|
|
|
|
|
'''Тесты отдельного модуля аналоговых выходов'''
|
|
|
- ao.sys.get_system_vars()
|
|
|
-
|
|
|
- '''Чтение параметров'''
|
|
|
- # print(ao.get_outputs_state())
|
|
|
- # print(ao.get_outputs_state())
|
|
|
-
|
|
|
- '''Установка параметров'''
|
|
|
- # ao.set_outputs_state(0b1111)
|
|
|
+ # ao.sys.get_system_vars()
|
|
|
+
|
|
|
+ '''Настройка аналоговых выходов'''
|
|
|
+ ao.set_outputs_state(0b1111)
|
|
|
+ ao.set_outputs_state_save(0b1111)
|
|
|
+ ao.set_outputs_mode(0b0101)
|
|
|
+ ao.set_outputs_mode_save(0b1010)
|
|
|
+
|
|
|
+ '''Чтение режимов работы аналоговых выходов'''
|
|
|
+ ao.get_outputs_state()
|
|
|
+ ao.get_outputs_state_save()
|
|
|
+ ao.get_outputs_mode()
|
|
|
+ ao.get_outputs_mode_save()
|
|
|
|
|
|
'''Сохранение настроек'''
|
|
|
# ao.sys.save_sattings()
|