from io_module import IO_Module from modbus import Modbus from log_reader import AnalogInputLogReader import colorama from colorama import Fore from time import sleep from serial import Serial from mb_registers import AO_REGS class IO_AnalogOutput(IO_Module): def __init__(self, modbus: Modbus): self.modbus = modbus super().__init__(self.modbus) '''Чтение параметров''' # Значения состояний выходов вкл./выкл. (битовое поле) def get_outputs_state(self): data = self.modbus.read_holding_registers(AO_REGS['aout_state'], 1) return format(data[0], '04b') # Режим аналоговых выходов (0 - напряжение или 1 - ток. (битовое поле)) def get_outputs_mode(self): data = self.modbus.read_holding_registers(AO_REGS['aout_mode'], 1) return format(data[0], '04b') '''Установка параметров''' def set_outputs_state(self, val): self.modbus.write_holding_register(AO_REGS['aout_state'], val) def set_inputs_mode(self, val): self.modbus.write_holding_register(AO_REGS['aout_mode'], val) def main(): colorama.init(autoreset=True) serial_port = Serial('COM24', 115200, timeout=0.05, parity='N', xonxoff=False) ao_modbus = Modbus(serial_port, 8) ao = IO_AnalogOutput(ao_modbus) '''Тесты отдельного модуля аналоговых выходов''' ao.sys.get_system_vars() '''Чтение параметров''' print(ao.get_outputs_state()) print(ao.get_outputs_state()) '''Установка параметров''' # ao.set_outputs_state(0b1111) '''Сохранение настроек''' ao.sys.save_sattings() # ai.sys.save_sattings() '''Обновление прошивки''' # ao_modbus.MB_DEBUG = True # ao.updater.update('fw.bin', 'MAO_4') if __name__ == '__main__': main()