资讯详情

资讯详情

SMEMA干接点与状态机:SMT产线设备对接实战解析

简介面向自动化行业设备互联的SMEMA协议详解文档适合自动化产线工程师、设备维护与集成人员阅读。文档系统梳理了表面贴装设备制造商协会标准在硬件接口、电缆连接和软件控制逻辑方面的要求包括顶部与底部传送带的电气连接方式、公母连接器的选型、四芯信号线的引脚定义以及板卡从上游设备向下游设备转移的必备条件。同时重点说明了出口传感器、入口传感器和中间传感器的安装与使用逻辑讲解如何通过传感器检测板卡流动、在必要时暂存板卡并避免输送带上的板卡碰撞。此外文档还总结了该标准在设备兼容性、生产可靠性和产线可扩展性方面的价值。资源包内只有一个PDF文档大小约737KB查阅方便已有1216人学习可作为SMT环境下设备对接调试和自动化系统集成的实用技术参考。1. SMEMA是产线的“接驳暗号”几个干接点如何让两台设备配合传板把一台新设备接进现成的SMT产线最先翻车的往往不是精度而是两台机器抢一块板。A设备把板子送出一半B设备就启动传送轨道上明明没有板上游却一直报“有板”全线直接死锁。要解决这种对不齐靠的不是串口或以太网——哪怕两边都是网口不同厂商的报文也互不相通。行业里通用的做法是走SMEMA协议一组用24V干接点承载的信号握手靠几个IO在设备之间传递“我能不能接、你有没有板、板子到没到”三个状态。它不管业务数据只负责传板节拍却能把联锁逻辑做成不依赖厂商的标准接口。做设备研发、给产线做集成的电气工程师以及写设备控制程序的开发者都要跟它打交道。2. 拆开SMEMA信号组传板侧与接板侧各管什么时序怎么走SMEMA这名字听着像协议实际它更接近一种“信号约定”。它不定义报文格式不分配IP地址甚至不指定用哪款连接器只规定了一件事两台设备对接时哪些IO信号负责把板子从A交到B这些信号在什么条件下有效。把约定看懂了接线和程序都好写难的是现场那些“信号有效但板子没动”的玄学时刻。2.1 四个核心信号Ready、Available、Present各代表什么一个典型的SMEMA对接面核心是四个信号加公共端。先记住它们的功能比记名字管用因为厂商之间命名并不统一。Board Available上游有板。这个信号由上游设备的出口区域传感器产生。它的含义不是“轨道上有东西”而是“有一块已经完成工艺、可以交给下游的板子”。区别很重要一块板刚进入出口区域但工艺还没收尾Available就不该有效。传感器一般装在出口末端离交接区边缘留一段静区避免板子刚露头就误报。Machine Ready机械就绪。这是下游设备告诉上游“我具备接板条件”的信号。包含轨道宽度已调到匹配、传输皮带在转、升降台或缓存位回到接板位置同时急停回路和门开关都已闭合。机械没Ready上游放板等于送板进黑匣子板子大概率卡在交接区。Process Ready工艺就绪意思是下游的工艺程序已处于可接收状态比如回流焊温度曲线加载完、AOI选了配方并自检通过。它和Machine Ready是“与”的关系哪个不满足都不能收板。我在程序里习惯把两个条件合并成一个综合位accept_ready : mech_ready AND proc_ready。Board Present板到位。下游接板位上的光电或光纤传感器触发后这个信号有效上游据此认为交接完成。如果板子在传感器前晃一下又退出时序立刻错乱所以这个传感器要选重复精度高的光纤头安装位置要离上游出口传感器够近避免板子悬在缝隙里两边都没检测到。命名这块不用背。不同厂商会叫Transfer Request、Accept Ready、PWB Available拿到点表先按功能对标哪个表示有板哪个表示能接哪个表示到位。三个功能位对好了接口就搭起来一半。2.2 一次完整握手板子从上游流向下游的时序走读一次交接我按六个拍来看下面配合两块板子说明上游板子完成工艺向出口移动出口传感器遮断后Board Available有效。下游检测到Available同时自己的Machine Ready和Process Ready都正常把综合Ready信号送给上游。上游看到下游Ready启动出口皮带板子进入下游轨道。板子到达下游接板位Board Present有效上游出口传感器复位说明板子已经离开上游区域。下游停住皮带把板子定位到挡板或顶升位置开始工艺处理。此时上游的Board Available清零表示交接已完成。下游工艺处理完板子再按同样四步逻辑从本机下游口交给再下一台设备。第5步是现场最容易出分歧的地方。有的设备在Board Present有效后就立刻关Available有的要等挡板动作完才关。两种都能跑但两条对接的产线必须统一。最稳的做法是等下游确认到位后再解除或者在交接区加一个独立的接驳检测把信号同时给两边看。另一个常见现象是交接区“悬空”。两家的传感器安装位置错位板子明明到了交界处但上游出口传感器已经复位、下游接板传感器还没遮断握手就停在第3步。这种问题靠调程序没用得把接驳机构的机械位置理清楚再决定传感器装在哪一侧。2.3 为什么选干接点IO24V信号在工业现场的生存逻辑和不少想全上以太网的同行聊过为什么SMEMA至今还是以干接点为主理由基本是这四条。兼容性。上百家设备厂商IO点表是公约数。串口和以太网各家协议都有自己的想法真要做设备对接光是协议适配就要折腾一两周。干接点只要电平对得上最多加个继电器转接就能通。实时性。干接点导通到对侧IO采集延时在毫秒级且抖动可控报文链路要经过组帧、排队、解析出了异常现场还不好定位。抗干扰。24V高电平配上光耦隔离比TTL和短距离RS-485好伺候。工业现场最怕共模干扰光耦直接把地环路断开干扰电流形不成回路。可验证。万用表、示波器、通断测试仪都能查调试门槛低。新人拿着点表也能量出来信号到底有没有过来。代价也得说清楚。干接点的短板是没有诊断数据一个信号卡住了是上游没给、中间断线、还是下游没接住从电平上看不出来。所以现在越来越多的设备保留SMEMA的同时会加一路以太网做状态诊断但联锁依然放在IO上。总线可以断联锁不能断这是我在多个模拟项目上验证过的结论。3. 落地对接从接线、IO映射到状态机代码落到设备上SMEMA对接就是三件事接线、点表映射、程序状态机。顺序别反线接错了程序写得再漂亮也白搭。3.1 接线前的选型连接器、线缆与隔离方式先看接口形式。如果两台设备都有标准的SMEMA口常见D-sub或端子排直接把信号线接到各自端子上。如果有一台只有网口或串口、没有原生IO就得加一台远程IO模块来转换SMEMA信号接进远程IO再用Modbus或OPC UA转发给那台设备。这里有个原则必须守住联锁信号走硬线网络只做诊断和监控不能让通信故障影响设备安全。连接器选型我的经验是这样。D-sub针脚定义不统一不同品牌甚至同品牌不同批次都可能反接线前一定核对点表。端子排最省心但容易接错建议每根信号线套线号管标签写中文名而不是缩写后期维护能省很多时间。线缆用屏蔽双绞线绞距密一点屏蔽层单端接地。线径0.5到0.75平方足够了太长要按压降算线径。信号定义可以先整理成一张表信号名方向含义备注Board Available输入上游有板可交常开/常闭由传感器类型决定Machine Ready输入下游机械可接对侧输出给本机Process Ready输入下游工艺就绪与机械Ready做与逻辑Board Present输出本机已接住板给上游的交接完成信号Common公共端24V或0V基准全系统共地避免压差接线顺序也有讲究。先接公共端和地线再接信号线接完后用万用表蜂鸣档逐根确认通断再上电测24V和信号电平。别偷懒直接插上就打电IO点烧毁的事我见过不止一次。3.2 PLC和单片机里的IO映射SMEMA信号的程序表达在PLC里SMEMA信号先映射到数字量点位。以某类PLC的IO地址为例I0.0给Board AvailableI0.1给Machine ReadyI0.2给Process ReadyQ0.0输出Accept ReadyQ0.1输出Board Present。映射层只做通道绑定不做滤波滤波交给IO模块参数或底层驱动。(* SMEMA收板侧信号映射与联锁 *) EX_I0.0 : pBoardAvailable; (* 来自上游的干接点信号 *) EX_I0.1 : pMechReady; (* 来自下游的机械就绪信号 *) EX_I0.2 : pProcReady; (* 来自下游的工艺就绪信号 *) Q0.0 : bAcceptReady; (* 输出给上游允许收板 *) Q0.1 : bBoardPresent; (* 输出给上游板已到位 *)这段逻辑的重点是把物理IO和业务逻辑分开。程序里只用EX_I0.0这类映像变量不直接读输入端子后面对换点位时不用改逻辑。bAcceptReady由机械和工艺两个条件合成任何一个为假都不能给上游放行信号。bMechReady : NOT bEStop AND bWidthOK AND bBeltOn; bProcReady : bRecipeDone AND NOT bAlarm; bAcceptReady : bMechReady AND bProcReady; (* 报警优先急停或故障时无条件禁止收板 *) IF bEStop OR bAlarm THEN bAcceptReady : FALSE; END_IF;这里的bEStop必须串进硬件急停链同时在软件里参与联锁。bWidthOK来自轨道宽度伺服的到位反馈如果轨宽没有调到和上游一致板子送进来会卡歪。bRecipeDone由上位机配方下载完成时置位防止程序没加载就放板。3.3 状态机代码接收侧的C语言实现与ST对照用C写状态机适合嵌入式控制板在PLC里则用ST或梯形图表达同样的状态转移。下面这段是收板侧的简化状态机。/* 收板侧SMEMA状态机 */ typedef enum { SM_WAIT_BOARD, /* 等待上游给板 */ SM_ALLOW_ACCEPT, /* 条件满足放行 */ SM_RECEIVING, /* 板正在进入 */ SM_PROCESSING, /* 工艺处理中 */ SM_WAIT_UNLOAD /* 等待向下游传板 */ } sm_state_t; int sm_step(sm_state_t *st, const sm_io_t *io) { switch (*st) { case SM_WAIT_BOARD: /* 本机机械、工艺都就绪才允许上游放板 */ if (io-mech_ready io-proc_ready) { *st SM_ALLOW_ACCEPT; } break; case SM_ALLOW_ACCEPT: /* 上游有板且本机仍就绪启动接板皮带 */ if (io-board_avail io-mech_ready io-proc_ready) { start_incoming_belt(80); /* 80表示皮带速度百分比 */ *st SM_RECEIVING; } break; case SM_RECEIVING: /* 接板位传感器遮断说明板子到位 */ if (io-board_present) { stop_incoming_belt(); set_accept_signal(0); /* 关闭收板允许防止重叠 */ *st SM_PROCESSING; } break; case SM_PROCESSING: /* 工艺完成回调返回1进入待传状态 */ if (process_step_done(io)) { *st SM_WAIT_UNLOAD; } break; case SM_WAIT_UNLOAD: /* 传入下一台设备的逻辑由另一组SMEMA口处理 */ break; } return 0; }这段代码的逻辑是每个状态只响应一个关键事件事件不满足就原地等待不会乱跳。参数要说明几点。start_incoming_belt(80)里的80是皮带速度百分比不同板型要单独标定重板速度要降轻板可以快一些。process_step_done是工艺模块写好的回调由加热温区、点胶、贴装等业务自己判断完成SMEMA状态机只关心它的返回值。set_accept_signal(0)必须在Board Present有效后立刻执行这是防止下一块板提前进入的关键一步。PLC里用ST实现时状态转移照抄IO读取改成输入映像变量。我一般把状态机放在10ms循环里跑因为SMEMA信号变化是秒级事件10ms足够响应IO滤波在底层做状态机里不再处理抖动这样可以把状态跳转保持得很干净。4. 必调参数滤波时间、握手超时与信号极性SMEMA标准本身没规定滤波器长度、超时时间或极性这些全部是现场调出来的。三个参数组踩坑最密集调好了产线顺滑调不好就一会儿误触发一会儿死锁。4.1 输入滤波时间10ms、20ms还是50ms滤波的目的有两个抑制继电器触点的回跳以及滤掉变频器和伺服带来的尖峰毛刺。但滤波时间不能一刀切。信号来源滤波建议说明光电/光纤传感器10ms响应快板速高时不易丢信号继电器/接触器触点30-50ms抑制机械回跳来自对侧设备的IO10-20ms一般链路不长毛刺少我一般把默认值设在20ms现场根据故障情况再调。如果出现变频器一启动就误触发的先把滤波加到50ms试如果有效再去查接地问题滤波只是缓解不能根治干扰源。反过来如果板子传得很快、信号持续只有几十毫秒滤波设太大会把整个Available信号吃掉造成漏传。这两种情况我都踩过前者是滤波不够后者是滤波过头。软件滤波的做法是在底层做连续两次采样确认同一个电平持续2到3个扫描周期才认状态翻转。PLC扫描周期10ms确认时间就是20到30ms和硬件滤波叠加要注意总延时交接时序里要留出这部分余量。4.2 握手超时卡板报警与防重送的时间窗口超时参数是两个握手超时和到位超时。握手超时指Board Available有效后下游迟迟没给出Ready多半是下游卡板或本机工艺未完成到位超时指Board Present触发后板子没有在预期时间内完成定位或工艺。经验值握手超时30到60秒到位超时10秒。更准确的做法是按节拍算正常传送节拍的1.5到2倍。如果产线节拍是20秒一块握手超时设30秒节拍慢的重板线超时要放宽到120秒否则偶尔工艺波动就会误报警。超时到了之后做什么比超时本身更重要。我的处理顺序是停皮带、声光报警、把故障状态写进诊断字、同时通知上位机。复位按钮只允许在安全状态下有效不允许在板子悬空时直接恢复传送。防重送窗口也要在这里处理前一块板的Board Present已经复位、上游出口传感器已复位再等0.5到1秒空转才允许上游重新给出Available。这个窗口是防止双板重叠的关键参数很多双板事故就是这里写得太快。4.3 极性配置与上电初始化常闭触点踩过的坑信号极性是第一个要确认的点。有的设备Ready信号用常闭触点断电状态算有效逻辑是“断线了默认可接收”有的用常开通电才算有效。对下游设备来说Machine Ready有效到底是电平高还是低必须在点表里确认不能猜。我的一贯做法是程序读到的原始电平统一做归一化内部一律用True表示“可以接板”。这样换设备时只改IO极性配置逻辑代码不动。另一个容易忽视的是断线检测如果用的是常闭触点断线反而等于信号有效会骗过联锁。所以重要信号我建议串联一个诊断回路Ready信号链路里串一个健康触点断线时诊断位翻转程序能判断“信号链路失效”而不是当成“设备已就绪”。上电初始化同样要处理。控制板上电瞬间对侧设备还没建立公共端输入点悬空电平可能是乱跳的。解决方法是三管齐下输入端并联10kΩ电阻固定默认电平软件里开机后延时200到500毫秒再使能SMEMA逻辑关键输入用模块的硬件滤波兜底。这三点缺一个迟早遇到“开机就报有板”的灵异现象。5. SMEMA联调避坑指南卡板、双板重送与信号干扰排查以下四条是我在多个模拟项目的现场踩过、也被同行问过最多的典型问题。按出现频次排前两条属于时序逻辑问题后两条属于电气干扰问题。排查顺序建议按“看LED诊断位、量对侧输出、强制IO排除走线、示波器抓波形”四步来不要上来就改参数。5.1 开机就报Board Present上电毛刺与悬空电平现象设备一上电程序还没进主界面就提示接板位有板。看轨道上面空空如也。手碰一下端子信号又消失了。原因输入点没有默认电平上电瞬间对侧设备的公共端还没建立IO处于悬空状态电平被周围电场带着走。如果传感器用的是常闭类型断线状态下线缆本身就是“导通”更容易把Present误判为有效。解决输入端并联一个10kΩ下拉电阻到0VNPN接法如果是PNP接法就上拉到24V。PLC侧启用输入滤波软件里增加开机延时启动后500毫秒再让SMEMA逻辑使能。硬件上优先选常开传感器断线时呈断路逻辑上反而安全。这套组合在三个项目里都直接生效属于必做项。5.2 双板同时进入下游Board Available时序被提前现象整条线跑起来偶尔出现两块板叠着进下一台设备或者下游一台设备里同时出现两块板相撞。贴片机和回流焊之间最容易发生。原因上游检测到前一块板已经离开自己的出口传感器但没有确认下游真正接住就允许下一块板触发Available。双方在交接区重叠第二块板跟着就出去了。根子在于状态机里少了一个“交接完成”状态把“出口无板”当成了“可以送下一块”。解决把Available的置位条件从“出口有板”改成“前一块已交接完成且出口无板且延时完成”。延时建议0.2到0.5秒给下游一个稳定建立Board Present的时间。这个逻辑加进去后双板重送基本不会再出现。排查时重点看两块板在交接区的时间重叠窗口用示波器同时抓Available和Present两条线一眼就能看出是谁提前了。5.3 不同厂商设备握手死锁PNP、NPN与继电器转接现象两个不同品牌的设备对接后上游一直显示下游不Ready下游却坚持自己已经Ready。万用表量两端电压都在但信号就是不通。原因一边是PNP输出高电平有效另一边输入模块只能用NPN接法低电平有效电平逻辑对不上。如果中间还有串联继电器继电器线圈额定电压和公共端接法不一致也会造成“信号有效但拉不动线圈”。D-sub口这种问题尤其多针脚定义甚至一代设备一个样。解决先核对两边IO点表确定公共端。都是干接点的情况下中间加一个继电器转接是最省事的信号源驱动继电器线圈继电器触点给对侧设备两端彻底电气隔离。混合PNP和NPN时继电器线圈接信号源的输出方式触点侧按对侧输入要求接线。现场如果只是飞线调试用万用表二极管档量导通方向确认公共端接在同一个基准上。5.4 变频器一启动就误传板接地、屏蔽与光电隔离现象贴片机吸嘴一动作或者回流焊的马达加速时下游偶尔收到一个虚假的Board Available直接开始传板。设备停下来就没事一跑就随机误触发。原因动力电缆和信号电缆走了同一个线槽变频器启动瞬间的高频共模电流耦合进信号线。还有一种情况是屏蔽层两端都接地形成地环路地电流直接灌进信号地。万用表量稳态电平看不出问题因为毛刺是瞬态的。解决信号线换双绞屏蔽线屏蔽层只在接收端单端接地动力线和信号线分开走距离至少30厘米SMEMA信号回路中串光耦隔离输入侧和输出侧用不同的24V电源。排查时用示波器抓信号波形看毛刺的宽度和幅值再决定滤波时间。只靠加滤波来对付干扰是治标不治本接地和布线才是根本。这条经验是从一个回流焊项目里换来的前后查了一整天最后发现是变频器输出线从IO端子排旁边穿过。6. 进阶玩法把SMEMA做成状态机再留一个调试后门SMEMA一旦跑通最值钱的一件事是给设备留一个“模拟对侧设备”的调试后门。具体做法在触摸屏或上位机工具里做一个仿真IO页把Board Available、Machine Ready、Process Ready做成手动开关再放一个状态显示框实时显示当前状态机的步骤。这样设备出厂前就能单机自测握手时序不需要两台机器抬到一起才联调。调试时要对照状态转移表每一行都是一次完整的交接路径当前状态触发条件动作下一状态WAIT_BOARD本机Ready且上游Available启动接板皮带RECEIVINGALLOW_ACCEPT上游有板且本机仍就绪放行RECEIVINGRECEIVINGBoard Present达位停皮带、关允许信号PROCESSINGPROCESSING工艺完成释放板到位信号WAIT_UNLOAD我在调试时会用示波器两个通道同时抓Board Available和Board Present观察上升沿和下降沿的相对位置没有示波器时就在PLC里加一个32位毫秒时间戳变量信号变化时记录一次触发时间。用后门的模拟开关翻转信号看状态机是否按预期跳转能提前发现“少写一个状态”的时序漏洞。这个方法在几个模拟项目的出厂测试里都派上了大用场新机型联调时间从两天缩短到半天。这个习惯是我从一次返工里学来的。当时为了省事直接在真机上联调两班人蹲在现场满线跑一整天才把一个交接区重叠问题暴露出来。后来把调试后门做成标配出厂前先用模拟IO把所有状态路径过一遍再上真线对接握手这块基本不再翻车。如果你也在为接线时没留测试口而返工下个项目开始前先把这扇后门留好。希望帮到你。本文还有配套的精品资源点击获取
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →