360 likes | 553 Views
M0.0. CMP ==I. Q 5.7. IN1. IW0. IN2. IW2. T4. I0.7. S_ODT. Q4.5. Q. S. BI. S5T#35s. MW0. TV. I0.5. QW6. R. BCD. 数字指令. 十进制 BCD 数 数 0 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 8 1000 9 1001 10 11 12 13 14 15. 数据格式. 15. 8. 7.
E N D
M0.0 CMP ==I Q 5.7 IN1 IW0 IN2 IW2 T4 I0.7 S_ODT Q4.5 Q S BI S5T#35s MW0 TV I0.5 QW6 R BCD 数字指令
十进制 BCD数 数 0 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 8 1000 9 1001 10 11 12 13 14 15 数据格式 15 8 7 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 1 十进制值: 128 + 64 + 8 + 4 + 1 符号位 数据类型 整型 例如 205 31 24 23 16 15 8 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 指数(8位) 尾数(23 位) 符号位 数据类型 实数 例如 45.6789
符号 (+) 2 9 6 W#16#296 0 0 0 0 0 0 1 0 1 0 0 1 0 1 1 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 28 = 256 + 25 = 32 + 23 = 8 = 296 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 符号 (-) 4 1 3 W#16#F413 1 1 1 1 0 1 0 0 0 0 0 1 0 0 1 1 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 1 1 1 1 1 1 1 0 0 1 1 0 0 0 1 1 28 = 256+ 27 = 128 + 24 = 16+ 23 = 8+ 22 = 4 = 412 - (412 + 1) = - 413 数据格式 (16 位) PG CPU BCD 正数 整数 +296 BCD 负数 整数 -413
0 0 符号 (+) 0 0 2 9 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 1 1 0 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 整数 (32 位) = 28 = 256 + 25 = 32 + 23 = 8 = 296 实数的通用格式 = (Sign) • (1.f) • (2e-127) 实数符号 f = 底数 (23 Bit) e = 指数 (8 Bit) 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0 0 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 27 26 25 24 23 22 21 20 2-1 2-2 2-3 2-4 ..... 2-23 数据格式 (32 位) BCD DW#16#296 DINT L#+296 REAL +0.75 或 +7.5 E-1 实数= +1,5 * 2 126-127= 0,75
LAD FBD STL MOVE MOVE L +5 T MB5 EN ENO EN OUT MB5 5 IN OUT MB5 5 IN ENO 数据装入和传递 (1) 装载举例 L +5 // 16-位常数 (整数) L L#523123 // 32-位常数 (双整数) L B#16#EF // 十六进制字节 L 2#0010 0110 1110 0011 // 16-位二进制值 L 3.14 // 32-位常数 (实数)
Y X Y X Y X Y X Y X X Y X Y X Y 0 0 0 0 0 0 0 0 0 0 0 0 C A F E C A F E A F F E 数据装入和传递(2) ACCU1内容 ACCU2 内容 程序 X X X X X X X X : : L W#16#CAFE L W#16#AFFE : : :
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ACCU1内容 31 23 15 7 0 MB0 31 23 15 7 0 MB0 MB1 31 23 15 7 0 MB0 MB1 MB2 MB3 数据装入和传递(3) 程序 L MB 0 装载 L MW 0 L MD 0 T QD 4 QD 4 传递 T QW 4 QW 4 T QB 4 QB 4
定时器概述 LAD STL 示例: 输入延时 S_ODT A I0.7 L S5T#35s SD T4 A I0.5 R T4 L T4 T MW0 LC T4 T MW2 A T4 = Q8.5
LAD FBD STL T4 T4 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 I0.7 S_ODT S_ODT Q4.5 Q MW0 S S BI I0.7 BI S5T#35s MW0 S5T#35s QW6 TV BCD TV Q4.5 I0.5 = QW6 R BCD I0.5 R Q S5TIME数据类型 0,01s <-- 0 0 0,1s <-- 0 1 1s <-- 1 0 10s <-- 1 1 定时器:接通延时 (SD) S处的RLO R处的RLO 定时器操作 例如 Q 时间值: 0 . . . 999
LAD FBD STL T4 T4 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_ODTS I0.7 S_ODTS Q4.5 MW0 S BI I0.7 Q S S5T#35s QW6 BCD TV BI S5T#35s MW0 TV Q4.5 I0.5 I0.5 R Q = QW6 R BCD S处的RLO R处的RLO 定时器操作 例如 Q 定时器: 带保持接通延时 (SS)
LAD FBD STL T4 T4 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_OFFDT I0.7 S_OFFDT Q4.5 MW0 S BI I0.7 Q S S5T#35s QW6 BCD TV BI S5T#35s MW0 TV Q4.5 I0.5 I0.5 R Q = QW6 R BCD S处的RLO R处的RLO 定时器操作 例如 Q 定时器:关断延时 (SF)
LAD FBD STL T4 T4 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 I0.7 S_PULSE S_PULSE Q4.5 Q MW0 S S BI I0.7 BI S5T#35s MW0 S5T#35s QW6 TV Q4.5 BCD TV I0.5 = QW6 R BCD I0.5 R Q S处的RLO R处的RLO 定时器操作 例如 Q 定时器:脉冲 (SP)
LAD FBD STL T4 T4 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 I0.7 S_PEXT Q4.5 S_PEXT Q S MW0 S BI I0.7 BI S5T#35s MW0 Q4.5 TV S5T#35s QW6 BCD TV I0.5 = QW6 R BCD I0.5 R Q S处的RLO R处的RLO 定时器操作 Q 定时器:扩展脉冲 (SE) 例如
LAD FBD STL Network 1: T4 I0.0 T4 I0.0 & A I0.0 L S5T#5s SD T4 SD SD S5T#5s TV S5T#5s Network 2: T4 Q 4.0 Q 4.0 A T4 = Q 4.0 T4 & = Network 3: T4 A I0.1 R T4 I0.1 T4 I0.1 & R R 定时器:位指令
T4 S_OFFDT T4 S_ODTS T4 S_PEXT T4 S_ODT T4 S_PULSE I 0.7 I 0.5 Q4.0 BI BCD Q BI BCD Q BI BCD Q BI BCD Q S TV R S TV R S TV R S TV R I 0.7 S5T#5s I 0.5 I 0.7 S5T#5s I 0.5 I 0.7 S5T#5s I 0.5 I 0.7 S5T#5s I 0.5 BI BCD Q S TV R I 0.7 S5T#5s I 0.5 Q 4.0 Q 4.0 Q 4.0 Q4.0 Q 4.0 5s I 0.7 I 0.5 Q4.0 I 0.7 I 0.5 Q4.0 I 0.7 I 0.5 Q4.0 I 0.7 I 0.5 Q4.0 练习9.1: 测试定时器
设置定时器 以下列形式设置时间: 常数 S5T#43S_200MS 输入字 IW2 输出字 QW12 标志字 MW24 数据字 DBW255 T10 TV 定时器字的数据格式 - - 0 1 0 1 0 0 0 0 1 1 0 0 1 0 (432×0.1s = 43.2s) 102 101 100 时间 0-999(BCD) 无用 0: 0.01S 1: 0.1S 2: 1S 3: 10S
时基 时间值 13 12 9 0 L T10 9 0 29 20 时间值 使用定时器 二进制定时器字 十进制定时器字 T10 T10 DBW1 L T10 T DBW1 MW2 L T10 T MW2 QW4 L T10 T QW4 DBW5 LC T10 T DBW5 MW6 LC T10 T MW6 QW6 LC T10 T QW6 BI BCD Q Q 时基 时间值 定时器字 13 12 9 0 Bin BCD LC T10 累加器 13 12 11 9 7 4 3 0 102 101 100 时间值
练习9.2: 由两个定时器组成的时钟发生器 I 1.7 Q 5.7 2S 4S FC8 I 1.7 Q5.7
练习9.3: 由单定时器构成的闪烁频率发生器 FC51 T64 Segment1 T64 ! G ! S_PEXT # M 0.2 Q5.3 S S5T#5S TV Segment2 M 1.0 M 0.2 T64 & # M 0.3 S M 1.0 Q5.3 M 0.2 & R Q5.3 M 0.3 注意:输出点为继电器输出时, 开关频率不能太高。
练习9.4: 三个风扇的监控程序 M30.0 I0.7 R I0.0 T30 I0.1 =1 S_ODT I0.2 & >=1 I0.3 S Q I0.0 I0.1 & I0.2 Q4.0 I0.3
LAD FBD STL A I0.4 CU C5 A I0.5 CD C5 A I0.3 L C#20 S C5 A I0.7 R C5 L C5 T MW4 LC C5 T QW6 A C5 = Q4.3 C5 C5 S_CUD S_CUD I 0.4 Q 4.3 Q Q CU I 0.4 CU I 0.5 CD I 0.5 CD I 0.3 S I 0.3 S CV MW 4 C#20 PV CV MW 4 C#20 PV CV_BCD QW 6 Q 4.3 I 0.7 Q Q R CV_BCD QW 6 I 0.7 R = STEP 7中的S5计数器
LAD FBD STL Network 1: C5 C5 A I0.0 L C#20 S C5 I0.0 I0.0 SC SC C#20 C#20 CV Network 2: I0.1 C5 A I0.1 CU C5 CU C5 I0.1 CU Network 3: I0.2 C5 A I0.2 CD C5 CD C5 Network 4: I0.2 CD C5 Q 4.0 Q 4.0 A C5 = Q 4.0 C5 = 计数器:位指令
S 计数器:功能图 CU CD R 5 4 3 计数 2 1 0 Q
LAD FBD STL CMP ==I CMP ==I A M0.0 A ( L IW0 L IW2 ==I ) = Q5.7 M0.0 Q 5.7 IN1 IW0 Q5.7 IN1 IW0 = & IN2 IN2 IW2 IW2 M0.0 比较指令
练习9.5: 分频器 FC25 T65;M25.0 C25 M25.1 F & CU CV IN1 Q S >= G BCD QW6 MW2 IN2 & CD 1Hz I1.7 R Q R Q Q4.7 I1.7 M25.0 MW2 C25 Q4.7
练习9.6:瓶装线编程(灌装循环和瓶子计数) 设备ON/OFF: I 0.0 = 启动 (瞬态常开触点) 主容器 I 0.1 = 停止 (瞬态常闭触点) 手动/自动模式: I 0.4 = 手动 /自动 I 0.5 = 接受模式 I 0.2 = 向前点动 瓶子传感器 I 8.7 Q 5.0 灌装漏斗 I 0.3 = 向后点动 瓶子传感器 I 8.6 瓶子传感器 I 8.5 M Q 8.5 传送带向前 Q 8.6 传送带向后
LAD FBD STL 转换 BCD->整数 0 8 1 5 有数学运算的用户程序 转换 BCD<-整数 2 4 8 0 BCD_I L IW4 BTI T MW20 L MW10 ITB T QW6 BCD_I MW20 EN OUT ENO EN ENO IW4 IN IN OUT IW4 MW20 IN IN I_BCD I_BCD QW6 EN OUT EN ENO ENO MW10 IN IN OUT MW10 IN QW6 转换操作BCD <-> 整数 用BCD码输入的数 任务 用BCD码显示的数
整数格式的数据(16 位) LAD STL 带有实数的运算程序 从整数到双整数的转换 从双整数到实数的转换 F B D I_DI MD14 EN OUT DI_R MD26 EN OUT ENO MW12 IN IN L MW12 ITD DTR T MD26 ENO MD14 IN IN I_DI DI_R EN ENO EN ENO OUT OUT MW12 MD14 MD14 IN IN MD26 IN IN 转换指令I -> DI -> REAL 任务
WOR_W EN ENO IW0 IN1 OUT MW10 W#16#5F2A IN2 AND OR XOR 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 AW 后的MW10 0 1 0 1 1 1 1 1 0 0 1 1 1 0 1 0 OW后的MW10 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 XOW后的MW10 数字逻辑指令 WXOR_W L IW 0 L W#16#5F2A AW / OW / XOW T MW10 WAND_W 15 0 IW0 = 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 W#16#5F2A = 0 1 0 1 1 1 1 1 0 0 1 0 1 0 1 0
LAD FBD STL L MW4 L MW10 + I T MW6 ADD_I ADD_I MW6 OUT EN EN ENO MW4 MW4 IN1 IN1 MW6 OUT ENO IN2 IN2 MW10 MW10 L MW5 L MW11 - I T MW7 SUB_I SUB_I MW7 OUT EN ENO EN MW5 MW5 IN1 IN1 OUT MW7 ENO MW11 IN2 IN2 MW11 MUL_R MUL_R L MD6 L MD12 * R T MD66 MD66 OUT EN ENO EN MD6 MD6 IN1 IN1 MD12 MD66 ENO IN2 IN2 MD12 DIV_R L MD40 L MD4 / R T MD32 DIV_R MD32 OUT EN EN ENO MD40 MD40 IN1 IN1 IN2 ENO IN2 MD32 MD4 OUT MD4 基本数学功能 加法 减法 乘法 除法
练习9.8:瓶装线编程 (产量数据) 空瓶 MW 100 满瓶 MW 102 “碎” 瓶 MW 104
SHL_W L MW8 L MW4 SLW T MW12 EN ENO L MW4 SLW 2 T MW12 MW4 IN OUT MW12 MW8 = +2 N 左移字: 右移字: 0 0 0 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 IN IN 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 OUT OUT 移位指令 (字 / 双字) 或: EN0 = 0 EN0 =1
SHR_I L MW8 L MW4 SSI T MW12 EN EN0 L MW4 SSI 3 T MW12 MW4 IN OUT MW12 MW8 = +3 N 1 1 1 0 0 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 1 0 1 IN IN 1 0 1 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 OUT OUT 有符号整数右移位 或: 有符号整数右移: EN0 = 0 EN0 = 1
ROL_DW L MW6 L MD2 RLD T MD12 ENO EN L MD2 RLD 4 T MD12 IN MD2 MD12 OUT N MW6 = +4 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 IN: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 1 0 1 1 OUT: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 双字循环移位指令 或: 向左循环移动 4位: