|
@@ -4,7 +4,8 @@ from colorama import Fore
|
|
import time
|
|
import time
|
|
import os
|
|
import os
|
|
|
|
|
|
-reg_table = {'in_bits': 0x0100, 'uptime': 0x0800, 'rtc_unix': 0x0802, 'rtc_sinhro': 0x0804}
|
|
|
|
|
|
+reg_table = {'in_bits': 0x0100, 'in_cnt': 0x0102, 'in_mode': 0x0120,'uptime': 0x0800,
|
|
|
|
+ 'rtc_unix': 0x0802, 'rtc_sinhro': 0x0804}
|
|
|
|
|
|
|
|
|
|
class IO_Module(Modbus):
|
|
class IO_Module(Modbus):
|
|
@@ -72,10 +73,26 @@ class IO_Module(Modbus):
|
|
print('End of transmission')
|
|
print('End of transmission')
|
|
self.iap_finish()
|
|
self.iap_finish()
|
|
|
|
|
|
- def get_input_bit(self) -> str:
|
|
|
|
|
|
+ # 0x0100 - текущее состояние входов
|
|
|
|
+ def get_inputs_bit(self) -> str:
|
|
data = self.read_holding_registers(reg_table['in_bits'], 1)
|
|
data = self.read_holding_registers(reg_table['in_bits'], 1)
|
|
return format(data[0], '08b')
|
|
return format(data[0], '08b')
|
|
|
|
|
|
|
|
+ # 0x0101 - 0x0110 Счетчики импульсов
|
|
|
|
+ def get_inputs_counters(self):
|
|
|
|
+ data = []
|
|
|
|
+ for i in range(reg_table['in_cnt'], reg_table['in_cnt'] + 16, 2):
|
|
|
|
+ data.append(self.read_uint32_holding(i))
|
|
|
|
+ return data
|
|
|
|
+
|
|
|
|
+ # 0x0120 - режим работы входов
|
|
|
|
+ def get_inputs_mode(self):
|
|
|
|
+ data = self.read_holding_registers(reg_table['in_mode'], 1)
|
|
|
|
+ return format(data[0], '08b')
|
|
|
|
+
|
|
|
|
+ def set_inputs_mode(self, val):
|
|
|
|
+ self.write_holding_register(reg_table['in_mode'], val)
|
|
|
|
+
|
|
def get_uptime(self):
|
|
def get_uptime(self):
|
|
return self.read_uint32_holding(reg_table['uptime'])
|
|
return self.read_uint32_holding(reg_table['uptime'])
|
|
|
|
|
|
@@ -89,8 +106,8 @@ class IO_Module(Modbus):
|
|
|
|
|
|
def main():
|
|
def main():
|
|
colorama.init(autoreset=True)
|
|
colorama.init(autoreset=True)
|
|
- dev = IO_Module('COM22', 115200, 1)
|
|
|
|
- dev.MB_DEBUG = True
|
|
|
|
|
|
+ dev = IO_Module('COM24', 115200, 1)
|
|
|
|
+ dev.MB_DEBUG = False
|
|
# dev.update('fw.bin')
|
|
# dev.update('fw.bin')
|
|
|
|
|
|
# Запрос системных параметров, установка времени
|
|
# Запрос системных параметров, установка времени
|
|
@@ -104,10 +121,19 @@ def main():
|
|
# unix_time = dev.get_rtc()
|
|
# unix_time = dev.get_rtc()
|
|
# print(f'RTC: {time.ctime(unix_time)}. Unix time stamp: {unix_time}')
|
|
# print(f'RTC: {time.ctime(unix_time)}. Unix time stamp: {unix_time}')
|
|
|
|
|
|
- while True:
|
|
|
|
- print(Fore.GREEN + 'Inputs values [bit field]:', Fore.YELLOW + dev.get_input_bit())
|
|
|
|
|
|
+ # while True:
|
|
|
|
+ for i in range(10):
|
|
|
|
+ print('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~')
|
|
|
|
+ print('Inputs values [bit field :', Fore.GREEN + dev.get_inputs_bit())
|
|
|
|
+ print('Inputs mode [bit field] :', Fore.GREEN + dev.get_inputs_mode())
|
|
|
|
+ data = dev.get_inputs_counters()
|
|
|
|
+ print('Inputs counters :', Fore.GREEN + ' | '.join(str(el) for el in data))
|
|
|
|
+ dev.set_inputs_mode(i)
|
|
|
|
+
|
|
time.sleep(1)
|
|
time.sleep(1)
|
|
|
|
+
|
|
|
|
|
|
|
|
|
|
|
|
+
|
|
if __name__ == '__main__':
|
|
if __name__ == '__main__':
|
|
main()
|
|
main()
|