【PLC编程】亿图系统实战编程案例

本文介绍了PLC编程中M码的背景知识,包括M码的功能、系统变数和自定义跳转。通过具体案例展示了如何使用PLC响应M码,实现M50和M49的控制功能,如延时和气缸控制。同时,讨论了如何通过封装函数块来简化模块设计,提高代码复用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

M码判断应用案例

1. 背景知识

关于M码

MTS表示控制器中的三种指令,和G代码一样,使用方式是字母+数字,如:M01,M30。
M码的功能可以通过自定义跳转或者PLC自行实现,其中,系统内置的M码有
在这里插入图片描述
一般来讲,M码用于程序控制,T码用于换刀,S码用于主轴转速。T码和S码的功能需要用户使用自定义跳转自己实现。

关于系统变数

变数 功能
SYS10123 开启自定义跳转
SYS10250 M码指令值, 如:执行M30则显示30
SYS10251 T码指令值, 如:执行T1则显示1
SYS10252 S码指令值, 如:执行S1000则显示100030
SYS10253 G码指令值, 如:执行G01则显示1
SYS16032 字母M的值,和自定义跳转相关

SYS16020 ~ SYS16045 分别代表 字母A ~Z的值,其中, SYS160232表示字母M,这一组字母用于

<think>我们面对的问题:在PLC中实现实体按钮和触摸屏按钮双控启动功能。 根据用户需求,我们需要同时通过实体按钮(硬件输入)和触摸屏按钮(HMI输入)来控制同一个启动功能。 思路:将实体按钮和触摸屏按钮并联,两者中任意一个按下都可以启动设备。但要注意,通常硬件输入是物理信号,而触摸屏按钮是通过通讯写入PLC的一个位(比如M点或Q点)。 具体步骤: 1. 硬件接线:实体按钮(如启动按钮)接入PLC的输入点(例如I0.0)。 2. 触摸屏配置:在触摸屏上设置一个按钮,该按钮按下时向PLC的某个中间位(如M0.0)写入1,松开时写入0(或使用置位复位功能)。 3. PLC程序编写:将硬件输入点(I0.0)和触摸屏控制的中间位(M0.0)并联,然后控制输出(如Q0.0)。同时,为了保持启动状态,还需要加入自锁逻辑(除非有停止信号)。 注意:停止功能同样可以由实体按钮和触摸屏按钮共同控制,方法类似,但停止信号是串联的(常闭点或常开点取反后串联)。 程序示例(以S7-200 SMART为例): 网络1:启动控制 I0.0 M0.0 Q0.0 T1 ----||------||------+----( ) (自锁) | | | | | | | | | Q0.0 | | +---------||-------+ | | | | I0.1 | (停止信号,这里I0.1为实体停止按钮,常闭点) +----------||----------+ | | | | M0.1 | (触摸屏停止按钮控制的位,常闭点) +----------||----------+ 说明: - I0.0:实体启动按钮(常开点) - M0.0:触摸屏启动按钮控制的位(当触摸屏启动按钮按下时,M0.0为1) - I0.1:实体停止按钮(这里使用常闭点,表示正常情况下停止回路是导通的,按下停止按钮则断开) - M0.1:触摸屏停止按钮控制的位(通常触摸屏上停止按钮按下时,我们希望它断开,所以这里使用常闭点。注意:触摸屏上配置停止按钮时,按下时写入1,那么在程序中我们取它的常闭点,即M0.1的常闭点,因为当触摸屏停止按钮按下时M0.1为1,其常闭点断开) - Q0.0:控制电机或设备的输出 但是,上述停止回路中,我们使用了两个停止信号(I0.1和M0.1)的常闭点串联。这样,任何一个停止信号动作(变为0)都会导致Q0.0断电。 另一种常见的做法是将停止信号做成常开点,然后在程序中使用并联(即任意一个停止信号动作就停止): 网络1: I0.0 M0.0 I0.1 M0.1 Q0.0 ----||----+-----||----+-----/ -------/ -----+----( )---- | | | | | | | Q0.0 | +-----------||-------------------+ 这里,I0.1和M0.1是停止信号,当它们为1时,常闭点断开,所以停止。但这样写,停止信号是串联的,必须两个停止信号都没有动作(即I0.1和M0.1都为0)才能保持回路。这不符合任意一个停止都能停止的要求。 因此,正确的停止逻辑应该是将停止信号并联(任意一个停止信号有效就断开): 网络1: I0.0 M0.0 (I0.1 OR M0.1)的常闭点 Q0.0 ----||----+-----||----+------------/------------------+----( )---- | | | | | | | Q0.0 | +-----------||-----------------------------+ 但是,在梯形图中,我们通常用停止信号的常闭点串联,或者用停止信号的常开点并联后取反。实际上,我们通常这样处理: - 将所有的停止信号(包括实体停止按钮和触摸屏停止按钮)都做成常闭点(即正常时导通,停止时断开)串联在回路中。 然而,触摸屏上的停止按钮按下时,我们希望它产生一个停止信号(即一个上升沿或一个脉冲信号),然后通过程序将这个信号转化为一个断开的条件。但更常见的做法是: 方法1:使用置位复位指令 启动条件:I0.0上升沿或M0.0上升沿,则置位Q0.0; 停止条件:I0.1上升沿或M0.1上升沿,则复位Q0.0。 方法2:使用自锁电路,将启动信号并联,停止信号串联(用常闭点): 网络1: I0.0 M0.0 I0.1 M0.1 Q0.0 ----||----+-----||----+-----/ ----------/ -----+----( )---- | | | | | | | Q0.0 | +-----------||-----------------------+ 这里,I0.1和M0.1是停止信号,在触摸屏上配置停止按钮时,按下时我们让M0.1为1,那么它的常闭点断开。同样,实体停止按钮I0.1我们接的是常闭点(即正常时I0.1为1,按下时I0.1为0),所以程序中我们使用I0.1的常闭点(即当I0.1为0时,常闭点断开)。但是这样写,停止信号是串联的,要求两个停止信号都处于正常状态(不动作)才能导通。如果有一个停止按钮动作,就会断开。所以任意一个停止按钮都可以停止。 但是,注意:实体停止按钮我们通常接常闭点(安全考虑,断线时自动停止),所以PLC输入点上,正常时是通电的(即I0.1为1),按下按钮后断电(I0.1为0)。在程序中,我们使用I0.1的常开点来表示停止信号(即I0.1为0时,常开点断开,但这样不方便,所以我们通常用常闭点来代表正常状态)。因此,在程序中,我们使用I0.1的常闭点(即I0.1为1时导通,为0时断开)来表示停止信号。同样,对于触摸屏停止按钮,我们配置为:按下时M0.1为1,那么程序中用M0.1的常闭点(即M0.1为0时导通,为1时断开)。这样,两个停止信号串联,当任何一个停止条件满足(实体停止按钮按下:I0.1变为0,其常闭点断开;或者触摸屏停止按钮按下:M0.1变为1,其常闭点断开),都会导致Q0.0断电。 然而,这样写程序,停止信号是串联的,必须两个停止信号都不动作(即I0.1为1且M0.1为0)才能导通停止回路。所以,当触摸屏停止按钮没有按下(M0.1=0)且实体停止按钮正常(I0.1=1)时,停止回路是导通的。 启动信号:当I0.0按下(I0.0=1)或M0.0=1(触摸屏启动按钮按下)时,启动信号接通,Q0.0得电并自锁。 因此,我们采用以下程序: 网络1: I0.0 M0.0 I0.1 M0.1 Q0.0 --||--+----||---+----/ -------/ ------+----( )-- | | | | | | | Q0.0 | +--------||--------------------+ 注意:这里I0.1是实体停止按钮(硬件接常闭点),所以正常时I0.1=1,程序中用常闭点(即I0.1=1时导通,0时断开);M0.1是触摸屏停止按钮,当按下时,触摸屏将M0.1置1,所以程序中用M0.1的常闭点(即M0.1=0时导通,1时断开)。这样,停止回路正常时是导通的(I0.1的常闭点导通,M0.1的常闭点导通),当按下实体停止按钮(I0.1变为0)或按下触摸屏停止按钮(M0.1变为1)时,停止回路断开。 但是,这样写有一个问题:当触摸屏停止按钮按下后,M0.1变为1,其常闭点断开,停止回路断开,Q0.0断电。但是当松开触摸屏停止按钮后,M0.1又变为0,其常闭点又闭合,停止回路又导通。这时,如果启动回路没有断开(比如之前启动按钮按过,Q0.0已经自锁,但启动按钮已经松开),那么停止回路导通后,Q0.0又会重新得电。这显然不是我们想要的。 所以,我们需要将停止信号做成脉冲信号(即按下停止按钮后,即使松开,停止状态也要保持),因此我们通常使用自锁电路或者置位复位指令。 因此,更可靠的方法是使用置位复位指令: 网络1:启动条件 I0.0 M0.0 --||----+---||----( SET ) // 置位Q0.0 | | Q0.0 | | +--------+ 网络2:停止条件 I0.1 M0.1 --||----+---||----( RST ) // 复位Q0.0 | | Q0.0 | | +--------+ 但是,这样写,启动和停止都是脉冲信号。注意:I0.0和M0.0都是按钮,按下时产生一个脉冲(上升沿),然后我们置位Q0.0;同样,I0.1和M0.1也是停止按钮,按下时产生一个脉冲(上升沿),复位Q0.0。 但是,这里有一个问题:如果停止按钮是常闭点(如I0.1),那么它一直处于闭合状态,就会一直复位Q0.0。所以,我们需要将停止按钮也做成脉冲信号(即上升沿复位)。因此,我们需要对停止信号做上升沿检测。 修改: 网络1:启动条件(脉冲) I0.0 M0.0 ----|P|---+--------|P|------( SET ) // 置位Q0.0 | Q0.0 | 网络2:停止条件(脉冲) I0.1 M0.1 ----|P|---+--------|P|------( RST ) // 复位Q0.0 | Q0.0 | 这样,当实体启动按钮I0.0按下(上升沿)或者触摸屏启动按钮按下(M0.0上升沿)时,置位Q0.0; 当实体停止按钮I0.1按下(上升沿)或者触摸屏停止按钮按下(M0.1上升沿)时,复位Q0.0。 注意:实体停止按钮在硬件上我们通常接常闭点,但是这样在PLC上电时,I0.1就是1,按下时断开(I0.1变为0),然后松开又变为1。所以,如果我们想要在按下停止按钮时产生一个上升沿,那么我们需要在停止按钮按下再松开时(从0变1)才产生上升沿。这不符合操作习惯(我们希望按下停止按钮就停止,而不是松开才停止)。因此,我们通常将实体停止按钮接成常开点(按下时闭合,产生一个高电平),这样按下时I0.1为1,我们检测上升沿(按下时立即停止)。或者,如果我们接的是常闭点,那么按下时I0.1从1变0,我们可以检测下降沿,然后复位Q0.0。 所以,根据硬件接线不同,程序也不同: 情况1:实体停止按钮接常开点(按下时闭合): 按下时,I0.1从0变1,上升沿触发复位。 情况2:实体停止按钮接常闭点(正常时闭合,按下时断开): 按下时,I0.1从1变0,下降沿触发复位。 因此,我们需要根据实际接线来编写程序。这里假设实体停止按钮接常开点(推荐),这样按下时产生一个高电平,松开后恢复。那么程序用上升沿即可。 但是,触摸屏停止按钮按下时,我们让M0.1为1(按下时一直为1,松开后为0),这样我们只需要在按下时检测上升沿即可。 因此,程序可以这样写(假设停止按钮接常开点): 网络1:启动(上升沿) I0.0 M0.0 ----|P|---+--------|P|------( SET ) // 置位Q0.0 | Q0.0 | 网络2:停止(上升沿) I0.1 M0.1 ----|P|---+--------|P|------( RST ) // 复位Q0.0 | Q0.0 | 这样,无论是实体按钮还是触摸屏按钮,都是按下时产生一个脉冲(上升沿)来触发启动或停止。 总结: - 实体启动按钮(常开点)接I0.0,按下时I0.0为1,上升沿触发启动。 - 触摸屏启动按钮:按下时,触摸屏向M0.0写入1(我们只需要一个脉冲,所以触摸屏上可以配置为“点动”模式,按下时写入1,松开时写入0,这样在PLC中检测上升沿)。 - 实体停止按钮(常开点)接I0.1,按下时I0.1为1,上升沿触发停止。 - 触摸屏停止按钮:按下时,触摸屏向M0.1写入1(同样使用点动模式),PLC检测M0.1的上升沿触发停止。 注意:如果触摸屏按钮只能保持(比如按下后一直为1,再按一次才为0),那么我们需要在触摸屏上做点动按钮(按下置1,松开置0),或者如果触摸屏不支持点动,那么我们可以用这个按钮的上升沿来触发一个脉冲(在PLC中用一个扫描周期)。 另外,如果用户希望停止按钮是常闭点(安全考虑),那么对于实体停止按钮,我们接常闭点,那么按下时I0.1从1变0,我们需要检测下降沿: 网络2:停止(下降沿) I0.1 M0.1 ----|N|---+--------|P|------( RST ) // 复位Q0.0 | Q0.0 | 这里,I0.1下降沿(按下时产生)或M0.1上升沿(按下时产生)都会复位Q0.0。 综上所述,具体实现需要根据硬件接线和触摸屏配置来调整。 因此,我们给出两种方案: 方案一:启动/停止按钮都使用常开点(硬件和触摸屏),程序中使用上升沿触发置位和复位。 方案二:启动按钮使用常开点(上升沿触发),停止按钮硬件使用常闭点(下降沿触发),触摸屏停止按钮使用上升沿触发。 根据用户需求,这里我们选择方案一(因为接线简单,且符合常规操作)。 步骤: 1. 硬件接线:启动按钮(常开)接I0.0,停止按钮(常开)接I0.1。 2. 触摸屏配置:启动按钮配置为点动(按下时置位M0.0为1,松开时置位M0.0为0);停止按钮配置为点动(按下时置位M0.1为1,松开时置位M0.1为0)。 3. PLC程序: 网络1:启动 LD I0.0 EU O M0.0 EU S Q0.0, 1 网络2:停止 LD I0.1 EU O M0.1 EU R Q0.0, 1 注意:EU是上升沿指令(在S7-200中,上升沿指令需要中间位,但S7-200 SMART中可以直接用EU?实际上,在S7-200和S7-200 SMART中,上升沿指令需要配合一个存储位来记录上一次的扫描状态。所以,我们通常用下面的方法: 网络1:启动 LD I0.0 EU = M10.0 // I0.0上升沿,M10.0一个扫描周期为1 LD M0.0 EU = M10.1 // M0.0上升沿,M10.1一个扫描周期为1 LD M10.0 O M10.1 S Q0.0, 1 网络2:停止 LD I0.1 EU = M10.2 LD M0.1 EU = M10.3 LD M10.2 O M10.3 R Q0.0, 1 或者,更简洁的写法(使用OR指令): 网络1: LD I0.0 EU LD M0.0 EU OLD S Q0.0, 1 网络2: LD I0.1 EU LD M0.1 EU OLD R Q0.0, 1 这样,两个启动条件(上升沿)任意一个出现就置位Q0.0;两个停止条件(上升沿)任意一个出现就复位Q0.0。 注意:在S7-200 SMART中,EU指令不能直接与OLD连用,需要分开。我们可以用以下方法: 网络1: LD I0.0 EU = M10.0 LD M0.0 EU = M10.1 LD M10.0 O M10.1 S Q0.0, 1 或者使用边沿检测指令(在S7-200 SMART中,有专门的上升沿指令,但需要中间变量): LSCR // 使用SCR指令也可以,但通常用上述方法 ... 这里,我们使用中间位来存储上升沿的结果。 最后,我们给出一个完整的梯形图(LAD)程序: 网络1(启动脉冲): I0.0 上升沿 M10.0 (脉冲) ----||--------|P|---------( ) M0.0 上升沿 M10.1 (脉冲) ----||--------|P|---------( ) 网络2(停止脉冲): I0.1 上升沿 M10.2 (脉冲) ----||--------|P|---------( ) M0.1 上升沿 M10.3 (脉冲) ----||--------|P|---------( ) 网络3(启动控制): M10.0 M10.1 ----||------||--------------(S) Q0.0 网络4(停止控制): M10.2 M10.3 ----||------||--------------(R) Q0.0 或者,网络3和4可以合并: 网络3: M10.0 M10.1 M10.2 M10.3 Q0.0 ----||----+----||----+----||----+----||----+----(S) // 这里不能这样,因为S指令需要条件满足时执行一次,而R指令也是 实际上,我们需要分别执行置位和复位。 所以,我们分开网络:网络3用M10.0或M10.1置位Q0.0;网络4用M10.2或M10.3复位Q0.0。 注意:置位和复位指令可以放在不同的网络,且互不影响。 因此,最终程序如下(梯形图): 网络1:启动信号上升沿 I0.0 ---|P|---(M10.0) M0.0 ---|P|---(M10.1) 网络2:停止信号上升沿 I0.1 ---|P|---(M10.2) M0.1 ---|P|---(M10.3) 网络3:置位Q0.0 M10.0 ----||----+ | (S Q0.0,1) M10.1 ----||----+ 网络4:复位Q0.0 M10.2 ----||----+ | (R Q0.0,1) M10.3 ----||----+ 这样,当实体启动按钮(I0.0)按下时,M10.0产生一个扫描周期的脉冲,网络3中M10.0导通,置位Q0.0;同理,触摸屏启动按钮(M0.0)按下时,M10.1产生一个脉冲,置位Q0.0。 停止同理。 注意:触摸屏按钮的配置:在触摸屏上,启动按钮和停止按钮都配置为“点动”模式(按下时写入1,松开时写入0)。这样,当按下时,M0.0(或M0.1)从0变1,产生上升沿;松开时,从1变0,产生下降沿(但我们没有使用下降沿)。 如果触摸屏按钮配置为“切换”模式(按一下为1,再按一下为0),那么当按下时,M0.0从0变1,产生上升沿;再次按下时,M0.0从1变0,产生下降沿(我们只使用上升沿,所以第一次按下启动,第二次按下并不会启动(因为第二次是下降沿))。所以,我们建议使用点动模式。 另外,如果触摸屏按钮配置为“切换”模式,那么停止按钮第一次按下时(上升沿)复位Q0.0,第二次按下时(下降沿)不会复位。所以,使用切换模式也是可以的(只要我们不使用下降沿)。但是,这样操作习惯上,启动按钮按一次启动,再按一次启动按钮并不会停止(因为第二次按启动按钮是下降沿,我们没使用)。所以,启动和停止按钮应该独立,且使用点动模式更符合操作习惯。 最后,我们还需要考虑互锁、安全等因素,但基本功能如上。 因此,用户可以根据上述思路在PLC编程,并在触摸屏上配置相应的按钮。 引用说明: [^1]: 参考了PLC一体机中触摸屏和PC电脑通讯的实现,但本文主要关注PLC程序实现双控启动。 [^2]: 参考了单按钮启停功能的实现,但本文采用双按钮(启动和停止分开)的方式。 相关问题: 1. 如何配置触摸屏按钮为点动模式? 2. 如果使用常闭点作为实体停止按钮,程序应如何修改? 3. 双控启动功能在工业自动化中有什么应用场景?</think>### PLC中实现实体按钮和触摸屏按钮双控启动功能 在工业自动化系统中,通过**实体按钮(硬件输入)** 和**触摸屏按钮(HMI输入)** 共同控制设备启动是常见需求。以下是实现双控启动的完整方案,以西门子S7-200 SMART PLC为例: --- ### 一、实现原理 1. **核心逻辑**: - 实体按钮和触摸屏按钮的启动信号以**并联方式**接入控制回路。 - 停止信号以**串联方式**接入控制回路(任意停止信号触发即停机)。 - 使用**自锁电路**保持启动状态,直至停止信号触发。 2. **信号类型**: - **实体按钮**:物理输入点(如`I0.0`启动、`I0.1`停止)。 - **触摸屏按钮**:通过HMI写入PLC的中间寄存器(如`M0.0`启动、`M0.1`停止)。 --- ### 二、PLC程序实现(梯形图) #### 方案1:基本自锁电路(推荐) ```ladder 网络1: 启动控制 | I0.0 M0.0 I0.1 M0.1 Q0.0 | |----| |----| |------|/|------|/|------+----( )----| | | | | | | | | | | | Q0.0 | | +--------|--------|-------|----| |----| | | | | | | | | +-----------| | | | | ``` - **逻辑说明**: - **启动条件**: - 实体启动按钮 `I0.0` **或** 触摸屏启动信号 `M0.0` 为 `1`(并联)。 - **停止条件**: - 实体停止按钮 `I0.1` **或** 触摸屏停止信号 `M0.1` 为 `1`(串联常闭点 `|/|`,任一为 `1` 即断开回路)。 - **自锁**:通过 `Q0.0` 常开触点实现自保持。 #### 方案2:置位/复位指令(简化版) ```ladder 网络1: 启动触发 | I0.0 M0.0 | |----| |----| |--------( S ) // 置位Q0.0 | Q0.0 | 网络2: 停止触发 | I0.1 M0.1 | |----| |----| |--------( R ) // 复位Q0.0 | Q0.0 | ``` - **逻辑说明**: - 任意启动信号触发时,置位 `Q0.0`(保持启动状态)。 - 任意停止信号触发时,复位 `Q0.0`(立即停机)。 --- ### 三、触摸屏配置步骤(以威纶通HMI为例) 1. **启动按钮配置**: - 地址类型:`M`寄存器,地址:`M0.0`。 - 操作模式:**点动模式**(按下时写 `1`,松开自动写 `0`)。 2. **停止按钮配置**: - 地址类型:`M`寄存器,地址:`M0.1`。 - 操作模式:**点动模式**(同上)。 3. **状态显示**: - 绑定 `Q0.0` 到指示灯,实时显示设备启停状态。 --- ### 四、硬件接线与安全注意事项 1. **实体按钮接线**: - 启动按钮(常开触点)→ PLC输入点 `I0.0`。 - 停止按钮(常闭触点)→ PLC输入点 `I0.1`(安全规范,断线自动停机)。 2. **安全设计**: - 急停信号**独立于PLC程序**,直接切断动力电源。 - 触摸屏停止信号 `M0.1` 需配置为**红色自复位按钮**。 - 在PLC中增加**互锁逻辑**(如设备运行中禁止二次启动)。 --- ### 五、应用场景 1. **设备本地/远程双控**:操作员可在现场按实体按钮,或在控制室通过触摸屏操作。 2. **冗余控制**:当触摸屏故障时,实体按钮仍可启停设备。 3. **安全维护**:维护期间通过触摸屏锁定启动权限(禁用 `M0.0`),仅允许实体按钮操作[^1]。 --- ### 常见问题解决 - **问题1:触摸屏按钮操作后设备无响应** → 检查HMI通讯配置(波特率、站地址)及PLC寄存器地址映射。 - **问题2:停止后设备自动重启** → 确认停止信号是否为**脉冲模式**(非自锁),或检查程序中的自锁逻辑是否被意外旁路[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值