西门子PLC指令实例教程
第4章西门子PLC编程举例3(数字指令)

四、STEP 7基本数据类型
关键字 BOOL BYTE WORD DWORD CHAR S5TIME 长度 (位) 位 1 8 16 32 8 16 该类型的常数举例 True 或 False (1 或0) B#16#A9 W#16#12AF DW#16#ADAC1EF5 'w' S5T#5s_200ms
CMP ? R 实数比较
例
如果下列条件成立,则输出 Q4.0 置位: • 在输入 I0.0 和 I0.1 的信号状态为“1” • 并且 MD0 >= MD4 • 并且,输入 I0.2 的信号状态为“1”
三、 转换指令P118
下述转换指令可供使用: • BCD_I BCD 码转换为整数 • I_BCD 整数转换为BCD 码 • BCD_DI BCD 码转换为双整 数 • I_DINT 整数转换为双整数 • DI_BCD 双整数转换为BCD 码 • DI_REAL 双整数转换为浮点 数 • INV_I 整数的二进制反码 • INV_DI 双整数的二进制反码 • NEG_I 整数的二进制补码 • NEG_DI 双整数的二进制补 码 • NEG_R 浮点数求反 • ROUND 舍入为双整数 • TRUNC 舍去小数取整为双 整数 • CEIL 上取整 • FLOOR 下取整
第四章 S7-300指令系统 ——数字指令
要求: 1、了解S7-300编程软件STEP7的基本数据 类型。 2、了解S7-300系列PLC的各种数字指令 3、能编写简单程序。
一、S7-300系列PLC编成语言-STEP7
PLC的编程语言有3种: 1、梯形图(LAD) 方式 2、语句表(STL) 方式 3、功能块图(FBD) 方式 例1 梯形图方式
例1 无条件跳转
西门子S7-200 PLC的指令系统及指令应用

说明: 根据控制要求,程序在 M0.1 处应该输出 Q0.1,在 M0.2 处也应该输出 Q0.1 如果在 M0.1 及 M0.2 处直接输出 Q0.1,则就范了上面程序双线圈错误, 因此在需要输出 Q0.1 的地方,输出不同的中间继电器,然后把中间继电器的常 开点并联起来,再集中输出一个 Q0.1 的线圈,这样就能避免双线圈的问题。 或者下面的程序也能正确的满足控制要求:
分析: 若 A 先按下按钮, 则 Q0.1 灯要亮, 并且一直亮, 直到主持人按下复位按钮 I0.0, 灯才会灭。其他人按下按钮,对应的灯也不会亮。 若 B 先按下按钮, 则 Q0.2 灯要亮, 并且一直亮, 直到主持人按下复位按钮 I0.0, 灯才会灭。其他人按下按钮,对应的灯也不会亮。 同理,C、D 一样 以下程序是分析后得出的:
地址:苏州吴中宝丰路 1 号
咨询: 400-8169-114
苏州天天自动化 PLC 培训中心
触点指令应用案例 3:
用一个按钮(I0.1)来控制三个输出(Q0.1、Q0.2、Q0.3) 。 当 Q0.1、Q0.2、Q0.3 都为 OFF 时,按第一下 I0.1,则 Q0.1 变为 ON, 按第二下 I0.1,则 Q0.1、Q0.2 变为 ON, 按第三下 I0.1,则 Q0.1、Q0.2、Q0.3 都变 ON 按第四下 I0.1,则 Q0.1、Q0.2、Q0.3 都变为 OFF 状态。 按第五下 I0.1,重复执行如上动作。 试用两种不同的程序设计方法设计其梯形图程序。 以下是分析后得出的程序:
上图梯形图中,”N”此条件只有当 I0.0 由接通→断开的瞬间(也就是上面波形 图中的过程 4 这个状态时)才会接通,其他时刻都不会接通。
应用案例 1:每按一下 I0.1 按钮,变量存储器的数值加 1
几个西门子PLC经典实例详解(含程序)

