PLC 基础课 第17讲 联锁逻辑专题:电机互锁、阀门互锁、前后动作联锁怎么写

浏览量:1 次 发布时间:2026-05-08 13:25 作者:明扬工控商城 下载docx

最近更新:PLC 基础课 第19讲 报警分级与停机策略:提示、预警、联锁停机,到底该怎么分



前面第16讲,我们把程序分段与结构化讲透了。
那一讲解决的是一个“程序怎么组织,后面才不容易乱”的问题:

主程序做什么
子程序做什么
功能块做什么
为什么程序不只是能跑,还要好找、好改、好维护

但 PLC 真正到了现场,很多设备出问题,并不是因为“不会写启动停止”,也不是因为“不会写定时器”,而是因为另一个特别常见、特别关键、也特别像工程师功底的东西没写好:

联锁逻辑。

你会发现,很多现场故障、误动作、设备打架、动作冲突、机构卡死、流程错乱,背后其实都不是单个输出错了,而是:

本来不该同时动作的东西,同时动作了
本来前一个条件没满足,后一个动作却先跑了
本来这个机构没回原位,另一个机构却抢着启动了
本来阀门没关到位,电机却已经起动了
本来 A 动作时 B 应该禁止,结果 B 还能被触发
本来故障状态下应该禁止动作,结果局部命令还偷偷成立

这些问题放到程序里,最终都落到两个字上:

联锁。

所以这一讲,我们就把 PLC 里特别实用、特别贴近现场的联锁逻辑真正讲透。

如果说前面几讲更多是在讲:

按钮怎么触发
状态怎么保持
模式怎么切换
程序怎么分段

那么这一讲要讲的,就是:

多个动作、多个机构、多个条件之间,怎么建立“不能乱来”的规则。

这一步非常关键。
因为 PLC 不只是让设备“会动”,
更重要的是让设备“按规矩动”。
而“规矩”里最核心的一部分,就是联锁。

一 先把最根上的问题讲清楚:什么叫联锁

很多人第一次接触“联锁”这个词,会觉得好像很高级。
其实它一点都不玄。

所谓联锁,简单说就是:

当某个条件不满足,或者某个相关动作已经成立时,禁止另一个动作发生。

也可以再通俗一点说:

为了防止冲突、误动作、危险动作、顺序错误,给动作之间加上限制关系。

比如:

正转和反转不能同时接通
气缸没缩回到位,不允许下一个气缸伸出
阀门 A 开着时,阀门 B 不允许开
安全门没关好,自动运行不允许启动
润滑没到位,主轴不允许启动
某机构没回原点,自动流程不允许继续
手动模式下,自动动作逻辑不允许输出
急停未释放时,所有运行命令都不允许成立

这些都属于联锁。

所以你可以先建立一个特别重要的理解:

联锁不是一个单独的指令,
它是一种程序设计思想。

它关心的不是“怎么让动作成立”,
而是“在什么情况下,必须不让它成立”。

这就是联锁最核心的味道。

二 为什么联锁比“动作本身”更能体现工程味

很多初学者写程序时,最先会写的是动作成立条件。
例如:

按启动按钮,电机运行
到位信号来了,气缸伸出
压力低了,水泵启动

这些当然没错。
但真正让设备稳定的,往往不是“怎么让它动”,而是“怎么让它别乱动”。

也就是说,一个成熟程序通常不只是写:

这个动作什么时候该成立

还要同时写:

这个动作在什么情况下绝对不能成立
它和哪些动作不能同时存在
它之前必须先满足什么前提
它之后必须等待什么反馈
它一旦动作,哪些其他动作要被禁止

这些东西,才是真正把“单个动作”变成“设备规则”的关键。

所以很多程序初看能跑,但一到现场就问题不断,
核心原因往往不是功能没写,而是联锁没补够。

三 联锁到底在防什么,先把对象想清楚

联锁不是为了形式上复杂,
它本质上是在防几类问题。

第一类 防止同时冲突

比如:

电机正反转同时成立
伸出和缩回同时成立
开阀和关阀命令同时成立
两个互斥机构同时动作
两台互斥设备同时启用

这类最直观,也最常见。

第二类 防止顺序错误

比如:

前一步没完成,后一步先来了
夹具没夹紧,设备就开始加工
气缸没退回,输送就启动
门没关,自动流程就继续
压力没建立,主机就运行

这类属于“前提联锁”或者“先后联锁”。

第三类 防止异常状态下误动作

比如:

急停中不允许动作
报警未清不允许启动
安全门打开不允许自动
伺服未使能不允许运动
热继故障中不允许电机启动

这类是“安全联锁”“故障联锁”。

第四类 防止模式冲突

比如:

自动时禁止手动单动输出
手动时禁止自动步骤偷偷推进
调试模式下某些正式动作不允许
维修模式下不允许自动运行

这类是“模式联锁”。

第五类 防止资源或工位冲突

比如:

共享一条输送线的两个工位不能同时放料
同一夹具位置只能服务一个动作
某机械手占用工位时,其他机构不能进入
同一真空源不能被两个关键动作同时抢占

这类在复杂设备里特别常见。

所以你以后写联锁时,不要只盯着“正反转互锁”这一个入门例子。
联锁本质上是在处理:

动作之间、条件之间、模式之间、资源之间的禁止关系。

四 联锁和允许,其实是同一件事的两种写法

这个理解特别重要。

很多人写程序时,脑子里只分“联锁”和“动作”。
其实工程上更常见的一种思维是:

先整理“允许条件”,
不允许的部分其实就是联锁条件。

例如,一个电机启动条件可以写成:

启动按钮
并且
没有故障
并且
急停正常
并且
反转未动作
并且
相关阀门已到位
并且
自动模式允许

你看,这一串里面,
“没有故障”“反转未动作”“阀门已到位”这些,
其实本质上就是联锁。

所以联锁不一定非要单独长成一句:

如果某某成立,就禁止某某

它也可以表现为:

把所有必须满足的前提整理成一个“允许动作链”

这两种写法本质上是相通的。

也就是说:

联锁 = 不允许的规则
允许链 = 满足联锁后的可行动作资格

这个思路特别有利于把程序写清楚。

五 最经典的联锁一:电机正反转互锁

这个几乎是 PLC 联锁入门第一例,但它确实很经典。

为什么必须互锁

如果正转接触器和反转接触器同时吸合,
对很多电机回路来说是非常危险的。
轻则跳闸,重则短路、损坏、打火。

所以正反转逻辑里,最基本的联锁就是:

正转成立时,反转不允许成立
反转成立时,正转不允许成立

程序里的核心思路

不是只写“按正转按钮就正转,按反转按钮就反转”,
而是必须同时考虑:

正转命令成立前,反转状态必须没有成立
反转命令成立前,正转状态必须没有成立

如果是内部命令位,
那通常会做成:

正转命令必须受“反转命令未成立”限制
反转命令必须受“正转命令未成立”限制

再进一步

工程上真正稳的做法,通常不仅有软件互锁,
还会配合电气硬件互锁。
也就是说:

程序里禁止同时成立
接触器硬件回路里也互相断开

这叫双保险。

所以从这个例子你就能看出来,
联锁不是“程序可有可无的小修饰”,
它很多时候直接关系到设备安全和硬件寿命。

六 电机联锁不只是正反转,还包括哪些常见场景

初学者很容易把电机联锁只理解成正反转互锁,
其实工程上远不止这些。

1 主机和辅机联锁

比如主风机没运行,不允许主加热启动。
或者润滑泵没开启,主轴不允许转。

2 先导电机和后续电机联锁

例如输送线前段没运行,后段不能单独启动。
或者排风没建立,主设备不能运行。

3 备用机互锁

两台泵一用一备,
有些场景下不允许两台同时启。
那就是典型互锁。

4 工艺条件联锁

比如液位太低,电机禁止启动;
阀门没开到位,搅拌电机禁止启动;
制动未释放,驱动电机禁止启动。

你会发现,电机控制一旦进入现场,
联锁马上就不再只是“电机按钮”本身,
而是和整套工艺条件连起来了。

七 最经典的联锁二:气缸和阀门的前后动作联锁

这一类在自动化设备里特别常见。

比如一个气缸有两个方向:

伸出
缩回

程序里最基础的联锁通常就是:

伸出命令成立时,缩回命令不允许同时成立
缩回命令成立时,伸出命令不允许同时成立

这个和电机正反转类似,属于互斥联锁。

但自动化里更关键的,往往还不是这一层,
而是“前后动作联锁”。

例如

气缸 A 没有缩回到位,不允许气缸 B 伸出
夹紧气缸没到位,不允许加工动作开始
推料气缸没退回,不允许输送启动
挡停气缸没放下,不允许来料进入

你会发现,这类逻辑背后的核心是:

后一个动作,不只是看自己的按钮或步骤,
还必须看前一个机构是否已经处于允许状态。

这就是前后动作联锁。

八 为什么“到位信号”在联锁里特别重要

联锁逻辑很多时候,不是看“我有没有发出命令”,
而是看“现场到底有没有真的到位”。

这点特别重要。

比如你发了一个气缸伸出命令,
并不等于气缸真的伸到了。
如果程序只看命令,不看到位,
后面的动作就可能在机构还没准备好时抢跑。

所以成熟的顺序联锁里,常见的思路都是:

前一个动作命令发出
还不够
必须等前一个动作反馈到位
后一个动作才允许

例如:

夹紧命令发出
并且
夹紧到位反馈成立
才允许进入加工步骤

这就说明:

命令不是联锁的终点,反馈才是更可靠的联锁依据。

这也是为什么现场里总说:

不要只信命令,要信反馈。

九 一个特别实用的判断:联锁要锁“命令”还是锁“输出”还是锁“步骤”

这一点如果想清楚,程序会清爽很多。

联锁不是一定只加在一个地方。
它可以加在不同层面。

第一种 锁命令层

比如:

反转命令存在时,不允许建立正转命令
急停存在时,不允许建立运行命令
门没关时,不允许建立自动运行命令

这种写法的好处是:
根子上不让命令成立。

第二种 锁输出层

比如:

即使命令存在,只要安全门开了,最终输出也不能送出去

这种写法更偏执行层保险。

第三种 锁步骤层

比如:

夹紧未到位,步骤号不允许进入下一步
回原点未完成,自动流程不允许启动
某工位占用时,另一工位不允许推进

这种是流程级联锁。

哪种更好

很多成熟程序其实是分层一起用。

命令层先限制
输出层再保险
步骤层再保证顺序

也就是说,不一定是三选一,
而是看这个联锁的性质在哪一层最合理。

十 为什么很多联锁写不好,是因为没先分清“硬联锁”和“软联锁”

这点很工程。

硬联锁

通常指电气硬件层面的互锁或安全链。
比如接触器互锁、急停安全回路、门开安全继电器等。

软联锁

通常指 PLC 程序里的逻辑限制。
比如程序里禁止正反转同时输出、未到位不许下一步、故障时禁止启动等。

这两者不是互相替代关系,
而是很多时候应该配合。

例如电机正反转,
程序里可以做软互锁,
接触器回路里最好也有硬互锁。

又比如安全门,
程序里可以禁止自动启动,
但涉及真正危险动作时,很多时候还需要安全回路层面直接切断使能。

所以你以后写联锁时要有一个意识:

程序联锁很重要,但不能拿程序去代替所有本该由硬件承担的安全职责。

这个边界一定要清楚。

十一 一个很关键的误区:联锁不是越多越好,而是要清楚、必要、可追踪

有些人学了联锁以后,容易走向另一个极端:

这里也锁一下
那里也锁一下
加十几个条件总没错吧

结果程序会出现什么现象?

设备动不起来
谁都说不清到底卡在哪个条件
联锁条件东一块西一块
后面改一个条件,别的地方又起不来

所以联锁不是“越多越安全”,
而是:

该有的必须有
不该重复堆的别乱堆
每一条联锁最好说得清它在防什么

这点特别重要。

一个好的联锁,应该至少满足这三件事:

它有明确目的
它的条件来源清楚
它的解除条件也清楚

否则程序只会越来越“硬”,但不一定越来越稳。

十二 一个成熟程序里,联锁最好怎么整理

这段特别实用。

很多人写联锁时喜欢想到哪儿写到哪儿,
结果就是联锁散得到处都是。

更好的做法通常是:

先整理全局联锁

例如:

急停
总故障
安全门
气压正常
系统待复位
模式允许

这些是很多动作都会共用的全局条件。

再整理单元联锁

例如:

上料单元是否允许
输送单元是否允许
夹紧单元是否允许
加工单元是否允许

再整理对象联锁

例如:

