数字指令 CMP ==I IN1 IN2 M0.0 Q 5.7 IW0 IW2 T4 I0.7 S_ODT Q4.5 S5T#35s MW0

Slides:



Advertisements
Similar presentations
因数与倍数 2 、 5 的倍数的特征
Advertisements

3 的倍数特征 抢三十

100 以内数的认识 10 个一是十 10 个十是一百 10 个一是十 10 个十是一百 数一数 从 35 数到 42 从 88 数到 100.
练一练: 在数轴上画出表示下列各数的点, 并指出这些点相互间的关系: -6 , 6 , -3 , 3 , -1.5, 1.5.
阻塞操作. 在 linux 里,一个等待队列由一个 wait_queue_head_t 类型的结构来描述 等待队列的初始化: static wait_queue_head_t testqueue; init_waitqueue_head(&testqueue);
实验四 利用中规模芯片设计时序电路(二).
分数、小数、百分数的互化 江阴市长山中心小学:郁玉芬.
在PHP和MYSQL中实现完美的中文显示
FC OB1 FB SFC 操作系统 SFB OBs 结构化编程 其它
数字指令 CMP ==I IN1 IN2 M0.0 Q 5.7 IW0 IW2 T4 I 0.7 S_ODT Q4.5 S5T#35s
GEFanuc Automation Shanghai Office
结构化编程 FC OB1 FB SFC 操作系统 SFB OBs 其它
第5章数据处理、运算指令及应用 5.1 数据处理指令 5.2 算术运算、逻辑运算指令 5.3 表功能指令.
S7-300/400PLC的编程技术 河北机电自动化教研室.
第4章 基本指令 4.1 位操作类指令 4.2 运算指令 4.3 其他数据处理指令 4.4 表功能指令 4.5 转换指令.
位指令 I0.0 I0.1 Q 8.0 Q 8.1 I 1.0 ( MCR< ) (MCRA) Q 8.0 I 0.0 I 1.1
位指令 I0.0 I0.1 Q 8.0 Q 8.1 I 1.0 ( MCR< ) (MCRA) Q 8.0 I 0.0 I 1.1
第六章 S7-300/400指令系统 6.1 S7-300/400的数据类型 S7-300/400中数的表示方法
走进编程 程序的顺序结构(二).
第三章 STEP7编程技术.
6 S7-200可编程控制器 指令集 2019/1/2 PLC指令集.
位指令 I 0.0 I 0.1 Q 4.0 Q 4.1 I 1.0 I 1.1 P = & M1.0 M8.0 N M1.1 M8.1 SR S Q R I 1.2 I 1.3 M0.0 Q 5.3 目录 页 目标 …….……
实验四 组合逻辑电路的设计与测试 一.实验目的 1.掌握组合逻辑电路的设计 方法 2.学会对组合逻辑电路的测 试方法.
时序逻辑电路实验 一、 实验目的 1.熟悉集成计数器的功能和使用方法; 2.利用集成计数器设计任意进制计数器。 二、实验原理
逆向工程-汇编语言
CPU结构和功能.
第4章 S7-200系列PLC功能指令 4.1 数据处理指令 4.2 算术和逻辑运算指令 4.3 表功能指令 4.4 转换指令
若2002年我国国民生产总值为 亿元,如果 ,那么经过多少年国民生产总值 每年平均增长 是2002年时的2倍? 解:设经过 年国民生产总值为2002年时的2倍, 根据题意有 , 即.
位指令 I 0.0 I 0.1 Q 4.0 Q 4.1 I 1.0 I 1.1 P = & M1.0 M8.0 N M1.1 M8.1 SR S Q R I 1.2 I 1.3 M0.0 Q 5.3 目录 页 目标 …….……
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
模块6 S7-200 PLC基本逻辑指令 项目 6.2 电动机Y-减压起动控制设计 项目 6.2 电动机Y-减压起动控制设计
第四章 MCS-51定时器/计数器 一、定时器结构 1.定时器结构框图
数据块中的数据存储 目录 页 目标 …… 数据存储区 … ……… 数据块 (DB) … STEP 7数据类型概述 STEP 7基本数据类型
第9章 位 运 算.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月13日.
工业机器人知识要点解析 (ABB机器人) 主讲人:王老师
<编程达人入门课程> 本节内容 内存的使用 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
成绩是怎么算出来的? 16级第一学期半期考试成绩 班级 姓名 语文 数学 英语 政治 历史 地理 物理 化学 生物 总分 1 张三1 115
位指令 I0.0 I0.1 Q 8.0 Q 8.1 I 1.0 ( MCR< ) (MCRA) Q 8.0 I 0.0 I 1.1
第六章 Excel的应用 一、Excel的单元格与区域 1、单元格:H8, D7, IV26等 2、区域:H2..D8, HS98:IT77
第4章 Excel电子表格制作软件 4.4 函数(一).
组合逻辑电路 ——中规模组合逻辑集成电路.
实验三 16位算术逻辑运算实验 不带进位控制的算术运算 置AR=1: 设置开关CN 1 不带进位 0 带进位运算;
本节内容 内存复制指令 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
正切函数的图象和性质 周期函数定义: 一般地,对于函数 (x),如果存在一个非零常数T,使得当x取定义域内的每一个值时,都有
第九节 赋值运算符和赋值表达式.
实验二 带进位控制8位算术逻辑运算实验 带进位控制8位算术逻辑运算: ① 带进位运算 ② 保存运算后产生进位
第4课时 绝对值.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
HSC高速输出例程 HORNER APG.
项目六 小灯跑马点亮效果的PLC控制 任务一 小灯跑马点亮效果的PLC 控制.
分数再认识三 真假带分数的练习课.
3. 逻辑运算指令 A、简单逻辑操作指令 CLR A. (不影响CY、AC、 OV标志) CPL A
工业机器人知识要点解析 (ABB机器人) 主讲人:王老师
实验目的:掌握数据的顺序存储结构及它们在计算机中的操作。 实验内容:
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
第4章 S7-200的功能指令 4.1 功能指令概述 4.2 数据处理指令 4.3 数学运算指令 4.4 程序控制指令
异分母分数加、减法.
数据表示 第 2 讲.
上节复习(11.14) 1、方式2、方式0的特点? 2、定时/计数器的编程要点? 3、实验5方案优化问题.
认知1 掌握“与”、“或”和“异或”指令格式及应用
第一章 微型计算机中的数据类型.
上节复习(11.7) 1、定时/计数器的基本原理? 2、定时/计数器的结构组成? 3、定时/计数器的控制关系?
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
工业机器人入门使用教程 ESTUN机器人 主讲人:李老师
第9章 位 运 算.
第四章 基本指令 要求: 熟练掌握基本逻辑指令及应用。 掌握梯形图编程规则。.
学习目标 1、什么是列类型 2、列类型之数值类型.
如何读STL程序: 如果读程序时发现自己不明白的语言,可以: 1,转换成梯形图:快捷键ctrl+1,当然大多数都转换不过去; 2,按下F1寻求帮助; 3,下载此程序到模拟器中,单步观察效果,看一看哪些寄存器发生改变。 系统的逻辑错误造成的停机往往是由于提示错误前面的错误引起的。
Presentation transcript:

数字指令 CMP ==I IN1 IN2 M0.0 Q 5.7 IW0 IW2 T4 I0.7 S_ODT Q4.5 S5T#35s MW0 TV S Q BCD BI R I0.7 I0.5 S5T#35s Q4.5 MW0 QW6 目录 页 数据格式 (16 位) .................................................................................................................................... 2 数据格式 (32 位) .................................................................................................................................... 3 数据装入和传递 (1) ……..................................................................................................................... 4 数据装入和传递 (2) ……..................................................................................................................... 5 数据装入和传递 (3) ……...................................................................................................................... 6 定时器: STEP 7中S5定时器时间格式 ................................................................................................... 7 定时器: 接通延时 (SD) …………....................................................................................................... 8 定时器: 带保持接通延时(SS) …………………...................................................................................... 9 定时器: 关断延时 (SF) ………….......................................................................................................... 10 定时器: 脉冲 (SP) ............................................................................................................................. 11 定时器: 扩展脉冲 (SE) …..................................................................................................................... 12 定时器: 位指令 …................................................................................................................................ 13 练习 ...................................................................................................................................................... 14 STEP 7 中的S5 计数器 ...................................................................................................................... 15 计数器: 位指令 ..................................................................................................................................... 16 计数器: 功能图....................................................................................................................................... 17 练习: 瓶装线编程 (循环灌装和瓶子计数) …………............................................................................... 18 转换操作 BCD <-> 整数 …................................................................................................................. 19 转换操作I -> DI -> REAL ……............................................................................................................ 20 比较操作 ............................................................................................................................................. 21 数字逻辑操作 ....................................................................................................................................... 22 基本数学功能 …………….................................................................................................................... 23 练习: 瓶装线编程 (产量数据) ……........................................................................................................ 24 练习: 瓶装线编程 (包装数) ....................................................................……………............................. 25 移位操作 (字/双字) …........................................................................................................................... 26 有符号整数右移位 …………………….................................................................................................. 27 双字循环移位操作 ............................................................................................................................... 28

数据格式 (16 位) PG CPU BCD W#16#296 1 整数 +296 28 1 25 23 BCD W#16#F413 1 1 2 9 6 符号 (+) 正数 整数 +296 28 = 256 + 1 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 25 32 + 23 8 = 296 BCD W#16#F413 1 4 3 符号 (-) 负数 BCD 码 十进制数的每一位用四个二进制位表示,因为最大的数是9,所以需要四位才能表示出来( 1001)。 从0到9的十进制数的BCD码表示与二进制数表示相同。 整数 数据类型INT 是整数 (16 位)。 符号 (位15) 表示数是正数或是负数 (“0” = 正数,“1” = 负数)。 16位整数的范围是-32 768 ~ +32 767. 在二进制格式中,整数的负数形式用正数的二进制补码表示。(二进制补码利用取反加1得到) 负数的位格式,对零的位置加权求和,再加1,然后在前面放一个负号。 整数 -413 27 = 128 + 1 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 23 8+ 22 4 = 412 28 256+ 24 16+ - (412 + 1) = - 413

