libmodbus的python接口pylibmodbus简介

一、概述

libmodbus是一个可移植的modbus库,支持modbus RTU和modbus TCP。
pylibmodbus是一个基于CFFI的python接口,使python应用程序可轻松调用libmodbus库,控制串口或网口设备,实现modbus主站和从站功能。
libmodbus的python接口pylibmodbus简介_第1张图片

二、安装libmodbus

在ubuntu1404环境下安装libmodbus:

#sudo apt-get install libmodbus-dev

libmodbus源码下载地址为:
https://libmodbus.org/download/

三、测试libmodbus

为了测试libmodbus库,使用modbus slave工具模拟一个modbus从站,并在ubuntu中基于libmodbus库读取从站的寄存器,如下图所示:
libmodbus的python接口pylibmodbus简介_第2张图片
相应的测试代码如下:
main.c

#include 
#include 
#include 
#include 
#include "/usr/include/modbus/modbus.h"

int main()
{
   int i;
   int iRet;
   uint16_t iReg[10] = {0};
   struct timeval tv;
   
   //创建modbus TCP实例
   modbus_t *pCtx = modbus_new_tcp("192.168.1.4",502);
   if(NULL == pCtx)
   {
      return -1;
   }
   //设置要访问的从站地址
   modbus_set_slave(pCtx,1);
   
   //连接,实际上会调用libmodbus库中的函数_modbus_tcp_connect(),最终调用系统的connect方法。
   iRet = modbus_connect(pCtx);
   
   //读取地址0开始的10个寄存器,并保存到iReg数组。
   iRet = modbus_read_registers(pCtx,0,10,iReg);
   if(-1 == iRet)
   {
      printf("read failed:%s\n",modbus_strerror(errno));
      return -1;
   }
   
   //打印读取的内容
   for(i = 0; i < 10; i++)
   {
      printf("%d ",iReg[i]);
   }
   printf("\n");
   
   //释放资源
   modbus_close(pCtx);
   modbus_free(pCtx);
}

编译:

#gcc -o main main.c -lmodbus

运行:

#./main

测试结果:
libmodbus的python接口pylibmodbus简介_第3张图片
可见,使用libmodbus可正确读取从站的寄存器内容,证明libmodbus可用。

四、安装setuptools

若已安装则跳过。

从以下地址下载setuptools-46.0.0.zip :
https://pypi.org/project/setuptools/#files
解压后安装:
在这里插入图片描述
安装过程使用Python2,若使用python3,将python替换为python3。

五、安装pylibmodbus

pylibmodbus下载地址为:
https://pypi.org/project/pylibmodbus/#files
解压后安装:
在这里插入图片描述
使用pip list可查看是否安装成功。

六、测试pylibmodbus

编写python测试代码如下:
test.py:

from pylibmodbus import *

ctx = ModbusTcp("192.168.1.4",502); //创建实例

ctx.connect();  //连接
ctx.set_slave(1);  //设置要访问的modbus从站地址
revData = ctx.read_registers(0,10); //读地址0开始的10个寄存器

for i in revData: //打印接收到的数据
	print(i);

运行结果如下:
libmodbus的python接口pylibmodbus简介_第4张图片

你可能感兴趣的:(linux)