全国服务热线 15221406036

黄石西门子S7-300代理商

发布:2023-09-27 17:07,更新:2024-05-08 07:10

黄石西门子S7-300代理商

1 引言

在机床的控制中,经常遇到类似如工件的夹紧/放松,冷却液的启动/停止,顶针的前进/后退等等的操作。对于这类动作,操作者往往希望通过一个按钮来实现:按一下按钮,工件夹紧;再按一下按钮,工件放松;再按一下按钮,工件又夹紧;如此循环往复。把这样的按钮称为双稳态按钮,即有两种稳定状态:接通和断开,而且两种状态都能保持。在数控系统中,机床控制面板上一般会提供一些按键供用户自由定义,但按键的数量往往是非常有限的,所以对按键的分配不得不斟酌再三。如果在PLC程序中把按键做成双稳态的,一个按键身兼二职,就会使许多问题迎刃而解了。可见,PLC程序把按钮做成双稳态,还可以节省输入点的数量,这样在经济上也是很合算的。

2 构成双稳态按钮的三种方法

在PLC程序中构造双稳态按钮,有多种实现的方案,现在就介绍其中的三种方法。

2.1 通过SET和RESET指令来实现


图1 通过SET和RESET指令来实现双稳态按钮功能


图1程序中,当次按下按钮I0.0,此时条支路因串联的M0.1为常闭点,而使M0.0接通条件满足置位。第二条支路的执行条件不满足,暂且不去理会。再看第三条支路,假设持续按着按钮不释放,因支路中串联进I0.0的常闭点而使接通条件不满足,直到释放按钮I0.0,因串联的M0.0已经置位,从而使M0.1和Q0.0输出保持为“1”。当第二次按下按钮I0.0时,因为M0.0的状态为“1”,条支路执行条件不满足,第三条支路因I0.0的按下而使M0.1和Q0.0输出为“0”,M0.1由“1”变为“0”产生一个下降沿,使M0.0复位为“0”,从而使M0.1和Q0.0的“0”状态得以保持,即使释放按钮I0.0以后。之后对按钮I0.0的操作,又重复上述过程。可见,得到的是一个双稳态按钮。

2.2 利用PLC基本逻辑指令来实现
PLC程序是按照一定的PLC扫描周期循环往复地的执行程序代码。在每一个PLC扫描周期内,先读入输入映像区内的信号状态,然后执行用户程序,后刷新输出映像区的信号状态。用户程序的执行是按照代码的先后顺序自上往下依次执行的。


图2 利用PLC基本逻辑指令来实现双稳态按钮功能图2程序中正是充分利用了PLC程序的执行的特点,现在分析一下它的工作过程。按一下按钮,使I0.1变为“1”,在个PLC扫描周期内,M0.0变为“1”,M0.1变为“1”,M0.1等于“1”会使M0.0变为“0”,但M0.0的状态变化要到下一个PLC扫描周期才会执行,可见M0.0是宽度为1个PLC扫描周期的脉冲信号。因为M0.0等于“1”,这样会使原来状态为“0”的Q0.0变为“1”。从第二个PLC扫描周期起,不论I0.1变为“0”或保持为“1”,M0.0变为“0”并稳定在“0”上,这样Q0.0通过M0.0常闭点与Q0.0常开点串联的支路保持为“1”状态。再按一下按钮,M0.0又产生宽度为1个PLC扫描周期的脉冲信号,这个脉冲信号使原来状态为“1”的Q0.0变为“0”并稳定在“0”上。如此每次按一下按钮,Q0.0就在“0”和“1”之间切换一次,形成双稳态信号。
这一段程序中使用的指令是所有PLC系统都支持的基本的指令,可以说在任何类型的PLC上都可以实现,非常具有代表性,值得借鉴。

2.3 借助于算术运算指令来实现
在数字电路中,如果把输出的“非”端反馈到D触发器的“D”输入端,则每来一个时钟脉冲,D触发器的状态就翻转一次。


图3 利用算术运算指令实现双稳态按钮功能


图3所示的程序借鉴了数字电路中的D触发器的工作原理,按钮I0.0每按下一次,就相当于给触发器的CP端输入一个触发脉冲,相加所得“和”的低位状态就翻转一次,如果Q0.0取自低位,就可得到周期性状态在“0”、“1”之间改变的双稳态信号。为了避免加法的计算结果溢出,判断如果累加到16位整数所能表示的大值32767,就重新开始累加。

