使用树莓派python读写ABB变频器
1. 硬件介绍
-
树莓派ZERO-WH + 485扩展板
- 系统RASPBERRY PI 0S LITE(32-BIT)
-
ABB变频器
-
电机
2. 硬件链接
- 注意不同模块的485接口A,B端,不都是A是正极,B是负极,也可能相反,连线时看好产品说明书
3. 系统环境准备
-
打开树莓派mini串口
sudo raspi-config
-
查看串口
ls -l /dev/serial*
-
树莓派串口介绍
ttyS0 | ttyAMA0 | |
---|---|---|
名称 | mini串口 | 硬件串口 |
介绍 | 性能低,功能简单,没有波特率专用的时钟源而是由CPU内核时钟提供,故波特率受到内核时钟的影响 | 硬件实现,有单独的波特率时钟源,性能高、可靠 |
由于硬件串口被系统默认使用于其它,若想要使用硬件串口,可以与mimi串口对换映射关系
-
修改文件------------------------> sudo nano /boot/config.txt
在文件末尾添加: dtoverlay=pi3-miniuart-bt # 让蓝牙使用mini 串口
dtoverlay=pi3-disable-bt # 直接关闭蓝牙 -
Ctrl+O保存,然后点回车,在Ctrl+X退出
-
检查一下有没有添加上--------> cat /boot/config.txt
-
然后手动重启--------------- -----> sudo reboot
-
重启后在重新查看串口关系
4. 读电机运行参数
-
需要先知道各变量数据地址根据产品说明书如下图
-
在变频器控制面板设置好站号,波特率,校验位等一系列参数
-
启动代码读取数据
import serial import modbus_tk.defines as cst from modbus_tk import modbus_rtu master = modbus_rtu.RtuMaster(serial.Serial(port="/dev/ttyAMA0", baudrate=9600, bytesize=8, parity='N', stopbits=1, xonxoff=0)) master.set_timeout(1.0) # 读保持寄存器 03H 1站号 地址4 长度3 res_tuple = master.execute(1, cst.READ_HOLDING_REGISTERS, 4, quantity_of_x=3) # 返回元组
5. 控制电机
-
写变量数据的时候要记得从变频器控制版面上本地切换到远程
import serial import modbus_tk.defines as cst from modbus_tk import modbus_rtu master = modbus_rtu.RtuMaster(serial.Serial(port="/dev/ttyAMA0", baudrate=9600, bytesize=8, parity='N', stopbits=1, xonxoff=0)) master.set_timeout(1.0) # 强制线圈 05 1站号 地址0 长度3 res_tuple = master.execute(1, cst.WRITE_SINGLE_COIL, 0, output_value=1) # 返回元组