对一求助帖进行硬件设计与软件编程的展示 点击:557 | 回复:3



wyb2866255---王者之师

    
  • 精华:57帖
  • 求助:0帖
  • 帖子:148帖 | 2872回
  • 年度积分:1
  • 历史总积分:31450
  • 注册:2010年7月01日
发表于:2013-06-01 12:40:41
楼主

                对一求助帖进行硬件设计与软件编程的展示

     网上有这样一个求助帖:

   要求:
1、三台电动机可以手动/自动运行
2、在自动状态下三台电动机根据温度的升高与降低来启停电动机:(1)给出启动信号,电动机1#开始运行,按下停止信号,电动机停止,下次再给出启动信号时,2#电动机运行,按下停止信号,电动机停止,下次再给出启动信号时,3#电动机运行,按下停止信号,电动机停止,如止循环。(2)当温度在50度时,电动机1#或2#或3#正常运行,温度升至到70度时增加一台电动 运行,当温度低于50度时或等于50度时停止前一台电动机,后启动一台任正常运行,(3)当温度升至70度时,电动机增加一台运行,当温度低于50度时或等于50度时停止前一台电动机,后启动一台任正常运行,三台电机机如止循环。

3、其中任何一台电动机出现故障,会自动切换 到非故障电动机上运行,同时两台电动可作为一用一备,根据温度高低相互循环。

4、如果三台电动机有两台故障,一台任可正常运行。

这个问题一直纠结,没有做出来,麻烦大侠给看看怎样编写这个程序,最好给一个梯形图。

   这个求助帖是有一定难度的,我按此帖的要求作了硬件设计和软件编程,并对程序思路进行解析,现展示给大家,供大家分析参考。希望此文能对PLC初学者学习PLC的软硬件设计编程有所帮助。      

一、硬件电路设计见下图:

 

      电路说明:本设计选用西门子S7-200的PLC,其型号为CPU224CN,PLC输出为继电器触点输出,其供电选用~220V电压源。输入测的公共点1M、2M皆接PLC内部的24V电源的负极M,24V的正极 L+接各开关触点的下端,各开关触点的上端分别接对应的输入口。

其K0 为自动/手动转换开关

其K1 为人为手动启动电机的按钮,点动式非自锁型。

      其K2、K3为双金属片温度继电器的常闭触点,K2:当被测温度≤50度时,其触点闭合,当被测温度>50度时,其触点由闭合变断开。K3:当被测温度≤70度时,其触点闭合,当被测温度>70度时,其触点由闭合变断开。

     其QK1 为电机1的自动开关辅助触点,接PLC的I1.0输入口,当电机1运行时,其触点闭合,当电机1 出现故障(如过流)而跳闸时,其触点由闭合而断开。

     其QK2 为电机2的自动开关辅助触点,接PLC的I1.1输入口,当电机2运行时,其触点闭合,当电机2 出现故障(如过流)而跳闸时,其触点由闭合而断开。

     其QK3 为电机3的自动开关辅助触点,接PLC的I1.2输入口,当电机3运行时,其触点闭合,当电机3 出现故障(如过流)而跳闸时,其触点由闭合而断开。

       二、I / O口定义:

    I0.0:自动/手动转换开关K0:I0.0=0 执行手动程序,I0.0=1 执行自动程序

   I0.1:电机启动按钮K1

   I0.2:为50度温度继电器K2的常闭触点:当温度≤50度时,I0.2=1,当温度>50度时,I0/2=0

   I0.3:为70度温度继电器K3的常闭触点:当温度 ≥ 70度时,I0.3=0,当温度 ≤ 70度时,I0.3=1

  I0.4:复位按钮K4

  I0.5:电机1故障排除后,按K5按钮可使电机1恢复使用,即使M0.1=0。

  I0.6:电机2故障排除后,按K6按钮可使电机2恢复使用,即使M0.2=0。

  I0.7:电机3故障排除后,按K7按钮可使电机3恢复使用,即使M0.3=0。

  I1.0:电机1发生故障跳闸,其QK1的常开出点断开,使I1.0 由1↓0。

  I1.1:电机2发生故障跳闸,其QK2的常开出点断开,使I1.1 由1↓0。

  I1.2:电机3发生故障跳闸,其QK3的常开出点断开,使I1.2 由1↓0。

  Q0.0:电机1输出口,接接触器Z1。   

  Q0.1:电机2输出口,接接触器Z2。  

  Q0.2:电机3输出口,接接触器Z3。

     三、编程及编程思路解析:

 (1)、主程序:

I0.0 为自动/手动转换开关。当I0.0=0时,程序处于手动工作状态,当I0.0=1时,程序处于自动工作状态。

       当电机1出现故障停车,其M0.1=1(故障标志),等排除故障后,按一下I0.5,可使M0.1=0,即电机1故障排除又可投入工作。

       当电机2出现故障停车,使M0.2=1(故障标志),等排除故障后,按一下I0.6,可使M0.2=0,即电机2故障排除又可投入工作。

       当电机3出现故障停车,使M0.3=1(故障标志),等排除故障后,按一下I0.7,可使M0.3=0,即电机1故障排除又可投入工作。

   其主程序如下:

 

 

     (2)、手动程序解析:

      在手动程序下,要求3个电机能随时启动或停止,而启动按钮只有一个,即I0.1。为此编程是这样构思的:用连续点击按钮的次数不同来启动不同的电机的:即点击一下按钮,将使电机1启动或停车,连续点击二下按钮,将使电机2启动或停车,连续点击三下按钮,将使电机3启动或停车。为达到上述起停电机的功能,在编程中应做如下处理,见SBR_1 手动子程序:

      1、用MB2存储器作加1计数器,即每点击一下按钮,使其I0.1产生一正方波,其脉冲后沿使MB2加1。

      2、考虑点击按钮时易发生按钮抖动,使I0.1接受的不是一个方波脉冲,而是一串连续脉冲,此时如用I0.1的脉冲后沿做计数脉冲,其MB2的计数值就不是加1,而是加N(N为抖动脉冲数,而且是随机数),即造成MB2计数不准,从而不能正确驱动想要控制的电机运行或停车。为此不直接用I0.1去触发计数器MB2,而是用I0.1去驱动二个断电延时定时器T101、T102(见SBR_1程序的网络1)。

       T101的定时时间为300mS,其作用为:一般由按钮抖动产生的抖动脉冲串,其抖动脉冲间隔时间均<<300mS,如用延时时间为300mMS的断电延时特定时器来代替I0.1输出,就可消除因按钮抖动引起的多脉冲干扰,即:第一个脉冲前沿使T101由0↑1,随后出现的N个脉冲由于彼此间距<<300mS,故使T101始终保持=1.只有最后一个脉冲消失后,再延时300mS,T101才由1↓0。这样虽然I0.1输出是多个脉冲,而T101却只输出一个正方波脉冲,此时如用T101的后沿对MB2进行加1计数,就可确保计数器计数准确:即每按一下按钮,MB2只能加1。如连续按N下按钮,MB2计数值=N。

       T102的定时时间为1.5 秒,一般正常连续点击按钮,其相邻二次点击间隔时间为0.5~1秒之间,即小于T102的定时时间,故当连续点动按钮N下时,T102从第一下点动开始就由0↑1,一直保持T102=1 ,直到最后一次点动结束再延时1.5秒,T102才由1↓0。而此时计数器MB2已计完连续按N下的脉冲数。

      举例说明:见SBR_1的网络1,如连续按2下按钮,I0.1的第一个脉冲前沿,使MB2清0,随后使T101与T102由0变1,第一个脉冲结束后,延时300mS,T101由1↓0,且使MB2加1(见网络2),此时MB2=1,而T102仍保持=1,第二个脉冲到来时,由于此时T102=1,其常闭触点已断开,故I0.1的前沿不会再使MB2请0,当第二个脉冲结束后,延时300mS,T101由1↓0,又使MB2加1,此时MB2=2。再延时1.2秒,T102因无脉冲触发,其输出由1↓0。T102由1↓0,触发由SR触发器构成的双稳态电路,使电机2输出状态改变,见网络4:如原Q0.1=0,T102=1的后沿使Q0.1由0↑1,即电机2启动。如原Q0.1=1,T102=1的后沿使Q0.1由1↓0,,即电机2停车。同样道理,如连续按3下按钮,会控制电机3的启停,如每次只按一下按钮,会控制电机1的启停。

      其SBR_1手动子程序如下:

 

 

 

     (3)自动程序解析:

        在自动程序下,人为启动或停止电机运行,只能用I0.1一个按钮来完成,其操作方式为:第1次按钮,电机1启动运行,第2次按钮,电机1运行停止。第3次按钮,电机2启动运行,第4次按钮,电机2运行停止。第5次按钮,电机3启动运行,第6次按钮,电机3运行停止。再按按钮将使电机1启动运行……依次循环。要实现这样操作,其编程思路为:用MB1作为加1计数器,MB1初始状态为0,即MB1=0。每按一下I0.1按钮,使MB1加1,当MB1=1的前沿,将使电机1启动,当MB1=2的前沿,将使电机1停止,当MB1=3的前沿,将使电机2启动,当MB1=4的前沿,将使电机2停止,当MB1=5的前沿,将使电机3启动,当MB1=6的前沿,将使电机3停止。请见网络3、网络5、网络7的第一行指令:即用MB1与1或3或5比较,当MB1=1或3或5时,将使电机1或电机2或电机3启动运行。为确保MB1计数准确,用I0.1驱动断电延时定时器T103(延时时间为300mS),用T103=1的后沿触发计数器MB1,见SBR_0的网络1~2。

        在自动程序下,当温度低于70度时,只容许一台电机运行,而且头一台电机的启动是人按启动按钮I0.1来实现的。当温度上升到70度以上,系统自动启动第二台电机,第二台电机序号是运行电机的下一个序号,如2号电机运行(Q0.1=1),当温度高于70度时,3号电机启动运行。如1、2号电机运行,温度开始下降,当温度低于50度时,先运行的1号电机停止运行,而2号电机继续运行。

         题目还要求:“其中任何一台电动机出现故障,会自动切换到非故障电动机上运行,同时两台电动可作为一用一备,根据温度高低相互循环。如果三台电动机有两台故障,一台任可正常运行。”因此,自动运行的编程时的重点是对3台电机的启动与停车的考虑,即如何在各种情况下使3台电机能按题目要求正确运行。下面以电机1为例进行编程说明,见SBR_0的网络3:

       在自动程序下,电机1可在以下条件下启动:

      1、手动启动:当MB1=0时,按启动按钮,使I0.1=1,其前沿触发MB1使MB1加1,MB1=1的前沿使Q0.0=1,即电机1启动运行,见网络3的第一行指令编程。

      2、当温度高于70度后,使70度的温度触点I0.3由0↑1时,如此时电机3正在运行,由于50度的温度触点I0.2=1,其I0.3=1的前沿触发将使Q0.0=1,即电机1启动运行,见网络3的第二行指令编程。

      3、在温度>70度,其电机2与电机3运行中,如有一台因故停止运行,其停车的后沿触发使Q0.0=1,即电机1启动运行,见网络3的第三行指令编程。

      4、在温度<70度,其电机3运行中突然停车时,其Q0.2=1的后沿触发使Q0.0=1,即电机1启动运行,见网络3的第四行指令编程。

     5、在温度<70度,其电机2运行中突然停车时,由于电机3已因故障已停车,而电机1无故障时,Q0.1=1 的后沿触发使Q0.0=1,即电机1启动运行,见网络3的第五行指令编程。

        在自动程序下,电机1可在以下条件下由运行变停车启:

      1、人工按启动按钮:当MB1=1电机1启动运行时,再按一下启动按钮,将使