这台电机自己的热继、反馈、互锁
这个气缸自己的伸缩互锁、前提条件、到位条件

最后再落实到动作

这样层次会非常清楚。
否则你每个动作都各自拼一串条件,
程序很容易重复、漏项、难维护。

十三 电机互锁怎么写得更像工程程序,而不是一段孤立按钮逻辑

咱们把“电机互锁”这件事往工程里再拉近一点。

假设有一台输送电机,需要满足:

手动可点动
自动可运行
热继故障时禁止启动
急停时禁止动作
反转不允许和正转同时成立
上游设备未允许运行时,本机不允许启动

那这个电机控制就不应该只写成:

按钮按下输出 Y0

更像工程程序的写法,通常会分成几层。

第一层 电机允许条件

无急停
无热继故障
模式允许
上游允许
互锁条件满足

第二层 电机命令来源

手动命令
自动命令

第三层 最终输出决定

只有在允许条件成立,并且命令来源成立时,最终输出才动作

你会发现,这种写法的重点已经不是“写一个按钮启动”,
而是把联锁变成了“允许链”的一部分。

这就更像现场程序。

十四 阀门联锁和电机联锁有什么不一样

阀门表面上也是开和关,
但它常常涉及工艺方向和流程状态,
所以联锁的味道会有些不同。

常见阀门联锁场景

开阀和关阀命令互斥
进料阀打开时,排料阀不允许同时打开
蒸汽阀未关闭,不允许维护门打开
冷却阀没打开,不允许加热动作开始
某路阀未到位,不允许切换另一工艺段

你会发现,阀门联锁除了互斥外,
还很常和工艺前提绑定。

也就是说,阀门联锁往往比电机联锁更容易牵涉“工艺状态”。

比如:

先开循环阀
确认循环建立
再允许加热

这里如果没有联锁,工艺就可能乱。

十五 一个特别重要的点:顺序联锁里,“未完成”比“已命令”更关键

很多初学者写顺序时,容易用“我已经发过命令了”来当作后续联锁前提。
这很危险。

例如:

我已经发过夹紧命令了,所以加工可以开始

这句话在工程上通常不够安全。
因为“发过命令”不等于“已经夹紧成功”。

更好的联锁依据通常是:

夹紧到位反馈已成立,所以加工才可以开始

所以你以后写顺序联锁时,要特别注意区分:

命令已发出
动作已完成

这两个不是一回事。
真正可靠的顺序联锁,很多时候更依赖“完成反馈”,而不是“命令存在”。

十六 前后动作联锁,为什么常常还要加超时判断

这是非常实战的一点。

比如你写了:

气缸 A 缩回到位后,才允许气缸 B 伸出

这当然对。
但如果气缸 A 因为故障、卡住、没气压、磁感应坏了,一直不到位怎么办?

如果你只写联锁,不写超时,
程序就会一直卡住。
而且现场操作员只能看到“后面不动了”,不一定知道前面哪里出问题。

所以成熟一点的写法通常会是:

A 动作命令发出后,开始计时
在规定时间内,必须等到 A 到位
如果超时还不到位,则报警,并禁止后续动作继续

这样联锁就不只是“拦住后面”,
还把问题暴露出来了。

所以你可以把这个思路记住:

联锁负责防错序
超时负责暴露问题

这两个经常是一对搭档。

十七 模式联锁为什么经常被低估,但其实特别关键

很多现场“逻辑打架”的问题,其实不是动作联锁没写,而是模式联锁没处理好。

例如:

自动模式下,手动按钮禁止直接干预动作
手动模式下,自动步骤禁止推进
急停状态下,手动和自动都不允许建立动作命令
待复位状态下,自动运行不允许建立
维修模式下,正式自动流程不允许启动

这些都属于模式联锁。

你会发现,它不是在管某一个电机或某一个气缸,
它是在管“谁有资格发命令”。

所以模式联锁其实是上层联锁。
一旦这一层清楚了,下面很多局部动作逻辑都会简单很多。

十八 一个完整小案例:双泵系统联锁应该怎么想

咱们用一个很典型的双泵案例来串起来。

场景要求

两台水泵,一用一备。
正常情况下只允许一台运行。
低压时允许启动主泵。
主泵故障时,切换备用泵。
两台泵不能同时启动。
泵故障时要报警。
泵未就绪时不允许建立启动命令。
自动和手动都要受故障和急停限制。

联锁梳理
第一层 全局联锁

急停正常
系统无总故障
自动模式或手动模式明确

第二层 单泵自身联锁

泵 1 无故障
泵 1 热继正常
泵 1 反馈允许
泵 2 同理

第三层 互斥联锁

泵 1 运行时,泵 2 启动命令禁止
泵 2 运行时,泵 1 启动命令禁止

第四层 切换联锁

主泵故障时,才允许备用泵接管
但前提是备用泵本身无故障

第五层 模式联锁

手动模式下,人工点哪台,仍必须满足“另一台未运行、自己无故障”
自动模式下,程序根据压力和故障情况决定哪台运行

你看,这里面其实已经有:

全局联锁
对象自身联锁
互斥联锁
切换联锁
模式联锁

这就是一个很像现场的联锁体系。

十九 一个完整小案例:两个气缸前后动作联锁怎么写得更稳

再举一个贴近自动化设备的例子。

场景要求

气缸 A 负责推料
气缸 B 负责夹紧

逻辑要求:

A 推到位后,B 才能夹紧
B 没松开前,A 不允许退回
A 没退回原位,不允许下一次来料
任何一个动作超时都要报警
手动模式下,两个气缸也不能违背关键互锁

联锁分析
A 推出到位,是 B 夹紧的前提

也就是说,B 的允许条件里必须有:A 推出到位

B 未松开,A 不允许退回

这就是一个状态联锁:B 夹紧状态存在时,A 退回禁止

A 未原位,不允许下一次来料

这是一个流程联锁:来料许可依赖 A 原位反馈

手动模式也不能放开关键互锁

比如即使手动点 B,也至少要满足 A 已到位,不能无条件乱夹

动作超时要报警

A 或 B 动作命令发出后,一定时间不到位则报警,并阻止后续步骤继续

你会发现,一个看似简单的双气缸动作,
其实里面已经包含了很多联锁思想。
这也是为什么自动化设备逻辑看起来不复杂,写起来却很讲究。

二十 联锁到底应该写成“禁止条件”还是“允许条件”,哪种更好

这个问题很常见。

比如你可以写成:

如果反转成立,则禁止正转

也可以写成:

正转允许条件之一,是反转未成立

本质上这两种都行。
但从程序可读性来看,很多工程里更喜欢把动作整理成“允许链”。

比如:

正转允许 = 无故障 且 急停正常 且 反转未成立 且 模式允许

这样好处是:

一眼能看到这个动作到底要满足哪些资格
后面排查时也容易一点点看哪条没满足

而“禁止条件”写法更适合在局部补充逻辑时使用。
比如已经有一个允许链了,再额外加一个特殊禁止条件。

所以不是绝对哪种更对,
但如果你想把程序写得更整齐,
很多时候“整理允许条件”会更清楚。

二十一 为什么联锁状态最好也有显示或中间位,不要全藏在一长串条件里

这点特别利于调试。

有些程序把一个动作的条件写成一长串:

模式对
无故障
急停正常
上游到位
下游空位
某缸原位
某阀开到位
某步成立
某计时完成

逻辑上没错,
但现场一旦不动作,你就得一项项顺着找。

更好的做法通常是:

把关键联锁整理成中间位或状态位。
例如:

M100 自动允许
M101 输送允许
M102 夹紧允许
M103 加工允许

这样一看中间位亮没亮,就知道卡在哪一级。
这会大大提高调试效率。

所以联锁不只是“写进条件里”,
也要考虑“能不能被人看懂、查到”。

二十二 初学者最容易踩的几个坑

这一段你后面做现场时会特别有感觉。

1 只写动作成立,不写动作禁止

程序能动,但一到复杂场景就容易冲突。

2 用命令代替反馈做联锁

以为发了命令就等于完成了动作,这很危险。

3 联锁条件到处散

今天加一条,明天补一条,最后没人知道完整规则是什么。

4 手动模式下把所有联锁都放掉

以为手动就随便动,结果容易出问题。

5 联锁只挡后续,不报超时

程序卡住了,但不知道前一步哪里出事。

6 只做软件互锁,不考虑必要的硬件互锁

特别是正反转、安全相关场景,会留下风险。

7 联锁写得太重、太乱,自己都解释不清在防什么

