技术论坛

 STEP7 V15.1中的软件单元

返回主题列表
作者 主题
Letham
至圣

经验值:13927
发帖数:2005
精华帖:43
楼主    2019-01-13 16:26:52
主题:STEP7 V15.1中的软件单元 精华帖  精编帖 

在 TIA PORTAL V15.1中出现了一个新功能“软件单元”

首先看软件单元的主要元素


可以看出了 除了程序块/PLC变量/PLC数据类型/PLC监控与报警/PLC报警文本列表外,还多了一个“关系表”这特殊的元素,下面会介绍 关系表这元素

谈下自己的一些看法;

 1:和以前版本相比,现在每个软件单元的程序,可以单独进行编辑和下载。

在初用博途时,很多坛友反应,程序怎么不能单独下载了,每次在线/下载程序时博途STEP7都会比较离线和在线程序,当你下载时,软件会同步不一致的程序,将PG中的程序下载到控制器中。但是有了软件单元,情况不一样了各个软件单元里的程序可以单独编辑和上/下载了。

 

2:在软件单元中的程序块,现在已经强制使用“优化块的访问”方式。

如果你要觉得软件单元挺好的,那么请改变以前的编程习惯,用软件单元内的数据块只能用“优化块的访问”。并且,软件单元程序也只能访问全局数据块中的优化方式访问的数据块了。优化数据块与非优化数据块相比有一定的优势,同时不建议在优化与非优化数据块之间拷贝数据。详情可以参见本人另外一个帖子


慢慢习惯块的优化访问方式



3:某种程度上体现了OOP编程的一些思想,比如,封装

下图,展示了软件单元中的程序,如何访问软件单元之外的程序,这里涉及到一个重要的元素关系表。

关系表决定了该软件单元中,可以访问软件单元外全局数据块/工艺块,是否可以访问其它软件单元中的程序块。

在关系表中,可以建立该软件单元与外部三种不同对象之间的关系


⑴其它软件单元

一旦建立了与其余软件单元之间关系,在该软件单元中,就可以访问被建立联系的软件单元里的相关程序块等(被建立联系的软件单元并不是所有程序块等都可以在该软件单元中使用。可以选择性地把相关程序块,数据类型等访问属性设置为发布状态,见下图)

需要注意的是:

软件单元不能与自己建立关系;

软件单元之间的关系是单向的!比如 在软件单元A的关系表中定义与软件单元B的关系,那么在软件单元B的关系表中就不能建立与A的关系了结果就是软件单元A可以访问软件单元B中的程序块,但是软件单元B中不能够使用软件单元A中程序块了,那怕软件单元A中的程序块访问属性也被设置为“已发布”状态。有点类之间的继承关系的味道了?

⑵全局数据块

软件单元中只能访问非软件单元中的全局数据块,软件单元外的FB,FC,UDT等无法在软件单元中使用。

同时,访问全局数据块时还有一下限制条件:

数据块中不能含有任何PLC数据类型(为什么这样做?技术限制?)

非优化的数据块(前面已提及)

数组DB(为什么?)

全局故障安全数据块

⑶TO


4:软件单元必须只能在S7-1500 CPU并且CPU固件版本大于等于V2.6中使用

要想使用软件单元,那赶紧升级博途到15.1吧。


5.每个软件单元都可以有自己的组织快。

与早些版本的一个程序主循环+中断不一样,整个CPU中存在着多个主循环组织块在运行,有点AB PLC里的多任务概念了

 

简单介绍完软件单元后,大家觉得西门子推出软件单元出现的目的是什么?

1:进一步模块化的编程思想?

2:不同风格标准的程序员合作编程?(手册中提到尽可能封装好软件单元,不发布程序,保持软件单元内的程序的独立性)


欢迎大家发布自己的一些看法!

 

 

 


人生就像一场旅行!
Zane
版主

经验值:76319
发帖数:19347
精华帖:378
4楼    2019-01-15 22:34:36
精编帖  主题:回复:STEP7 V15.1中的软件单元

 问题1:一个项目中多个软件单元的执行顺序是如何决定的?与OB1的关系是什么?

Zane 注册自动化系统工程师 Always save before download
z349568117
侠士

经验值:1225
发帖数:43
精华帖:0
9楼    2019-01-17 10:51:32
精编帖  主题:回复:STEP7 V15.1中的软件单元

什么情况下用软件单元?什么情况下用原来的程序块?即使没有软件单元,也可以面向对象思想编程。不知道软件单元的用途是什么。。。


Letham
至圣

经验值:13927
发帖数:2005
精华帖:43
10楼    2019-01-17 11:33:53
精华帖  精编帖  主题:回复:STEP7 V15.1中的软件单元

咋一看,的确给人已很大的惊喜,因为软件单元,可以有自己的OB,那是不是打破了,传统的OB1+其它中断这架构?
后来仔细看文档,好像不是这么回事,各个软件单元里的主循环组织块 也是有编号的,操作系统会按照OB编号依次来调用这些主循环。所以软件单元的执行是有顺序的。

系统默认的主循环编号是OB1!

所以,如果这些软件单元里的主循环OB与OB1是同时进行扫描的,那会是突破性的。



人生就像一场旅行!
Letham
至圣

经验值:13927
发帖数:2005
精华帖:43
11楼    2019-01-17 12:33:15
精编帖  主题:回复:STEP7 V15.1中的软件单元

软件单元 具有一定的封装特性,这个里面程序可以和软件单元外的程序没有任何关联。
不使用软件单元,那么多用户编程的话,你做的程序,别人也可以引用你程序里的数据等。
使用软件单元的化,程序员可以每个人负责一些工段的编程,如果两个工段之间需要交换,那么选择性地开放某些数据块。

人生就像一场旅行!
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。