苏州必有路科技有限公司
联系人:苏先生
手机:13390886358(微信同号)
邮箱:shb@biulu.cn
官网:http://www.biulu.cn/
地址:江苏省苏州市木渎镇木东路西侧317号7幢102b
软件结构化和模块化的主要前提条件

软件的结构化和模块化意味着软件是按照一定的规则将按结构划分/功能划分的单元(即模块)进行弱耦合,PAI零件加工而这些单元或模块是完全遵循独立开发和独立测试的原则进行的。
构成软件结构化和模块化的主要前提条件是进行周密的设计和遵循相关的标准。所谓进行周密的设计就是要增加设计阶段在整个开发过程中的权重;只有在清晰定义控制程序的结构和定义模块之间的相互关系之后才着手开始程序的开发。所谓遵循相关标准的含义是,充分挖掘IEC 61131-3规范的编程语言的潜在能力,在设计和开发阶段加以利用,因为这些工控编程语言足足可以满足编程人员的绝大部分的需要。当然随着编程平台和集成开发环境的提升和进步,目前还引入了IT领域流行的语言如C、C++、JAVA、Python等作为加强及补充。
之所以特别强调设计的重要,是因为良好准确的软件设计规范强烈地影响所开发的软件的质量。一般而言,PAI零件加工软件的设计规范书对每一个编程人员的影响可以用代码的正确性和执行效率来衡量。即使是没有经验和技巧的编程人员所造成的可能的缺陷,虽然会对系统的运行产生影响,但也可以在调试中予以消减甚至消除。然而一个设计得有问题的软件规范书交给有经验的编程人员,很难找到那些不完善或者错误的分析所造成的问题,并确定问题具体表现在哪些程序段,因而很难运用编程技巧来避免和消除。总之,在软件设计阶段所产生的后果将涉及以下各个方面:调试困难和耗费时间,很低的重复使用率,软件客制化的难度加大,以及阻碍软件进一步扩展等。另外,从软件开发的成本的角度看,如果消除代码的bug所耗费的时间和成本为1,那么消除一个设计不完善的问题其耗费的时间和成本将会是10倍,甚而要把这一问题隔离开来并找到解决方法可能会再高一个数量级,也就是100倍了。
至于为什么要遵循IEC 61131-3的国际标准就不必多言了。我们需要研究的是,在开发PLC的应用程序的整个过程中,这个标准所规范的编程语言应该如何分工,各司其职,才能收到良好的效果。
SFC兼具PLC系统行为描述的作用
PLC的控制程序的开发一般可划分为三个阶段,即分析、设计和写代码。在IEC 61131-3标准中并没有规定在PLC软件开发生命周期的哪个阶段一定要使用哪种语言。我们必须自行去了解在这5种语言中哪一种最适合于支持软件开发的初始关键阶段,而哪些语言适用于写程序代码的阶段。
从结构化的完整性和表达的能力这两个准则来观察,明显可见SFC处于高端的级别,可以用作设计系统控制软件的主要工具。SFC所表达的模块化是结构性的模块化,区别于功能块图语言FBD所表达的功能性的模块化。功能性的模块化虽然重要,但在PLC控制程序的开发过程中,难以从工艺控制的完整性的视角来分析如何通过结构化来实现模块化。因为在PLC软件开发生命周期的初始关键阶段,最重要的是分析控制的构成结构,导出每个构成单元都是整个完整结构中的一个独立组成单位(也即是模块),每个独立的组成单元具有各自的功能性,但相互之间的关系却是弱耦合,而非强耦合。由此可见SFC最适合于按软件工程的方法进行分析和设计,而其它4种语言,还有SFC语言本身,都可用于写程序代码的阶段。由于结构文本化语言ST类似于C语言和Pascal语言,结构化的表达能力远胜于FBD和LD,适于对各种算法特别是复杂算法进行编程。而梯形图语言LD因为历史的原因在电气自动化控制领域已经形成为一种技术文化传承,有着很深的应用基础,所以在以SFC为主线的程序结构中适合用于动作块和转移条件的编程。如何应用,则视具体情况而定。图1给出了5种语言在PLC软件设计个阶段中所处的级别和作用。
图1 5种语言在PLC软件设计中的作用
为什么推荐采用SFC作为设计系统控制的主要工具,而其他的语言则用在控制软件代码开发阶段,主要是因为SFC适用于多状态操作运行的场景,而且特别容易表达多状态操作运行的场景。而SFC所具有的独特优势在于它能够把大型复杂的过程分解为许多较小的易于了解、便于操作的过程。具体分析如下:
1)表达控制要求的超强能力;
2)图形表达的形式方法:
3)支持初步设计;
4)支持详细设计;
5)与其它编程语言的天然连接;
6)支持软件的分段执行
01表达控制要求的超强能力
SFC顺序功能图语言有效继承了法国PLC编程语言标准Grafcet的精髓,在表达的潜力方面与状态图无异,PAI零件加工而在针对并行或并发问题上又吸收了Petri网优势。正因为状态图和Petri网被认为在建模的动态过程方面是最合适的工具,同时又被扩展到各个领域,因此SFC语言在本质上就具有对系统的行为建模的强大能力。
02图形表达的形式方法
SFC不仅是IEC 61131-3标准规范的图形化的语言,而且在与同样是标准所规范的另外两种图形化语言LD和FBD相比,在描述和表达系统的动态过程的能力方面显然居于更高的级别。进一步说,SFC语言的图形化的语法容易学习掌握和使用,也是优势之一。实际使用的经验表明,对同一个工艺要求和控制过程,不同的编程人员编制出来程序具有高度的一致性,至少是大同小异,或者完全一样,这也表明用SFC语言编制的程序可读性很强
03支持初步设计
在设计的初始阶段,当许多方面尚未清晰,或者设计人员还未深入了解之前,仍可以用SFC的图形方法进行系统行为的形式表达,因此可以说SFC在初步设计阶段就是一种有价值的工具。运用SFC能够避免在用自然语言描述系统规范时可能出现的模糊不清,这样就可以大大减少客户、设计者和编程人员之间的相互不理解的次数。
04支持详细设计
在设计的早期阶段运用SFC得出的方案,可以在取得新的信息之后逐渐深化,由概略进一步细化,尤其是与状态步关联的动作块可进一步细化,使之成为新的嵌套的SFC方案。依此方法一步步地深入,直到得到所希望的详细深度。不论是在初步设计阶段还是在详细设计阶段,这种在语义和语法上的连贯性,对编程人员来讲,采用SFC语言是很顺手的。
05与其它编程语言的天然连接
明显可见SFC非常适合于IEC 61131-3标准规范的其它编程语言组合使用,特别是在详细描述控制细节(如转移条件和基本的动作)时采用梯形图LD或ST语言,既可以收到提高整体的编程效率的效果,又可以提升可执行代码的性能。这就是所谓“在正确的时刻或正确的编程过程中视具体情况选择正确的编程语言”的结果。
06支持软件的分段执行
运用SFC语言可以简便地处理按不同的扫描执行周期将整个控制软件分割为多个程序段,这为减少最大的扫描时间提供了先决条件。应该指出,在运用SFC语言表达程序段的分割时均表现为显性,按执行条件是否满足来启动不同程序段的执行顺序,这些执行条件都是显性条件,不存在隐含条件。