几个西门子PLC经典实例详解(含程序)
十字路口的交通指挥信号灯布置如下图:
一、控制要求
(1)信号灯系统由一个启动开关控制,当启动开关接通时,该信号灯系统开始工作,当启动开关关断时,所有信号灯都熄灭。
(2)南北绿灯和东西绿灯不能同时亮。
如果同时亮应关闭信号灯系统,并立刻报警。
(3)南北红灯亮维持25s。
在南北红灯亮的同时东西绿灯也亮,并维持20s。
到20s 时,东西绿灯闪亮,闪亮3s 后熄灭,此时,东西黄灯亮,并维持2s。
到2s 时,东西黄灯熄灭,东西红灯亮。
同时,南北红灯熄灭,南北绿灯亮。
(4)东西红灯亮维持30s。
南北绿灯亮维持25s,然后闪亮3s 后熄灭。
同时南北黄灯亮,维持2s 后熄灭,这时南北红灯亮,东西绿灯亮。
(5)以上南北、东西信号灯周而复始地交替工作状态,指挥着十字路口的交通,其时序如下所示。
二、PLC 接线
三、定义符号地址
四、梯形图程序。
西门子PLC配方实例程序

下面列出了配方示例程序的先决条件:1.一个存储所有配方记录的配方数据块。
配方数据块存储在装载存储器中。
2.在工作存储器中存储一个配方副本的活动配方数据块。
有关配方数据块和相应 CSV 文件的详细信息,请参见“配方数据块实例 ”创建活动配方数据块1.在“添加新块”(Add new block) 窗口中:2.在“添加新块”(Add new block) 窗口中,选择“数据块”(Data block)按钮3.在“类型”(Type) 下拉菜单中,选择您先前创建的“Beer_recipe”PLC数据类型。
不需要起始值。
在将一个配方从配方数据块传送到活动配方数据块时,数据块数据值将置位。
在本实例中,活动配方数据块是 READ_DBL 的目标数据并为 WRITE_DBL 提供源数据。
下图显示 Active_Recipe 数据块。
背景数据块指令 RecipeExport ('RecipeExport_DB') 和 RecipeImport ('RecipeImport_DB') 使用的背景数据块是在将指令置于程序中时自动创建的。
背景数据块用于控制指令的执行,不在程序逻辑中引用。
示例配方程序程序段 1 REQ 上升沿启动导出过程。
CSV文件由配方数据块数据生成并被置于 CPU存储器配方文件夹。
程序段 2 捕获 RecipeExport 执行的STATUS输出,考虑到该指令仅在一个扫描周期内有效。
程序段 3 REQ 上升沿启动导入过程。
现有配方数据块载入读取自CPU存储器配方文件夹的相应 CSV 文件中的所有配方数据。
程序段 4 捕获 RecipeImport 执行的STATUS输出,考虑到该指令仅在一个扫描周期内有效。
程序 5 READ_DBL 从配方“Recipe_DB”中复制起始值。
结果值[1](在 CPU 的装载存储器中)至 Active_Recipe DB 的当前值(在 CPU的工作内存中)。
西门子S7-200 PLC指令简介及实例分析

数据处理、运算指令及应用本章要点✍ 数据传送、字节交换、字节立即读写、移位、转换指令的介绍、应用及实训 ✍ 算术运算、逻辑运算、递增/递减指令的介绍、应用及实训✍ 表的定义、填表指令、表取数指令、填充指令、表查找指令的介绍5.1 数据处理指令5.1.1 数据传送指令1. 字节、字、双字、实数单个数据传送指令MOV数据传送指令MOV ,用来传送单个的字节、字、双字、实数。
指令格式及功能如表5-1所示。
表5-1单个数据传送指令MOV 指令格式使EN O = 0即使能输出断开的错误条件是:SM4.3(运行时间),0006(间接寻址错误)。
【例5-1】将变量存储器VW10中内容送到VW100中。
程序如图5-1所示。
LD I0.1MOVW VW10, VW100图5-1例5-1题图2. 字节、字、双字、实数数据块传送指令BLKMOV数据块传送指令将从输入地址IN 开始的N 个数据传送到输出地址OUT 开始的N 个单元中,N 的范围为1至255,N 的数据类型为:字节。
指令格式及功能如表5-2所示。
表5-2 数据传送指令BLKMOV 指令格式使ENO= 0的错误条件:0006(间接寻址错误)0091(操作数超出范围)。
【例5-2】程序举例:将变量存储器VB20开始的4个字节(VB20- VB23)中的数据,移至VB100开始的4个字节中(VB100-VB103)。
程序如图5-2所示。
LAD STLLD I0.0BMB VB20 ,VB100, 4图5-2 例5-2图程序执行后,将VB20~VB23中的数据30、31、32、33送到VB100~VB103。
执行结果如下:数组1数据 30 31 32 33数据地址 VB20 VB21 VB22 VB23块移动执行后:数组2数据 30 31 32 33数据地址 VB100 VB101 VB102 VB1035.1.2 字节交换、字节立即读写指令1. 字节交换指令字节交换指令用来交换输入字IN 的最高位字节和最低位字节。
(完整word版)西门子PLC操作手册(24个点)

