目录
1 前言
本文主要介绍北醒TFmini-i 485 Modbus协议在Ubuntu系统上使用Python扫描站号和地址的方法,例程仅供参考以及学习使用
2 TFmini-i 485简要说明
详细请参考最新的规格书和使用说明书
可到官网下载最新的资料:http://www.benewake.com/download
2.1 产品图片
2.1 电气特性
2.2 RS485通讯协议
注:Modbus协议详细请参考使用说明书
3 硬件接线说明
注 :详细线材颜色请参照使用说明书
4 测试环境说明
4.1 系统软件库说明
- 系统 :ubuntu 16.04 LTS 64-bit
- python : 3.5.2 (系统自带)
- python需求库:
- pyserial (3.5) (需要安装)
- time (系统自带)
- modbus-tk (1.1.2) (需要安装)
4.2 库安装简要说明
关于python第三方库安装可以参考https://pypi.org/
尝试使用pip或者pip3指令安装:详细可以参考下方附录
注 :pip一般是给python2 使用
pip3一般是给python3使用
pip3 install pyserial
pip3 install modbus-tk
5 例程
# -*- coding: utf_8 -*-
import serial
import modbus_tk
import modbus_tk.defines as cst
from modbus_tk import modbus_rtu
import time #添加定时器
def mod(PORT="/dev/ttyUSB0"):
red = []
alarm = ""
try:
# 设定串口为从站
master = modbus_rtu.RtuMaster(serial.Serial(port=PORT,
baudrate=115200, bytesize=8, parity='N', stopbits=1))
master.set_timeout(5.0)
master.set_verbose(True)
# 读保持寄存器
red = master.execute(1, cst.READ_HOLDING_REGISTERS, 0, 2) # 这里可以修改需要读取的功能码
print(red)
alarm = "正常"
return list(red), alarm
except Exception as exc:
print(str(exc))
alarm = (str(exc))
return red, alarm ##如果异常就返回[],故障信息
if __name__ == "__main__":
while 1:
mod()
time.sleep(0.05) #500ms
6 运行与测试
- 先把py文件放到Home目录下
- 运行Terminal查看端口
查询指令
ls -l /dev/ttyUSB?
- 根据上面查到的端口以及雷达默认协议更改py文件。
- 以上都确认好后再运行
附录
问题1:缺少serial库
如果运行后提示缺少’serial’(如下图),说明缺少pyserial库
解决:安装’pyserial’库
问题2:缺少modbus_tk库
如果运行后提示缺少’modbus_tk’(如下图),说明缺少modbus_tk库
解决:安装’modbus_tk’库