当前位置:首页 > 工业控制 > 工业控制
[导读]流水线防错不靠人盯,核心是把“身份—工单BOM—工位动作—结果反馈”做成闭环。物理防错放第一层(定位销、非对称治具),传感器+PLC互锁放第二层(到位、型号、计数、扭矩),视觉/力觉放第三层;错装漏装主要在第二层用PLC硬逻辑拦,第三层做复核。


流水线防错不靠人盯,核心是把“身份—工单BOM—工位动作—结果反馈”做成闭环。物理防错放第一层(定位销、非对称治具),传感器+PLC互锁放第二层(到位、型号、计数、扭矩),视觉/力觉放第三层;错装漏装主要在第二层用PLC硬逻辑拦,第三层做复核。

一、信息模型与身份采集

每件/每托盘绑RFID或条码,上线写VIN/工单/机型;PLC读身份后向MES要BOM清单,返回“应装零件号+数量+扭矩窗口+必经工位”。汽车混线可用滑橇HF RFID,读VIN后MES下发车型BOM,机器人/拧紧/加注自动切程序,型号不符直接互锁。 现场轻量方案用条码枪通过串口/以太网把SN发边缘网关,网关查BOM再写PLC数据区,PLC不直连数据库更稳。

二、SCL防错功能块

按工位建FB,输入身份、各零件到位、型号码、动作完成计数、扭矩合格、超时时间;输出允许继续、报警、NG锁定、追溯字符串。

TYPE E_Poka : (IDLE,IDENT,BOM_CHK,ASSEM,VERIFY,NG,PASS); END_TYPE

FUNCTION_BLOCK FB_AntiMiss

VAR_INPUT RFID:STRING[32]; SN:STRING[32];

 PartPresent:ARRAY[1..6] OF BOOL;   // 各零件到位

 PartModel:ARRAY[1..6] OF INT;      // 实际型号码

 ActCount:INT;                       // 实际装配数/拧螺丝数

 TorqueOK:BOOL;                      // 扭矩工具合格信号

 ExpBOM:ARRAY[1..6] OF INT;          // MES下发应装型号

 ExpCount:INT; Tout:TIME:=T#3S; Ack:BOOL; END_VAR

VAR_OUTPUT Allow:BOOL; Alarm:BOOL; NG:BOOL; Trace:STRING[80]; END_VAR

VAR Stat:E_Poka:=IDLE; Ton:TON; cnt:INT; END_VAR

CASE Stat OF

IDLE: IF RFID<>'' THEN Stat:=IDENT; END_IF;

IDENT: IF SN<>'' THEN Stat:=BOM_CHK; END_IF;

BOM_CHK:

  FOR cnt:=1 TO 6 DO

    IF NOT PartPresent[cnt] THEN Stat:=NG; Trace:='MISS:'+INT_TO_STRING(cnt); EXIT; END_IF;

    IF PartModel[cnt]<>ExpBOM[cnt] THEN Stat:=NG; Trace:='WRONG:'+INT_TO_STRING(cnt); EXIT; END_IF;

  END_FOR;

  IF Stat=BOM_CHK THEN Stat:=ASSEM; END_IF;

ASSEM: Ton(IN:=TRUE,PT:=Tout);

  IF ActCount>=ExpCount AND TorqueOK THEN Stat:=VERIFY; Ton(IN:=FALSE); END_IF;

  IF Ton.Q THEN Stat:=NG; Trace:='TIMEOUT/LESS'; END_IF;   // 漏装、超时、未达标全拦

VERIFY: IF ActCount=ExpCount AND TorqueOK THEN Stat:=PASS; ELSE Stat:=NG; END_IF;

NG: Allow:=FALSE; Alarm:=TRUE; NG:=TRUE;

  IF Ack THEN Stat:=IDLE; Alarm:=FALSE; END_IF;

PASS: Allow:=TRUE; Trace:='OK '+RFID+' '+SN;

END_CASE;

接近开关未到位时,拧紧/压装使能直接置0,不靠HMI弹窗; 相似零件用不同型号码比对,装反可用非对称传感器或视觉补判。

三、边缘侧BOM比对

多品牌PLC用Python边车拉MES,按工单缓存BOM,定时下发并回收结果:

import requests

def load_bom(wo):

   r=requests.get("http://mes/bom",params={"wo":wo},timeout=2).json()

   return {p["slot"]:(p["model"],p["qty"],p["torque_min"],p["torque_max"]) for p in r["items"]}

def check(station,bom,feed):

   for slot in bom:

       exp_m,exp_q,tmin,tmax=bom[slot]

       if feed[slot]["model"]!=exp_m: return False,f"WRONG {slot}"

       if feed[slot]["qty"]<exp_q: return False,f"MISS {slot}"

       if not (tmin<=feed[slot]["torque"]<=tmax): return False,f"TORQUE {slot}"

   return True,"OK"

PLC只认边车写好的ExpBOM/ExpCount,网络断了按上一工单缓存执行并打“离线防错”标志,恢复后补传追溯。

四、拦截与追溯闭环

错装:型号/零件码不等→立即Hold工位、锁工具、亮红灯、Andon推班长;漏装:到校验步计数不足或到位超时→不进下一站,NG品打标;扭矩不合格:拧紧枪回传NG→复拧一次仍不行转人工,不自动放行。 每条记录写SN、工位、RFID、BOM版本、实际型号、数量、扭矩、时间、操作人,落本地SQL再上MES,支持按序列号倒查哪一步漏做。

五、验收与防绕过

上线前用“挑战件”测试:故意少一件、换错型号、扭矩偏低、条码污损,确认全部拦截而非仅报警;运行期统计防错触发次数、误拦率、拦截不良率、MTTR。 互锁不允许HMI一键旁路,调试旁路须密码+时限+审计;传感器每月点检接近距离、RFID场强、条码识别率,视觉定期重采光照模板。按“身份绑定工单—BOM下发电 PLC—到位/型号/计数/扭矩四级校验—NG Hold追溯”落地,错装漏装可在本工位截住,不流到终检和客户端。



本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
关闭