最后设备起不来,排查也困难。

8 模式联锁没处理

导致自动和手动逻辑互相抢。

9 最终输出来源不集中

联锁条件虽然加了,但输出在别的地方又被偷偷置位。

10 没有中间联锁位和显示

程序里全是一长串条件,调试很费劲。

二十三 给你一个特别实用的联锁设计顺序

以后你遇到一个动作,不知道联锁怎么想,可以按这个顺序问自己。

第一步

这个动作最怕和谁同时发生?

先找互斥对象。

第二步

这个动作开始前,必须先满足什么前提?

先找前提联锁。

第三步

这个动作完成后,谁才能继续?

再找后续联锁。

第四步

哪些故障、安全、模式条件下,它必须被禁止?

补全局联锁。

第五步

我依赖的是命令还是反馈?有没有超时报警?

补可靠性。

你按这个顺序想,联锁就不会只停留在“加个条件”那么浅。

二十四 本课小结

这一课你最少要真正吃透下面这些点。

第一,联锁的本质是为了防止冲突、误动作、顺序错误和危险状态下的动作,不是一个单独指令,而是一种程序设计思想。

第二,联锁常见要防的有五类问题:同时冲突、顺序错误、异常状态误动作、模式冲突、资源或工位冲突。

第三,联锁既可以写成禁止条件,也可以整理成允许条件链,很多工程里后者更清楚。

第四,电机正反转互锁、气缸伸缩互斥、前后动作顺序联锁,是最典型也最常见的现场联锁场景。

第五,成熟的顺序联锁更应该依赖“到位反馈”而不是只依赖“命令发出”。

第六,联锁常常需要和超时报警配合,联锁负责防错序,超时负责暴露问题。

第七,模式联锁同样非常重要,手动、自动、急停、待复位这些状态都会影响动作资格。

第八,联锁不是越多越好,而是要清楚、必要、可追踪,最好能说得清每条联锁在防什么。

第九,关键联锁最好整理成中间允许位或联锁位,方便调试和排查,而不是全藏在超长条件串里。

二十五 学完这一课后,你应该能做到什么

学完这一课,你至少应该能做到这些事情:

知道联锁到底在防什么,而不只是会背“正反转互锁”
知道一个动作的联锁不只是看按钮,还要看模式、故障、前提、反馈、顺序
知道为什么很多后续动作必须等前一步“到位”而不是“命令发出”
知道联锁和超时报警为什么经常一起出现
知道模式联锁为什么会直接影响动作逻辑
知道怎样把一个动作的允许条件整理出来
知道以后再写 PLC 程序时,不能只问“它怎么动”,还要同时问“它什么时候绝对不能动”

到这里,PLC 基础课已经越来越接近真正的现场工程思维了。

二十六 下节预告

下一课如果继续往下接,我建议可以顺着联锁再走一步,讲:

PLC 基础课 第18讲
防抖、滤波、延时确认:现场信号不稳时,PLC 程序怎么处理

因为很多联锁、报警、启动条件,到了现场并不是逻辑错,而是信号抖、量跳、开关晃,导致程序“看起来像错了”。
这一讲接在联锁后面,会特别顺,也特别实用。

亲,咱们下一讲继续往下写,就会更贴近现场了。


明扬工控商城

推荐阅读:

PLC 基础课 第24讲 模拟量闭环控制入门:恒压供水、恒温控制里 PID 到底在干什么

PLC 基础课 第23讲 Modbus RTU 实战:PLC 读变频器、读仪表、读温控器到底怎么看地址

PLC 基础课 第22讲 串口通讯入门:RS-232、RS-485、波特率、校验位、站号一次搞懂

PLC 基础课 第17讲 联锁逻辑专题:电机互锁、阀门互锁、前后动作联锁怎么写

PLC 基础课 第18讲 防抖、滤波、延时确认:现场信号不稳时,PLC 程序怎么处理

PLC 基础课 第19讲 报警分级与停机策略:提示、预警、联锁停机,到底该怎么分

热门标签:
PLC 基础课 第17讲 联锁逻辑专题:电机互锁、阀门互锁、前后动作联....docx

将本文的Word文档下载到电脑

推荐度:

下载

全部评论

请登录
产业新闻-明扬资讯网
科技资讯-明扬资讯网

大家都在看