西门子PLC编程的一点体会

西门子PLC编程的一点体会
西门子PLC编程的一点体会

对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编程如同人写文章一样,同样的文字不同的组合,写出的效果不一样,有的语言精练,条理清晰,几句话说明问题,有的却相反,啰里啰唆,越讲越让人糊涂。如何才能写出好文章呢?只有深入学习,提高文学素质,多写多练,不断积累,不断总结经验,肯定会成功的。对PLC编程也是一样,也要深入学习,提高编程素质,也要多编多练,不断积累,不断总结经验。提高编程素质,不仅仅要深入理解每条指令内涵及用法,还要扩大知识面,使你扩大视野,增强思维和分析问题的能力。现举一例:前两天,从网上看到一网友求助:其内容为:有个PT100的温度传感器通过500欧姆的电阻将4~20MA的电流转换成2-10的电压信号送到PLC模拟量端!h对应的温度范围是0~100度!则转换公式为

AIW0-6400

T= ----------------X(100-0)+0

32000-6400

这个公式怎么来的啊?

“通过500欧姆的电阻将4~20MA的电流转换成2-10的电压信号送到PLC模拟量端!”

这句话是不是这个意识啊?

如果要用电流信号!就不用500欧姆的电阻!直接采取4~20MA的电流接到输入端!

如果要用电压信号!就串联500欧姆的电阻!采取2~10V的电压信号!这个电压是指电阻分压得到电阻两端的电压吗?》

我给他的回帖是:

《w375823876:我给你说说这个问题,4-20ma电流通过500欧姆电阻将产生2-10V 电压,送入PLC的模块,从转换公式可知:式中的6400这个数是由2V转换来的数字量(因为输入2V 时要使T=0,必需公式的分子项的转换值AIWO-6400=0才行),从中又可知:1V 对应的数字量=3200,式中的“AIWO-6400”值即为2-10V输入时模拟块转换的数字量减去

2V的数字量的值,当输入=10V时,其值=3200*8=25600,要使此时温度显示值为100,就得将此值除以256,但式中后面又乘(100-0)故公式的分母项上为32000-6400,及

=25600. 你用的是输入要求0-10V电压模拟信号的模拟量转换块,不能直接用4-20ma电流做输入信号。》

这个问题就不是简单用指令编程的问题,它涉及到电学及数学知识,如果没有这方面知识,是很难理解的。再举一例,有的生产线,不仅要求对设备动作编程,还要能预置参数,对生产状况能进行实时显示,并能打印出来。考虑设备成本,现场条件及操作者素质,不要配备

工控机及触摸屏,怎么办,外配仪表,找不到合适的,用单片机自行设计,可以。但抗干扰差,一旦数据丢失无法恢复,这是设备生产所不容许的。我就用硬件设计了一个电路并做出印刷板,采用串口输送数据的方式,仅占用PLC的几个I/O口,就实现了上述功能,用PLC的高数计数器进行数据采集,用PLC进行数据运算处理,PLC将结果输出给电路板,完成了参数设定、数据显示及打印功能,由于PLC抗干扰强,且具有断电对数据保护功能,不会出现数据丢失现象。

了解掌握指令的特性,可以巧妙使用指令去完成一些控制动作。如有一网友求助:“求:

将0-4mm数字量转换为0-10V模拟量后,利用西门子PLC如何解决将2mm以下数字量进行报警剔除请高手帮忙。”

我的回帖:“WWPLC;可以这样做: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)使其置“1”,用断电延时定时器的开关后沿触发M1.0使其置“0”,这样,用M1.0 做测长计数控制门,就可解决测长不准的问题。

