analog_out.py 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. from io_module import IO_Module
  2. from modbus import Modbus
  3. from log_reader import AnalogInputLogReader
  4. import colorama
  5. from colorama import Fore
  6. from time import sleep
  7. from serial import Serial
  8. from mb_registers import AO_REGS
  9. class IO_AnalogOutput(IO_Module):
  10. def __init__(self, modbus: Modbus):
  11. self.modbus = modbus
  12. super().__init__(self.modbus)
  13. '''Чтение параметров'''
  14. # Значения состояний выходов вкл./выкл. (битовое поле)
  15. def get_outputs_state(self):
  16. data = self.modbus.read_holding_registers(AO_REGS['aout_state'], 1)
  17. return format(data[0], '04b')
  18. # Режим аналоговых выходов (0 - напряжение или 1 - ток. (битовое поле))
  19. def get_outputs_mode(self):
  20. data = self.modbus.read_holding_registers(AO_REGS['aout_mode'], 1)
  21. return format(data[0], '04b')
  22. '''Установка параметров'''
  23. def set_outputs_state(self, val):
  24. self.modbus.write_holding_register(AO_REGS['aout_state'], val)
  25. def set_inputs_mode(self, val):
  26. self.modbus.write_holding_register(AO_REGS['aout_mode'], val)
  27. def main():
  28. colorama.init(autoreset=True)
  29. serial_port = Serial('COM24', 115200, timeout=0.05, parity='N', xonxoff=False)
  30. ao_modbus = Modbus(serial_port, 8)
  31. ao = IO_AnalogOutput(ao_modbus)
  32. '''Тесты отдельного модуля аналоговых выходов'''
  33. ao.sys.get_system_vars()
  34. '''Чтение параметров'''
  35. # print(ao.get_outputs_state())
  36. # print(ao.get_outputs_state())
  37. '''Установка параметров'''
  38. # ao.set_outputs_state(0b1111)
  39. '''Сохранение настроек'''
  40. # ao.sys.save_sattings()
  41. '''Обновление прошивки'''
  42. # ao_modbus.MB_DEBUG = True
  43. # ao.updater.update('fw.bin', 'MAO_4')
  44. if __name__ == '__main__':
  45. main()