Python 创建Modbus Server

Python 创建Modbus Server

加入软件包
import modbus_tk.modbus_tcp as mt
import modbus_tk.defines as cst
import logging
import struct
import time
创建modbus服务器
def modbusServerInit():
    ## 初始化Modbus
    try:
		## 所有设备都能访问
        modbusServer = mt.TcpServer(address='0.0.0.0')
        ## 本地访问
        ## modbusServer = mt.TcpServer(address='127.0.0.1')
        modbusServer.start()
        modbusServerSlave = server.add_slave(1)
        modbusServerSlave.add_block(
            '0', cst.HOLDING_REGISTERS, 0, 200
        )
    except:
        logger.error('[Modebus Server]创建失败')
    logger.debug('[Modebus Server]创建成功')

    return modbusServerSlave
完整代码
import modbus_tk.modbus_tcp as mt
import modbus_tk.defines as cst
import logging
import struct
import time

logger = logging.getLogger('my_logger')
    
def logInit():
	## 初始化日志
    logger.setLevel(logging.DEBUG)
    fh = logging.FileHandler('modbusServer_app.log',encoding="utf-8")
    fh.setLevel(logging.DEBUG)
    formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    fh.setFormatter(formatter)
    logger.addHandler(fh)

def floatToModbus(float_value):
    int_value = struct.unpack('<I', struct.pack('<f', float_value))[0]
    values_to_write = [int_value & 0xFFFF, (int_value >> 16) & 0xFFFF]
    return values_to_write

def modbusServerInit():
    ## 初始化Modbus
    try:
		## 所有设备都能访问
        modbusServer = mt.TcpServer(address='0.0.0.0')
        ## 本地访问
        ## modbusServer = mt.TcpServer(address='127.0.0.1')
        modbusServer.start()
        modbusServerSlave = modbusServer.add_slave(1)
        modbusServerSlave.add_block(
            '0', cst.HOLDING_REGISTERS, 0, 200
        )
    except:
        logger.error('[Modebus Server]创建失败')
    logger.debug('[Modebus Server]创建成功')

    return modbusServerSlave
            
logInit()
slave = modbusServerInit()  
            
// 写数据
slave.set_values('0',0,floatToModbus(12.32))

Python中,可以利用第三方库如`pymodbus`来编写Modbus从站(Slave Station),这是一种常见的工业通信协议,常用于监控和控制设备。以下是一个简单的步骤来创建一个Modbus从站: 1. **安装库**: 首先需要安装`pymodbus`库,你可以使用pip命令进行安装: ``` pip install pymodbus ``` 2. **导入模块**: 导入所需的模块,例如`pymodbus.server`和`pymodbus.datastore`,它们分别用于服务器和数据存储部分: ```python from pymodbus.device import ModbusDeviceIdentification from pymodbus.datastore import ModbusSequentialDataBlock, ModbusServerContext from pymodbus.server.sync import StartTcpServer ``` 3. **设置设备标识**: 创建一个`ModbusDeviceIdentification`对象,用于设置设备的信息,如制造商、型号等: ```python identity = ModbusDeviceIdentification() identity.VendorName = 'Your Vendor Name' identity.ProductCode = 'Your Product Code' identity.VendorUrl = 'http://www.yourcompany.com' identity.ManufacturerName = 'Your Manufacturer Name' identity.ModelName = 'Your Model Name' identity.MajorMinorRevision = '1.0' ``` 4. **创建数据存储**: 使用`ModbusSequentialDataBlock`创建内存映射的数据块,模拟一些寄存器供上位机读取或写入: ```python holding_registers = ModbusSequentialDataBlock( 0x0000, [1, 2, 3, 4, 5], unit=0x01 # 存放数据的地址和初始值 ) coils = ModbusSequentialDataBlock(0x0001, [False, False, True, False, False]) context = ModbusServerContext(slaves={0x01: holding_registers, 0x02: coils}) ``` 5. **启动服务器**: 使用`StartTcpServer`函数开始监听Modbus TCP连接,并将创建的上下文传递给它: ```python StartTcpServer(context, identity=identity) ``` 6. **运行服务**: 运行程序,直到手动停止。现在,这个Python脚本就是一个基本的Modbus从站。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值