再如:探伤完了的钢管走出探伤区后,需对它进行分选,将不合格的拨到废品筐。如探伤完后,立即分选,这样情况编程好实现,但现场废品筐的位置离很远的地方,当钢管走到废品筐时,探伤机已探完3或4根钢管,即辊道上已存在3-4根已探完伤的钢管在运行,如何准确无误的将不合格的钢管拨到废品筐里,这对编程是件辣手的问题。如果你有电子线路设计基础,就会想到,用移位存储器来实现对多根钢管的质量状态进行实时跟踪,你可以这样编程:用一个字节存储器,如:MB100,用它做移位存储器(他可记忆八根钢管质量状态),启动时,先将它清零,探伤时,如发现有伤,立刻将MB100 的最低位置“1”(即:使M100.0=1),

当钢管探伤完毕走出探伤区时,用左移指令使MB100左移一位。如果现场是探伤后的第四根到废品筐位进行分选,编程时应将M100.3与废品筐到位的分选开关的常开触点串联,再去驱动拨料装置。这样,当钢管走到废品筐使其到位的控制开关吸合,这时,如果M100.3=1,将驱动拨料装置动作,将钢管拨入废品筐,如果M100.3=0,说明此钢管是合格品,驱动拨料装置不动作,钢管继续在辊道上运行。

通过上面几个举例,可以看出,合理巧妙的使用指令编程,不仅使语句精炼短小,而且控制动作合理可靠。要达到这样编程水平,就得多编多练,不断的总结经验,不断的积累,积累不仅仅是自己的经验,也要虚心向有经验的同行学习,多看看别人的程序,吸收好的编程方法和思路,来不断地提高自己的编程水平。

下面通过一个实例来讲讲如何进行PLC编程的:此例也是从网上看到的,由于忘记发帖人的用户名,没有找到原帖,这里将他的求助内容写出来,供大家分析:一条生产线,对其产品进行质量检查,如发现有堵塞,立刻发出报警信号,PLC接到此信号先延时一段时间(设它为T1)后,喷枪开始喷气,喷气一段时间(T2),喷枪停喷。要求喷枪能累计喷气,即要求不能丢掉任意一次报警的喷气时间。这个课题正像发帖人说的那样:“看似简单,可实施却不简单的”课题,我对课题的要求进行仔细研究,把可能出现的情形进行分析,画出动作时序图,自己认为正确无误后,编写出梯形图(用西门子编程语言)。请见下图。图中右侧为时序图,图中的各个位信号的定义为:

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月初,才注册入会的,只发表一篇文章,只写了几次对一些网友求助的回帖,真没想到工控网会给我发邮件,让我写文章,太出乎我意料了,我感谢工控网的负责同志,并对我的疏忽没能及时回帖向你们表示歉意,为了感谢你们对我的信任,我连夜写出这篇文章,为了使写出的东西对初学者真的有点帮助,我写了一些编程的小实例。由于时间太短,本人水平有限,难免有错误之处,恳请批评指导。

再有,我写完后,就在你们给我的邮件上的回帖上点击,出现“错误信息”我再按立即登陆,却说我密码不对,点击发帖也是这样,前几天我登陆上网也总出现密码不对而登陆不上,由于本人刚刚入会,好多东西都不明白,还清指教谢谢!》

关于“4-20ma”的讨论

网上看到很多网友提出有关“4-20ma”的问题,综合大家提出的问题我做如下说明:

1、“4-20ma”是电流输送信号,它在微机及网络通讯之前就已存在。在没有数字量传送数据之前,它是仪器仪表对外,特别是远距离传送数据的最好方式。就到今天仍有使用价值,数字量信号对于远距离传送数据必需有中继站补充能量,而它不用,他可传送几公里或更长的距离,为什么?这里给大家解释一下:

模拟量传送信号只有两种:1、电压信号;2、电流信号。传送信号都是由导线完成的,导线是有电阻的,距离越长电阻越大,当它传送到终端负载(如显示表),在其上形成电压信号。这个电压信号,如是用电压信号传送过来的,由于导线电阻与负载电阻是串联的,导线电阻产生一定的电压降,必然使负载上的电压有损失,造成数据误差,故电压信号不适与远距离传送数据信号。而电流却不同,它是以电流传送的,导线电阻固然也产生电压降,但电流值不变,如负载侧选通用500欧姆电阻,该电流流过它,必然产生2-10V的电压值。不会产生数据误差。

