Сервер Python Modbus с использованием модуля pymodbus

Я хочу создать сервер 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()

person Chandra Sekhar K    schedule 25.03.2018    source источник


Ответы (1)


См. проблему, поднятую в Github, и ответьте на участник.

person Chandra Sekhar K    schedule 28.03.2018