数据格式 (32 位) 1 1 28 25 23 实数的通用格式 = (Sign) • (1.f) • (2e-127) 1 20 21 BCD 符号 (+) 1 2 9 6 DW#16#296 DINT 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 1 L#+296 28 = 256 + 25 32 + 23 8 = 296 整数 (32 位) = REAL 实数 符号 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 e = 指数 (8 Bit) f = 底数 (23 Bit) 实数的通用格式 = (Sign) • (1.f) • (2e-127) +0.75 或 +7.5 E-1 DINT 带符号的32-位整数,定义为“双整数”或“长整数”。 范围: L# -2147483648 ~ L#+2147483647. REAL 实数(也称浮点数)是1.175495 x10-38 ~ 3,402823 x 1038 之间的正数或负数。 例如: +10.339 或 +1.0339E1 -234567.0 或 -2.34567E5. 指数表示中的指数是以10为底的。 在存储器中实数占用两个字,最高有效位是符号位。其他位是指数和底数。 注:STEP 7中的实数是按照 IEEE 标准表示的。 1 20 21 22 23 24 25 26 27 2-23 2-1 2-2 2-4 ..... 2-3 实数 = +1,5 * 2 126-127 = 0,75

数据装入和传递 (1) LAD FBD L +5 T MB5 STL L +5 // 16-位常数 (整数) MOVE EN OUT ENO MB5 LAD IN 5 MOVE EN IN OUT ENO MB5 5 FBD L +5 T MB5 STL 装载 举例 L +5 // 16-位常数 (整数) L L#523123 // 32-位常数 (双整数) L B#16#EF // 十六进制字节 L 2#0010 0110 1110 0011 // 16-位二进制值 L 3.14 // 32-位常数 (实数) MOVE (LAD/FBD) 如果输入 EN 有效,输入“IN”处的值拷贝到输出“OUT”。 “ENO”与“EN”的状态相同。 L 和 T (STL) 装载和传递指令的执行与RLO无关,数据通过累加器交换。 装载指令把右边源地址中的值写到累加器1,用“0”补充其它的位 (共32 位)。 传递指令拷贝累加器中一些或所有内容到指定目的地址 (见下页)。

数据装入和传递 (2) ACCU1 内容 ACCU2 内容 : L W#16#CAFE L W#16#AFFE : 程序 X X X X X Y : L W#16#CAFE C A F E X ACCU1 ACCU 1是CPU中的中央寄存器,当执行装入指令时,要装入的值被写入ACCU1;对于传输指令,要传输的值从ACCU1读出。数学功能、移位和循环移位的结果也放在 ACCU 1。 ACCU2 当执行装载指令时, ACCU 1中的旧值先移到ACCU 2,在新值写入ACCU1前它先被清零。 ACCU 2 也用于比较操作,数字逻辑操作、数学和移位操作。这些操作在后面详细介绍。 L W#16#AFFE : A F E C A F E

数据装入和传递 (3) L MB 0 L MW 0 L MD 0 T QD 4 T QW 4 T QB 4 装载 传递 ACCU1内容 程序 31 23 15 7 MB0 L MB 0 装载 31 23 15 7 MB1 MB0 L MW 0 31 23 15 7 MB3 MB2 MB0 MB1 L MD 0 T QD 4 QD 4 传递 概述 累加器是CPU中的辅助存储器,它们用于不同地址之间数据交换、比较和数学运算操作。 S7-300 有两个32位的累加器,S7-400 有四个32位的累加器。 装载 装载指令把指定字节、字或双字中的内容装入ACCU 1。 传递 当传递指令执行时,ACCU 1中的内容保持不变。相同的信息可以传到不同的目的地址。如果仅传递一个字节,只使用右边的8位 (见图)。 RLO 在LAD 和 FBD 中,可以使用MOVE的允许输入 (EN) 把装载和传递操作和RLO联系起来。 在STL 中,总是执行装入和传递操作,而和RLO无关。但是,利用条件跳转指令来执行和RLO有关的装入和传递功能。 T QW 4 QW 4 T QB 4 QB 4

