在S7-200中如何建立一个功能块
s7200数据块的用法
s7200数据块的用法如何使用S7-200 数据块(S7200)引言:S7-200 是一种经典的可编程控制器(PLC),被广泛应用于工业自动化控制系统。
而S7-200 的数据块(Data Block,简称DB)则是其核心组件之一。
本文将详细介绍S7-200 数据块的用法,包括定义、创建、使用和管理。
第一节:S7-200 数据块的定义和类型首先,我们需要了解S7-200 数据块的定义和类型。
数据块是一种变量容器,用于存储程序运行时需要使用的数据。
S7-200 数据块支持多种不同类型的数据,包括位(Bit)、字节(Byte)、字(Word)、双字(Double Word)和浮点数(Floating Point)。
每种数据类型都有其各自的存储空间和数据范围。
第二节:创建S7-200 数据块接下来,我们将讨论如何创建S7-200 数据块。
在S7-200 编程软件中,可以通过命令创建数据块。
首先,我们需要打开S7-200 编程软件,并创建一个新的项目。
然后,选择“数据块”选项,并点击“新建”按钮。
在新建数据块对话框中,我们可以选择数据块类型和名称,并指定数据块的存储范围和大小。
最后,点击“确定”按钮即可创建数据块。
第三节:使用S7-200 数据块在创建好数据块之后,我们可以开始使用它来存储和处理程序中的数据。
首先,我们需要在程序中声明使用的数据块,并给它赋初值。
例如,我们可以声明一个位数据块,命名为“Input_Data”,并将其初值设为0。
接下来,我们可以在程序中使用该数据块来进行逻辑运算和控制。
例如,我们可以使用数据块中的某个位作为开关控制某个输出设备的状态。
此外,我们还可以通过数据块来存储和读取模拟量传感器的测量值,以便进一步处理和分析。
第四节:管理S7-200 数据块在使用S7-200 数据块时,我们还需了解如何管理数据块。
管理数据块包括修改、删除和备份等操作。
修改数据块可以通过编辑数据块的定义和内容来实现。
S7-200 子程序和功能块的编写使用
S7-200子程序和功能块的编写使用
一个完整的程序要实现多个功能,我们可以只用一个主程序来实现,还可以分多个子程序单独来实现再由主程序分别调用;如果只用一个主程序就会显得很纷乱,而且调试修改效率低,而使用子程序可以一目了然,快速的确定问题所在。
所以首选使用子程序来编程。
在实际的项目中有很多类似的功能,像这样的就可以使用子程序,而不用多次复制相同的语句,而选择调用相同的子程序。
在编写子程序时,子程序中用的都是全局变量,而功能块中用到的都是局部变量L(其实功能块也是用子程序来变写),两者的另一个区别是:在调用子程序时不用给子程序任何的输入,只要一个使能就可以,而在调用功能块时就要给功能块输入一些参数,一般编好的功能块是有输入输出的,至于功能块中使用了那些变量我们不用去考虑,还有一个优点就是功能块内的变量是自动分配的,在变量中想添加一变量时可以直接插入而不用管它占用了那些变量地址。
所以要想实现某个功能就可以调用功能模块,我们只需要给几个参数,然后就直接取输出就可以了,很方便快捷,这样下来我们的程序就是由一个一个的功能块完成了,直观。
就在子程序的下图内创建我们需要的局部变量:
子程序中功能块的调用:
SM0.0
006
009我们的主程序就会变成这样:。
S7-200系列PLC的PID功能块的应用
请大家都来谈谈西门子S7-200系列PLC的PID功能块的应用问题,把实际经验都写出来,让大家都受益! PID参数的整定:1、可以在软件中进行自动整定;2、自动整定的PID参数可能对于系统来说不是最好的,就需要手动凭经验来进行整定。
P参数过小,达到动态平衡的时间就会太长;P参数过大,就容易产生超调。
PID功能块在梯形图(程序)中应当注意的问题:1、最好采用PID向导生成PID功能块;2、我要说一个最简单的也是最容易被人忽视的问题,那就是:PID功能块的使能控制只能采用SM0.0或任何1个存储器的常开触点并联该存储器的常闭触点这样的永不断开的触点!笔者在以前的一个工程调试中就遇到这样的问题:PID功能块有时间动作正常,有时间动作不正常,而且不正常时发现PID功能块都没问题(PID参数正确、使能正确),就是没有输出。
最后查了好久,突然意识到可能是使能的问题——我在使能端串联了启动/停止控制的保持继电器,我把它改为SM0.0以后,一切正常!同时也明白了PID功能块有时间动作正常,有时间动作不正常的原因:有时在灌入程序后保持继电器处于动作的状态才不会出现问题,一旦停止了设备就会出现问题——PID功能块使能一旦断开,工作就不会正常!把这个给大家说说,以免出现同样失误。
下面是PID控制器参数整定的一般方法:PID控制器的参数整定是控制系统设计的核心内容。
它是根据被控过程的特性确定PID控制器的比例系数、积分时间和微分时间的大小。
PID控制器参数整定的方法很多,概括起来有两大类:一是理论计算整定法。
它主要是依据系统的数学模型,经过理论计算确定控制器参数。
这种方法所得到的计算数据未必可以直接用,还必须通过工程实际进行调整和修改。
二是工程整定方法,它主要依赖工程经验,直接在控制系统的试验中进行,且方法简单、易于掌握,在工程实际中被广泛采用。
PID控制器参数的工程整定方法,主要有临界比例法、反应曲线法和衰减法。
三种方法各有其特点,其共同点都是通过试验,然后按照工程经验公式对控制器参数进行整定。
电气控制第5章-1
:L(0.0~63.7)、LB(0~63)、LW(0~62 )、LD(0~60)
(5)顺序控制继电器存储器(S)
S用于顺序控制(或步进控制) 顺序控制继电器指令提供控制程序的逻辑分段
,从而实现顺序控制。 S3.1、SB4、SW10、SD20 CPU226 模块内部顺序控制继电器存储器的有
数据类型检查 ◇完全数据类型检查 ◇简单数据类型检查 ◇无数据类型检查
SIMATIC指令集不支持完全数据类型检查。使 用局部变量时,执行简单数据类型检查,使 用全局变量时,执行无数据类型检查。
2. 数据长度与数值范围
不同的数据类型,具有不同的数据长度和数值范围。 见表5-4
指令的操作数具有一定的数据和长度,如整数乘法指令的操作 数是字型数据;编程时需要注意操作数的数据类型和指令 识志符相匹配
如M26.7
CPU226 模块内部标志位存储器的有效范围为 :M(0.0~31.7)、MB(0~31)、MW( 0~30 )、MD(0~28)
(3)变量存储器(V)
S7-200中有大量的变量存储器,用于模拟量控 制、数据运算、参数设置及存放程序执行过 程中控制逻辑操作的中间结果。变量存储器 可以位为单位使用,也可以按字节、字、双 字为单位使用。
4、用户程序的运算是根据PLC的输入/输出映象寄存器中 的内容,逻辑运算结果可以立即被后面的程序使用;
5、PLC的内部继电器不能做控制用,只能存放逻辑控制 的中间状态;
6、输出线圈不能直接驱动现场的执行元件,通过I/O模 块上的功率器件来驱动。
5.2 S7-200 PLC的基本指令及编程方法
编程时,应注意各操作数的数据类型及数值范围
西门子S7-200PLC指令系统手册
(二)输出指令 梯形图(LAD)中,“()”表示线圈,“能 流”到线圈端,则线圈被激励,其Q寄存器的相 应位为1,反之为0; 语句表(STL)中,输出指令为“=”,把栈 顶值复制到操作数地址指定的存储器位(bit), 堆栈各级栈值不变。 (三)置位和复位指令-把从操作数(bit)指定 的地址开始的N个点都被置位或复位,其中N=1 -255
3. 修改指针:用自增或自减指令修改指针,则可 连续存取存储单元中的数据
五、用户程序的结构 用户程序可分为三个区:主程序、子程序和 中断程序; 主程序(OB1):是用户程序的主体,CPU 在每一个扫描周期都要执行一次主程序指令; 子程序:可选部分,只有主程序调用时才执 行; 中断程序:可选部分,只有当发生中断事件 时,才执行中断程序,可在扫描周期的任意点执 行。
(二)直接寻址-指令中直接给出操作数的地址 的寻址方式 例: 位寻址 AND Q5.5
字节寻址 ORB VB33 , LB21 字寻址 双字寻址 MOVW MOVD AC0 , AQW200 AC1 , VD200
(三)间接寻址-指令中给出了存放操作数地 址的存储单元的地址的寻址方式 1. 建立指针
S7-200 PLC 的SIMATIC指令集不支持完全 数据类型检查; 使用局部变量时,执行简单数据类型检查; 使用全局变量时,指令操作数为地址而不是 可选的数据类型时,执行无数据类型检查。 (二)数据长度和数值范围 数据长度:用字节型(B)、字型(W)、 双字型(D)分别表示8位、16位、32位数据; 不同的数据长度对应的数据范围如表5-4所示
在语句表(STL)中,没有EN允许输入端, 但允许执行指令的条件是栈顶的值必须为1。 功能框的ENO端是允许输出端,即允许功能 框的布尔量输出,用于指令的级联 ; 语句表(STL)中,用AENO(ANDENO)指 令产生允许输出。 (四)条件输入、无条件输入 条件输入:在梯形图(LAD)、功能块图 (FBD)中,与“能流”有关的功能框或线圈不直 接与左母线连接;
西门子S7-200plc如何在程序块下创建或添加自己的库
西门子S7-200plc如何在程序块下创建
或添加自己的库
用户可以把自己编制程序集成到编程软件Micro/WIN中。
这样可以在编程时调用实现相同功能的库指令,而不必同时打开几个项目文件拷贝。
指令库也可以方便地在多个编程计算机之间传递。
新建库操作步骤:第一步:在Micro/WIN的File(文件)菜单中,选择CreatLibrary...(建立库)命令;或者用鼠标右键单击指令树的Libraries(指令库)分支,选择CreatLibrary...第二步:在CreatLibrary对话框中选择哪些子程序要集成为指令库第三步:在Properties(属性)标签中设置指定指令库名称指定要生成的库文件的目录路径指定版本信息第四步:在Protection(保护)标签中设置密码第五步:按OK按钮确定,输出指令库文件指令库文件扩展名为.mwl,缺省情况下存在Micro/WIN安装目录下的lib文件夹中。
库文件可以作为单独的文件拷贝、移动。
添加指令库第一步:在Micro/WIN的File(文件)菜单中选择Add/RemoveLibraries...(添加/删除指令库)命令;或者在指令树的Libraries(指令库)分支上单击鼠标右键,选择Add/RemoveLibraries...第二步:按Add(添加)按钮,选择新定义的库文件路径。
用户自定义库将自动添加到
Micro/WIN指令树的Libraries分支下。
调用用户定义指令库指令库的使用方法与子程序基本一样。
欧姆龙PLC功能块的制作与应用教学内容
欧姆龙PLC功能块的制作与应用在PLC控制系统中,需要多次调用某种连续功能类似的功能时,可以将所需的功能进行打包封装成功能块,这样可以实现功能复用。
再在梯形图中直接调用经过检测的功能块即可,从梯形图上来看简洁,从PLC内存来看,这样可以减少内存量。
一:制作梯形图形式功能块。
在CX-Programmer左下角功能块右键,插入梯形图,新建功能块文件名。
在梯形区域编写梯形图指令。
当遇到变量时,可在编写梯形图时,定义。
比如“TEMP”数据类型为”REAL” 使用的范围为“内部”(即表示此变量生命周期在此功能块内部),在数组大小设置“3”,意思为定义3个数据类型为浮点数的变量。
同样对功能块的“输出”与“输入”进行定义。
注意“输入”定义的为INT,输出为LREAL。
二:制作ST文本形式功能块。
同样在功能块插入选择ST文本。
按照ST文本的编写规则编写ST代码,本次包含算法为将整数转换为浮点数再进行浮点四则运算之后执行指数幂操作,最后再将原运算后的长浮点数转换为普通浮点数。
因为此运算简单,无需定义内部变量,只需要定义输入与输出端口即可。
注意此处将OUT 定义为REAL(普通浮点数)。
三:执行编译命令。
在编写完梯形图形式功能块与ST文本形式功能块后,需执行编译命令,来看查编写的功能块是否存在语句错误或者指令错误。
比如此文本因为将原长浮点数转换为普通浮点数,将会影响到数据的精确度,所以在编译结果中就已提示为“警告”。
当编译存在“错误”时,需重要检查功能块,警告只是作为一种提醒,对功能块不影响。
四:循环段中插入功能块。
1:段1插入的为使用梯形图形式的功能块;2:段2插入的为使用ST文本形式的功能块;3:段3为直接在梯形图中使用指令来实现功能块内部的算法;4:段4分别将梯形图功能块与ST文本功能块产生的结果与直接用指令运算产生的结果进行比较。
从而可以判断三者运算后的结果一致性。
指令解析:FLT:将二进制转换为浮点数,为后面的浮点运算作准备;/F :浮点数除法;-F :浮点数减法;PWR:执行指定数据的指数次方(幂操作)。
S7-200 SMART PLC 系统功能说明(图文并茂)
Page 1 of 58
存储卡
S 7 2 0 0S M A R TC P U支持商用M i c r o S D 卡(支持容量为4 G ,8 G ,1 6 G ):可用于程序传输,C P U 固件更新,恢复 C P U出厂设置。 打开C P U 本体数字量输出点上方的端子盖,可以看到右侧有一卡槽,将M i c r o S D 卡缺口向里插入,如图 1 所示:
S7-200 SMART 实时时钟
S 7 2 0 0S M A R T 的硬件实时时钟可以提供年、月、日、时、分、秒的日期/ 时间数据。 C P UC R 4 0A C / D C / R e l a y没有内置的实时时钟,C P US R 2 0 、C P US R 4 0 、C P US T 4 0 、C P US R 6 0 、C P US T 6 0 支持内置的实时时钟,C P U 断电 状态下可保持7 天。 S 7 2 0 0S M A R TC P US R 2 0 的时钟精度是± 1 2 0秒 /月,C P US R 4 0 、C P US T 4 0 、C P US R 6 0 、C P US T 6 0 的时钟精度是 1 2 0秒 /月。 S 7 2 0 0S M A R TC P U靠内置超级电容为实时时钟提供电源缓冲,保持时间为典型值7 天,最小值6 天。缓冲电源放电完毕后,再次上电后 时钟将停止在缺省值,并不开始走动。 注意:因为 C P UC R 4 0无内置超级电容,所以实时时钟无电源缓冲,尽管用户可以使用R E A D _ R T C和 S E T _ R T C指令设置日期/ 时间 数据,但是当 C P UC R 4 0断电并再次上电时,这些日期/ 时间数据会丢失,上电后日期时间数据会被初始化为2 0 0 0 年1 月1 日。 为了提高运算效率,应当避免每个程序周期都读取实时时钟。实际上可读取的最小时间单位是1 秒,可每秒读取一次(使用S M 0 . 5 上 升沿触发读取指令)。 使用程序读取的实时时钟数据为B C D 格式,可在状态表中使用十六进制格式查看。 要设置日期、时间值,使之开始走动,可以:
在S7-200中如何建立一个功能块
在S7-200中如何建立一个功能块❶字符:8位,等于一个字节❷字符串:存储=字符个数+1字节如smart :5个字符+1个字节=6个字节,这1个字节表示第一个地址,是存储个数。
比如把smart存储到VB100中第一个地址:是存储个数 VB100=5,因为有5个字符第二个地址:VB101存储s第三个地址:VB102存储m第四个地址:VB103存储a第五个地址:VB104存储r第六个地址:VB105存储t二、功能块指令的作用在编写程序过程中有写控制要求或是一些运算会重复执行的,对于这些会重复执行的程序,为了提高编程的效率,往往会把一些会重复执行的功能编写成一个功能块。
或者把一些应用到比较典型的做成一个指令。
二、功能块指令建立方法在S7-200系列PL的程序结构中,分为主程序、子程序、中断程序。
子程序分为带参数的子程序和不带参数的子程序,功能即为一个带参数的子程序。
三、功能块指令的建立需要建立一个带参数的子程序,那么需要在子程序的变量表中(或接口区)中定义好相应的变量,然后在子程序的编程中,使用在变量表中定义的变量去编写程序,子程序上面就有相应的接口区。
☆数据类型:对应地址,选好数据类型系统自动分配地址:如果选BYTE系统自动寻址→LBX;如果选WORD系统自动寻址→LWX。
所以地址的分配不用管系统自动分配,是由数据类型决定的。
四、变量类型说明变量的类型在使用过程中是不一样的,比如说子程序做好了以后有的位于子程序左侧,有的位于子程序右侧,有的在上面没有管脚。
这跟习惯有关,左进右出。
①变量类型(IN):输入参数为可读❶变量,将调用它的POU提供的数据值传入子程序❷,可以使用常数,直接寻址❸间接寻址❹的方传入到子程序。
在生成子程序块是位于左侧。
这跟习惯有关,左进右出❶可读:以PLC为例,可读的点是输入点,因为是从外边获取的信息、数据过来的,输入点大部分是常开常闭。
❷将调用它的POU提供的数据值传入子程序:它→指子程序;POU→指主程序。
S7-200MODBUS主站程序块
VB200 12
VB201 34
VB202 56
VB203 78
VB204 9A
VB205 BC
Modbus 数字量地址映射举例:
位地址(0xxxx 和 1xxxx)数据总是以字节为单位打包读写。第一个字节中的最低有效位对应 Modbus地址的起始地址。如下图所示:
如何访问大于 9999 的保持寄存器地址?
通常 Modbus 协议的保持寄存器地址范围在 40001 - 49999 之间。对于多数应用来说已经够了。但有些 Modbus从站把地址映射到保持寄存器区的地址超过 9999 的部分。
Modbus Master 协议库支持超过 9999 的保持寄存器地址。地址范围为 400001 - 465536。只需在调用MBUS_MSG 子程序时给 Addr 参数赋相应的值即可,如 416768。
有些设备表明它支持 Modbus RTU 通信协议,但也详细提供了读写数据的详细通信帧格式,其中包括如何指定 Modbus站的地址,需要读写数据类型、长度等等。数据帧有特定字节指出此指令读写的数据类型和地址,此字节的数据内容即所谓“功能码”,如功能 1指定读取单个/多个数字量输出点的值。
支持 Modbus 协议的设备或软件,使用时用户直接设置或看到的应当是 Modbus 数据地址。Modbus地址所访问的数据,是通过各种“功能”读写而来。功能码是 Modbus 地址的底层。如果 Modbus 通信的一方提供的所谓Modbus 协议只有功能码,则需要注意了解此功能号与 Modbus 地址间的对应关系。
输入寄存器
读 功能 4
写 -
40001 - 49999
保持寄存器 读 功能 3
S7-200PLC使用说明书及编程软件
S7-200 PLC 使用说明一、 PLC 的结构与工作原理PLC 的结构PLC 的类型繁多,功能和指令系统也不尽相同,但结构与工作原理则大同小异,通常由主机、输入/输出接口、电源、编程器扩展器接口和外部设备接口等几个主要部分组成。
1. 主机主机部分包括中央处理器(CPU )、系统程序存储器和用户程序及数据存储器。
CPU 是PLC 的核心,它用以运行用户程序、监控输入/输出接口状态、作出逻辑判断和进行数据处理,即读取输入变量、完成用户指令规定的各种操作,将结果送到输出端,并响应外部设备(如编程器、电脑、打印机等)的请求以及进行各种内部判断等。
PLC 的内部存储器有两类,一类是系统程序存储器,主要存放系统管理和监控程序及对用户程序作编译处理的程序,系统程序已由厂家固定,用户不能更改;另一类是用户程序及数据存储器,主要存放用户编制的应用程序及各种暂存数据和中间结果。
2. 输入/输出(I/O )接口I/O 接口是PLC 与输入/输出设备连接的部件。
输入接口接受输入设备(如按钮、传感器、触点、行程开关等)的控制信号。
输出接口是将主机经处理后的结果通过功放电路去驱动输出设备(如接触器、电磁阀、指示灯等)。
I/O 接口一般采用光电耦合电路,以减少电磁干扰,从而提高了可靠性。
I/O 点数即输入/输出端子数是PLC 的一项主要技术指标,通常小型机有几十个点,中型机有几百个点,大型机将超过千点。
3. 电源图中电源是指为CPU 、存储器、I/O 接口等内部电子电路工作所配置的直流开关稳压电源,通常也为输入设备提供直流电源。
4. 编程器编程器是PLC 的一种主要的外部设备,用于手持编程,用户可用以输入、检查、修改、调试程序或监示PLC 的工作情况。
除手持编程器外,还可通过适配器和专用电缆线将PLC 与电脑联接,并利用专用的工具软件进行电脑编程和监控。
5. 输入/输出扩展单元I/O 扩展接口用于连接扩充外部输入/输出端子数的扩展单元与基本单元(即主机)。
欧姆龙PLC功能块的制作与应用
欧姆龙PLC功能块的制作与应用欧姆龙PLC(Programmable Logic Controller,可编程逻辑控制器)是一种广泛应用于自动化控制系统中的电子设备。
它能通过编程来实现对各种设备和机器的逻辑运算和控制,用于实现自动化生产和操作过程。
为了更好地理解欧姆龙PLC功能块的制作与应用,下面将详细介绍。
首先,制作欧姆龙PLC功能块的过程是通过PLC编程软件进行的。
PLC编程软件通常提供了一个图形化界面,在界面上可以用图形符号表示不同的功能块。
通过将这些功能块按照逻辑关系连接起来,就可以实现对设备和机器的控制。
欧姆龙的PLC编程软件通常是CX-Programmer,具有易于学习和使用的特点。
制作欧姆龙PLC功能块的过程通常可以分为以下几个步骤:1.确定功能需求:首先需要明确所需的功能和逻辑关系。
比如,在自动化生产线上控制一个机器的启动和停止,需要确定哪些条件触发机器启动和停止的逻辑关系。
2.设计功能块:根据功能需求,设计相应的PLC功能块。
PLC功能块通常由输入、输出和中间变量组成。
输入变量是接收外部信号的触发条件,输出变量用于控制设备和机器的启停,中间变量用于实现逻辑运算和存储临时数据。
3.连接功能块:将设计好的功能块按照逻辑关系连接起来。
通常可以使用连线将一个功能块的输出与另一个功能块的输入相连接,以实现信号传递和逻辑关系。
4.编写逻辑程序:在连接好功能块之后,需要编写逻辑程序来实现功能。
逻辑程序通常由一系列的指令组成,这些指令用于控制输入和输出变量的状态,以及执行逻辑运算和判断条件。
5.调试和测试:完成逻辑程序编写后,需要对PLC进行调试和测试。
可以通过连接真实设备来模拟运行情况,检查逻辑程序的正确性和设备响应的准确性。
制作好的功能块可以在需要的地方进行重复使用,提高了编程的效率和代码的可维护性。
下面是一些常见的欧姆龙PLC功能块的应用场景:1.逻辑控制功能:可以通过逻辑控制功能块来实现各种逻辑运算和判断条件。
西门子PLCS7-200图解教程
模块数目见表3.2。
S7-200 CPU存储器系统
S7-200 CPU存储器系统由RAM和EEPROM两种存储
器构成。 系统掉电时,自动将RAM中M存储器的有关内容保存到 EEPROM存储器。
3.1.2 扫描周期及工作方式
写输出
读输入
一个扫描周 期 执行CPU自诊断 执 行 程 序 处理通讯请求
5. 特殊标志位(SM)存储器
CPU 224编址范围SM0.0 ~SM179.7,共180个字节。其中SM0.0~SM29.7
的30个字节为只读型区域。 ① SMB0为状态位字节,在每次扫描循环结尾由S7-200 CPU更新,定义如下: SM0.0 RUN状态监控,PLC在运行RUN状态,该位始终为1。 SM0.1 首次扫描时为1,PLC由STOP转为RUN状态时,ON(1态)一个扫描周期,用 于程序的初始化。 SM0.2 当RAM中数据丢失时,ON一个扫描周期,用于出错处理。 SM0.3 PLC上电进入RUN方式,ON一个扫描周期。 SM0.4 分脉冲,该位输出一个占空比为50%的分时钟脉冲。用作时间基准或简易延时。 SM0.5 秒脉冲,该位输出一个占空比为50%的秒时钟脉冲。可用作时间基准。 SM0.6 扫描时钟,一个扫描周期为ON(高电平),另一为OFF(低电平)循环交替。 SM0.7 工作方式开关位置指示,0为TERM位置,1为RUN位置。为1时,使自由端口 通讯方式有效。 ② SMB1为指令状态位字节,常用于表及数学操作,部分位定义如下: SM1.0 零标志,运算结果为0时,该位置1。 SM1.1 溢出标志,运算结果溢出或查出非法数值时,该位置1 。 SM1.2 负数标志,数学运算结果为负时,该位为1。
S7-200PLC的基本指令和程序设计
S7-200PLC旳基本指令及程序 设计
5.1 S7-200 PLC旳编程语言
1.梯形图(LAD)编程语言 梯形图是与电气控制电路图相呼
应旳图形语言。它起源于继电器逻辑 控制系统旳描述。
I0.1 Q0.0
I0.0
Q0.0
()
2.功能块图(FBD) 功能块图类似于一般逻辑概
念图,沿用了半导体逻辑电路旳 逻辑框图体现方式。
9、模拟量输入映像寄存器(AI) 模拟量输入模块将外部输入旳模拟信号旳模拟量转换成1个
字长旳数字量,存储在模拟量输入映像寄存器(AI)中,供CPU 运算处理。如AIW0,AIW2,AIW4等。
10、模拟量输出映像寄存器(AQ) CPU运算成果存储在模拟量输出映像寄存器(AQ)中,供
D/A转换器将1个字长旳数字量转换成模拟量。如AQW0,AQW2, AQW4等。
3)其他地址格式 数据区存储器区域中,还涉及定时器存储器(T)、计数
器存储器(C)、累加器(AC)、高速计数器(HC)等,它 们是模拟有关旳电器元件旳。它们旳地址格式为:Ay。
由区域标识符A和元件号y构成,例T24表达某定时器旳地 址,T是定时器旳区域标识符,24是定时器号。
5.3 编程元件
1、输入/输出继电器(I/Q)
3.数据区存储器旳地址表达格式 存储器是由许多存储单元构成,每个存储单元都有惟一旳
地址,能够根据存储器地址来存取数据。数据区存储器地址旳 表达格式有位、字节、字、双字地址格式。
1)、位地址格式 某一位旳地址由存储器区域标识符、字 节地址及位号构成,如V5.4,I0.0等。
图5-2 存储器中旳位字地址
FR
M 3~
注意调相
电动机旳正反转控制
S7-200SMARTPLC编程说明
数据类型S 7-200 S M A R T 的数据主要分为:l与实际输入/与实际输入/输出信号相关的输入/输出信号相关的输入/输出信号相关的输入/输出映象区: 输出映象区:¡I :数字量输入(D :数字量输入(DI I ) ) ¡Q :数字量输出(D :数字量输出(DO O ) ) ¡A I :模拟量输入 :模拟量输入 ¡A Q :模拟量输出 :模拟量输出l内部数据存储区¡V :变量存储区,可以按位、字节、字或双字来存取V :变量存储区,可以按位、字节、字或双字来存取V 区数据 区数据 ¡M :位存储区,可以按位、字节、字或双字来存取M :位存储区,可以按位、字节、字或双字来存取M区数据 区数据 区数据 ¡T :定时器存储区,用于时间累计 :定时器存储区,用于时间累计¡C :计数器存储区,用于累计其输入端脉冲电平由低到高的次数 :计数器存储区,用于累计其输入端脉冲电平由低到高的次数 ¡H C :高速计数器,独立于 :高速计数器,独立于 C C P U 的扫描周期对高速事件进行计数,高速计数器的当前值是只读值,仅可作为双字(3值,仅可作为双字(322 位)来寻址 位)来寻址¡A C :累加器,可以像存储器一样使用的读/:累加器,可以像存储器一样使用的读/写器件,可以按位、字节、字或双字访问累加器中的写器件,可以按位、字节、字或双字访问累加器中的数据 数据¡S M :特殊存储器,提供了在 :特殊存储器,提供了在 C C P U 和用户程序之间传递信息的一种方法。
和用户程序之间传递信息的一种方法。
可以使用这些位来选可以使用这些位来选择和控制 择和控制 C C P U 的某些特殊功能, 的某些特殊功能, 可以按位、字节、字或双字访问 可以按位、字节、字或双字访问 可以按位、字节、字或双字访问 S S M 位 位 ¡L :局部存储区,用于向子例程传递形式参数 :局部存储区,用于向子例程传递形式参数¡S :顺序控制继电器,用于将机器或步骤组织到等效的程序段中,实现控制程序的逻辑分段。
S7-200PLC教程第6章
6.3 共享数据块与复杂数据类型
6.3.1 共享数据块的生成与使用 生成数据块 数据块的两种显示方式 6.3.2 复杂数据类型的生成与使用 1.基本数据类型 基本数据类型包括位(Bool),字节(Byte)、字(Word)、双字(Dword)、整数 (INT)、双整数(DINT)和浮点数(Float,或称实数Real)等。 2.复合数据类型 日期和时间用8个字节的BCD码来存储。 8 BCD 字符串(STRING)由最多254个字符和2字节的头部组成。 3.数组 数组(ARRAY)由同一类型的数据组合而成。ARRAY[1..2,1..3]是一个二维数组,共有6 个整数元素。最多为6维。 数组元素”TANK”.PRESS[2,1]:TANK是数据块的符号名,PRESS是数组的名称。 数据视图方式的数组元素及初值,用数组定义数据块的大小。 4.结构 结构(STRUCT)是不同类型的数据的组合。可以用基本数据类型、复杂数据类型和UDT 作为结构中的元素,可以嵌套8层。 数据块TANK内结构STACK的元素AMOUNT表示为”TANK”.STACK.AMOUNT。
5.功能块(FB) 功能块是用户编写的有自己的存储区(背景数据块)的块,每次调用功能 块时需要提供各种类型的数据给功能块,功能块也要返回变量给调用它的块。 这些数据以静态变量(STAT)的形式存放在指定的背景数据块(DI)中,临时变量 存储在局域数据堆栈中。功能块执行完后,背景数据块中的数据不会丢失,但 是不会保存局部数据堆栈中的数据。 FB和FC的共性: 均为用户编写的子程序,局部数据变量均有IN、OUT、IN_OUT和TEMP。 FC的RET_VAL属于OUT变量。临时变量TEMP存储在局部数据堆栈中。调 用功能和功能块时要为形参(形式参数)指定实参(实际参数),执行FC 和FB时用实参代替形参。 FB和FC的区别: FB比FC多了静态变量STAT和背景数据块DI,后者用来保存TEMP之外的 变量。 可以在FB的变量声明表中给形参赋初值。 调用FB或SFB时,必须指定背景数据块。在编译FB或SFB时自动生成背 景数据块中的数据。一个功能块可以有多个背景数据块,用于不同的被控对 象。
S7-200仿真软件的使用及解决部分问题的方法(汉化作者)
S7-200仿真器汉化版FAQ自从笔者汉化的西班牙版的 S7-200 仿真器软件在网上共享并为电子光盘收录后,收到大量网友来信,询问使用中的一些问题,由于大部分问题都相同,故将其整理后作为一个FAQ放在这里。
一、一般使用教程①在 Step 7 Micro/Win 中新建一个项目②输入程序,编译正确后在“文件”菜单中选择“导出...”保存为 AWL 文件③打开仿真软件,点“配置”-“CPU 型号”(或在已有的CPU图案上双击)④在弹出的对话框中选择CPU型号,要与你项目中的型号相同⑤点“程序”-“载入程序”(或工具条中的第二个按钮)⑥会有个对话框,这里要选择你的Step 7 MicroWin 的版本有 3.1 和 3.2 两个选择,按你使用的 Micro/Win 版选择即可⑦将先前导出的 AWL 文件打开,会提示无法打开文件(不要管它,直接确定)这里出现错误的原因是无法打开数据块(.odb)和CPU配置文件(.cfg)(2.1以前版的格式)载入程序时不要载入全部,只载入逻辑块则不会出现错误,数据块可以在MicroWIN 复制后进入仿真器中用“粘贴数据块”功能加入。
⑧点“PLC”-“运行”(或工具栏上的绿色三角按钮) ,好了,程序已经开始模拟运行了仿真软件已更新至2.0版,更详细的教程请参考压缩包内的教程文本或视频教程。
二、使用中的常见问题①载入 Micro/WIN V4.0 格式的程序时出错常见错误对话框如下:经对比发现 V4.0 与 V3.2 的 Micro/WIN 生成的 AWL 格式其实是相同的,只有第一行有区别。
V4.0 第一行为:ORGANIZATION_BLOCK 主:OB1。
V3.2 第一行为:ORGANIZATION_BLOCK MAIN:OB1。
用文本编辑打开 AWL 文件将第一行中的“主”改为“MAIN”后正常导入。
这是因为 V4.0 的软件生成的程序默认主程序名为“主”,将其改为英文的"MAIN" 再导出则不用手工修改 AWL 文件。
在S7200中如何建立一个功能块
在S7-200中如何建立一个功能块第五个地址:VB104存储r第六个地址:VB105存储t二、功能块指令的作用在编写程序过程中有写控制要求或是一些运算会重复执行的,对于这些会重复执行的程序,为了提高编程的效率,往往会把一些会重复执行的功能编写成一个功能块。
或者把一些应用到比较典型的做成一个指令。
二、功能块指令建立方法在S7-200系列PL的程序结构中,分为主程序、子程序、中断程序。
子程序分为带参数的子程序和不带参数的子程序,功能即为一个带参数的子程序。
三、功能块指令的建立需要建立一个带参数的子程序,那么需要在子程序的变量表中(或接口区)中定义好相应的变量,然后在子程序的编程中,使用在变量表中定义的变量去编写程序,子程序上面就有相应的接口区。
☆数据类型:对应地址,选好数据类型系统自动分配地址:如果选BYTE系统自动寻址→LBX;如果选WORD系统自动寻址→LWX。
所以地址的分配不用管系统自动分配,是由数据类型决定的。
四、变量类型说明变量的类型在使用过程中是不一样的,比如说子程序做好了以后有的位于子程序左侧,有的位于子程序右侧,有的在上面没有管脚。
这跟习惯有关,左进右出。
上图中,启动I0.0、停止I0.1是可读→IN的变量输出Q0.0是可读(自锁)可写(线圈)→IN_ OUT变量输出1Q0.1在整个程序中只用了写的功能→OUT变量B):这是自加一指令,将VB0读出再写入VB0→也是IN_OUT变量C):A值、B值是输入,所以是IN;☆IN_OUT与TEMP区别:IN_OUT可读可写在外围会有一个管脚,从外围先把初始值写进运算;TEMP是内部运算以后存储数据的结果的暂存,不会有输出,调用完子程序数据就放弃了。
所以C值是TEMP,是暂存一次A+B的一个中间结果而已,没有任何需要从外围给数据进去,或者说运算完结果给出去。
D):如果把IN_OUT变量建成OUT变量会出现什么结果?会执行程序出错。
举例说明:a、子程序:将输出建成OUT变量b、主程序输出在左边。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在S7-200中如何建立一个功能块
❶字符:8位,等于一个字节
❷字符串:存储=字符个数+1字节
如smart :5个字符+1个字节=6个字节,这1个字节表示第一个地址,是存储个数。
比如把smart存储到VB100中第一个地址:是存储个数 VB100=5,因为有5个字符第二个地址:VB101存储s
第三个地址:VB102存储m
第四个地址:VB103存储a
第五个地址:VB104存储r
第六个地址:VB105存储t
二、功能块指令的作用
在编写程序过程中有写控制要求或是一些运算会重复
执行的,对于这些会重复执行的程序,为了提高编程的效率,往往会把一些会重复执行的功能编写成一个功能块。
或者把一些应用到比较典型的做成一个指令。
二、功能块指令建立方法
在S7-200系列PL的程序结构中,分为主程序、子程序、中断程序。
子程序分为带参数的子程序和不带参数的子程序,功能即为一个带参数的子程序。
三、功能块指令的建立
需要建立一个带参数的子程序,那么需要在子程序的变量表中(或接口区)中定义好相应的变量,然后在子程序的编程中,使用在变量表中定义的变量去编写程序,子程序上面就有相应的接口区。
☆数据类型:对应地址,选好数据类型系统自动分配地址:如果选BYTE系统自动寻址→LBX;如果选WORD系统自动寻址→LWX。
所以地址的分配不用管系统自动分配,是由数据类型决定的。
四、变量类型说明
变量的类型在使用过程中是不一样的,比如说子程序做好了以后有的位于子程序左侧,有的位于子程序右侧,有的在上面没有管脚。
这跟习惯有关,左进右出。
①变量类型(IN):输入参数为可读❶变量,将调用它
的POU提供的数据值传入子程序❷,可以使用常数,
直接寻址❸间接寻址❹的方传入到子程序。
在生成子程序块是位于左侧。
这跟习惯有关,左进右
出
❶可读:以PLC为例,可读的点是输入点,因为是从外边获取的信息、数据过来的,输入点大部分是常开常闭。
❷
将调用它的POU提供的数据值传入子程序:它→指子程序;POU→指主程序。
也就是说主程序通过输入的方式传递给子程序
❸直接寻址:比如VW100
❹间接寻址:&VB100
②变量类型(IN_OUT):可读可写的变量❶,其初始值
由调用它的POU传送给子程序,并用同一参数将子程序的执行结果返回给调用它的POU,因此常数和指针不能用于输入。
是以IN为主,所以位于程序块左边。
❶以程序为例:
A):
上图中,启动I0.0、停止I0.1是可读→IN的变量
输出Q0.0是可读(自锁)可写(线圈)→
IN_ OUT变量
输出1Q0.1在整个程序中只用了写的功能
→OUT变量
B):
这是自加一指令,将VB0读出再写入VB0→也是IN_
OUT变量
C):
A值、B值是输入,所以是IN;
☆IN_OUT与TEMP区别:
IN_OUT可读可写在外围会有一个管脚,从外围先
把初始值写进运算;
TEMP是内部运算以后存储数据的结果的暂存,不会有输出,调用完子程序数据就放弃了。
所以C值是TEMP,是暂存一次A+B的一个中间结果而已,没有任何需要从外围给数据进去,或者说运算完结果给出去。
D):如果把IN_OUT变量建成OUT变量会出现什么结果?
会执行程序出错。
举例说明:
a、子程序:
将输出建成OUT变量
b、主程序
再调用一次主程序,因为带参数的子程序就是可以重复调用。
只是说外围给不同的实参。
b、说明:
在主程序中,I0.0 I0.1 I0.2 I0.3就叫做实参。
按下启动I0.0,则Q0.0=1,这时Q0.1也会=1,因为从PLC执行的角度看,执行第一个主程序调用子程序输出=1,执行第二个主程序调用子程序时(在第一个执行主程序调用主程序时输出变量=1),没有更改输出结果---在子程序中LD0.0 LD0.2构成逻辑或运算,LD0.0与LD0.2或运算结果=1,再与停止LD0.1
做与运算—从而输出结果=1。
所以输出结果Q0.1也等于1。
因此,输出变量应为IN_OUT变量
正确程序
子程序
主程序
输出在左边。
IN_OUT是先读取再输出,输出Q0.0读
的是Q0.0的值,输出Q0.1读的是Q0.1的值。
③输出参数变类型(OUT):输出参数为可写的变量,
用于将子程序的执行结果返回给调用它的POU,输出
参数,必须在每次调用结束前给其一个确定的值。
在生成子程序块是位于右侧。
④变量类型(TEMP):临时变量时暂时保持在局部数据区
的变量,只有在执行某个POU时,它的临时变量才被使用。
临时变量使用公共的存储区。
因此在每次调用时,首先应初始化临时变量,然后再使用
临时变量TEMP没有管脚。
☆
五、建立一个功能块
编写一个功能块程序,用于计算一个存储器中为1的个数有多少个?(相当于三菱里SUM指令)
分析:如何计算一个存储器中为1的个数有多少个
如果VB0=10101100如何计算,用移位指令,移一次位就会有一个数据移出来,判断移出来这个位等于0还是等于1,“1”满足一次加一次,VB0移完以后会加4次。
在西门子PLC中不仅有字节的表示还有字、双字表示。
字—移16次,双字----移32次,所以说要建立一个功能块要满足字节、字、双字三种存储器的用法。
字节、字、双字要移位的数据应该建一个IN变量,因为要把数据传送过去就是IN变量,IN变量可以是常数、可以是直接寻址也可以说是间接寻址,不同的地址字节、字、双字用间接寻址要好一点。
①建立一个功能块
①开始计算的条件,满足一次执行一次是BOOL变量
②参与计算的数,建了一个指针,指针的存储空间是32位
所以是DWORD,换句话说外部输入用&VB0或VBx
③建一个数据的类型,要确定一下数据类型会有一个管脚
来确认上面指针的类型BYTE=1表示字节 WORD=2表示字DWORD=3表示双字。
④结果,建了一个IN_OUT变量,由于后面要做一个运算INC
累加为1的次数
⑤⑥⑦⑧临时变量,先不建用的时候再建。
☆子程序
跳转--等于1时跳到标签1执行
跳转--等于2时跳到标签2执行
跳转--等于3时跳到标签3执行
都不等于时返回
(跳转到)标签1
⑦启动条件
①把指针数据前面加一个*表示:如果把数据&VB0给入到
LD1里去,在LD1前加一个*表示地址就是VB0.把VB0数据转存到临时变量②LB10里去
②对结果④进行清零:下次给数再重新运算
FOR循环:循环的目的是移位,因为一个字节是8位,所以移位次数⑥=8
⑤临时变量#temp1:LW8暂存当前执行的次数,从1开始到8,移8位。
SHL_B移位指令—左移,用右移也可以。
对临时变量#temp2:LB10移位,每次移1位。
移出的位有一个移出标志SM1.1进行判断,SM1.1是可读的。
也就是说当移出的位是1的情况下SM1.1=1;如果移出的位等于0 SM1.1=0
INC_W;当SM1.1=1是记录一次,结果放入LW6。
所以LW6建的时候就是IN_OUT变量
移完以后后面的程序不会执行,因为后面的程序不是字节。
--返回
等于2时跳到标签2执行
把*LD1挪出来,因为是字(16位)所以指令都是16位的指令
把数据&VB0给入到LD1里去,在LD1前加一个*表示起始地址就是VB0,因为是16位指令,也就是VW0了
临时变量#tempLW11是一个字的存储空间了,循环16次了
把*LD1挪出来,因为是字(32位)所以指令都是32位的指令
把数据&VB0给入到LD1里去,在LD1前加一个*表示起始地址就是VB0,因为是32位指令,也就是VD0了
临时变量#tempLW13是一个字的存储空间了,循环32次了
☆主程序
将这个子程序命名SUM
Data_t~字节就选1 字就选2 双字就选3
可以把这个子程序做好后添加库里面去,方法很简单右键点击创建添加库。