树莓派4B+Python与三相四线多功能电力仪表通过RS485(modbus RTU协议)接口发送和接收数据
请耐心把下面的警告⚠️看完
开始之前需要注意以下点:一、那就是安全,生命为本,安全第一。因为需要接触220V民用电或380V工业/商业用电,操作不当会有触电的危险,为避免可能发生的人身触电伤亡事故。二、需要在监护人的监护下进行操作,电缆线接入220V或380V电源前需先停上一级电源并做好个人防护措施(穿绝缘靴、戴绝缘手套)。三、需要一些电工的基础知识,能看懂三相多功能电力仪表的接线方法。四、如果没有做任何防护和没有电工基础知识,请勿进行以下操作。如果执意要在没有任何保护措施和没有监护人员监督的情况下操作,发生触电伤亡事故的,本人概不负责!!!
利用树莓派4B+作为主站(Master)读取从站(Slave)三相多功能电力仪表中的实时电压值
首先来看一下结果:
A相电压: 239.12 V
B相电压: 239.11 V
C相电压: 239.13 V
这里读取的是相电压的值,要读取线电压值的方法会在下面有简单的介绍
这里涉及到内容和方法不多呢也不少,先要了解一下Modbus RTU协议,根据这个协议来编写程序。关于这个协议不懂的可以问百度,满天下都是,这里就不在多说了。
准备材料:1、树莓派4B+ 2、RS485_CAN_HAT树莓派扩展板 3、三相多功能电力仪表(RS485 Modbus-RTU) 4、USB TO RS485 5、7寸IPS触摸屏HDMI 6、各式导线若干
树莓派4B+
RS485_CAN_HAT树莓派扩展板
三相多功能电力仪表(RS485 Modbus-RTU)
USB TO RS485
7寸IPS触摸屏 HDMI
使用各式导线把这些东西连接起来,需要注意的是RS485_CAN_HAT树莓派扩展板中的A和B接口的连接,一定要对应通讯设备的A和B,也就是A接A,B接B。
先用USB TO RS485与电脑连接做通讯测试,直接插在电脑的USB口上,等电脑识别。一般都会成功的!然后再将USB TO RS485与树莓派扩展板RS485_CAN_HAT上的A、B两个接口连接。
树莓派和电脑中使用的Python版本都是3.7.6的,可以使用更高的版本,试过·不支持
树莓派电脑中安装个Python库:modbus_tk库,打开命令行输入:
pip3 install modbus_tk
也用到其他的库:serial、struct、time,这些库系统自带,如果没有的可以用pip3命令重新装一遍,就可以了
RS485_CAN_HAT树莓派扩展板相关库的安装:按照顺序一步一步的来
参照官网
https://www.waveshare.net/wiki/RS485_CAN_HAT
电脑端串口测试使用的软件:(串口调试助手)
更改:串口和波特率选项,其他的默认就可以,串口选择USB TO RS485(usbserial)各电脑不一样酌情选择正确的串口就可以,波特率选择9600要和树莓派、电表一致否则无法通讯,如果有效验位可以选择和电表对应的效验位(奇、偶、无),需要循环发送数据的勾选(启动循环发送),需要自动换行勾选(尾部自动带上)其他选项默认。
RS485通讯测试:
树莓派打开命令行,输入:
cd ../../RS485_CAN_HAT_Code/485/python/
先运行接收:
sudo python reveive.py
#可以不用关闭窗口
再运行发送:
sudo python send.py
#新建一个窗口
在发送的窗口中随便发送一些字符(发送不了中文),只要电脑端的串口调试助手软件中的接收窗口中能够看到刚刚从树莓派中输入的字符串,证明通讯成功了。也可以从串口调试助手软件的发送框中随便输入些字符串,点击发送。
如果发送和失败:按照RS485_CAN_HA