[西门子] [转帖]PLC个人经验点滴

[复制链接]
查看8123 | 回复68 | 2008-3-1 18:39:00 | 显示全部楼层 |阅读模式

一、时间继电器:

TON 使能=1计数,计数到设定值时(一直计数到32767),定时器位=1。使能=0复位(定时器位=0)。

TOF 使能=1,定时器位=1,计数器复位(清零)。使能由1到0负跳变,计数器开始计数,到设定值时(停止计数),定时器位=0。如下图:

图1:使能=1时,TOF(T38)的触点动作图

图2:使能断开后,计数到设定值后,TOF(T38)的触点动作图(其中T38常开触点是在使能由1到0负跳变后计数器计时到设定值后变为0的)

TONR 使能=1,计数器开始计数,计数到设定值时,计数器位=1。使能断开,计数器停止计数,计数器位仍为1,使能位再为1时,计数器在原来的计数基础上计数。

以上三种计数器可以通过复位指令复位。

正交计数器 A相超前B相90度,增计数

      B相超前A相90度,减计数

当要改变计数方向时(增计数或减计数),只要A相和B相的接线交换一下就可以了。

二、译码指令和编码指令:

译码指令和编码指令执行结果如图所示:

DECO是将VW2000的第十位置零(为十进制的1024),ENCO输入IN最低位为1的是第3位,把3写入VB10(二进制11)。

[replyview]

三、填表指令(ATT)

S7-200填表指令(ATT)的使能端(EN)必须使用一个上升沿或下降沿指令(即在下图的I0.1后加一个上升沿或下降沿),若单纯使用一个常开触点,就会出现以下错误:

这一点在编程手册中也没有说明,需要注意。其他的表格指令也同样。

四、数据转换指令

使用数据转换指令时,一定要注意数据的范围,数据范围大的转换为数据范围小的发注意不要超过范围。如下图所示为数据的大小及其范围。

(1)BCD码转化为整数(BCD_I)

关于什么是BCD码,请参看《关于BCD码》。

BCD码转化为整数,我是这样理解的:把BCD码的数值看成为十进制数,然后把BCD到整数的转化看成是十进制数到十六进制数的转化。如下图所示,BCD码为54,转化为整数后为36。

整数转化为BCD码(I_BCD)则正好相反,看成是十六进制到十进制的转化。

(2)整数转化为双整数(I_DI)                    

此问题需要注意的是:整数转化为双整数后,符号位被扩展,因为整数的精度小于双整数的精度,转化后,双整数除了表示整数的数值所占的位外,其余空位用符号位填充。如整数45转化为双整数后,基二进制表示为:2#0000_0000_0000_0000_0000_0000_0010_1101,而整数-45转化为双整数后则为:2#1111_1111_1111_1111_1111_1111_1101_0011。

五、避免重复使用PLC输出线圈

  基本逻辑指令中常开接点和常闭接点,作为使能的条件,在语法上和实际编程中都可以无限次的重复使用。

  PLC输出线圈,作为驱动元件,在语法上是可以无限次的使用。但在实际编程中是不应该的,应该避免使用的。因为,在重复使用的输出线圈中只有程序中最后一个是有效的,其它都是无效的。输出线圈具有最后优先权。

如图1和2所示。

  

图1:输出线路未重复使用   图2:输出线路未重复使用

  图1所示,输出线圈Q0.0是单一使用,表示I0.0和I0.1两个常开接点中任何一个闭合,输出线圈都得电输出。

  图2所示,输出线圈Q0.0是重复使用,在网络1和网络2中重复使用两次,目的和图1所示一样,要求I0.0和I0.1两个常开接点中任何一个闭合,输出线圈得电输出。

  首先需要肯定是图2所示的程序在语法上是完全正确的。但是,Q0.0重复使用的输出线圈中,真正有效的是网络2,网络1是多余的、无效的。也就是说,I0.0无论是闭合还是断开,都对Q0.0不起作用,Q0.0是否得电是由I0.1决定的。

  这是因为PLC在一个扫描周期中,PLC输出点的刷新是在程序执行完毕后执行的,在一个扫描周期中,即使I0.0闭合,I0.1断开,在PLC程序执行网络1时,输出点Q0.0映像存储器为1,在执行网络2时,输出点Q0.0映像存储器又变为0。程序执行完毕,PLC输出点才执行刷新,最终输出点Q0.0失电不输出。同理,在一个扫描周期中,I0.0断开,I0.1闭合,输出点Q0.0映像存储器最终为1,在PLC输出点执行刷新时,输出点得电输出。因此,图2所示的程序中,对Q0.0起作用的只是I0.1。

  因此,在PLC编程时,重复使用数出线圈。尽管在语法上是正确的,但是应该避免使用的。

六、合理组织编写梯形图的结构

  在编写梯形图时,宜将串联的回路写在上方,并联的回路写在左边。如图所示:

 采用右边的形式,可以减少PLC的扫描时间,可以让PLC拿更多的时间来处理输入、输出和通讯部分程序。这是因为,虽然是梯形图,PLC最终还是把梯形图转化为指令语句来执行,而右边的梯形图转化为语句后,显然比左边的要简化的多,这样就可以减少PLC的扫描时间。在比较大的程序中这点儿尤其显得突出。

七、合理使用指令减少PLC扫描时间

  PLC每种指令的执行时间是一定的,在编程时,一定要注意不要人为造成PLC的扫描时间加大。如下图所示:

  当I0.0闭合时,网络1的执行时间是0.37μs+55μs=55.27μs,而网络2当I0.0未动作时,执行时间是0.37μs。因此,当I0.0保持闭合的过程中,程序会反复执行网络1加法语句,会大大加长PLC的扫描时间。这时可以采用网络2的形式,仅在上升沿或下降沿时执行该加法语句,可以有降低PLC的扫描时间。