2、电流输送信号为什么用“4-20ma”,而不用“0-20ma”呢?远距离传送数据信号,难免有导线断线的时候,如传送信号时,发生导线断开,而负载侧(指示仪表方)接收0信号,会误以为停止输送信号,造成显示或记录错误,如用4而不用0表示0输出信号,一旦出现0输出,立刻知道导线断了,从而可避免上述错误。那么不用4用其他数代表0输出?可以,但工业生产需要标准化,这是人们早已规定的。

3、PLC模拟量输入模块,要求输入信号通常为0-10V的电压信号,如进入PLC的是“4-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) / (32000-6400)。该转换公式的精度为1Kg。

如编程者有电路设计能力,不妨可以这样做,设计一个将“4-20ma”的电流信号转换为

“0-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、网友求助:“那位高人会用一个按常开钮控制电路的起停《PLC》。。。。。。。”

2、网友求助::“用一个按钮X0控制Y0的电路,第一次按下按钮Y0变为ON,第二此按下按钮Y0变为OFF 请问怎么实现啊,谢谢!”

回复:“我提供你们一个的梯形图,就是你们需要的用一个按钮可控制关停的线路,它是用一个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 触发器反转,其输出由“0”上跳为“1”,下一周期,M2.1=1,从而确保无时间争态使电路动作可靠。”

3、网友求助:“怎样利用外部输入按钮,修改某个定时器的里面的数值,要用什么指令啊?我是新手,忘老师指点”

