设为首页
收藏本站
PLC技术网
开启辅助访问
切换到宽版
登录
注册哦
只需一步,快速开始
微信扫码登录
门户
Portal
论坛
BBS
导读
Guide
排行榜
Ranklist
搜索
搜索
本版
文章
帖子
用户
PLC论坛-全力打造可编程控制器专业技术论坛
»
论坛
›
工控综合知识交流
›
『CAD/CAM/电工/电子/行业』
›
PLC程序详解(图文并貌)
返回列表
发新帖
PLC程序详解(图文并貌)
[复制链接]
4509
|
35
|
2008-6-30 01:16: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)。
三、填表指令(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编程时,重复使用数出线圈。尽管在语法上是正确的,但是应该
避免
使用的。
几种置位、复位的方法和比较
位置位、复位操作方法上,有好几种方法,可以直接采用置位、复位指令,也可以采用数据传送指令、表格填充指令,甚至可以采用移位循环指令。
这几种方法在具体运用时,也要根据情况而定。下面用一个范例来讲解他们的不同之处。要求对Q0.0~0.7、Q1.0~1.7十六位输出进行置位、复位。
图 几种置位、复位的方法
在以上几种方法中,除移位循环指令外,其他指令比较好理解。
移位循环指令的方法,置位是对16#FFFF十六位常数左循环16位,送入输出字QW0(由Q0.0~0.7、Q1.0~1.7组成),无论16#FFFF如何循环,还是16#FFFF,16位输出。复位采用对QW0一次扫描周期一次执行16位左移位指令,将QW0中的数据全部移出(如果是带符号位的字,连符号位也移出),输出复位。
在上面的方法中,直接采用置位、复位的方法不仅可以对字节、字、双字中的位进行置位、复位操作,也可以对不成字节、字、双字的位进行操作。而数据传送指令、移位循环指令、填充指令只能对字节、字、双字中的位进行置位、复位操作,其中填充指令还只能对字操作。
比如单单对Q0.0~0.6七个位输出进行置位、复位,采用数据传送指令、移位循环指令、填充指令是很难实现的,此时只有采用直接置位、复位指令的方法。
回复
举报
sevenco
|
2008-6-30 11:17:00
|
显示全部楼层
...
回复
支持
反对
举报
vansky
|
2008-7-3 22:13:00
|
显示全部楼层
不错
[em01]
回复
支持
反对
举报
max159
|
2008-7-4 06:16:00
|
显示全部楼层
谢谢楼主!
回复
支持
反对
举报
liujianlin08
|
2008-7-4 13:10:00
|
显示全部楼层
[em50][em50][em50]
回复
支持
反对
举报
psyhhh
|
2008-7-4 14:29:00
|
显示全部楼层
xuexile
回复
支持
反对
举报
jarvistam
|
2008-7-4 16:29:00
|
显示全部楼层
谢谢楼主~!!!
回复
支持
反对
举报
yxy699709
|
2008-7-5 10:24:00
|
显示全部楼层
好!很好!精辟[em50][em50]
回复
支持
反对
举报
haipo9951
|
2008-7-5 11:31:00
|
显示全部楼层
很好,不错!!!
回复
支持
反对
举报
xidong
|
2008-7-5 12:01:00
|
显示全部楼层
提示:
作者被禁止或删除 内容自动屏蔽
回复
支持
反对
举报
haipo9951
|
2008-7-5 13:19:00
|
显示全部楼层
好文章,我们学习的好版样[em17][em17]
回复
支持
反对
举报
liujianlin08
|
2008-7-6 13:06:00
|
显示全部楼层
[em50][em50][em50]
回复
支持
反对
举报
wjmdtt
|
2008-7-6 16:51:00
|
显示全部楼层
学习,
回复
支持
反对
举报
byshiye1984
|
2008-7-7 14:39:00
|
显示全部楼层
不错就是有点少了!!!!
回复
支持
反对
举报
longyuang123
|
2008-7-12 01:31:00
|
显示全部楼层
学习了
[em07]
回复
支持
反对
举报
jack20635
|
2008-7-14 22:59:00
|
显示全部楼层
好啊!!!!
回复
支持
反对
举报
wangchao2006
|
2008-7-31 17:53:00
|
显示全部楼层
[em05][em11]
回复
支持
反对
举报
hly2008
|
2008-8-16 19:35:00
|
显示全部楼层
[em50][em50][em50][em50]
回复
支持
反对
举报
hly2008
|
2008-8-16 19:38:00
|
显示全部楼层
[em06][em06]
回复
支持
反对
举报
hly2008
|
2008-8-16 19:38:00
|
显示全部楼层
[em50][em50][em50]
回复
支持
反对
举报
hly2008
|
2008-8-16 19:56:00
|
显示全部楼层
[em50][em50][em50]
回复
支持
反对
举报
yffshun365
|
2008-8-24 11:23:00
|
显示全部楼层
还是谢谢楼主
回复
支持
反对
举报
fangdeng
|
2008-8-29 12:17:00
|
显示全部楼层
学习了[em01]
回复
支持
反对
举报
fangdeng
|
2008-9-2 22:30:00
|
显示全部楼层
好的学习教材...
回复
支持
反对
举报
zlhfc
|
2008-9-7 09:04:00
|
显示全部楼层
学习
回复
支持
反对
举报
kongzi2001
|
2008-9-7 21:02:00
|
显示全部楼层
多发点
回复
支持
反对
举报
wj754909938
|
2008-9-16 12:24:00
|
显示全部楼层
不错不错,好东西
回复
支持
反对
举报
hzg303
|
2008-9-18 20:23:00
|
显示全部楼层
能不能弄个完整一点的一个项目的程序,来个完整注解的
回复
支持
反对
举报
jakexu
|
2008-9-29 10:54:00
|
显示全部楼层
非常不错
回复
支持
反对
举报
dgredboy
|
2008-10-11 21:12:00
|
显示全部楼层
[em02][em02][em02][em02]
回复
支持
反对
举报
dgredboy
|
2008-10-11 21:13:00
|
显示全部楼层
[em02][em02][em02][em02]
回复
支持
反对
举报
dgredboy
|
2008-10-11 21:13:00
|
显示全部楼层
[em02][em02][em02][em02]
回复
支持
反对
举报
lf2527089
|
2009-4-4 17:09:00
|
显示全部楼层
这是学习的好教材,这样好的文章该多多的发,多好啊,大家可以学习学习。[em50][em51]
回复
支持
反对
举报
fuxiaoyang13
|
2009-9-29 14:18:00
|
显示全部楼层
??:(cnplc)PLC????(????)
学习!!!!!
回复
支持
反对
举报
sdlishw
|
2009-10-4 20:21:00
|
显示全部楼层
很好,谢谢了
回复
支持
反对
举报
wlxboss
|
2009-10-21 22:01:00
|
显示全部楼层
不错,学习一下,,
回复
支持
反对
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册哦
本版积分规则
发表回复
回帖后跳转到最后一页
cnplc
回复楼主
返回列表
『CAD/CAM/电工/电子/行业』
『解密授权』
『程序样例』