八、尽量避免形参不同时,多次调用同一子程序

  在程序中,多次调用同一个子程序,在语法方面没有什么错误,但我们要尽量避免这一做法,尤其是在带有形式参数时。下面通过一例来说明。如下图1所示,网络13和14都调用protection子程序,这时,网络14调用时protection子程序的运行状态如图2所示。我们注意到,网络14调用时的形参#protection的数值(1169,网络13调用该子程序时的参数值)并不是网络14调用protection子程序所要的数值(应是481)。这样,就会造成我们所不希望的结果。

[/replyview]
hbzyjh | 2008-3-3 16:01:00 | 显示全部楼层
学习下~~~~~~``
ligong2008 | 2008-3-3 19:46:00 | 显示全部楼层

学习交流,谢谢

10011001 | 2008-3-4 23:21:00 | 显示全部楼层
??????????????????????????????????
xlyytcy | 2008-3-5 21:24:00 | 显示全部楼层
kankankan
kettle8 | 2008-3-6 09:33:00 | 显示全部楼层
谢谢
student00 | 2008-3-6 22:05:00 | 显示全部楼层

学习交流,谢谢

540905186 | 2008-3-7 10:24:00 | 显示全部楼层
KANKAN
wweldonn | 2008-3-7 12:11:00 | 显示全部楼层

学习 一下

duchun | 2008-3-10 16:03:00 | 显示全部楼层

学习交流,谢谢

myh200410 | 2008-3-11 18:54:00 | 显示全部楼层

学习了,谢谢

hjaiyy0521 | 2008-3-11 21:24:00 | 显示全部楼层
ding
bingyuhan | 2008-3-18 20:12:00 | 显示全部楼层
tiantian xiang shang
zm806 | 2008-3-21 18:34:00 | 显示全部楼层

xuexi

chengbin | 2008-3-22 09:29:00 | 显示全部楼层
看看,学习学习
peterhu1234 | 2008-3-23 14:46:00 | 显示全部楼层
aaaaaaaaaaaaaaaaaaaa
elenve2003 | 2008-4-2 13:40:00 | 显示全部楼层
jiangbo111 | 2008-4-6 11:59:00 | 显示全部楼层
谢谢
[em05][em05]
majie | 2008-4-6 13:08:00 | 显示全部楼层
hao
mczxblue | 2010-5-14 15:10:00 | 显示全部楼层
看看楼主高在哪里
rest123 | 2010-5-15 16:34:00 | 显示全部楼层
学习交流,谢谢
yinyin | 2010-5-17 07:57:00 | 显示全部楼层
看一看
lili0734 | 2010-5-22 16:17:00 | 显示全部楼层
学习一下!
beijiwei | 2010-6-6 22:34:00 | 显示全部楼层

好戏

好东西,谢谢
ertongtuan | 2010-6-22 17:28:00 | 显示全部楼层
从简单的学起!
caiyehui1984 | 2010-6-29 10:11:00 | 显示全部楼层
:emote13:
caiyehui1984 | 2010-6-29 10:11:00 | 显示全部楼层
xieixie
wdddq | 2010-8-22 20:47:00 | 显示全部楼层
看看
plczhang | 2010-8-29 20:26:00 | 显示全部楼层
偃月刀 | 2010-8-30 11:33:00 | 显示全部楼层
观摩 学习
doul123 | 2010-9-2 20:33:00 | 显示全部楼层
此贴必火,先占位支持了,谢谢分享
doul123 | 2010-9-2 20:33:00 | 显示全部楼层
又一个精品。谢谢楼主,太谢谢了,支持
accpack | 2010-9-2 22:14:00 | 显示全部楼层
百 夺喹呆在
ysl3838 | 2010-9-10 19:59:00 | 显示全部楼层

回复 1# cnplc 的帖子

purplemoon1984 | 2010-9-11 11:17:00 | 显示全部楼层
学习学习
605509371 | 2010-9-11 15:57:00 | 显示全部楼层
学习一下
565023544 | 2010-9-14 18:03:00 | 显示全部楼层
分享了
shenjie | 2010-10-1 10:22:00 | 显示全部楼层
把字体搞成黑体吧 看的俺眼花 学习下
z0612002136 | 2010-10-2 12:59:00 | 显示全部楼层
顶!!!!!!!!
z0612002136 | 2010-10-2 13:00:00 | 显示全部楼层
就这么多啊?
divadben | 2010-10-3 22:45:00 | 显示全部楼层
谢谢分享,拜读一下,
tempfrank | 2010-10-12 13:49:00 | 显示全部楼层
学习交流,谢谢
gxdai98 | 2010-10-31 19:13:00 | 显示全部楼层
看看了
zhangyong1986 | 2010-11-2 10:14:00 | 显示全部楼层

bcuoy

bucuoy11111
jnshuhe | 2011-1-13 13:52:00 | 显示全部楼层
很好
求知的小屁孩 | 2011-3-28 21:49:00 | 显示全部楼层
交流一下,谢谢
ttafei | 2011-3-31 15:52:00 | 显示全部楼层
这些都是手册上有的,楼主实用了
david1989229 | 2011-4-2 14:03:00 | 显示全部楼层
不错啊,很好的 经验啊
ch66 | 2011-4-8 10:14:00 | 显示全部楼层
谢谢楼主
lhhsea2004 | 2011-4-30 12:43:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则