您现在所在的是:

PLC论坛

回帖:16个,阅读:10414 [上一页] [1] [2] [下一页]
* 帖子主题:

请教“如何学习PLC"

1708
5678255
文章数:4
年度积分:50
历史总积分:1708
注册时间:2009/8/27
发站内信
发表于:2009/9/11 13:18:37
#10楼
5楼正解!!!!
2917
yccj5000
文章数:553
年度积分:50
历史总积分:2917
注册时间:2005/5/17
发站内信
发表于:2009/9/11 15:27:16
#11楼
多动手吧
3512
chengjun77
文章数:2027
年度积分:50
历史总积分:3512
注册时间:2009/7/19
发站内信
发表于:2009/9/11 19:35:32
#12楼
你先学电力拖动控制。
1016
李伯伯
文章数:109
年度积分:50
历史总积分:1016
注册时间:2009/9/11
发站内信
发表于:2009/9/11 22:50:57
#13楼
去下面这个地方看看,我也是刚去他那里了解过,感觉还不错。
 www.jcpeixun.com
12704
lixiaobai
文章数:7780
年度积分:49
历史总积分:12704
注册时间:2006/4/5
发站内信
08年最佳博客奖
发表于:2009/9/17 19:24:01
#14楼
以下是引用kedawanglq在2009-9-11 13:00:51的发言:
我也正在学习,感觉有点费劲,我觉得要学的话最好找个会的指点指点可能会学的快点,靠自己捉摸太浪费时间了。
不要急,如果确实感觉有点费劲,就花钱学一下,也是不错的
说说
900
zbf44121508
文章数:10
年度积分:50
历史总积分:900
注册时间:2009/9/17
发站内信
发表于:2009/9/17 23:34:32
#15楼
俺花了两个上午的时间,初步了解了scl的使用方法,在此给各位汇报交流一下:
所需软件:step7v5.2+scl5.1+plcsim5.2
资料:scl手册(安装scl软件后带的)

第一天上午:
1、启动scl后,如何创建新程序?
SCL程序创建在”S7 Program”-”Sources”下面。
S7-Program
 -Blocks(e.g. FB,OB)
 -Sources(e.g.SCL source file)
 -Symbols
2、程序怎么写?
程序结构
FB:   FUNCTION_BLOCK fb_name
   
   END_FUNCTION_BLOCK
FC:   FUNCTION fc_name:function type
     
   END_FUNCTION
OB:   ORGANIZATION_BLOCK ob_name

   END_ORGANIZATION_BLOCK
DB:   DATA_BLOCK db_name

   END_DATA_BLOCK
UDT   TYPE udt_name

   END_TYPE
3、笔者就创建一个简单的fc块吧,然后在ob里面调用
FUNCTION fc1:INT//返回值为整型,如果不需要返回,声明为void
VAR_INPUT//定义一个输入参数
 a:INT;
END_VAR
begin
fc1:=a+10;    
end_FUNCTION//块结束
然后编译通过,在ob里面调用,运行plcsim,单步执行,看结果,通过!

第二天上午:研究以下问题
SCL如何调用其他SCL以及用LAD等编写的程序?
写一个有循环、判断等基本语句组成的程序。
参数使用问题?(直接使用实际地址?参数传递问题)


1、 在SCL里面调用LAD或者STL写的块
先用STL或者LAD创建一个FC2:
定义一个输入参数:in1(int型);一个输出参数:out1(int型)
语句表如下:
     L   #in1
     L   #in1
     +I  
     T   #out1
     NOP   0
在下面写的SCL里面调用FC2:
FUNCTION fc1:INT
VAR_INPUT
 a:INT;
END_VAR
VAR_TEMP
 b:INT;
end_var  
begin
//fc1:=a+10;    
fc2(in1:=a,out1:=b);
fc1:=b;
end_FUNCTION

2、在SCL里面调用其他SCL写的块
FUNCTION fc1:INT
VAR_INPUT
 a:INT;
END_VAR
VAR_TEMP
 b:INT;
end_var  
BEGIN    
fc3(in1:=a,out1:=b);//调用fc3
fc1:=b;
end_FUNCTION

FUNCTION fc3:void//无返回值
VAR_INPUT
 in1:INT;
END_VAR
VAR_OUTPUT
 out1:INT;
end_var  
begin
out1:=in1+10;
end_FUNCTION

3、一个带有循环、判断等基本语句的程序
FUNCTION fc4:VOID
VAR_INPUT
 in1:BOOL;
 in2:INT;
END_VAR  
VAR_OUTPUT
 out1:BOOL;
 out3:BOOL;
 out2:INT;
END_VAR
VAR//定义一个静态变量,用来存储块调用之间的数据
 temp1:BOOL;
END_VAR
VAR_TEMP
 temp2:INT;
END_VAR
BEGIN
IF in1=false AND temp1=true THEN//检验下跳沿
 out1:=true;
ELSE
 out1:=false;  
END_IF;  
IF in1=true AND temp1=false THEN//检验上跳沿
 out3:=true;
ELSE
 out3:=false;  
END_IF;  
temp1:=in1;
FOR temp2:=1 TO 10 BY 2 DO//省略了关键字by,就默认加1
 out2:=in2+out2;
END_FOR;
 
END_FUNCTION
4、SCL中直接使用绝对地址
FUNCTION fc1:VOID
BEGIN
in1:=in1+10;//in1在符号表里面已经定义为int型,存储区为mw0
IF m0.0=false then//这里直接引用实际地址
 m0.0:=true;
ELSE
 m0.0:=false;
END_IF;  
end_FUNCTION
900
zbf44121508
文章数:10
年度积分:50
历史总积分:900
注册时间:2009/9/17
发站内信
发表于:2009/9/17 23:39:14
#16楼
学习plc的一点心得      有的人说好学,更多的人说难学。我的看法是入门易,深造难。入门易,总有它易的方法。很多人都买了有关PLC的书,如果从头看起的话,我想八成学不成了。因为抽象与空洞占据了整个脑子,一句话晕!

学这东东要有可编程控制器和简易编程器才好,若无,一句话,学不会。因为无法验证对与错。如何学,我的做法是直奔主题。做法如下:

1、认识梯形图和继电器控制原理图符号的区别: 继电器控制原理图中的元件符号,有常开触点、常闭触点和线圈,为了区别它们,在有关符号边上标注如KM、KA、KT等以示不同的器件,但其触头的数量是受到限制。而PLC梯形图中,也有常开、常闭触点,在其边上同样可标注X、Y、M、S、T、C以示不同的软器件。它最大的优点是:同一标记的触点在不同的梯级中,可以反复的出现。而继电器则无法达到这一目的。而线圈的使用是相同的,即不同的线圈只能出现一次。

2、编程元件的分类:编程元件分为八大类,X为输入继电器、Y为输出继电器、M为辅助继电器、S为状态继电器、T为定时器、C为计数器、D为数据寄存器和指针(P、I、N)。关于各类元件的功用,各种版本的PLC书籍均有介绍,故在此不介绍,但一定要清楚各类元件的功能。

编程元件的指令由二部分组成:如 LD(功能含意)X000(元件地址),即 LD X000,LDI Y000......。

3、熟识PLC基本指令:

(1)LD(取)、LDI取反)、OUT(输出)指令;LD(取)、LDI(取反)以电工的说法前者是常开、后者为常闭。这二条指令最常用于每条电路的第一个触点(即左母线第一个触点),当然它也可能在电路块与其它并联中的第一个触点中出现。

这是一张梯形图(不会运行)。左边的纵线称为左母线,右母线可以不表示。该图有三个梯级;第1梯级;左边第一个触点为常开,上标为X000,X表示为输入继电器,其后的000数据,可以这样认为它使用的是输入继电器中的编号为第000的触点(下同)。其指令的正确表示应为(如右图程序所示):0、LD X000 (前头的0 即为从第0步开始,指令输入时无须理会,它会自动按顺序显示出)。 第2梯级;左边的第一个触点为常闭触点,上标为T0,T表示定时器(有时间长短不同,应注意),0则表示定时器中的编号为0的触点。其指令的正确表示应为:2、LDI T0(如程序所示)。 第3梯级;左边第一个触点为常闭,上标为M0, M为辅助继电器(该继电器有多种,注意类别),其指令的正确表示应为:4、LDI M0(如程序所示)。本梯级的第2行第一个触点为常开,上标为Y000,Y表示输出继电器,由于该触点与后面Y001触点呈串联关系,形成了所谓的电路"块",故而其触点的指令应为 5、LD Y000。总之LD与LDI指令从上面可以看出,它们均是左母线每一梯级第一触点所使用的指令。而梯级中的支路(即第3梯级的第2行)有二个或二个以上触点呈串联关系,其第一触点同样按LD或LDI指令。可使用LD、LDI指令的元件有:输入继电器X、输出继电器Y、辅助继电器M、定时器T、计数器C、状态继电器S。OUT为线圈驱动指令,该指令不能出现在左母线第一位。驱动线圈与驱动线圈不能串联,但可并联。同一驱动线圈只能出现一次,并安排在每一梯级的最后一位。如上图中的1、OUT Y000,3、OUT Y001,Y为输出继电器,其线圈一旦接获输出信号,可以这样认为,线圈将驱动其相应的触点而接通外部负载(外部负载多为接触器、中间继电器等)。而上图8、OUT T0 K40 为定时器驱动线圈指令,其中的K为常数40为设定值(类似电工对时间继电器的整定)。可使用OUT指令元件有:输出继电器Y、辅助继电器M、定时器T、计数器C、状态继电器S。

(2)触点的串联指令AND(与)ANI(与非);前者为常开,后者为常闭。二者均用于单个触点的串联。二指令可重复出现,不受限制,。如下图所示。

由第1梯级来看;X000、T0、Y001三触点成串联关系,即T0的常闭串接于X000的后端,而Y001的常闭则串接于T0常闭的后端。由于都是常闭故用ANI指令。现来看第2梯级;X000、M0、Y001,同样三触点也是串联关系,M0的常闭接点串接于X001的后端,而Y000的常开接点则串接于M0的后端。故M0的指令用ANI,而Y000的指令则用AND(具体编程详上图),一句话只要是串联后面是常开的用AND,是常闭的则用ANI。可使用AND、ANI指令元件有:输入继电器X、输出继电器Y、辅助继电器M、定时器T、计数器C、状态继电器S。

(3)触点并联指令OR(或)、ORI(或反);触点并联时,不管梯级中有几条支路,只要是单个触点与上一支路并联,是常开的用OR,是常闭的则用ORI。
 随便写写

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2025 Gkong.com, All Rights Reserved

109.2007