控件程序员的工具箱溢出

软件编程不再需要坐在空白屏幕前输入联系人和线圈,或者输入晦涩难懂的命令和关键字,这些命令和关键字变成长串的梯子或文本。今天的工具有助于程序组织,并提供强大的命令集,使复杂的控制更容易和更快地完成。

通过Gary A. Mintchell,控制工程 二一年九月一日
关键字
  • 机控制

  • 嵌入式控制

  • 编程

  • IEC 61131

  • 控制软件

软件编程不再需要坐在空白屏幕前输入联系人和线圈,或者输入晦涩难懂的命令和关键字,这些命令和关键字变成长串的梯子或文本。今天的工具有助于程序组织,并提供强大的命令集,使复杂的控制更容易和更快地完成。许多程序编辑器现在模仿微软的Visual Studio格式,为项目提供多个窗口和工具栏、下拉菜单和可见的“树”结构。

(请参见本期“找到正确的工程工具”一文。)

在机械设计完成输入输出设备列表和简单的功能描述后,有多少机器控制的程序员还会坐在空白屏幕前,开始编写逻辑?可能太多了。

程序员必须从项目一开始就参与到过程或机器中。在这个阶段的思考必须是“自上而下”的,也就是说,必须首先理解过程或机器的总体目标是什么。随着项目的发展,越来越多的细节被添加,直到输入和输出设备以及所有通信都被定义。

实际的代码编写和实现通常是从细节到顶层把事情结合在一起。首先,映射I/O设备。然后,子系统,如控制热交换器的温度或自动化装配或加工站,被编程。子系统的协调、通信和操作员界面设计完成了项目的这一部分。

这个一般过程适用于任何控件编程。控制器可以是用IEC 61131-3语言编程的PLC,如梯形图或功能块或流程图,DCS的功能块,在梯形中添加顺序控制,或用C或c++嵌入式控制。事实上,工具的存在是为了帮助所有程序员设计和开发更好的代码。A Venture Development Corp.2001年1月的一项研究得出结论,嵌入式操作系统和软件开发工具的市场将以18.7%的复合年增长率增长,到2005年将超过26亿美元。

软件设计从自上而下的分析开始
而编程通常从细节开始。

在工具箱里

工具帮助一般的程序组织,微软的策略和软件帮助,其他的计划增加了阶梯和其他语言的能力,建模和代码生成帮助嵌入式编程。把这些当作工具箱必需品,锤子、八尖螺丝刀、钳子和活动扳手,这些都是进取的程序员可以使用的。

许多业务人员使用Microsoft Visio作为建模业务流程的工具。优雅、易于阅读的流程图可以使复杂的交互一目了然。同一建模工具构成了Entivity公司(密歇根州安娜堡)的主干。思考与行动工作室。程序员用标准流程图“语言”对流程建模,然后使用Studio工具集配置逻辑和目标硬件。然后编译器转换为机器代码。

来自Real Time Innovations (RTI, Sunnyvale, california)的ControlShell为实时编程提供了一个开发环境。类似于功能块的图形环境表示组合对象组(Composite Object group, cog),组合了事件驱动的状态机、采样数据系统和可重用接口。在流程图中,图纸变成了设计。该软件还将自动生成代码,并与来自The Mathworks (Natick, Mass.)的Simulink集成以实现仿真。ControlShell中的StethoScope可视化工具可以监视和调试,运行应用程序,性能调优和分析噪声。

Ladder中强大的功能块
图如在此运动块中所示
罗克韦尔自动化公司的RSLogix 5000制造
复杂的任务对程序员来说更容易。

建模工具有助于开发

这些来自Entivity和RTI的建模环境反映了工程师对工具的日益增长的响应,这些工具支持快速而准确的代码开发,以更快地完成项目。

在IEC 61131-3标准顺序功能图中有一个经常被忽视的组织工具。SFC通常被称为“语言”,实际上是一种用于顺序逻辑编程的强大组织工具。该工具提供了步骤和转换。步骤包含操作的逻辑,如轴移动或托盘停止。当操作完成时,转换的逻辑为真,并激活下一步。步骤和转换可以用四种IEC语言中的任何一种编程,有时甚至可以用C代码编程。图形化的特性甚至允许非程序员也能够“看到”正在执行的逻辑。

另一种图形语言是状态语言。Control Technology Corp. (Hopkinton, Mass.)是该语言的先驱,于1976年首次使用该语言。状态语言模拟控制工程师或设计人员查看机器并设计自动化程序的方式。“步骤”,类似于流程图中的块,代表设计/程序。这种类型的图形化视图的一个好处是,非程序员可以跟随图并了解发生了什么。

微软的战略旨在让开发者在应用程序中充分利用网络的力量。. net (dot net)计划包含了一个框架、一个版本的Visual Studio和一种新的编程语言c# (C sharp)。web XML(可扩展标记语言)和SOAP(简单对象访问协议)的全球标准是这些技术的基础。

. net框架支持在Internet的高度分布式环境中进行应用程序开发。框架的两个主要组件中的第一个是公共语言运行库。它为目标为。net的应用程序提供了一个代码执行环境,包括内存管理、线程管理、安全管理、代码验证和编译以及其他系统服务。框架类库构成了第二个组件。它是基于运行时的面向对象性质构建的可重用类的集合。这允许第三方组件在. net框架中无缝集成。

嵌入式软件开发工具就像这个同步目标
来自OSE Systems的调试器允许程序员完成更多的项目
快速提高质量。

利用web技术

Visual Studio . net为设计web应用程序提供了一个集成的开发环境。c#是一种新的面向对象的语言(想想c++或Java),也被设计用来帮助开发人员利用web技术。

毫无疑问,许多控制工程师将在这种新环境中开发人机界面和通信接口,因为制造商寻求利用网络来降低成本并更紧密地整合供应链。

软件组件不仅仅存在于c++、c#或Java中。西门子能源与自动化(Alpharetta, Ga.)一直致力于为IEC 61131编程开发基于组件的软件。在Simatic Step 7中,函数块和相关的数据块可以作为组件存储在库中,以便在需要时重用。多个功能块可以组合在一起,形成更高级别的功能块。这些组件功能块中的代码可以是任意一种IEC语言(梯形图、指令列表、功能块图、顺序功能图和结构化文本)。

施耐德电气自动化公司(North Andover, Mass.)软件组团队负责人Lee Ward说,施耐德开发软件的理念是,它应该在一个软件包中为用户提供他们所需的一切,以方便他们的工作。我们试图把程序员需要的所有工具都放在一个标准包里。例如,我们在编辑器中包含一个web浏览器,以便程序员可以扫描以太网/Modbus/TCP/IP网络上的所有设备。事实上,如果一个设备符合标准,我们就可以创建一个IP地址,并将其广播到设备上进行加载。”

虽然大多数控制工程师都熟悉梯形图,也称为继电器梯形逻辑,但许多人没有接受过复杂运动逻辑的培训。事实上,运动逻辑通常是基于许多晦涩的关键词的文本,很难编程,甚至更难调试。

PLC集成运动功能

罗克韦尔自动化公司(Rockwell Automation,威斯康星州密尔沃基市)产品经理鲍勃•赫辛格(Bob Hirschinger)指出,通过在梯形图中包含运动控制功能块,大型PLC程序员社区可以很快掌握它。我们使用向导和基于对话框的工具来帮助程序员设置复杂的运动配置文件。标签数据库图形编辑器允许您创建一个标签,指定和定义标签类型,并图形化显示您刚刚创建的配置文件。

自动化智能(Duluth, Ga.)软件开发人员Brian Martinicky也指出了PLC和运动编程的区别,因为越来越多的PLC程序员将运动控制纳入其中。他说:“像实时加载和卸载模块这样的功能通常被PLC程序员认为是理所当然的。“我们基于对象、事件驱动的环境允许这些和其他功能,为顺序和运动控制提供动力和灵活性。”

国家仪器公司(德州奥斯汀)LabView是一个用于数据采集、测量和工业控制的图形化编程环境。产品经理Norma Dorst解释道:“向导是I/ o设备和数据采集配置的强大工具。其他帮助程序员更快地启动和运行项目的工具是那些通过SQL、ADO和XML连接到企业数据库的工具。

仿真是定义过程和调试的强大工具(参见2001年4月)控制工程,第61页)。模拟不仅适用于机器人技术,也适用于PLC开发。欧姆龙电子(Omron Electronics)的软件产品营销专家鲁比诺(Joe Rubino)说,模拟器是开发人员高效设计、测试和调试阶梯逻辑和网络连接的最佳工具,甚至可以在物理连接建立之前进行。

Opto 22 (Temecula, california)的技术营销总监Benson Hougland指出,他们的新工具OptoScript可以为新手和高级控制程序员提供一种快速完成工作的方法。程序员可以在图形流程图中使用函数块中的语句来布局程序,也可以使用类似于basic的OptoScript以文本形式编写程序。后一种方法使程序员能够使用更复杂的数学和其他算法来实现更高级别的控制。

