黄山
黄山市黟县碧山
安徽省黄山市休宁县上金龙山
设计、摄影、建站、经济、创业、人工智能、机器视觉、python,为了心中的追求!
黄山市黟县碧山
安徽省黄山市休宁县上金龙山
Windows下搭建环境步骤
下载并安装Python3
配置python3环境变量
设置两个环境变量
D:\Python39\Scripts
D:\Python39
通过pip命令安装nump、matplotlib、opencv库
python -m pip --version 查看pip的版本号
python -m pip install --upgrade pip 升级pip命令
python -m pip install numpy matplotlib opencv-python 安装库文件
python -m pip install opencv-contrib-python
注意事项:执行命令时,windows下为pip, mac下为pip3.
最近感觉搜索引擎不工作了,总是偷懒
构想了一个新的搜索方式
统一的标识方式
非固定的排序模式
公平的优质资源评定方法
审核制准入标准非全网资源
更多待更新
怎么让客户不通过二维码添加你的企业微信
第一步打开企业微信
打开消息左上角三个横,再打开右下角设置,再点击账号然后点击微信
绑定你的个人微信
第二步让客户添加你的个人微信号
第三步打开个人微信,在用户验证信息里选择去企业微信添加对方
至此完成添加
第二个方法
第一步打开企业微信
打开消息左上角三个横,再打开右下角设置,再点击账号然后点击手机号
第二步让客户打开微信,添加好友,选择企业微信联系人,输入你的手机号即可
modbus_tk是使用python实现的modbus协议栈,通过调用modbus_tk可以很方便的实现modbus通信。
在VS CODE中需要先通过pip安装modbus_tk库,其方法可参见:vscode 如何导入python库
下载对应pip
pip install modbus_tk
modbus_tk支持以下功能码:
功能码 编号 含义
READ_COILS H01 读线圈
READ_DISCRETE_INPUTS H02 读离散输入
READ_HOLDING_REGISTERS H03 读寄存器
READ_INPUT_REGISTERS H04 读输入寄存器
WRITE_SINGLE_COIL H05 写单一线圈
WRITE_SINGLE_REGISTER H06 写单一寄存器
WRITE_MULTIPLE_COILS H15 写多个线圈
WRITE_MULTIPLE_REGISTERS H16 写多寄存器
python程序需要进行两部分配置:串口配置和modbus协议配置。
导入库和串口配置:
import serial
import modbus_tk
import modbus_tk.defines as cst
from modbus_tk import modbus_rtu
master = modbus_rtu.RtuMaster(serial.Serial(port="COM1",
baudrate=9600, bytesize=8, parity='N', stopbits=1))
master.set_timeout(5.0)
1
2
3
4
5
6
7
8
9
modbus协议配置(举例):
out1 = master.execute(1, cst.READ_COILS, 2, 5) #长度指读取的寄存器数,寄存器从指定地址起连续读取
print(out1) #输出读取的结果
out2 = master.execute(2, cst.READ_HOLDING_REGISTERS, 1, 6)
print(out2) #输出读取的结果
master.execute(1, cst.WRITE_SINGLE_COIL, 8, output_value=1)
master.execute(1, cst.WRITE_SINGLE_REGISTER, 4, output_value=500)
示例代码
import serial
import modbus_tk
import modbus_tk.defines as cst
from modbus_tk import modbus_rtu
def mod(PORT="com2"):
red = []
alarm = ""
try:
# 设定串口为从站
master = modbus_rtu.RtuMaster(serial.Serial(port=PORT,
baudrate=9600, bytesize=8, parity='N', stopbits=1))
master.set_timeout(5.0)
master.set_verbose(True)
# 读保持寄存器
red = master.execute(1, cst.READ_HOLDING_REGISTERS, 0, 9) # 这里可以修改需要读取的功能码
print(red)
alarm = "正常"
return list(red), alarm
except Exception as exc:
print(str(exc))
alarm = (str(exc))
return red, alarm ##如果异常就返回[],故障信息
if name == "__main__":
mod()