影刀RPA 串口通信自动化:工业设备数据读取
影刀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# 列出所有可用串口portsserial.tools.list_ports.comports()forportinports:print(f发现串口{port.device}-{port.description})# 打开串口try:serserial.Serial(portCOM3,# 根据实际端口修改baudrate9600,bytesize8,parityN,stopbits1,timeout2# 读取超时2秒)# 读取一行数据lineser.readline().decode(utf-8,errorsignore).strip()print(f读取到数据{line})ser.close()exceptserial.SerialExceptionase:print(f串口打开失败{e})第四步解析设备数据不同设备输出的数据格式不同常见格式# 示例1电子秤输出 ST,GS,12.345,kg\r\ndefparse_scale_data(raw):ifraw.startswith(ST,GS):partsraw.split(,)weightfloat(parts[2])# 12.345unitparts[3]# kgreturn{weight:weight,unit:unit,status:stableifSTinrawelseunstable}returnNone# 示例2温湿度传感器输出 T:25.6,H:68.3\r\ndefparse_sensor_data(raw):ifraw.startswith(T:)and,H:inraw:tfloat(raw.split(,H:)[0].replace(T:,))hfloat(raw.split(,H:)[1])return{temperature:t,humidity:h}returnNone# 示例3PLC Modbus RTU需要额外库# pip install minimalmodbus 后调用第五步持续采集与异常处理# 影刀Python节点持续采集并记录importtimefromdatetimeimportdatetimedefcontinuous_capture(port,duration_minutes60,interval_seconds10):持续采集指定时长serserial.Serial(portport,baudrate9600,timeout2)records[]starttime.time()whiletime.time()-startduration_minutes*60:try:lineser.readline().decode(utf-8,errorsignore).strip()ifline:dataparse_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# 执行采集datacontinuous_capture(COM3,duration_minutes30,interval_seconds5)print(f共采集{len(data)}条记录)影刀中【Python节点】执行后通过【写入Excel】将采集数据保存。有什么坑坑1串口被占用Windows下如果其他软件串口调试助手等已经打开了COM3pyserial会报Access is denied。解决方法运行前关闭所有串口调试工具影刀中只打开一次串口。坑2波特率不匹配导致乱码temu店群自动化报活动案例最常见的坑。如果设备是115200波特率你用了9600读出来的数据全是乱码。一定要翻设备说明书或用串口调试工具先确认参数再写代码。坑3数据线接触不良车间环境灰尘多、震动大USB转串口线容易松动。建议在Python代码中加上连续3次读不到数据则告警的逻辑避免悄无声息地漏数据。consecutive_errors0ifnotline:consecutive_errors1ifconsecutive_errors3:print(⚠️ 串口连接异常连续3次无数据)else:consecutive_errors0坑4字符编码工业设备输出可能是GB2312、ASCII、甚至原始二进制不一定是UTF-8。用decode(utf-8)可能报错。建议先用errorsignore忽略无法解码的字符或者换成decode(gbk)尝试。坑5影刀的Python节点运行在沙箱环境影刀的Python节点是临时进程每次执行完就会释放。如果要做持续监控比如每分钟读一次数据不要用一个大循环而是用影刀的【定时任务】每分钟触发一次Python节点每次读一条数据。这样容错性更好。总结串口通信自动化的关键在于设备参数要准。拿到设备后先别急着写代码用串口调试工具手动连一次确认能读到正常数据再开始写自动化流程。