在S7-200中如何建立一个功能块_第1页
在S7-200中如何建立一个功能块_第2页
在S7-200中如何建立一个功能块_第3页
在S7-200中如何建立一个功能块_第4页
在S7-200中如何建立一个功能块_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

在S7-200中如何建立一个功能块一、基本数据类型Bool位1/0BYTE字节8WORD字16DWORD双字32INT整数16DINT双整数32最高位为符号位0-整数--小数,^; ; 3K.55^, 55A.,后面15个位表示数据大小Real实数32单精度浮点64双精度浮点Char字符❶8如:单个字母String字符串❷如:单词❶字符:8位,等于一个字节❷字符串:存储二字符个数+1字节如smart:5个字符+1个字节=6个字节,这1个字节表示第一个地址,是存储个数。比如把smart存储到VB100中第一个地址:是存储个数VB100=5,因为有5个字符第二个地址:VB101存储s第三个地址:VB102存储m第四个地址:VB103存储a

第五个地址:VB104存储r第六个地址:VB105存储t二、功能块指令的作用在编写程序过程中有写控制要求或是一些运算会重复执行的,对于这些会重复执行的程序,为了提高编程的效率,往往会把一些会重复执行的功能编写成一个功能块。或者把一些应用到比较典型的做成一个指令。Always-On:SMODSJTRENAlways-On:SMODSJTRENAIW1E-Input OufpiltZ7GdS'ISliISL150.(1OSHGEL-VD10G、功能块指令建立方法在S7-200系列PL的程序结构中,分为主程序、子程序、中断程序。子程序分为带参数的子程序和不带参数的子程序,功能即为一个带参数的子程序。MotarCtintroI

SMD0 || Mctar_ConVo1EN--Motc?_Stop-Mcrtor._ErrnfRun_&paeMMWolRun■???„4-MotorRun*RunSpeed-??埼三、功能块指令的建立需要建立一个带参数的子程序,那么需要在子程序的变量表中(或接口区)中定义好相应的变量,然后在子程序的编程中,使用在变量表中定义的变量去编写程序,子程序上面就有相应的接口区。变量表 X地址符号变量类型数揖类型1ENINBOOL2LO.OMotcr_StartINBQOL3L£,1Motor_StopINBOOLAL02Motor_ErrorINEGOL5LD1Rdn_Speed_SetINREAL6IN7L5.0Motor_Run_SignIN-OUTBOOLIN,OUTgL5.1MartQr_RunOUTSOOLwLD6Run_Spe-ec!OUTREALn_OUT12TEMP☆数据类型:对应地址,选好数据类型系统自动分配地址:如果选BYTE系统自动寻址fLBX;如果选WORD系统自动寻址-LWX。所以地址的分配不用管系统自动分配,是由数据类型决定的。四、变量类型说明变量的类型在使用过程中是不一样的,比如说子程序做好了以后有的位于子程序左侧,有的位于子程序右侧,有的在上面没有管脚。这跟习惯有关,左进右出。①变量类型(小):输入参数为可读❶变量,将调用它的POU提供的数据值传入子程序❷,可以使用常数,直接寻址❸间接寻址❹的方传入到子程序。在生成子程序块是位于左侧。这跟习惯有关,左进右

出❶可读:以PLC为例,可读的点是输入点,因为是从外边获取的信息、数据过来的,输入点大部分是常开常闭。❷子程序将调用它的POU提供的数据值传入子程序:它f指子程序;POUf指主程序。也就是说主程序通过输入的方式传递给子程序❸直接寻址:比如VW100❹间接寻址:&VB100②变量类型(IN_OUT):可读可写的变量❶,其初始值由调用它的POU传送给子程序,并用同一参数将子程序的执行结果返回给调用它的POU,因此常数和指针不能用于输入。是以IN为主,所以位于程序块左边。❶以程序为例:A):

上图中,启动I0,0、停止I0.1是可读fIN的变量输出Q0.0是可读(自锁)可写(线圈)fIN_OUT变量输出1Q0.1在整个程序中只用了写的功能fOUT变量B):桀件:加口.口INC_B

ENENO桀件:加口.口计数%口■!这是自加一指令,将VB0读出再写入VB0f也是IN_OUT变量C):A值、A值、B值是输入,所以是IN;☆IN_OUT与TEMP区别:IN_OUT可读可写在外围会有一个管脚,从外围先把初始值写进运算;TEMP是内部运算以后存储数据的结果的暂存,不会有输出,调用完子程序数据就放弃了。所以C值是TEMP,是暂存一次A+B的一个中间结果而已,没有任何需要从外围给数据进去,或者说运算完结果给出去。D):如果把IN_OUT变量建成OUT变量会出现什么结果?会执行程序出错。举例说明:a、子程序:将输出建成OUT变量变里类型数殿型注释ENINBOOLLC.0蔗力INBO3LLC.1■■融INBO3LIN.OUTECiZiLLC.2瑜出OUTBO3LI子程序生殍网络1 网络标题网络庄裔并启动:!_□.口 口信1bL0.1 喻出:L□卫b、主程序

网络11SM0.0SBR_a II 1|tl-410.0 1 1 1110.1 II II输出-Q0.0再调用一次主程序,因为带参数的子程序就是可以重复调用。只是说外围给不同的实参。网络2I5M0.CSBR_0EN1I102启动1I103僖止1输出-QO.1b、说明:在主程序中,I0.0I0.1I0.2I0.3就叫做实参。按下启动I0.0,则Q0,0=1,这时Q0.1也会=1,因为从PLC执行的角度看,执行第一个主程序调用子程序输出=1,执行第二个主程序调用子程序时(在第一个执行主程序调用主程序时输出变量=1),没有更改输出结果一-在子程序中LD0.0LD0.2构成逻辑或运算,1口0.0与1口0.2或运算结果=1,再与停止LD0.1

