LabVIEW获取ABB的日志、设备信息、速度、状态。 一个abb上位机的Demo,使用的是适合工程人员的LabVIEW语言。 38
直接撸起袖子开干!今天咱们聊聊怎么用LabVIEW薅ABB设备的羊毛------哦不,是正经获取设备数据。搞过自动化项目的都知道,和ABB设备打交道就像追高冷女神,得摸准它的脾气。
先上硬货:这个Demo用了OPC UA协议对接IRB1200机械臂。工程湿人们肯定要问为啥不用Modbus?问就是ABB家新设备都这德行,OPC UA才是亲儿子协议。
看前面板这布局(图1),简直把ABB设备扒得底裤都不剩------设备序列号、运行状态码、关节速度曲线全给安排上了。重点是这个红色紧急停止按钮,关键时刻能保命你懂的。
labview
//OPC UA连接初始化
UA_Client.Create.vi (UA_EndpointURL:="opc.tcp://192.168.1.10:4840");
UA_Client.Connect.vi (Timeout:=5000);
UA_Client.CreateSubscription.vi (PublishingInterval:=200);
这段代码看着简单,暗藏玄机:5000ms超时是踩坑踩出来的经验值,短了容易抽风,长了急死人。订阅间隔设200ms,实测比官方文档说的250ms更跟手,别问为啥,问就是玄学。
读取关节速度时得玩点花活:
labview
UA_Client.ReadNode.vi (NodeID="ns=3;s=RobotSpeed", Value=>Speed_Cluster);
Flatten To JSON.vi (Speed_Cluster, JSON_Output);
JSON_To_Data.vi (JSON_String, Type=Cluster, Data=>Speed_Array);
为啥非转JSON?因为ABB传过来的数据结构堪比俄罗斯套娃,直接拆cluster能让你怀疑人生。转成JSON再解析,相当于给数据做了个CT扫描。
状态监测这part有个骚操作:
labview
Event Structure (UA_DataChangeEvent):
Case 1: Update Status LED
Case 2: Trigger Alarm Log
Case 3: Auto Reconnect
事件结构里藏了三个锦囊:状态灯实时刷新、异常日志自动记录、断线重连智能触发。特别是那个自动重连,比你家Wi-Fi还贴心,半夜设备抽风也不怕数据断档。
日志存储用了TDMS文件格式,这玩意儿读写速度堪比闪电侠。看这行代码:
labview
TDMS Write.vi (GroupName:="Diary", Channels:=["Timestamp", "Event", "Value"], Data:=Log_Cluster)
通道名称建议用英文,中文路径容易闹鬼(别问我怎么知道的)。数据按时间戳、事件类型、数值三列存储,后期用DIAdem分析时直接起飞。
整个Demo跑起来后,机械臂就像被装了窃听器------呸,是被完美监控。关节速度曲线那叫一个丝滑,状态码变化比股票行情还及时。最后提醒各位:玩真机记得配安全PLC,别让机械臂给你来套军体拳!
