西门子S7-1200 控制器是我们新推出产品的核心,可实现简单却高度精确的自动化任务。西门子S7-1200 控制器实现了模块化和紧凑型设计,功能强大、投资安全并且*适合各种应用。可扩展性强、灵活度高的设计,可实现标准工业通信的通信接口以及一整套强大的集成技术功能,使该控制器成为完整、全面的自动化解决方案的重要组成部分。
产品简介
详细介绍
云南西门子S7-1200代理商(欢迎您)总代理
西门子s7-1200编程
设计 PLC 系统的指南
设计 PLC 系统时,可从若干方法和标准中进行选择。 下列常规指南可应用到许多设计项目中。 当然,必须遵守您自己公司程序的指令、自身培训以及当地已被接受的实践。
表格 6- 1 设计 PLC 系统的指南
建议步骤 | 任务 |
对过程或机器进行分区 | 将过程或机器划分为彼此独立的部分。 这些分区会确定控制器之间的边界,并影响功能描述规范和资源的分配。 |
创建功能规范 | 写下过程或机器的每一部分(如 I/O 点)的操作说明、操作的功能描述、在允许进行每个执行器(如螺线管、电机或驱动器)的操作之前必须实现的状态、操作员界 面的描述以及过程或机器其它部分的任何接口。 |
设计安全电路 | 出于安全考虑,标识任何可能需要硬接线逻辑的设备。 请记住,控制设备在不安全方式下可能会出现故障,可能会造成意外启动或机械运转变化。 其中意外或错误的机械运转可能会导致人员的身体伤害或重大的财产损失,请考虑实施机电替代装置 (其独立于 PLC 运行)以防止不安全的运行。 安全电路的设计中应包含以下任务: 标识任何可能造成危险的不正确或意外的执行器操作。 标识可确保操作不危险的条件,并确定如何独立于 PLC 检测这些条件。 标识上电和断电时 PLC 如何影响过程,并标识检测错误的方式和时间。 此信息仅用于设计正常和预期的异常操作。 出于安全考虑,不应依赖此“情况”方案。 设计可独立于 PLC 来阻止危险运行的手动或机电安全替代装置。 从独立于 PLC 的电路提供相应状态信息,以便程序和任何操作员界面具有必要的信息。 标识针对过程安全运行的任何其它安全相关要求。 |
规划系统安全 | 确定访问相关过程所需的 保护 (页 166)级别。 可以对 CPU 和程序块进行密码保护,以防受到未经*的访问。 |
操作员站 | 根据功能规范的要求,创建以下操作员站的绘图: 显示与过程或机器相关的每个操作员站的位置的总览图。 操作员站中设备的机械布局图,如显示屏、开关和灯。 包含 PLC 和信号模块中相关 I/O 的电气图。 |
构建用户程序
建议步骤 | 任务 |
创建组态图 | 根据功能规范的要求,创建控制设备的组态图: 显示与过程或机器相关的每个 PLC 位置的总览图。 每个 PLC 和任何 I/O 模块的机械布局图,其中包括任何控制柜及其它设备。 每个 PLC 和任何 I/O 模块的电气图,其中包括设备模型号、通信地址和 I/O 地址。 |
创建符号名称的列表 | 创建地址的符号名称列表。 不仅包括物理 I/O 信号,也包括要在程序中使用的其它元素(如变量名)。 |
构建用户程序
创建用于自动化任务的用户程序时,需要将程序的指令插入代码块中:
组织块 (OB) 对应于 CPU 中的特定事件,并可中断用户程序的执行。 用于循环执行用户程序的默认组织块 (OB 1) 为用户程序提供基本结构,是一个用户必需的代码块。 如果程序中包括其它 OB,这些 OB 会中断 OB 1 的执行。其它 OB 可执行特定功能,如用于启动任务、用于处理中断和错误或者用于按特定的时间间隔执行特定的程序代码。
功能块 (FB) 是从另一个代码块(OB、FB 或 FC)进行调用时执行的子例程。 调用块将参数传递到 FB,并标识可存储特定调用数据或该 FB 实例的特定数据块 (DB)。 更改背景 DB 可使通用 FB 控制一组设备的运行。例如,借助包含每个泵或阀门的特定运行参数的不同背景数据块,一个 FB 可控制多个泵或阀。
功能 (FC) 是从另一个代码块(OB、FB 或 FC)进行调用时执行的子例程。 FC 不具有相关的背景 DB。 调用块将参数传递给 FC。 FC 中的输出值必须写入存储器地址或全局 DB 中。
为用户程序选择结构类型
根据实际应用要求,可选择线性结构或模块化结构用于创建用户程序:
线性程序按顺序逐条执行用于自动化任务的所有指令。 通常,线性程序将所有程序指令都放入用于循环执行程序的 OB (OB 1) 中。
模块化程序调用可执行特定任务的特定代码块。 要创建模块化结构,需要将复杂的自动化任务划分为与过程的工艺功能相对应的更小的次级任务。 每个代码块都为每个次级任务提供程序段。 通过从另一个块中调用其中一个代码块来构建程序。
线性结构: 模块化结构:
通过创建可在用户程序中重复使用的通用代码块,可简化用户程序的设计和实现。 使用通用代码块具有许多优点:
可为标准任务创建能够重复使用的代码块,如用于控制泵或电机。 也可以将这些通用代码块存储在可由不同的应用或解决方案使用的库中。
将用户程序构建到与功能任务相关的模块化组件中,可使程序的设计更易于理解和管理。 模块化组件不仅有助于标准化程序设计,也有助于使更新或修改程序代码更加快速和容易。
创建模块化组件可简化程序的调试。 通过将整个程序构建为一组模块化程序段,可在开发每个代码块时测试其功能。
创建与特定工艺功能相关的模块化组件,有助于简化对已完成应用程序的调试,并减少调试过程中所用的时间。
使用块来构建程序
通过设计 FB 和 FC 执行通用任务,可创建模块化代码块。 然后可通过由其它代码块调用这些可重复使用的模块来构建程序。 调用块将设备特定的参数传递给被调用块。
当一个代码块调用另一个代码块时,CPU 会执行被调用块中的程序代码。 执行完被调用块后,CPU 会继续执行调用块。 继续执行该块调用之后的指令。
调用块
被调用(或中断)块
① 程序执行
② 用于触发其它块执行的指令或事件
③ 程序执行
④ 块结束(返回到调用块)
可嵌套块调用以实现更加模块化的结构。 在以下示例中,嵌套深度为 4: 程序循环 OB
加 3 层对代码块的调用。
① 循环开始
② 嵌套深度
组织块 (OB)
组织块为程序提供结构。 它们充当操作系统和用户程序之间的接口。 OB 是由事件驱动的。 事件(如诊断中断或时间间隔)会使 CPU 执行 OB。某些 OB 预定义了起始事件和行为。
程序循环 OB 包含用户主程序。 用户程序中可包含多个程序循环 OB。 RUN 模式期间, 程序循环 OB 以低优先级等级执行,可被其它各种类型的程序处理中断。 启动 OB 不会中断程序循环 OB,因为 CPU 在进入 RUN 模式之前将先执行启动 OB。
完成程序循环 OB 的处理后,CPU 会立即重新执行程序循环 OB。 该循环处理是用于可编程逻辑控制器的“正常”处理类型。 对于许多应用来说,整个用户程序位于一个程序循环OB 中。
可创建其它 OB 以执行特定的功能,如用于处理中断和错误或用于以特定的时间间隔执行特定程序代码。 这些 OB 会中断程序循环 OB 的执行。
使用“添加新块”(Add new block) 对话框在用户程序中创建新的 OB。
总是由事件驱动中断处理。 发生此类事件时,CPU 会中断用户程序的执行并调用已组态用于处理该事件的 OB。 完成中断 OB 的执行后,
CPU 会在中断点继续执行用户程序。
CPU 根据分配给各个 OB 的优先级来确定中断事件的处理顺序。每个事件都具有一个特定的处理优先级。 各 OB 的执行顺序取决于它们在优先等级中的相应优先级。 多个中断事件可合并为优先级等级。 更多相关信息,请参见 PLC 概念一章,执行用户程序小节 (页 69)。
在某等级的 OB 内创建附加 OB
可为用户程序,甚至为程序循环和启动 OB 等级创建多个 OB。 使用“添加新块”(Add new block) 对话框创建 OB。输入 OB 的名称并输入 200 或更大的数作为 OB 编号。
如果为用户程序创建了多个程序循环 OB,则 CPU 会按数字顺序从具有小编号(例如OB 1)的程序循环 OB 开始执行每个程序循环 OB。 例如: 当*个程序循环 OB(例如 OB 1)完成后,CPU 将执行下一个更高的程序循环 OB(例如 OB 200)。
组态 OB 的运行
可修改 OB 的运行参数。例如,可为延时 OB 或循环 OB 组态时间参数。
功能 (FC)
功能 (FC) 是通常用于对一组输入值执行特定运算的代码块。 FC 将此运算结果存储在存储器位置。 例如,可使用 FC 执行标准运算和可重复使用的运算(例如数学计算)或者执行工艺功能(如使用位逻辑运算执行独立的控制)。 FC 也可以在程序中的不同位置多次调用。 此重复使用简化了对经常重复发生的任务的编程。
FC 不具有相关的背景数据块 (DB)。 对于用于计算该运算的临时数据,FC 采用了局部数据堆栈。 不保存临时数据。 要*存储数据,可将输出值赋给全局存储器位置,如 M 存储器或全局 DB。
功能块 (FB)
功能块 (FB) 是使用背景数据块保存其参数和静态数据的代码块。 FB 具有位于数据块
(DB) 或“背景”DB 中的变量存储器。 背景 DB 提供与 FB 的实例(或调用)关联的一块存储区并在 FB 完成后存储数据。 可将不同的背景 DB 与 FB 的不同调用进行关联。 通过背景 DB 可使用一个通用 FB 控制多个设备。 通过使一个代码块对 FB 和背景 DB 进行调用,来构建程序。 然后,CPU 执行该 FB 中的程序代码,并将块参数和静态局部数据存储在背景 DB 中。 FB 执行完成后,CPU 会返回到调用该 FB 的代码块中。 背景 DB 保留该 FB 实例的值。 随后在同一扫描周期或其它扫描周期中调用该功能块时可使用这些值。
可重复使用的代码块和关联的存储区
用户通常使用 FB 控制在一个扫描周期内未完成其运行的任务或设备的运行。 要存储运行参数以便从一个扫描快速访问到下一个扫描,用户程序中的每一个 FB 都具有一个或多个背景 DB。 调用 FB 时,也需要包含块参数以及用于该调用或 FB “实例”的静态局部数据的背景 DB。 FB 完成执行后,背景 DB 将保留这些值。
通过设计用于通用控制任务的 FB,可对多个设备重复使用 FB,方法是:为 FB 的不同调用选择不同的背景 DB。
FB 将 Input、Output 和 InOut 以及静态参数存储在背景数据块中。
在背景数据块中分配起始值
背景数据块存储每个参数的默认值和起始值。 起始值提供在执行 FB 时使用的值。 然后可在用户程序执行期间修改起始值。
FB 接口还提供一个“默认值”(Default value) 列,使您能够在编写程序代码时为参数分配新的起始值。 然后将 FB 中的这个默认值传给关联背景数据块中的起始值。 如果不在 FB 接口中为参数分配新的起始值,则将背景数据块中的默认值复制到起始值。
使用带多个 DB 的单个 FB
下图显示了三次调用同一个 FB 的 OB,方法是针对每次调用使用一个不同的数据块。 该结构使一个通用 FB 可以控制多个相似的设备(如电机),方法是在每次调用时为各设备分配不同的背景数据块。 每个背景 DB 存储单个设备的数据(如速度、加速时间和总运行时间)。
在此实例中,FB 22 控制三个独立的设备,其中 DB 201 用于存储*个设备的运行数
据,DB 202 用于存储第二个设备的运行数据,DB 203 用于存储第三个设备的运行数据。
数据块 (DB)
在用户程序中创建数据块 (DB) 以存储代码块的数据。 用户程序中的所有程序块都可访问全局 DB 中的数据,而背景 DB 仅存储特定功能块 (FB) 的数据。
了解数据*性
相关代码块执行完成后,DB 中存储的数据不会被删除。 有两种类型的 DB:
全局 DB 存储程序中代码块的数据。 任何 OB、FB 或 FC 都可访问全局 DB 中的数据。
背景 DB 存储特定 FB 的数据。 背景 DB 中数据的结构反映了 FB 的参数(Input、
Output 和 InOut)和静态数据。 (FB 的临时存储器不存储在背景 DB 中。)
说明
尽管背景 DB 反映特定 FB 的数据,然而任何代码块都可访问背景 DB 中的数据。
可将 DB 组态为只读:
在项目浏览器中右键单击相应 DB,然后在右键快捷菜单中选择“属性”(Properties)。
在“属性”(Properties) 对话框中选择“特性”(Attributes)。
选择“在设备中写保护数据块”(Data block write-protected in the device) 选项并单击“确定”(OK)。
创建可重复使用的代码块
使用项目浏览器中“程序
块”(Program blocks) 下的“添加新块”(Add new block) 对话框创建
OB、FB、FC 和全局 DB。
创建代码块时,需要为块选择编程语言。 无需为 DB 选择语言,因为它仅用于存储数据。