做与运算一从而输出结果=1。所以输出结果Q0.1也等于1。因此,输出变量应为IN_OUT变量正确程序子程序存昌变里类型数据类型立暮ENINBOOLLO.O启动IN3COLL0.1停止INBOOLL0.2输出IN.OUTBOOLDUT3COL子程欣生释网络1湍标题I网络注释,启尊由口 策匕皿.1 ,启尊由口 策匕皿.1 端)3皿.2主程序网络1SM0.0网络1SM0.0J1 SBR_0EN110.0J启动110.1J僖止IQ0.0-输出SBR_0EN启动停止SBR_0EN启动停止输出SM0.0—II 10.2—II 10.3—II Q0.1输出在左边。IN_OUT是先读取再输出,输出Q0.0读的是Q0.0的值,输出Q0.1读的是Q0.1的值。③输出参数变类型(0^0:输出参数为可写的变量,用于将子程序的执行结果返回给调用它的POU,输出参数,必须在每次调用结束前给其一个确定的值。在生成子程序块是位于右侧。④变量类型(TEMP):临时变量时暂时保持在局部数据区的变量,只有在执行某个POU时,它的临时变量才被使用。临时变量使用公共的存储区。因此在每次调用时,首先应初始化临时变量,然后再使用临时变量TEMP没有管脚。☆五、建立一个功能块编写一个功能块程序,用于计算一个存储器中为1的个数有多少个?(相当于三菱里SUM指令)分析:如何计算一个存储器中为1的个数有多少个如果VB0=10101100如何计算,用移位指令,移一次位就会有一个数据移出来,判断移出来这个位等于0还是等于1,“1”满足一次加一次,VB0移完以后会加4次。在西门子PLC中不仅有字节的表示还有字、双字表示。字一移16次,双字----移32次,所以说要建立一个功能块要满足字节、字、双字三种存储器的用法。字节、字、双字要移位的数据应该建一个IN变量,因为要把数据传送过去就是IN变量,IN变量可以是常数、可以是直接寻址也可以说是间接寻址,不同的地址字节、字、双字用间接寻址要好一点。①建立一个功能块健衰为*1&帆Mr□付节su辘如■1ENINbool2L0.。二start犷BOOL二 3LD1pointINDWORD跳删,t釉删施定4L05_口MtypgINB/TE)word=2,D™d=3.5IN6LW6resultIN.0UTIKI制的懂©?ourOLfT一qLWBtempiTEMPINTLBUitemp?TEMPBYTE©11LW11tmep3TEMPWORD12LD13temp4TEMPDWORDTEMP①开始计算的条件,满足一次执行一次是BOOL变量②参与计算的数,建了一个指针,指针的存储空间是32位所以是DWORD,换句话说外部输入用&丫80或VBx③建一个数据的类型,要确定一下数据类型会有一个管脚来确认上面指针的类型BYTE=1表示字节WORD=2表示字DWORD=3表示双字。④结果,建了一个IN_OUT变量,由于后面要做一个运算INC累加为1的次数⑤⑥⑦⑧临时变量,先不建用的时候再建。☆子程序输入注释ata_4ype-:LB5 1 | 1跳转一等于1时跳到标签1执行输入注释/Data.,typeLB5 1二词I 跳转一等于2时跳到标签2执行输入注释 1=曰I 3跳转一等于3时跳到标签3执行4|输入注程SMOX)| 1 | (由)都不等于时返回LAL(跳转到)标签1⑦启动条件①把指针数据前面加一个*表示:如果把数据&VB0给入到LD1里去,在LD1前加一个*表示地址就是VB0.把VB0数据转存到临时变量②LB10里去②对结果④进行清零:下次给数再重新运算FOR循环:循环的目的是移位,因为一个字节是8位,所以移位次数⑥=8⑤临时变量枇emp1:LW8暂存当前执行的次数,从1开始到8,移8位。SHL_B移位指令一左移,用右移也可以。对临时变量#temp2:LB10移位,每次移1位。移出的位有一个移出标志SM1.1进行判断,SM1.1是可读的。也就是说当移出的位是1的情况下SM1,1=1;如果移出的位等于0SM1.1=0INC_W;当SM1.1=1是记录一次,结果放入LW6。所以LW6建的时候就是IN_OUT变量(NEXT〕。输入注释 1I (由)移完以后后面的程序不会执行,因为后面的程序不是字节。--返回输入注释LHL等于2时跳到标签2执行

把机1)1挪出来,因为是字(16位)所以指令都是16位的指令把数据&VB0给入到LD1里去,在LD1前加一个*表示起始地址就是VB0,因为是16位指令,也就是皿0了临时变量枇empLW11是一个字的存储空间了,循环16次了叫输入注释

*输入注鞋SMO.O 1I Cg)MOVWizu ruriiMOVWizu rurii/IIH VUT把*LD1挪出来,因为是字(32位)所以指令都是32位的指令把数据&VB0给入到LD1里去,在LD1前加一个*表示起始地址就是VB0,因为是32位指令,也就是丫口0了临时变量枇empLW13是一个字的存储空间了,循环32次了

☆主程序将这个子程序命名SUM网络1网络标题

网络庄辉一SM0.01EN11 1P网络1网络标题

网络庄辉一SM0.01EN11 1P1 1mo-1■W2Q0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论