5.PLC串口通讯线一条
三、实验原理
1.工作原理接线图如图二所示
2.三相电动机顺序控制要求如下:
(1)先拨上正转开关SB1,再拨下SB1,电机以Y-△方式启动,Y形接法运行5秒后转换为△形运行。
(2)先拨上停止开关SB3,再拨下SB3,电机立即停止运行。
(3)先拨上反转开关SB2,再拨下SB2,电机以Y-△方式启动,Y形接法运行5秒后转换为△形运行。
(4)先拨上停止开关SB3,再拨下SB3,电机立即停止运行。
四、实验步骤
1、先将PLC的电源线插进PLC侧面的电源孔中,再将另一端插到220V电源插板。
2、将PLC的电源开关拨到关状态,严格按图二接线,注意12V电源的正负不要短接,电路不要短路,否则会损坏PLC触点。
3、将PLC的电源开关拨到开状态,并且必须将PLC串口置于ON状态,然后通过计算机或编程器将程序下载到PLC中,下载后,再将PLC的电源开关拨到关状态。
5、PLC串口通讯线一条
三、实验原理:
1.工作原理接线图如图六所示:
2.四台电机的控制要求如下:
四台电机启动时每隔1s依次启动,停止时,四台电机同时停止。
3.报警器的控制要求是当条件X1=ON时蜂鸣器鸣叫,同时,报警灯连续闪烁10次,每次亮1.5s,熄灭1s,此后,停止发光报警。
四、实验步骤:
1、先将PLC的电源线插进PLC侧面的电源孔中,再将另一端插到220V电源插板。
5.PLC串口通讯线一条
三、工作原理
1.工作原理接线图如图四所示:
2.交通灯控制要求:
(1)该单元设有启动和停止开关S1、S2,用以控制系统的“启动”与“停止”。S3还可屏蔽交通灯的灯光。
(2)交通灯显示方式。
西门子PLC指令实例教程

1、立即寻址
2、存储器直接寻址
Date: 2019/1/18
Page: 16
存储器间接寻址,简称间接寻址。该寻址方式在指令中 以存储器的形式给出操作数所在存储器单元的地址,也就是 说该存储器的内容是操作数所在存储器单元的地址。该存储 器一般称为地址指针,在指令中需写在方括号“[]”内。地 址指针可以是字或双字,对于地址范围小于65535的存储器 可以用字指针;对于其他存储器则要使用双字指针。存储器 间接寻址的双字指针的格式如图4.5所示。
图4.1 LAD编程语言
Date: 2019/1/18
Page: 3
4.1.1 STEP7编程语言
2、语句表(STL) STL(STL:Statement List)简称语句表,STL是一 种类似于微机汇编语言的一种 文本编程语言,由多条语句组 成一个程序段。语句表适合于 经验丰富的程序员使用,可以 实现某些梯形图不能实现的功 能。STL适用于喜欢用汇编语 言编程的人员使用。STL编程 语言如图4.2所示。
15 9 8 BR 7 6 5 OS 4 OV 3 OR 2 STA 1 R LO 0 FC
未用
C C1 C C0
图4.4 状态字的结构
Date: 2019/1/18 Page: 9
4.1.4 STEP7数据类型
在STEP7中,大多数指令要与具有一定大小的数据 对象一起操作,不同的数据类型具有不同的格式。编 程所用的数据要指定数据类型,要确定数据大小和数 据的位结构。数据类型分为3大类。 1、基本数据类型 基本数据类型有很多种,每种数据类型在分配内 存空间时有确定的位数,如布尔型(BOOL)数据为1 位,字节型(BYTE)数据为8位,字型(WORD)数据 为16位,双字型(DWORD)数据为32位。基本数据类 型见表4-1。
西门子PLC编程实例

