影刀RPA 串口通信自动化:工业设备数据读取
2026/7/11 19:14:38 网站建设 项目流程

影刀RPA 串口通信自动化:工业设备数据读取

作者:林焱 | 分类:影刀RPA新手教程 | 难度:★★★

什么情况用

工厂里很多老设备(PLC、传感器、仪表、电子秤)通过RS232/RS485串口输出数据,没有网络接口,数据全靠人工抄表。一个质检员每天在车间走几趟,拿本子记录温度、压力、重量数据,回去再录入Excel。

通过影刀RPA + Python的pyserial库,直接从串口读取设备数据并自动记录,彻底告别手工抄表。适用于有串口设备、想用低成本方式实现数据自动采集的场景。

怎么做

第一步:硬件准备

需要的东西:

  • 一台连有设备的电脑(串口COM1/COM3等)
  • USB转串口线(如果电脑没有物理串口)
  • 知道设备的波特率、数据位、停止位、校验位(看设备说明书)

店群矩阵自动化突破运营极限!

常见工业设备默认参数:

  • 波特率:9600(最常见)或115200
  • 数据位:8
  • 停止位:1
  • 校验位:None

第二步:安装pyserial

在影刀Python节点所在的环境安装:

pipinstallpyserial

第三步:读取串口数据

# 影刀Python节点:读取串口数据importserialimportserial.tools.list_ports# 列出所有可用串口ports=serial.tools.list_ports.comports()forportinports:print(f"发现串口:{port.device}-{port.description}")# 打开串口try:ser=serial.Serial(port="COM3",# 根据实际端口修改baudrate=9600,bytesize=8,parity="N",stopbits=1,timeout=2# 读取超时2秒)# 读取一行数据line=ser.readline().decode("utf-8",errors="ignore").strip()print(f"读取到数据:{line}")ser.close()exceptserial.SerialExceptionase:print(f"串口打开失败:{e}")

第四步:解析设备数据

不同设备输出的数据格式不同,常见格式:

# 示例1:电子秤输出 "ST,GS,+12.345,kg\r\n"defparse_scale_data(raw):ifraw.startswith("ST,GS"):parts=raw.split(",")weight=float(parts[2])# 12.345unit=parts[3]# kgreturn{"weight":weight,"unit":unit,"status":"stable"if"ST"inrawelse"unstable"}returnNone# 示例2:温湿度传感器输出 "T:25.6,H:68.3\r\n"defparse_sensor_data(raw):![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/f9dec69e166b479ebf978ed2f76ae2a7.png#pic_center)ifraw.startswith("T:")and",H:"inraw:t=float(raw.split(",H:")[0].replace("T:",""))h=float(raw.split(",H:")[1])return{"temperature":t,"humidity":h}returnNone# 示例3:PLC Modbus RTU(需要额外库)# pip install minimalmodbus 后调用

第五步:持续采集与异常处理

# 影刀Python节点:持续采集并记录importtimefromdatetimeimportdatetimedefcontinuous_capture(port,duration_minutes=60,interval_seconds=10):"""持续采集指定时长"""ser=serial.Serial(port=port,baudrate=9600,timeout=2)records=[]start=time.time()whiletime.time()-start<duration_minutes*60:try:line=ser.readline().decode("utf-8",errors="ignore").strip()ifline:data=parse_sensor_data(line)ifdata:data["timestamp"]=datetime.now().isoformat()records.append(data)print(f"{data['timestamp']}| 温度:{data['temperature']}°C | 湿度:{data['humidity']}%")exceptExceptionase:print(f"读取异常:{e},跳过本次")time.sleep(interval_seconds)ser.close()returnrecords# 执行采集data=continuous_capture("COM3",duration_minutes=30,interval_seconds=5)print(f"共采集{len(data)}条记录")

影刀中【Python节点】执行后,通过【写入Excel】将采集数据保存。

有什么坑

坑1:串口被占用

Windows下如果其他软件(串口调试助手等)已经打开了COM3,pyserial会报Access is denied。解决方法:运行前关闭所有串口调试工具,影刀中只打开一次串口。

坑2:波特率不匹配导致乱码

temu店群自动化报活动案例

最常见的坑。如果设备是115200波特率,你用了9600,读出来的数据全是乱码。一定要翻设备说明书或用串口调试工具先确认参数再写代码。

坑3:数据线接触不良

车间环境灰尘多、震动大,USB转串口线容易松动。建议在Python代码中加上"连续3次读不到数据则告警"的逻辑,避免悄无声息地漏数据。

consecutive_errors=0ifnotline:consecutive_errors+=1ifconsecutive_errors>=3:print("⚠️ 串口连接异常,连续3次无数据")else:consecutive_errors=0

坑4:字符编码

工业设备输出可能是GB2312、ASCII、甚至原始二进制,不一定是UTF-8。用decode("utf-8")可能报错。建议先用errors="ignore"忽略无法解码的字符,或者换成decode("gbk")尝试。

坑5:影刀的Python节点运行在沙箱环境

影刀的Python节点是临时进程,每次执行完就会释放。如果要做持续监控(比如每分钟读一次数据),不要用一个大循环,而是用影刀的【定时任务】每分钟触发一次Python节点,每次读一条数据。这样容错性更好。


总结:串口通信自动化的关键在于设备参数要准。拿到设备后先别急着写代码,用串口调试工具手动连一次,确认能读到正常数据,再开始写自动化流程。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询