当前位置: 首页 > news >正文

S7-200中的软件及编程

S7-200中的软件及编程 主要涵盖了S7-200 PLC的编程基础和软元件的使用,这是掌握PLC编程的关键步骤。下面我们逐一展开你提到的各个知识点:

2.1 软元件的使用方法

在S7-200 PLC中,“软元件”指的是PLC内部用于存储和处理数据的各种存储区域和功能单元。你可以把它们理解成计算机中的内存地址,但PLC的软元件类型更加多样,功能也更具体。

主要软元件类型:

  • 输入 (I - Input): 代表PLC的输入端子。外部传感器或按钮等设备的信号通过输入模块进入PLC,并被读取到对应的输入软元件中。例如:I0.0, I1.5。 使用方法是读取其状态(0或1)来判断输入信号的状态。 

  • 输出 (Q - Output): 代表PLC的输出端子。PLC通过控制输出软元件的状态(0或1)来驱动外部负载,如继电器、指示灯、电机等。例如:Q0.0, Q2.1。 使用方法是程序中给输出软元件赋值(置位或复位),从而控制外部设备。

  • 位存储器 (M - Memory): 也称为中间继电器,用于存储程序运行的中间结果或标志位。M区的数据在PLC断电时可能会丢失(取决于是否为掉电保持型),但通常用于程序内部的逻辑运算和状态记录。例如:M0.0, M5.7。 使用方法是在程序中像普通变量一样读写,用于辅助逻辑控制。

  • 定时器 (T - Timer): 用于实现时间延时功能。S7-200提供了多种类型的定时器,如TON (接通延时定时器), TOF (断开延时定时器), TONR (接通延时保持型定时器)。每个定时器都有一个定时值和一个当前值。

  • 计数器 (C - Counter): 用于进行计数功能。S7-200也提供了多种计数器,如CTU (加计数器), CTD (减计数器), CTUD (加/减计数器)。每个计数器都有一个设定值和一个当前值。 (此图片展示S7-200编程软件中计数器指令的符号,并标注计数器类型、设定值PV、当前值CV等参数)

  • 累加器 (AC - Accumulator): 用于进行数值运算和数据处理,类似于计算机的寄存器。S7-200通常有多个累加器 (如AC0, AC1, AC2, AC3)。可以使用指令将数据加载到累加器,进行运算,再将结果存回软元件或累加器。

  • 特殊存储器 (SM - Special Memory): 存储PLC的系统状态信息和控制参数。SM区包含各种标志位和控制位,例如扫描周期标志、时钟标志、错误代码等。通过读取和设置SM区的某些位,可以了解PLC的运行状态或配置PLC的功能。例如:SM0.0 (第一个扫描周期标志), SM0.1 (扫描时钟位)。

  • 顺序控制继电器 (S - Step): 用于步进顺序控制。S区用于存储步进控制的状态,在顺序控制程序中非常有用,可以简化复杂流程的编程。

  • 局部变量存储器 (L - Local): 用于子程序或功能块内部的临时数据存储。L区的数据只在子程序或功能块执行期间有效,退出后数据丢失,可以节省全局存储器资源。

  • 变量存储器 (V - Variable Memory): 类似于M区,但V区可以使用符号地址,更方便程序的可读性和维护性。

  • AIW, AQW, AI, AQ (模拟量输入/输出): 用于处理模拟量信号。AIW 和 AQW 是模拟量输入/输出字, AI 和 AQ 是模拟量输入/输出位 (较少用)。

  • 软元件的寻址方式:

    S7-200 使用地址来访问软元件。常见的寻址方式有:

  • 位寻址: 例如 I0.0, M2.3, Q1.7。 访问软元件的某一位。
  • 字节寻址: 例如 IB0, MB2, QB1。 访问软元件的连续8位(一个字节)。
  • 字寻址: 例如 IW0, MW2, QW1。 访问软元件的连续16位(一个字)。
  • 双字寻址: 例如 ID0, MD2, QD1。 访问软元件的连续32位(一个双字)。

