




已阅读5页,还剩133页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
S7 200系列PLC主机中有两类指令集 IEC1131 3指令集是国际电工委员会制定的PLC国际标准语言 只能用梯形图 LAD 和功能块图 FBD 编程语言编程 通常指令执行时间较长 SIMATIC指令集是西门子公司为S7 200PLC设计的编程语言 该指令通常执行时间短 而且可以用梯形图 LAD 功能块图 FBD 和语句表 STL 三种编程语言 本章讲解SIMATIC指令集中的常用指令及使用方法 第三节S7 200PLC的指令系统 一 S7 200PLC编程基础 一 编程语言 SIMATIC指令集是西门子公司专为S7 200PLC设计的编程语言 使用SIMATIC指令集 可以用梯形图 LAD 功能块图 FBD 和语句表 STL 编程语言编程 1 梯形图 LAD 编程语言 梯形图 LAD 是与电气控制电路相呼应的图形语言 它沿用了继电器 触头 串并联等术语和类似的图形符号 梯形图按自上而下 从左到右的顺序排列 最左边的竖线称为起始母线也叫左母线 然后按一定的控制要求和规则连接各个接点 最后以继电器线圈 或再接右母线 结束 称为一逻辑行或叫一 梯级 通常一个梯形图中有若干逻辑行 梯级 形似梯子 如图5 1所示 右母线省略 2 功能块图 FBD 编程语言 对应图5 1中的I0 1长闭触点 功能块图 FBD 类似于普通逻辑功能图 它沿用了半导体逻辑电路的逻辑框图的表达方式 一般用一种功能方框表示一种特定的功能 框图内的符号表达了该功能块图的功能 功能块图通常有若干个输入端和若干个输出端 输入端是功能块图的条件 输出端是功能块图的运算结果 3 语句表 STL 编程语言 语句表 STL 是用助记符来表达PLC的各种控制功能的 它类似于计算机的汇编语言 这种编程语言可使用简易编程器编程 但比较抽象 一般与梯形图语言配合使用 互为补充 语句表 STL 可以编写梯形图 LAD 或功能块图 FBD 无法实现的程序 二 数据类型 1 基本数据类型 S7 200PLC的指令参数所用的基本数据类型有 1位布尔型 BOOL 8位字节型 BYTE 16位无符号整数型 WORD 16位有符号整数型 INT 32位无符号双字整数型 DWORD 32位有符号双字整数型 DINT 32位实数型 REAL 2 数据长度与数值范围 不同的数据类型具有不同的数据长度和数值范围 在上述数据类型中 用字节 B 型 字 W 型 双字 D 型分别表示8位 16位 32位数据的数据长度 S7 200编程时应注意操作数的数据类型和指令标识符相匹配 如整数乘法指令的操作数是字型数据 数据传送指令的操作数可以是字节或字或双字型数据 三 存储器区域 PLC的存储器分为程序区 系统区 数据区 1 程序区用于存放用户程序 存储器为EEPROM 2 系统区用于存放有关PLC配置结构的参数 如PLC主机及扩展模块的I O配置和编址 配置PLC站地址 设置保护口令 停电记忆保持区 软件滤波功能等 存储器为EEPROM 3 数据区是S7 200CPU提供的存储器的特定区域 它包括输入映象寄存器 I 输出映像寄存器 Q 变量存储器 V 内部标志位存储器 M 顺序控制继电器存储器 S 特殊标志位存储器 SM 局部存储器 L 定时器存储器 T 计数器存储器 C 模拟量输入映像寄存器 AI 模拟量输出映像寄存器 AQ 累加器 AC 高速计数器 HC 存储器为EEPROM和RAM 1 数据区存储器的地址表示格式 1 位地址格式数据区存储器区域的某一位的地址格式为 Ax y必须指定存储器区域标识符A 字节地址x及位号y 存储器是由许多存储单元组成 每个存储单元都有惟一的地址 可以依据存储器地址来存取数据 数据区存储器地址的表示格式有位 字节 字 双字地址格式 位寻址格式 例 I4 5 I是变量存储器的区域标识符 输入映像寄存器 4是字节地址 5是位号 在字节地址4与位号5之间用点号 隔开 2 字节 字 双字地址格式数据区存储器区域的字节 字 双字地址格式为 ATx 必须指定区域标识符A 数据长度T以及该字节 字或双字的起始字节地址x 图中 用VB100 VW100 VD100分别表示字节 字 双字的地址 VW100由VB100 VB101两个字节组成 VD100由VB100 VB103四个组成 V是存储器的变量存储器区 3 其他地址格式数据区存储器区域中 还包括定时器存储器 T 计数器存储器 C 累加器 AC 高速计数器 HC 等 它们是模拟相关的电器元件的 它们的地址格式为 Ay 由区域标识符A和元件号y组成 例 T24表示某定时器的地址 T是定时器的区域标识符 24是定时器号 同时T24又可表示此定时器的当前值 1 输入 输出映像寄存器 I Q 输入映像寄存器 I PLC的每一个输入端子与输入映像寄存器 I 的相应位相对应 2 数据区存储器区域 输入点的状态 在每次扫描周期开始 或结束 时进行采样 并将采样值存于输入映像寄存器 作为程序处理时输入点状态的依据 输入映像寄存器的状态只能由外部输入信号驱动 而不能在内部由程序指令来改变 输入映像寄存器 I 的地址格式为 位地址 I 字节地址 位地址 如I0 1 字节 字 双字地址 I 数据长度 起始字节地址 如IB4 IW6 ID10 CPU226模块输入映像寄存器的有效地址范围为 I 0 0 15 7 IB 0 15 IW 0 14 ID 0 12 输出映像寄存器 Q 每一个输出模块的端子与输出映像寄存器的相应位相对应 CPU将输出判断结果存放在输出映像寄存器中 在扫描周期的结尾 CPU以批处理方式将输出映像寄存器的数值复制到相应的输出端子上 输出映像寄存器 Q 地址格式为 位地址 Q 字节地址 位地址 如Q1 1字节 字 双字地址 Q 数据长度 起始字节地址 如QB5 QW8 QD11 CPU226模块输出映像寄存器的有效地址范围为 Q 0 0 15 7 QB 0 15 QW 0 14 QD 0 12 在程序的执行过程中 对于输入或输出的存取通常是通过映像寄存器 而不是实际的输入 输出端子 系统在程序执行期间完全与外界隔开 提高了系统抗干扰能力 S7 200CPU执行有关输入输出程序时的操作过程如图所示 S7 200CPU输入 输出的操作 2 内部标志位存储器 M 内部标志位存储器 M 用来存放中间操作状态 或存储其他相关的数据 内部标志位存储器 M 以位为单位使用 也可以字节 字 双字为单位使用 内部标志位存储器 M 的地址格式为 位地址 M 字节地址 位地址 如M26 7 字节 字 双字地址 M 数据长度 起始字节地址 如MB11 MW23 MD26 CPU226模块内部标志位存储器的有效地址范围为 M 0 0 31 7 MB 0 31 MW 0 30 MD 0 28 3 变量存储器 V 变量存储器 V 存放全局变量 存放程序执行过程中控制逻辑操作的中间结果或其他相关的数据 变量存储器是全局有效 全局有效是指同一个存储器可以在任一程序分区 主程序 子程序 中断程序 被访问 V存储器的地址格式为 位地址 V 字节地址 位地址 如V10 2 字节 字 双字地址 V 数据长度 起始字节地址 如VB20 VW100 VD320 CPU226模块变量存储器的有效地址范围为 V 0 0 5119 7 VB 0 5119 VW 0 5118 VD 0 5116 4 局部存储器 L 局部存储器用来存放局部变量 局部存储器是局部有效的 局部有效 是指某一局部存储器只能在某一程序分区 主程序或子程序或中断程序 中使用 S7 200PLC提供64个字节局部存储器 局部存储器可用作暂时存储器或为子程序传递参数 局部存储器 L 的地址格式为 位地址 L 字节地址 位地址 如L0 0 字节 字 双字地址 L 数据长度 起始字节地址 如LB33 LW44 LD55 CPU226模块局部存储器的有效地址范围为 L 0 0 63 7 LB 0 63 LW 0 62 LD 0 60 5 顺序控制继电器存储器 S 顺序控制继电器 S 又称状态组件 与顺序控制继电器指令配合使用 用于顺序控制 或步进控制 顺序控制继电器存储器 S 的地址格式为 位地址 S 字节地址 位地址 如S3 1 字节 字 双字地址 S 数据长度 起始字节地址 如SB4 SW10 SD21 CPU226模块顺序控制继电器存储器的有效地址范围为 S 0 0 31 7 SB 0 31 SW 0 30 SD 0 28 6 特殊标志位存储器 SM 特殊标志位 SM 即特殊内部线圈 它是用户程序与系统程序之间的界面 用于CPU与用户之间交换信息 特殊标志位区域分为只读区域 SM0 0 SM29 7 头30个字节为只读区 和可读写区域 在只读区特殊标志位 用户只能利用其触点 特殊标志位存储器 SM 的地址表示格式为 位地址 SM 字节地址 位地址 如SM0 1 字节 字 双字地址 SM 数据长度 起始字节地址 如SMB86 SMW100 SMD12 CPU226模块特殊标志位存储器的有效地址范围为 SM 0 0 549 7 SMB 0 549 SMW 0 548 SMD 0 546 7 定时器存储器 T 定时器是模拟继电器控制系统中的时间继电器 S7 200PLC定时器的时基有三种 1ms 10ms 100ms 定时器存储器地址表示格式为 T 定时器号 如T24 S7 200PLC定时器存储器的有效地址范围为 T 0 255 8 计数器存储器 C 计数器是累计其计数输入端脉冲电平由低到高的次数 有三种类型 增计数 减计数 增减计数 计数器存储器地址表示格式为 C 计数器号 如C3 S7 200PLC计数器存储器的有效地址范围为 C 0 255 9 模拟量输入映像寄存器 AI 模拟量输入模块将外部输入的模拟信号的模拟量转换成1个字长的数字量 存放在模拟量输入映像寄存器 AI 中 模拟量输入 AI 的值为只读值 模拟量输入映像寄存器 AI 的地址格式为 AIW 起始字节地址 如AIW4 模拟量输入映像寄存器 AI 的地址必须用偶数字节地址 如AIW0 AIW2 AIW4 来表示 CPU226模块模拟量输入映像寄存器 AI 的有效地址的范围为 AIW 0 62 10 模拟量输出映像寄存器 AQ CPU运算的相关结果存放在模拟量输出映像寄存器 AQ 中 供D A转换器将1个字长的数字量转换为模拟量 模拟量输出映像寄存器 AQ 中的数字量为只写值 模拟量输出映像寄存器 AQ 的地址格式为 AQW 起始字节地址 如AQW10 模拟量输出映像寄存器 AQ 的地址必须用偶数字节地址 如AQW0 AQW2 AQW4 来表示 CPU226模块模拟量输出映像寄存器 AQ 的有效地址的范围为 AQW 0 62 11 累加器 AC 累加器 是用来暂时存储计算中间值的存储器 也可向子程序传递参数或返回参数 S7 200CPU提供了4个32位累加器 AC0 AC1 AC2 AC3 累加器的地址格式为 AC 累加器号 如AC0 CPU226模块累加器的有效地址范围为 AC 0 3 累加器是可读写单元 可以按字节 字 双字存取累加器中的数值 12 高速计数器 HC 高速计数器用来累计高速脉冲信号 当高速脉冲信号的频率比CPU扫描速率更快时 必须要用高速计数器计数 高速计数器的当前值寄存器为32位 bit 读取高速计数器当前值应以双字 32位 来寻址 高速计数器的当前值为只读值 高速计数器地址格式为 HC 高速计数器号 如HC1 CPU226模块高速计数器的有效地址范围为 HC 0 5 四 寻址方式 1 立即寻址 寻址方式 指令中如何提供操作数或操作数地址 称为寻址方式 S7 200PLC的寻址方式有 立即寻址 直接寻址 间接寻址 立即寻址方式 指令直接给出操作数 操作数紧跟着操作码 CPU以二进制方式存储所有常数 指令中可用十进制 十六进制 ASCII码或浮点数形式来表示 表示格式举例如下 十进制常数 30112十六进制常数 16 42FASCII常数 INPUT 实数或浮点常数 1 1E 10二进制常数 2 01011110 为常数的进制格式说明符 无格式说明符则默认十进制 2 直接寻址 直接寻址方式 指令直接使用存储器或寄存器的元件名称和地址编号 根据这个地址就可以立即找到该数据 即指令中给出了数据的地址 指令中 数据类型应与指令标识符相匹配 不同数据长度的寻址指令举例如下 位寻址 ANDQ5 5字节寻址 ORBVB33 LB21字寻址 MOVWAC0 AQW2双字寻址 MOVDAC1 VD200 3 间接寻址 间接寻址方式 指令给出了存放操作数地址的存储单元的地址 也称地址指针 指令给出存放数的地址的地址 可作为地址指针的存储器有 V L AC 1 3 可间接寻址的存储器区域有 I Q V M S T 仅当前值 C 仅当前值 存取连续地址的存储单元数据时 1 建立指针间接寻址前 应先建立指针 指针为双字长 存放所要访问的存储单元 最大为双字型32位 的物理地址 只能使用变量存储器 V 局部存储器 L 或累加器 AC1 AC2 AC3 作为指针 AC0不能用作间接寻址的指针 例如 MOVD VB200 AC1说明 VB200只是一个直接地址编码 并不是它的物理地址 地址符号 与VB200组合表示所对应单元的32位物理地址 指令中的第二个地址数据长度必须是双字长 如 AC LD和VD 这里地址 VB200 要用32位表示 因而必须使用双字传送指令 MOVD 指针 地址符号 2 间接存取下面两条指令是建立指针和间接存取的应用方法 MOVD VB200 AC1MOVW AC1 AC0 号表示该操作数 AC1 为指针 执行指令MOVW AC1 AC0 把指针中的内容值 VB200 作为地址 由于指令MOVW的标识符是 W 因而指令操作数的数据长度应是字型 把地址VB200 VB201处2个字节的内容 1234 传送到AC0 间接寻址 把VB200的地址送入AC1建立指针 把指针处的值送到AC0 MOVD VB200 AC1MOVW AC1 AC0 号表示该操作数 AC1 为指针 执行指令MOVW AC1 AC0 把指针中的内容值 VB200 作为地址 由于指令MOVW的标识符是 W 因而指令操作数的数据长度应是字型 把地址VB200 VB201处2个字节的内容 1234 传送到AC0 3 修改指针存取连续地址的存储单元中数据时 通过修改指针可以非常方便地存取数据 INCDAC1INCDAC1MOVW AC1 AC0用两次自增指令INCDAC1 将AC1指针中的值 VB200 修改为VB202后 指针即指向新地址VB202 执行指令MOVW AC1 AC0 这样就可将VB202 VB203二个字节的数据 5678 传送到AC0 修改指针值时 应根据存取的数据长度来进行调整 若对字节进行存取 指针值加1 或减1 若对字进行存取 或对定时器 计数器的当前值进行存取 指针值加2 或减2 若对双字进行存取 则指针值加4 或减4 修改指针 把指针增加两次 指向下一个字 把AC1 VW202 所指向的字数值送到AC0 存取连续地址的存储单元数据时 建立指针 间接存取 修改指针 间接存取 号表示该操作数 AC1 为指针 地址符号 与VB200组合表示所对应单元的32位物理地址 五 用户程序结构 用户程序可分为三个程序分区 主程序 子程序 可选 和中断程序 可选 主程序 OB1 是用户程序的主体 CPU在每个扫描周期都要执行一次主程序指令 子程序 是程序的可选部分 只有当主程序调用时 才能够执行 合理使用子程序 可以优化程序结构 减少扫描时间 中断程序 是程序的可选部分 只有当中断事件发生时 才能够执行 中断程序可在扫描周期的任意点执行 六 编程的一般规则 1 网络在梯形图 LAD 中 程序被分成称为网络的一些程序段 每个梯形图网络是由一个或多个梯级组成 功能块图 FBD 中 使用网络概念给程序分段 语句表 STL 程序中 使用 网络 这个关键词对程序分段 对梯形图 功能块图 语句表程序分段后 就可通过编程软件实现它们之间的相互转换 2 梯形图 LAD 功能块图 FBD 梯形图中 左 右垂直线称为左 右母线 通常将右母线省略 在左 右母线之间是由触点 线圈或功能框组合的有序排列 梯形图的输入总是在图形的左边 输出总是在图形的右边 因而触点与左母线相连 线圈或功能框终止右母线 从而构成一个梯级 在一个梯级中 不允许 短路 开路 也不允许 能流 反向流动 功能块图中 输入总是在框图的左边 输出总是在框图的右边 3 允许输入端 允许输出端在梯形图 LAD 功能块图 FBD 中 功能框的EN端是允许输入端 功能框的允许输入端必须存在 能流 即与之相连的逻辑运算结果为1 即EN 1 才能执行该功能框的功能 在语句表 STL 程序中 没有EN允许输入端 但是允许执行STL指令的条件是栈顶的值必须是 1 在梯形图 LAD 功能块图 FBD 中 功能框的ENO端是允许输出端 允许功能框的布尔量输出 用于指令的级联 如果执行过程中存在错误 那么 能流 就在出现错误的功能框终止 即ENO 0 4 条件 无条件输入条件输入 在梯形图 LAD 功能块图 FBD 中 与 能流 有关的功能框或线圈不直接与左母线连接 无条件输入 在梯形图 LAD 功能块图 FBD 中 与 能流 无关的功能框或线圈直接与左母线连接 例如LBL NEXT SCR SCRE等 5 无允许输出端的指令在梯形图 LAD 功能块图 FBD 中 无允许输出端 ENO 的指令方框 不能用于级联 如CALLSBRN N1 子程序调用指令和LBL SCR等 二 S7 200PLC的基本指令及编程方法 S7 200PLC的基本指令多用于开关量逻辑控制 一 基本逻辑指令 二 立即操作指令 三 复杂逻辑指令 四 取非触点指令和空操作指令 五 定时器和计数器指令 六 顺序控制继电器指令 七 移位寄存器指令 八 比较操作指令 S7 200PLC基本指令 一 基本逻辑指令 5 2 1基本逻辑指令 逻辑堆栈结构 S7 200由九个堆栈存储器位组成的串联堆栈 栈顶是布尔型数据进出堆栈的必由之路 进栈时 数据由栈顶压入 堆栈中原来所存的数据被串行下移一格 如果原来STACK 堆叠 8中存有数据 则这数据被推出堆栈而自动丢失 出栈时 数据从栈顶被取出 所有数据串行上移一格 STACK8中随机地装入一个数值 逻辑堆栈结构 栈顶 基本逻辑指令 栈顶STACK0在此逻辑堆栈的位运算中兼有累加器的作用 存放第一操作数 对于简单逻辑指令 通常是进栈操作和一些最简单的位运算 这些运算是栈顶与第二个堆栈的内容进行与 或 非等逻辑运算 对于复杂指令 可以是堆栈中的其他数据位直接进行运算 结果经栈顶弹出 基本逻辑指令 在语句表语言中是指对位存储单元的简单逻辑运算 在梯形图中是指对触点的简单连接和对标准线圈的输出 基本逻辑指令主要包括 1 标准触点指令2 正负跳变指令3 置位和复位指令等主要是与位相关的输入输出及触点的简单连接 1 标准触点指令标准触点指令有LD LDN A AN O ON NOT 指令 这些指令对存储器位在逻辑堆栈中进行操作 标准触点指令中如果有操作数 则为BOOL型 操作数的编址范围可以是 I Q M SM T C S V L 1 装入常开指令 LD 2 装入常闭指令 LDN 在梯形图中 每个从左母线开始的单一逻辑行 每个程序块 逻辑梯级 的开始 指令盒的输入端都必须使用LD或LDN这两条指令 以常开触点开始时用LD指令 以常闭触点开始时则用LDN指令 本指令对各类内部编程元件的触点都适用 指令格式 LDbit 例 LDI0 0指令格式 LDNbit 例 LDNI0 1 3 与常开指令 A 即串联一个常开触点 由于堆栈存储器数量的限制 梯形图中 一次最多可以有七个常开触点串联 指令格式 Abit 例 AI0 1 4 与常闭指令 AN 即在梯形图中串联一个常闭触点 在一个逻辑行中 最多可以连用六次 指令格式 ANbit 例 ANM2 4 5 或常开指令 O 即并联一个常开触点 在梯形图中 一次最多可以有七个触点相互并联 指令格式 Obit 例 OM2 6 6 或常闭指令 ON 即并联一个常闭触点 在梯形图中 一次最多可以连用六次 指令格式 ONbit 例 ONM2 6 7 输出指令 将逻辑运算结果输出到指定存储器位或输出继电器对应的映像寄存器位 以驱动本位线圈 指令格式 bit 例 Q2 6 5 2 1基本逻辑指令 指令LDI0 1 假设I0 1 1 执行情况如表5 7所示 如果是LDN指令 则将操作数取反后再装入栈顶 其他操作相同 表5 7LDI0 1的执行 原值S0串行下移一个单元 其余以此类推 原S8自动丢失 5 2 1基本逻辑指令 指令AI0 2 假设I0 2 0 执行情况如表5 8所示 如果是AN指令 则将操作数取反后再和栈顶值相与 结果放回栈顶 即 1 1 1 S0 表5 8指令AI0 2的执行 除S0值外 其他各值不变 基本逻辑指令 程序实例 仔细比较不同编程工具的区别与联系 LDI0 0 装入常开触点OI0 1 或常开触点AI0 2 与常开触点 Q0 0 输出触点 如果本梯级中将I0 1的触点改 为Q0 0的常开触点 则成为电 机起动停止控制环节的梯形图LDNI0 0 装入常闭触点ONI0 1 或常闭触点ANI0 2 与常闭触点 Q0 1 输出触点LDI0 0 OI0 1 AI0 2 NOT 取非 即输出反相 Q0 3 标准触点LAD和STL例 基本逻辑指令 LDI0 0 OI0 1 AI0 2 Q0 0 LDNI0 0 ONI0 1 ANI0 2 Q0 1 LDI0 0 OI0 1 AI0 2 NOT Q0 3 标准触点FBD例 时序图 2 正负跳变指令正负跳变指令在梯形图中以触点形式使用 用于检测脉冲的正跳变 上升沿 或负跳变 下降沿 利用跳变让能流接通一个扫描周期 产生一个扫描周期长度的微分脉冲 常用此脉冲触发内部继电器线圈 1 正跳变指令 EU 正跳变触点检测到脉冲的每一次正跳变后 产生一个微分脉冲 指令格式 EU 无操作数 2 负跳变指令 ED 负跳变触点检测到脉冲的每一次负跳变后 产生一个微分脉冲 指令格式 ED 无操作数 正 负跳变触点指令编程举例如所示 正 负跳变触点指令编程 一个扫描周期长度 3 置位和复位指令置位即置1 复位即置0 置位和复位指令可以将位存储区的某一位开始的一个或多个 最多可达255个 同类存储器位置1或置0 这两条指令在使用时需指明三点 操作性质 开始位和位的数量 1 置位指令 S 将位存储区的指定位 位bit 开始的N个同类存储器位置位 指令格式 Sbit N 例 SQ0 1 1 2 复位指令 R 将位存储区的指定位 位bit 开始的N个同类存储器位复位 指令格式 Rbit N 例 RQ0 1 1 置位和复位指令应用编程序举例如图所示 置位复位指令 二 立即操作指令 立即指令 对输入和输出点进行快速和直接存取 用立即指令读取输入点的状态时 相应的输入映像寄存器中的值并未发生更新 用立即指令访问输出点时 访问的同时 相应的输出寄存器的内容也被刷新 只有输入继电器I和输出继电器Q可以使用立即指令 1 立即触点指令在每个标准触点指令的后面加 I 指令执行时 立即读取物理输入点的值 但是不刷新相应映像寄存器的值 这类指令包括 LDI LDNI AI ANI OI和ONI 下面以LDI指令为例 指令格式 LDIbit bit只能是I类型 例 LDII0 2 2 立即输出指令 I 立即输出指令 用立即指令访问输出点时 把栈顶值立即复制到指令所指定的物理输出点 同时 相应的输出映像寄存器的内容也被刷新 指令格式 Ibit bit只能是Q类型 例 IQ0 23 立即置位指令SI 立即置位指令 用立即置位指令访问输出点时 从指令所指出的位 bit 开始的N个 最多为128个 物理输出点被立即置位 同时 相应的输出映像寄存器的内容也被刷新 指令格式 SIbit N 例 SIQ0 0 2 4 立即复位指令 RI 立即复位指令 用立即复位指令访问输出点时 从指令所指出的位 bit 开始的N个 最多为128个 物理输出点被立即复位 同时 相应的输出映像寄存器的内容也被刷新 指令格式 RIbit N 例 RIQ0 0 1 立即操作指令 应用举例 LDI0 0 装入常开触点 Q0 0 输出触点 非立即 IQ0 1 立即输出触点SIQ0 2 1 从Q0 2开始的1个触点被立即置1LDII0 0 立即输入触点指令 Q0 3 输出触点 非立即 立即指令程序 立即指令时序图 在本周期输出刷新时将本周期采集阶段的I0 0送给Q0 0 本周期立即指令执行时将本周期采集时I0 0送给Q0 1 若本周期采集阶段I0 0为1 立即指令执行时将Q0 2置1 本周期刷新输出时将I0 0端子信息送给Q0 3 三 复杂逻辑指令 基本逻辑指令 涉及可编程元件的触点和线圈的简单连接 不能表达在梯形图中触点的复杂连接结构 复杂逻辑指令 主要用来描述对触点进行的复杂连接 如梯形图的触点结构有重复的串联 并联或在一个节点上存在多个分支 1 栈装载与指令ALD 块与指令 ALD 栈装载与指令 与块 用于将并联电路块进行串联连接 LDI1 0 装入常开触点OI1 1 或常开触点LDI1 2 装入常开触点OI1 3 或常开触点ALD 块与操作 Q0 0 输出线圈 OLD 栈装载或指令 或块 用于将串联电路块进行并联连接 2 栈装载或指令OLD 块或指令 LDI0 0 装入常开触点AI0 1 与常开触点LDI0 2 装入常开触点AI0 3 与常开触点OLD 块或操作LDNI0 4 装入常闭触点AI0 5 与常开触点OLD 块或操作 Q0 0 输出线圈 LDI0 0 装入常开触点OI2 2 或常开触点LDI0 1 被串的块开始LDI2 0 被并路开始AI2 1 与常开触点OLD 栈装载或 并路结束ALD 栈装载与 串路结束 Q5 0 输出触点 复杂逻辑指令的应用 栈装载与指令和栈装载或指令的操作过程如图5 16所示 图中 x 表示不确定值 图5 16栈装载与指令和栈装载或指令的操作过程 3 逻辑推入栈指令LPSLPS 逻辑推入栈指令 用于复制栈顶的值并将这个值推入栈顶 原堆栈中各级栈值依次下压一级 4 逻辑栈弹出指令LPPLPP 逻辑栈弹出指令 堆栈作弹出栈操作 将栈顶值弹出 原堆栈中各级栈值依次上弹一级 堆栈第二级的值成为新的栈顶值 3 逻辑推入栈指令LPSLPS 在梯形图中的分支结构中 用于生成一条新的母线 左侧为主控逻辑块时 第一个完整的从逻辑行从此处开始 4 逻辑栈弹出指令LPPLPP 在梯形图中的分支结构中 用于将LPS指令生成的新母线进行恢复 LPS LPP配对使用 5 逻辑读栈指令LRDLRD 逻辑读栈指令 把堆栈中第二级的值复制到栈顶 堆栈没有推入栈或弹出栈操作 但原栈顶值被新的复制值取代 5 逻辑读栈指令LRD在梯形图中的分支结构中 当左侧为主控逻辑块时 开始第二个和后边更多的从逻辑块 应注意 LPS后第一个和最后一个从逻辑块不用本指令 LDI0 0 装入常开触点LPS 生成新母线AI0 5 与常开触点 Q7 0 输出触点LRD 开始第二个从逻辑块LDI2 1 装入常开触点OI1 3 或常开触点ALD 栈装载与 Q6 0 输出触点LPP 母线复原LDI3 1 装入常开出触点OI2 0 或常开触点ALD 栈装载与 Q1 3 输出触点 四 取非触点指令和空操作指令 1 取非触点指令NOT NOT 取非触点指令 用来改变能流的状态 能流到达取非触点时 能流就停止 能流未到达取非触点时 能流就通过 左侧为1时 右侧为0 左侧为0时 右侧为1 取非触点指令编程 2 空操作指令 NOPN 空操做指令 使能输入有效时 执行空操作指令 稍微延长扫描期长度 空操做指令不影响用户程序的执行 操作数N是标号 空操作执行次数 是一个0 255的常数 LDI0 0 使能输入NOP30 空操作指令 标号为30 空操作指令编程 N 五 定时器和计数器指令 A 定时器指令 1 S7 200定时器简介数量 S7 200定时器有256个 类型 有三种类型通电延时 TON 有记忆通电延时 TONR 和断电延时 TOF 定时分辨率 有3个等级 1ms 10ms和100ms 定时计数值 0 32767 16位整数 分辨率等级和定时器号关系如表所示 表定时器号和分辨率 定时时间的计算 T PT S T为实际定时时间 PT为预设值 S为分辨率等级 例如 TON指令用定时器T33 预设值为125 则实际定时时间T 125 10 1250ms 定时器指令操作数 有3个 编号 预设值和使能输入 1 编号 Txxx 最大255 如 T4 T4含义 定时器的编号 定时器位 当定时器的当前值达到预设值PT时 该位被置为 1 对应触点动作 定时器当前值 存储定时器当前所累计的时间 它用16位有符号整数来表示 故最大计数值为32767 2 预设值PT 定时个数数据类型为INT型 3 使能输入IN 只对LAD和FBD 数据类型为BOOL型 可以用复位指令来对3种定时器复位 复位指令的执行结果是 使定时器位变为OFF 定时器当前值变为0 2 定时器指令 1 通电延时定时器指令 TON 用于单一时间间隔的定时 输入端 IN 接通时 开始定时 当前值大于等于设定值 PT 1 32767 时 定时器位变为ON 对应的常开触点闭合 长闭触点断开 达到设定值后 当前值仍继续计数 直到最大值32767为止 输入电路断开时 定时器复位 当前值被清零 填 计定时器号 如 T35 填 预设值 如 100 指令格式 TONTxxx PT例 TONT120 8 当I0 0接通时即使能端 IN 输入有效时 驱动T37开始计时 当前值从0开始递增 计时到设定值PT时 T37状态位置1 其常开触点T37接通 驱动Q0 0输出 其后当前值仍增加 但不影响状态位 当前值的最大值为32767 当I0 0分断时 使能端无效时 T37复位 当前值清0 状态位也清0 即回复原始状态 若I0 0接通时间未到设定值就断开 T37则立即复位 Q0 0不会有输出 2 有记忆接通延时定时器指令 TONR 当输入端 IN 接通时 定时器开始计时 当前值从0开始加1计数 当前值大于等于设定值 PT 时 定时器位置1 当输入IN无效时 当前值保持 IN再次有效时 当前值在原保持值基础上继续计数 填 计定时器号 如 T31 填 预设值 如 100 TONR定时器只能用复位指令进行复位操作 使当前值清零 指令格式 TONRTxxx PT 例 TONRT20 63 当输入IN为1时 定时器计时 当IN为0时 其当前值保持并不复位 下次IN再为1时 T3当前值从原保持值开始往上加 将当前值与设定值PT比较 当前值大于等于设定值时 T3状态位置1 驱动Q0 0有输出 以后即使IN再为0 也不会使T3复位 要使T3复位 必须使用复位指令 3 断开延时定时器指令 TOF 输入端 IN 接通时 定时器位为ON 当前值为0 当输入端由接通到断开时 定时器的当前值从0开始加1计数 当前值等于设定值 PT 时 输出位变为OFF 当前值保持不变 停止计时 填 计定时器号 如 T35 填 预设值 如 100 指令格式 TOFTxxx PT 例TOFT35 6 使能端 IN 输入有效时 定时器T37输出状态位立即置1 驱动Q0 0有输出 并且T37当前值复位为0 使能端 IN 断开时 定时器开始计时 当前值从0递增 当前值达到预置值时 定时器状态位复位为0 并停止计时 当前值保持 如果输入断开的时间 小于预定时间 定时器仍保持接通 IN再接通时 定时器当前值仍设为0 4 应用定时器指令应注意的几个问题 不能把一个定时器号同时用作断开延时定时器 TOF 和接通延时定时器 TON 使用复位 R 指令对定时器复位后 定时器位为 0 定时器当前值为 0 有记忆接通延时定时器 TONR 只能通过复位指令进行复位 对于断开延时定时器 TOF 需要输入端有一个负跳变 由on到off 的输入信号启动计时 不同精度的定时器 它们当前值的刷新周期是不同的 具体情况如下 1 1ms分辨率定时器 1ms分辨率定时器启动后 定时器对1ms的时间间隔进行计时 定时器当前值每隔1ms刷新一次 在一个扫描周期中要刷新多次 而不和扫描周期同步 2 10ms分辨率定时器 10ms分辨率定时器启动后 定时器对10ms的时间间隔进行计时 程序执行时 在每次扫描周期开始对10ms定时器刷新 在一个扫描周期内定时器当前值保持不变 3 100ms分辨率定时器 100ms分辨率定时器启动后 定时器对100ms的时间间隔进行计时 只有在定时器指令执行时 100ms定时器的当前值才被刷新 举例说明 在图a中 T32定时器1ms更新一次 当定时器当前值100在图示A处刷新 Q0 0可以接通一个扫描周期 若在其他位置刷新 Q0 0则用永远不会接通 而在A处刷新的概率是很小的 若改为图5 23b 就可保证当定时器当前值达到设定值时 Q0 0会接通一个扫描周期 图5 23a同样不适合10ms分辨率定时器 1ms定时器编程 100ms分辨率定时器 1 在子程序和中断程序中不易使用100ms定时器 子程序和中断程序不是每个扫描周期都执行的 那么在子程序和中断程序中的100ms定时器的当前值就不能及时刷新 造成时基脉冲丢失 致使计时失准 2 在主程序中 不能重复使用同一个100ms的定时器号 否则该定时器指令在一个扫描周期中多次被执行 定时器的当前值在一个扫描周期中多次被刷新 同样造成计时失准 因而 100ms定时器只能用于每个扫描周期内同一定时器指令执行一次 且仅执行一次的场合 a b 100ms定时器的应用 与图a相比较 该定时器确保在此处刷新当前值 100ms定时器的编程例子 B 计数器指令 1 计数器简介数量 S7 200计数器有256 0 255 个 类型 增计数CTU 增减计数CTUD和减计数CTD 指令操作数 有4方面 编号 预设值 脉冲输入和复位输入 1 编号 Cxxx 0 255 如 C6 C6含义 计数器编号 计数器位 当计数器的当前值达到预设值PV时 该位被置为 1 计数器当前值 存储计数器当前所累计的脉冲个数 它用16位符号整数 INT 来表示 故最大计数值为32767 2 预设值PV 数据类型为INT型 3 脉冲输入 BOOL型 4 复位输入 与脉冲输入同类型 2 计数器指令 1 增计数器指令 CTU 首次扫描 定时器位OFF 当前值为0 在增计数器的计数输入端 CU 脉冲输入的每个上升沿 计数器计数1次 当前值增加1个单位 当前值达到预设值时 计数器位ON 当前值继续计数到32767停止计数 复位输入有效或执行复位指令 计数器自动复位 即计数器位OFF 当前值为0 指令格式 CTUCxxx PV 例 CTUC20 3 填 计数器器号 如 C30 填 预设值 如 3 脉冲输入 复位输入 LDI0 0 计数脉冲信号输入端LDI0 1 复位信号输入端CTUC20 3 计数设定值为3个脉冲LDC20 装入计数器触点 Q0 0 输出触点 增计数程序及时序 复位与计数脉冲同时有效时 优先执行复位 2 增减计数器指令 CTUD 该指令有两个脉冲输入端 CU输入端用于递增计数 CD输入端用于递减计数 首次扫描 定时器位OFF 当前值为0 CU输入的每个上升沿 计数器当前值增加1个单位 CD输入的每个上升沿 都使计数器当前值减小1个单位 当前值达到 或大于 预设值时 计数器位ON 增减计数器计数到32767 最大值 后 下一个CU输入的上升沿将使当前值跳变为最小值 32768 反之 当前值达到最小值 32768 时 下一个CD输入的上升沿将使当前值跳变为最大值 32767 复位输入有效或执行复位指令 计数器自动复位 即计数器位OFF 当前值为0 指令格式 CTUDx PV 例 CTUDC30 5 LDI0 0 增计数输入端LDI0 1 减计数输入端LDI0 2 复位端CTUDC30 5 增减计数 设定脉冲数为5LDC30 装入计数器触点 Q0 0 输出触点 增减计数程序及时序 当前值大于设定值后 仍然随计数脉冲而变化 而计数器位保持 3 减计数器指令 CTD 首次扫描 定时器位OFF 当前值为预设值PV 计数器检测到CD输入的每个上升沿时 计数器当前值减小1个单位 当前值减到0时 计数器位ON 复位输入有效或执行复位指令 计数器自动复位 即计数器位OFF 当前值复位为预设值 而不是0 指令格式 CTDCxxx PV 例 CTDC40 4 LDI0 0 减计数脉冲输入端LDI0 1 复位输入端CTDC40 4 减计数器 设定计数脉冲 数为4LDC40 装入计数器触点 Q0 0 输出触点 当前值减到0后 计数脉冲对当前值和位都不起作用 0 4 4 2 2 3 3 4 4 1 4 应用举例 用计数器和定时器配合增加延时时间 如图所示 通过分析可知以下程序中实际延时时间为100ms 30000 10 30000s 计数器应用例 LDI0 0 启动通电延时ANM0 0 重新启动延时TONT50 30000 延时时间设定为3000sLDT50 延时时间到 M0 0 关定时器 产生一脉冲LDM0 0 每隔3000s输入一脉冲LDNI0 0 复位输入CTUC20 10 增计数 累计脉冲总数 5 应用计数器指令应注意的问题 可以用复位指令来对3种计数器复位 复位指令的执行结果是 使计数器位变为OFF 计数器当前值变为0 CTD变为预设值PV 在一个程序中 同一个计数器编号只能使用一次 脉冲输入和复位输入同时有效时 优先执行复位操作 六 顺序控制继电器指令 S7 200CPU含有256个顺序控制继电器 SCR 用于顺序控制 S7 200系统提供3个顺序控制指令 顺序控制开始指令 LSCR 顺序控制转移指令 SCRT 顺序控制结束指令 SCRE 1 顺序继电器指令 1 段开始指令 LSCR定义一个顺序控制继电器段的开始 指令格式 LSCRSx y操作数为顺序控制继电器位Sx y Sx y作为本段的段标志位 当Sx y位为1时 允许该SCR段工作 2 段结束指令 SCRE指令格式 SCRESx y一个SCR段必须用该指令来结束 3 段转移指令 SCRT该指令用来实现本段与另一段之间的切换 指令格式 SCRTSx y操作数为顺序控制继电器位Sx y Sx y是下一个SCR段的标志位 当使能输入有效时 一方面对Sx y置位 以便让下一个SCR段开始工作 另一方面同时对本SCR段的标志位复位 以便本段停止工作 根据舞台灯光效果的要求 控制红 绿 黄三色灯 要求 红灯先亮 2s后绿灯亮 再过3s后黄灯亮 待红 绿 黄灯全亮3min后 全部熄灭 程序如图所示 说明 每一个SCR程序段中均包含三个要素 1 输出对象 在这一步序中应完成的动作 2 转移条件 满足转移条件后 实现SCR段的转移 3 转移目标 转移到下一个步序 注意 SM为特殊标志位寄存器 其中SM0 0为RUN监控 PLC在RUN方式时 SM0 0值总为1 2 程序实例 LDI0 1ANQ0 0ANQ0 1ANQ0 2 在初始状态下起动 置SS0 1 1 S0 1 1LSCRS0 1 S0 1 1 激活第一SCR 程序段 进入第一步序LDSM0 0SQ0 0 1 Q0 0 1红灯亮 并保持TONT37 20 启动2s定时器LDT37 2s后程序转移到第二SCR段SCRTS0 2 S0 2 1 S0 1 0 SCRE 第一SCR段结束LSCRS0 2 S0 2 1 激活第二SCR 程序段 进入第二步序LDSM0 0SQ1 1 Q0 1 1绿灯亮 并保持TONT38 30 启动3s定时器 LDT38 3s后程序转移到第三SCR段 SCRTS0 3 S0 3 1 S0 2 0 SCRE 第二SCR段结束LSCRS0 3 S0 3 1 激活第三SCR程序段 进入第三步序LDSM0 0SQ0 2 1 Q0 2 1黄灯亮 并保持TONT39 1800 启动3min定时器LDT39 3min后程序转移到第四SCR段SCRTS0 4 S0 4 1 S0 3 0 SCRE 第三SCR段结束LSCRS0 4 S0 4 1 激活第四SCR程序段 进入第四步序LDSM0 0RS0 1 4RQ0 0 3 红 绿 黄灯全灭SCRE 第四SCR段结束 SCR指令编程 3 使用顺序继电器指令的限制 1 只能使用顺序控制继电器位Sx y作为段标志位 一个顺序控制继电器位Sx y在程序中只能使用一次 2 在一个SCR段中不能出现跳入 跳出或段内跳转等程序结构 即在段中不能使用JMP和LBL指令 同样 在一个SCR段中不允许出现循环程序结构和条件结束 即禁止使用FOR NEXT和END指令 说明 采用顺序控制指令通过灵活编程可实现多种顺序控制程序结构 七 移位寄存器指令 移位指令都是对无符号数进行的处理 1 左移和右移2 循环左移和循环右移3 寄存器移位 1 左移和右移 左移和右移根据所移位的数的长度分为 字节型 字型 双字型移位特点 1 移位时 移出位进入SM1 1 另一端自动补0 SM1 1始终存放最后一次被移出的位 2 移位次数与移位数据的长度有关 移位次数大于移位数据的位数 则超出的次数无效 3 如果移位操作使数据变为0 则零存储器位 SM1 0 自动置位 4 移位指令影响的特殊存储器位 SM1 0 零 SM1 1 溢出 1 字节左移和字节右移指令 SLB SRB 使能输入有效时 把字节输入数据IN左移或右移N位后 再将结果输出到OUT所指的字节存储单元 在语句表中 IN与OUT使用同一个单元 最大实际可移位次数为8 指令格式 SLBOUT N 字节左移 SRBOUT N 字节右移 例 SLBMB0 2SRBLB0 3 以SLBMB0 2为例 指令执行情况如下表所示 左移指令SLB执行结果 2 字左移和字右移指令 SLW SRW 指令盒与字节移位比较 只有名称变为SHLW和SHRW 最大实际可移位次数为16 指令格式 SLWOUT N 字左移 SRWOUT N 字右移 例 SLWMW0 2SRWLW0 3 W W 以SRWLW0 3指令为例 指令执行情况如表所示 表右移指令SRW执行结果 指令格式 SLDOUT N 双字左移 SRDOUT N 双字右移 例 SLDMD0 2SRDLD0 3 3 双字左移和双字右移指令 SLD SRD 指令盒与字节移位比较 只有名称变为SHLDW和SHRDW 其他部分完全相同 最大实际可移位次数为32 DW DW 2 循环左移 循环右移 循环移位特点 1 移位数据存储单元的移出端与另一端相连 同时又与SM1 1 溢出 相连 所以最后被移出的位被移到另一端的同时 也被放到SM1 1位存储单元 2 移位次数与移位数据的长度有关 如果移位次数设定值大于移位数据的位数 则执行循环移位之前 系统先对设定值取以数据长度为底的模 用小于数据长度的结果作为实际循环移位的次数 如字左移时 若移位次数设定为36 则先对36取以16为底的模
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025杭州上城区国有资本运营集团有限公司招聘3人模拟试卷及完整答案详解一套
- 2025德州齐河县事业单位“人才回引计划”考前自测高频考点模拟试题附答案详解(完整版)
- 2025湖南岳阳市平江县第四人民医院公开招聘临聘人员5人考前自测高频考点模拟试题及1套完整答案详解
- 2025河南郑州惠济区迎宾路社区卫生服务中心招聘2人考前自测高频考点模拟试题完整答案详解
- 2025北京海淀区人大附中西山学校教师招聘考前自测高频考点模拟试题及答案详解(新)
- 2025吉林二道江区政府专职消防员招聘1人考前自测高频考点模拟试题及答案详解(名师系列)
- 2025年滁州南谯城市投资控股集团有限公司招聘10人考前自测高频考点模拟试题及完整答案详解
- 2025安徽工程大学部分专业技术岗位招聘2人模拟试卷完整参考答案详解
- 2025年河南省职工医院-国际口腔中心招聘18人模拟试卷附答案详解(突破训练)
- 2025汾西矿业井下操作技能人员招聘300人(山西)模拟试卷及答案详解1套
- 小儿过敏性紫癜护理常规
- 敬老院财务管理培训
- 胰源性糖尿病的护理
- 医学知识 鼻腔鼻窦内翻性RU头状瘤(SNIP)的影像诊断与鉴别诊断学习课件
- 《证券基础知识》课件
- 九年级数学第一次月考卷 北师大版
- DL∕T 2541-2022 架空输电线路货运索道
- (完整版)排球理论课教案
- 新闻文体的翻译课件
- 学业质量标准
- 判断中药质量变异现象及防治
评论
0/150
提交评论