SMEMA协议解析:四芯线握手与产线设备对接避坑
简介:围绕自动化设备行业常用的SMEMA协议,这份PDF文档面向SMT产线设备集成、电气接口调试与运维人员,帮助理解前后主机及外部搬运设备之间的通信规范。内容涉及硬件接口与连接器布置、设备间电缆接线规则、板卡转移的软件控制条件,以及出口、入口和中间传感器在板卡流动监测、缓存与防撞中的作用,并归纳协议在兼容性、可靠性和扩展性方面的优势。包内为1个PDF文件,压缩包约737KB,适合现场调试、培训讲解和技术查阅。已有1219人学习,读者可据此梳理上游有板可发、下游准备好接收的转移条件,理解T3/T4状态检查及中间传感器只缓存一块板卡的防撞逻辑,快速建立产线设备互联的标准框架。
1. 一条产线能自己传板,靠的不是协议栈,是四根线的电平
在自动化产线上看过设备对接的人,常会有一个反直觉的印象:几台来自不同厂家的机器,没有共享数据库,没有 IP 地址,也没有一套需要烧进固件的协议栈,却能把一块 PCB 从第一台稳稳传到最后一台,中间还不撞板。让这件事成立的,是 SMEMA 协议:一套把“能不能传板”化简成几个电平信号的行业约定。它不负责传工艺参数,只回答两个问题:上游有没有板要发,下游能不能接。正是这种简化,让不同厂商的设备在一条自动化产线上有了共同语言;也正因为简单,它的可靠性来自机械对齐、电气握手和传感器确认这三者的配合,并非来自软件层面的容错。
2. 机械与电气接口:2910±10mm 和四根线到底约定了什么
设备对接失败,十次里有七次出在机械层,三次出在电气层,协议逻辑层反而不常出问题。原因不复杂:SMEMA 的信号语义太简单,简单到几乎不会写错;但机械基准差几毫米、连接器公母装反、共地没接,都会让一条本来正常的线停在那里,而面板上没有任何报错。
2.1 传送带高度 2910±10mm:机械基准先于信号
原文把顶传送带标成 2910±10mm,这个尺寸是整条线对接的第一基准。它通常指传送带支承面到厂房地面的高度,不同图纸可能把基准取在皮带面、导轨面或机架顶面,所以接设备前必须和对方确认基准面到底在哪,不能只看数字对上就放心。
±10mm 这个公差看起来宽松,实际已经用掉了机架焊接变形、脚杯调节余量和地坪平整度的大部分预算。现场常见做法是先选一台设备当基准机,用激光水平仪把它的传送带面调平,其余设备依次向它对齐;调完再用手推一块废板走完全程,感受板头过缝时有没有明显的“磕一下”。如果高度差超过 10mm,板头会先撞上下游的护边或皮带轮,薄板会直接卷边,厚板则可能把上游的皮带顶脱轨。
450mm 这个尺寸标在底传送带上,通常对应底部传送段的长度或对接段宽度,它决定了板在两台设备之间那段“悬空”有多长。悬空段越长,板中部下垂越明显,薄板在高温环境下更明显。机械设计上常见的做法是把两段传送带的支撑点尽量靠近对接缝,宁可在缝两侧各留一小段无支撑,也不要让整块板悬在中间。这部分没有信号可测,只能靠推板和目视,但它是后面所有握手逻辑能成立的前提。
2.2 四芯线:Pin1 到 Pin4 各自承担什么语义
电气层最容易被低估。原文明确写了“Pin1、2、3、4 is used”,同时又写“No need failed board available”,这两句话合起来说明一件事:四根线里有一根的语义是留给失败板信号的,但这条线可以选择不接。理解这一点,现场接线时就不会因为少接一根而怀疑自己接错。
按常见接法,四根线的分工大致如下:
| 引脚 | 常见方向 | 承载语义 | 现场叫法 |
|---|---|---|---|
| Pin1 | 上游 → 下游 | 上游有板待发 | Board Available |
| Pin2 | 下游 → 上游 | 下游可接收 | Machine Ready |
| Pin3 | 下游 → 上游 | 传输过程确认,参与 T3 监测 | Board Transfer / Received |
| Pin4 | 参考或备用 | 失败板信号或公共参考,按需取舍 | Failed Board / COM |
需要提醒的是,不同厂商图纸对 Pin3、Pin4 的叫法并不完全统一,有的把 Pin3 叫“传输中”,有的叫“接收确认”,极性也可能相反。所以接线前必须以两端设备的手册为准,不能只靠记一句口诀。现场更稳妥的做法是:断电状态下用万用表逐根确认通断和方向,再上电测量静态电平,最后才接上另一端。
电气参数上,工业现场常见的实现是 24V 直流加光耦隔离,输入侧灌电流或拉电流由设备定义。用 24V 而非 5V,是为了在几米到十几米的线缆上扛住压降和共模干扰;用光耦是为了切断两台设备之间的地电位差。这两条决定了后面很多“玄学”故障的根因:信号灯亮着,但光耦输入电流不够,机器就是不动。
2.3 连接器装在机器背面:方向约定比引脚定义更容易出错
原文有一句很容易被略过的话:建议把母连接器安装在机器背面。这不是随意的结构建议,它同时解决三个问题。
第一是操作空间。产线正面是操作员上下料、换线、清洁的地方,线缆如果从正面走,迟早被踢掉或被周转箱压住。背面走线把线缆移出操作动线,也方便把多余长度盘在机架内。
第二是方向一致性。SMEMA 的线缆两头是一公一母,标准约定上游出公头、下游进母头。如果所有设备都把母座装在背面,那么“上游设备的公头插进下游设备的母座”这个动作在物理上就只有一种插法,不容易接反。反过来,如果有的设备母座装正面、有的装背面,就会出现两台都是母座、需要一根公对公转接线的情况,这种线在现场最容易做错,也最容易在换线时丢失。
第三是应力释放。背面连接器通常靠近机架立柱,线缆可以用扎带或拖链固定,插头不受拉力。正面插头被反复插拔、被物料车剐蹭,接触不良的概率高得多。
注意:公母头方向错、共地没接、Pin1 与 Pin2 接反,这三类问题在面板上的表现几乎一样,都是“下游未就绪”。排查时先量线,不要先改程序。
3. 握手逻辑:上游有板、下游就绪,两个条件为什么够用
把机械和电气对齐之后,真正决定板能不能过去的,是两个信号的电平组合。原文把传输条件写得很直白:上游机器有板可发,下游机器准备好接收。很多人第一次看到会觉得条件太少,担心漏掉什么。实际上这两个条件正好覆盖了传送带作为“独占资源”的全部约束。
3.1 把传输条件写成状态机
用一段简化模型把逻辑固定下来,比在现场凭经验判断更可靠。下面这段 Python 只描述单台设备一侧的握手过程,不涉及具体 PLC 指令,重点是状态迁移和超时。
# SMEMA 单侧握手状态机(简化模型) # board_available_in: 上游送来的“有板待发”电平(本机作为下游时使用) # machine_ready_out: 本机送给上游的“可接收”电平 # inlet_sensor: 入口光电,板头到达时置 True # outlet_sensor: 出口光电,板尾离开时置 False DEBOUNCE_MS = 30 # 光电去抖,过滤板边开槽造成的毛刺 TRANSFER_TIMEOUT_MS = 8000 # 传输超时,防止板卡在半路无人处理 state = "IDLE" def step(now, board_available_in, machine_ready_out, inlet_sensor, outlet_sensor): global state if state == "IDLE": # 只有上游有板、本机就绪、入口无板,三个条件同时满足才启动 if board_available_in and machine_ready_out and not inlet_sensor: state = "TRANSFER" return {"motor": True, "ready": False} elif state == "TRANSFER": # 板头到达入口传感器,说明板已进入本机传送段 if inlet_sensor: state = "CONFIRM" elif state == "CONFIRM": # 板尾离开出口传感器,说明板已完全交出 if not outlet_sensor: state = "IDLE" return {"motor": False, "ready": True} return {"motor": state == "TRANSFER", "ready": state == "IDLE"}这段代码的关键不在语法,而在三个参数的选择。DEBOUNCE_MS取 30ms 左右,是因为光电传感器扫过板边的开槽、镂空、Mark 点时会产生毫秒级抖动,去抖太短会误判“板已离开”,去抖太长会拖慢节拍。TRANSFER_TIMEOUT_MS是最后一道保护,板卡在对接缝超过这个时间就应报警,否则上下游都以为对方在动,整线停在那里却没人知道原因。
状态机里machine_ready_out在传输期间被拉低,是一个容易被忽略的细节:本机正在接板,就不该再向上游宣告“我可接收”,否则上游可能紧接着发第二块。这一步把“独占”写进了电平里,而不是靠上层软件记状态。
3.2 出口与入口传感器:把“板在哪”变成可判定的电平
握手信号回答“能不能传”,传感器回答“传到了没有”。原文把出口传感器和入口传感器的分工写得很清楚:出口传感器监测板开始移出,入口传感器监测板进入,两者一起用于检查 T3 和 T4 状态。
出口传感器通常装在传送段末端、对接缝之前,板尾离开它的那一刻,意味着整块板已经离开本机,可以释放“有板待发”。入口传感器装在传送段起始端,板头遮住它的那一刻,意味着板已经进入下游,下游可以开始计时确认。两个传感器的安装位置直接决定时序:出口传感器装得太靠里,板还没完全出去就报“已离开”,下游可能提前动作;装得太靠外,板已经过了缝才报,节拍被白白拖慢。
这也是为什么现场调机时,传感器位置要用废板实测,不能只看图纸尺寸。板长不同、板边有无工艺边、板上有没有开槽,都会改变遮挡时间。
3.3 T3/T4 监测:传输过程本身也要被确认
只靠“有板待发”和“可接收”两个信号,能保证板开始传,但不能保证板传到位。T3 和 T4 的作用就是把传输过程切成两个可观测的时间窗:从发出传输请求到入口传感器确认,是一段;从出口传感器触发到板完全离开,是另一段。任何一段超时,都说明机械或传感器出了问题。
常见的超时原因有三类。一是板在对接缝卡住,通常是高度差或皮带张力不一致;二是传感器被灰尘、助焊剂残留遮挡,信号一直不翻转;三是下游虽然给了“可接收”,但内部传送带没启动,板到了入口却进不去。这三类问题在面板上的表现都是“停线”,只有把 T3/T4 的计时打开,才能区分是机械卡板还是信号误判。
提示:调机阶段建议把 T3/T4 的超时值先设宽,等整线跑顺再逐步收紧。一上来就设得很紧,正常的节拍波动会被误报成故障,反而掩盖真问题。
4. 中间传感器:为什么一条传送带只能存一块板
前后两台设备直接对接时,两个传感器就够了。但只要中间加了一段缓存传送带,或者下游节拍明显慢于上游,就需要第三个传感器。原文对它的描述很克制:中间传感器用于在下游未发出就绪信号时停住板并存储,而且一条传送带只用 1 个中间传感器,确保一条传送带只存 1 块板,避免底层传送带上的板与板相撞。
4.1 中间传感器的截停逻辑
中间传感器一般装在缓存段中部。板头遮住它时,如果下游的“可接收”还是低电平,控制器就停带,把板停在这个位置。等下游就绪,再启动传送带把板送出去。这个逻辑本身不复杂,复杂的是它和入口、出口传感器的配合。
一块板从进入到离开,会依次遮住入口、中间、出口三个传感器。控制器不能只看“某个传感器被遮”就做判断,而要按顺序识别。常见的做法是给三个传感器分配不同职责:入口只负责“进入确认”,中间只负责“截停与缓存占用”,出口只负责“离开确认”。三者不互相替代,也不做“任意一个被遮就算有板”的合并判断。这样即使板很长、同时遮住两个传感器,状态也不会歧义。
4.2 一板一缓存的物理约束
“只用 1 个中间传感器”这条限制,本质上是用物理结构替代协议能力。SMEMA 的四根线里没有板序号、没有队列长度、没有缓存区状态报文,它无法告诉上游“我这里已经存了一块,别再发了”。既然协议层传不了这个信息,设计上就让缓存区物理上只能存一块:第二块板进来时,第一块还停在中间传感器位置,两块板必然重叠,操作员一眼就能看见。
这听上去像是把问题推给了机械,但它带来一个很实在的好处:任何厂商实现这套逻辑时,都不需要额外的状态机,也不需要约定队列深度。缓存区的容量是 1,这个数字写进了结构里,不写进协议里。
| 传感器 | 安装位置 | 触发时机 | 主要职责 | 典型故障 |
|---|---|---|---|---|
| 入口传感器 | 传送段起始端 | 板头到达 | 确认板已进入本机 | 被粉尘遮挡,一直报有板 |
| 中间传感器 | 缓存段中部 | 板头到达并停留 | 截停板、标记缓存占用 | 位置偏前,长板同时遮住入口 |
| 出口传感器 | 传送段末端 | 板尾离开 | 确认板已完全交出 | 板边开槽导致误翻转 |
4.3 板长、传感器间距与状态歧义
中间传感器只有一个,意味着它对板长很敏感。如果板长大于入口到中间传感器的间距,板头到达中间传感器时,板尾可能还遮着入口传感器。这时如果控制器把“入口被遮”理解成“还有板要进”,就会和“中间已占用”冲突,出现停带后又突然启动的抖动。
处理办法不是加传感器,而是明确优先级:中间传感器被遮时,缓存区判定为占用,入口信号只做记录、不参与放行决策。另外一个常见做法是把中间传感器尽量往缓存段中间装,让常见板长在进入缓存后,板尾能完全离开入口传感器,减少同时遮挡的时间窗。这些都属于调机阶段的细节,图纸上不会写,但直接决定缓存段跑得顺不顺。
5. 避坑与排查:SMEMA 现场最常见的五类翻车
这套协议的逻辑简单,所以故障几乎都出在“简单的地方被想当然”。下面五条是按现场出现频率排的,每条都按现象、原因、解决三段写,方便对着查。
5.1 板停在对接缝,下游绿灯却亮着
现象:上游出口传感器已经触发,板头过了缝,但传送带停转,下游面板的就绪灯是亮的。
原因:下游的“可接收”信号取自软件就绪,并没有把缓存区占用算进去。下游缓存里还停着一块板,中间传感器被遮住,但面板灯仍然按软件状态点亮。上游看到灯亮就以为能发,板到了缝口发现没人接。
解决:把“可接收”的取法改成“软件就绪且中间传感器空闲”,也就是缓存区确实有空位才给高电平。现场应急时先手动清空下游缓存,再复位。改完之后要用两块板连续跑一遍,确认第二块板会在上游等待,而不是跟着挤过去。
5.2 两块板在下游入口叠在一起
现象:下游入口处两块板重叠,板边有压痕,严重时卡住传送带。
原因:出口传感器被板上的开槽或镂空区域反复触发,控制器误判“板已离开”,提前放行了第二块。也可能是去抖时间设得太短,板边毛刺被当成两次边沿。
解决:先看传感器安装位置,尽量让检测点落在板边的实心区域;再把去抖时间加到 30~50ms;如果板型变化多,考虑换成对射式传感器,减少漫反射受板面颜色和反光的影响。改完后用最容易误触发的那种板型做验收,不要用平板凑合。
5.3 换了一台设备后信号全反
现象:新设备接上后,上游一直显示下游未就绪,但新设备单独运行时一切正常。
原因:两端的公母头定义方向不一致,或者新设备内部把 Pin1 和 Pin2 的输入输出方向做反了。更隐蔽的一种是两边都按“母座在背面”安装,结果对接时缺一根公对公转接线,现场临时做了一根,线序凭记忆压的。
解决:断电,用万用表逐根量通断,再对照两端手册确认每根线的方向和极性。不要凭线色判断,不同厂家的线色约定并不统一。临时线做完后必须做标记,换线时优先换掉。
5.4 线延长后偶发停线
现象:原来三米的线跑得很稳,加到十五米后开始偶发停线,重启又正常,找不到规律。
原因:线径偏细导致压降,加上线缆和伺服动力线走在同一个线槽里,共模干扰让光耦输入电流瞬间不足。表现就是信号“闪一下”,控制器当成一次边沿处理。
解决:信号线单独走线槽,必要时用双绞线;检查 24V 电源容量和线径,长距离下适当加粗;干扰特别严重的场合加中间继电器或光耦中继。改完后不要只看静态电平,要用逻辑分析仪或带录波的万用表抓一段时间的波形,确认没有窄脉冲。
5.5 坏板流到了下游测试位
现象:明明知道是坏板,却没有在下游被拦下来。
原因:现场按“不需要失败板信号”省掉了那根线,但工艺上又要求坏板不能进入测试位。两边对“不需要”的理解不一致:电气上确实可以不接,流程上却不能不管。
解决:先把坏板的下线点定清楚,是在本机贴标后人工拿走,还是流到固定工位剔除。如果确实需要跨设备传递这个信息,就单独约定一根线,并在两侧软件里做联锁,不要指望标准里的可选项自动生效。这类问题最好在产线设计阶段就写进对接文档,调机时再补,成本高很多。
6. 设计取舍:四根线撑了这么多年,代价是什么
SMEMA 能被不同厂商的设备普遍接受,核心原因在于它选择了“最小公分母”:任何一台设备,只要有传送带、两个光电、一个四芯接口,就能实现对接。它不需要协议栈、不需要地址分配、不需要固件升级,也不需要两家厂商坐下来谈数据格式。代价同样明显:它传不了板 ID,传不了工艺参数,也做不了队列调度。板与板之间没有身份,只有“有”和“没有”。
这套取舍里最值得琢磨的是中间传感器只用一个。从协议能力看,这是能力不足的妥协;从系统设计看,这是把复杂度从软件挪到结构里。缓存容量为 1,物理上就不可能出现排队错序,也不需要约定队列深度和溢出策略。很多现场问题之所以难查,恰恰是因为有人试图用软件在这套协议上叠出它本来没有的能力,比如用延时器伪造“缓存有空位”,结果时序一乱,整线就开始出现难以复现的停线。
验证一套对接是否真的跑通,我一般不看面板灯,而是做三件事:用废板手动推过对接缝,感受机械顺滑度;用万用表量 Pin1、Pin2 在空闲、传输、缓存占用三种状态下的电平;用逻辑分析仪抓一段连续跑板时的波形,看有没有窄脉冲和超时。三件事做完,剩下的问题基本都能定位到具体环节。
从那以后我每次接新设备,都强制先做一遍“断电量线、手动推板、空跑抓波形”,不管对方说自己的设备多标准。希望帮到你。
本文还有配套的精品资源,点击获取