|
@@ -52,6 +52,18 @@ class IO_AnalogInput(IO_Module):
|
|
|
return format(data[0], '012b')
|
|
|
|
|
|
|
|
|
+ def get_voltage_range(self):
|
|
|
+ 'Диапазон измерения напряжения'
|
|
|
+ data = self.modbus.read_holding_registers(AiReg.IN_VOL_RANGE.value, 1)
|
|
|
+ return format(data[0], '012b')
|
|
|
+
|
|
|
+
|
|
|
+ def get_current_range(self):
|
|
|
+ 'Диапазон измерения напряжения'
|
|
|
+ data = self.modbus.read_holding_registers(AiReg.IN_CUR_RANGE.value, 1)
|
|
|
+ return format(data[0], '012b')
|
|
|
+
|
|
|
+
|
|
|
def get_inputs_alarm(self):
|
|
|
'Аварии аналоговых входов (битовое поле)'
|
|
|
data = self.modbus.read_holding_registers(AiReg.IN_FAILURE.value, 1)
|
|
@@ -117,9 +129,7 @@ class IO_AnalogInput(IO_Module):
|
|
|
|
|
|
def get_presets_min(self):
|
|
|
'Минимальное значение уставок по всем каналам'
|
|
|
- data = []
|
|
|
- for i in range(12):
|
|
|
- data.append(self.modbus.read_float_holding(AiReg.PR_MIN.value + i*2))
|
|
|
+ data = struct.unpack('>ffffffffffff', self.modbus.read_holding_registers_raw(AiReg.PR_MIN.value, 24))
|
|
|
return data
|
|
|
|
|
|
|
|
@@ -130,11 +140,9 @@ class IO_AnalogInput(IO_Module):
|
|
|
|
|
|
def get_presets_max(self):
|
|
|
'Максимальное значение уставок по все каналам'
|
|
|
- data = []
|
|
|
- for i in range(12):
|
|
|
- data.append(self.modbus.read_float_holding(AiReg.PR_MAX.value + i*2))
|
|
|
+ data = struct.unpack('>ffffffffffff', self.modbus.read_holding_registers_raw(AiReg.PR_MAX.value, 24))
|
|
|
return data
|
|
|
-
|
|
|
+
|
|
|
|
|
|
def get_preset_hist(self, channel):
|
|
|
'Значение гистерезиса уставки'
|
|
@@ -163,6 +171,16 @@ class IO_AnalogInput(IO_Module):
|
|
|
self.modbus.write_holding_register(AiReg.IN_STATE.value, val)
|
|
|
|
|
|
|
|
|
+ def set_voltage_range(self, val):
|
|
|
+ 'Диапазон измерения напряжения (0 - диапазон 0 - 10 В, 1 - диапазон 0 - 1 В (битовое поле))'
|
|
|
+ self.modbus.write_holding_register(AiReg.IN_VOL_RANGE.value, val)
|
|
|
+
|
|
|
+
|
|
|
+ def set_current_range(self, val):
|
|
|
+ 'Диапазон измерения тока (0 - диапазон 2- 20 мА, 1 - диапазон 0 - 20 мА (битовое поле))'
|
|
|
+ self.modbus.write_holding_register(AiReg.IN_CUR_RANGE.value, val)
|
|
|
+
|
|
|
+
|
|
|
def set_ext_sens_power(self, val):
|
|
|
'Состояние питания внешних датчиков (вкл./выкл.)'
|
|
|
self.modbus.write_holding_register(AiReg.EXT_SENS_POWER.value , val)
|
|
@@ -188,9 +206,17 @@ class IO_AnalogInput(IO_Module):
|
|
|
self.modbus.write_float(AiReg.IN_B_FACTOR.value + 2*(channel - 1), value)
|
|
|
|
|
|
|
|
|
- def set_presets_state(self, val):
|
|
|
+ def set_presets_state(self, value):
|
|
|
'Значения состояний входов вкл./выкл. (битовое поле)'
|
|
|
- self.modbus.write_holding_register(AiReg.PR_STATE.value , val)
|
|
|
+ self.modbus.write_holding_register(AiReg.PR_STATE.value , value)
|
|
|
+
|
|
|
+ def set_preset_min(self, channel, value):
|
|
|
+ 'Минимальное значение уставки на отдельный канал'
|
|
|
+ self.modbus.write_float(AiReg.PR_MIN.value + 2*(channel - 1), value)
|
|
|
+
|
|
|
+ def set_preset_max(self, channel, value):
|
|
|
+ 'Максимальное значение уставки на отдельный канал'
|
|
|
+ self.modbus.write_float(AiReg.PR_MAX.value + 2*(channel - 1), value)
|
|
|
|
|
|
|
|
|
'''Настройки входов'''
|
|
@@ -199,15 +225,41 @@ class IO_AnalogInput(IO_Module):
|
|
|
print(Fore.GREEN + 'Analog inputs settings:')
|
|
|
|
|
|
# Значения состояний входов вкл./выкл. (битовое поле)
|
|
|
- print('Inputs state [bit field] :', Fore.GREEN + self.get_inputs_state())
|
|
|
+ print('Inputs state [bit field] :', Fore.GREEN + self.get_inputs_state())
|
|
|
|
|
|
# Режим измерения входов напряжение или ток. (битовое поле)
|
|
|
- print('Inputs mode [bit field] :', Fore.GREEN + self.get_inputs_mode())
|
|
|
+ print('Inputs mode [bit field] :', Fore.GREEN + self.get_inputs_mode())
|
|
|
+
|
|
|
+ # Диапазон измерения напряжения (битовое поле)
|
|
|
+ print('Inputs voltage range [bit field] :', Fore.GREEN + self.get_voltage_range())
|
|
|
+
|
|
|
+ # Диапазон измерения тока (битовое поле)
|
|
|
+ print('Inputs current range [bit field] :', Fore.GREEN + self.get_current_range())
|
|
|
+
|
|
|
+ # Уставки
|
|
|
+ print('Inputs presets [bit field] :', Fore.GREEN + self.get_presets_state())
|
|
|
+
|
|
|
+ # Нижнее значение уставки
|
|
|
+ data = self.get_presets_min()
|
|
|
+ print('Inputs preset min: ', Fore.GREEN + f'1: {data[0]}, 2: {data[0]}, 3: {data[0]}, 4: {data[0]}, 5: {data[0]}, 6: {data[0]}')
|
|
|
+ print('Inputs preset min: ', Fore.GREEN + f'7: {data[0]}, 8: {data[0]}, 9: {data[0]}, 10: {data[0]}, 11: {data[0]}, 12: {data[0]}')
|
|
|
+
|
|
|
+ # Верхнее значение уставок
|
|
|
+ data = self.get_presets_max()
|
|
|
+ print('Inputs preset max: ', Fore.GREEN + f'1: {data[0]}, 2: {data[0]}, 3: {data[0]}, 4: {data[0]}, 5: {data[0]}, 6: {data[0]}')
|
|
|
+ print('Inputs preset max: ', Fore.GREEN + f'7: {data[0]}, 8: {data[0]}, 9: {data[0]}, 10: {data[0]}, 11: {data[0]}, 12: {data[0]}')
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ # Гистерезис
|
|
|
+
|
|
|
+
|
|
|
|
|
|
# Коэффициенты усиления
|
|
|
- for i in range(1, 13):
|
|
|
- print(f'Gain factor channel {i} : ', end='')
|
|
|
- print(Fore.GREEN + str(self.get_input_gain(i)))
|
|
|
+ # for i in range(1, 13):
|
|
|
+ # print(f'Gain factor channel {i} : ', end='')
|
|
|
+ # print(Fore.GREEN + str(self.get_input_gain(i)))
|
|
|
+
|
|
|
|
|
|
'''Вывод параметров. Сырые данные 16 входов'''
|
|
|
def print_raw_inputs(self):
|
|
@@ -266,6 +318,24 @@ def main():
|
|
|
|
|
|
'''Режим работы аналоговых входов'''
|
|
|
# ai.print_inputs()
|
|
|
+ # ai.set_presets_state(0b00_0000_0000)
|
|
|
+
|
|
|
+ # ai.show_graph(ai.get_fil_inputs, 'AIN_FIL_1')
|
|
|
+
|
|
|
+ '''Уставки'''
|
|
|
+
|
|
|
+
|
|
|
+ '''Данные входов'''
|
|
|
+ # while True:
|
|
|
+ # print(ai.get_fil_inputs())
|
|
|
+ # sleep(1)
|
|
|
+
|
|
|
+ # ai.set_voltage_range(0b00_0000_0000)
|
|
|
+ # ai.set_current_range(0b00_0000_0000)
|
|
|
+
|
|
|
+ # ai.print_inputs()
|
|
|
+
|
|
|
+ # ai.sys.save_settings()
|
|
|
|
|
|
'''Установка коэффициентов усиления. Канал, коэффициент'''
|
|
|
'''
|
|
@@ -281,23 +351,6 @@ def main():
|
|
|
# ai.set_k_factor(i, 1.0)
|
|
|
# ai.set_b_factor(i, 0.0)
|
|
|
|
|
|
- '''Последовательное включение входов по одному.'''
|
|
|
- '''
|
|
|
- while True:
|
|
|
- for i in range(12):
|
|
|
- ai.set_inputs_state(1 << i)
|
|
|
- print(ai.get_inputs_state())
|
|
|
- sleep(1)
|
|
|
- '''
|
|
|
- '''Настройка режима измерения'''
|
|
|
- '''
|
|
|
- while True:
|
|
|
- for i in range(12):
|
|
|
- ai.set_inputs_mode(1 << i)
|
|
|
- print(ai.get_inputs_mode())
|
|
|
- sleep(1)
|
|
|
- '''
|
|
|
-
|
|
|
# ai.sys.set_system_vars(1234)
|
|
|
# ai.sys.get_system_vars()
|
|
|
# print(ai.sys.get_bat_votage())
|
|
@@ -332,12 +385,14 @@ def main():
|
|
|
# sleep(1)
|
|
|
|
|
|
'''Данные каналов'''
|
|
|
+ """
|
|
|
while True:
|
|
|
# ai.get_raw_inputs()
|
|
|
ai.get_fil_inputs()
|
|
|
# ai.print_raw_inputs()
|
|
|
# ai.print_filtered_inputs()
|
|
|
sleep(0.1)
|
|
|
+ """
|
|
|
|
|
|
# ai.get_raw_inputs()
|
|
|
# ai.print_raw_inputs()
|