Я хочу создать сервер Modbus (с IP-адресом: 152.168.96.11 - такой же, как в системе) и клиент Modbus, работающий в другой системе (IP-адрес: 152.168.96.32). Мое клиентское приложение работает успешно, и я создаю серверное приложение Modbus с серверным приложением pymodbus. Обмен данными 32 бита (чтение или запись в целях тестирования). Я хочу прочитать и записать значения определенного адреса клиенту Modbus.
Как настроить сервер python pymodbus с сервером, способным читать и записывать данные на IP-адрес клиента
Вот приложение сервера pymodbus -
# --------------------------------------------------------------------------- #
# import the various server implementations
# --------------------------------------------------------------------------- #
from pymodbus.server.sync import StartTcpServer
from pymodbus.device import ModbusDeviceIdentification
from pymodbus.datastore import ModbusSequentialDataBlock
from pymodbus.datastore import ModbusSlaveContext, ModbusServerContext
# --------------------------------------------------------------------------- #
# configure the service logging
# --------------------------------------------------------------------------- #
import logging
logging.basicConfig()
log = logging.getLogger()
log.setLevel(logging.DEBUG)
def run_server():
# ----------------------------------------------------------------------- #
# initialize your data store
# ----------------------------------------------------------------------- #
block = ModbusSequentialDataBlock(0, [888]*32)
store = ModbusSlaveContext(hr=block)
slaves = {
0x01: store,
}
context = ModbusServerContext(slaves=slaves, single=True)
# ----------------------------------------------------------------------- #
# initialize the server information
# ----------------------------------------------------------------------- #
# If you don't set this or any fields, they are defaulted to empty strings.
# ----------------------------------------------------------------------- #
identity = ModbusDeviceIdentification()
identity.VendorName = 'Pymodbus'
identity.ProductCode = 'PM'
identity.VendorUrl = 'http://github.com/riptideio/pymodbus/'
identity.ProductName = 'Pymodbus Server'
identity.ModelName = 'Pymodbus Server'
identity.MajorMinorRevision = '1.0'
# ----------------------------------------------------------------------- #
# run the server you want
# ----------------------------------------------------------------------- #
# Tcp:
StartTcpServer(context, identity=identity, address=('0.0.0.0', 255))
if __name__ == "__main__":
run_server()