使用Sivarc使PLC程序标准化

news2024/11/25 8:21:48

前言

由于公司最近做的项目都是同样的,并且都采用S7-1500/S7-1200 与G120 系列做为主控系统,所以我一直在思考一个问题:如何标准化并且快速的编程调试。这样可以极大的缩短项目的调试周期,减少公司工程成本,同时也免去工程师在项目上做过多的重复劳动。


一、

首先介绍一下SiVArc到底能帮助我们在项目中能够做什么事情。具体的演示通过下文的图文来跟大家说明;
在这里插入图片描述
图1

可以看到图一的项目中只有一个PLC工程,并且OB1中只调用了一个"10007.G120无纺布设备"的FB块;在这里插入图片描述
图2

图2的步骤为在网络视图中添加一个②TP1200 Comfort HMI,并且将①处选择为 连接 连接类型选择为 HMI连接 ,然后通过拖拽的方式将HMI的以太网口连接到PLC的以太网口(此操作可逆),此时我们会看到③已经建立一个HMI连接,如果再去HMI的 连接 中查看会发现TIA已经为我们生成一个如③处一样的连接,且连接名称也相同;
在这里插入图片描述
图3

由图3可见HMI的项目并未新建任何画面,到此下面就到见证奇迹的时刻了;
在这里插入图片描述
图4

通过右键HMI工程选择 生成可视化(SiVArc)然后在下一级菜单中选择 生成可视化
在这里插入图片描述
图5

此时会弹出一个窗口我们勾选HMI 和 PLC 然后点击生成按钮;
在这里插入图片描述
图6

现在项目已经自动生成一个与图一中程序段1 "10007.G120无纺布设备"FB 块背景数据块名称相同的画面 ① 主螺杆 且画面的图标与以前有所不同,它的右下角会呈现一个 SiV 的字样。在此画面中会生成一个面板实例② 且此面板实例的接口③中均已经连接变量;此生成过程基本在10秒以内。

相信大家通过上述的图文已经明白SiVArc 到底能为我们做一个什么样子的工作,接下来为大家讲述一下想要实现 SiVArc 这样的功能我们要怎样去对PLC进行编程。

首先编程我们要养成良好的习惯,一个设备中有大于或等于三个以上的重复单元,我们就可以使用模块化的编程思路;例如有3个需要单按钮启停的星三角启动电机,如果们采用一个程序段一个程序段那样的去编写程序,那么程序的可读性就会很差,并且也加重了自身的工作量。

个人建议:在使用FB或者FC时我们对参数的命名也需要遵循一定的规范,不然在调试FB\FC的时候容易把自己看晕;

我就以AutoStart举例;

在Input,Output,InOut中采用的写法均为AutoStart。
在Static中采用的写法则为 _AutoStart。
在Temp中采用的写法则为 _autoStart。
在Constant中采用的写法则为 AUTOSTART。

实现SiVArc 对项目有一些要求,必须要保证项目中功能单元的重复度高,可以重复调用写好的某一个FB块,同时HMI界面也相似。

在我看来实现SiVArc 的FB块有三种做法:

第一种:直接使用FB块的背景数据块,但是这样有个缺陷不便于程序的规范化,所有与HMI连接的变量都是分布式的,所有的连接状态都只能去背景数据块中查看,如果项目使用的是SIEMENS HMI 与 SIEMENS PLC 则没有很大的问题,如果采用第三方的HMI则在做HMI的编程的时候就会非常繁琐;
在这里插入图片描述
图7

第二种:在编写FB块的时候将FB块所需要连接到 HMI 的变量做成一个 PLC数据类型(UDT) ,同时在FB块的输入输出中新建此数据类型的参数①,之后新建一个HMIData 的DB块用于专门与HMI建立连接②,这样可以避免HMI连接的变量在程序中比较分散,便于查找与监控;
在这里插入图片描述
图8

第三种:第三种与第二种有点类似,但是在写FB块的时候完全不要去考虑如何连接HMI ,只需要按照功能编写FB就可以了①,但是PLC数据类型这个步骤还是不能省略,之后同第二种一样新建一个HMIData 的DB块用于专门与HMI建立连接③;此时接FB块的接口上连接的就是 HMIData 中实例化的数据类型相应的地址;