MB1=2,没变=2的前沿触发可使电机1停车。

      2、在温度>70度时,电机1与电机2运行中,如温度下降低于70度时,温度触点I0.3由1↓0,将触发电机1输出,由1变0,使电机1停车。

      3、运行中电机1突然出现故障跳闸,使I1.0由1↓0,其下跳沿将使Q0.0=0,使电机1停车。

电机2与电机3与电机1动作一样,其程序就不再作重复说明。

      其SBR_0自动子程序如下:

 

 

 

 

 

       本文到此结束,如有不妥之处,请给于指正,谢谢!

 




flylovemore--王者之师

  • 精华:0帖
  • 求助:4帖
  • 帖子:11帖 | 329回
  • 年度积分:5
  • 历史总积分:1026
  • 注册:2011年2月23日
发表于:2013-06-01 21:16:47
1楼

有更多的工程师像楼主的无私奉献 精神就好了

楼主厉害

学习了

dulifeng2008

  • 精华:0帖
  • 求助:6帖
  • 帖子:11帖 | 15回
  • 年度积分:0
  • 历史总积分:69
  • 注册:2012年9月01日
发表于:2013-06-01 21:31:27
2楼

你没有试机过吗?感觉跟那个恒压供水差不多的啦

cqu_rockwell-------------王者之师

  • 精华:16帖
  • 求助:0帖
  • 帖子:686帖 | 8694回
  • 年度积分:0
  • 历史总积分:57901
  • 注册:2010年6月30日
发表于:2013-06-01 23:02:07
3楼

楼主辛苦啦,敬礼!!  


热门招聘
相关主题

官方公众号

智造工程师