3 结束语

文章开始提到的控制阀的两种状态,也可以选用具有保持功能的三位选择开关,这是一种硬件实现方案。当然可以选用本文所述的软件实现方案,殊途同归。但通过软件的方式,却节省了PLC输入点的开销,如果PLC的输入非常紧张,这是一种行之有效的方法,但若是输入点后还绰绰有余,这样做就有画蛇添足之嫌了。
硬件方案、软件方案,很难说究竟何者是佳方案。正如计算机的发展史,如果硬件非常昂贵,那就通过软件来实现这一功能;如果硬件的成本非常低了,何不充分发挥硬件的功能,这样还可以缩短一下程序代码。PLC输入点的问题正是如此,适合的才是佳的。

PLC与触摸屏实现翻页-张庆松
  
   近段时间开发一种机器系统,其中有一项功能是将每天的机器工作数目在触摸屏中显示出来,天数要两年;并且只要输入日期,触摸屏上就可以将任意时间的数目进行统计。我自己设计了一个程序,愿与大家分享。如有问题请指正。
  
  画面讲述
  
   本系统用的是OMRON的C的PLC,触摸屏用的是Pro-face的GP577R。其画面如下图1-A所见。
  图中所示的B1按下后,就可以设置统计日期;设置完后,再按一下B2,就会统计两年内任意日期内的工件数。A1下的是指示数,从1~730,A2下的是年月日,如(030528)指的是03年05月28日。A3即每天的工件数。C1是向上翻页键,C2是向上翻行键,C3是向下翻页键,C4是向下翻行键。
  


  地址分布
  
   触摸屏的系统地址从DM500开始。
   A1下的数字用的是一个触摸屏中的N标签,其功能如图2-A所示。地址是触摸屏的内部地址区域,我用的是LS2000; N标签上有一个运算,从上到下分别是LS2000+1~LS2000+10。
   A2下的数字用的是一个触摸屏中的两位E标签,其功能如图2-B所示。地址是PLC的内部地址区域,我用的是DM1000~1001。从上到下分别是DM1000~DM1018。
   A3下的数字用的也是一个触摸屏中的两位E标签,其功能如图2-C所示。地址是PLC的内部地址区域,我用的是DM2000~2001。从上到下分别是DM2000~DM2018。
   B1是触摸键,用来设定起始日期和终止日期日期。B2=22915,用来触发统计总的工件数。
   C1~C4用的是一个触摸屏中的T标签,其功能如图2-D所示。地址是触摸屏的内部地址区域,C1=LS50102,C2=LS50103,C3=LS50100 ,C4=LS50101。
  
  
  触摸屏程序
  
  Pro-face的触摸屏有D-bbbbbb Editor功能,请大家看以下的程序。
  
   ID : 0000
   Trigger : Bit Rising , Edge Bit Address : LS050100
   bbbbula :
   if ([w:LS1000]<=758)
   {[w:LS1000]=[w:LS1000]+2
   }
   endif
   Date Type : BCD Data Length : 16 Bit
  此程序的是用来向下翻行,即指示值(A1)小于758时,将画面向下翻一行。
   ID : 0001
   Trigger : Bit Rising , Edge Bit Address : LS050101
   bbbbula :
   if ([w:LS1000]<=720)
   {[w:LS1000]=[w:LS1000]+40
   }
   endif
   Date Type : BCD Data Length : 16 Bit
  此程序的是用来向下翻页,即指示值(A1)小于720时,将画面向下翻一页。
   ID : 0002
   Trigger : Bit Rising , Edge Bit Address : LS050102
   bbbbula :
   if ([w:LS1000]>=40)
   {[w:LS1000]=[w:LS1000]-40
   }
   endif
   Date Type : BCD Data Length : 16 Bit
  此程序的是用来向上翻页,即指示值(A1)大于等于40时,将画面向上翻一页。
   ID : 0003
   Trigger : Bit Rising , Edge Bit Address : LS050103
   bbbbula :
   if ([w:LS1000]>=2)
   {[w:LS1000]=[w:LS1000]-2
   }
   endif
   Date Type : BCD Data Length : 16 Bit
  此程序的是用来向上翻行,即指示值(A1)大于等于2时,将画面向上翻一行。
   ID : 0004
   Trigger : Timer Fn , Timer Duration : 1
   bbbbula :
   [w:LS2000]=[w:LS1000]/2
   Date Type : BCD Data Length : 16 Bit
  此程序的显示指示数A1。
  
  PLC程序
  
  [NETWORK]
   Name="calendar"(本段是将每天的日期转换到触摸屏中)
  [STATEMENTLIST]
   LD 253.13
   OUT TR0
   CMP DM0502 HR92 //DM0502是系统的年
   AND NOT 255.06
   LD TR0
   AND 049.02
   OR LD
   AND NOT TIM252
   AND NOT 049.03AND NOT 049.04
   OUT 049.02
   TIM 252 #0010
   LD TR0
   MOV DM0502 HR92
   CMP DM0503 HR93 //DM0503是系统的月
   AND NOT 255.06
   LD TR0
   AND 049.03
   OR LD
   AND NOT TIM253
   AND NOT 049.04
   OUT 049.03
   TIM 253 #0010
   LD TR0
   MOV DM0503 HR93
   CMP DM0504 HR94 //DM0504是系统的日
   AND NOT 255.06
   OUT 049.04
   LD TR0
   MOV DM0504 HR94
   AND TIM252
   LD TR0
   AND TIM253
   OR LD
   LD TR0
   AND 049.04
   OR LD
   OUT TR1
   ADD #0002 DM0070 DM0070 //DM0070是指针字
   CMP DM0070 #0800
   AND 255.05
   LD TR1
   AND 255.06
   OR LD
   MOV #0000 DM0070
   LD TR1
   ADD DM0070 #2000 DM0076 //间接寻址,DM2000
   ADD DM0070 #2001 DM0077 //间接寻址,DM2001
   ADD DM0070 #1000 DM0074 //间接寻址,DM1000
   BSET #0000 *DM0076 *DM0077
   MCRO 10 DM0502 DM0626 //子程序入口
   XFER #0002 DM0628 *DM0074 //日期写入触摸屏
  
  [NETWORK]
   Name="count&reset"(本段是程序记数与复位)
  [STATEMENTLIST]
   LD 253.13
   OUT TR0
   AND 228.10 //触摸屏上清零键
   DIFU 080.10
   LD TR0
   AND 080.10
   BSET #0000 DM0066 DM0067 //DM0066~67位计数值
   LD TR0
   AND 081.15 //计数角度微分
   AND HR64.04 //计数角度位置
   OUT TR1
   INC DM0066 //工件数的低位
   AND 255.06
   INC DM0067 //工件数的高位
   LD TR1
   INC *DM0076 //每天工件数的低位
   AND 255.06
   INC *DM0077 //每天工件数的高位
  
  [NETWORK]
   Name="Sum"(本段是程序统计)
  [STATEMENTLIST]
   LD 253.13
   OUT TR0
   AND 229.15 //触摸屏上统计键
   DIFU 080.15
   LD TR0
   AND 080.15
   SET HR70.00 //统计开始标志
   MCRO 10 DM0602 DM0606 //触摸屏设定起始日期
   MCRO 10 DM0612 DM0616 //触摸屏设定终止日期
   BSET #0000 DM0080 DM0083 //指针2
   LD TR0
   AND HR70.00
   OUT TR1
   ADD DM0080 #2000 DM0086 //间接寻址,DM2000
   ADD DM0080 #1000 DM0084 //间接寻址,DM1000
   CMPL *DM0084 DM0608
   AND 255.05
   LD TR1
   AND 255.06
   OR LD
   OUT 048.01
   LD TR1
   CMPL *DM0084 DM0618
   AND 255.07
   LD TR1
   AND 255.06
   OR LD
   OUT 048.02
   LD TR1
   AND 048.01
   AND 048.02
   ADDL *DM0086 DM0081 DM0081
   AND 255.04
   INC DM0083
   LD TR1
   ADD DM0080 #0002 DM0080
   CMP DM0080 #0800
   AND 255.05
   LD TR1
   AND 255.06
   OR LD
   RSET HR70.00
   XFER #0003 DM0081 DM0091
  



联系方式

  • 地址:上海松江 上海市松江区石湖荡镇塔汇路755弄29号1幢一层A区213室
  • 邮编:201600
  • 联系电话:未提供
  • 经理:聂航
  • 手机:15221406036
  • 微信:15221406036
  • QQ:3064686604
  • Email:3064686604@qq.com