图9
图9

了解了这三做法我们就依据第三种方式来做一个例子:

首先我们在程序块中新建一个FB块 名称就叫 11006.星三角电机 11006的前缀表示这个功能块号,同时这样做的好处为在程序文件夹下各个功能块能够依据前缀排序。
在这里插入图片描述
图10

然后依据我上述的规范来新建各种参数,并且保证红色框线内的钩均已选中;
在这里插入图片描述图11

因为我们的FB块有些管脚是给硬件IO使用的所以我们在新建PLC数据类型的时候可以选择性的建立只在HMI上作用的参数,在建立的时候我们最好是多建立几个 Struct 以来区分各个接口功能。
在这里插入图片描述图12

然后我们再建立与HMI建立连接的DB块 HMIData 并且在此DB块内实例化刚才新建的 PLC数据类型,同样保证红色框线内的钩均已选中。
在这里插入图片描述图13

最后一步在OB1块中实例化 11006.星三角电机 并且给功能块的管脚连接上 HMIData或者 硬件IO 变量;
在这里插入图片描述图13

至此PLC编程这块的工作就已经完成

二:
下面我们将依据上述示例中的功能块(图1)来编写一个 HMI面板。
在这里插入图片描述

编写之前我们需要确定我们这面板里面需要包含多少个元素,以 11006.星三角电机 我们可以看出,我们所需的元素有一下几点:
在这里插入图片描述

已知有六种元素那么我们就可以开始来创建一个 HMI面板(图2):

1.选择右侧导航器点击库①;
2.展开项目库→展开类型→双击添加类型②;
3.选择面板③;
4.选择 面板/WinCC Runtime Advanced ④;
6.为此面板命名⑤(最好是与FB块同名,以方便查找);
在这里插入图片描述图2

在点击生成后TIA Portal 会进入如下图所示的一个界面(图3),在图中的①处是面板的编辑窗口。
在这里插入图片描述图3

在上图的编辑窗口中我们拖入上述的元素并且将元素按照表格里面的第三栏命名(图4①),然后按照自己的习惯排列这些元素后我们会得到如下图所示的一个窗口(图4)。
在这里插入图片描述图4

完成上述步骤后接下来就是将这些需要控制的点连接到 接口 上(仔细观察图4),但是连接变量也是有两种方案,这两种方案我先列出出来,这两种方案的各种特点我将在演示完这两种方案之后给大家阐述。

第一种:直接连接的方式,也就使用上述实例中的第一种 方式;

在这里插入图片描述

首先我们在 接口 中为所需连接的变量添加属性①,做好命名并且指定好数据类型。将②处 电机标签中所包含的对象中的文本拖拽至接口中动态属性中的电机名称上。此时我们会发现中间空白部分会生成一条带右箭头的线由①→②处,这就意味着我们已经将此属性关联到接口中。

继续添加下一个动态属性 延时时间
在这里插入图片描述

第一步①我们选中延时时间的I/O域,在属性②中的常规栏目中选择变量③,单击变量窗口中的下拉列表,④选择延时时间⑤。

之后我们通过同样的操作将所有的功能都连接至接口里的动态属性,连接完毕后我们将得到这样一个界面(图7)。
在这里插入图片描述图7

所有项都连接完毕后,选中面板(点击面板的空白处)图八①,选择 插件② ,此时SiVArc属性中的属性接口会出现四个动态属性,这四个动态属性就是来给我们连接 SiVArc 变量表达式的。
在这里插入图片描述图8

之后我们单击右上角的感叹号(图9)①,选择发行版本②。
在这里插入图片描述图9

第二种方式:在接口中的动态属性中采用UDT (PLC数据类型)。

在HMI面板中使用UDT的话我们首先需要将在项目中的UDT添加到项目库中,也就是将图十中的UDT①拖拽至②处;
在这里插入图片描述
然后我们在接口中新建一个动态属性,它名称就叫 11006.星三角电机UDT 他的数据类型则选择我们在项目库中新建好的 11006.星三角电机UDT。
在这里插入图片描述

