38 lines
1.0 KiB
Python
38 lines
1.0 KiB
Python
print("modbus test")
|
|
|
|
# Настройки клиента Modbus
|
|
MODBUS_SERVER_HOST = "192.168.70.55" # IP-адрес Modbus-сервера
|
|
MODBUS_SERVER_PORT = 502
|
|
MODBUS_SLAVE_ID=11
|
|
|
|
from pymodbus.client import ModbusTcpClient
|
|
from pymodbus.constants import Endian
|
|
from pymodbus.payload import BinaryPayloadDecoder
|
|
|
|
def bulb(addr):
|
|
try:
|
|
coils = client.read_coils(addr, 1, MODBUS_SLAVE_ID)
|
|
print("читаем начальное состояние", coils.bits)
|
|
|
|
new_bits = coils.bits
|
|
new_bits[0] = not new_bits[0]
|
|
print("пытаемся записать", new_bits, coils.slave_id)
|
|
result = client.write_coil(addr, new_bits[0], coils.slave_id)
|
|
print(result)
|
|
|
|
print("читаем после попытки", client.read_coils(0, len(coils.bits), coils.slave_id).bits)
|
|
except Exception as e:
|
|
raise e
|
|
|
|
client = ModbusTcpClient(
|
|
MODBUS_SERVER_HOST,
|
|
port=MODBUS_SERVER_PORT,
|
|
)
|
|
client.connect()
|
|
try:
|
|
bulb(1)
|
|
except Exception as e:
|
|
print("error", e)
|
|
|
|
client.close()
|