关于PLC编程的问题讨论(续1) 点击:1263 | 回复:3



wyb2866255

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

     本文是“关于PLC编程的问题讨论”一文的续写,在原文中列举一个编程实例,讲解了对一个具体项目如何进行编程(详细内容请见原文)。该项目的控制要求是:
     “一台电动机要求在按下起动按钮后,电动机运行10秒,停5秒,重复3次后, 电动机自动停止。同时设置有手动停机按钮和过载保护。编写梯形图控制程序。PLC可以随便选用,要有相关说明。 注意:要有PLC控制电路和I/O分配表。”

      原文对此项目用不同思路编出3种控制梯形图,并对此进行程序解析与比较。这3种控制编程都是选用定时器构成的振荡器编写出来的。下面再介绍2种编程方案,是用PLC的秒脉冲(SM0.5)触发存储器使之进行移位或加计数的控制方式实现的控制方案:

       上图的方案四:是选用二个字节存储器(MB2、MB3),按下按钮,其抬起的后沿,使MB2=0、MB3=3,且使M0.1=1。M0.1=1使PLC的秒脉冲SM0.5触发有效:SM0.5的前沿,对MB2进行加1运算,当MB2值<10时,使输出Q0.7始终=1(即电机运转),MB2>=10时,使Q0.7=0(电机停),MB2=15时,使MB2=0,同时MB3减1,再判断MB3=0?,如不=0,由于MB2=0,且<10,使Q0.7=1(电机又转)。。。当MB3=0时(即循环3次),使M0.1=0,程序结束。此程序所用指令少,也是最佳方案。
      上图的方案五:构思新颖,它是采用秒脉冲SM0.5的前沿触发字存储器MW4,使其以次右移一位的方式,对电机进行实时控制:按下启动开关(I0.0),其抬起时,将MW4=16#3F(即MB5的8位皆=1,MB4的低二位值也=1,共10位值都=1),再将MB6=0、MB7=3,同时使M0.2=1。M0.2=1 使SM0.5的前沿触发有效,每触发一次,MW4右移一位,MB6加1,当计满15次时,使MB6=0,且MB7减1,再判断MB7=0?,循环计数3次,其MB7=0,比较器输出信号使M0.2=0,程序结束。每次计数为15,前10个计数,M5.0输出都=1,故输出口Q0.7皆=1,电机运行,后5个计数,其M5.0输出皆 =0,故电机停转。
       这5种编程方案(包括原文中介绍的3种),出于5种不同的构思,望初学者能仔细分析各个程序,如能很好的理解,对你今后的编程是会大有帮助的。
       再介绍几个编程的小实例,都是在网上回答网友求助编写的,程序很短,针对性强,对初学者学习PLC编程会有帮助的:

       一、网友求助:“电机启动后5秒内无反馈则停止电机的程序怎么写哦,请大侠指教 ”

       我的回复:可以这样编程:

          程序解析:按下启动按钮(I0.0),其前沿使Q0.0置1(Q0.0=1)电机启动运行,在没有反馈信号时M0.0=0,故定时器T101得电且开始延时,如延时5秒始终没出现反馈信号,T101吸合,使Q0.0=0,电机停转。如延时5秒内出现反馈信号(I0.1=1),使M0.0=1,M0.0的常闭点断开,使T101断电,定时器停止工作,电机保持长时间运行。按定制按钮(I0.1),使Q0.0=0、M0.0=1,电机停,程序结束。
        二、网友求助:“s7-300里的定时器t1,怎么循环启动? 现在是,使用完一次,t1就停止了!而我想用T1实现每隔2秒重复一个动作!请大家帮忙,谢谢!” 又提出:“其实,我就是想用定时器来实现每隔3秒,QB0循环右移一位。 我现在比较菜鸟哈,希望高手们能指点详细点,最好能有梯形图! 嘿嘿,感谢!!”
        回复:“ 楼主:根据你的要求“其实,我就是想用定时器来实现每隔3秒,QB0循环右移一位。”我给你编出用S7-200和用S7-300编出的功能一样的梯形图。从图中可以看出,S7-200由于采用字节循环右移指令,所以编出程序简短易懂。S7-300由于没有字节循环右移指令,就得通过编程来达到同样的功能作用,编出的程序相对长了一些,看懂梯形图也相对难了一点。有什么问题可以提出,我可以答。 ”


         解析梯形图:
       1、图一是用S7200编写的图形图,其编程技巧有二:
      (1)用通电延时定时器T101的常闭点连接T101的线圈构成振荡器,其脉冲的低电平为3秒宽度,高电平为连续二个扫描周期的间隔时间,即只出现一次,故可直接用T101的常开触点去触发QB0的循环右移,而不需选用其前沿触发,就可确保QB0只右移一次。
      (2)、选用字节循环右移指令,在T101=1的这一扫描周期里将此时刻的QB0内容右移一位,同时又自动的将移出的QB0的最高位(Q0.7)送回QB0的最低位(Q0.0)(如不需循环右移,可改用字节右移一位的指令),使编程简短易懂。
       2、图二是用S7300编写的图形图,其编程技巧也是使用T101构成的振荡器,利用该振荡脉冲的正方波在程序扫描中只出现一次的特点,完成将QB0右移一位。由于S7-300没有字节移位指令,编程是这样处理:将QBO送入MW7的低字节MB8中,右移一位MW7,MB8也随之右移一位, MB8的最高位移到MB7的最低位(即M8.0),再把M8.0送入M7.0中,再把MB8送回QB0,从而实现了将QB0内容的循环右移一位的功能,如程序不需要循环右移,可将“M7.0M8.0”这条语句去掉就可以了。
       三、网友求助:“如何把一个字节的全部位,高位低位反向重排。
                              01234567
                              76543210 ”
       回复:现用S7-200编出一个字节内容反排列的程序梯形图,供你参考




燕山雪

  • 精华:0帖
  • 求助:1帖
  • 帖子:18帖 | 1341回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2011-04-15 09:06:50
1楼
不错的帖子,支持一下。

彩云之滇东北

  • 精华:20帖
  • 求助:5帖
  • 帖子:107帖 | 2725回
  • 年度积分:0
  • 历史总积分:21121
  • 注册:2005年6月14日
发表于:2011-04-15 10:31:36
2楼

顶一个                                            

yuanzhiguang1357

  • 精华:0帖
  • 求助:1帖
  • 帖子:1帖 | 226回
  • 年度积分:0
  • 历史总积分:939
  • 注册:2011年3月11日
发表于:2011-04-15 11:03:34
3楼
这程序很间单的,我电脑内作了很多的电器和机械图也有电器编程图但不知如何发到网上去,与大家共享。

热门招聘
  • 客服
  • 小程序
  • 公众号