我们再将数据如同第一种方式那样关联起来,此时我们会发现图12①处SiVArc属性中的属性接口只有两个动态属性,其中电机名称是必须另外新建的。

在这里插入图片描述
至此HMI面板这块的工作就已经完成,


总结

通过上述的两种方式的描述,大家也能看出这两种方式的明显区别,前者更加的适应于SiVArc,因为他的接口变量中所填写的参数均为自动生成的,虽然他比较多,但是并会不加重工作量。而第二种则应用则适用性更强,它不仅能够适用于SiVArc,而且在做非SiVArc项目时也能给我们带来便捷,因为他的接口变量较少,能够减轻一部分的工作量;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/143971.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

英伟达发布528.02 WHQL 新驱动,支持4070 Ti

昨日,英伟达正式发布RTX 4070 Ti显卡,并马不停蹄发布了528.02 WHQL 驱动,支持4070 Ti,新硬件新驱动一次性齐活。 RTX 4070 Ti显卡在光线追踪游戏中的性能表现良好,在现代游戏如《瘟疫传说:安魂曲》,《战锤…

php如何接收支付宝应用网关发送的post请求

php如何接收支付宝应用网关发送的POST请求方式,参数又是GET请求的数据格式配置支付宝应用网关如何接收支付宝异步通知(应用网关接收请求)将&连接的参数分割成数组实例:难点配置支付宝应用网关 首先要在服务器上写一个接口,然后将接口的访问地址设置在支付宝应用…

Java中常用API总结(2)—— System类(含实例解读)

System类一、前言二、概述1.API帮助文档2.概述3.使用方式三、常用方法1.获取当前时间所对应的毫秒值1️⃣格式2️⃣实例3️⃣具体应用2.终止当前正在运行的Java虚拟机1️⃣格式2️⃣实例3.进行数值元素copy1️⃣格式2️⃣实例3️⃣注意事项四、结语一、前言 本文将讲述System类…

springsecurity认证流程

Authentication AuthenticationManager : 认证管理器 实现类: ProviderManager AuthenticationProvider : 实现类: DaoAuthenticationProviderRememberMeAuthenticationProvider 方法: authenticate()supports() : 判断当前AuthenticationProvider是…

dubbo学习笔记2(小d课堂)

dubbo核心架构及流程 企业中dubbo常见的多种开发方式 详解dubbo服务注册中心 Dubbo整合zookeeper 我们主要是改这部分: 然后我们启动本地的zookeeper,再去启动它: 会报错,这是说我们缺少响应的jar包: 就可以了。 我们提…

〖Python 数据库开发实战 - Python与Redis交互篇⑨〗- 利用 redis-py 实现模拟商品秒杀活动案例

文章目录 ❤️‍🔥 为什么要引入线程池技术 ❤️‍🔥 通过案例加深线程池技术原理的理解 ❤️‍🔥 实现多线程模拟商品秒杀案例 - 思路 ❤️‍🔥 实现多线程模拟商品秒杀案例 - 代码 今天的这一章节我们将来实现 “模拟商品秒杀活…

ES6 课程概述②

文章目录更好的 Unicode 支持更多的字符串 API3-3. [扩展]正则中的粘连标记模板字符串3-5. [扩展]模板字符串标记4-1. 参数默认值使用[扩展]对 arguments 的影响[扩展]留意暂时性死区4-2. 剩余参数4-3. 展开运算符对数组展开 ES6对对象展开 ES7函数柯里化4-5. 明确函数的双重用…

【菜菜的CV进阶之路 - 深度学习环境搭建】配置Ubuntu深度学习环境

六、配置Ubuntu深度学习环境 1、安装Google chrome 使用wget下载最新的Google Chrome .deb软件包: wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb更多地址可参考:在Deepin v20系统中下载和安装谷歌Chrome最新版de…

Vue学习笔记(一)