回复:“你可以这样做:定时器的定时值,不设具体数字,而用一个字存储器(如MW100)来作为定时器的预设时间值,再用二个按钮接PLC的二个输入端,一个做置数键(如I 1.0),编程时用I 1.0的后沿使MW100加1,即每按一次置数键,使MW100内容加1。再用另一个作移位键(如I1.1),用I1.1的后沿使MW100左移四位,即每按一次移位键,使MW100内容左移4位。即可实现你要求的功能。比如:预置“2325”,你可这样操作:先点击二次置数键(I1.0),此时MW100的内容为“0002”再点击一下移位键(I1.1),此时MW100的内容为“0020”,再点击三次置数键,MW100的内容为“0023”,再点击一下移位键(I1.1),此时MW100的内容为“0230”.....重复四次置数键,MW100的内容为“2325”,注意:移位键只能点击三次,不可点四次。再有为防止按键时打连发,造成置数不准,置数键与移位键应分别输出给二个断电延时定时器(如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、网友求助:“ 设备:

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编程的“时序控制程序”的解析

有一网友提出:“想在S7 200做个时序控制程序,就是每个时间段控制不同的设定值,做30个时间段,时间段和设定值是可设定的,我想的就是时间比较,在时间范围内赋值,但是PLC里30个时间段做起来也挺复杂的,能有什么更好更节约CPU资源的方法不?大家交流下,”

我的回复:由于你提出的时间段及其对应的控制参数没有固定规律,故没有可节约CPU资源的方法进行编程。这里我用S7 200编写的梯形图只设定5个时间段,其时间段的时间及对应控制参数都可设定。供你参考,你看懂后,就可扩展到30个时间段。不知你是否用上位计算机进行时间与参数设定,如果是,下面的梯形图只需的上半部分的左侧图就可以了。其5段时间设定值的存数区为:VW100 –VW108,对应这5段时间段的控制设定值区为:VW150—VW158.

如没有上位机,只用PLC来完成,我编写的下面的梯形图就可完成你的编程要求。在这个梯形图中,引用了我编写的“用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的工作原理,详见“用S7-200编程的三个实例解析”中的例1说明。

2、置数与送数:

(1)、置数:如想设定第一时间段时间为2份20秒,应置数为“1400”,先点击一下“I1.3”键,使MW10清0,再点击一下“I1.0”键,使MW10=0001,再点击一下“I1.1”键,使MW10左移4位,使MW10=0010,再点击4下“I1.0”键,使MW10=0014,再点击2下“I1.1”键,使MW10左移8位,使MW10=1400,此时置数完毕(置数的工作原理,详见“用S7-200编程的三个实例解析”中的例2说明)。

(2)、送数:第一时间段的地址为:IB1=“####0000” 即I1.4—I1.7皆为常开状态,应确保I1.4—I1.7皆为抬起状态后,再点击一下I1.3键,此时置数值MW10送入VW100中,而MW10值请0。控制参数的置数与送数与之一样,只要送数地址正确即可。

上述梯形图对不用上位机或触摸屏的编程者或对只会PLC编程者是一个解决编程的办法,但需用8个PLC的输入端口及4个输出端口,而且操作繁琐,本人建议,如选用我写的“自制的PLC外围组件及应用”中的显示与打印组件和键盘组件,就可很好的完成,仅占用几个I/O口,不仅编程简单,操作简单,而且提供两路4位数字显示,且具有打印功能。使你的控制系统功能更加完善。如有需用者可与我联系,我的邮箱是:wyb2866255@https://www.360docs.net/doc/5115005899.html, 谢谢!

用按钮可实现对多个参数设定的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位。比如:

预置“2325”,你可这样操作:先点击二次置数键,此时MW10的内容为“0002”再点击一下移位键,此时MW10的内容为“0020”,再点击三次置数键,MW10的内容为“0023”,再点击一下移位键,此时MW100的内容为“0230”.....重复四次置数键,MW10的内容为“2325”,注意:移位键只能点击三次,不可点四次。再有为防止按键时打连发,造成置数不准,置数键与移位键应分别输出给二个断电延时定时器(如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个发光管灭。置数编程的梯形图请见本文图二的左侧“用按钮置入数值程序”。

从图二右侧“将植入数值送入参数区程序”梯形图中,移位键I1.4连接断电延时5S的定时器T103,其作用是使送数通道有效:只要点击一下I1.4键,T103就导通,MW10的内容就送入VW104中,不按移位键的时间超过5秒,T103才断电。其触点断开,使送数通道失效。如上例设置数为“2325”,MW10=2325,则VW104也=2325。如想再设置一个参数,应先将I1.0—I1,2键改置为要设置参数的通道位,如第四个参数,其通道数为“011”,即I1.0与I1.1二键按下,I1.2键抬起,此时VW104仍保持“2325”。MW10的内容“2325”又送入VW106中,可先点击4下I1.4键,使MW10清0,再进行新的参数设置。

图二

上述梯形图对不用上位机或触摸屏的编程者或对只会PLC编程者是一个解决编程的办法,但需用8个PLC的输入端口及4个输出端口,而且操作繁琐,本人建议,如选用我写的“自制的PLC外围组件及应用”中的显示与打印组件和键盘组件,就可很好的完成,仅占用几个I/O口,不仅编程简单,操作简单,而且提供两路4位数字显示,且具有打印功能。使你的控制系统功能更加完善。如有需用者可与我联系,我的邮箱是:wyb2866255@https://www.360docs.net/doc/5115005899.html, 谢谢!

有一网友提出这样的求助帖:“S7-200中如何让其中以小段程序在一定的时间内循环执行?我就是让一台电机在4小时内不停的正转10分,反转10分,4 小时后一直正转. 各位大侠,帮帮忙,万分感谢。初学编程,见笑了”

上图就是根据他提出的要求用S7-200编写的梯形图,下面将此程序讲解一下:

1、用I1.0作为此程序启动按钮,用I1.1作为此程序停止按钮,当按一下I1.0,使M2.0=1,M2.1=0,同时将数“12”送入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为止。

有一网友求助:“请教各位大侠,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) / 25600 -100

这个公式是怎样推导来的,是通过三角形相似定理推导来的,请见下图:

用S7-200编程的三个实例的解析之二

1、有一网友:“求助用西门子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。

谢谢你的大力帮助。”

我的回复:根据“液位机量程0—3米,对应输出信号0—10V”可得出:1米对应3.33V,2米对应6.67V,2.5米对应8.33V,再由“ALW0 输入信号0—10V,对应PLC寄存器数量0—3200D”可得出:1米对应数字量10667,2米对应数字量21333,2.5米对应数字量26667,按着你的要求,编写如下梯形图,供你参考。

动作原理: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、网友求助:“ 要求:当带锁定按钮按下,接触器能吸合一下,马上又能断开,当按钮复位后,同一个接触器能吸合一下,马上又能断开。所用器件没有限制,也可用PLC编程,(我想了很久也做不出来,请高手指点一下,谢谢!!!)

我的回复:按着你的要求,分别用用继电器组成电路和用PLC编程组成同功能电路,供你参考。注:图中的电阻R0、R1、R2阻值与继电器阻值相近即可。

3、有一网友求助:“S7-200中如何让其中以小段程序在一定的时间内循环执行?我就是让一台电机在4小时内不停的正转10分,反转10分,4 小时后一直正转. 各位大侠,帮帮忙,万分感谢。初学编程,见笑了”

我的回复是:下图就是根据你提出的要求用S7-200编写的梯形图,下面将此程序讲解一下:

1、用I1.0作为此程序启动按钮,用I1.1作为此程序停止按钮,当按一下I1.0,使M2.0=1,M2.1=0,同时将数“12”送入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、一网友求助:“本人是PLC新手,刚学习不到一个月,现有一个项目~~ 要对目标信号进行检测计数~~ 信号为24V直流~~ 每隔一定的时间进行信号端检测,如果为“1”即有信号,则对信号进行计数,并最终输出总共检测到的“1”的数目~~ 如果在某一次时,没有检测到信号,则立即停止工作,输出已经检测到的“1”的数目,并输出报警信号~~ 要怎么实现呢?这里检测的是一个系统的返回信号,它只在特定的时间间隔上出现,这个时间间隔是已知的,不用去考虑~~如果在时间点上没有检测到,则证明系统故障~~为了是检测系统寿命~~

急切PS:采用西门子S7-200系列PLC,STEP7 V4.0 SP6,组态王6.53,进行上述测试~~如果能有梯形图程序就不胜感激了~邮箱w4169349@https://www.360docs.net/doc/5115005899.html,

回复:按着你的要求,编写如下梯形图,在组态王数据词典里建立I/O整数字变量VW100,设可读方式,再设I/O字节变量M2,其BIT(M2,1)为系统启动工作位,BIT(M2,2)为报警输出位。在运行时,组态王时时从PLC读取VW100及MB2的数据,出现报警,系统工作停止,此时的VW100值,即为报警前返回信号次数,系统检查完毕始终未出现报警,按下停止按钮,此时的VW100值即为最终检测返回信号值。

2、一网友提出:“谢谢楼主,对我这个新手来说真是好东西。请教楼主用一个按钮控制电机正反转用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、网友求助:“ 现我有一设备,要求此设备运行到一定时间需要给上位机一个报警信号,提示需要更换润滑油,但设备厂家的要求是,新设备首次运行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、网友求助:“八个彩灯Y0~Y7,启动后,灯每秒亮一个,即第一秒亮Y1,第二秒亮Y1,Y2,至全亮。并且可以循环进行,并有暂停和停止功能。(西门子200)MOV,ROL我只清楚一部分的程序,不知其所”

我的回帖,梯形图如下,供你参考:

相关主题
相关文档
最新文档