Чтение катушки и регистров хранения одновременно с использованием pymodbus3

У меня есть рабочий код, который может непрерывно считывать состояние катушки с помощью библиотеки pymodbus3. Код выглядит примерно так. Это адаптировано из базового примера и служит для поиска изменения статуса катушки (адрес 0x01) на "1" и выполнения задачи в соответствии с требованиями в обязательном порядке.

         def run_server(): 
    # ----------------------------------------------------------------------- # 
    # initialize your data store 
    # ----------------------------------------------------------------------- # 
    store = ModbusSlaveContext( 
        di=ModbusSequentialDataBlock(0, [17]*100), 
        co=ModbusSequentialDataBlock(0, [17]*100), 
        hr=ModbusSequentialDataBlock(0, [17]*100), 
        ir=ModbusSequentialDataBlock(0, [17]*100)) 
        
    context = ModbusServerContext(slaves=store, single=True) 

    interval = 3 
    server = ModbusTcpServer(context, identity=identity, address=('0.0.0.0', 1502)) 
    t = threading.Thread(target=server.serve_forever,name='server connection') 
   
    t.start() 
    loop = LoopingCall(f=updatevalues, a=server) 
    loop.start(interval, now=True) 
    reactor.run()

def updatevalues(a):
    rfuncode = 1
    wfuncode = 5
    slave_id = 0x01
    address = 0x02 
    contxt = a.context[slave_id]
    values = contxt.get_values(rfuncode, address, count=1)
    print(values[0])
    #below part is checking the coil status whether its 0 or 1 and perform the necessary task
    if(values[0]==1 or values[0]==17):
        #Do my stuff if this case is satisfied 
    
    #reset the coil back to "0" after the task is performed
    values = [0]
    contxt.set_values(wfuncode, address, values)

if __name__ == "__main__":
    run_server()

Теперь мне нужно также контролировать регистры временного хранения (например, адрес 400001) параллельно и читать значение. Поскольку регистры хранения уже инициализированы в функции run_server(), я думаю, мне не нужно там ничего делать. Но я не уверен, что делать в функции updatevalues ​​(a), чтобы можно было отслеживать регистр временного хранения.

Спасибо за помощь.

0 ответов

Другие вопросы по тегам