Vue学习笔记1. 什么是Vue2. 安装Vue2.1 使用独立版本2.2 使用CDN方式2.3 使用NPM方式3.Vue语法3.1 el挂载点3.2 data数据对象3.3 V-text 设置标签内的内容3.4 V-html3.5 V-on3.6 计数器3.7 v-show3.8 V-if3.9 v-bind3.10 v-for3.11 V-model4.class与style绑定5.表单输入绑定5.1…

【vue2】基础概念 01 (vue框架介绍、el、data、插值表达式)

🥳博 主:初映CY的前说(前端领域) 🌞个人信条:想要变成得到,中间还有做到! 🤘本文核心:vue框架介绍、结构元素详解(el、data、插值表达式) 目录&#xf…

《我是个怪圈》读书笔记

文章目录书籍信息论灵魂及其尺寸摇曳在恐惧与梦想之间的那只电灯泡(取自拉塞尔埃德森的诗)模式的因果潜力关于自我与符号副现象模式与可证性哥德尔的典型怪圈奇迹般步调划一的同步在公式与大整数之间翻转很大的整数与公式步调一致的移动质雅数怪圈论向下…

vue实现文件预览功能

目录 一、使用插件预览 1.前端实现在线预览文档 通过联机查看 Office 文档 打开新窗口预览文件 当前页面预览文件 注意事项 在创建好url之后,可能会出现无法打开文档的情况,这时候就需要对照官网的解释来查找问题了,官方文档的解释如下…

k线图入门精讲

K线图是贵金属技术分析的基础手段,刚入门的投资者应认真学习和理解k线的基础知识,因为有了认识才能分析。然而,多数上班族精力有限,无法耗费大量精力学习,今天小编就为准备了K线入门的“精读班”。 一、K线的作用 K线图…

【node.js】fs\path\http模块的使用 02

🥳博 主:初映CY的前说(前端领域) 🌞个人信条:想要变成得到,中间还有做到! 🤘本文核心:Node.js的fs\path\http模块的使用,模块化开发概念 目录 一、node.js概念与作…

Java程序员你自己的菜鸟气质霸气侧漏了吗?

对于刚入行的程序员来说,面对各种各样的陌生配置环境和代码库,难免会手忙脚乱,尽显菜鸟本色。 但从啥都需要教的菜鸟到啥都懂的大神程序员,并不简单,这需要牺牲一根又一根宝贵的头发,直到它们肉眼可数。 …

线上服务器CPU占用过高?7步带你搞定

一. 前言在Java开发岗位的面试中,时不时会出现一些运维类的题目,其实这也反映了后端面试的一种趋势。现在企业对后端开发的要求越来越全面,不仅要求我们会写代码,还要我们能够进行部署和运维。今天壹哥就结合一个真实的项目案例&a…

【Linux】Linux权限

权限的概念 限制人的,访问的对象天然可能没有这种“属性”权限:一件事情是否允许被谁“做”。 权限 人 事物属性 Linux上的用户分类 root,超级管理员,几乎可以干任何事情(1个)普通用户(多个&a…

雷电飞机大战游戏|基于Java开发实现雷电飞机大战游戏

作者主页:编程指南针 作者简介:Java领域优质创作者、CSDN博客专家 、掘金特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容:Java项目、毕业设计、简历模板、学习资料、面试题库、技术互助 收藏点赞不迷路 关注作者有好处 文末获取源…

【前端】Vue项目:旅游App-(8)city:标签页Tabs动态数据:网络请求axios与request、数据管理store与pinia、各种封装

文章目录目标过程与代码安装相关库封装网络请求相关代码网络请求数据网络请求数据操作封装pinia管理数据并封装tab栏改为动态数据效果本篇总结总代码修改或新建的文件serviceindexmodules的cityrequest的configrequest的indexstoremodules的citymodules的loadingcity.vue参考目…

录屏没有声音怎么办?录屏怎么录声音

相信部分朋友在录制视频时,有出现录制视频没有声音,导致该段视频没有声音而无法播放。录屏怎么录声音?可以使用支持录制声音的专业的电脑录屏软件。今天小编就在这给大家分享在录制视频同时,将声音也录制进去的操作步骤。一、录屏…