这是网上擂台的题目:一台电动机要求在按下起动按钮后,电动机运行10秒,停5秒,重复3次后,电动机自动停止。
同时设置有手动停机按钮和过载保护。
编写梯形图控制程序。
PLC可以随便选用,要有相关说明。
注意:要有PLC控制电路和I/O分配表。
?1、硬件选择:一台PLC(S7-200)、一个交流接触器Z0(控制电机运行)、2个按钮开关(SB1、SB2)及1个过流继电器(FR),电路图如下:(不包括粉色虚线框部分)2、编程:用不同思路,可编出几种不同的控制方案,都可实现该项目要求。
?(1)、最简单的编程方案,就是选用5个通电延时定时器:其3个定时10秒,用于电机启动运行,另2个定时5秒,使电机停。
具体编程也有二种方式,见下图:上图中的方案一与方案二,同用5个定时器,完成同样的功能。
方案一是这样编程:按下启动按钮(),使断开。
在此过程中,、、都是10秒的导通时间,用它们去控制,其彼此间隔时间为5秒(即、的通导时间)。
?8?1延时?8?=1,T101得电开始延时,延时10秒,T101吸合使=1、=0,使T101断电,而T102得电开始延时,5秒后T102得电吸合,使=1,=0。
直到T105得电方案二是这样编程:按下启动按钮(),使 =1,T101得电开始延时,延时10秒,T101吸合,使T102得电开始延时,延时5秒,T102吸合,使T103得电开始延时。
直至T105得电延时,延时10秒后动作,使=0,=0使T101—T105皆断开,程序结束。
用的常开触点与T101的常闭触点串联,用T102的常开触点与T103的常闭触点串联,用T104的常开触点与T105的常闭触点串联,三者再并联后去驱动,可达到同样的控制作用,由上图可见,由于编程方法不同,其方案二用的指令比方案一少,显然:方案二优于方案一。
(2)、用二个定时器(T101、T102)和一个字节存储器(MB1)编程也可实现同样功能:按下启动按钮,使MB1=0、=1,=1使T101得电开始延时,10秒T101吸合使T102得电吸和,延时5秒,T102吸合,其常闭点断开,使T101、T102失电断开,T101又得电延时。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
L IB 10
//把输入字节IB 10的内容装入累加器1
T DBD 12
//把累加器1中的内容传送给数据双字DBD 12中
Date: 2021/4/9
Page: 16
3、存储器间接寻址
存储器间接寻址,简称间接寻址。该寻址方式在指令中
以存储器的形式给出操作数所在存储器单元的地址,也就是
说该存储器的内容是操作数所在存储器单元的地址。该存储
图4.1 LAD编程语言
Date: 2021/4/9
Page: 3
4.1.1 STEP7编程语言
2、语句表(STL) STL(STL:Statement
List)简称语句表,STL是一 种类似于微机汇编语言的一种 文本编程语言,由多条语句组 成一个程序段。语句表适合于 经验丰富的程序员使用,可以 实现某些梯形图不能实现的功 能。STL适用于喜欢用汇编语 言编程的人员使用。STL编程 语言如图4.2所示。
器一般称为地址指针,在指令中需写在方括号“[]”内。地
址指针可以是字或双字,对于地址范围小于65535的存储器
可以用字指针;对于其他存储器则要使用双字指针。存储器
间接寻址的双字指针的格式如图4.5所示。
位序 31
24
23
16
15
8
7
位序 30100000000000000240 203000000b0bb016 0bbb1b5bbb bbbb b8 bbb 7bbbbbbbbbxxx 0 b
Date: 2021/4/9
Page: 2
4.1.1 STEP7编程语言
1、梯形图(LAD)
LAD(LAD:Ladder Diagram)简称梯形图,LAD是 使用最多的PLC编程语言。因 与继电器电路很相似,具有直 观易懂的特点,很容易被熟悉 继电器控制的电气人员所掌握, 特别适合于数字量逻辑控制, 也适合于熟悉继电器电路的人 员使用。LAD编程语言如图4.1 所示。
Date: 2021/4/9
Page: 7
4.1.2 S7-300 CPU的系统存储器
4、计数器(C)存储器区 在用户CPU的存储器中,有为计数器保留的存储区。此存
储区为每个计数器地址保留一个16位字。梯形图指令集支持 256个计数器。计数值(0~999)可以用二进制或BCD码方式 读取。
5、数据块/背景数据块(DB) DB为共享数据块,DBX2.3,DBB5,DBW10和DBD12。 DI为背景数据块,DIX, DIB,DIW和DID。
令中,或以唯一形式隐含在指令中。下面各条指令操作数均采用了立即寻
址方式。
SET
//把RLO置1
OW W#16#A320
//将常量W#16#A320与累加器1“或”运算
L 27
//把整数27装入累加器1
L C#0100
//把BCD码常数0100装入累加器1
2、存储器直接寻址
存储器直接寻址,简称直接寻址。该寻址方式在指令中直接给出操作
数的存储单元地址。存储单元地址可用符号地址(如SB1、KM等)或绝对
地址(如I0.0、Q4.1等)。下面各条指令操作数均采用了直接寻址方式。
A I 0.0
//对输入位I 0.0进行“与”逻辑操作
S L 20.0
//把本地数据位L 20.0置1
= M 115.4
//使存储区位M 115.4的内容等于RLO的内容
6、外部I/O存储区(PI/PQ) 外设输入(PI)区和外设输出(PQ)区允许直接访问本地
的和分布式的输入模块和输出模块。
Date: 2021/4/9
Page: 8
4.1.3 S7-300 CPU的寄存器
1、累加器(ACCUx) 累加器用于处理字节、字或双字的寄存器。S7-300有两
个32位累加器(ACCU1和ACCU2)。 2、状态字寄存器(16位) 状态字用于表示CPU执行指令时所具有的状态。一些指令
常开触点所使用的操作数是:I、Q、M、L、D、T、C。
2、常闭触点
常闭触点(动断触点)则对“0”扫描相应操作数。在PLC中规定:若 操作数是“1”则常闭触点“动作”,即触点“断开”;若操作数是“0”, 则常闭触点“复位”, 即触点“闭合”。
常闭触点所使用的操作数是:I、Q、M、L、D、T、C。
3、输出线圈(赋值指令)
4.2.2 寻址方式
所谓寻址方式就是指令执行时获取操作数的方式,可以直接或间接方 式给出操作数。S7-300有4种寻址方式:立即寻址、存储器直接寻址、存 储器间接寻址和寄存器间接寻址。
Date: 2021/4/9
Page: 15
1、立即寻址
立即寻址是对常数或常量的寻址方式,其特点是操作数直接表示在指
图4.2 STL编程语言
Date: 2021/4/9
Page: 4
4.1.1 STEP7编程语言
3、功能块图(FBD) FBD(FBD:Function Block Diagram)简称功
能块图,功能块图使用类似于布尔代数的图形逻辑符 号来表示控制逻辑,一些复杂的功能用指令框表示。 FBD适合于有数字电路基础的编程人员使用。FBD编程 语言如图4.3所示。
应尽量避免线圈重复使用; • 5)梯形图程序必须符合顺序执行的原则,从左到右,从上
到下地执行,如不符合顺序执行的电路不能直接编程; • 6)在梯形图中串联接点、并联接点的使用次数没有限制,
可无限次地使用。
Date: 2021/4/9Page: 144.2 STEP7的指令结构
指令是程序的最小独立单位,用户程序是由若干条顺序排列的指令构 成。STEP7编程语言其指令功能非常丰富。利用程序编辑器,可以进行离 线编程,即把程序存储在编程器中,也可以进行在线编程,将程序存储在 CPU中。
是否执行或以何方式执行可能取决于状态字中的某些位;执 行指令时也可能改变状态字中的某些位,也能在位逻辑指令 或字逻辑指令中访问并检测。状态字的结构如图4.4所示。
15
98 7 6 5 4 3 2 1 0
未用
BR CC1 CC0 OS OV OR STA RLO FC
图4.4 状态字的结构
Date: 2021/4/9
ANY
大小
说明
2字节 指定执行逻辑块时要使用的定时器,如T1
2字节 指定执行逻辑块时要使用的计数器,如C1
2字节
如:FB1 FC1 DB1 SDB1
6字节 定义内存单元,如P#M30.0
10字 如果实参的数据类型未知,或可以使用任 节 何数据类型时,如P#M30.0,byte 10
Date: 2021/4/9
Page: 13
4.1.5 PLC编程的基本原则
PLC编程应该遵循以下基本原则:
• 1)外部输入、输出继电器、内部继电器、定时器、计数器 等器件的接点可多次重复使用;
• 2)梯形图每一行都是从左母线开始,线圈接在最右边,接 点不能放在线圈的右边;
• 3)线圈不能直接与左母线相连; • 4)同一编号的线圈在一个程序中使用两次容易引起误操作,
4.3位逻辑指令
位逻辑指令包含位逻辑运算指令、定时器指令、计数器指令和位测 试指令等。可以使用位逻辑指令扫描布尔操作数的状态,通过“与 (AND)”、“或(OR)”、“异或(XOR)”及其组合操作实现逻辑操 作。所产生的结果(“1”或“0”)称为逻辑运算结果,存储在状态字 的“RLO”中。逻辑操作结果(RLO)用于赋值、置位/复位布尔操作数, 也用于控制定时器和计数器的运行。
Date: 2021/4/9
Page: 10
4.1.4 STEP7数据类型
表4-1 STEP 7中常用的基本数据类型
Date: 2021/4/9
Page: 11
4.1.4 STEP7数据类型
2、复式数据类型 超过32位或由其他数据类型组成的数据为复式数据类型,
STEP7允许4种复式数据类型,见表4-2。
4.2.1 指令操作数
指令操作数(又称编程元件)一般在用户存储区中,操作数由操作标 识符和参数组成。操作标识符由主标识符和辅助标识符组成,主标识符用 来指定操作数所使用的存储区类型,辅助标识符则用来指定操作数的单位 (如:位、字节、字、双字等)。
主标识符有:I(输入过程映像寄存器)、Q(输出过程映像寄存器)、 M(位存储器)、PI(外部输入寄存器)、PQ(外部输出寄存器)、T(定 时器)、C(计数器)、DB(数据块寄存器)和L(本地数据寄存器);辅 助标识符有:X(位)、B(字节)、W(字)、D(双字)。
Page: 9
4.1.4 STEP7数据类型
在STEP7中,大多数指令要与具有一定大小的数据 对象一起操作,不同的数据类型具有不同的格式。编 程所用的数据要指定数据类型,要确定数据大小和数 据的位结构。数据类型分为3大类。
1、基本数据类型 基本数据类型有很多种,每种数据类型在分配内
存空间时有确定的位数,如布尔型(BOOL)数据为1 位,字节型(BYTE)数据为8位,字型(WORD)数据 为16位,双字型(DWORD)数据为32位。基本数据类 型见表4-1。
输出线圈与继电器控制电路中的线圈一样,如果有电流(信号流)流 过线圈(RLO=“1”),则被驱动的操作数置“1”;如果没有电流流过线 圈(RLO=“0”),则被驱动的操作数复位(置“0”)。输出线圈只能出 现在梯形图逻辑串的最右边。
Date: 2021/4/9
Page: 5
4.1.1 STEP7编程语言
Date: 2021/4/9
图4.3 FBD编程语言
Page: 6
4.1.2 S7-300 CPU的系统存储器
1、过程映像输入表/输出表(I/Q) 过程映像输入表(PII):循环扫描开始时,存储数字量
输入模块的输入信号的状态。 过程映像输出表(PIQ):循环扫描结束时,存储用户程