|
@@ -4,13 +4,25 @@ from colorama import Fore
|
|
|
import time
|
|
|
import os
|
|
|
import struct
|
|
|
+import random
|
|
|
+
|
|
|
+models = {0x100: 'MDIO_88', 0x200: 'MAO_8', 0x300: 'MAI_12'}
|
|
|
+
|
|
|
+MODEL_MDIO_88 = 0x0100
|
|
|
+MODEL_MAO_8 = 0x0200
|
|
|
+MODEL_MAI_12 = 0x0300
|
|
|
+
|
|
|
+SYS_TEST_OK = 0x0001
|
|
|
+
|
|
|
+
|
|
|
|
|
|
reg_table = {'in_bits': 0x0100, 'in_cnt': 0x0102, 'in_mode': 0x0120, 'in_norm': 0x0122, 'in_deb_start': 0x124,
|
|
|
'out_cur': 0x0200, 'out_mode': 0x0202, 'out_mode_save': 0x0203, 'pwm_duty': 0x0210,
|
|
|
'pwm_duty_save': 0x0220, 'pwm_per': 0x0230, 'pwm_per_save': 0x0240,
|
|
|
'rtc_unix': 0x0802, 'rtc_sinhro': 0x0804, 'uptime': 0x0800, 'log_info': 0x0900,
|
|
|
'log_ent': 0x0901, 'arch_cap': 0x0902, 'arch_ent': 0x0903,
|
|
|
- 'password': 0x008A}
|
|
|
+ 'model': 0x0080, 'prod_time': 0x0081, 'serial': 0x0083, 'fw_ver': 0x0085,
|
|
|
+ 'test_status': 0x0089, 'password': 0x008A}
|
|
|
|
|
|
|
|
|
class IO_Module(Modbus):
|
|
@@ -216,8 +228,31 @@ class IO_Module(Modbus):
|
|
|
def set_rtc(self, utc):
|
|
|
self.write_uint32(reg_table['rtc_sinhro'], utc)
|
|
|
|
|
|
- def set_password(self, password):
|
|
|
- self.write_holding_register(reg_table['password'], password)
|
|
|
+
|
|
|
+
|
|
|
+def set_system_vars(dev: IO_Module, password: int):
|
|
|
+ # Отправка пароля для разблокирования доступа к системным настройкам
|
|
|
+ dev.write_holding_register(reg_table['password'], password)
|
|
|
+ time.sleep(0.1)
|
|
|
+ # Модель
|
|
|
+ dev.write_holding_register(reg_table['model'], SYS_MODEL_MDIO_88)
|
|
|
+ # Дата производства
|
|
|
+ dev.write_holding_register(reg_table['prod_time'], int(time.time()) - 3600*24)
|
|
|
+ # Серийный номер
|
|
|
+ dev.write_holding_register(reg_table['serial'], random.randint(10000, 1000000))
|
|
|
+
|
|
|
+ # Статус тестирования
|
|
|
+ dev.write_holding_register(reg_table['test_status'], SYS_TEST_OK)
|
|
|
+
|
|
|
+def get_system_vars(dev: IO_Module):
|
|
|
+ # Модель
|
|
|
+ model = dev.read_holding_registers(reg_table['model'], 1)[0]
|
|
|
+ print(type(model))
|
|
|
+ print(models.get(int(model)))
|
|
|
+ print(models[model])
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
|
|
|
def main():
|
|
|
colorama.init(autoreset=True)
|
|
@@ -237,7 +272,7 @@ def main():
|
|
|
# unix_time = dev.get_rtc()
|
|
|
# print(f'RTC: {time.ctime(unix_time)}. Unix time stamp: {unix_time}')
|
|
|
|
|
|
- dev.set_password(1234)
|
|
|
+ get_system_vars(dev)
|
|
|
|
|
|
return
|
|
|
|