常州机器视觉培训

常州上位机软件开发

常州工业机器人编程设计培训

常州PLC培训

常州PLC

常州PLC编程培训

常州电工培训

常州和讯plc培训中心欢迎您!
热门课程
联系方式
  • 常州和讯自动化培训中心
  • 常州市新北区府琛商务广场2号楼1409室
  • 电话:0519-85602926
  • 手机:15861139266 13401342299
当前位置:网站首页 > 技术资料 技术资料
用S7-200对较难命题编程的几个实例与解析
日期:2013-3-27 15:02:34人气:  标签:常州PLC培训 常州PLC编程 常州电工培训

网上有很多求助PLC编程的帖子,很有探讨价值,我经常帮助他们去编程,这不仅是帮助他们解决问题,而且对己也是一种锻炼与提高。现选出几个求助帖,都是具有一定难度的编程命题,它可以使我们增强思维,提高编程的技巧和能力。现将这几个帖子并同我为之编写的程序一起贴出,愿与大家共享与探讨,如有 不对之处,请给于指正,本人深表感谢。

一帖:我想做一个小程序,每半个小时循环一次,每次循环内部又要执行20次几乎相同的操作(第一个90秒之内Q0.0 输出5秒,Q0.0输出延时2Q0.1 输出0.5秒。第二个90秒,输出点变为Q0.2Q0.3,以此类推)。我想用一个子程序,不想书写20次子程序调用,只书写一次子程序调用,利用循环 可以实现不,任何实现?请高手给我指点指点。期待您的指点。

我的思路:按着楼主要求用S7-200编写了一个子程序(SBR_1),该子程序运行时间为半小时,在此时间内重复执行20次类似的控制动作,不同点就是输出口依次下移:第一次输出口为Q0.0Q0.1,第二次输出为Q0.2 Q0.3,第三次输出为Q0.4Q0.5……。在主程序中,设定I0.1为启动命令按钮,设I0.2为停止运行按钮。只要按一下I0.1启动,程序将自 动执行每半小时调一次SBR_1子程序,重复调用,直到按下I0.2停止按钮,程序才终止运行。

该子程序共占据输出口40个,整整是5个输出通道( QB0QB1…QB5)如按正常编程,这20个类似动作由于输出口不同,需一一调用,这样编出的程序太长。经过反复思考,我是这样编程的:

1 我利用指针指令,首址指向QB0,每执行完一个通道动作后,令指针地址加1,这样循环5次,其输出即可由QB0依次移到QB5

2 对 一个输出通道内的传送地址,是采用指令进行的,比如第一次输出,先将QB00,将MB2=1MB3=2。当运行80秒时将QB0 MB2相或运算,其结果:Q0.0=1,延时82秒将QB0MB3相或运算,其结果:Q0.0=1Q0.1=1。当运行85秒时将MB2求反送入 MB4,此时MB4=16#FE,再用QB0MB4相与运算,其结果:Q0.0=0Q0.1=1,当运行87秒时将MB3求反送入MB5,此时 MB5=16#FB,再用QB0MB5相与运算,其结果:Q0.0=0Q0.1=0,从而达到在第一个90秒内使Q0.0输出为1且保持5秒后复位, 使Q0.1滞后Q0.1两秒输出为1且保持5秒复位的控制要求。第二次动作时,先将MW2左移2位,即使MB2=04MB3=8再重复上述动作,其结 果:Q0.2=1,延时5秒复位,Q0.3滞后二秒输出为1,保持5秒复位,从而达到第二次动作时其输出下移到Q0.2Q0.3。具体动作控制,请见下 面梯形图:

主程序:

子程序:SBR_1

该程序经上机运行(为缩短运行时间按图中注解的试验时改动数据运行),动作正确,符合命题要求。

二 帖:5个执行动作我转换为操作数,姑且定为D10D20D30D40D50,它们每一个都可能写入从0 5的数值。最后执行是从15 依次执行输出,是0的不执行跳过,不知如何编,请高手指点,谢谢了!“……如这一次是按1/2/3/4/5依次动作,下一次也许设置为按5/3/2 /动作,再下一次就1/5/2/3/。。。。。两次执行的间隔时间可设定,暂定3秒看设备运转情况而定

我的编程构思:

一、PLC的硬件设置及有关事项说明:选用S7-200PLC编程。

1、其输入口:

I1.0 为启动按钮,

I1.1 为停止动作按钮。

*** 以下的I0.0 ~ I0.5 六个输入点是为手动设置参数的按钮地址。是为在没有上位机或触摸屏与PLC通讯的条件下,可用这6个按钮,对5路执行机构的动作顺序号及动作间隔时间进行手动设置。其各输入点定义如下:

I0.0 为设置第1路执行机构执行动作的顺序号按钮

I0.1 为设置第2 ~ 5路执行机构执行动作的顺序号按钮,设置值:0~5

I0.2 为设置第2 ~ 5路执行机构执行动作的顺序号左移8位按钮

I0.3 为复位按钮,即将第1~ 5 路机构的顺序号清0,其作用是为更改5个机构动作的顺序号值做清0准备。

I0.4 为相邻二个机构动作时间间隔值的个位数设置按钮,设置值:0~F16进制数)

I0.5 将时间设定值左移4位按钮

 

2、其输出口:

Q0.0 为第1路执行机构输出

Q0.1 为第2路执行机构输出

Q0.2 为第3路执行机构输出

Q0.3 为第4路执行机构输出

Q0.4 为第5路执行机构输出

3VB10VB11VB12VB13VB14分别为第1~5执行机构动作顺序号设置区

为节省设置按钮,将VB11VB12VB13VB14合并为一个双字存储器VD11

4 VW30 为相邻二个机构动作时间间隔设置区。可用按钮对其设置时间。VW30也是第一个执行机构的动作时间,2倍的VW30(即VW32)是第二个执行机构的动作 时间,3倍的VW30(即VW34)是第三个执行机构的动作时间,4倍的VW30(即VW36)是第四个执行机构的动作时间,5倍的VW30(即 VW38)是第五个执行机构的动作时间。

5、从按下启动命令开始,先将计时器(MW2)清0,再用秒脉冲对MW2进行加1计数,当 MW2=VW30, 第一个执行机构动作,当MW2=VW32, 第二个执行机构动作……直到MW2=VW38, 第五个执行机构动作为止。那路执行机构是第一个、第二个动作取决它设定的顺序号。

6、设MB0为第几个机构动作标记区,按启动按钮时,将 其清0,每当计时VW30MB01,故MB0等于几就应为第几个执行机构执行动作,(如:第一次机构动作时,MB0=1……第五次机构动作 时,MB0=5)。在执行动作前,先用MB0VB10~VB14比较,那路执行机构的顺序号=MB0,那路执行机构就动作,这样就可确保动作执行的的正 确性。

 

详细动作控制请见以下梯形图:
二、S7-200编程的梯形图:

该程序是经过上机运行及调试,证明程序是正确的、好用的。

VB10VD11VW30可由上位机或触摸屏设置,如没有上位机或触摸屏,可用几个按钮与PLC输入口I0.0~I0.5相连,用按钮可对其参数进行设置,以下就是用按钮直接在PLC上设定参数的程序。这种用PLC输入口设置内部参数的方法对初学者也是有帮助的。

三帖、这也是网友的求助帖,经整理为:

输入点4个:I0.0I0.1I0.2I0.3  输出点2个:Q0.0Q0.1

要求:

    14个输入点分别有脉冲信号输入,其四路连续累计9个输入脉冲信号的时间间隔 < 1 分钟时。其输出Q0.0=1,否则Q0.0=0

    24个输入点分别有脉冲信号输入,其四路连续累计15个输入脉冲信号的时间间隔 < 1 分钟时。其输出Q0.1=1,否则Q0.1=0

    编程构思:本程序采用二个指针指令,一个首址为VB100,指针为VD80;另一个首址

VB200。指针为VD84。初始化将VB0VB1VW20.。用I0.0~I0.3四个输入信号的

后沿并联触发M0.0,这样那路最先出现又最先结束,将M0.01M0.0=1开始秒脉冲对

VW21计时,计时中那路出现输入信号,其前沿VW2计时值送入VD80VD84指针所

指的地址中。且判断输入脉冲数(VB0)<=9,如<=9VB01,指针VD802。同时判断

VB1,如VB1<=15,则VB11,指针VD842。且使M0.1=1

    M0.1=1扫描周期内,先判断VB0=9?如=9,再判断VB3<=60,<=60 则使Q0.0=1

否则使Q0.0=0。同时又判断VB1=15?如=15,再判断VB3<=60,<=60 则使Q0.1=1

否则使Q0.0=0

    M0.1=1扫描周期内,如果VB0=10时,用VW2-VW100=MW4,判断MW4<60  

使Q0.0=1,否则使Q0.0=0,再将VW102为首址的连续9个字的内容前移到以VW100为首

址的连续9个字里。同样如果VB1=16时,用VW2-VW200=MW6,判断MW6<60   则使

Q0.1=1,否则使Q0.1=0,再将VW202为首址的连续9个字的内容前移到以VW200为首址的

连续9个字里。详见梯形图:

 

 

   四帖:网友求助:“S7-300编程实现一个输入四个输出顺序输出:就要希望实现第一次按i4.1,输出m1,第二次输出m2,第三次输出m3,第四次输出m4.如此循环。一次输出一个

    回复:我用s7-200编了你所要的梯形图,上机运行正确无误,并将此程序翻译为S7-300,供你参考.

                  s7-200梯形图:

                    S7-300的梯形图:

 

      对程序的解析:这二个程序的编程特点就是巧妙地运用循环左移、与、或等编程指令编写的。使程序短小精悍。以S7-200程序为例:当第一次按钮时由于M1.0=0,故不执行第二网络指令,只能执行第三网络指令,即先将MB0置数为0001_0001,再将M1.01M1.0=1进行与、或运算,将MB0的低4位数0001送入QB0的低4位,使Q0.0=1,而QB0的高4位不受影响(即仍保持原状态)。当第二次按钮,由于M1.0=1,程序执行第二网络指令而不再执行第三网络指令,即使MB0循环左移一位,即0010——0010,再进行与、或运算,将MB0的低4位数0010送入QB0的低4位,使Q0.1=1,而QB0的高4位仍不受影响……,故可达到每按一次按钮,输出口Q0.0~Q0.3 只有一位输出,而且是依次循环输出的控制目的。

    S7-300没有字节循环指令及字节与或指令,采用双字循环移位、字与、字或等指令完成的,故编程显得不易被看懂,但二者思路是一样的,大家按我上述说明去分析一定会看懂的。  

 

本文网址:

相关信息:
版权所有 CopyRight 2006-2017 江苏和讯自动化设备有限公司 常州自动化培训中心 电话:0519-85602926 地址:常州市新北区府琛商务广场2号楼1409室
苏ICP备14016686号-2 技术支持:常州山水网络
本站关键词:常州PLC培训 常州PLC编程培训 常州PLC编程 常州PLC培训班 网站地图 网站标签
在线与我们取得联系