Задержка связи библиотеки PymodbusPython

Программы на Python
Ответить
Anonymous
 Задержка связи библиотеки Pymodbus

Сообщение Anonymous »

У меня есть следующий пример кода. Этот код обновляет настройку частоты используемого в данный момент двигателя и дает ему команду движения вперед. Я также добавляю определенное время ожидания в секундах при выполнении этих операций.

Код: Выделить всё

from pymodbus.client import ModbusSerialClient
import time

PORT = "/dev/ttyAMA2"
BAUDRATE = 19200
PARITY = 'N'
STOPBITS = 1
SLAVE_ID = 1

REG_OP_CMD = 8
REG_FREQ_RAM = 13
REG_RESET = 1

def connect():
client = ModbusSerialClient(
port=PORT,
baudrate=BAUDRATE,
parity=PARITY,
stopbits=STOPBITS,
timeout=1
)
if client.connect():
print("Connection successful.")
result = client.read_holding_registers(address=8, count=1, slave=1)
print("Result: ", result)
return client
else:
print("Connection failed!")
return None

def forward(client):
return client.write_register(REG_OP_CMD, 2, slave=SLAVE_ID)

def stop_motor(client):
return client.write_register(REG_OP_CMD, 1, slave=SLAVE_ID)

def set_freq(client, hz):
raw = int(hz * 100)
return client.write_register(REG_FREQ_RAM, raw, slave=SLAVE_ID)

def main():
client = connect()
if not client:
return

try:
print("Frequency set to 20 Hz")
set_freq(client, 20)
time.sleep(2)

print("Moving Forward...")
forward(client)
time.sleep(3)

print("3 seconds passed. Motor stopped.")
stop_motor(client)
time.sleep(2)

print("TEST COMPLETED SUCCESSFULLY...")

finally:
client.close()
print("Port closed.")

if __name__ == "__main__":
main()
Когда я постоянно запускаю этот код в системе, через определенный период времени команда остановки двигателя задерживается. (Эта ситуация не очень стабильна. Например, код выполнился без проблем 5 раз, но при 6-м запуске команда остановки была задержана. Это также может произойти, если он выполняется без проблем 10 раз, а команда остановки задерживается при 11-м запуске.)
Мне интересны ответы на два вопроса здесь:
1. Является ли проблема того, что команды не работают через определенный период времени из-за постоянного повторного запуска этого кода сценария? Если да, что я могу сделать?
2. Возникнет ли у меня эта проблема в большом проекте, где после установления соединения только один раз двигателю будет неоднократно предложено «пройти вперед и подождать 3 секунды»?
Версия

---------

pymodbus: 3.8.6

Подробнее здесь: https://stackoverflow.com/questions/798 ... tion-delay
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»