2.2 编程基础知识

  • S7-200 PLC 的编程基础主要包括以下几个方面:

  • 编程语言: S7-200 主要支持以下几种编程语言:

    • 梯形图 (LAD - Ladder Diagram): 最常用的图形化编程语言,类似于继电器电路图,直观易懂,适合逻辑控制。
    • 指令列表 (STL - Statement List): 类似于汇编语言,基于文本的编程语言,执行效率高,适合复杂的算法和数据处理。 (此图片展示一段与上面LAD程序功能相同的S7-200 STL程序,对比两种语言的表达方式)
    • 功能块图 (FBD - Function Block Diagram): 图形化编程语言,使用功能块(预定义的程序模块)来构建程序,适合模块化和结构化编程。 (此图片展示一段与上面LAD/STL程序功能相同的S7-200 FBD程序,使用AND块和OR块的示例) 
  • 初学者通常建议从梯形图 (LAD) 入手,因为它更直观易学。

  • 程序结构: S7-200 的程序结构相对简单,主要包括:

    • 主程序 (OB1 - 组织块1): PLC 上电后循环执行的程序,也是用户程序的主体。所有的逻辑控制通常都在主程序中实现。
    • 子程序 (SUB - 子程序): 可以把程序模块化,方便代码重用和程序结构化。子程序需要被主程序或其他子程序调用才能执行。
    • 中断程序 (INT - 中断程序): 响应外部事件或内部事件(如定时器中断、通讯中断等)而执行的程序。中断程序的优先级高于主程序。
  • 扫描周期: PLC 采用扫描周期的工作方式。一个扫描周期大致分为以下几个步骤:

    1. 输入采样: PLC 读取所有输入模块的状态,并将数据存放到输入映像区。
    2. 程序执行: PLC 按照程序逻辑顺序执行用户程序,期间读取输入映像区的数据,并将输出结果写入输出映像区。
    3. 输出刷新: PLC 将输出映像区的数据输出到输出模块,驱动外部负载。
    4. 通讯和诊断: PLC 进行通讯处理和系统诊断。 然后循环回到步骤 1。 理解扫描周期对于编写可靠的 PLC 程序至关重要。
  • 编程软件: S7-200 的编程软件主要是 STEP 7-Micro/WIN。使用该软件可以进行程序编写、编译、下载、在线监控和调试等操作。 

2.3 PLC 的位元件

PLC 的位元件是最基本的软元件,它们只能存储一位二进制数据 (0 或 1),主要包括:

  • I 区 (输入位): I区 用于读取数字量输入模块的输入信号状态。例如 I0.0, I0.1 ... I7.7 等。 I 代表 Input,后面的数字代表输入模块的字节地址和位地址。
  • Q 区 (输出位): Q区 用于控制数字量输出模块的输出信号状态。例如 Q0.0, Q0.1 ... Q7.7 等。 Q 代表 Output,后面的数字代表输出模块的字节地址和位地址。
  • M 区 (位存储器): M区 用于存储程序运行过程中的中间状态或标志位。例如 M0.0, M0.1 ... M255.7 等。 M 代表 Memory。

这些位元件在程序中可以像开关一样使用,参与逻辑运算,控制程序流程和设备动作。

2.4 定时器

S7-200 提供了多种类型的定时器,常用的有:

  • 接通延时定时器 (TON - Timer On-Delay): 当输入条件满足时,定时器开始计时。当计时时间达到设定值 (PT - Preset Time) 时,定时器输出位 (Q) 置位。即使输入条件在计时过程中短暂消失,定时器也会继续计时,直到达到设定值。只有当输入条件再次满足时,定时器才能重新启动。

  • 断开延时定时器 (TOF - Timer Off-Delay): 当输入条件从满足变为不满足时,定时器开始计时。在计时时间内,定时器输出位 (Q) 保持置位。当计时时间达到设定值 (PT) 时,定时器输出位 (Q) 复位。

  • 接通延时保持型定时器 (TONR - Timer On-Delay Retentive): 类似于 TON 定时器,但具有保持功能。即使输入条件在计时过程中消失,定时器当前值 (ET - Elapsed Time) 也会保持,不会清零。只有通过复位信号 (R) 才能将定时器复位。

定时器的重要参数:

  • PT (Preset Time - 预设时间): 设定的定时时间值。
  • ET (Elapsed Time - 经过时间/当前值): 定时器已经计时的时间。
  • IN (输入): 定时器的启动输入信号。
  • Q (输出): 定时器的输出位,当计时完成时置位。
  • R (复位 - 仅 TONR): TONR 定时器的复位输入信号。

2.5 计数器

