ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

SIMATIC Safety V19组态编程:从F-CPU到安全程序的关键细节

SIMATIC Safety V19组态编程:从F-CPU到安全程序的关键细节 简介西门子SIMATIC Safety系统的最新组态与编程指南面向工业自动化中负责故障安全控制项目设计、调试和维护的工程师。资源包内为1个PDF文档大小6.96MB已有157人学习。指南覆盖从硬件组态、安全管理编辑器、访问保护到LAD/FBD安全编程、F-I/O访问、标准程序与安全程序数据交换、安全通信及编译调试的完整流程同时涉及系统验收、操作维护和STEP 7 Safety V19指令使用并列出S7-300/400/1200/1500、ET200系列等F-I/O模块的集成要点。附录中的检查清单与响应时间监视内容可作为项目现场排错和定期检查的快速参考。此外手册对危险、警告、小心等安全提示类别作了说明强调由合格专业人员按规定使用并对运输、存储、安装调试及环境条件提出明确要求。1. SIMATIC Safety 的 V19 组态编程到底在组什么在 TIA Portal 里新建一个安全项目很多工程师以为是在普通逻辑外面套一层 IF 判断实际上 SIMATIC Safety 在 V19 中把安全控制拆成了三件独立的事硬件侧要选 F-CPU 和 F-I/O 并分配 PROFIsafe 地址程序侧要建立 F-runtime group 并用安全指令实现控制功能管理侧还要处理安全程序签名和版本确认。这篇文章重在把博图 V19 里真正影响安全功能实现和调试效率的细节梳理清楚适合已经会用 TIA Portal 写标准程序、现在要第一次把带 F 前缀的硬件引入项目的工程师。V19 相比旧版本在中型安全 PLC 的集成上更顺手但核心组态逻辑并没有变。2. SIMATIC Safety V19 安全控制组态从 F-CPU 到 PROFIsafe 地址2.1 硬件组态里 F 硬件的选型与安全等级在 SIMATIC Safety 的语境里安全控制是由 F-CPU、F-I/O 和安全程序组成的整体解决方案不是一个独立安全继电器。F-CPU 在 V19 中常见的是 S7-1200F 和 S7-1500F 系列它们在标准 CPU 基础上增加了 F-runtime 支持。选型时重点看两个指标CPU 是否带 F 后缀以及安全程序要覆盖的 I/O 点数和分布位置。F-I/O 的选型更直接。以 ET200SP 为例F-DI 模块提供安全数字量输入内部带测试脉冲监测电路F-DQ 输出模块则支持两通道断开结构。组态时每个 F-I/O 模块都必须在设备视图中分配一个安全地址这个地址用于 PROFIsafe 协议的数据交换。V19 的设备视图里双击 F 模块后可以看到 Safety 选项卡勾选后才会出现安全地址配置区域。还应注意 ET200SP 的服务器模块BusAdapter 和服务器模块本身必须选择支持安全通信的类型否则 F 模块会标识为不可用。设备PROFIsafe 地址说明F-CPU10每个安全域内固定起始地址机架 1 F-DI11第一个安全输入模块机架 1 F-DQ21第一个安全输出模块提示普通数字量输入模块不能替代 F-DI。安全程序会通过 PROFIsafe 报文周期检查 F-I/O 状态普通模块没有这个机制。硬件组态里另一个容易忽略的点是安全等级。SIMATIC Safety 支持 SIL 2 到 SIL 3 的应用场景但安全等级不是组态软件自动算的而是来自风险评估。组态工作的实际影响是如果需要 SIL 3CPU、I/O 和通信路径都必须声明为 SIL 3并且安全逻辑必须使用带 F 前缀的指令这直接决定了项目里能否用普通 HMI 变量参与控制。2.2 PROFIsafe 安全地址分配与常见地址冲突PROFIsafe 是 SIMATIC Safety 通信的底层协议。每个 F-I/O 在组态时都需要一个介于 1 到 65534 之间的安全地址。这个地址既不是 IP 地址也不是 PROFINET 设备编号而是 F 目标设备在安全域内的唯一标识。在 TIA Portal V19 的 I/O 属性窗口中Module parameter 区域里有 F_Source_Address 和 F_Destination_Address 两个字段均匀分配好后一般不需要手工修改。我建议在项目开始时先规划一张安全地址表。比如 CPU 固定用 10安全输入模块用 11 到 20安全输出模块用 21 到 30并在项目树里单独记录。因为现场更换模块后如果安全地址和源地址不匹配CPU 会将该 F-I/O 置为 passivate 状态并在诊断缓冲区里报警。V19 可以在拓扑视图逐台核对设备也可以从模块属性中导出当前 PROFIsafe 地址。常见的地址冲突场景是同一 PROFINET 网络里有多套 F-CPU。PROFIsafe 地址只需要在每个安全域内唯一也就是说不同安全域之间的地址允许重复。安全域通常由 F-CPU 决定如果两台 F-CPU 不在同一个 F 通信关系中它们的 F-I/O 使用相同地址没有冲突。很多新人在多 CPU 项目里习惯性避免重复结果给自己增加不必要的维护成本。2.3 安全运行组为什么安全程序必须是独立运行组在 SIMATIC Safety 中安全程序不能直接写在 OB1 里。V19 会把安全相关块挂到独立的 F-runtime group 中这个运行组在 F-CPU 中是独占的安全块的执行顺序由系统固定生成用户不能调整。这样做的原因是安全程序需要可预测的执行时间并且防止标准程序意外修改安全逻辑。实际组态操作是在 F-CPU 属性中启用 Safety Program然后系统自动生成一个 F-runtime group。你需要把安全块拖入该运行组并在组属性中设置 F-cycle 时间。F-cycle 时间是可重复执行安全程序的时间片直接影响安全响应时间。V19 默认值为 10 ms但要根据安全门锁、急停等信号的实际需求调整具体参数在第 4 章展开。安全运行组的存在还带来一个重要规则安全块只能访问经过安全确认的全局变量普通标准变量不能直接作为安全输入输出。在 V19 中你需要使用 F 全局变量或通过安全通信映射来读取标准程序数据。这个边界是安全控制组态与普通 PLC 编程的最显著差异。3. 用博图 V19 编写安全控制程序急停与安全门互锁的最小实现3.1 在 V19 项目中启用安全程序的三步操作创建一个 SIMATIC Safety 项目关键步骤并不复杂。首先新建项目时 CPU 要选带 F 后缀的型号比如 CPU 1515F-2 PN。项目创建完成后打开 CPU 属性在 General 选项卡中找到 Safety勾选 Enable Safety Program。这一步会触发系统将 CPU 切换到 F 模式并在项目树中生成一个安全程序节点。第二步把安全 I/O 模块从硬件目录拖入设备视图例如 ET200SP 的 F-DI 8x24VDC 和 F-DQ 4x24VDC。双击模块在 Safety 组中找到 Assignment of safety address填写规划好的安全地址。此时模块上的 F 状态灯会在下载后变为绿色或黄色。最后在 PLC 项目树中双击 Safety Administration建立 F-runtime group 并添加一个 F-FB。提示启用安全程序后CPU 的循环 OB1 仍可自由编辑但安全程序块只能放在 F-runtime group 里不能被标准块直接调用。常见的错误是尝试把 F-FB 放到普通 FB 中V19 编译会直接报错。步骤操作常见错误1选择带 F 后缀的 CPU选错 CPU后续无法启用安全模式2组态 F-DI/F-DQ 安全地址安全地址冲突模块自动钝化3添加 F-FB 到 F 运行组把 F-FB 放普通程序编译不通过3.2 一个完整的急停和安全门互锁逻辑下面用一个最典型的场景说明安全控制编程两个安全数字量输入急停常闭触点、安全门限位控制一个安全数字量输出接触器。在 F-DI 上接线时急停和门开关都接在 24V 供电的输入端按下急停或开门时输入信号消失。安全逻辑要求两个条件都满足时输出才为 1任何一个信号消失输出必须立即断开。在 TIA Portal V19 中新建 F-FB选择 F-SCL 作为编程语言时可以按下面的示意代码编写FUNCTION_BLOCK F_Safety_Interlock { S7_Optimized_Access : TRUE } VERSION : 0.1 VAR_INPUT i_E_STOP : F_BOOL; // 急停常闭反馈 i_DOOR : F_BOOL; // 安全门关闭反馈 END_VAR VAR_OUTPUT q_MOTOR : F_BOOL; // 运行接触器输出 END_VAR VAR_TEMP #tmp_ok : F_BOOL; END_VAR BEGIN #tmp_ok : i_E_STOP AND i_DOOR; q_MOTOR : #tmp_ok; END_FUNCTION_BLOCK上面是概念示意实际安全块在编译时会经过 F 语言检查不能直接使用标准布尔运算指令。F_BOOL 类型相当于带安全属性的布尔量AND 运算会由库中的安全逻辑块替代。初学者容易把这段代码中的 #tmp_ok 当作普通中间变量使用V19 编译阶段会要求把中间变量也声明为 F 类型避免标准程序交叉读写。如果使用 F-FBD 编程同样的逻辑就是两个串联常开触点连接到一个线圈。建议在 F-FB 的接口区使用 F 背景数据块这样安全逻辑的中间状态能保存在安全数据块中。V19 会通过签名机制保护这些数据程序版本变化时可以追溯到旧版本。3.3 安全程序的编译、签名与确认流程安全控制编程和标准 PLC 编程最大的不同是编译后的确认流程。点击编译后V19 除了生成机器码还会计算一个安全程序签名。这个签名由安全块源码、编译选项和 F 运行组设置共同生成。修改任意一条安全逻辑签名都会变化PLC 中的旧签名立即失效CPU 会在下一个冷启动时拒绝进入安全模式。我通常在项目树中将编译产生的签名记录到版本管理文件这是交付时的标准做法。V19 提供了一个安全确认对话框每次重新编译安全程序并下载时系统会弹窗要求输入 PIN 或确认文本。这个确认不只是点击确定相当于签字确认程序符合安全功能说明。在审计时签名记录和确认记录比普通注释更有说服力。下载到 F-CPU 后CPU 会进入 Safety program test 状态。此时安全输出默认被强制为 0需要用在线调试功能逐步使能安全逻辑。V19 调试面板中可以看到每个安全块的状态以及安全程序循环时间这是确认安全功能是否达到目标响应时间的直接依据。4. SIMATIC Safety V19 中 4 个必须摸清的关键参数4.1 F-cycle 时间与安全响应时间的关系安全程序的执行并不是每个 OB1 周期都运行而是按照 F-runtime group 中设定的时间周期执行。F-cycle 时间有两个影响一是安全逻辑结果的刷新周期二是标准程序与安全程序数据交换的更新时间。V19 默认值是 10 ms在设备属性中可选择 1 到 100 ms且必须为 1 的整数倍。安全响应时间不等于 F-cycle 时间而是从输入信号变化到输出断开的总时间包括输入滤波、F-I/O 上报、F-cycle 执行和输出切断。实际计算时我习惯取 F-cycle 的两倍再叠加模块的看门狗时间。如果应用要求急停响应时间小于 150 msF-cycle 应设在 20 ms 以下超出时应重新考虑硬件选型或输入滤波参数。4.2 F-I/O 的 passivation 行为与安全输出设置当 F-I/O 出现通信故障或内部诊断错误时模块不会保留最后状态而是进入 passivate 状态。同时安全输出的安全值由组态参数决定。V19 的安全输出模块属性中有 Passivation behavior默认是 Fallback value 0即输出安全断开。某些场景中安全门打开时输出立刻跳变会导致设备机械冲击你可以选择在短时间内保持旧值但这必须经过风险评估。安全输入模块的 passivation 相对简单输入变量值变为组态的安全状态值通常是 0。在组态模板中每一路通道可单独设置 Replacement value。实际调试试时要频繁在线查看诊断缓冲区里的 Passivation reason 和诊断代码这比看模块指示灯更准确。V19 的诊断视图也会提示是 F_Source_Address 不匹配还是模块硬件故障。4.3 安全程序签名与项目版本管理安全程序签名在 SIMATIC Safety 中相当于程序的身份证。TIA Portal V19 编译后在 PLC 属性中能看到完整签名包括 CRC 值和编译时间。任何安全块源码改动都会影响签名现场审计时经常要求出具签名记录。建议每次编译后把导出项目 XML 或安全程序数据保存到版本库。另一个容易踩的坑是安全程序块被设定为“手动覆盖”后签名失效。V19 允许在调试时强制修改安全输入输出变量但退出调试模式时如果没有清除强制安全程序不能确认为合格状态。我会在安全审计清单中增加一项下载前检查 Forces active 标记是否为 False。4.4 安全数据与标准程序的交换边界安全程序经常要与 HMI 通信例如显示急停状态或复位信号。这些跨边界数据不能直接使用普通全局变量而要借助安全相关通信机制。V19 中可以在安全块属性中定义通信变量再由标准程序读取这些变量。读取路径中的数据更新由 F-I/O 控制。这里最容易犯错的地方是在标准 OB1 里用临时变量给安全块输入赋值。由于 F-runtime group 的执行时间是异步的标准程序中的赋值可能错过安全程序的循环边界导致安全功能判断错误。我通常把 HMI 的复位信号先写入普通 DB再通过安全通信指令映射到安全块中让编译器处理数据一致性。参数名称默认值设置建议F-cycle 时间10 ms按安全响应时间的一半取值F-I/O Watchdog200 ms随通信周期调整至少大于 2 个扫描周期Replacement Value0安全相关输出必须为 0Safety Program Version1.0每次修改安全逻辑后递增5. 用 V19 的调试和验证技巧检查安全程序安全程序的调试与标准 PLC 完全不同不能随便修改一个值就下载运行。V19 在调试模式下提供了清晰流程先强制 F-I/O 输入逐个观察安全块输出确认通过后再禁用在线修改并生成签名。常用的验证技巧是在安全块输出变量上建立 Watch Table同时打开 F-runtime group 的执行监视窗口。执行监视里会显示每个安全块当前的执行状态和耗时。比如急停信号断开后在 Watch Table 里观察输出变量的下降沿时间计算实际响应时间是否在 F-cycle 参数的预期范围内。这个检查比反复用秒表更可靠能精确到毫秒级。另一个有用的功能是安全程序静态检查。V19 编译时除了语法检查还会检查安全块之间是否使用了未经安全确认的全局符号。只要看到编译结果中提示 Safety program invalidated就说明有安全块被非安全块访问。此时必须找到访问点并改为 F 通信块映射否则安全程序无法投入运行。最后建议保存项目前查看安全程序属性中的 Safelogic Signature把它记录到检查表。这样后续打开备份项目也能快速判断该备份是否包含了最新安全逻辑。本文还有配套的精品资源点击获取
返回列表