嵌入式控制领域的软件工具的目标与传统机器控制图形建模的设计需求相同,对象可重用,以及更快的上市时间。UML(统一建模语言)是业界用于软件项目图形化表示的标准。

顺序功能图是一种功能强大的程序组织工具
适用于IEC 61131-3编程,如Siemens Step 7屏幕所示。

统一建模语言

Steve Saunders, Rational软件的UML和语言集成副总裁。他说,我们的产品可以通过建模和自动化测试加快编码速度,从而保证质量。工具支持从文本定义、自动文档和用于团队协作的工具开始的完整生命周期。UML[统一建模语言]使用户能够图形化地对项目建模。他们用UML设计系统,指定组件,用软件将它们连接起来,设置状态机,模拟操作,获取调试反馈,然后瞄准硬件并生成代码。”

MathWorks为工程师和研究人员提供了一个图形化的环境来分析和设计连续和离散控制系统。一个新的工具是LTI(线性时不变)查看器,用户可以用它来绘制一个或几个系统的响应。SISO(单输入单输出)设计工具允许用户通过图形化调整补偿器增益、极点和零点来交互式地设计和分析补偿器,同时监控闭环响应和稳定裕度。该功能使用户能够添加和调整领先/滞后网络和缺口滤波器,使用根轨迹技术操纵闭环动态,或形成开环波德响应。在对动态流程或事件驱动流程进行建模和仿真之后,可以自动生成控制代码。

OSE Systems (San Jose, california)产品营销总监Bob Monkman指出,任何高级建模工具都有两个重要的好处。首先,它是目标环境的抽象,因此高级工具可以有一个API来访问寄存器、内存等。其次,系统浏览器可以查看基于OSE的整个分布式系统。它可以查看正在传递的消息等内容,以便在查看整个系统时发现问题。另一个工具是在开发和部署之间的测试阶段有用的脚本语言。”

对于Gershwin来说,Rhapsody可能是蓝色的,但对于I-Logix来说,它是c++或Java版本。这些基于uml的工具(c++中的Rhapsody和Java中的Rhapsody)为事件驱动和连续流程系统提供了行为建模。通过面向组件,新的工具使许多设计人员能够进行项目协作。根据高级副总裁Neeraj Chandra的说法,研究表明大多数项目都迟到了,并且超出了预算。供应商可以提供的一些最重要的工具是那些促进更快设计和实现的工具。加强项目合作是该公司打算补救这种情况的一种方式。

需求管理

Telelogic (Irvine, california)的需求计划套件提供了一种方法来确保项目符合指定的需求和标准。这是提供项目沟通、协作和通用设计标准的另一种方式。其他工具包括将代码反向工程到UML模型的能力。另一个工具通过自动化变更请求生命周期为变更管理提供可见性。

Green Hills Software (Santa Barbara, california)的调试工具EventAnalyzer提供了应用程序和实时操作系统事件的图形化视图

Artisan Software (Portland, Ore.)为UML添加了几个工具。约束图捕获了一组非功能需求和一般约束。系统架构图捕获系统上下文,即系统的边界,包括人和外部设备以及它们与系统的通信。

参加一个免费的在线程序员大学怎么样?Metrowerks (Austin, Tex.)提供了比前面讨论的更高级别的工具。CodeWarriorU.com是一所在线大学,涵盖的主题包括C/ c++和Java编程、嵌入式编程,当然,还有学习使用该公司的开发环境CodeWarrior。

NewMonics (Lisle, Ill.)为各种操作系统提供兼容java的工具。一个工具提供分析Java应用程序并自动删除未使用的代码的功能,从而减少应用程序的占用空间。另一个为开发人员提供了将Java与C/ c++代码集成的能力。普通文件传输协议(TRTP)类装入器动态装入类,而不需要网络文件系统。

Wind River Systems (Alameda, california)提供了一个运行时错误检查器,用于检测指针和内存管理错误,包括内存泄漏。一个可视化交互式分析器检测高级程序调优和优化的“热点”。

编程操作界面怎么样?QSI (Salt Lake City, Utah)在拖放环境中提供了一套对象,用于启动和运行OI项目。一些对象只是简单地“拖用”,而另一些对象是可编程的,以启用更高级的功能。

当然,这些供应商和其他供应商提供了额外的工具。这里的内容应该提高控制工程师对可用工具类型的认识。了解控制工程师工具箱中的软件类型是更快地编写更好的代码并按时完成项目的第一步。