定时器:STEP 7中S5定时器时间格式 时间设定值格式 系统数据存储器中定时器单元 “L T...”后的ACCU 内容 102 101 100 时间设定值格式 X 时基 时间值 (BCD 码) 系统数据存储器中定时器单元 X 时基 时间值 (二进制数) “L T...”后的ACCU 内容 X 时间值(二进制数) 时间指定 1. 固定的时间值指时间常数 (例如:S5T#100ms, S5T#35s, S5T#5m2s200ms, S5T#2h2m2s50ms)。 2. 时间值由操作人员用拨轮按钮可变。 3. 和存储器字或数据字中的时间值有关的过程或配方。 定时器单元 CPU中为定时器保留的一个特殊存储器区。这个区为每个定时器地址保留一个16-位字。 定时器字的位 0 到 9 包含用二进制码表示的时间值。 当定时器刷新时,时间值由时间基准定义的时间间隔决定。 时间基准 定时器字的位12 和 13 包含用二进制码表示的时间基准: 0 = 10 ms 1 = 100 ms 2 = 1 s 3 = 10 s. 时间基准定义一个单位代表的时间间隔。 当时间用常数(S5T#...)表示时,时间基准自动由系统自动分配。如果时间由拨码按钮或通过数据接口指定,用户必须指定时间基准。 L / BI 在“BI”输出端的地址包含10位二进制数表示的时间值 (不带时间基准!)。 LC / BCD 在“BCD”输出端的地址包含三位的BCD数(12位)和时间格式(位12和13)。 注 在STEP 7也实现IEC允许的定时器。 在高级编程课中讨论利用系统功能块实现 IEC 定时器。 102 101 100 “LC T...”后的ACCU 内容 X 时基 时间值 (BCD 码)

定时器:接通延时 (SD) LAD FBD STL A I0.7 L S5T#35s SD T4 A I0.5 R T4 L T4 S_ODT TV S Q BCD BI R I0.7 I0.5 S5T#35s Q4.5 MW0 QW6 FBD S_ODT TV Q BI R I0.7 I0.5 S5T#35s MW0 QW6 T4 BCD = Q4.5 S STL A I0.7 L S5T#35s SD T4 A I0.5 R T4 L T4 T MW0 LC T4 T QW6 A T4 = Q4.5 S处的RLO R处的RLO 定时器 操作 例如 启动 当定时器的“S”输入端的 RLO从“0”变到“1”时,定时器启动。只要输入 S=1,定时器定时起作用,当到达指定的TV值时定时器启动。 复位 当复位输入R的 RLO= “1” 时,就清除定时器中的定时值,而且输出Q复位。 数字输出 当前时间值可以在BI输出端以二进制数读出,在BCD输出端以BCD码形式读出。 当前时间值是TV的初值减定时器启动以来的经过时间。 位输出 当定时器时间到达,没有错误而且输入S= “1”时, 输出“Q” 的信号变为“1”。 如果在定时时间到达前输入端S从“1”变到“0”,定时器停止运行,这时输出Q= “0” 。 Q S5TIME 数据类型 0,01s <-- 0,1s <-- 1s <-- 10s <-- 1 时间值: 0 . . . 999

定时器: 带保持接通延时 (SS) LAD FBD STL T4 S_ODTS TV S Q BCD BI R I0.7 I0.5 S5T#35s Q4.5 MW0 QW6 FBD S_ODTS TV Q BI R I0.7 I0.5 S5T#35s MW0 QW6 T4 BCD = Q4.5 S STL A I0.7 L S5T#35s SS T4 A I0.5 R T4 L T4 T MW0 LC T4 T QW6 A T4 = Q4.5 例如 S处的RLO R处的RLO 定时器 操作 Q 启动 当定时器的“S”输入端的RLO从“0”变到“1”时,定时器启动。即使定时过程中出现输入S=0,定时器从输入TV设定的时间开始定时。 当定时器运行时,如果启动输入再次从“0”变到“1” 定时器重新开始。 复位 当复位输入R的 RLO=1时,就清除定时器中的定时值,而且输出Q复位。 位输出 当定时器时间到达而且没有错误,输出“Q”的信号变为“1”,和输入端S的信号无关。

定时器:关断延时 (SF) LAD FBD STL T4 S_OFFDT TV S Q BCD BI R I0.7 I0.5 S5T#35s MW0 QW6 FBD S_OFFDT TV Q BI R I0.7 I0.5 S5T#35s MW0 QW6 T4 BCD = Q4.5 S STL A I0.7 L S5T#35s SF T4 A I0.5 R T4 L T4 T MW0 LC T4 T QW6 A T4 = Q4.5 例如 S处的RLO R处的RLO 定时器 操作 Q 启动 当定时器的S输入端的RLO从“1”变到“0”时,定时器启动。当时间到达时,输出信号Q=0。 当定时器运行时,如果输入 S 的状态从“0”变到“1”,定时器停止运行。下次当 S 从“1”变到“0”时,它重新启动。 复位 当复位输入R的RLO=1时,就清除定时器中的定时值,而且输出Q复位。 如果两个输入 (S 和 R) 都有信号“1”,不置位输出Q,直到优先级高的复位取消为止。 位输出 当输入端 S 处的RLO从“0”变到“1”时,输出Q =1,如果输入S取消,输出 Q 继续保持“1”,直到设定的时间到达。

定时器:脉冲 (SP) LAD FBD STL MW0 T4 S_PULSE TV S Q BCD BI R I0.7 I0.5 S5T#35s Q4.5 QW6 FBD S_PULSE TV Q BI R I0.7 I0.5 S5T#35s MW0 QW6 T4 BCD = Q4.5 S STL A I0.7 L S5T#35s SP T4 A I0.5 R T4 L T4 T MW0 LC T4 T QW6 A T4 = Q8.5 S处的RLO R处的RLO 定时器 操作 Q 例如 启动 当“S”输入端从“0”变到“1”时,启动定时器,输出“Q”也置为“1”。 复位 下面情况下输出“Q”复位: • 定时器定时时间到,或 • 启动信号从“1”变到“0”,或 • 复位输入“R”有信号“1”。

定时器:扩展脉冲 (SE) LAD FBD STL T4 S_PEXT TV S Q BCD BI R I0.7 I0.5 S5T#35s MW0 QW6 FBD S_PEXT TV Q BI R I0.7 I0.5 S5T#35s MW0 QW6 T4 BCD = Q4.5 S STL A I0.7 L S5T#35s SE T4 A I0.5 R T4 L T4 T MW0 LC T4 T QW6 A T4 = Q4.5 S处的RLO R处的RLO 定时器 操作 Q 启动 当 S 输入端的RLO从“0”变到“1”时,定时器启动。输出 Q 被置位“1”。 即使 S 输入变到“0”,输出 Q 仍保持“1”。 当定时器正在运行时,如果启动输入信号从“0”变到“1”,定时器被再次启动。 复位 在如下情况下输出“Q”被复位: • 定时器时间到,或 • 复位输入“R”有信号“1”。 例如

定时器:位指令 LAD FBD A I0.0 L S5T#5s SD T4 A T4 = Q 4.0 A I0.1 R T4 STL Network 1: Network 2: Network 3: LAD & SD T4 I0.0 S5T#5s = Q 4.0 I0.1 TV R FBD A I0.0 L S5T#5s SD T4 A T4 = Q 4.0 A I0.1 R T4 STL 位指令 所有的定时器也可以用简单的位指令启动,这种方法和前面讨论的定时器功能的相似处和不同之处如下: • 相似处: - 启动条件在“S”输入 - 指定时间值 - 复位条件在“R”输入 - 信号响应在输出“Q” • 不同 (对 LAD 和 FBD): - 不能检查当前时间值 (没有BI 和BCD 输出)。

练习 T4 S_PULSE S TV R BI BCD Q I 0.7 S5T#5s I 0.5 Q 4.0 Q4.0 5s T4 S_PEXT S TV R BI BCD Q I 0.7 S5T#5s I 0.5 Q4.0 T4 S_ODT S TV R BI BCD Q I 0.7 S5T#5s I 0.5 Q 4.0 Q4.0 T4 S_ODTS S TV R BI BCD Q I 0.7 S5T#5s I 0.5 Q 4.0 Q4.0 练习 完成上面幻灯片中的定时器功能图! I 0.7 I 0.5 Q4.0 T4 S_OFFDT S TV R BI BCD Q S5T#5s Q 4.0

STEP 7中的S5计数器 LAD FBD STL A I0.4 CU C5 A I0.5 CD C5 A I0.3 L C#20 S C5 R C5 L C5 T MW4 LC C5 T QW6 A C5 = Q4.3 Q I 0.4 I 0.5 CU I 0.7 C#20 S_CUD CD S I 0.3 PV R Q 4.3 CV CV_BCD MW 4 QW 6 C5 Q I 0.4 I 0.5 CU I 0.7 C#20 S_CUD CD S I 0.3 PV R Q 4.3 CV CV_BCD MW 4 QW 6 C5 = 计数器值 在系统数据存储器中为每个计数器保留了一个16-位字,它用来以二进制格式存储计数器的值( 0...999 )。 加计数 当“CU”输入端的RLO 从“0”变到“1”时,计数器的当前值加1(最大值=999). 减计数 当“CD”输入端的RLO 从“0”变到“1”时,计数器的当前值减1(最小值=0). 置数计数器 当“S”输入端RLO从“0”变到“1”时,计数器就设定为“PV”输入的值。 清零计数器 当“R”输入端RLO = 1,计数器的值置为0。如果复位条件满足,计数器不能置数,也不能计数。 PV 在“PV”输入端,用BCD码指定设定值 (0...999) : • 用常数 (C#...) • 通过数据接口用BCD 格式 CV / CV_BCD 计数器值用二进制数或BCD数装入累加器,再传递到其他地址。 Q 计数器状态在输出“Q”检查: • 计数值 = 0 -> Q = 0 • 计数值 >< 0 -> Q = 1 计数器类型 • S_CU = 加计数器 (仅加计数) • S_CD = 减计数器 (仅减计数) • S_CUD = 加/减计数器

计数器:位指令 LAD FBD STL A I0.0 L C#20 S C5 A I0.1 CU C5 A I0.2 CD C5 A C5 Network 1: Network 2: I0.1 CU Network 3: I0.2 CD Network 4: Q 4.0 FBD SC C5 I0.0 C#20 CV CU I0.1 CD I0.2 = Q 4.0 STL A I0.0 L C#20 S C5 A I0.1 CU C5 A I0.2 CD C5 A C5 = Q 4.0 位指令 所有的计数器功能也可以用简单的位指令操作。这种方法和前面讨论的计数器功能的相似处和不同之处如下: • 相似处: - 设定条件在输入“SC” - 指定计数器值 - “CU” 输入处RLO 变化 - “CD” 输入处RLO 变化 • 不同之处: - 不能检查计数器当前值 (没有BI 和 BCD 输出)。 - 没有图形表示中的位输出 Q。 . 注 在STEP 7中也可实现 IEC允许计数器。 在高级编程课中讨论采用系统功能块实现 IEC计数器。

计数器:功能图 CU CD S R 5 4 计数 3 注 如果计数器加计数达到999,或减计数达到0,那麽,计数值就保持不变,不对计数脉冲反应。 如果加计数和减计数同时输入,计数器保持不变。 2 1 Q

练习:瓶装线编程 (灌装循环和瓶子计数) M 设备 ON/OFF: I 0.0 = 启动 (瞬态常开触点) 主容器 练习:瓶装线编程 (灌装循环和瓶子计数) 设备 ON/OFF: I 0.0 = 启动 (瞬态常开触点) I 0.1 = 停止 (瞬态常闭触点) 主容器 手动/自动模式: I 0.4 = 手动 /自动 I 0.5 = 接受模式 I 0.2 = 向前点动 Q 5.0 灌装漏斗 瓶子传感器 I 8.7 I 0.3 = 向后点动 瓶子传感器 I 8.6 瓶子传感器 I 8.5 目的 给瓶子灌装程序加入一个新功能,除已经编程的手动模式(FC15),建立一个自动模式程序。 自动模式的 在自动模式下,当传送带电机 ( Q 8.5) 接通时,它一直保持接通直到 传送带控制 用停止开关(I 0.1) 或传感器 (I 8.6) 检测到瓶子。当瓶子已经装满,传送带自动启动向前运动,一直到检测到另一个瓶子或操作STOP开关。 瓶子灌装 当在灌装漏斗(I 8.6 =1)下检测到瓶子时,灌装开始。灌装用3秒和输出Q 5.0指示模拟。 瓶子计数 另外两个传感器提供满瓶和空瓶检查。瓶子传感器I 8.5 检查空瓶,瓶子传感器 I8.7检查数满瓶。 当瓶装线运行后,开始对空瓶和满瓶计数 (C1 用于空瓶,C2 用于满瓶) ,满瓶数显示在数码管上QW 6。 操作 1. 在FC 16中写一个程序,在OB1(项目“My Project”下程序“FILL”中)中调 用FC16。 必须修改FC 15中包含传送带向前点动的程序段。 2. 在培训设备上测试你的程序。 结果 它应该工作正常。 M Q 8.5 传送带向前 Q 8.6 传送带向后

转换操作 BCD <-> 整数 0 8 1 5 2 4 8 LAD FBD L IW4 BTI T MW20 L MW10 0 8 1 5 转换 BCD->整数 有数学运算的 用户程序 用BCD码输入 的数 任务 2 4 8 转换 BCD<-整数 用BCD码显示 的数 IN BCD_I EN ENO OUT IW4 MW20 I_BCD MW10 QW6 LAD IN BCD_I EN ENO OUT IW4 MW20 I_BCD MW10 QW6 FBD L IW4 BTI T MW20 L MW10 ITB T QW6 STL 例 用户程序利用拨轮按钮输入的值执行数学功能,并把结果显示在数据显示窗中。数学功能不能用BCD格式执行,所以必须转换格式。 转换指令 S7-300/400 指令集支持多种转换功能,指令都有相同的格式: EN, ENO 如果在允许输入EN处的 RLO =1,就执行转换。允许输出 ENO 总是和EN的状态相同。如果不是这样,在相关指令中指出。 IN 当EN=1时,IN处的值读入转换指令。 OUT 转换的结果保存在OUT输出的地址中。 BCD_I / BTI (BCD 转换到整数) 以三位BCD码数(+/- 999)读入IN参数,把它转换成一个整数 (16 位)。 I_BCD / ITB (整数转换到 BCD) 以整数形式(16位)读入IN参数,把它转换成一个三位BCD码数 (+/- 999),如果出现溢出,ENO = 0。 BCD_DI / BTD 把BCD 码数 (+/- 9999999) 转换成双整数 (32 位)。 DI_BCD / DTB 把双整数转换成一个7位BCD码数 (+/- 9999999),如果出现溢出,ENO = 0。

转换指令 I -> DI -> REAL 整数格式的数据(16 位) 带有实数的 运算程序 任务 从整数到双整数 的转换 从双整数到实数 的转换 IN I_DI EN ENO OUT MW12 MD14 DI_R MD26 F B D STL L MW12 ITD DTR T MD26 LAD IN DI_R EN ENO OUT MD14 MD26 I_DI MW12 例 使用整数的用户程序也需要执行除法,可能出现结果小于1。由于这些值只能用实数表示,所以需要转换到实数。这样,首先需要把整数转换成双整数。 I_DI / ITD 整数到双整数转换。 DI_R / DTR 双整数到实数转换。 注 其他转换指令,例如: • INV_I / INVI • NEG_I / NEGI • TRUNC / TRUNC • ROUND / RND • CEIL / RND+ • FLOOR / RND- • INV_DI / INVD • NEG_DI / NEGD • NEG_R / NEGR • CAW,CAD 在高级编程课中详细讨论。

比较指令 LAD CMP ==I IN1 IN2 IW0 IW2 FBD IN1 IN2 M0.0 IW0 IW2 Q5.7 CMP ==I & = Q5.7 CMP ==I STL A M0.0 A ( L IW0 L IW2 ==I ) = Q5.7 CMP 利用比较指令比较下面的数值: I 比较整数 (16位定点数) D 比较整数 (32位定点数) R 比较浮点数(32 位= IEEE 格式浮点数)。 如果比较结果为“真”,则操作的RLO=1,否则RLO=0。 用指定的条件比较输入IN1和IN2端的值: == IN1 等于 IN2 <> IN1 不等于IN2 > IN1 大于 IN2 < IN1 小于 IN2 >= IN1 大于等于 IN2 <= IN1 小于等于 IN2.

数字逻辑指令 L IW 0 L W#16#5F2A AW / OW / XOW T MW10 WXOR_W WOR_W WAND_W EN ENO IN2 OUT W#16#5F2A MW10 IN1 IW0 15 IW0 = 1 1 1 1 W#16#5F2A = 1 1 1 1 1 1 1 1 1 AND OR XOR AW 后的MW10 1 WAND_W “字与”指令对输入IN1和IN2处的数值相应位用“与”真值表运算。操作结果存放在输出OUT的地址。 当EN=1时,执行该指令。 例如,屏蔽拨轮按钮的第4个数: IW 2= = 0100 0100 1100 0100 W#16#0FFF = 0000 1111 1111 1111 MW30 = 0000 0100 1100 0100 WOR_W “字或”指令对输入IN1和IN2处的数值相应位用“或”真值表运算。操作结果存放在输出OUT的地址。 当EN=1时,执行该指令。 例如,置位MW32中的第0位 : MW32 = 0100 0010 0110 1010 W#16#0001 = 0000 0000 0000 0001 MW32 = 0100 0010 0110 1011 WXOR_W “字异或”指令对输入IN1和IN2处的数值相应位用“异或”真值表运算。操作结果存放在输出OUT的地址。 当EN=1时,执行该指令。 例如,检测IW0中的信号变化: IW0 = 0100 0100 1100 1010 MW28 = 0110 0010 1011 1001 MW24 = 0010 0110 0111 0011 OW 后的MW10 1 XOW 后的MW10 1

基本数学功能 LAD FBD STL L MW4 L MW10 + I T MW6 L MW5 L MW11 - I T MW7 L MD6 ADD_I IN2 EN ENO OUT IN1 MW4 MW6 加法 减法 SUB_I IN2 EN ENO IN1 MW5 MW11 MW7 OUT L MW5 L MW11 - I T MW7 乘法 MD6 MD12 MUL_R EN ENO IN1 MD66 IN2 OUT L MD6 L MD12 * R T MD66 概述 S7-300/400 指令集支持多种转换功能,所有指令都有相同的格式: EN 如果在允许输入EN处的 RLO =1,就执行转换。 ENO 如果结果超出了数据类型允许的范围,溢出位 OV=“Overflow”和 OS=“Stored Overflow”被置位,允许输出ENO=0。这可以防止和ENO有关的指令继续执行。 IN1,IN2 IN1处的值作为第一个地址读入,IN2处的值作为第二个地址读入。 OUT 数学操作的结果存储在输出OUT的地址处。 指令 加法: ADD_I 整数加法 ADD_DI 双整数加法 ADD_R 实数加法 减法: SUB_I 整数减法 SUB_DI 双整数减法 SUB_R 实数减法 乘法: MUL_I 整数乘法 MUL_DI 双整数乘法 MUL_R 实数乘法 除法: DIV_I 整数减法 DIV_DI 双整数减法 DIV_R 实数减法 注 高级数学功能 (ABS, SQR, SQRT, LN, EXP, SIN, COS, TAN, ASIN, ACOS, ATAN) 在高级编程课中讨论。 除法 MD40 MD4 EN ENO IN1 IN2 MD32 OUT DIV_R L MD40 L MD4 / R T MD32

练习:瓶装线编程 (产量数据) 空瓶 MW 100 满瓶 MW 102 “碎” 瓶 MW 104 目的 扩展瓶子计数功能。 目的 扩展瓶子计数功能。 计数器的最大计数范围是999,为了扩大计数值,可以把计数器串联。 应该使用数学操作进行计数。图中显示的产量数据也是管理所要求的。 操作 1. 删除FC 16中的“瓶子计数”段。 2. 写一个FC18完成计数功能,当装置启动后,在MW 100/102/104中的值要删 除。 当检测到 I 8.5 或 I 8.7 的边沿时,瓶子计数加1。 满瓶和空瓶的差数存放在 MW 104。 3. 在OB1中编一个FC18调用。 4. 下载S7程序“FILL”的所有块到CPU,测试程序。

练习:瓶装线编程 (包装数量) 目的 把下面有关瓶装线产量数据加到程序中: • 满瓶以6个为单位打一个包装,包装数需要计算并要显示在QW6. 练习:瓶装线编程 (包装数量) 目的 把下面有关瓶装线产量数据加到程序中: • 满瓶以6个为单位打一个包装,包装数需要计算并要显示在QW6. • 在FC19中写一个程序处理这个任务。 操作 1. 在FC19 (S7-程序FILL) 中写一个程序,把满瓶数除以6。 2. 把结果转换成BCD。 3. 把BCD 值传到数据显示 QW6。 4. 在FC 18中,删除显示满瓶数的段。 5. 在OB1中编写一个FC19的调用。 6. 保存程序,下载并调试。 结果 每完成6个满瓶,数码显示的数(包装数)加1。

移位指令 (字 / 双字) L MW8 L MW4 SLW L MW4 T MW12 SLW 2 T MW12 SHL_W EN N OUT ENO MW12 IN MW4 MW8 = +2 L MW8 L MW4 SLW T MW12 L MW4 SLW 2 T MW12 或: 1 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 OUT IN 左移字: OUT 1 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 IN 右移字: Shift 如果在允许输入EN处的 RLO =1,就执行指令。 SHL_W / SLW SHL_W 指令把累加器的位0~位15向左移动输入“N”指定的位数。右面的位用“0”填充。 SHR_W / SRW SHR_W指令把累加器的位0~位15向右移动输入“N”指定的位数。左面的位用“0”填充。 ACCU1-H 累加器的位 16 ~ 位31 不受影响。 OUT 操作的结果存放在输出OUT的地址处。 N 允许范围 N=0...15,如果 N>=16, OUT=0。 ENO 如果指令执行 (EN = 1),ENO 指示最后被移出的位的状态。 这就是说,如果最后被移出的位=“0”,其他和ENO相连的指令(级联) 不执行。 SHL_DW / SLD SHL_DW 或 SHR_DW 的操作过程与SHL_W 或 SHR_DW 指令类似,只不过ACCU1 SHR_DW / SRD ( 位 0 ~ 31) 的所有位都按指定的位数向左/右移动。 EN0 =1 EN0 = 0

有符号整数右移位 L MW8 L MW4 SSI L MW4 T MW12 SSI 3 T MW12 SHR_I EN N OUT EN0 IN MW4 MW8 = +3 L MW8 L MW4 SSI T MW12 L MW4 SSI 3 T MW12 或: 有符号整数右移: 1 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 OUT IN 1 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 OUT IN SHR_I / SSI 有符号整数向右移位指令只把 ACCU1-L (位 0 ~ 15) 的位向右移动。空出的位用符号位(位15)填充。 位16 ~ 31 不受影响。输入 N 指定要移动的位数。如果N 大于16,就认为N=16。 EN/ENO 如果指令执行 (EN = 1), ENO 指示最后移出的位的状态 (这个位和状态字中的 CC1 和 RLO 有关)。这就是说,如果最后被移出的位=“0”,其他和ENO相连的指令(级联) 不执行。 SHR_DI / SSD 有符号双字右移指令把ACCU 1 (位 0 ~ 31) 的所有位向右移动指定的位数。 N的允许值:0 ~ 32. 注 移位指令的详细内容在高级编程课中讨论。 EN0 = 0 EN0 = 1 1

双字循环移位指令 L MW6 L MD2 RLD L MD2 T MD12 RLD 4 T MD12 ROL_DW 或: ENO EN OUT ENO MD12 IN MD2 MW6 = +4 L MW6 L MD2 RLD T MD12 L MD2 RLD 4 T MD12 或: 1 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 IN: ROL_DW / RLD 双字循环左移指令把ACCU1中的内容循环地向左移动,空出的位用被移出的位 填充。 最后移出的位被装入状态字的CC1和ENO。这就是说,如果最后被移出的位=“0”,其他和ENO相连的指令(级联)不执行。 ROR_DW / RRD 双字循环右移。 注 在高级编程课中详细讨论循环指令。 向左循环移动 4位: 1 OUT: 1