S7-200 提供了三种类型的计数器:

  • 加计数器 (CTU - Counter Up): 每当 CU (Count Up) 输入端接收到一个上升沿信号时,计数器当前值 (CV - Counter Value) 加 1。当当前值达到或超过设定值 (PV - Preset Value) 时,计数器输出位 (Q) 置位。

  • 减计数器 (CTD - Counter Down): 每当 CD (Count Down) 输入端接收到一个上升沿信号时,计数器当前值 (CV) 减 1。当当前值减小到或小于 0 时,计数器输出位 (Q) 置位。加载输入端 (LD) 用于将设定值 (PV) 加载到当前值 (CV)。

  • 加/减计数器 (CTUD - Counter Up/Down): 具有加计数和减计数双重功能。CU 输入端用于加计数,CD 输入端用于减计数。可以通过 R (Reset) 输入端复位计数器,通过 LD (Load) 输入端加载设定值。

计数器的重要参数:

  • PV (Preset Value - 预设值): 设定的计数目标值。
  • CV (Counter Value - 当前值): 计数器当前的计数值。
  • CU (Count Up - 加计数输入): 加计数输入信号。
  • CD (Count Down - 减计数输入): 减计数输入信号。
  • Q (输出): 计数器的输出位,当计数完成时置位 (CTU/CTD/CTUD)。
  • QU (加计数输出 - CTUD): CTUD 加计数完成输出。
  • QD (减计数输出 - CTUD): CTUD 减计数完成输出。
  • R (复位): 计数器复位输入信号。
  • LD (加载): 计数器加载输入信号。

2.6 其它的软元件

除了上面介绍的常用软元件,S7-200 还提供了一些其他的软元件,例如:

  • 高速计数器 (HC - High-Speed Counter): 用于捕捉高速脉冲信号,进行高速计数。高速计数器通常由硬件实现,计数频率比普通计数器更高。
  • 过程映像输入/输出 (PI/PQ): 在扫描周期的开始和结束时,PLC 会将所有输入模块的状态复制到过程映像输入区 (PI),并将过程映像输出区 (PQ) 的数据输出到输出模块。程序执行期间,PLC 直接访问 PI 和 PQ 区,而不是直接访问 I 区和 Q 区。 这可以提高程序的执行效率和数据的 consistency。
  • 系统常数 (例如时间、日期): 可以通过特定的 SM 区地址访问 PLC 的系统时间、日期等信息。

2.7-1 基本位逻辑指令1

基本位逻辑指令是 PLC 编程中最基础、最常用的指令,它们用于实现各种逻辑控制功能。S7-200 的基本位逻辑指令主要包括:

  • 常开触点 (---| |---): 类似于继电器电路中的常开触点。当触点前的逻辑条件为真 (TRUE 或 1) 时,电流才能通过触点,触点后的逻辑才能被执行。在梯形图中,常开触点用于检测某个位元件的状态是否为 1。 逻辑上相当于 AND 逻辑 的一部分。

  • 常闭触点 (---|/|---): 类似于继电器电路中的常闭触点。当触点前的逻辑条件为假 (FALSE 或 0) 时,电流才能通过触点,触点后的逻辑才能被执行。在梯形图中,常闭触点用于检测某个位元件的状态是否为 0。 逻辑上相当于 NOT AND 逻辑 的一部分。

  • 线圈 (---( )---): 类似于继电器电路中的线圈。当线圈前的逻辑条件为真时,线圈得电,线圈对应的位元件 (通常是 Q 区或 M 区的位) 置位 (置为 1)。当线圈前的逻辑条件为假时,线圈失电,对应的位元件复位 (置为 0)。 逻辑上相当于 赋值/输出 操作。

  • 置位线圈 (---(S)---): 当置位线圈前的逻辑条件为真时,对应的位元件被置位 (置为 1) 并保持,即使置位线圈前的逻辑条件变为假,该位元件的状态仍然保持为 1,直到被复位线圈复位。 用于实现 锁存/置位 功能。

  • 复位线圈 (---(R)---): 当复位线圈前的逻辑条件为真时,对应的位元件被复位 (置为 0)。 用于 解锁/复位 被置位线圈置位的位元件。

2.7.2 基本位逻辑指令2 详细介绍

在基本位逻辑指令1 的基础上,我们再详细介绍一些常用的,可以归类为 "基本位逻辑指令2" 的指令,虽然可能有些指令在某些分类中不一定被严格称为 "基本位逻辑",但它们在实际编程中非常常用,并且逻辑概念上仍然属于基础位逻辑的扩展:

更复杂的位逻辑组合:

通过组合上述基本位逻辑指令,可以实现各种复杂的逻辑控制功能。 例如:

 

 

 

  • 上升沿检测 (---(P)---): 也称为正跳变检测。 检测输入信号从 0 变为 1 的瞬间(上升沿)。 当检测到上升沿时,该指令导通一个扫描周期。 常用于对脉冲信号计数、单次触发动作等。 在 S7-200 中,通常使用 正跳沿触发器 (EU) 指令来实现。 逻辑上可以理解为 边缘触发

  • 下降沿检测 (---(N)---): 也称为负跳变检测。 检测输入信号从 1 变为 0 的瞬间(下降沿)。 当检测到下降沿时,该指令导通一个扫描周期。 常用于在信号下降沿触发某些动作。 在 S7-200 中,通常使用 负跳沿触发器 (ED) 指令来实现。 逻辑上可以理解为 边缘触发

  • 立即输入/立即输出: 在正常的 PLC 扫描周期中,输入采样和输出刷新都发生在周期的开始和结束阶段。 如果程序需要在扫描周期中间立即读取输入信号的最新状态或立即控制输出信号,可以使用 立即输入 (立即读取输入点)立即输出 (立即写入输出点) 指令。 在 S7-200 中,使用 立即读取输入 (Immediate Read Input)立即写入输出 (Immediate Write Output) 指令来实现。 这可以提高对外部信号的响应速度,但过度使用可能会增加扫描周期。

  • 取反指令 (NOT): 虽然在梯形图中常闭触点本身就带有取反的意味,但在某些情况下,可能需要显式的取反指令来对某个逻辑结果或位元件状态进行取反。 在指令列表中,可以使用 NOT 指令。 在梯形图中,逻辑取反通常通过组合常闭触点和线圈来实现,或者使用 FBD 中的 NOT 块。 逻辑上就是 逻辑非 运算。

  • 与 (AND) 逻辑: 多个常开触点串联就构成了 AND 逻辑。只有当所有串联触点前的逻辑条件都为真时,后续逻辑才能被执行。

  • 自锁电路 (保持电路): 使用置位线圈和复位线圈,结合常开和常闭触点,可以实现按钮启动,运行后松开按钮仍然保持运行状态,需要另一个按钮才能停止的自锁控制。 常用于电机启动停止控制。

    • 或 (OR) 逻辑: 多个常开触点并联就构成了 OR 逻辑。只要并联触点中有一个触点前的逻辑条件为真,后续逻辑就能被执行。

    • 异或 (XOR) 逻辑: 异或逻辑在梯形图中通常需要用多个基本触点和线圈组合来实现,或者使用 FBD 中的 XOR 块。 当两个输入信号状态不同时,输出为真;当两个输入信号状态相同时,输出为假。

    • 互锁电路: 用于保护设备或防止误操作。 例如,两个电机不能同时启动,或者当某个条件满足时,才能允许另一个动作执行。 互锁逻辑通常使用常闭触点来实现。

    • 顺序控制: 使用顺序控制继电器 (S 区) 和基本位逻辑指令,可以方便地实现步进式的顺序控制流程。

相关文章:

  • 【强化学习的数学原理】第08课-值函数近似-笔记
  • 用deepseek学大模型08-卷积神经网络(CNN)
  • Spring MVC 的核心以及执行流程
  • Spring如何去解决循环依赖问题的?
  • 互信息的定义与公式
  • SVN 创建版本库
  • MaxKB本地部署向量数据库出现HeaderTooLarge报错
  • dify实现分析-rag-文档内容提取
  • HTTP的“对话”逻辑:请求与响应如何构建数据桥梁?
  • DDD - 可能会用到的分布式事务
  • 深入浅出地讲解rvbacktrace原理
  • Ubuntu如何利用.ibd文件恢复MySQL数据?
  • 算法基础 -- Fenwick树的实现原理
  • python中使用数据库sqlite3
  • Spring Boot 集成 Kettle
  • QML 部件获得焦点触发的全局槽函数 onActiveFocusItemChanged
  • JavaScript 内置对象-字符串对象
  • Docker Remote API未授权访问漏洞复现
  • DeepSeek 助力 Vue 开发:打造丝滑的日期选择器(Date Picker),未使用第三方插件
  • 在conda虚拟环境中安装jupyter lab-----deepseek问答记录
  • 建网站靠什么赚钱/萧山seo
  • 做企业网站有什么工作内容/如何让自己的网站被百度收录
  • 数据分析师就业前景如何/搜索引擎优化工具有哪些
  • 没有网的电脑怎么安装wordpress/灰色词seo推广
  • 网站推广中的评估指标有哪些/百度网盘app下载安装电脑版
  • 广州网站制作系统/58精准推广点击器