西门子plc程序怎样使用中断程序

西门子PLC是怎样执行中断块的_百度知道
西门子PLC是怎样执行中断块的
西门子PLC是怎样执行中断块的
提问者采纳
执行主程序2,返回主程序继续执行.中断条件触发时,先执行中断程序3.中断程序执行完毕1
其他类似问题
为您推荐:
您可能关注的推广回答者:
西门子plc的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁对 PLC 编程的一点体会 ................................................................................................. 1 关于“4-20ma”的讨论 .....................................................................
.................................. 5 用 S7-200 编程的三个实例的解析之一 ......................................................................... 6 用 S7-200 编程的“时序控制程序”的解析 ...................................................................... 9 用 S7-200 编程的三个实例的解析之二 ....................................................................... 15 用 S7-200 编程的三个实例的解析之三 ....................................................................... 27 用 S7-200/300 编程的三个实例的解析之四 ................................................................ 34 用 S7-200 编程的三个实例解析之五 .......................................................................... 36对 PLC 编程的一点体会PLC 编程如同人写文章一样,同样的文字不同的组合,写出的效果不一样,有的语言 精练,条理清晰,几句话说明问题,有的却相反,簦浇苍饺萌撕俊H绾尾拍苄 出好文章呢?只有深入学习,提高文学素质,多写多练,不断积累,不断总结经验,肯定会 成功的。对 PLC 编程也是一样,也要深入学习,提高编程素质,也要多编多练,不断积累, 不断总结经验。提高编程素质,不仅仅要深入理解每条指令内涵及用法,还要扩大知识面, 使你扩大视野,增强思维和分析问题的能力。现举一例:前两天,从网上看到一网友求助: 其内容为:有个 PT100 的温度传感器 通过 500 欧姆的电阻将 4~20MA 的电流转换成 2-10 的电压信号送到 PLC 模拟量端! h 对应的温度范围是 0~100 度! 则转换公式为 AIW0-6400 T= ----------------X(100-0)+0
这个公式怎么来的啊? D通过 500 欧姆的电阻将 4~20MA 的电流转换成 2-10 的电压信号送到 PLC 模拟量端!‖ 这句话是不是这个意识啊? 如果要用电流信号!就不用 500 欧姆的电阻!直接采取 4~20MA 的电流接到输入端! 如果要用电压信号!就串联 500 欧姆的电阻!采取 2~10V 的电压信号!这个电压是指电阻 分压得到电阻两端的电压吗?》 我给他的回帖是: 《w:我给你说说这个问题,4-20ma 电流通过 500 欧姆电阻将产生 2-10V 电压, 送入 PLC 的模块,从转换公式可知:式中的 6400 这个数是由 2V 转换来的数字量(因为输 入 2V 时 要使 T=0,必需公式的分子项的转换值 AIWO-6400=0 才行),从中又可知:1V 对应的数字量=3200,式中的DAIWO-6400‖值即为 2-10V 输入时模拟块转换的数字量减去 2V 的数字量的值,当输入=10V 时,其值=00,要使此时温度显示值为 100, 就得将此值除以 256,但式中后面又乘(100-0)故公式的分母项上 为 ,及 =25600. 你用的是输入要求 0-10V 电压模拟信号的模拟量转换块,不能直接用 4-20ma 电 流做输入信号。》 这个问题就不是简单用指令编程的问题,它涉及到电学及数学知识,如果没有这方面知识, 是很难理解的。再举一例,有的生产线,不仅要求对设备动作编程,还要能预置参数,对生 产状况能进行实时显示,并能打印出来。考虑设备成本,现场条件及操作者素质,不要配备 工控机及触摸屏,怎么办,外配仪表,找不到合适的,用单片机自行设计,可以。但抗干扰 差,一旦数据丢失 无法恢复,这是设备生产所不容许的。我就用硬件设计了一个电路并做 出印刷板,采用串口输送数据的方式,仅占用 PLC 的几个 I/O 口,就实现了上述功能,用 PLC 的高数计数器进行数据采集,用 PLC 进行数据运算处理,PLC 将结果输出给电路板, 完成了参数设定、数据显示及打印功能,由于 PLC 抗干扰强,且具有断电对数据保护功能, 不会出现数据丢失现象。 了解掌握指令的特性,可以巧妙使用指令去完成一些控制动作。如有一网友求助:D求: 将 0-4mm 数字量转换为 0-10V 模拟量后, 利用西门子 PLC 如何解决将 2mm 以下数字量进 行报警剔除请高手帮忙。‖ 我的回帖:DWWPLC;可以这样做:0-4mm 转换 0-10V,去 PLC ,你一定选用电压转换为 数字量的模块,你应从该模块的参数中,知道 1V 电压应转换的数字量值,2mm 对应的电 压应=5V,其对应的数字量,应等于 5 乘 1V 的数字量,这样你可在编程时 ,用一比较指 令, 2mm 对应的数字量值与 0-4mm 信号输入且转换为数字量的值进行比较, 用 大于 2mm, 通过,小于 2mm 你做删除处理。‖从中可见,用一个比较指令就可解决问题 再如:在钢厂的一些生产线上,当料台前端有钢管,拨料装置就将其拨到辊道上,一般用接 近开关放置在料台前端下方,上方有料时,接近开关吸合,使拨料装置动作,将钢管从料台 拨到辊道上。在编程时,不能简单的用一个接近开关的常开触点直接驱动拨料装置,要考虑 现场实际情况:当钢管从送料处,滚到料台前端时,其冲量很大,碰到挡板时,它不会立即 停下,而是前后摆动几次方能停下来,而且会出现斜放状态,如直接用接近开关触点去触发 拨料装置,就会出现空拨或把钢管拨翻的事故,怎样处理这个问题,我们可以用两个接近开 关,放在料台前端两侧,用这两个开关的常开触点串联去接通定时为 30 秒的通电延时定时 器,再用该定时器的 常开触点去触发拨料装置,即可解决这个问题:1、两个开关必须都 闭合,方可确认钢管不是斜放位置,2、如钢管前后摆动,接近开关的常开触点也会随之通 断通断的变化,这使得定时器,也随之不断的刷新定时时间,重新从 0 开始计时,,直到 钢管稳定时,定时器才可从 0 开始计时,计时 30 秒,定时器动作,触发拨料装置使其动作。 这也是巧妙利用定时器的这个特性:它在得电延时中,如输入断开,停止延时计数,再接通 时,它将重新从 0 延时计数。 再如:有一在线探伤生产线,在辊道上安放一光电开关,当钢管通过它时,其触点闭合,开 始探伤与测长,钢管离开光电开关后,立即将测长值和探伤数据上传给计算机进行处理。由 于钢管是旋转前进,如钢管不直,会摆动前进,往往会使光电开关瞬间闪动,使至 PLC 误 判,以为探伤结束给上位机上传错误数据,解决这个问题,可以用通电延时与断电延时两个 定时器就可解决: 将二个定时器的时间设定为大于光电开关瞬间闪动的时间, 利用断电延时 定时器在断电后需延时一段时间方可断电的特性, 就可解决光电开关瞬间闪动的问题, 但由 于它延长一段时间才断开,使对钢管的测长不准,为此,又增加通电延时定时器,用通电延 时定时器开关动作的前沿,触发一内部的位开关(比如:M1.0)使其置D1‖,用断电延时定 时器的开关后沿触发 M1.0 使其置D0‖,这样,用 M1.0 做测长计数控制门,就可解决测长不 准的问题。 再如:探伤完了的钢管走出探伤区后,需对它进行分选,将不合格的拨到废品筐。如探伤完 后,立即分选,这样情况编程好实现,但现场废品筐的位置离很远的地方,当钢管走到废品 筐时,探伤机已探完 3 或 4 根钢管,即辊道上已存在 3-4 根已探完伤的钢管在运行,如何 准确无误的将不合格的钢管拨到废品筐里, 这对编程是件辣手的问题。 如果你有电子线路设 计基础,就会想到,用移位存储器来实现对多根钢管的质量状态进行实时跟踪,你可以这样 编程:用一个字节存储器,如:MB100,用它做移位存储器(他可记忆八根钢管质量状态), 启动时, 先将它清零, 探伤时, 如发现有伤, 立刻将 MB100 的最低位置D1‖ (即:使 M100.0=1) , 当钢管探伤完毕走出探伤区时,用左移指令使 MB100 左移一位。如果现场是探伤后的第四 根到废品筐位进行分选,编程时应将 M100.3 与废品筐到位的分选开关的常开触点串联,再 去驱动拨料装置。 这样, 当钢管走到废品筐使其到位的控制开关吸合, 这时, 如果 M100.3=1, 将驱动拨料装置动作,将钢管拨入废品筐,如果 M100.3=0,说明此钢管是合格品,驱动拨 料装置不动作,钢管继续在辊道上运行。 通过上面几个举例,可以看出,合理巧妙的使用指令编程,不仅使语句精炼短小,而且控制 动作合理可靠。要达到这样编程水平,就得多编多练,不断的总结经验,不断的积累,积累 不仅仅是自己的经验,也要虚心向有经验的同行学习,多看看别人的程序,吸收好的编程方 法和思路,来不断地提高自己的编程水平。 下面通过一个实例来讲讲如何进行 PLC 编程的:此例也是从网上看到的,由于忘记发帖人 的用户名,没有找到原帖,这里将他的求助内容写出来,供大家分析:一条生产线,对其产 品进行质量检查,如发现有堵塞,立刻发出报警信号,PLC 接到此信号先延时一段时间(设 它为 T1)后,喷枪开始喷气,喷气一段时间(T2),喷枪停喷。要求喷枪能累计喷气,即 要求不能丢掉任意一次报警的喷气时间。这个课题正像发帖人说的那样:D看似简单,可实 施却不简单的‖课题,我对课题的要求进行仔细研究,把可能出现的情形进行分析,画出动 作时序图,自己认为正确无误后,编写出梯形图(用西门子编程语言)。请见下图。图中右 侧为时序图,图中的各个位信号的定义为: I1.0 为报警信号 M5.0 为第一个报警信号 t1 延时时间 M5.1 为第一个报警信号的喷气时间 (当只有一个报警信号,其宽度为 t2,在 M5.0=1 的延时 时间里如出现一个或几个报警信号时,它的结束时间为最后一个报警信号起,延时 t1+t2 的 时间间隔结束)。 M5.2 在只出现一个报警信号时,它=0,如在 M5.0=1 的延时时间里如出现又一个报警信号 时,M5.2=1,它与 I1.0 常闭点串联去接通延时= t1+t2 的定时器 T3,用 T3 的触点触发使 M5.1 与 M5.2 置 0,这里就利用通电延时定时器在它延时时间未结束时器输入端受到一个 使它断开的脉冲影响,他会重新从 0 开始定时计数的特性来实现延长定时时间的。 M5.3 在喷气时间里出现报警信号使 M5.3=1.它连接定时=t1 的 T4 定时器,用它的触点触 发,使 M5.3=0,同时使 M5.4=1,M5.4=1 表示在喷气时间内出现的报警信号的喷气开始。 M5.4 为在喷气中出现的报警信号的喷气时间间隔,M5.4 的常开,与 M5.5 的常闭及 I1.0 的常闭串联接通延时= t2 的定时器 T5,在 M5.4=1 起,延时 t2 时间,没出现 I1.0,T5 吸 合触发 M5.4,使其=0,即喷气结束。如出现 I1.0,就会使 M5.5=1,M5.5=1 的常闭触点断 开,使 T5 不起作用,但 M5.5=1 的常开触点与 I1.0 的常闭串联接通延时= t1+t2 的定时器 T6,如不再出现 I1.0,T6 延时到点,将触发 M5.4,使其=0,即喷气结束。如又出现 I1.0, 将延长喷气结束时间。 Q1.0 为喷枪输出端,它是由 M5.1 与 M5.4 并联后输出的。右图中的 A1、A2、A3、A4 为 喷枪在四种不同条件下的输出波形图。 《说点题外的话:本人在 7 月 17 日,为取朋友的邮件打开自己的电子邮箱,才发现,工控 网于 7 月 12 日给我发来的邮件打开一看,才知道是工控网邀请我写篇关于 PLC 编程经验 的文章,本人甚感惊讶与高兴,我是 7 月初,才注册入会的,只发表一篇文章,只写了几 次对一些网友求助的回帖,真没想到工控网会给我发邮件,让我写文章,太出乎我意料了, 我感谢工控网的负责同志, 并对我的疏忽没能及时回帖向你们表示歉意, 为了感谢你们对我 的信任,我连夜写出这篇文章,为了使写出的东西对初学者真的有点帮助,我写了一些编程 的小实例。由于时间太短,本人水平有限,难免有错误之处,恳请批评指导。 再有,我写完后,就在你们给我的邮件上的回帖上点击,出现D错误信息‖我再按立即登陆, 却说我密码不对,点击发帖也是这样,前几天我登陆上网也总出现密码不对而登陆不上,由 于本人刚刚入会,好多东西都不明白,还清指教谢谢 ! 》关于“4-20ma”的讨论网上看到很多网友提出有关D4-20ma‖的问题,综合大家提出的问题我做如下说明: 1、D4-20ma‖是电流输送信号,它在微机及网络通讯之前就已存在。在没有数字量传送数据 之前,它是仪器仪表对外,特别是远距离传送数据的最好方式。就到今天仍有使用价值,数 字量信号对于远距离传送数据必需有中继站补充能量, 而它不用, 他可传送几公里或更长的 距离,为什么?这里给大家解释一下: 模拟量传送信号只有两种:1、电压信号;2、电流信号。传送信号都是由导线完成的,导 线是有电阻的,距离越长电阻越大,当它传送到终端负载(如显示表),在其上形成电压信 号。这个电压信号,如是用电压信号传送过来的,由于导线电阻与负载电阻是串联的,导线 电阻产生一定的电压降,必然使负载上的电压有损失,造成数据误差,故电压信号不适与远 距离传送数据信号。而电流却不同,它是以电流传送的,导线电阻固然也产生电压降,但电 流值不变,如负载侧选通用 500 欧姆电阻,该电流流过它,必然产生 2-10V 的电压值。不 会产生数据误差。 2、电流输送信号为什么用D4-20ma‖,而不用D0-20ma‖呢?远距离传送数据信号,难免有导 线断线的时候,如传送信号时,发生导线断开,而负载侧(指示仪表方)接收 0 信号,会 误以为停止输送信号,造成显示或记录错误,如用 4 而不用 0 表示 0 输出信号,一旦出现 0 输出,立刻知道导线断了,从而可避免上述错误。那么不用 4 用其他数代表 0 输出?可以, 但工业生产需要标准化,这是人们早已规定的。 3、 PLC 模拟量输入模块, 要求输入信号通常为 0-10V 的电压信号, 如进入 PLC 的是D4-20ma‖ 的电流信号,应如何处理呢?方法有二: (1)、做一块电路板,将 4-20ma 电流转换为 0-10V 电压。将 4-20ma 输入线接该板的对 应输入端,将该扳的 0-10V 输出接 PLC 模拟块的对应输入端。 (2)、选一个阻值为 500 欧精密线绕电阻,与 4-20ma 输入线串联,电阻与输入线连接点 接 PLC 的模拟量输入块的输入信号端,电阻的另一端接 PLC 的输入地即可。 这两种方法第二种最好,因为第一种,必须有一定的电路设计能力的人,才可完成,而且费 工费时,编程时,也得进行运算。第二种只需一个电阻,进入 PLC 时已转换为 2-10V 的电 压信号,编程时只要知道 1V 对应的转换数字量,就可推导出运算公式来进行编程。如:一 电子称,其称重量程为 0-1000K g ,如模拟转换为:1V 对应数字量为 3200,那么 2V 对 应的数字为 6400,而 10V 对应的数字为 32000,要将 2-10V 的数字量显示为 0-1000Kg,其 转换公式应为:1000*(WW-6400) / ()。该转换公式的精度为 1Kg。 如编程者有电路设计能力,不妨可以这样做,设计一个将D4-20ma‖的电流信号转换为 D0-20KHz‖的脉冲信号的电路板,直接将脉冲输出端接入 PLC 的高速计数器的计数输入端, 采用定时采样计数方法,就可不用模拟量输入模块,这样可降低不少设备成本。 有一网友提出这样的求助:如何将 0-20ma 的电流信号转换为 4-20ma 的电流信号。这只能 用硬件来完成, 我给他画了这样的转换电路 (见下图) 现在把它有关注意的地方说明一下: , 该电路是由一个四运放集成块 324 和一个带温度补偿的 6V 稳压管 2DW7B,及二只晶体管 和几个电阻组成。其运放器的 1 脚输出电压应调到 2V,这样 0-20ma 电流流过 400 欧电阻 时,其电阻上端对地产生 2-10V 的电压信号,晶体管 G1 的发射极对地电压总和 400 欧电 阻上端对地电压相等, G1 的集电极的 2K 电阻上的电压与发射极的 2K 电阻上的电压相 而 等,当输入由 0-20ma 变化时,400 欧电阻对地电压由 2-10V 变化,G1 的发射极对地电压 也是 2-10V 变化,G1 的集电极对电源+24V 电压也是 2-10V 变化,G2 晶体管发射极接入 500 欧电阻,使之集电极产生 4-20ma 的变化电流。这里要强调的是,图中 400 欧、500 欧 二个电阻要求阻值准确,而二个 2K 电阻要求阻值相等,只有这样才可确保转换精确。根据 网友提出的问题及我想到的就有这些,欢迎大家参与讨论。用 S7-200 编程的三个实例的解析之一本文的三个编程实例是根据网上网友的求助而用 S7-200 编写出的: 1、网友求助:D那位高人会用一个按常开钮控制电路的起停《PLC》。。。。。。。‖ 2、网友求助::D用一个按钮 X0 控制 Y0 的电路,第一次按下按钮 Y0 变为 ON,第二此按 下按钮 Y0 变为 OFF 请问怎么实现啊,谢谢!‖ 回复:D我提供你们一个的梯形图,就是你们需要的用一个按钮可控制关停的线路,它是用 一个 RS 触发器实现的,用图中的 M2.1 做输出(Q3.0)即可 。这里,我把它的工作原理讲一下:它是由一个 SR 触发器构成的,图中的 I1.0 即为按钮的 输入点,用它的后沿同时触发 SR 触发器的 S、R 端,S 支路再串接由 SR 触发器输出的位 信号(M2.1)的常闭点去触发 S,R 支路也串接由 SR 触发器输出的位信号(M2.1)的常 开点去触发 R,这样处理后,该电路动作十分可靠,这是我常用的线路。如果不用 M2.1 的 触点,改用 SR 触发器输出的触点(M2.0),该线路就不会正常工作,其原因,就是时间争 态问题,这对没搞过电路设计的人是常常想不到的,从表面上看,M2.0 与 M2.1 都表示 SR 触发器输出状态,但从时间上 M2.1 的状态改变却滞后 M2.0 一个扫描周期,从而确保该线 路动作稳定可靠:当按一下按纽,抬起瞬间它同时触发 S、R 端,如此时 M2.1=0,S 端触 发有效,使 SR 触发器反转,其输出由D0‖上跳为D1‖,下一周期,M2.1=1,从而确保无时间 争态使电路动作可靠。‖ 3、网友求助:D怎样利用外部输入按钮,修改某个定时器的里面的数值,要用什么指令啊? 我是新手,忘老师指点 ‖ 回复:D你可以这样做:定时器的定时值,不设具体数字,而用一个字存储器(如 MW100) 来作为定时器的预设时间值, 再用二个按钮接 PLC 的二个输入端, 一个做置数键 (如 I 1.0) , 编程时用 I 1.0 的后沿使 MW100 加 1,即每按一次置数键,使 MW100 内容加 1。再用另一 个作移位键 (如 I1.1) 用 I1.1 的后沿使 MW100 左移四位, , 即每按一次移位键, MW100 使 内容左移 4 位。即可实现你要求的功能。比如:预置D2325‖,你可这样操作:先点击二次 置 数键(I1.0),此时 MW100 的内容为D0002‖再点击一下移位键(I1.1),此时 MW100 的 内容为D0020‖,再点击三次置数键,MW100 的内容为D0023‖,再点击一下移位键(I1.1), 此时 MW100 的内容为D0230‖.....重复四次置数键,MW100 的内容为D2325‖,注意:移位键 只能点击三次,不可点四次。再有为防止按键时打连发,造成置数不准,置数键与移位键应 分别输出给二个断电延时定时器(如 TOF100 与 TOF101)定时为 500ms,用他们的后沿 去使 MW100 加 1,和使其左移 4 位 4。 如若使置数准确明了, 可增加 PLC 的 4 个输出点做置数显示用, 如选用 Q2.0、 Q2.1、 Q2.2、 Q2.3 四个输出点,每个输出点都接一个发光二极管与 2K 电阻串联,再接 0V。它们分别代 表数字 1、2、4、8,用 MW10 的最低位,即 M11.0 输送给 Q2.0,代表数字 1,用 M11,1 输 送给 Q2.1,代表 2,用 M11,2 输送给 Q2.2,代表 4,用 M11,3 输送给 Q2.3,代表 8。这 样当 MW10=0 时,由于 M11.0―M11.3 皆为 0,故使 Q2.0―Q2.3 输出也皆为 0,4 个发光 二极管都不亮。当你点击一下置数键,MW10 加 1,故 M11.0=1,使 Q2.0=1,对应的二极管 亮,表示此时置数为 1,再点击二下,MW10 计数为 3,使 Q2.0 与 Q2.1 对应二极管都亮, 表示此时置数为 3,即用这 4 个发光管的发光代表一位 16 进制数或 10 进制数。这样你置 数时就不会置错,置好数后,按一下移位键,此数被移到上位数位置,而此位数=0,故 4 个发光管灭。下图是用 S7-200 编写的梯形图。 3、网友求助:D 设备: S7-200 CPU224 旋转编码器 Autonics(E50S8-3-T-24) ,编码器每转脉冲数为 250,三相 A、B、Z 测速辊直径 100mm 要求:编码器连接测速辊,目的要计算测速辊的周长每分钟走过多少米‖ 回复:编码器每转一圈,发出 250 的脉冲,测速辊直径为 100mm,其周长为 314mm,则 每两相邻脉冲距离=314 / 250 =1.256mm。如果测速辊旋转速度低于 200Hz,可用普通输入 口计数,否则就得用高速计数器计数,其编程是这一样的:用计数脉冲的后沿,触发一内部 位开关 (如 M3.0) 使其置 1, M3.0 的常开点接定时为 1 分的定时器 T0,,同时使 MB9 与 MW10 清 0,用 M3.0 与计数脉冲串联的后沿,使 MB9 加 1,用一比较器用 MB9 值与 250 比较, 当 MB9=250 时,MW10 加 314 值,同时 MB9 清 0….,当定时器延时 1 分到时,T0 触点 闭合,使 M3.0=0,计数停,用 MB9 的值乘以 1.256,再将其积加入 MW10 中,此时 MW10 的值即为测速辊每分走过的距离。下图即为测速梯形图: 用 S7-200 编程的“时序控制程序”的解析有一网友提出:D想在 S7 200 做个时序控制程序,就是每个时间段控制不同的设定值,做 30 个时间段,时间段和设定值是可设定的,我想的就是时间比较,在时间范围内赋值,但 是 PLC 里 30 个时间段做起来也挺复杂的,能有什么更好更节约 CPU 资源的方法不?大家 交流下,‖ 我的回复:由于你提出的时间段及其对应的控制参数没有固定规律,故没有可节约 CPU 资 源的方法进行编程。这里我用 S7 200 编写的梯形图只设定 5 个时间段,其时间段的时间及 对应控制参数都可设定。供你参考,你看懂后,就可扩展到 30 个时间段。不知你是否用上 位计算机进行时间与参数设定,如果是,下面的梯形图只需的上半部分的左侧图就可以了。 其 5 段时间设定值的存数区为:VW100 CVW108,对应这 5 段时间段的控制设定值区为: VW150―VW158. 如没有上位机,只用 PLC 来完成,我编写的下面的梯形图就可完成你的编程要求。在这个 梯形图中,引用了我编写的D用 S7-200 编程的三个实例解析‖中的二个实例,关于这一部分, 本文就不做详细说明,如有不清楚的地方,可参看上文。本文选用 PLC 的 8 个输入口 (I1.0―I1.7)和 4 个输出口(Q2.0-2.3),其定义为:I1.0---置数键;I1.1―移位键;I1.2― 程序启动/停止键;I1.3―送数键;这四个键为不带自锁式的按键。I1.4―I1.7 这四个键为带 自锁的按键,它们代表送数值的地址。程序动作原理如下: 1、程序的启动运行与停止:PLC 接通电源,由于 SM0.1 的作用,M3.0 置 0,故时序控制 程序停止,按一下 I1.2 键,M3.0 置 1,由于 M3.0=1,接通 T102,延时 VW100 的时间, T102 吸合,使 T103 得电,延时 VW102 时间,使 T104 得电,延时 VW104 时间,使 T104 得电,延时 VW106 时间,使 T105 得电,延时 VW108 时间,使 T106 得电,其常闭触点 断开,使 T102 失电断开,使之 T103―T106 皆断电。由于 T106 失电断开,其常闭触电闭 合,又使 T102 重新得电…开始第二次时控循环。当再按一下 I1.2 时,M3.0=0,整个程序 停止运行。图中的 M3.2―M3.6=1 时,即为第一至第五个时间段出现的时间。这段程序中, 按一下 I1.2,使 M3.0=1。再按一下 I1.2,使 M3.0=0 的工作原理,详见D用 S7-200 编程的 三个实例解析‖中的例 1 说明。 2、置数与送数: (1)、置数:如想设定第一时间段时间为 2 份 20 秒,应置数为D1400‖,先点击一下DI1.3‖ 键,使 MW10 清 0,再点击一下DI1.0‖键,使 MW10=0001,再点击一下DI1.1‖键,使 MW10 左移 4 位,使 MW10=0010,再点击 4 下DI1.0‖键,使 MW10=0014,再点击 2 下DI1.1‖键, 使 MW10 左移 8 位,使 MW10=1400,此时置数完毕(置数的工作原理,详见D用 S7-200 编程的三个实例解析‖中的例 2 说明)。 (2)、送数:第一时间段的地址为:IB1=D####0000‖ 即 I1.4―I1.7 皆为常开状态,应确 保 I1.4―I1.7 皆为抬起状态后,再点击一下 I1.3 键,此时置数值 MW10 送入 VW100 中, 而 MW10 值请 0。控制参数的置数与送数与之一样,只要送数地址正确即可。
上述梯形图对不用上位机或触摸屏的编程者或对只会 PLC 编程者是一个解决编程的办法, 但需用 8 个 PLC 的输入端口及 4 个输出端口,而且操作繁琐,本人建议,如选用我写的D自 制的 PLC 外围组件及应用‖中的显示与打印组件和键盘组件,就可很好的完成,仅占用几个 I/O 口,不仅编程简单,操作简单,而且提供两路 4 位数字显示,且具有打印功能。使你的 控制系统功能更加完善。如有需用者可与我联系,我的邮箱是: 谢 谢! 用按钮可实现对多个参数设定的 PLC 编程的实例解析 对不配备计算机与触摸屏,只用 PLC 编程的人来说,要实现用几个按钮对 PLC 的多个参数 进行设定, 确实是件很难的事儿。 这里我向大家讲解怎样用几个按钮来实现对多个参数设定 的编程方法。我是用 S7 200 编程的,可实现对 8 个参数的设置。其参数设定值的存数地址 为:VW100 、VW102、…. VW114。 它们可以是定时器的设定值,也可以是温度、压力 等参数。 要实现上述功能,需用 PLC 的 5 个输入口(I1.0―I1.4),其硬件线路见图一:1、I1.0―I1.2 这三个输入口各自接一个带自锁的按键,用它们的常开触点串联将设置的参 数送入对应的参数区。见本文图二的右侧梯形图:I1.0―I1.2 三个自锁按键的按下与抬起可 组成 8 个状态:000、001、010、…111。故最多可设置 8 个参数,如:三个按键均未按下, 即 000 状态,此时设置的数值 MW10 将通过 3 个常闭点的串联支路送入 VW100,如按下 I1.0, 001 状态, 即 此时设置的数值 MW10 将通过 I1.0 常开触点与 I1.1 与 I1.2 的常闭点的 串联支路送入数 VW102、…. 2、I1.3 与 I1.4 二个输入端各自接一个不带自锁的按键,其 I1.3 做置数键的输入口,其 I1.4 做移位键的输入口。 3、选用一字存储器 MW10 作为设置数值区,开机时,用 SM0.1 将其清 0。见图二左侧梯 形图: 参数设置编程原理:在设置参数前,应先将 I1.0-I1.2 按键置正确位置,如要设置第三个参 数值,应将 I1.1 键按下,而 I1.0 与 I1.2 为抬起位置,即确保 010 状态。 用置数键 I 1.3 的后沿使 MW10 加 1,即每点击一次置数键,使 MW10 内容加 1。再用移位 键 I1.4 的后沿使 MW10 左移四位,即每点击一次移位键,使 MW10 内容左移 4 位。比如: 预置D2325‖,你可这样操作:先点击二次 置数键,此时 MW10 的内容为D0002‖再点击一下 移位键,此时 MW10 的内容为D0020‖,再点击三次置数键,MW10 的内容为D0023‖,再点 击一下移位键,此时 MW100 的内容为D0230‖.....重复四次置数键,MW10 的内容为D2325‖, 注意:移位键只能点击三次,不可点四次。再有为防止按键时打连发,造成置数不准,置数 键与移位键应分别输出给二个断电延时定时器(如 TOF100 与 TOF101)定时为 500ms, 用定时器的后沿去使 MW10 加 1,和使其左移 4 位。 为了使置数准确明了,增加 PLC 的 4 个输出点做置数显示用,即 Q2.0、Q2.1、Q2.2、Q2.3 四个输出点,每个输出点都接一个发光二极管与 2K 电阻串联,再接 0V。它们分别代表数 字 1、2、4、8,用 MW10 的最低位,即 M11.0 输送给 Q2.0,代表数字 1,用 M11,1 输送给 Q2.1,代表 2,用 M11,2 输送给 Q2.2,代表 4,用 M11,3 输送给 Q2.3,代表 8。这样当 MW10=0 时,由于 M11.0―M11.3 皆为 0,故使 Q2.0―Q2.3 输出也皆为 0,4 个发光二极 管都不亮。当你点击一下置数键,MW10 加 1,故 M11.0=1,使 Q2.0=1,对应的二极管亮, 表示此时置数为 1,再点击二下,MW10 计数为 3,使 Q2.0 与 Q2.1 对应二极管都亮,表 示此时置数为 3,即用这 4 个发光管的发光代表一位 16 进制数或 10 进制数。这样置数时 就不会置错,置好数后,按一下移位键,此数被移到上位数位置,而此位数=0,故 4 个发 光管灭。置数编程的梯形图请见本文图二的左侧D用按钮置入数值程序‖。 从图二右侧D将植入数值送入参数区程序‖梯形图中,移位键 I1.4 连接断电延时 5S 的定时器 T103,其作用是使送数通道有效:只要点击一下 I1.4 键,T103 就导通,MW10 的内容就 送入 VW104 中,不按移位键的时间超过 5 秒,T103 才断电。其触点断开,使送数通道失 效。如上例设置数为D2325‖,MW10=2325,则 VW104 也=2325。如想再设置一个参数, 应先将 I1.0―I1,2 键改置为要设置参数的通道位,如第四个参数,其通道数为D011‖,即 I1.0 与 I1.1 二键按下,I1.2 键抬起,此时 VW104 仍保持D2325‖。MW10 的内容D2325‖又送入 VW106 中,可先点击 4 下 I1.4 键,使 MW10 清 0,再进行新的参数设置。 图 二 上述梯形图对不用上位机或触摸屏的编程者或对只会 PLC 编程者是一个解决编程的办法, 但需用 8 个 PLC 的输入端口及 4 个输出端口,而且操作繁琐,本人建议,如选用我写的D自 制的 PLC 外围组件及应用‖中的显示与打印组件和键盘组件,就可很好的完成,仅占用几个 I/O 口,不仅编程简单,操作简单,而且提供两路 4 位数字显示,且具有打印功能。使你的 控制系统功能更加完善。如有需用者可与我联系,我的邮箱是: 谢 谢! 有一网友提出这样的求助帖: DS7-200 中如何让其中以小段程序在一定的时间内循环执行? 我就是让一台电机在 4 小时内不停的正转 10 分,反转 10 分,4 小时后一直正转. 各位大 侠,帮帮忙,万分感谢。 初学编程,见笑了 ‖ 上图就是根据他提出的要求用 S7-200 编写的梯形图,下面将此程序讲解一下: 1、用 I1.0 作为此程序启动按钮,用 I1.1 作为此程序停止按钮,当按一下 I1.0,使 M2.0=1, M2.1=0,同时将数D12‖送入 MB8 里,这里选用 T100--T103 四个通电延时定时器,T100 与 T102 定时为 10 分, T101 与 T103 定时为 1 秒 作为正反转转换间隔。 这样当 M2.0=1 起, T00 得电,延时 10 分钟,T100 触点闭合,使 T101 得电,延时 1 秒 T101 触点闭合,T102 得电,延时 10 分钟,T102 触点闭合,使 T103 得电,延时 1 秒,T103 动作,其常开触点 吸合的前沿,使 MB8 内容-1,而 T103 的常闭触点断开,使 T100--T103 皆失电断开, 这样 T103 的常闭点又闭合,使 T100 得电进行第二次延时....,重复 12 次,MB8=0,比较 器输出为 1,使 M2.0=0、M2.1=1,M2.0=0 使 T100-T103 循环通电延时结束,而 M2.1=1, 使电机正向运行。直至按一下 I1.1 停止按钮,使 M2.0 与 M2.1 同时置 0,电机停止运行。 2、4 小时=240 分,除以 20 分得 12,即上述 T100--T103 顺序得电断电 12 次,正好为 4 小时。 3、 Q1.0=1 为电机正转, 当按一下 I1.0 按钮, M2.0=1, 其常开点闭合, 此时的 T103 与 T100 的常闭点都闭合,故 Q1.0=1,电机正相运行。延时 10 分,T100 动作,其常闭点断开,使 Q1.0=0,电机停转,延时 1 秒,T101 动作,其常开点闭合,使 Q1.1=1,电机反转,延时 10 分,T102 动作,其常闭点断开,使 Q1.1=0,电机停,再延时 1 秒 T103 动作,其常闭 点断开,使 T100--T103 断电,由于 T103、T101 的常闭点皆又闭合,于是电机又正向 启动....重复 12 此后,由于 MB8=0,比较器输出为 1,使 M2.0=0,使循环停止,但由于 M2.1=1,使电机正转,直到按下 I1.1 停止按钮,使 M2.0、M2.1=0 为止。 有一网友求助:D请教各位大侠,s7-200 系列中模拟量输入 4 到 20 毫安电流(温度传感器) 转换成电压后(2-10v)怎么计算他的数字量转换温度公式是什么。温度测量范围(―100 到+500)‖ 我给他的回帖是:我帮你解释这个问题:根据你提的数据,-100 度对应 4ma,+500 度对 应是 20ma,通过一个 500 欧电阻,将 4-20ma 电流信号转换为 2-10V 的电压信号,去接 0-10V 的模拟量输入的模拟转换块,假设模拟块的参数是:1V 对应转换的数字量为 3200, 则:2 V 对应数为:6400; 10 V 对应数为:32000。设 MW10 为模拟块转换的数字量, VW100 为通过转换公式求出的实测温度值。其数字量转换为温度的公式: VW100=600 * (MW10 - 6400) / 2 这个公式是怎样推导来的,是通过三角形相似定理推导来的,请见下图:用 S7-200 编程的三个实例的解析之二1、有一网友:D求助用西门子 S7-200 编个梯形图。在此,谢谢啦。 PLCcpu224×7 要求: 1、液位机量程 0―3 米,对应输出信号 0―10V,通过电位机进行模拟介入 PLC 模块的模 拟量输入专口。要求 PLC 正确读取液位机的输出信号转换成水池的液位。 2、水泵控制具有手动与自动两种模拟。 3、 自动模拟: PLC 内部根据液位至控制水泵的启动和停止, 水泵在液位上升至 2 米时启动, 降到 1 米时停止。 4、手动模拟:水泵通过按钮手动启动/停止。 5、上升到 2.5 米时,触发液位超上限报警,故障指示灯常亮。 6、对水泵的运行状态进行检测,当水泵运行信号输出后,检测水泵运行反馈信号。如水泵 运行信号,输出 1 秒后未收到水泵运行反馈信号,则故障指示灯闪亮,同时复位水泵运行 信号。 7、故障状态自保持,当故障原因消除且按下复位按钮事,故障复位。 8、ALW0 输入信号 0―10V,对应 PLC 寄存器数量 0―3200D,输入信号 5 路。 I0.0:自动手动模拟装换开关 SA0,当 I0.0 接通时为自动模拟,I0.0 断开时为手动模拟状态。 I0.1:水泵手动启动按钮 SB1,常开点。 I0.2:水泵停止按钮 SB2,常闭点。 I0.3:故障复位按钮 SB3,常开点。 I0.4:水泵运行状态反馈,正常状态下,水泵运行信号输出后接通,水泵运行信号断开后断 开。 Q:输出信号四路, Q0.0:自动模拟指示灯 HL0. Q0.1:水泵运行状态指示灯 HL1. Q0.2:故障指示灯 HL2,超液位报警时常亮,水泵反馈信号异常报警时闪亮。 Q0.3:水泵运行输出 KA3。 谢谢你的大力帮助。 ‖ 我的回复:根据D液位机量程 0―3 米,对应输出信号 0―10V‖可得出:1 米对应 3.33V,2 米对应 6.67V,2.5 米对应 8.33V,再由DALW0 输入信号 0―10V,对应 PLC 寄存器数量 0―3200D‖可得出: 米对应数字量 10667, 米对应数字量 21333, 米对应数字量 26667, 1 2 2.5 按着你的要求,编写如下梯形图,供你参考。动作原理:1、I0.0 自动 / 手动,模拟开关,当改变它的状态时,其前后沿都使 Q0.3=0, 目的是确保进入自动模拟或手动模拟状态时,水泵都处于停止状态。 2、I0.0=0(手动模拟 状态):按一下启动开关 I0.1,使 Q0.3=1,水泵运行,按一下启动开关 I0.2,使 Q0.3=0, 水泵停止。 3、I0.0=1(自动模拟状态):当液面上升 2 米高时,模拟块输出的数字量 ALWO=21333,图中 2M 支路的比较器动作,使 Q0.3=1,水泵运行。同时 T100 得电开始 延时,延时 1 秒时,如 I0.4=1(即水泵运行状态反馈正常状态下),其常闭点断开,不会 触发 M2.0,即不报警,但如 I0.4=0(即水泵运行状态反馈异常状态),其常闭点闭合,将 触发 M2.0,使 M2.0=1,Q0.2 闪动输出,即发出反馈异常报警。当液面高度低于 1 米时, ALWO&10667,第二个比较器动作,使 Q0.3=0,水泵停。当液面高度高于 2.5 米时, ALWO&26667,第三个比较器动作,使 Q0.3=0,水泵停。又使 M2.1=1,Q0.2=1,发出故 障报警。处理完故障后,按一下 I0.3,其 M2.0 与 M2.1=0,复位。 2、网友求助:D 要求:当带锁定按钮按下,接触器能吸合一下,马上又能断开,当按钮复 位后,同一个接触器能吸合一下,马上又能断开。所用器件没有限制,也可用 PLC 编程, (我想了很久也做不出来,请高手指点一下,谢谢!!!) ‖ 我的回复:按着你的要求,分别用用继电器组成电路和用 PLC 编程组成同功能电路,供你 参考。注:图中的电阻 R0、R1、R2 阻值与继电器阻值相近即可。3、有一网友求助:DS7-200 中如何让其中以小段程序在一定的时间内循环执行? 我就是让 一台电机在 4 小时内不停的正转 10 分,反转 10 分,4 小时后一直正转. 各位大侠,帮帮 忙,万分感谢。 初学编程,见笑了‖ 我的回复是: 下图就是根据你提出的要求用 S7-200 编写的梯形图, 下面将此程序讲解一下:1、用 I1.0 作为此程序启动按钮,用 I1.1 作为此程序停止按钮,当按一下 I1.0,使 M2.0=1, M2.1=0,同时将数D12‖送入 MB8 里,这里选用 T100--T103 四个通电延时定时器,T100 与 T102 定时为 10 分, T101 与 T103 定时为 1 秒 作为正反转转换间隔。 这样当 M2.0=1 起, T00 得电,延时 10 分钟,T100 触点闭合,使 T101 得电,延时 1 秒 T101 触点闭合,T102 得电,延时 10 分钟,T102 触点闭合,使 T103 得电,延时 1 秒,T103 动作,其常开触点 吸合的前沿,使 MB8 内容-1,而 T103 的常闭触点断开,使 T100--T103 皆失电断开, 这样 T103 的常闭点又闭合,使 T100 得电进行第二次延时....,重复 12 次,MB8=0,比较 器输出为 1,使 M2.0=0、M2.1=1,M2.0=0 使 T100-T103 循环通电延时结束,而 M2.1=1, 使电机正向运行。直至按一下 I1.1 停止按钮,使 M2.0 与 M2.1 同时置 0,电机停止运行。 2、4 小时=240 分,除以 20 分得 12,即上述 T100--T103 顺序得电断电 12 次,正好为 4 小时。 3、 Q1.0=1 为电机正转, 当按一下 I1.0 按钮, M2.0=1, 其常开点闭合, 此时的 T103 与 T100 的常闭点都闭合,故 Q1.0=1,电机正相运行。延时 10 分,T100 动作,其常闭点断开,使 Q1.0=0,电机停转,延时 1 秒,T101 动作,其常开点闭合,使 Q1.1=1,电机反转,延时 10 分,T102 动作,其常闭点断开,使 Q1.1=0,电机停,再延时 1 秒 T103 动作,其常闭 点断开,使 T100--T103 断电,由于 T103、T101 的常闭点皆又闭合,于是电机又正向 启动....重复 12 此后,由于 MB8=0,比较器输出为 1,使 M2.0=0,使循环停止,但由于 M2.1=1,使电机正转,直到按下 I1.1 停止按钮, 本文用 S7-200 编写的五个实例是根据网上网友的求助编写的,供大家参考。 1、一网友求助:D本人是 PLC 新手,刚学习不到一个月, 现有一个项目~~ 要对目标信号 进行检测计数~~ 信号为 24V 直流~~ 每隔一定的时间进行信号端检测,如果为D1‖即有信 号,则对信号进行计数,并最终输出总共检测到的D1‖的数目~~ 如果在某一次时,没有检测 到信号, 则立即停止工作, 输出已经检测到的D1‖的数目, 并输出报警信号~~ 要怎么实现呢? 这里检测的是一个系统的返回信号, 它只在特定的时间间隔上出现, 这个时间间隔是已知的, 不用去考虑~~如果在时间点上没有检测到,则证明系统故障~~为了是检测系统寿命~~ 急切 PS:采用西门子 S7-200 系列 PLC,STEP7 V4.0 SP6,组态王 6.53,进行上述测试 ~~如果能有梯形图程序就不胜感激了~邮箱
回复:按着你的要求,编写如下梯形图,在组态王数据词典里建立 I/O 整数字变量 VW100, 设可读方式,再设 I/O 字节变量 M2,其 BIT(M2,1)为系统启动工作位,BIT(M2,2)为报警输 出位。在运行时,组态王时时从 PLC 读取 VW100 及 MB2 的数据,出现报警,系统工作停 止,此时的 VW100 值,即为报警前返回信号次数,系统检查完毕始终未出现报警,按下停 止按钮,此时的 VW100 值即为最终检测返回信号值。 2、一网友提出:D谢谢楼主,对我这个新手来说真是好东西。请教楼主用一个按钮控制电机 正反转用 S7-200 怎么做,考虑了很久不太清楚,请您详细讲解一下,谢谢。‖ 我的回复:按着你的要求,我给你编了 S7-200 梯形图,用一个按钮起动电机正反转,又增 加一个自锁按钮作为电机工作停止开关。 其工作原理:I1.1 为自锁按钮,抬起位,其常闭 触点闭合,使 M2.0、M2.1、M2.2、M2.3 皆为 0 状态,此时即使按 I1,0 启动按钮,SR 触 发器也不会反转,故电机停止不动。按下 I1.1 按钮,其常闭点断开,容许电机工作,这时, 如按一下 I1,0,就会使 SR 触发器反转,即 M2.0=1、M2.1=1,M2.0=1 的前沿,触发位开 关,使 M2.2=1、M2.3=0,M2.2=1 接通 T100 定时器,延时 0.5 秒,T100 动作,其常开点 闭合使 Q1.0=1,电机正传运行。如再按一下 I1.0 按钮,使 SR 触发器又翻转,其 M2.0=0, M2.0 的后沿,触发位开关,使 M2.2=0--&T00=0,电机立刻断电,同时又使 M2.3=1, 使 T101 得电,延时 0.5 秒 T101 动作,其触电闭合,使 Q1.1=1,电机反转运行。....这样 用一个按钮就可实现控制电机反正转。如要想使电机停止运转,抬起 I1.1 自锁按钮,I1.1 的常闭点闭合强迫 M2.0、M2.1、M2.2、M2.3 四点都=0,T100、T101 也=0,Q1.0、Q1.1 也=0,电机停止运行。3、网友求助:D 现我有一设备,要求此设备运行到一定时间需要给上位机一个报警信号, 提示需要更换润滑油,但设备厂家的要求是,新设备首次运行 500 小时需要更换一次润滑 油,以后每 3000 小时则需要再次更换润滑油,现我有一 VD 变量存储设备运行时间,且已 存如断电保存寄存器,请教,如何才能用最简单的方法实现以上功能;假设设备运行时间保 存变量地址为 VD100,报警信号为 M10。希望能给出梯形图或 STL 程序,谢谢!‖ 回复:按你的要求编写的梯形图如下图,其工作原理如下: 1、MW0-MW10 设置掉电保护状态,软件下载后第一次运行,M4.0--M4.3 皆处于置 0 状态。 M4.0=0, 使比较器进行的是 MW2 与 500 比较, MW2=500 时, 当 比较器使 M4.0=1、 M4.1=1,向上位机发出换油信号,同时将 MW2 值加入 VD100,再将 MW2 清 0,如此时 断电,再接通电源,由于 M4.1=1,仍发出换油指示。只有上位机发回应答信号,PLC 才将 M4.1 清 0. 2、当第一次 MW2=500 比较器使 M4.0=1 后,M4.0 始终保持 1 状态,所以以后的比较都是 MW2 与 3000 比较,每次比较完后,MW2 值累加到 VD100 中,再清 0,故可多次运行该 程序。4、网友求助:D八个彩灯 Y0~Y7,启动后,灯每秒亮一个,即第一秒亮 Y1,第二秒亮 Y1,Y2, 至全亮。并且可以循环进行,并有暂停和停止功能。(西门子 200)MOV,ROL 我只清楚一 部分的程序,不知其所 ‖ 我的回帖,梯形图如下,供你参考: 动作原理:开机的第一个周期,SM0.1=1,使 S0.1 置 1,进入 S0.1 程序段:按一下启动按 钮 I1.0,使 M2.0=1,其前沿,使 MW9=1 即使 M10.0=1),M2.1=1 使定时器 T100 得电延 时,延时 1 秒,MB10 左移一位,MB10 加 1 ,MB9 加 1,同时使 M2.1=0,M2.2=1,T100 断电,T96 得电延时,延时 10 毫秒,T96 动作,M2.1=1,M2.2=0,T96 断电,T100 得电 延时…..当 MB9=8 时,将 0 MW9, 使 8 个彩灯全灭,同时使 M2.1=0、M2.2=0、M2.4=1, 即 T100、T96 断电,T101 得电延时,延时 1 秒,T101 动作,M2.1=1,M2.4=0,使定时 器 T100 得电延时…..开始第二次循环。I1.1 为暂停按钮,按一下它,使 M2.7=1,其常闭点 断开,程序在原位置停下,再按一下它,使 M2.7=0,其常闭点又闭合,程序从停止位置继 续进行。I1.2 为停止按钮,按一下 I1.2, MW9=0,8 个彩灯全灭,程序结束。 5、有一网友提出D使用定时器实现自由设定时钟脉冲发生器功能(脉冲占空系数 1:1)。
问题 1 对时钟脉冲发生器的原理还是不太理解,能不能解释一下。 2。程序中用定时器是怎么实现时钟发生器功能的???? 3. 题目中说可以自由设定 ?在程序中是怎么实现的?? 总之 , 对这个程序还是不能理解, 如果有高手能给详细解释一下就好了。 期待中。 。 。 。 。 。 ‖ 我的解答: 1、时钟脉冲发生器的原理:当 PLC 工作执行第一条指令时,由于起始时 M0.0=0,故使 T0 得电且立刻吸合, 产生 250ms 正脉冲 (即在 250ms 内, T0=1) T0=1 使 M0.0=1, , M0.0=1 又使程序转移到 N001 处,执行将 MW100―&QW12 的操作。当延时时间=250ms 时,T0 断电,即 T0=0,使 M0.0=0。由于 M0.0=0,使程序不能执行转移程序指令,却使程序执行 MW100 加 1 指令。 下一个扫描周期, 由于 M0.0=0, 故使 T0 得电, T0=1 且立刻产生 250ms 正脉冲,T0=1 使 M0.0=1,M0.0=1 又使程序转移到 N001 处,执行将 MW100―&QW12 的工作…..就是这样,每隔 250ms,MW100 加 1 一次,( MW100 加 1 指令的执行只占 一个扫描周期,即 M0.0=0 的周期)此时的 MW100 相当是 16 位二进制加法计数器,计数 脉冲为间隔 250ms、宽度为 1 个扫描周期的尖脉冲,其频率为 4Hz。每出现一次尖脉冲, MW100 计数加 1 。M101.0 是计数器最低位,它对计数脉冲起二分频作用,故由它输出的 脉冲频率为 2 Hz、周期 0.5S、脉宽 0.25 S。M101.1 是计数器次低位,它对计数脉冲起四 分频作用,由它输出的脉冲频率为 1Hz、周期 1 S、脉宽 0. 5 S,以此类推。 QW12,故 PLC 输出口 QB12 对应 MB100,而 QB13 对应 MB101。如选用 Q13.1 做脉冲 输出,即相当选用 M101.1 做输出,即对计数脉冲 4 分频,故输出脉冲频率=1Hz,如选用 Q13.3 做脉冲输出,即相当选用 M101.3 做输出,即对计数脉冲 16 分频,故输出脉冲频率 =0.25Hz。。。。选用 PLC 不同的输出端,就可以得到不同的输出频率脉冲,这就是可以 自由设定的实现方法。?2、由于程序执行 MW100 3、我认为上面第三个表中标注的不应该是扫描周期,应该为计数脉冲个数,因为 PLC 的扫 描周期是指从指令的第一条开始到最后一条指令为止的所用时间,而不是 250ms。如程序 不长,在这 250ms 时间内,将会出现很多次扫描周期。在这个程序里,M0.0=0,只存在 1 个扫描周期,也就在这个周期里,MW100 执行一次加 1 操作。 4、该程序如将脉冲输出式定时器(SE)改为通电延时式定时器(SD),可不用转移指令,同 样可实现脉冲输出的目的,见下图:对如何使用 S7-200 统计流量的编程的看法 近期网上有二个网友求助用 S7-200 编程来统计流量,很多网友参与讨论,根据二个 网友提出的内容,对如何编程本人提出个人的一点看法: 网友 1 提出:D如何使用 200 统计流量 我使用的一个流量计它能输出脉冲信号, 1000 个脉冲为一个立方的, 也可以输出 4-20 毫安 的电流信号,20 毫安对应每小时 500 立方,我现在的想用 226 的 CPU 来计算一个月该流 量计的总流量,最好直接使用 CPU 模块实现,不建议再使用特殊模块。谢谢了。‖ 网友 2 提出: D自身我用西门子的 S7-200 来做瞬时流量的累计, 用一个定时器每秒来触 发计算的瞬时流量的个数, 可是不行, 而由的扫描周期来确定累计的流量得个数又不够准确, 那位高人给于指点,如何准确计算累计流量啊,谁有现成的程序,请寄 ,谢谢了!!!‖ 二位网友提出同样问题:即D如何使用 S7-200 编程实现统计在某段时间内的总流量‖。 我们知道:用 1 秒时间对输出脉冲进行计数采样,其计数值即为瞬时流量,N 秒内的瞬时 流量的累加值即为 N 秒内的总流量。若求某段时间的总流量,很多人都是采用先求出瞬时 流量, 再对某段时间的瞬时流量进行累加的方法来求总流量, 这种方法如用单片机或计算机 可以,但用 PLC 进行定时计数,由于扫描周期的影响,瞬时流量是测不准的。正像网友 2 说的D我用西门子的 S7-200 来做瞬时流量的累计,用一个定时器每秒来触发计算的瞬时流 量的个数,可是不行,而由的扫描周期来确定累计的流量得个数又不够准确,‖。网友 2 后 来用高速计数器采用定时中断的方法得以实现。 我认为:如果求瞬时流量不是为了闭环控制提供反馈信号而是为了进行累加求总流量 的话,可不用求瞬时流量,直接对流量计的输出脉冲进行连续计数就可以了。具体编程思路 是这样的: 1、如输出脉冲的最高频率低于 200HZ,可用普通输入点做计数信号的输入端,用它 的前沿触发内部一双字存储器进行加一运算。如高于 200HZ,就得选用带启动、复位控制 的单相增计数方式的高速计数器进行计数。 2、 如以网友 1 提出的D…..流量计它能输出脉冲信号, 1000 个脉冲为一个立方‖为依据, 可知其一个脉冲为 0.001 立方的流量.。即累计的流量值的精度为 0.001 立方。如统计较长 时间的总流量其精度不需要这么高,比如要求为 0.1 立方,此时的计数值应除以 100,其商 才为累计流量。 3、一般流量计输出脉冲信号幅度为 5V 或 12V,而 PLC 输入端要求输入信号的幅度 为 24V,故流量计的输出脉冲信号必需先做电平转换变成 24V 脉冲信号后,方可接入 PLC 的计数输入端,这样就得做一块电路板。如果流量精度为 0.1 立方,可在电路板上的电平转 换线路前再增加一块 4518(双十进制计数器)集成块,来构成二位十进制计数器,先对流 量计输出脉冲进行计数,其输出的脉冲相当对流量计输出脉冲进行除以 100 的运算处理, 再对它进行 24V 电平转换,去 PLC 计数口,这样进入 PLC 计数端的脉冲频率一定低于 200HZ,就不需要用高速计数器计数,可大大的简化编程程序。见下图:程序是这样运行的:按一下累计计数启动开关 I2.1,立即将此时的日期时间(年、月、 日、 存入 VB10-VB13 中, 时) 同时将 M2.0 置 1, M2.0=1 的前沿, VD100 清 0, M2.0=1 将 在 时间内,VD100 对计数脉冲(I2.0)进行累计计数(I2.0 的后沿使 VD100 内容加 1),其 值即为从启动计数开始,时时的累积流量。经过一定时间,如按下停止开关 I2.2,立即记 下此时的日期时间,同时使 M2.0=0,使 VD100 停止计数,此时 VD100 的值即为从起启动 计数的日期时间到停止计数的日期时间的总流量。 这种记累计流量不仅编程简单, 而且累计 计数精度高, 因为它是连续不间断的计数, 能产生计数误差只在 M2.0 的前后沿的二个瞬间, 采用瞬时流量累加的方法,相比它不仅程序繁琐,而且计数精度要低,其原因,就是每次求 瞬时流量的定时中断的前后沿,都会产生计数误差,多个瞬时流量的累加值产生的误差,必 然要比一次性计数所产生的误差要大。 对于要求流量精度高 (如以流量计的输出脉冲为最小 计数单位或 0.01 立方为最小计数单位),此时的计数脉冲频率为 200HZ 以上时,可选用高 速计数器进行连续计数, 在硬件处理上可只用电平转换电路, 或只用一位十进制计数器在经 过电平转换,在软件处理:将上图中的 VD100 加 1 语句改为将高速计数器的计数值送入 VD100 即可 。用 S7-200 编程的三个实例的解析之三本文三例都是本人在网上回答网友的求助贴时编写的,其中第三贴把和其他网友辩论 编出的梯形图是否正确的内容也写进来,供大家分析参考,有不对之处,望批评指正。 一、网友求助:D如何使用 200 统计流量 :我使用的一个流量计它能输出脉冲信号, 1000 个脉冲为一个立方的,也可以输出 4-20 毫安的电流信号,20 毫安对应每小时 500 立 方,我现在的想用 226 的 CPU 来计算一个月该流量计的总流量,最好直接使用 CPU 模块 实现,不建议再使用特殊模块。谢谢了。‖ 回复: 《 一》、使用 4-20ma 的电流信号求统计流量: (一)、你可选用 4-20ma 电流输入模块,将电流信号接在模块的电流输入端,如没有, 可选用 0-10V 电压输入模块,不过要多用一个 500 欧的精密电阻并接在电压输入端与地之 间,再将电流输入信号接在电压输入端,这样 4-20ma 电流流过 500 欧电阻时,就转变为 2-10V 的电压信号。‖ (二)、求出瞬时流量的公式: (1)、从模块的参数可知:20ma(或 10V)模块对应的转换数字量设它为 W20, 你就可以求出 4ma 对应的数字量 W4: W4 =W 20 ×4 ÷ = W 20÷ 20 5。 (2)、20 毫安对应每小时 500 立方,那么 20 毫安对应每秒钟为 500 ÷
立方,而D0.139 立方‖即为流量计输出 20ma 时的瞬时流量,此时对应的模块的数字量为 W 20。而流量计输出 4ma 时对应的瞬时流量=0,但模块此时的数字量为 W 20÷ 5,即瞬时流 量 N 与对应的数字量 W 的关系是一条不过 0 点的直线,可推导出瞬时流量 N 的公式:N = 0.139×(W - W 20÷ (W 20- W 20÷ 简化为: 5)÷ 5) N = 1.39×(W -0.2× W 20)÷(8×W 20) ……(1) (三)、PLC 程序处理:采用时间中断的方式进行瞬时流量的采集与累加:中断为秒 中断:即每隔 1 秒从模块读取一次数据,按上式(1)求出瞬时流量 N,再把 N 值加在累积 区(如 VD100)中,即可。 《 二 》用脉冲计数方式求统计流量 我们知道:用 1 秒时间对输出脉冲进行计数采样,其计数值即为瞬时流量,N 秒内的 瞬时流量的累加值即为 N 秒内的总流量。若求某段时间的总流量,很多人都是采用先求出 瞬时流量, 再对某段时间的瞬时流量进行累加的方法来求总流量, 这种方法如用单片机或计 算机可以,但用 PLC 进行定时计数,由于扫描周期的影响,瞬时流量是测不准的。我认为: 如果求瞬时流量不是为了闭环控制提供反馈信号而是为了进行累加求总流量的话, 可不用求 瞬时流量,直接对流量计的输出脉冲进行连续计数就可以了。具体编程思路是这样的:1、 如输出脉冲的最高频率低于 200HZ,可用普通输入点做计数信号的输入端,用它的前沿触 发内部一双字存储器进行加一运算。如高于 200HZ,就得选用带启动、复位控制的单相增 计数方式的高速计数器进行计数。假设 1000 个脉冲为一个立方‖,可知其一个脉冲为 0.001 立方的流量.。即累计的流量值的精度为 0.001 立方。如统计较长时间的总流量其精度不需 要这么高,比如要求为 0.1 立方,此时的计数值应除以 100,其商才为累计流量。3、一般 流量计输出脉冲信号幅度为 5V 或 12V,而 PLC 输入端要求输入信号的幅度为 24V,故流 量计的输出脉冲信号必需先做电平转换变成 24V 脉冲信号后, 方可接入 PLC 的计数输入端, 这样就得做一块电路板。如果流量精度为 0.1 立方,可在电路板上的电平转换线路前再增加 一块 4518(双十进制计数器)集成块,来构成二位十进制计数器,先对流量计输出脉冲进 行计数,其输出的脉冲相当对流量计输出脉冲进行除以 100 的运算处理,再对它进行 24V 电平转换,去 PLC 计数口,这样进入 PLC 计数端的脉冲频率一定低于 200HZ,就不需要 用高速计数器计数,可大大的简化编程程序。见下图: 程序说明:按下启动开关 I2.1,读取此时的日期时间存入 VB10(年)、VB11(月)、 VB12(日)、VB13(时)中,I2.1 的后沿使 V2.0=1,V2.0 的前沿使计数器 VD100 清 0, V2.0=1 时泵启动,流量计计量开始。如运行中断电,VD100、V2.0 及 VB10、VB11 等均 具有断电保持原数据、状态的功能,所以复电后,不用按启动开关,由于 V2.0=1,PLC 自动 进行累计流量。如累计流量结束,按一下停止按钮 I2.2J 就可:I2.2=1,立即将此时日期、 时间出入 VB20、VB21、VB22、VB23 中,同时使 V2.0=0,累计流量结束。 二、网友求助:D如何用程序实现泵每五分钟起一次,工作五分钟后,再停五分钟, 循环工作。‖ 回复:下图是按着楼主要求用 S7-200 编写的梯形图,图中用一个按钮做电机运行与 停车开关(I 0.0) 不管哪种 PLC 都有通电延时定时器,你都可以按这样思路编程。 三、网友求助:Ds7-200 程序,一个输入,输出时四个输出中的任意一路输出, 有什么简单的方法?欢迎大家热烈发帖。‖ 回复:Ds7-200 程序,一个输入,输出时四个输出中的任意一路输出,有什么简单的 方法?欢迎大家热烈发帖。‖, 这确实是个不错的帖子,我也没用什么随机函数,凭着 PLC 由于扫描周期影响定时器的定 时精度的考虑,用 S7-200 编写了楼主提出的控制要求的梯形图,并在 S7-200 上运行,证 明程序符合楼主要求。梯形图如下,有兴趣的网友可以试用一下。 (原图)(后改图) ***有网友提出异议: 1: 这个程序的输出不具备随机性,因此不能说符合楼主要求。简单地说:如果某一时刻 I0.0 输入 ON,输出为 Q0.0,那么 15ms 后再次输入,则输出一定不是 Q0.0 了。这就不符合随 机性要求。随机性的原则是:无论何时输入 I0.0,输出 Q0.0-Q0.3 的机会相等。 2: 楼上的程序未必是真正意义上的随机输出。 有限个输出符合要求不意味着总能随机输出。 还 是用随机数输出的指令,让 plc 给出在(0,1)范围内的伪随机数 RAND(x),用取整指令对 4*RAND(x)+1 取整, 其结果一定是 1,2,3,4 中随机的某一个, 再让此随机结果分别与 1,2,3,4 比较,采用分支程序根据比较结果把程序执行引向不同的输出 我的答复: 根据楼主要求:D一个输入,输出时四个输出中的任意一路输出,‖就是 说在输入信号=1 时,Q0.0-Q0.3 四个输出端中必须有一路输出=1,且不是有规律出现,我 是按这个原则编程的。11 楼你说D15ms 后再次输入,则输出一定不是 Q0.0 了‖你对 T32 的 用意理解错了,这里用 T32 构成振荡器,是在输入信号 I0.0 =1 的后沿起的 300MS 内,对 MB0 计数用的,300MS 后 MB0 计数停止,由于这种定时计数不稳定性,使 MB0 每次计数 结果不相等,但 MB0 的低二位(即 M0.0 与 M0.1 二位值)的状态只有四种:00、01、10、 11,按梯形图四路输出支路的 M0.0、M0.1 的组合,不管计数值为多少,总有且只有一路 为串联通道状态,当下一个输入信号到来时间内(即 I0.0=1)使 M2.0=1,这样四路输出中 总有且只有一路输出=1,当输入信号结束后的 300MS 内 MB0 又计数,计数停止,M0.0 与 M0.1 的状态是随意的,但只能在 0-3 之间变化,也就是说总有一路 M0.0 与 M0.1 串联处于 通道状态的。我认为本梯形图符合楼主要求。从统计学观点来看,多次的输入,其四路出现 导通的概率应该是相等的。 ****网友再提出异议: 你还是没有理解D随机性‖。就你的程序,再举个特殊点的例 子来说明我在 11 楼的观点:如果某一时刻 I0.0 输入时,输出为 Q0.0,5ms 时 I0.0 断开, 10ms 时再次输入 I0.0,那么按照你的程序,输出是确定的:不是 Q0.0 就是 Q0.1,而不可 能是 Q0.2 或 Q0.3,因为这期间 T32 最多翻转一次。这就谈不上随机性了。 再回复: 15 楼网友:你说的问题我明白,但楼主要求用 S7-200 编程,PLC 通常内 部存储器计数频率很低, 所以才用 15ms 定时器搭成振荡器,如果想要是输入信号宽度为几 ms,可用高速计数器计数,这样就得用外输入计数脉冲来代替 T32,而且最高为 20KHz。 如你再要求输入脉宽为几微秒,PLC 根本不能胜任,就得用计算机编程了,而计算机也有 最高频率限制,所以不能把问题太绝对化。(将 T32 的定时时间改为 1ms,程序仍能正常工 作,这样几毫秒输入脉宽就能正常运行) ****网友再提出异议: 不是我要求脉宽为几微秒,只是举个例子而已。无论 T32 的定 时时间是 15ms 还是 1ms,性质是不变的:即不能保证任意时刻 I0.0 输入时 Q0.0-Q0.3 输 出的概率相等。 再回复:17 楼网友说:D不是我要求脉宽为几微秒,只是举个例子而已。无论 T32 的 定时时间是 15ms 还是 1ms,性质是不变的:即不能保证任意时刻 I0.0 输入时 Q0.0-Q0.3 输出的概率相等。 ‖对此结论我不理解, 如果你的依据来源于 15 楼你说的D如果某一时刻 I0.0 输入时,输出为 Q0.0,5ms 时 I0.0 断开,10ms 时再次输入 I0.0,那么按照你的程序,输 出是确定的:不是 Q0.0 就是 Q0.1,而不可能是 Q0.2 或 Q0.3,因为这期间 T32 最多翻转 一次。这就谈不上随机性了。‖。如果是这样说明你对程序没有看细,就以你说的输入条件, 第一次输入,MB1 可能计数为 0 或 1,当第二次输入时,MB1 的计数值不是仍为 0 或 1 而 是 0、1 或 2,为什么?MB1 计数是累加计数的而不是从 0 计数,怎么会不可能出现 Q0.2 或 Q0.3 为输出呢?我们还是以楼主的求助内容来讨论问题吧:楼主说Ds7-200 程序,一个 输入,输出时四个输出中的任意一路输出,有什么简单的方法?‖。1、用 S7-200 编程,就 限制了输入信号的脉宽不能小于 5ms(普通输入口对信号的前后沿滞后时间为几毫秒,用 其做计数输入口只能计 200HZ 以下的脉冲频率),2、输入信号的宽度是随意的,即使脉 宽相同,由于扫描周期的影响,再加上 MB1 为累加计数,故使 MB1 的每次计数值波动性 大,即 MB1 最低二位数(M1.0、M1.1)的状态为不固定的。从统计学观点来看,多次的输 入,其四路各自出现导通的概率应该是相等的。这和抛钱看正反面的概率是一样的。3、真 正意义上的随机数 (或者随机事件) 在某次产生过程中是按照实验过程中表现的分布概率随 机产生的,其结果是不可预测的,是不可见的。而计算机中的随机函数是按照一定算法模拟 产生的,其结果是确定的,是可见的。我们可以这样认为这个可预见的结果其出现的概率是 100%。所以用计算机随机函数所产生的D随机数‖并不随机,是伪随机数。 我是本着上述二个原则编写的程序, 通过上机运行, 多次输入, 且输入脉宽长短变化, 其四路输出是随机的,所以我仍坚持我编写的梯形图符合楼主要求。 ***网友再提出异议: 1、10 楼的程序是否改过了,我记得原来有两个定时器。 2、对于D如果是这样说明你对程序没有看细,就以你说的输入条件,第一次输入,MB1 可能计数为 0 或 1,当第二次输入时,MB1 的计数值不是仍为 0 或 1 而是 1 或 2, 为什么? MB1 计数是累加计数的而不是从 0 计数, 怎么会不可能出现 Q0.2 或 Q0.3 为输出呢?‖的回 复:(针对先前的程序) 假定某一时刻 I0.0 输入时,Q0.0 输出,说明 MB0 此时=0。再过 10ms,I0.0 再次输入并持 续 5ms,此时段内 T32 可能翻转,也可能不翻转,但翻转最多一次。故 MB0 或者是 0,或 者是 1,而不可能是 2 或者 3. 3、针对现在改过的程序:Q 的输出与 I0.0 的持续时间有关,是可以人为控制的。因此 也不是随机的。 再回复: 最终定下的梯形图如下,望有条件有兴趣的网友在 S7-200 PLC 上运行试验, 看看能否符合楼主的要求。 梯形图是做过改动,只是简化程序,缩短二次输入的间隔时间,原程序是 I 0.0 驱动 断电延时定时器 T100, I 0.0 由 1 变 0 起到 T100 由 1 变 0 止的间隔时间对 MB0 进行计 用 数, 这是考虑手动按钮做输入, 其二次输入的最小间隔时间在几百毫秒以上才选用这种控制 方式的。考虑到你在 5 楼提出D如果某一时刻 I0.0 输入时,输出为 Q0.0,5ms 时 I0.0 断开, 10ms 时再次输入 I0.0,‖,即二个输入信号间隔 10ms,由于此时 T100 还没有变 0,会使 第二次输入失效,故将D原用 I 0.0 由 1 变 0 起到 T100 由 1 变 0 的间隔时间对 MB0 进行计 数‖的计数方式改为D在 I0.0=1 的时间对 MB1 进行计数,I0.0 的后沿将 MB1 的计数结果送 入 MB0‖,这样就可缩短二次输入信号的间隔时间,而且也简化了程序。但D一个输入,输出 时四个输出中的任意一路输出‖的设计思路并没变。现在要论^一下你在 21 楼说的话D假定 某一时刻 I0.0 输入时, Q0.0 输出, 说明 MB0 此时=0。 再过 10ms,I0.0 再次输入并持续 5ms, 此时段内 T32 可能翻转,也可能不翻转,但翻转最多一次。故 MB0 或者是 0,或者是 1, 而不可能是 2 或者 3.‖, 前面我讲过几次,MB0 或 MB1 是累加计数,不是清 0 后计数,假设在输入时间内, MB1 最多计一个数,MB1 从 0 开始,第一次计数值为 0 或 1,第二次为 0 或 1 或 2,第三 次为 0 或 1 或 2 或 3,第四次为 0 或 1 或 2 或 3(或 4 时即为 0)。。。。怎么D不可能是 2 或者 3‖呢?多次输入,使 MB1 的最低二位出现 0、1、2、3 的几率相等,这就是我编程的 依据,如你有充足的理论依据能驳倒我的编程思路我欢迎,如还像前面的说法,我认为就此 停止吧。 对 S7-200 较长时间定时如何实现的解答 有一网友求助:D本人在做项目过程中,用 S7-200 实现对水泵的控制。其中有一个问 题:当变频器出现故障,需重新启动水泵,而此时要求启动运行时间最短的那个,则需要对 每台水泵的运行时间进行监控。而 PLC 定时器即使和计数器结合起来实现时间定时,仍难 以满足几周或几个月的定时时间。 我该如何将此功能在 plc 中实现??盼回复, 不胜感激! ‖ ! 答复:S7-200 有时钟指令,如读指令DREAD_RTC‖用它将此时刻的日期、时间存入数 据区(如 VB10、VB11、VB12、VB13…..)中,其 VB10 为年的末二位数,VB11 为月份 数,VB12 为日数,VB13 为时数,VB14 为分数….,再用比较指令将取得日期、时间值与 你规定的日期时间值比较,当二者相同时,即延时时间到,去触发一个内部位开关使其置 1 (如 M2.0=1)即可。 现举例说明:现在时间是:2010 年 10 月 23 日 8 时,你可将 10、10、23、08 等数 以 16 进制数的形式,分别置入 VB20、VB21、VB22、VB23 等数据区里,按下定时启动按 钮DI 1.0‖,使 M2.1=1,PLC 读取时钟开始,即每隔 1 秒读取一次,存入 VB10---VB13 中,在编程上再用 4 个比较指令,分别进行比较,比较值是:VB10 对 VB21 比较,VB11 对 VB21 比较,VB12 对 VB22 比较,VB13 对 VB23 比较,当 4 个比较器比较值都相等时, 即时间到,可使 M2.0=1,见下图:该程序的定时精度为 1 小时,如觉得不够,可再增加分比较,这样定时精度可为 1 分 钟。还有稍微复杂一点的编程,即只预置延时时间(几周、几个月、甚至几年),预置好后, 按启动按钮,PLC 立刻取出此时刻的日期、时间,PLC 根据预置的时间进行计算,求的到 期的日期与时间,再分别进行年、月、日、时、分的比较,这样编程的定时精度可小于等于 1 秒。 比较时间值的设置, 可用上位机或触摸屏设置。 如只有 PLC, 还要想外置数也可实现, 怎样编程这里就不讲了, 可参考我在网上写的D用外设按钮可实现对多个参数设定的 PLC 编 程的实例‖一文,那里有梯形图及详细说明。用 S7-200/300 编程的三个实例的解析之四一、网友求助:D由于以前没有接触过 S7-200 系列,编程不太熟悉。 现在需要控制 1-9 号共 9 个阀门循环起停,要求:1 号一直常开,2 号-9 号分 4 组,每组 2 个。先开第一组(2 个阀门)20S 后停止,开第二组,也开 20S 后停止,然后开第三组, 也开 20S,然后停止,最后开第 4 组,也开 20S,然后停止,然后再开第一组,如此往复 循环着开。不知道该如何编写程序,还请各位大侠多帮忙,越详细越好。‖ 回复:楼主:按着你的要求编写如下程序,你看可行否? 二、网友求助:D如何在 S7-300 中实现时间累积及断电后继续计时?例如:有两个电 机 轮流运行, 运行 2 天后停止轮换到 B 运行, 运行 2 天后轮换到 A, A B 工作中间暂停 (断 电)后恢复运行的话,运行时间承接原来时间继续累积,直至时间里累到 2 天。‖ 回复:在 S7-300 的 PLC 硬件组态时设置时钟脉冲,用 MB100 作为时钟存储器,那 么 M100.5 将产生频率为 1HZ 的秒脉冲输出。选用 DB1.DBD20 做加法器,DB1.DBD30 置 数为 1,做加数用,DB1.DBD34 置数为#16#2A300,即十进制数:172800(秒)表示二日 的时间值,用它做比较值与 DB1.DBD20 的计数值比较,如 DB1.DBD20 值&=#16#2A300, 表示时间到比较器输出为 1, DB1.DBX0.0=Q2.0=0(电机 A 停)DB1.DBX0.1=Q2.1=1(电 使 , 机 B 运行)。。。DB1.DBD20 及 DB1.DBX0.0 与 DB1.DBX0.1 位信号在 PLC 断电时,它能 保持断电前的计数值及自身状态,复电后,程序将按断电前状态继续工作。详见下图: 三、有一网友求助:D有那们大虾知道西门子 200PLC 要写一个数据移位怎么写?就像 三凌的DWSFR‖指令一样,工作一次把当前值移入下一个寄存器。 比如。 工作一次当前值 VB0 的数据移入 VB100, 再工作一次把 VB0 的数据移入 VB100, VB100 的数据移入 VB101, 把 以此类推!‖ 我的回复:编程的思路是这样:假设你有 N 个字节数据寄存器需要移位处理,在存入 新数据之前,应先将原数据依次向后移动一个字节,再把新数据存入第一个字节里。为了确 保各个字节的数据在移位时的正确无误,移位的顺序应该由后向前,即:先将 N-1 字节数 据移到 N 字节,再将 N-2 移到 N-1。。。直到将第一字节数移到第二字节里,之后方将新 数据送入第一字节。S7-200 指令,最大的移位是双字,你可以从最后字节 N 向前每 4 的字 节定义一个双字,最后可能剩下 3 个以下的字节,你再定义它为字或字节。编程时先将最 后的双字右移 8 位,这样就完成了将 N-1 移位到 N,N-2 移位到 N-1, N-3 移位到 N-2,再 将它前个双字的 N-4 送入 N-3。 再将前一个双字也做右移 8 位处理, 再将它前一个双子的最 后字节送入该双字的第一字节里。 。 。 最后将新数据送入最前的第一字节里。 下面举一例子: 有 8 个字节需要移位处理,你可这样编程:先设第一字节地址为 VB100、其他字节地址依 次为 VB101、VB102,,,,, VB107,可分为二个双字存储器:VD100、VD104,当须将当前值 需存入数据区时,先将 VD104 左移 8 位,再将 VB103 的内容送入 VB104,再将 VD100 左 移 8 位,再将新的工作当前值 MB10 送入 VB100 即可。下面就是梯形图,供你参考。用 S7-200 编程的三个实例解析之五本文三个编程实例都是在网上回答网友的求助而编写的,现重新整理,供网友参考, 有不当之处,请批评指正。 一、一网友求助:D在文本显示器上设定一个数据,也就是需要的吨数,启动 PLC, 到我设定的吨数后,停泵就可以啦,使用硬件有西门子 s7-200cpu226,模拟量模块 EM235, 文本显示器,电磁流量计,泵各一 个。这个程序怎么编?请各位师傅帮帮忙?文本显示器也 连好啦,文本显示器上怎么设置也解决啦。‖ 又一网友求助:D我需要流量信号转换成数字信号,对应的数字信号累加成实际流量吨 数输出,然后再采用比较设定吨数到达后停泵,对应的流量量程是 80 立方。输入的流量信 号是 4-20MA,请麻烦你给我编一下程序。谢谢啦。‖ 回复: 1、EM235 模块当输入信号为 20MA 时对应的数字量 AIW4 =32000,对应的流量为 80 立方 / 秒 = 8 立方 / 0.1 秒。而输入信号为 4ma 时,对应的数字量=6400,而对应的 流量=0,转换公式为:Q=8*(AIW4-6400) / () 即: Q = 8 * (AIW4 - 6400) / 25600 (单位:立方 / 0.1 秒) ----(A) 2、编程处理: (1)、采用 0.1 秒时间中断 (2)、中断程序:先取模块的数字量 AW4 送入 MW0 中,按公式 A 计算瞬时流量 Q,再将其加入累计流量 VW100,返回。 (3)、主程序:I1.0 为启动开关,按下 I1.0,Q2.0=1,泵启动,流量累计开始。 I1.1 为停止开关,按下 I1.1,Q2.0=0,泵停,流量累计停. I1.2 为累计流量 VW100 清 0 开关,按下 I1.2,将累计流量 VW100 清 0. VW102 为预置比较值。由文本显示器设置。 动作说明:按下 I1.0,泵启动,流量累计开始的同时,VW102 将时时于 VW00 比较, 当 VW100 大于或等于 VW102,Q2.0 置 0,泵停。 再有:VW102 的预置,及 VW00 的清 0 都可在上位机或触摸屏上进行。详见下图: 二、网友求助: D本人在做项目过程中,用 S7-200 实现对水泵的控制。其中有一个 问题:当变频器出现故障,需重新启动水泵,而此时要求启动运行时间最短的那个,则需要 对每台水泵的运行时间进行监控。而 PLC 定时器即使和计数器结合起来实现时间定时,仍 难以满足几周或几个月的定时时间。我该如何将此功能在 plc 中实现??盼回复,不胜感 激!!‖ 答复:S7-200 有时钟指令,如读指令DREAD_RTC‖用它将此时刻的日期、时间存入 数据区(如 VB10、VB11、VB12、VB13…..)中,其 VB10 为年的末二位数,VB11 为月 份数,VB12 为日数,VB13 为时数,VB14 为分数….,再用比较指令将取得日期、时间值 与你规定的日期时间值比较,当二者相同时,即延时时间到,去触发一个内部位开关使其置 1(如 M2.0=1)即可。 现举例说明:延时到的时间是:2010 年 12 月 23 日 8 时,你可将 10、12、23、08 等数以 16 进制数的形式,分别置入 VB20、VB21、VB22、VB23 等数据区里,按下定时启 动按钮DI 1.0‖, M2.1=1, 使 PLC 读取时钟开始, 即每隔 1 秒读取一次, 存入 VB10---VB13 中,在编程上再用 4 个比较指令,分别进行比较,比较值是:VB10 对 VB21 比较,VB11 对 VB21 比较,VB12 对 VB22 比较,VB13 对 VB23 比较,当 4 个比较器比较值都相等时, 即时间到,可使 M2.0=1,见下图:该程序的定时精度为 1 小时,如觉得不够,可再增加分比较,这样定时精度可为 1 分钟。还有稍微复杂一点的编程,即只预置延时时间(几周、几个月、甚至几年),预置好 后,按启动按钮,PLC 立刻取出此时刻的日期、时间,PLC 根据预置的时间进行计算,求 出到期的日期与时间,再分别进行年、月、日、时、分的比较,这样编程的定时精度可小于 等于 1 秒。 比较时间值的设置,可用上位机或触摸屏设置。如只有 PLC,还要想外置数也可实 现, 怎样编程这里就不讲了, 可参考我在网上写的D用外设按钮可实现对多个参数设定的 PLC 编程的实例‖一文,那里有梯形图及详细说明。 一网友提出异议:D由于 S7-200 的时钟是软件时钟,默然配置是没有电池,是靠电容 保持数据。这就造成停电几天后系统时间回归至出厂状态。为可靠,应尽量不要使用系统时 间作为控制用变量。使用其它合适方式更恰当。‖ 再答复:感谢 2 楼的提醒,编程时未考虑多日断电的情况,此程序可以这样修改:见 下图: 增加一条写入当前日期时间的语句,即在未按启动延时前,把当前的日期时间置入 VB20--VB27 中,即按 I1.2 写入按钮,将 VB20-VB27 置入 PLC,再将到期的日期时间 置入 VB20--VB27 中,注意 i 不要再按写入按钮 I1.2。应按启动按钮 I1.0,使 M2.1=1,读 取当前时间与设定的到期日期时间比较。。。这样就可解决长期断电使时钟归原位的问题。 除此方案外,还有第二方案,请见下图:按下启动按钮 I0.1,使 V10.0=1,其前沿使双字存储器 VD100 清 0,再使用 SM0.5 秒脉冲对 VD100 进行加 1 运算,VD100 的值时时与设定的到期时间值 VD104 进行比较, 当 VD100&=VD104 时,使 V10.0=0,结束延时,同时使 V10.1=1,去执行该做的操作。在 未到延时时间时断电,不管断电多长时间,再通电工作时,由于 VD100、V10.0 等 V 区数 据有断电保护数据的功能,程序将按断电前的状态继续工作。下图的右侧的 I0.3、I0,4、I0.0 按钮是用来置数用的,其 I0.0 是清 0 按钮,按此扭,可将 VD104 清 0,I0.3 是置数按钮, 按一下该钮,VD104 的数值+1,I0.4 是移位按钮,按一下该钮,时 VD104 右移 4 位,如要 延时 2 日,即延时 172800 秒,将此数转为 16 进制数为 2A300。将这 2A300 置入 VD104 中,应这样操作:先按一下 I0.0,使 VD104=0,按 I0.3 二下,使 VD104=,再按 一下 I0.4, VD104=,再按 I0.3 十下,VD104=0000002A,再按 I0.4 二下, VD104=00002A00,到此置好此数。 三、网友求助:D大家好,我问一个问题,就是有三个输入,一个代表电机正传,一 个反转,一个停止,输出只有一个,来控制三项电机的正反转,怎么实现啊? 需要说明, 输出点只有一个,同时也可以在输出点处设计一些外部电路来实现,请大家给个解答,谢谢 啦 请问师傅们,这个难题可以实现吗?还是不能实现啊?呵呵 增加一下说明:就是普通的异步电机,用西门子 S7-200plc 来控制。三个输入点,但是仅剩 下一个输出点,而且要求控制必须通过 PLC 才行,呵呵,谢谢大家了‖ 答复:这个难题可以实现。这个命题设计虽然没有多大实用价值,但可以锻炼编程思 维,也算好帖。此题可这样进行这样设计: 在 PLC 内编程,完成如下工作,3 个输入分别产生不同脉冲个数的脉冲串,由一个输 出口输出,比如正传按钮按下,输出口输出一窄一宽二个脉冲,反转按钮按下,输出口输出 一窄二宽三个脉冲,按停止按钮,输出口输出一窄三宽四个脉冲。见下图:该梯形图解析:I1.0 为正传按钮,I1.1 为反传按钮 I1.2 为停止按钮,按 I1.0,其抬起 (后沿)使 M2.0=1,按 I1.1 其后沿使 M2.1=1,按 I1.2 其后沿使 M2.2=1,它们的前沿都 会使 M2.3=1,M2.3 的前沿,使 MB0=0,同时使 T96 得电延时,同时 M2.0=1 或 M2.1=1 或 M2.2=1 又使 T32 得电延时。延时 1mS,T96 动作使 M2.3=0,形成 1mS 的窄脉冲输出。 再延时 4mS,T32 动作,其常闭触点断开,,下一个扫描周期,T32 断电,常闭点闭合, T32 又得电进行 5mS 的延时…于是形成振荡。每出现 T32 其前沿使 MB0+1,当 M2.0=1 时, 第一个 T32 的后沿使 M2.0=0, M2.1=1 时, 当 第二个 T32 的后沿使 M2.1=0, M2.2=1 当 时,第三个 T32 的后沿使 M2.2=0,M2.3 与 T32 相或输出与 Q1.0,故按 I1.0、I1.1、I1.2 按钮可输出 3 种不同的脉冲波形。 PLC 的输出口接下图控制电路:PLC 输出侧的 0V 接控制板的地,输出口接二个 2K 电阻串联,分压点接集成块 U4D 输入端,实现电平转换。U1A 是个单稳态电路,输入脉冲的第一个窄脉冲后沿触发 U1A 的 CLK 端,使 U1A 的 Q 端产生一个负方波,其脉宽大于上图中的 M2.2 脉宽,它控制 U2 构 成的 2 位计数器的清零端 R,R 端置 1,计数器清 0 且不计数,R 的电位=0,容许计数器计 数,如按正传 I1.0,计数器计数为D01‖,如按反转 I1.1,计数器计数为D10‖如按停止 I1.2, 计数器计数为D11‖,U3 与非门构成译码器,当计数器输出为D00‖3 个与非门输出皆为 1,当 输出为D01‖左侧与非门输出为 0,其它二个为 1,但输出为D10‖,中间与非门输出为 0,当输 出为D11‖时,右侧与非门为 0,就是说按那个按钮,其对应的与非门输出=0。3 个与非门的 输出,取最上面 3 个 D 触发器的 D 端,当 UA 单稳态脉冲的后沿正跳,触发这 3 个 D 触发 器,只有 D 端电压=0 的 D 触发器的输出为 1,使对应的继电器导通吸和,完成控制作用。
西门子PLC―汇集和整理大量word文档,专业文献,应用文书,考试资料,教学教材,办公文档,教程攻略,文档搜索下载下载,拥有海量中文文档库,关注高价值的实用信息,我们一直在努力,争取提供更多下载资源。
[] [] [] [] [] [] [] [] [] [] []

我要回帖

更多关于 西门子plc电梯程序 的文章

 

随机推荐