| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 | 
							- 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 AoReg
 
- 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(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 - ток. (битовое поле))
 
-     def get_outputs_mode(self):
 
-         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 get_outputs_power(self):
 
-         data = self.modbus.read_holding_registers(AoReg.OUT_POWER.value, 1)
 
-         if self.DBG: 
 
-             print(Fore.GREEN +  f'Read reg {[hex(AoReg.OUT_POWER.value)]} outputs power: {format(data[0], '04b')}')
 
-         return format(data[0], '04b')
 
-     '''Установка параметров'''
 
-     # Значения состояний выходов вкл./выкл. (битовое поле)
 
-     def set_outputs_state(self, 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_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: {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)
 
-     # Установка значения вы выходе (относительные единицы)
 
-     def set_ouputs_value(self, channel, val):
 
-         if self.DBG:
 
-             print(Fore.BLUE +  f'Write reg {[hex(AoReg.OUT_VALUE.value + channel - 1)]} output {channel} value: {val}')
 
-         self.modbus.write_holding_register(AoReg.OUT_VALUE.value + channel - 1, val)
 
-     # Установка значения вы выходе в безопасном режиме (относительные единицы)
 
-     def set_ouputs_value_save(self, channel, val):
 
-         if self.DBG:
 
-             print(Fore.BLUE +  f'Write reg {[hex(AoReg.OUT_VALUE_SAVE.value + channel - 1)]} output {channel} value: {val}')
 
-         self.modbus.write_holding_register(AoReg.OUT_VALUE_SAVE.value + channel - 1, val)
 
- def main():
 
-     colorama.init(autoreset=True)
 
-     serial_port = Serial('COM22', 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()
 
-         
 
-     '''Настройка аналоговых выходов'''
 
-     # ao.set_outputs_state(0b1111)
 
-     # ao.set_outputs_state_save(0b1111)
 
-     # ao.set_outputs_mode(0b0000)
 
-     # ao.set_outputs_mode_save(0b0000)
 
-     '''Чтение режимов работы аналоговых выходов'''
 
-     # ao.get_outputs_state()
 
-     # ao.get_outputs_state_save()
 
-     # ao.get_outputs_mode()
 
-     # ao.get_outputs_mode_save()
 
-     # ao.get_outputs_power()
 
-     '''Установка значений на выходах'''
 
-     # values = [50000, 50000, 50000, 50000]
 
-     # ao.set_ouputs_value(1, values[0])
 
-     # ao.set_ouputs_value(2, values[1])
 
-     # ao.set_ouputs_value(3, values[2])
 
-     # ao.set_ouputs_value(4, values[3])
 
-     
 
-     '''
 
-     while True:
 
-         ao.set_ouputs_value(4, values[0])
 
-         values[0] += 100
 
-         if values[0] >= 50000:
 
-             values[0] = 0
 
-         sleep(0.1)
 
-     '''
 
-     '''
 
-     ao.set_ouputs_value(1, 12)
 
-     ao.set_ouputs_value(2, 13)
 
-     ao.set_ouputs_value(3, 14)
 
-     ao.set_ouputs_value(4, 15)
 
-     ao.set_ouputs_value_save(1, 17)
 
-     ao.set_ouputs_value_save(2, 18)
 
-     ao.set_ouputs_value_save(3, 19)
 
-     ao.set_ouputs_value_save(4, 20)
 
-     '''
 
-     '''Сохранение настроек'''
 
-     # ao.sys.save_sattings()
 
-     '''Обновление прошивки'''
 
-     ao_modbus.MB_DEBUG = True
 
-     ao.updater.update('fw.bin', 'MAO_4')
 
- if __name__ == '__main__':
 
-     main()
 
 
  |