数字指令 CMP ==I IN1 IN2 M0.0 Q 5.7 IW0 IW2 T4 I 0.7 S_ODT Q4.5 S5T#35s TV S Q BCD BI R I 0.7 I 0.5 S5T#35s Q4.5 MW0 QW6 目录 页 目标............ ........................................................................………............................................................ 3 要求,处理和输出数据............ ................................................................................................................. 4 整数(INT,16位整数)数据类型............ ................................................................................................ 5 双整数(DINT,32位整数)数据类型............ ......................................................................................... 6 实数(浮点数,32位)数据类型............ ................................................................................................. 7 用于输入和输出整数的BCD码............ ..................................................................................................... 8 “Monitor / Modify Variables”显示格式............ ......................................................................................... 9 数据装载和传送(1)..........……............................................................................................................ 10 数据装载和传送(2)..........……............................................................................................................ 11 数据装载和传送(3)..........……............................................................................................................ 12 STEP 7 中的S5 计数器 ....................................................................……............................................... 13 计数器: 功能图......................................................................................................................................... 14 计数器: 位指令 .......................................................................................…............................................. 15 练习: 计数传送的零件(FC18,C18)................................................................................................... 16 定时器: 接通延时 (SD) ...... …………...................................................................................................... 17 定时器: STEP 7 的S5 定时器的时间格式...... ………….......................................................................... 18 定时器: 带保持接通延时(SS) …………………........................................................................................ 19 定时器: 脉冲 (SP) .............................................................................................................................. 20 定时器: 扩展脉冲 (SE) …...................................................................................................................... 21 定时器: 关断延时 (SF) …………............................................................................................................ 22 定时器: 位指令 …................................................................................................................................ 23
数字指令 CMP ==I IN1 IN2 M0.0 Q 5.7 IW0 IW2 T4 I 0.7 S_ODT Q4.5 S5T#35s TV S Q BCD BI R I 0.7 I 0.5 S5T#35s Q4.5 MW0 QW6 目录 页 练习: 封锁传送带电机点动...............................................................................…………………............. 24 练习: 传送功能的监视(FC 17)........................................................................................................... 25 练习: 计数传送带运行故障............................................................................…………………................ 26 转换操作 BCD <-> 整数 …..........................................................................................……..................... 27 比较指令 ……......................................................................................................................................... 28 基本数学功能 …………….................................................................................................................... 29 练习: 计数传送的零件(FC18,MW 20)............................................................................................. 30 练习: 计数传送的零件,答案提示.......................................................................................................... 31 练习: 控制LED........................................................................................................................................ 32 转换操作I -> DI -> REAL ……................................................................................................................. 33 数字逻辑操作 .............................................................................................................…......................... 34 练习(选作): 数字操作例子................................................................................................................. 35 练习(选作):由两个定时器组成的时钟发生器..................................................................................... 36 练习(选作):由单定时器构成的闪烁频率发生器.................................................................................. 37 练习(选作):三个风扇的监控程序....................................................................................................... 38 练习(选作):分频器... .......................................................................................................................... 39
目标 学习了本章之后,你将 ... ... 熟悉INT、 DINT、 REAL数据类型和BCD显示 ... 能够在“Monitor / Modify Variable”测试功能中选择显示格式 ... 懂得“装载” 和“传送”指令 ... 能够为解决问题使用和编程S5计数器功能 ... 能够为解决问题使用和编程S5定时器功能 ... 能够为解决问题使用和编程转换指令INT <-> BCD ... 能够为解决问题使用和编程比较指令 ... 能够为解决问题使用和编程基本算术功能
要求, 处理和输出数据 过程操作 和监视 控制 单元 过程 控制器 0 8 1 5 2 4 8 拨轮按钮, 电位器, 7段显示 操作面板 0 8 1 5 2 4 8 V 拨轮按钮, 电位器, 7段显示 操作面板 控制 单元 处理数值 例如 MPI DI/ DO AI/ AO 布尔量/数值处理 事实上用只处理二进制数据来识别真逻辑控制系统。 今天的控制计算机的性能,在数据处理、质量控制领域、以及其他、已经增加了使用PLC数值数据处理的重要性。 数值过程变量可以在所有开环控制领域被发现 – 例如在所连接的过程操作和监视系统设备或在现场设备的控制中。 操作和监视 过程监视的目的是迅速地、简要地和清楚地提供给操作员关于生产机器或系统的本分钟的信息,以及干预和控制并影响过程的机会。 在过去非常简单,就是“哑的”输入和输出设备,例如7段显示和拨轮按钮用于显示和输入数值,今天“智能”操作和监视设备经常连接到PLC 。 现场设备 今天现场设备要求过程数据既过程的控制通过现场总线系统通过数值变量直接提供。现场设备的连接,例如驱动或称重系统,使用模拟输入和输出模板变得越来越过时了。 格式 根据连接的设备类型, 在设备和PLC之间用于传输数据的数据编码的不同的数据格式,也要在PLC 中存储和处理。 例如 PROFIBUS 过程 控制器 现场装置
整数 (INT, 16位整数) 数据类型 数值范围 -32768 至 +32767 (不带符号: 0 to 65535) 数值范围 -32768 至 +32767 (不带符号: 0 to 65535) 算术运算: 例如 + I, * I, <I, ==I 显示格式: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 DEC: + 662 BIN.: 2# 1 HEX: W#16# 9 6 2 +29 不带符号 符号 正数 27 6 x 160 = 6 +24 +22 9 x 161 = 144 +21 2 x 162 = 512 + 662 662 BIN.: 2# 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 DEC: - 662 HEX: W#16# 6 A D F 整数数据类型 整数(Integer)数据类型是一个整数值 ,也就是,不带小数点的数值。 (16位整数) SIMATIC® S7以带符号的16位代码存储整数数据类型数值。在该数值范围的结果如上图所示。 SIMATIC® S7提供算术运算功能来处理整数值。 十进制 STEP7使用十进制( Decimal )(不是BCD!)显示格式以设定整数数据类型的常数。它带有符号而不带额外的数据格式描述。以二进制和十六进制显示格式的常数整数值的应用原则上是可能的,但由于易读性差,他们或多或少不合适。因此, STEP7的语法仅提供以十进制显示格式的整数值的设定。 二进制 在数字计算机系统中,所有的数值都以二进制代码形式存储。在二进制系统中仅有数0和1。这种计数系统的基值2来自有效位的数。二进制数的每个位置的值来自基值2的乘方。这也表示为相应的格式2#.... 。 负值用二进制补码表示。在这种表示中,符号位 (整数数据类型的第15位)数值为 - 215 。由于这一数值大于所有剩余值的和,这一位也有符号信息。也就是,如果这一位=0, 那么这个数为正数;如果这一位= 1,那么这个数为负数。二进制数转换为十进制数是把为1的位的值相加(见图)。 以二进制显示格式选择常数不仅用于选择整数值,更多的用于选择位形式(例如在数字逻辑操作中),这里对由位形式表示的整数值没有兴趣。可选择位的数为从1到32。丢失的位用零位来填充。 -215 不带符号 符号 负数 +214 +213 10 x 160 = 16 +212 +211 6 x 161 = 96 +210 +28 +26 13 x 162 = 3328 +25 +23 +21 15 x 163 = 61440 以补码表示 - 662 64874
双整数(DINT, 32位整数)数据类型 数值范围 L# -2147483648 至 L#+2147483647 (不带符号: 0 to 4294967295) 算术运算: 例如 + D, * D, <D, ==D 显示格式: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 DEC: L# +540809 BIN.: 2# 1 符号 正数 HEX: DW#16# 8 4 8 9 (不带符号) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 DEC: L# -540809 BIN.: 2# 1 双整数(32位整数) SIMATIC® S7用带符号的 32位代码存储双整数。 在该数值范围的结果如上图所示。当然, SIMATIC® S7提供算术运算功能来处理DINT值。 十进制 STEP7使用十进制( Decimal )(不是BCD!)显示格式以设定双整数数据类型的常数。它带有符号和用于“长的” (双字, 32位)数据格式L# 。 当选择数值小于 -32768 或大于 32767 ,格式 L# 被自动添加。对小于-32768的负数,用户必须选择格式 L# - (例如: L# -32769)。如果该值作为双整数被进一步算术处理。 否则你将使用错误的值(数值加符号)! 十六进制 十六进制数系统提供16 个不同的数 (0 到 9 和A到F)。 这种计数系统的基值 16 的结果。相应的,十六进制数每位的值来自基值16的乘方。 通过为宽度的格式 W# (W = 字 = 16 位) 或DW# (DW = 双字 = 32位) 和为区别基本计数系统的 16#来选择十六进制数。可选择位的数为从1到 8。丢失的位用零位来填充。 位 A 到 F 对应着数值 10 到 15。数值15 是最后一个可以用二进制编码的数值- 不带符号 – 用 4 位。二进制到十六进制的转换有简单的关系,反之亦然。四个二进制位构成一个十六进制位。 于是十六进制格式的常数不用于选择整数值。它们用于替代位形式选择的二进制数,由位形式表示整数值不感兴趣。 符号 负数 (不带符号) F 7 B HEX: DW#16# 以补码表示
实数 (浮点数, 32位)数据类型 数值范围 -1.175495•10-38 至 3.402823•10+38 数值范围 -1.175495•10-38 至 3.402823•10+38 算术运算: 例如 + R, * R, <R, ==R sin, acos, ln, exp, SQR 实数的标准格式 = (Sign) • (1.f) • (2e-127) 举例: 7.50000e-001 (7.5 * 10-1 = 0.75) 实数的符号 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) 1 1 1 1 1 1 1 27 26 25 24 23 22 21 20 2-1 2-2 2-4 ..... 2-3 2-23 实数 前面谈的 INT 和DINT 数据类型用于存储带符号的整数值。 相应的,仅提供整数值为结果的指令可以处理这些数据类型。 在处理象电压、电流和压力这样的模拟过程变量情况下,使用实数值(实数,“小数”)变得必要。为了能够表示这样的数,二进制位必须定义为小于1的值(基值2 的负指数的乘方)。 实数格式 为了能够用定义的存储器(对SIMATIC® S7: 双字, 32 位) (见图)能力构成最大可能的数值范围,必须能够选择小数点的位置。原则上, IEEE定义浮点数格式。这一格式写进了IEC 61131 并包含在 STEP 7中。这一格式使得容易处理变量小数点的位置。 以二进制编码的浮点数,二进制位包含浮点数的尾数以及其余包含指数和符号。 当你设定实数值时,你不用设定格式。在你输入常数实数值(例如: 0.75)后,编辑器自动进行转换(例如: 7.5000e-001)。 应用 浮点数用于“模拟量处理”。 浮点数的最大优势是在可能的指令数量方面最多。这些包括,除了例如: +, -, * , / 的标准指令之外还包括象 sin, cos, exp, ln等指令, 它们主要用在闭环控制算法。 实数 = +1.5 * 2 126-127 = 0.75
用于输入和输出整数的 BCD 码 2 9 6 16 Bit: 32 Bit: 数值范围 16 Bit: - 999 至 + 999 转换操作: BTI, BTD, ITB, DTB (不是算术运算!) 2 9 6 16 Bit: BIN.: 2# 1 符号(+) 2 9 6 HEX: W#16# 2 9 6 DEC: + 662 原来 在过去,整数的设定和显示使用简单的、机械拨轮按钮和数字显示。这些拨轮按钮和数字显示通过并行接线连接到 PLC的数字输入和输出模板。该结构也可以多级,不用改变位的机械编码。 BCD码 每位十进制数用4位二进制数进行编码。之所以需要4位二进制数表示是因为十进制的最大数9,需要至少4位二进制数表示。 十进制数 BCD码 十进制数 BCD码 0 0000 6 0110 1 0001 7 0111 2 0010 8 1000 3 0011 9 1001 4 0100 10 ... 15 不允许 5 0101 负数 负数也可以用BCD拨轮按钮设定,STEP 7 在数值最高的最高位编码符号(见 图)。符号位=0, 表示正数;符号位= 1,表示负数。 STEP 7 识别 16位编码的(符号+ 3位) 和 32位编码的(符号+ 7位) BCD数。 数据格式 在STEP 7 中没有合适的数据格式设定 BCD码数值。然而,你可以用 HEX 数设定 BCD码给出的十进制数。 HEX 数的二进制码和 BCD编码的十进制数的二进制码相同。 如你图中所见,DEC数据格式不适合设定BCD编码的数! 符号 (+) 2 9 6 32 Bit: BIN.: 2# 1 x HEX: DW#16# 2 9 6 DEC: + 662
“Monitor / Modify Variables”: 显示格式 显示格式 在 “Monitor / Modify Variables” 测试功能中和在 “Monitor (Block)”测试功能中当以STL显示变量或寄存器内容时可以选择不同的显示格式。 可以用几种显示格式监视每个变量。根据变量的数据类型,用适当的显示格式监视更有道理。 BOOL: 单个位的显示(仅能用于 BOOL数据类型的变量) BIN: 变量的每个位的显示 (可以用于BYTE, WORD, DWORD数据类型的变量) HEX: 以十六进制数 (BCD)显示变量的内容 (可以用于BYTE, WORD, DWORD数据类型的变量) DEC: 以带符号的十进制数 (不是 BCD!)显示变量的内容 (可以用于INT, DINT数据类型的变量) FLOATING_ 以浮点数显示变量的内容 POINT (可以用于REAL数据类型的变量) 编址 S7 控制器的存储器的编址是字节导向的。 结果,标志字 MW 20 包含标志字节MB 20 (高字节) 和 MB 21 (低字节)。标志双字MD 22包含标志字节MB 22, 23, 24 和 25 (见图中例子)。 当有变量的绝对访问时 (例如用 “L MW 20”), 你必须确定访问的大小 (MB..., MW... 或 MD...) 以及地址 (总是高字节的地址) 是正确的。 如果你无意中做了“之间的”访问,将装载无效值! 图中例子显示当MW 21 被装载,变量“MW_Parts” (MW 20) 和变量“Mean” (MD 22) 的一部分被装载。用变量的符号编址可以避免这样的错误。
数据装载和传送 (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计数器 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 = 加/减计数器
计数器:功能图 CU CD S R 5 4 Count 3 注 当计数器达到最大值(999),下一次加计数不影响计数器。反之,当计数器达到最小值(0),下一次减计数不影响计数器。计数器计数不高于999且不低于0。 如果加计数和减计数同时输入,计数器保持不变。 2 1 Q
计数器:位指令 LAD FBD STL A I 0.0 L C#20 S C5 A I 0.1 CU C5 A I 0.2 CD C5 Network 1: Network 2: I 0.1 CU Network 3: I 0.2 CD Network 4: Q 4.0 FBD SC C5 I 0.0 C#20 CV CU I 0.1 CD I 0.2 = Q 4.0 STL A I 0.0 L C#20 S C5 A I 0.1 CU C5 A I 0.2 CD C5 A C5 = Q 4.0 位指令 所有的计数器功能也可以用简单的位指令操作。这种方法和前面讨论的计数器功能的相似处和不同之处如下: • 相似处: - 设定条件在输入“SC” - 指定计数器值 - “CU” 输入处RLO 变化 - “CD” 输入处RLO 变化 • 不同之处: - 由于没有二进制(CV)或 BCD (CV_BCD) 输出不能检查计数器当前值 。 - 没有图形表示中的位输出 Q。 注 在STEP 7中也可实现依据 IEC的计数器。 在高级编程课中讨论采用系统功能块实现 IEC计数器。
练习: 计数传送的零件 (FC 18, C 18) 0 8 1 5 ACTUAL number of parts QW 6 DI DO T_System_ON .0 ACTUAL number of parts V I 0.1 T_System_OFF L_SYSTEM .1 I 0.2 T_Jog_RT L_MAN .2 I 0.3 T_Jog_LT L_AUTO .3 I 0.4 S_M/A_ModeSelect .4 I 0.5 T_M/A_Accept .5 QW 6 I 0.6 .6 -15V...+15V -15V...+15V AI2 AO1 I 0.7 .7 AI1 AO2 AI1 V AI2 到现在的功能 在自动模式,零件从Bay 1 或 Bay 2传送到传送带终端穿过光栅。当零件放在传送带的Bay 1 或 Bay 2处并且被占的Bay的暂态开关被按动时传送带启动并且当零件穿过光栅时传送带停止。 任务 • 在自动模式,一旦零件穿过“LB”光栅(“LB” 0->1)零件传送被计数。 • 传送零件的数量(零件的实际数量)在BCD数码管显示。 • 当系统被断开时计数器被复位。 做什么 • 在FC 18中编写传送零件的计数。为此在FC 18中使用S5计数器(C 18)。 • 在OB 1中编写FC 18的调用。 0 8 1 5 AI1 AI2 AO1 AO2
定时器:接通延时 (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” 。 注 在STEP 7中也可以用SFB实现依据 IEC的计数器。 在高级编程课中讨论采用系统功能块的运用 。 Q S5TIME 数据类型 0,01s <-- 0,1s <-- 1s <-- 10s <-- 1 时间值: 0 . . . 999
定时器: STEP 7 的S5定时器的时间格式 S5T#35s200ms (时基 : 01 (100ms), 单位时间数: 352) 以常数时间设定 S5T#35s200ms (时基 : 01 (100ms), 单位时间数: 352) 时基 3 5 单位时间(BCD码) X 1 2 01 以变量时间设定 在 “L T...” 执行后Accu 1 内容 剩余的单位时间(Integer) X 20 21 29 22 23 24 25 26 27 28 1 时间设定 时间值可以是固定的并由时间常数确定。时间值的允许范围从S5T#10ms到 S5T#2h46m30s0ms。 使用包含S5TIME数据类型的变量可以设定可变时间(例如标志字或数据字)。用户必须确定适当的时基和单位时间的数量,如图所示,存储在程序中的变量 中。 时基 时间基准定义的一个单位时间的数量的间隔,该间隔当定时器运行时一个单位地一个单位地递减。变量的12和13位必须包含以二进制编码数的时基: 时基 0(位13 = 0,位12 = 0 ) = 10 ms 时基 1(位13 = 0,位12 = 1 ) = 100 ms 时基 2(位13 = 1,位12 = 0 ) = 1 s 时基 3(位13 = 1,位12 = 1 ) = 10 s 时间设定值的格式 单位时间的数量必须以BCD码数设定。当单位时间的数量乘以时基时,结果是要求的时间值。允许的范围从1至999。当时间用常数(S5T#...)表示时,系统自动分配最小可能的时间基准及单位时间的数量。 L / BI 在输出“BI”或用指令“L T... ”,定时器的剩余时间值(单位时间的数量)以整数不带时基被查询。 LC / BCD 在输出“BCD”或用指令“LC T... ”,定时器的剩余时间值(单位时间的数量)以BCD码数在12和13位中带时基被查询。 时基 3 5 剩余的单位时间(BCD码) X 1 2 01 在 “LC T...” 执行后Accu 1 内容
定时器: 带保持接通延时 (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的信号无关。
定时器:脉冲 (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”输入端的RLO从“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”。 例如
定时器:关断延时 (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”,直到设定的时间到达。
定时器:位指令 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 输出)。
练习: 封锁传送带电机点动 T_Jog_RT I 0.2 Run Conveyor RIGHT (Q20.5 / Q8.5) Lock-out time LEFT T_Jog_RT I 0.2 Run Conveyor RIGHT (Q20.5 / Q8.5) Lock-out RIGHT T 15 (SF) T_Jog_LT I 0.3 Lock-out time RIGHT Run Conveyor LEFT (Q20.6 / Q8.6) 到现在的FC 16 在手动模式(Q 4.2 = ´1´),使用模拟器的暂态开关I 0.2(点动向右) 和 I 0.3 (点动向左)可以点动传送带电机向左或向右。 任务 为避免太大的负载变化,传送带每次改变方向只允许在2秒钟封锁时间之后运 动。例如,如果电机方向向右点动, 它只能在2秒钟封锁时间过后才能向左点 动。 做什么 1. 在FC 16中,编程S5 定时器T 15 和 T 16 作为延时断开 (S_OFFDT),为向 左和向右封锁时间。当点动向右条件满足启动T 15 ,当点动向左条件满足 启动T 16 。 2. 用定时器的状态控制点动条件。只有当向左封锁时间不再运行(T 16 = ´0´)时 向右点动条件才能满足,反之亦然。 3. 存盘修改过的 FC 16 块并下装到 CPU 4. 检查你的程序是否满足要求的功能! 答案提示 通过使用“分支”,在传送带向右和向左的两段中监视的定时器,可以集成如下: 编辑分支: 1. 选择连接处,在此要生成分支 2. 在编辑器工具条,点击 Lock-out LEFT T 16 (SF) Jog condition LEFT S5T#2s T 16 TV = K_LT (分支) S_OFFDT
练习: 传送功能的监视 (FC 17) 0 8 1 5 ACTUAL number of parts QW 6 Weight DI DO T_System_ON .0 ACTUAL number of parts Flt V I 0.1 T_System_OFF L_System .1 I 0.2 T_Jog_RT L_MAN .2 I 0.3 T_Jog_LT L_AUTO .3 I 0.4 S_M/A_ModeSelect .4 I 0.5 T_M/A_Accept .5 QW 6 I 0.6 .6 -15V...+15V -15V...+15V AI2 AO1 AI1 AO2 I 0.7 .7 I 1.0 T_Fault_Rst AI1 AI2 Weight V 到现在的FC 16 在自动模式,零件从Bay 1 或 Bay 2传送到传送带终端。当零件放在传送带的Bay 1 或 Bay 2处并且被占的Bay的暂态开关被按动时传送带启动。当零件穿过光栅时传送带电机停止。 任务 生成在自动模式监视故障条件并且如果故障出现停止传送带的程序。监视功能如下: • 如果传送带启动后6秒内零件没有穿过光栅,生成故障(显示)并停止传送 带电机(注意:在FC 16中控制传送带电机) • 在模拟器 LED Q 4.0用2 Hz闪光显示故障 (时钟标志字节MB 10的第3位)。 • 通过模拟器的暂态开关“T_Fault_Rst” I 1.0应答故障 • 如上所述只有当故障被应答后传送带才能启动( 在FC 16中封锁) 做什么 • 在FC 17中编程所述的监视功能 - 为监视使用 S5 定时器T 17 作为延时接通 (SD) - 当故障出现时置位M 17.0以便随后可以用在FC 16中处理 • 在OB 1中编程 FC 17 的调用 • 修改FC 16以包括当故障出现时必要的封锁既传送带电机的断开 0 8 1 5 AI1 AI2 AO1 AO2
练习:计数传送带运行故障 Conv. oper. fault M 17.0 Conv. oper. fault counter C 17 3 Conv. oper. fault counter C 17 2 1 到现在的功能 在自动模式传送功能被监视。程序监视去看是否用了长于6秒穿过光栅。如果故障出现,由(Q 4.0)显示,传送带电机停止。 任务 在自动模式传送带运行故障被计数。当3次传送带运行故障出现后,因为安全的原因自动模式被断开。要启动新的传送功能,故障必须被应答(如已编程的)并且自动模式必须被再次接通。 做什么 1. 在FC 17中,在一个新段中,使用 S5 计数器 C 17作为向下计数器编程传送 带运行故障的计数。 - 当自动模式接通时(Q 4.3 = 1) ,计数器被置为3(直到自动模式被断开 传送带运行故障的数量) 。 - 每次传送带运行故障出现时计数器减1计数(M 17.0 = 1) 。 2. 在FC 15中(模式选择),编程当三次传送带运行故障出现后自动模式被断 开(复位)。当计数器C 17减计数从3至0时既当它的二进制状态从1 -> 0时 自动模式被断开。 3. 存盘修改过的块并下装到 CPU 4. 检查所预期的当第三次传送带运行故障出现后是否自动模式被断开 AUTO mode Q 4.3 (Q 8.3)
转换操作 BCD <-> 整数 0 8 1 5 2 4 8 LAD FBD L IW2 BTI T MW20 L MW10 0 8 1 5 转换 BCD->整数 有数学运算的 用户程序 用BCD码输入 的数 任务 2 4 8 转换 BCD<-整数 用BCD码显示 的数 IN BCD_I EN ENO OUT IW2 MW20 I_BCD MW10 QW6 LAD IN BCD_I EN ENO OUT IW2 MW20 I_BCD MW10 QW6 FBD L IW2 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 转换到整数) IN参数的内容以三位BCD码数(+/- 999)读入,并把它转换成一个整数 (16 位)。 I_BCD / ITB (整数转换到 BCD) IN参数的内容以整数形式(16位)读入,并把它转换成一个三位BCD码数 (+/- 999),如果出现溢出,ENO = 0。 BCD_DI / BTD 把BCD 码数 (+/- 9999999) 转换成双整数 (32 位)。 DI_BCD / DTB 把双整数转换成一个7位BCD码数 (+/- 9999999),如果出现溢出,ENO = 0。
比较指令 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.
基本数学功能 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
SETPOINT number of parts 练习: 计数传送的零件(FC 18, MW 20) DI DO Q 4.... I 0.0 T_System_ON .0 ACTUAL number of parts Flt V I 0.1 T_System_OFF L_System .1 I 0.2 T_Jog_RT L_MAN .2 I 0.3 T_Jog_LT L_AUTO .3 I 0.4 S_M/A_ModeSelect .4 I 0.5 QW 6 T_M/A_Accept .5 I 0.6 .6 -15V...+15V -15V...+15V AI2 AO1 I 0.7 .7 AI1 AO2 I 1.0 T_Fault_Rst AI1 Weight V AI2 SETPOINT number of parts 到现在的FC 18 • 在自动模式传送的零件一旦它们穿过光栅“LB” (“LB” 0->1)要被计数( 用 S5计数器C 18 )。 • 传送的零件显示在BCD数字显示。 • 当系统断开时计数器被复位(Q 4.1 = ´0´) 。 任务 • 不但用S5计数器C 18计数传送的零件, 而且用MW 20存储总和。用 M 18.0标志位作为必要的边沿检测的辅助标志。 • 多少零件要被传送的设定值可以通过BCD拨轮按钮设定。当给出的零件的 设定值达到时,在传送带终端的红色的LED (Q 8.4)上显示。 • 只要零件数达到设定值的信息(红色的LED )存在,不可能启动下一传送 功能( 在FC 16中封锁) 。 • 通过传送带终端的暂态开关可以应答该信息。应答复位实际零件数 (MW 20)为0,就像断开系统的作用。 做什么 • 插入OB 121组织块到你的程序中并下装到CPU。 在OB 121中不需要程 序。在设定零件的设定值时, 来自BCD拨轮按钮引起的“抖动”,下装这个 “空的”OB 121 ,避免CPU 进入STOP 状态(更多信息见OB一章) 。 • 编程当前 FC 18 的新任务的零件计数 • 修改FC 16以根据任务控制传送带电机 注意下页的FC 18答案提示! 0 8 1 5 AI1 AI2 AO1 AO2 IW 2
练习: 计数传送的零件(FC 18), 答案提示 NW 1: Set "counter" to 0 MOVE 复位的条件 EN OUT MW 20 IN ENO NW 2: Counting using memory word, ACTUAL number of parts ADD_I 计数事件的上升沿 EN ENO MW 20 IN1 OUT MW 20 1 IN2 NW 3: Display ACTUAL number of parts on BCD digital display 零件的实际值 (MW 20) 从整数到 BCD转换 -> 结果在 BCD 数字显示 ( QW 6) NW 4: Readin SETPOINT number of parts and convert from BCD to Integer 来自数码拨轮 ( IW 2)的值从 BCD 转换到整数 -> 把零件的给定值 (Integer)存储在 MW 200 用加法计数 通过使用标志字和加法计数传送的零件替代用S5计数器计数,你会得到以下的优点: 当你用S5计数器时,你只可以从0到999计数; 当你用整数加法计数时,你可以从-32768到+ 32767计数。 FC 18的部分功能 如图所示,可以把FC 18的全部功能分为以下几个功能部分∶ • 第1段:置“计数器”为0 意义,用0覆盖用作计数器的MW 20标志字的内容。因为 –– 当复位条件满足 时 –– 根据任务可以每个周期都发生,不需要边沿检测。 • 第2段:用标志字计数 意义,每次计数出现时,标志字的内容加1(不是自己激活计数!)。计数 的出现必须通过边沿检测。 在计数时,只要计数时就执行加法,结果标志字的内容会循环增加。 • 第3段:零件的实际值显示在BCD数字显示 因为在MW 20标志字中以整数存储零件实际值加法的结果,在信息传送到 BCD数字显示之前要执行从整数到BCD的格式转换。例如, MW 200可以 临时用来存储转换结果。 • 第4段:读入零件的设定值并从BCD转换为整数 …需要能够用来比较,从BCD拨轮按钮读入的并转换的零件的设定值 (MW 200),和第5段的零件实际值(MW 20, Integer) 。比较功能仅能在整数 数据格式时正确工作。 NW 5: ACTUAL-SETPOINT comparison, LED (red LED Q8.4) 比较实际值 (MW 20)和给定值(MW 200), 比较的结果送到 LED
练习: 控制 LED 常亮 ACTUAL=SETPOINT 常亮 at both bays when a new part can be placed on the conveyor 1 Hz 闪光 at the bay where the part was placed and from which the conveyor can be started 2 Hz 闪光 at both bays as long as the transport function is running 任务 在自动模式, Bays 1 和 2的LED要满足下列显示功能。它们显示 • 常亮 当传送带的这两处都可以放新零件时 条件: 自动模式= ´1´,传送带电机向右= ´0´,信息实际值=设定值(红色的 LED) = ´0´, Bays 1 和 2的接近开关= ´0´,无故障(M 17.0 = ´0´) OR • 1 Hz 闪光 (1 Hz = 闪烁时钟存储器 M 10.5) 仅当新零件已放在传送带的接近开关前并且仅到通过相应的暂态开关启动 传送带 条件: 自动模式= ´1´,传送带电机向右= ´0´,信息实际值=设定值(红色的 LED) = ´0´, Bay 的接近开关= ´1´ 另一个Bay的接近开关= ´0´, 无故障(M 17.0 = ´0´) • 2 Hz 闪光 (2 Hz = 闪烁时钟存储器 M 10.3) 只要传送带正在运行 条件: 自动模式= ´1´,传送带电机向右= ´1´ 做什么 1. 在FC 17中,根据任务为Bays 1 和 2各编程一个新段中 2. 存盘修改过的块并下装到 CPU 3. 检查修改过的FC 17是否满足所需的功能 答案提示 在FC 17中两个新段的结构: 常亮 >=1 Bay LED 条件 1 Hz 闪光 2 Hz闪光 =
转换指令 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 在高级编程课中详细讨论。
数字逻辑指令 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
练习(选作): 数字操作例子 FC 2 这个练习包含了带有以下功能的例子: 练习(选作): 数字操作例子 FC 2 这个练习包含了带有以下功能的例子: 程序段1 当I0.0从0变到1时,加计数器加一。当前的计数值以BCD码的形式保存在MW4中。 程序段2 将MW2置零。 程序段3 当前的值转换成双整数,再转换成实数。(一个BCD值不能直接转换成实数)。 第二个转换的结果除以6。除法的浮点结果保存在MD20中。 程序段4 MD20取整成一个整数,然后再把双整数转换成BCD码。BCD码被送到输出BCD显 示 ( QW6 ). 目标: 1. 使用这些指令检验对数字操作的理解。 2. 由于这些指令不在工具框中,所以,必须熟悉指令显示功能和相应的帮助功 能。 过程: 1. 建立FC2,用程序编辑器(LAD/STL/FBD)编辑、存盘、下装到PLC。 2. 在OB1中仅调用FC2 ,并测试上面显示的逻辑操作。 结果: 当用I0.0计数时,可以看到显示是如何增加1的。
练习(选作): 由两个定时器组成的时钟发生器 I 1.7 Q 5.7 2S 4S FC 3 I 1.7 任务要求 只要输入I1.7接通(为“1”),输出Q5.7就闪烁,ON和OFF的宽度都可以改变,时序关系见上图中实线所示。 步骤 (1)用上图中所给的结构画出程序的功能方框图。 (2)用FBD方式将程序块FC3写在硬盘上。 (3)将PLC置为STOP。 (4)将FC3从硬盘传送到PLC并在OB1中仅调用FC3 。 (5)将PLC置为RUN并测试程序。 修改 要实现以下各步需作那些修改? (1)开关I1.7断开时,输出Q5.7立即断开并且 (2)当输入I1.7断开后又马上接通时,输出Q5.7立即变亮。 (时序关系如上图中虚线所示) Q5.7
练习(选作): 由单定时器构成的闪烁频率发生器 练习(选作): 由单定时器构成的闪烁频率发生器 FC 4 T4 Network T4 ! G ! S_PEXT # M 0.2 Q5.3 S S5T#5S TV Network M 1.0 M 0.2 T4 & # M 0.3 S M 1.0 Q5.3 M 0.2 任务要求 在实际应用中,闪烁频率经常用于故障显示,上图给出了由一个定时器构成的闪烁频率信号的产生程序。 第一段的功能是产生一个时钟信号。每当定时时间T到达时,就重新启动定时器T4,使定时器在每个时钟周期输出一个宽度为一个扫描周期的“0”脉冲。 第二段的作用是使时钟信号变为高低电平对称的闪烁频率信号。当定时时间T到达时,M0.2在一个循环扫描周期内被置位,这个标志位将通过S M1.0或R M1.0使标志M1.0被置位或复位,这样每两个时钟周期通过M1.0输出一个高低电平对称的方波信号。 一旦闪烁频率发生器在程序中安装,它就可以提供时钟脉冲而不需要特定的启动信号。闪烁频率可通过Q5.3观察到。(注意频率不要大于10Hz) 练习 在一个新程序块FC4中编写上述程序。令闪烁频率为2Hz,调试程序。 闪烁频率 周期=2(定时时间+扫描周期)≈2 定时时间=2T 闪烁频率=1/周期=1/2T,如闪烁频率为2Hz,则定时时间T=250ms。 & R Q5.3 M 0.3 注意:输出点为继电器输出时, 开关频率不能太高。
练习(选作): 三个风扇的监控程序 FC 5 M30.0 I0.7 R I0.0 T 5 I0.1 =1 I0.2 & >=1 练习(选作): 三个风扇的监控程序 FC 5 M30.0 I0.7 R I0.0 T 5 I0.1 =1 I0.2 S_ODT & >=1 I0.3 5 S S Q I0.0 I0.1 & 任务要求 用程序对一个设备中三个风扇(I0.0,I0.1和I0.2)进行监控。正常情况 下,只要设备运行(I0.3=1)其中两个风扇就转,另一个备用。对它们的监控要求如下: (1)如果一个风扇坏了,而备用风扇在5秒钟内还未接通,显示故障信号 (Q4.0=1)。 (2)一旦三个风扇都坏了,故障信号立即显示。 (3)当设备恢复正常运行时,用I0.7清除故障信息(Q4.0=0) 。 注意 上图中“=1”表示“n中取1”(即多个输入中只有一个为1时,输出为1),需要用AND和OR功能来编写。 练习步骤 (1)在新块FC5中编写监控程序。 (2)调试程序。 I0.2 Q4.0 I0.3
练习(选作): 分频器 FC 6 G Q T6;M25.0 C6 M25.1 CMP>=I F & CU CV IN1 S BCD 练习(选作): 分频器 Q FC 6 T6;M25.0 C6 M25.1 CMP>=I F & CU CV IN1 S G BCD QW6 MW2 IN2 & CD 1Hz I1.7 R Q R Q Q4.7 I1.7 M25.0 MW2 任务要求 由定时器T6构成的闪烁频率发生器通过标志M25.0提供频率信号,该时钟信号经过计数器实现分频,分频后的信号通过Q4.7输出。 如果输入端I1.7为“1”,则时钟信号使计数器C6加计数,直到计数值达到标志字MW2中所存储的值。在下一个时钟脉冲到来时计数器则开始减计数,当计数值达到零时又开始加计数。 计数值以十进制的方式显示在数显屏QW6上。分频数即为计数设定值的二倍,存在MW2中的计数设定值通过IB0输入。 程序块的拷贝 前面练习中已经编写了一个闪烁频率发生器的程序FC6,为了不再重新输入该程序,可将原来的程序块FC4拷贝成为一个新块,在新块中继续编写其它程 序。 练习步骤 (1)将FC4拷贝为FC6。 (2)按上图中要求修改并完成新的FC6(T6,M25.0)。 (3)插入一个新段,完成从IB0输入计数设定值的功能。 (4)插入几个新段,按上图中要求编写其它功能。 (5)调试分频器程序。改变IB0的值,查看QW6及Q4.7的显示。 C6 Q4.7