CN112579154B - 用于工业自动化项目代码分析的系统和方法 - Google Patents

用于工业自动化项目代码分析的系统和方法 Download PDF

Info

Publication number
CN112579154B
CN112579154B CN202010885503.7A CN202010885503A CN112579154B CN 112579154 B CN112579154 B CN 112579154B CN 202010885503 A CN202010885503 A CN 202010885503A CN 112579154 B CN112579154 B CN 112579154B
Authority
CN
China
Prior art keywords
code file
rules
industrial automation
window
user
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010885503.7A
Other languages
English (en)
Other versions
CN112579154A (zh
Inventor
安德鲁·R·斯顿普
安东尼·卡拉拉
克里斯托弗·W·科莫
沙龙·比利-杜兰
马修·R·埃里克森
斯尔詹·约西波维奇
埃什沃·斯里尼瓦桑
迈克尔·D·卡兰恩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Rockwell Automation Technologies Inc
Original Assignee
Rockwell Automation Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Rockwell Automation Technologies Inc filed Critical Rockwell Automation Technologies Inc
Publication of CN112579154A publication Critical patent/CN112579154A/zh
Application granted granted Critical
Publication of CN112579154B publication Critical patent/CN112579154B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/042Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
    • G05B19/0426Programming the control sequence
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/02Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Medical Informatics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Automation & Control Theory (AREA)
  • Stored Programmes (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本公开涉及用于工业自动化项目代码分析的系统和方法。系统包括处理器和可由处理器访问的存储器。存储器存储指令,指令在由处理器执行时使处理器进行以下操作:接收工业自动化项目代码文件,其中,工业自动化项目代码文件定义工业自动化系统在工业自动化过程的执行期间的一个或更多个操作;检索与用于项目代码文件的一组最佳实践相关联的一组工业自动化规则;基于一组工业自动化规则来分析工业自动化项目代码文件,包括识别低效标签使用的一个或更多个实例以及识别一组或更多组并行交叠任务;以及基于依据一组工业自动化规则对工业自动化项目代码文件的分析来生成报告。

Description

用于工业自动化项目代码分析的系统和方法
技术领域
本公开内容的实施方式一般地涉及自动化控制和监视系统的领域。更特别地,本公开内容的实施方式涉及用于设计、监视自动化控制系统和对其进行故障排除的技术。
背景技术
本部分旨在向读者介绍可能与下面描述和/或要求保护的本技术的各个方面相关的技术的各个方面。相信该讨论有助于向读者提供背景信息,以便于更好地理解本公开内容的各个方面。因此,应当理解,这些陈述要从这个角度来理解,而不是承认为现有技术。
工业自动化系统的设计通常涉及设计者为工业自动化系统内的每个设备和/或对象编写程序代码部分。因此,甚至相对简单的工业自动化系统的设计也涉及设计者一次打开多个代码窗口,并且密切注意确保代码的各部分彼此正确地起作用。尽管设备或对象的某些组合可以被频繁地一起使用,但是当在特定工业自动化系统中使用时,设计者为每个部件编写代码,就好像它们之前从未被一起使用过一样。此外,在现有设计环境中,设计者可以自由将不兼容的对象一起使用,或在对象之间形成无效连接,而没有关于所采取的设计动作可能致使工业自动化系统不能操作的任何警告。这可能导致设计者花费大量时间来回顾候选对象或设备的先前设计和/或规格。如果出现问题,设计者要靠自己对用于工业自动化系统的程序代码进行故障排除,而没有关于问题是什么以及如何解决问题的任何指导。另外,如果设计者希望为工业自动化系统内对象或设备采用特定命名约定,则当根据约定保证有必要进行名称改变时,设计者人工更新对象或设备的名称。因此,如果设计者希望插入、移除或重新定位对象,则命名约定可能规定应相应地更新该改变的上游和/或下游的对象的名称。通常,设计者将人工地逐个更新名称。此外,如果设计者希望改变命名约定,则设计者根据新的命名约定人工地得出新的对象名称,并且然后逐个地遍历和更新名称。人工更新工业自动化系统中的对象的名称不仅耗时且乏味,而且当每个部件具有可能通过名称引用工业自动化系统中的其他部件的程序代码的相关联部分时,人工更新部件名称可能遭受人为错误。
由于这些因素,工业自动化系统的设计者是相对小、受过高度培训且经验丰富的群体。因此,客户通常雇佣承包商作为设计者来设计工业自动化系统,或者向供应商付费来设计工业自动化系统并交付程序代码供客户实现,而不是客户自己设计工业自动化系统。因此,客户可能对其所操作的工业自动化系统的设计具有有限的理解,从而使得对该工业自动化系统的修改困难且占用大量资源。此外,一旦实现了设计,所得到的工业自动化系统可以由操作者经由运行时环境来操作。然而,运行时环境可能无法在问题出现时向操作者提供对工业自动化系统进行小的调整或修改以对工业自动化系统进行故障排除的途径。替代地,可能使工业自动化系统离线,并且请工程师或设计者来诊断和解决问题。
发明内容
当设计具有现有设计软件的工业自动化系统时,设计者自由地使用彼此不兼容的对象、创建对象之间的无效连接、或以其他方式采取不符合用于设计工业自动化系统的最佳实践或内部准则的动作。如果设计者在工业自动化系统的设计期间采取不符合最佳实践或准则的多个动作,则由采取这些动作引起的问题可能直到稍后在设计过程中才出现。当违规动作堆叠在多个后续设计动作之下时,尝试稍后在设计过程中解决问题可能是耗时的,并且进行拆分和解决是有挑战性的。所公开的技术包括应用一组工业自动化系统设计规则来确定规则是否允许设计者所采取的每个动作(例如,向项目添加对象、绘制对象之间的连接等)。规则可以充当“设计护栏”,以帮助设计者更高效地设计更好的系统,从而避免花费长时间进行故障排除。在一些情况下,可以完全防止设计者采取禁止的动作,而在其他情况下,具有某些指定证书的设计者可能能够超控与给定设计动作未遵循准则有关的警告消息。
通常,设计工业自动化系统的设计者人工选择他们想要包括在系统中的部件,并定义这些部件之间的连接。因此,设计者可能花费大量时间来查阅工业自动化系统的先前设计并查阅部件的规格表,以确定给定部件在工业自动化系统中使用的适用性以及该部件与系统内的其他部件的兼容性。所公开的技术包括使用AI和/或机器学习以鉴于先前的设计和已知的部件规格来考虑设计者所采取的动作,以建议设计者可以接受或拒绝的设计动作。建议可以包括例如使用特定型号的部件、添加部件之间的连接、插入附加部件、用替换部件替换寿命终止的部件等等。当建议了动作时,设计者可以选择是接受建议还是撤消建议。在一些情况下,系统还可以向设计者提供到建议的部件的供应商或制造商的超链接或联系信息,或购买建议的部件的其他途径。
通常,当对工业自动化系统的设计进行故障排除时,工业自动化系统的设计者会被留给他们自己的设备。因此,设计者不得不开发他们自己的用于对设计进行故障排除的过程。作为结果,设计者在对设计进行故障排除时的熟练程度取决于他或她已经开发的故障排除过程,以及设计者在对各种情况进行故障排除方面的经验。所公开的技术包括使用AI和/或机器学习来分析历史数据集、识别之前何时遇到过当下问题、以及向设计者建议补救动作。例如,系统可以识别已经遇到过问题,并且使用历史数据集来识别过去何时遇到过该问题。然后,系统可以考虑在那些先前发生的事情中做了什么以补救该问题。然后,系统可以识别一个或更多个可能的补救动作以解决问题。在一些情况下,系统可以对可能的补救动作进行排名或以其他方式对其进行评估,以识别每个可能的补救动作的成功可能性。然后,系统可以向设计者建议补救动作中的一个或更多个。例如,系统可以通知设计者“上一次出现这个问题时,我们采取这个补救动作”。在一些情况下,设计者可以具有自动实现建议的补救动作、查看用于人工实现建议的补救动作的指令或撤消建议的选项。
工业自动化系统软件通常被分成设计时环境和运行时环境。设计者使用设计时环境来设计工业自动化系统并开发运行这些系统的代码。通常,工业自动化系统的设计发生在远离工业自动化系统的位置。相比之下,运行时环境由操作者在现场使用以监视工业自动化系统的操作。有时在工业自动化系统的操作期间出现仅需要小的调整(例如,重置部件、调整设定点、调整阈值等)来解决的问题。运行时环境通常不具有对工业自动化系统进行甚至小的调整的能力。因此,当问题出现时,可以停止工业自动化系统,并且设计者或工程师介入以解决可能仅需要小的调整的问题。所公开的技术包括轻工程客户端环境,轻工程客户端环境类似于运行时环境,但是包括设计时环境的一些功能,从而允许操作者对工业自动化系统进行小的调整以解决小的问题。在一些实施方式中,轻工程客户端也能够提供关于如何解决出现的问题的建议。
当设计工业自动化系统时,设计者通常为工业自动化系统中的每个对象或设备编写代码部分。尽管一组部件可能被频繁地一起使用(例如,罐、阀和泵),但是对于使用该组部件的每种情况,设计者必须编写定义部件之间的交互的新代码。这可能是乏味的且资源密集的。所公开的技术包括使用包括被编程为以已知方式彼此交互的对象的部件库。因此,设计者可以将部件从库拖动到设计窗口中,并且系统可以理解部件旨在如何彼此交互。使用来自上面的示例,用户可以将罐、阀和泵拖到设计环境中,并且系统可以自动地布置部件并且根据部件频繁地如何被实现来连接部件。库中的每个部件可以具有定义相应部件的操作的相应代码部分。基于在设计窗中如何布置和连接部件,系统然后可以生成或修改用于部件的程序代码,因此设计者无需负担为系统编写代码。
通常,如果客户或设计者希望将命名约定用于一个或更多个工业自动化系统,则人工地编辑在工业自动化系统中使用的部件和/或库中的部件的名称是设计者的责任。因此,创建新的命名约定并更新现有部件的名称以遵守该命名约定可能是耗时的。此外,一些频繁使用的命名约定可以向工业自动化系统内的部件的每个实例化赋予唯一名称。在这样的命名约定中,名称可以包括沿着工业自动化系统的流路增大或减小的字段(例如,马达_1、马达_2、马达_3等)。然而,当部件被插入到工业自动化系统中间、被从工业自动化系统中间移除、或被重新布置在工业自动化系统中间时,可能要由设计者人工调整工业自动化系统中的其他部件的名称以维持命名约定。因为这是乏味且耗时的,所以设计者可能由于进行修改所涉及的工作而选择打破命名约定或不对工业自动化系统进行修改,即使这将改进工业自动化系统的性能。所公开的技术包括使用AI和/或机器学习来学习新的命名约定并使该新的命名约定传播遍及一个或更多个工业自动化系统和/或库,以及当在系统内添加、移除或重新布置部件时自动调整部件名称以维持命名约定。
为工业自动化系统编写项目代码文件通常被外包给承包商或第三方,该承包商或第三方被付以费用以交付用于工业自动化系统的项目代码文件并且随后不参与到工业自动化系统的操作中。因此,为特定工业自动化系统创建项目代码文件的人通常不能被找到以对项目代码文件进行调整或回答关于项目代码文件的问题。因此,虽然付费以具有所生成的项目代码文件的客户可能拥有项目代码文件,但是客户可能不了解项目代码文件的结构(例如,项目代码文件的结构、项目代码文件的质量等),并且可能不具有修改项目代码文件的能力。所公开的技术包括项目代码文件分析算法,该算法可以应用于项目代码文件并生成该项目代码文件的报告。项目代码分析算法可以被配置成确定项目代码文件的结构、创建项目代码文件的可视化、识别项目代码文件内的无效代码(即,不被执行的代码)、识别项目代码文件内的死路(dead end)、识别低效标签使用、识别并行并发任务、考虑部件之间的连接的有效性、识别过载情况、计算代码的复杂性分数、确定项目代码文件是否满足接受准则等。此外,一旦已经对项目代码文件进行了分析,就可以用来自分析的数据来更新数据库。当数据库填充有来自对多个项目代码文件的分析的数据时,可以对项目代码分析算法进行调整,使得项目代码分析算法随时间而改进。
附图说明
当参照附图阅读以下详细描述时,将更好地理解本实施方式的这些和其他特征、方面和优点,在附图中,相同的符号在所有图中表示相同的部件,其中:
图1是根据本文呈现的实施方式的工业系统的示意图;
图2示出了根据本文呈现的实施方式的工业自动化环境的实施方式;
图3是根据本文呈现的实施方式的示出设计时环境、运行时环境和轻工程客户端环境彼此如何交互的控制和监视软件框架的图解表示;
图4示出了根据本文呈现的实施方式的设计时环境如何与操作系统、应用、运行时环境和轻工程客户端环境交互;
图5是根据本文呈现的实施方式的经由web浏览器可访问的或作为本机应用运行的、其中设计时环境、运行时环境和轻工程客户端环境进行操作的工业自动化软件包的仪表板的屏幕截图;
图6A是根据本文呈现的实施方式的当从垂直导航栏选择系统选项卡时图5上的仪表板的资源管理器窗口的屏幕截图;
图6B是根据本文呈现的实施方式的当从垂直导航栏202选择应用选项卡258时资源管理器窗口204的屏幕截图;
图6C是根据本文呈现的实施方式的当从垂直导航栏选择设备选项卡时资源管理器窗口的屏幕截图;
图6D是根据本文呈现的实施方式的当从垂直导航栏选择库选项卡时资源管理器窗口的屏幕截图;
图6E是根据本文呈现的实施方式的当从垂直导航栏选择扩展选项卡时资源管理器窗口的屏幕截图;
图7是根据本文呈现的实施方式的当用户开始创建新项目时的设计时环境仪表板的屏幕截图;
图8是根据本文呈现的实施方式的当用户打开现有项目时的设计时环境仪表板的屏幕截图;
图9是根据本文呈现的实施方式的当用户选择图8所示的仪表板的设备窗口内的添加设备按钮时打开的弹出窗口的屏幕截图;
图10是根据本文呈现的实施方式的示出当从垂直导航栏选择库选项卡时的各种库的仪表板的屏幕截图;
图11是根据本文呈现的实施方式的示出当选择服务提供商库选项卡时的服务提供商库的仪表板的屏幕截图;
图12是根据本文呈现的实施方式的温度传感器的详细项目视图;
图13是根据本文呈现的实施方式的示出项目内创建区域的仪表板的屏幕截图;
图14是根据本文呈现的实施方式的其中用户已经选择辊子控制对象并将其拖到设计窗口中的导辊区域中的仪表板的屏幕截图;
图15是根据本文呈现的实施方式的其中用户已经选择马达对象并将其连同辊子控制对象一起拖到设计窗口中的导辊区域中的仪表板的屏幕截图;
图16是根据本文呈现的实施方式的其中用户已经尝试将不兼容对象拖到设计窗口中的导辊区域中的仪表板的屏幕截图;
图17是根据本文呈现的实施方式的其中用户已经将辊子控制对象和两个马达对象添加到设计窗口中的导辊区域中的仪表板的屏幕截图;
图18是根据本文呈现的实施方式的其中系统已经向用户提议连接的仪表板的屏幕截图;
图19是根据本文呈现的实施方式的其中用户已经绘制无效连接的仪表板的屏幕截图;
图20是根据本文呈现的实施方式的其中用户已选择例程并将其连同辊子控制对象600一起拖到设计窗口中的导辊区域中的仪表板的屏幕截图;
图21示出了根据本文呈现的实施方式的用于定义命名约定并使该命名约定传播遍及一个或更多个项目和/或一个或更多个库的过程的流程图;
图22示出了根据本文呈现的实施方式的用于为项目内的对象的实例化生成名称的过程的流程图;
图23示出了根据本文呈现的实施方式的用于基于新对象实例化的添加来修订项目中的一个或更多个现有对象的名称的过程的流程图;
图24示出了根据本文呈现的实施方式的以逻辑视图样式示出饼干制作设施的项目的仪表板的实施方式;
图25示出了根据本文呈现的实施方式的以网络视图样式示出图24所示的饼干制作设施的项目的仪表板的实施方式;
图26示出了根据本文呈现的实施方式的以树视图样式示出图24和图25中所示的饼干制作设施的项目的仪表板的实施方式;
图27示出了根据本文呈现的实施方式的以表格视图样式示出图24至图26中所示的饼干制作设施的项目的仪表板的实施方式;
图28示出了根据本文呈现的实施方式的以逻辑视图样式示出图24至图27中所示的饼干制作设施的项目的仪表板的实施方式;
图29是根据本文呈现的实施方式的分屏视图中的仪表板的屏幕截图;
图30是根据本文呈现的实施方式的示出为现有项目创建区域的仪表板的屏幕截图;
图31是根据本文呈现的实施方式的处于标签编辑模式的仪表板的屏幕截图;
图32是根据本文呈现的实施方式的处于逻辑编辑模式的仪表板的屏幕截图;
图33是根据本文呈现的实施方式的其中系统为图24至图27的饼干制作项目建议控制器的仪表板的屏幕截图;
图34是根据本文呈现的实施方式的其中控制器建议已被接受(例如,经由用户输入)并且控制器正被添加到项目的仪表板的屏幕截图;
图35是根据本文呈现的实施方式的其中已经为包装器区域建议了附加的运动控制模块的仪表板的屏幕截图;
图36是根据本文呈现的实施方式的显示寿命终止通知的仪表板的屏幕截图;
图37是根据本文呈现的实施方式的示出断开的部件和新的未配置部件的仪表板的屏幕截图;
图38示出了根据本文呈现的实施方式的在打包器区域中代替旧的CLX控制器的新的替换CLX控制器;
图39是根据本文呈现的实施方式的示出多个人同时编辑累加器例程的仪表板的屏幕截图;
图40是根据本文呈现的实施方式的示出用户向彼此发送消息的仪表板的屏幕截图;
图41是根据本文呈现的实施方式的其中已经关于用户将如何解决冲突向用户提示的仪表板的屏幕截图;
图42是根据本文呈现的实施方式的显示三个实体模型的仪表板的屏幕截图;
图43示出了根据本文呈现的实施方式的用于分析项目代码文件的过程的流程图;
图44是根据本文呈现的实施方式的显示警报通知和警报弹出窗口的仪表板的屏幕截图;
图45是根据本文呈现的实施方式的显示警报概要屏幕的仪表板的屏幕截图;
图46示出了根据本文呈现的实施方式的在HMI上显示的轻工程客户端仪表板的主屏幕;
图47是根据本文呈现的实施方式的当已经选择了警报选项卡时的轻工程客户端仪表板的屏幕截图;以及
图48是根据本文呈现的实施方式的当资源管理器窗口和连接的设备窗口已经被最小化时的轻工程客户端仪表板的屏幕截图。
具体实施方式
下面将描述一个或更多个具体实施方式。为了提供这些实施方式的简明描述,在说明书中没有描述实际实现方式的所有特征。应当理解,在任何这样的实际实现方式的开发中,如在任何工程或设计项目中,必须做出许多实现方式特定的决定以实现开发者的特定目标,例如符合系统相关和商业相关的约束,这些约束可能随着实现方式不同而变化。此外,应当理解,这样的开发努力可能是复杂且耗时的,但对于受益于本公开内容的普通技术人员而言,这样的开发努力仍然是设计、制作和制造的例行任务。
当介绍本公开内容的各个实施方式的元素时,冠词“一”、“一个”、“该”和“所述”旨在表示存在一个或更多个元素。术语“包括”、“包含”和“具有”旨在是包括性的,并且表示除了所列出的元素之外还可以存在附加的元素。
图1是工业系统10的示意图,其可以例如在工作站、台式计算机、膝上型计算机、平板电脑、智能电话、人机接口(HMI)、一些其他移动设备或任何其他计算设备上可见的图形用户接口(GUI)例如仪表板中显示。工业系统10可以是工业自动化环境(例如汽车制造设施、食品加工设施、钻探操作、半导体或微处理器制造设施或一些其他类型的工业设施)的一部分。如图所示,工业系统10可以包括一个或更多个子系统12、14、16、18或区域,它们可以协同工作以执行一个或更多个工业过程。例如,在食品加工应用中,第一子系统12可以是混合系统,第二子系统14可以是烤箱或加热系统,第三子系统16可以是打包系统,以及第四子系统18可以是包装系统。
如图所示,每个子系统可以包括被称为模块的部件的一个或更多个组合。例如,图1所示的第一工业子系统12包括工业控制器20、驱动22、马达24、输入/输出(I/O)设备26、运动控制系统28和HMI 30。图1所示的第二工业子系统14包括工业控制器20、温度传感器32、I/O设备26和HMI 30。图1所示的第三工业子系统16包括工业控制器20、工业管理的以太网交换机34、驱动22、马达24、温度传感器32、运动控制系统28和HMI 30。图1所示的第四工业子系统18包括工业控制器20、I/O设备26、运动控制系统28、三个马达24和HMI 30。然而,应当理解,图1所示的部件的特定组合仅仅是示例,并且可以设想部件的许多其他组合。此外,应该理解,可能的工业自动化部件的范围不意在限于图1所示的那些工业自动化部件。例如,其他工业自动化部件可包括泵、致动器、过滤器、机器人、钻孔机、研磨机、打印机、制造机械、酿造锅、材料和/或资源储备等。
工业系统10的示意图可以在计算设备(例如,HMI、编程终端、台式计算机、平板电脑、移动设备、智能电话等)的显示器上的仪表板内向用户显示,该计算设备可以允许用户设计、配置、修改、监视工业系统10或工业系统10的工业子系统12、14、16、18中的一个或更多个工业子系统以及/或者对其进行故障排除。图2示出了工业自动化环境50的实施方式。工业自动化环境50提供可以用来设计、配置、修改、监视工业系统10和/或对其进行故障排除的工业自动化环境50的示例,但是也可以设想其他环境。工业自动化环境50包括一个或更多个计算设备52、工业系统10、数据库54和应用集成平台56。计算设备可以配备有允许用户设计和/或配置工业系统10的方面、在操作期间监视工业系统10、以及在工业系统10遇到问题时对工业系统10进行故障排除的软件。
工业系统10可以被配置成运行过程58。例如,过程58可以包括压缩机站、炼油厂、用于制作食物项的批操作、机械化装配线等。相应地,过程58可以包括各种操作部件,例如电动马达、阀、致动器、传感器或大量制造、加工、材料处理和其他应用。此外,过程58可以包括用于通过自动化和/或观察来调节过程变量的控制和监视设备(例如,工业控制器20)。控制/监视设备20可以包括例如自动化控制器、可编程逻辑控制器(PLC)、可编程自动化控制器(PAC)或用于自动化控制的任何其他控制器。所示的过程58可以包括一个或更多个传感器60和/或一个或更多个致动器62。传感器60可以包括适于提供关于过程条件的信息的任何数目的设备,例如温度传感器、压力传感器、位置传感器、运动传感器、加速计、流量传感器、化学传感器等。类似地,致动器62可以包括适于响应于输入信号执行机械动作的任何数目的设备(例如,线性马达、伺服机构、电动马达、泵等)。
如图所示,传感器60和致动器62与控制/监视设备20(例如,工业自动化控制器)通信,并且可以被分配计算设备52经由应用集成平台56和数据库54可访问的控制/监视设备20中的特定地址。在一些实施方式中,传感器60和致动器62可以经由控制/监视设备20与计算设备(例如,HMI)中的一个或更多个计算设备通信,以操作与过程58相关联的设备。实际上,可以在由控制/监视设备20和/或计算设备52(例如HMI)中的一个或更多个计算设备来监视和控制的过程循环内使用传感器60和致动器62。这样的过程循环可以基于过程输入(例如,来自传感器60的输入)或直接输入(例如,通过计算设备52接收的操作者输入)被激活。
控制/监视设备20和数据库54可以经由通信链路64通信,数据库54和应用集成平台56可以经由通信链路64通信,并且应用集成平台56和计算设备52可以经由通信链路64通信。注意,如关于图1所示和所述,可以存在多个过程58、多个控制/监视设备20以及工业系统10中的比图2所示的更多的传感器60和致动器62,但是为了清楚已经减少了工业系统10内的部件的数目。类似地,应当理解,工业系统10可以是汽车制造工厂、食品加工厂、石油钻探操作、微处理器制造设施或一些其他类型的工业企业的一部分。此外,工业系统10可以包括驱动、泵、过滤器、钻孔机、马达、机器人、制造机械、研磨机、打印机、酿造锅或任何其他件工业自动化设备。
当过程58操作时,传感器60和致动器62随着时间获取/产生操作数据,使得操作数据被提供给控制/监视设备20。操作数据指示传感器60和致动器62的当前状态,例如参数、压力、温度、速度、能量使用、操作设备有效性(OEE)、平均故障间隔时间(MTBF)、平均修复时间(MTTR)、电压、吞吐量、时间、罐物位或任何其他性能状态度量。在一些实施方式中,操作数据可以包括动态图表或趋势、实时视频或一些其他图形内容。控制/监视设备20能够通过通信链路64——通常经由构成通信网络的通信链路64——将操作数据传送到数据库54、应用集成平台56和/或计算设备52。数据库54可以存储在本地部署的一个或更多个存储设备上、远程服务器上或云(例如,公共云、私有云等)中。因此,数据库54可以驻留在单个设备中,或者可以分布在多个存储设备之中。
应用集成平台56可以包括处理系统、通信收发器、路由器、服务器、数据存储系统及电源,或其一些组合。与数据库54一样,应用集成平台56可以驻留在单个设备中,或者可以分布在多个设备上。应用集成平台56可以是离散系统,或者可以集成在其他系统中,包括工业自动化环境50中的其他系统。在一些示例中,应用集成平台56可以包括由罗克韦尔自动化有限公司(Rockwell Automation,Inc)提供的FACTORYTALK VANTAGEPOINT服务器系统。
过程58、传感器60、致动器62、控制/监视设备20、数据库54、应用集成平台56和计算设备52之间借以交换数据的通信链路64可以利用金属、空气、空间、诸如玻璃或塑料的光纤或一些其他材料及其组合作为传输介质。此外,通信链路64可以包括一个或更多个网络元素,例如路由器、网关、电信交换机、服务器、处理系统或用于提供通信和数据服务的其他通信设备和系统。这些通信链路64可以使用各种通信协议,例如时分复用(TDM)、因特网协议(IP)、以太网、电话、光联网、分组网络、无线网状网络(WMN)、局域网(LAN)、城域网(MAN)、广域网(WAN)、混合光纤同轴电缆(HFC)、通信信令、无线协议、通信信令、通过蓝牙的对等联网、蓝牙低能量、Wi-Fi直连、近场通信(NFC)或一些其他通信格式及其组合。通信链路64可以是直接链路,或者可以包括中间网络、系统或设备。
计算设备52可以表示在其上可以适当地实现所公开的用于设计、配置、修改、监视工业自动化系统10和/或对其进行故障排除的技术的任何计算装置、或者一个或更多个系统。在一些实现方式中,提供的计算设备52可以用作服务器或客户端设备,但是这样的设备可以具有替选配置。计算设备52可以包括例如移动计算设备,例如蜂窝电话、平板计算机、膝上型计算机、笔记本计算机和游戏设备以及任何其他类型的移动计算设备及其任何组合或变型,无论其是否是为工业自动化应用(例如HMI)专门设计的。计算设备52还可以包括台式计算机、服务器计算机和虚拟机以及任何其他类型的计算系统、变型或其组合。在一些实现方式中,计算设备52可以包括能够以类似服务器的方式操作的移动设备,除了其他用途之外该移动设备可以在无线网状网络中被利用。
如图2所示,每个计算设备52包括处理器66、存储设备68、软件70、通信接口72、用户接口74和显示器76,显示器可以与用户接口74(例如,触摸屏,其也经由在其表面上的触摸接受用户输入)组合或不组合。处理器66通信地耦接至存储设备68、通信接口72、用户接口74和显示器76。处理器66从存储设备68加载并执行软件70。处理器66可以在单个处理设备内被实现,但是也可以分布在执行程序指令时协作的多个处理设备或子系统上。处理器66的示例包括通用中央处理单元、专用处理器和逻辑设备,以及任何其他类型的处理设备、其组合或变型。
存储设备68可以包括能够存储软件70并且可由处理器66读取的任何计算机可读存储介质。存储设备68可以包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移除和不可移除介质。存储设备68可以被实现为单个存储设备,但是也可以被跨相对于彼此协同定位或分布的多个存储设备或子系统来实现。存储设备68可以包括附加的元素,例如控制器,其能够与处理器66通信。存储介质的示例包括随机存取存储器、只读存储器、磁盘、光盘、闪存、虚拟存储器和非虚拟存储器、磁带盒、磁带、磁盘存储装置或其他磁存储设备、或可以用于存储期望信息并可以由指令执行系统访问的任何其他介质、以及其任何组合或变型、或任何其他类型的存储介质。
在操作中,结合用户接口74和显示器76,处理器加载并执行软件70的部分以呈现用于一个或更多个应用80的图形用户接口以供显示器76显示。软件70可以以程序指令来实现,并且除了其他功能之外,当由处理器66执行时,还使与工业自动化系统相关联的HMI显示表示一个或更多个工业设备的多个图形元素。软件70可以包括例如操作系统78和一个或更多个应用80。例如,计算设备52可以包括用于设计、配置、修改、监视工业系统10和/或对工业系统10进行故障排除的一个或更多个应用80。操作系统的示例包括Windows、iOS和Android以及任何其他合适的操作系统。软件70还可以包括可由处理器66执行的固件或一些其他形式的机器可读处理指令(例如,非暂态)。通常,软件70可以在被加载到处理器66中并被执行时将计算设备52从通用计算设备变换成被定制成便于设计、配置、修改、监视工业自动化系统10和/或对工业自动化系统10进行故障排除的专用计算系统。例如,存储设备68上的编码软件70可以变换存储设备68的存储介质的物理结构。物理结构的具体变换可以取决于本说明书的不同实现方式中的各种因素。这样的因素的示例可以包括但不限于用于实现存储设备的存储介质的技术以及计算机存储介质被表征为主存储装置还是辅助存储装置。
在一些示例中,如果计算机存储介质被实现为基于半导体的存储器,则当程序被编码在其中时,软件70可以变换半导体存储器的物理状态。例如,软件70可以变换构成半导体存储器的晶体管、电容器或其他分立电路元素的状态。对于磁介质或光介质,可以发生类似的变换。在不脱离本说明书的范围的情况下,物理介质的其他变换是可能的,其中提供前述示例仅用于便于本讨论。
应当理解,计算设备52一般旨在表示这样的计算系统:利用该计算系统来部署和执行软件70以便实现用于设计、配置、修改、监视工业自动化系统10和/或对进行工业自动化系统10进行故障排除的应用80。此外,可以在一个或更多个计算设备52上运行应用集成平台56,并且计算设备52可以存储和保持数据库52。然而,计算系统52还可以表示任何以下计算系统:可以在该计算系统上运行软件70,并且可以从该计算系统将软件70分发、传输、下载或以其他方式提供给又一计算设备52以用于部署和执行,或者进行又一附加分发。例如,计算设备52可以被配置成例如在基于云的部署场景中通过因特网将软件70部署到一个或更多个客户端计算系统以在其上执行。
通信接口72可以包括通信连接和设备,其允许通过通信网络或网络集合在计算设备52或服务之间进行通信。在一些实现方式中,通信接口72经由一个或更多个通信链路64通过通信网络接收动态数据。一起允许系统间通信的连接和设备的示例可以包括网络接口卡、天线、功率放大器、RF电路、收发器和其他通信电路等。
可以包括或不包括显示器76的用户接口74可以包括语音输入设备、用于从用户接收姿态的触摸输入设备、用于检测用户的非触摸姿势和其他运动的运动输入设备、以及能够从用户接收用户输入的其他类似的输入设备和相关联的处理元素。诸如显示器76、扬声器、触觉设备和其他类型的输出设备的输出设备也可以被包括在用户接口74中。用户接口74也可以包括可由处理器66执行的相关联的用户接口软件,以支持上述各种用户输入和输出设备。用户接口软件和设备可以单独地或彼此结合地以及与其他硬件和软件元素结合地提供图形用户接口、自然用户接口或任何其他种类的用户接口。在一些实现方式中,可以省略用户接口74。按照这种方式,计算设备52还可以包括为了简洁起见而未在此讨论的附加设备、特征或功能。
设计时、运行时和轻工程客户端环境
计算设备52可以包括使得用户能够设计、配置、修改、监视工业自动化系统10和/或对工业自动化系统10进行故障排除的应用80。计算设备52可以运行(例如,执行)单个应用80或多个应用80,其提供用于设计、配置、修改工业自动化系统10和对工业自动化系统10作出大的改变的设计时环境,用于监视工业自动化系统10内的一个或更多个部件的操作的运行时环境,以及用于对工业自动化系统10进行故障排除或以其他方式对工业自动化系统10作出小的改变(例如,相对于在设计时环境中作出的改变)的轻工程客户端环境。图3是控制和监视软件框架100的图解表示,其示出了设计时环境、运行时环境和轻工程客户端环境如何彼此交互。
框架50包括三个相互关联的软件环境,它们可以驻留在单个系统(例如计算设备)上,或者分布在多个计算设备之中。具体地,设计时环境102允许设计者(例如,人类用户)设计、配置和修改工业自动化系统。运行时环境104使得操作者(例如,人类用户)能够在运行时期间(例如,在对接口的使用期间,通常在与操作中的过程交互或遵守操作中的过程期间)与应用例如过程进行交互。例如,可以经由运行时环境104在显示器(例如,计算设备或接口设备屏幕)上向操作者以运行时信息图形化地表示工业自动化系统。轻工程客户端106使得当在操作期间遇到问题或者操作者希望在不转变到设计时环境102的情况下对系统进行调整时,操作者能够对操作中的过程进行故障排除和/或进行有限的调整。环境如下所述以创新的方式交互以经由计算设备提供极大增强的编程,使得计算设备本身的操作更高效。
运行时环境104包括或提供对对象108的访问。对象108是软件部件,其可以包括软件环境中的任何可访问或可配置元素。例如,对象108可以包括由运行时环境104管理的软件部件。因此,应当理解,“对象”可以包括可以作为准独立元素运行的任何部件或自给自足的程序。对象通常包括四个特征:属性、方法、连接(或连接点)和通信接口。在该上下文中,属性是可以被调整以例如限定屏幕视图中元素的图像或表示以及其在屏幕上的位置等的性质。在该上下文中,方法是可执行功能(有时在本文中被称为元素的“功能”或“状态引擎”),并且限定了通过对元素的执行而执行的操作。在该上下文中,连接是元素之间的链接,并且可以用于使数据(从存储器读取或写入存储器)被发送到另一元素。
对象108的具体示例可以包括软件按钮、定时器、量计、PLC通信服务器、可视化(例如示出自动化控制和监视系统内的部件的状态的屏幕)以及应用。通常,实际上任何可识别的功能都可以被配置为这样的元素。例如,这样的元素可以包括控制器、输入/输出(I/O)模块、马达控制中心、马达、人机接口(HMI)、操作者接口、接触器、起动器、传感器、驱动、继电器、保护设备、开关设备、压缩机、网络交换机(例如,以太网交换机、模块化管理的、固定管理的、服务路由器、工业的、非管理的等)、扫描仪、量计、阀、流量计等。此外,如下所述,这样的元素可以彼此通信以执行广泛的显示、监视操作和控制功能。应当注意,对象108不需要用于支持设计模式的特殊限制。而且,虽然与图像相关联的元素是相当有用的,尤其是对于可视化而言,但是许多元素可能不具有视觉表示,但是可以执行HMI或其他计算设备内的功能,例如计算,或者甚至其他元素之间的管理和数据交换。
运行时环境104通常使用适于将对象108互联的通信子系统110来操作。实际上,通信子系统110可以被认为包括对象108的连接。然而,通信子系统110可以包括向外部电路发送数据和从外部电路接收数据的一系列软件、硬件和固件,其中外部电路例如为自动化控制器、其他计算机、网络、卫星、传感器、致动器等。
运行时环境104通常使用行为子系统112来操作,行为子系统适于管理对象108的行为。例如,行为子系统112的职责可以包括放置和移动对象、修改对象、在可互换屏幕上对对象进行分组、保存和恢复屏幕布局、管理安全性、保存和恢复连接列表、以及提供对运行时环境104的远程访问。这样的行为可以被定义为每个对象的简档(即,“方法”或“状态引擎”)的一部分。
设计时环境102包括行为子系统112的高级实现,其有助于对运行时环境104的直接或间接操纵,而不会阻碍或损害运行时环境104的行为。也就是说,可以在接口正在操作时进行对于对象108的设计和重新配置。在一些实例中,行为子系统112可以经由例如在传统浏览器或在计算设备上运行的应用中对设计时环境102的远程提供来扩展对运行时环境104的访问。行为子系统112允许设计者通过以下操作经由单独的计算设备(例如,远程编程终端)来与HMI的运行时环境104的方面进行交互和对HMI的运行时环境104的方面进行改变:从HMI将设计时环境102或其方面提供给编程终端。例如,经由有线或无线网络连接通信地耦接至膝上型计算机的HMI可以通过经由网络向膝上型计算机提供特定设计时环境102来向用户提供配置能力。
通过促进对对象108的改变,设计时环境102允许设计者完成行为子系统112的可互换的设计时模型或专用实现。行为子系统112的设计时实现的具体示例包括基于Web或基于应用的设计时环境102,其经由HMI与远程设备之间的有线或无线连接扩展对HMI或其他计算设备上的运行时环境104的访问。基于web或基于应用的设计时环境102有助于在不损害运行时性能或安全性的情况下对对象的管理。在一个实现方式中,行为子系统112赋予设计者使用能够访问相关接口或HMI的Web浏览器或应用来操纵运行时环境104的方面的能力。
如下面更详细描述的,轻工程客户端环境106可以使设计时环境102的方面进入与设计时环境相比与运行时环境104有更多共同点的环境。如前所述,设计时环境102主要由设计者用来设计、配置和/或修改工业自动化系统。在工业自动化系统被配置之后,设计者可能会继续进行其他项目。相比之下,运行时环境104主要由操作者在工业自动化环境内使用以在过程运行时监视工业自动化系统。使用设计时环境102可能涉及计算机代码的编写和/或操纵,这可能在很大程度上不存在于运行时环境104。这样,设计时环境102和运行时环境104可以是为具有不同技能组和不同能力的不同用户来设计的。然而,如果在工业自动化系统10的操作期间出现相对易于解决的问题,则停止工业自动化系统10的操作、退出运行时环境104并且让设计者或工程师用设计时环境102来诊断该问题并且解决该问题可能不是对资源的有效使用。因此,如果问题出现,则操作者可以使用轻工程客户端环境106来排除问题的故障、尝试诊断问题以及使用轻工程客户端环境106的更有限的设计能力来解决问题并以最小停机时间恢复操作。如果操作者不能经由轻工程客户端环境106解决问题,则可以引入设计者、工程师或服务技术员以经由设计时环境104等诊断和解决问题。
图4在高层次表示设计时环境102如何与操作系统78、应用80、运行时环境104和轻工程客户端环境106交互。箭头150表示HMI 154(即,第一计算设备52)与编程终端152(即,第二计算设备52)之间的内容的动态交换。如上所述,与设计时环境102的交互一般是最初配置工业自动化系统的设计者156的任务。运行时环境102和轻工程客户端环境106通常由操作者158经由HMI 154或工业自动化环境内的一些其他计算设备52直接与之交互。应注意,虽然设计时环境102根据某些参数操作,但是在当前实施方式中,参数可以取决于操作系统78、应用80、运行时环境104和轻工程客户端环境106。设计时环境102、运行时环境104和轻工程客户端环境106可以利用某些基础技术(例如,DHTML、HTML、HTTP、动态服务器内容、JavaScript、Web浏览器)来分别操作。虽然在所示实施方式中,设计时环境102驻留在与运行时环境102和轻工程客户端环境106分离的平台上,但是在一些实施方式中,它们可以驻留在同一平台上。例如,设计时平台、运行时平台和轻工程客户端平台可以被配置成或被视为单个平台。
设计时环境仪表板
图5是可经由web浏览器访问或作为本机应用运行的、在其中设计时、运行时和轻工程客户端环境进行操作(例如,运行)的工业自动化软件包的仪表板200的屏幕截图。仪表板200包括垂直导航栏202、资源管理器窗口204、主窗口206以及一个或更多个附件窗口208。如图所示,垂直导航栏202包括系统选项卡、编辑器选项卡、设备选项卡、库选项卡、监视器选项卡和扩展选项卡,它们可以与垂直导航栏202的其他选项卡分开显示。尽管在图5中未示出,但在一些实施方式中,垂直导航栏202可以包括应用选项卡。尽管仪表板200的其他方面可以随着垂直导航栏202内的不同选项卡被选择而改变,但是垂直导航栏202在仪表板200的使用期间保持基本上不变。如以下关于图6更详细地描述的,当选择垂直导航栏202内的各种选项卡时,在资源管理器窗口204内描绘的可视化改变。
在主窗口206内显示的信息取决于选择了沿主窗口206的顶边缘延伸的多个选项卡210中的哪个选项卡以及在资源管理器窗口204内的选择。如图5所示,跨主窗口206的顶部的选项卡可以包括例如所选例程、标签、与所选例程相关联的面板、通用信息、控制策略等。附件窗口208可以由用户配置以显示其他相关信息,例如所选部件、项目库、工具箱、一个或更多个外部库等的属性。
图6A至图6E示出了对垂直导航栏202内的选项卡的选择如何控制在资源管理器窗口204内显示什么。图6A是当从垂直导航栏202选择系统选项卡250时资源管理器窗口204的屏幕截图。如图所示,当从垂直导航栏202选择系统选项卡250时,资源管理器窗口204显示系统资源管理器选项卡252和视图资源管理器选项卡25。当选择系统资源管理器选项卡252时,资源管理器窗口204显示所选系统或子系统内的部件的列表256。如图所示,部件的列表256可以基于来自用户的输入选择性地折叠和展开。当展开所选部件或子部件时,资源管理器窗口204可以显示针对以下的可选选项:由所选部件执行的程序、进程或例程,与所选部件相关联的标签,与所选部件相关联的代码部分,与所选部件相关联的文档,所选部件的子部件,与其他部件的关系和/或相关性等。当在资源管理器窗口204内选择了项时,仪表板的主窗口可以被更新以显示与所选项相关联的数据。虽然在图6A中未示出,但当选择了视图资源管理器选项卡254时,资源管理器窗口204被更新以显示针对资源管理器窗口204中所示的部件的各种替选视图的选项。
图6B是当从垂直导航栏202中选择应用选项卡258时资源管理器窗口204的屏幕截图。如图所示,当选择应用选项卡258时,资源管理器窗口204显示控制器选项卡260和HMI选项卡262。当选择控制器选项卡260时,资源管理器窗口204显示所选系统或子系统内的控制器的列表264。如图所示,列表264内的每个控制器可以基于来自用户的输入而被选择性地折叠和展开。当将所选控制器展开时,资源管理器窗口204可以显示与所选控制器相关联的选项卡、控制器故障处理机、控制器上电处理机、由控制器执行的任务、时间段、警报、程序和/或例程、与所选任务相关联的标签和/或参数、相关文档记录等。当在资源管理器窗口204内选择了项时,仪表板的主窗口可以被更新以显示与所选项相关联的数据。尽管图6B中未示出,但当选择HMI选项卡262时,资源管理器窗口204被更新以为系统内的各种HMI显示类似信息。
图6C是当从垂直导航栏202选择设备选项卡266时资源管理器窗口的屏幕截图。如图所示,当选择了设备选项卡266时,资源管理器窗口204显示已经被添加到所选系统或子系统的设备的列表268。部件的列表268可以基于来自用户的输入选择性地折叠和展开。如图所示,可以首先对设备(例如,所有设备、测试设备、仿真设备等)进行分类,然后将其进一步分类成多个子类别(例如,控制器、驱动、MCC等)。
图6D是当从垂直导航栏202选择库选项卡270时资源管理器窗口204的屏幕截图。如图所示,当选择了库选项卡270时,资源管理器窗口204显示用于各种连接的库的选项卡。例如,在图6D所示的实施方式中,选项卡包括项目库选项卡272、服务提供商库选项卡274和外部库选项卡276。当选择了每个选项卡时,资源管理器窗口204显示所选库内的各种可用部件的列表278。在一些实施方式中,如图6D所示,可以按类别对库中的部件进行分组。在图6D所示的实施方式中,项目库可以是已被批准在所讨论的项目中使用的部件的库。服务提供商库可以包括已经由服务提供商配置的部件,并且可以与当下项目兼容。外部库可以由第三方来填充,并且可以包括已经被配置用于特定目的部件,因此与特定的其他部件兼容等。
图6E是当从垂直导航栏202选择扩展选项卡280时资源管理器窗口的屏幕截图。如图所示,当选择了扩展选项卡280时,资源管理器窗口204显示可以在项目期间添加和/或利用的可用扩展的列表282。
在设计时环境中创建新项目和编辑现有项目
图7是当用户开始创建新项目时设计时环境仪表板200的屏幕截图。在当下实施方式中,用户已经创建了被称为“ACME系统项目”(“ACME System Project”)的新项目,并且已经从垂直导航栏202中选择了系统选项卡250。如图7所示,仪表板200包括开始窗口300、系统状态窗口302、设备窗口304、库窗口306和团队窗口308。
开始窗口300向用户提供增建项目的快捷方式。在图7所示的实施方式中,开始窗口300包括建立系统按钮310和导入管道和仪器图(P&ID)按钮312。当选择了建立系统按钮310时,仪表板200可以指导用户完成项目的基本布局以及对要添加到系统的一个或更多个部件的选择。当选择了导入P&ID按钮312时,仪表板200可以打开资源管理器窗口,该资源管理器窗口允许用户定位要导入的P&ID文件。然后,导入的P&ID可以提供用于新项目的框架。
系统状态窗口302显示系统的一个或更多个系统状态指示器。因为项目是新的并且还没有任何部件,所以系统状态窗口302不显示系统状态。类似地,因为项目是新的并且没有设备或库已经被添加到项目,所以设备窗口304和库窗口306分别不显示任何设备或库。设备窗口304显示添加设备按钮314,当其被选择时,其允许用户选择要添加到项目的设备。类似地,库窗口306显示添加库按钮316,当其被选择时,其允许用户选择一个或更多个要添加到项目的库。
团队窗口308有助于从事于项目的团队成员之间的通信。如图所示,团队窗口308包括消息选项卡318、活动选项卡320和成员选项卡322。在团队窗口308中显示的信息通过选择了哪个选项卡来控制。在图7所示的屏幕截图中,已经选择了成员选项卡322。当选择了成员选项卡322时,团队窗口308显示可访问该项目的团队成员。因为项目是新的,所以团队成员的列表仅包括单个用户简档。然而,用户可以选择添加团队成员按钮324以向团队添加其他用户。选择消息选项卡318使得团队窗口308显示在团队成员之间发送的消息。选择活动选项卡320使得团队窗口308显示项目内团队成员的最近活动。
尽管图7示出了用于新项目的创建的仪表板200,但在许多情况下,用户将打开现有项目而不是打开新项目。图8是当用户打开现有项目时设计时环境仪表板200的屏幕截图。应当注意,图8中仪表板200的窗口中的一些与图7中所示仪表板200的窗口不同。差异中的一些可归因于:图7中的仪表板显示新项目,而图8中的仪表板显示现有项目。然而,窗口中的一些差异可归因于仪表板200可由用户定制。例如,图8所示的仪表板200包括编辑此页面按钮350,当其被选择时,其允许用户控制哪些窗口显示在仪表板200上以及如何布置所选择的窗口。
除了关于图7所示和所述的设备窗口304、库窗口306和团队窗口308之外,图8所示的仪表板200还包括最近项窗口352和项目区域概要窗口354。最近项窗口352显示最近查看的项的列表。从最近项窗口352中选择项可以在新窗口中打开该项,从而允许用户返回到编辑所选项。项目区域概要窗口354显示项目的各个区域,其可以是可扩展的,以显示区域内的子区域和模块。每个项目可以被分成多个区域,其可以对应于项目内的不同过程。在图8所示的实施方式中,项目是包括三个区域的化学处理项目:提取、发酵、蒸馏。每个区域可以或可以不进一步细分为一个或更多个子区域。另外,每个区域可以包括一组或更多组部件(被称为模块),它们协同行动以执行一些动作或动作集。如图8所示,项目区域窗口显示每个区域内的子区域的数目以及每个区域内的模块的数目。与图7所示的开始窗口300一样,项目区域概要窗口354包括建立系统按钮310和导入P&ID按钮312。
设备窗口304显示项目内设备的可滚动列表。每个设备列表可以包括赋予设备的名称、型号名称、状态等等。如图所示,设备窗口304的顶部可以显示项目内设备的总数目,以及添加设备按钮314,其允许用户向项目添加设备。对设备窗口304内设备的选择可以显示关于所选设备的更详细信息。
库窗口306显示已经导入或以其他方式链接到项目的一个或更多个部件库。例如,库可以包括由客户为项目创建的库、由服务提供商创建的公共和/或专用库、以及由第三方创建的公共和/或专用库。添加库按钮316允许用户将库添加到项目。对库窗口306内的库的选择可以显示关于所选库的更详细的信息。
在图8所示的实施方式中,在团队窗口308内选择了消息选项卡318。消息选项卡318包括指示未读消息的数目的数字。类似的功能可以用于活动选项卡320(例如,反映新活动的通知的数目)以及用于成员选项卡322(例如,反映针对成员的通知或添加新成员的请求的数目)。因为已经选择了消息选项卡318,所以团队窗口308显示来自名为简多伊(JaneDoe)的用户请求对新对象的检查/反馈的消息。
图9是当用户选择图8所示的仪表板200的设备窗口304内的添加设备按钮314时打开的弹出窗口400的屏幕截图。在当下实施方式中,用户已经标识了被称为“乙醇_工厂(Ethanol_Plant)”的文件,因此弹出窗口400已经被所标识的文件中引用的各种部件填充。在弹出窗口400内,在所标识的文件中引用的每个部件被给予一行。然后为与所标识的文件内的数据相关联的字段生成列。例如,在图9所示的实施方式中,列包括关于标签、设备类型、型号、远程I/O机架标签、信道、控制器、任务、HMI服务器、HMI屏幕等的数据。从图9所示的弹出窗口400,用户可以选择一个或更多个设备来导入,或者导入所有设备。在导入设备之后,设备可以是库的一部分。类似的过程可用于将库添加到项目。
图10是当从垂直导航栏202选择库选项卡270时示出各种库的仪表板200的屏幕截图。如图所示,项目库、服务提供商库(例如,“罗克韦尔产品库”(“Rockwell ProductLibrary”))和客户过程库(例如,“ACME过程库”(“ACME Process Library”))出现在资源管理器窗口204中。在资源管理器窗口204中选择一个库后,所选库被显示在主窗口206中。如图10所示,主窗口206还可以包括允许用户在各个可用库之间切换的一行选项卡(例如,项目库选项卡450、服务提供商选项卡452和客户过程库选项卡454)。在图10所示的实施方式中,已经选择了项目库并且其正被显示在主窗口206中。随着项目(project)的进行,团队成员可以对项(item)的库进行填充,该项的库可以在主窗口206中呈现为可折叠/可展开列表。这些项可以包括例如硬件(例如,控制器、致动器、阀、泵、搅拌器、加热器、传感器等)、定义、例程、程序、指令、计算、警报等。
在当下实施方式中,按照定义、添加指令(add on instruction,AOI)、添加图形(add on graphics,AOG)和用户定义的数据类型(user-defined data type,UDT)来对库进行分组。当用户浏览库并选择了项时,主窗口206可以更新以显示关于所选项的更多信息。然而,应当理解,图10所示的库的特定内容仅仅是示例,并且还设想了具有不同内容的库。如以下更详细描述的,库中的每个对象具有计算机代码的相应文件或脚本,或定义对象以及对象如何与其他对象交互的计算机代码的部分。用于库中的各种对象的计算机代码可以存储在数据库中。在由处理器执行时,该代码使工业自动化控制部件执行一些动作。因此,当实体(例如,设计、客户、服务提供商、第三方供应商等)增建库时,可以考虑库内的各种对象如何彼此交互。例如,其上存储库的数据库可以包括兼容性数据,该兼容性数据指定库中的给定对象与库中的哪些对象兼容,以及这些对象如何彼此交互(例如,输入和输出是什么?)。
还可以参考历史数据来确定对象之间的兼容性和/或交互。因此,当用户选择用于项目的一组通常组合的对象时,库可以预期这些对象将如何彼此交互,并且可以至于生成或检索定义对象的操作和对象之间的交互的代码,因此设计者不必从头开始编写代码。在一些实施方式中,自动生成或检索的代码可以由设计者访问以用于编辑来将代码微调至预期用途。
因为从头开始填充复杂项目的库对于从事于该项目的团队而言是可观的任务,所以在一些实施方式中,服务提供商可以填充要由其客户使用的项的库。图11是示出在选择服务提供商库选项卡452时的服务提供商库的仪表板200的屏幕截图。当服务提供商向客户提供部件、系统、服务等时,服务提供商可能已经向不同的客户提供了类似的系统、服务等以用于类似的应用。因此,为了减少其客户所花费的资源以及减少为类似应用设计项目时的冗余,服务提供商可以提供客户可访问的库。在一些实施方式中,库可以是公共库,其对于公众或服务提供商的客户(例如,具有用户登录凭证)可用(例如,可访问以供下载)。在其他实施方式中,服务提供商可以为客户专门创建库,并将对库的访问限制到与客户相关联的个人或从事于正在讨论的项目的团队。如图所示,库包括用于指令、硬件、图形和预定义数据类型的文件夹。指令文件夹可以包括例如用于警报、时间/计数器、比较、计算等的子文件夹,每个子文件夹可以包括一个或更多个库项和/或附加的子文件夹。然而,应当理解,图11所示的库的具体内容仅仅是示例,并且还设想了具有不同内容的库。
另外,客户可以填充旨在跨多个项目使用的库。例如,油气公司、食品加工公司或任何其他实体可以设计和建造在不同的地理位置执行相同或相似功能的多个设施。因此,对客户过程库选项卡454的选择可以使主窗口206显示由客户填充以在多个项目中使用并由当前项目所链接的可浏览库(例如,可扩展/可折叠列表)。
如前所述,用户可以浏览各个库(例如,项目库、服务提供商库、客户过程库等)以到达特定项,或者经由设备选项卡266找到该特定项。在选择了该项时,主窗口更新以显示关于所选择项的更多细节信息。例如,图12是温度传感器的详细的项视图。如图所示,主窗口206的顶部包括关于所选温度传感器的各种信息的列表500。主窗口206的底部包括来自所选温度传感器的设置和/或输出的列表502。
拖放设计接口
在设计时环境中,仪表板200利用允许用户将项从库拖到设计窗口中的拖放式接口。先前,为了将一组项配置成彼此一起工作,用户将为组中的每个项打开编程窗口,并且单独地编写指定项的操作以及项如何与组中的其他项交互(例如,输入、输出、设置、算法、例程等)的编程代码。尽管这样的系统对于那些精通编程并希望对项或一组项进行编程以执行有些不常见的任务的用户来说可能有效,但是对于其他用户,这样的系统是有挑战性的、耗时的、低效的并且易于出现人为错误。图13至图20示出了使用拖放特征在设计时环境中设计项目。图13是示出在项目内创建区域的仪表板200的屏幕截图。用户可以在设计窗口550中画虚线以限定项目内的区域,设计窗口550显示在主窗口206中。在当下实施方式中,该项目是针对纸线,因此区域包括第一卷盘区域552、导辊区域554、施压区域556和第二卷盘区域558。然而,应当理解,图13中所示的区域仅仅是示例,并且还设想了许多其他区域和区域的组合。每个区域包括协同工作以执行功能的一个或更多个部件。在一些实施方式中,区域内的部件可以进一步被分组为子区域和/或模块。尽管图13中所示的区域552、554、556、558由正方形和矩形限定,但是用户可以在设计窗口550内绘制虚线或者标识限定任何闭合形状或多边形的点。在绘制了区域边界之后,用户可以输入该区域的名称,或者从列表中选择区域名称。
如图13所示,仪表板200包括弹出窗口560,其向用户提供将内容添加到设计窗口的选项、保存所执行的最后动作的选项和/或重复所执行的最后动作的选项。此外,附件窗口208可以填充有用户可以用来建立项目的工具。例如,在当下实施方式中,附件窗口包括工具窗口562、定义窗口564、逻辑窗口566、HMI窗口568和属性窗口570。工具窗口562包括允许用户操纵设计窗口550内的项目的工具。例如,工具窗口562可以包括用于放大、缩小、选择、绘制线、绘制形状、改变视图等的工具。定义窗口564、逻辑窗口566和HMI窗口568可以包括表示用户可以拖放到设计窗口550中以添加到项目的对象的图标。在一些实施方式中,附件窗口208可以是可滚动的,以展现具有可以被拖动到设计窗口550中的图标的附加窗口。因此,图13中所示的附件窗口208不是旨在进行限制。属性窗口570可以显示所选项的属性,或者可以允许用户搜索项目内的项或具有特定属性的各种连接库。
在选择了区域之后,设计窗口550更新以仅显示所选区域。在当下实施方式中,用户已经选择了导辊区域554,因此设计窗口550已经被更新以示出导辊区域554。图14是其中用户已经选择了辊子控制对象600并将其拖到设计窗口550中的导辊区域554中的仪表板200的屏幕截图。因为导辊区域554不具有任何附加至其的部件,所以设计窗口550包括邀请用户将对象拖动(例如,移动)到设计窗口550中以开始设计导辊区域554的文本。如图14所示,用户已经选择了辊子控制对象600,并将其拖到设计窗口550中的导辊区域554中。
在辊子控制对象600已被放置在设计窗口500中之后,可以选择其他对象并将其拖到设计窗口500中以在导辊区域554中加入辊子控制对象600。图15是其中用户已经选择了马达对象602并将其与辊子控制对象600一起拖到设计窗口550中的导辊区域554中的仪表板200的屏幕截图。在一些实施方式中,系统可以参考兼容性数据和/或规则来确定用户拖到设计窗口550中的对象是否与已经在该区域中的其他对象兼容。规则可以包括定义和/或规定工业自动化设备或部件之间的关系的准则。图16是其中用户已经尝试将不兼容对象(例如,阀对象604)连同辊子控制对象600一起拖入设计窗口550中的导辊区域554的仪表板200的屏幕截图。如图所示,用户已经尝试将阀对象604添加到导辊区域554。然而,系统已经参考兼容性数据和/或规则(例如,存储在数据库中)并且确定阀对象604与辊子控制对象600不兼容。因此,显示了警告消息606,其警告用户阀对象604与设计区域中的其他对象不兼容。在一些实施方式中,系统可以阻止用户将不兼容的对象放置在设计窗口550中,而在其他实施方式中,用户可以能够超控(override)系统。此外,用户是否有权限超控系统可以取决于授予用户的许可、用户的级别、用户的部门、用户凭证等。
在多个对象已经被放置在区域中之后,可以标识和显示对象的输入、输出、状态和其他接口元素。图17是其中用户已经将辊子控制对象600及两个马达对象602添加到设计窗口550中的导辊区域554的仪表板200的屏幕截图。在多个对象已被添加到区域之后,设计窗口550可以更新以标识每个对象的输入、输出、状态指示器和/或其他接口元素。在一些实施方式中,用户可以利用线绘制工具来绘制标识各个对象的输入、输出、状态指示器和/或其他接口元素之间的连接的线604。在其他实施方式中,系统可以利用机器学习、历史数据、兼容性数据、偏好数据和/或一组规则来预测设备之间的连接。图18是其中系统已经向用户提议连接的仪表板200的屏幕截图。在这样的实施方式中,可以经由消息610向用户建议提议的连接,如图18中所示,用户可以成批或逐个地检查和接受或拒绝这些提议的连接。在其他实施方式中,系统可以继续进行以绘制建议的连接,如果用户期望其他连接,则用户可以删除这些建议的连接。
该系统可以被配置成监视用户在设计系统时的动作并参考历史数据以预期未来动作并给出建议。这些建议可以包括例如添加一个或更多个对象、添加一个或更多个连接、对象的特定配置等。在一些实施方式中,系统可以参考历史数据来找到发生的所监视的动作的先前实例。然后,系统可以基于历史数据来识别一组可能的接下来的动作。然后,可以基于历史数据为该组接下来的动作分配概率。例如,系统可以考虑当使用对象的特定组合时添加到项目的接下来的对象是对象A的历史数据集中实例的百分比。在一些实施方式中,当特定的可能的接下来的动作的概率超过某个阈值时,系统可以生成针对该特定的可能的接下来的动作的推荐。在其他实施方式中,以一定间隔或在某些动作发生时,系统可以选择具有最高概率的特定的可能的接下来的动作并生成针对该特定的可能的接下来的动作的推荐。
此外,如同上述不兼容的对象一样,系统可以利用历史数据、兼容性数据、偏好数据和/或一组规则来确定用户提供的连接何时违反连接规则或在其他方面无效。图19是其中用户已经绘制无效连接的仪表板200的屏幕截图。用户已经尝试在辊子控制器对象600的输入至马达对象602的输入之间绘制连接612。因为将一个对象的输入连接到另一对象的输入破坏了连接规则,所以警告消息614出现以通知用户连接612无效。如同上述不兼容的对象一样,系统可以完全防止用户绘制无效连接。在其他实施方式中,用户能够超控系统,这可以取决于授予用户的许可、用户的级别、用户的部门、用户凭证等。
除了来自定义窗口564的对象之外,用户可以将来自其他窗口的对象拖到设计窗口中。图20是其中用户已经选择了例程616并将其连同辊子控制对象600一起拖到设计窗口550中的导辊区域554的仪表板200的屏幕截图。该例程可以定义设计窗口550中的导辊区域554内的一个或更多个对象的动作。然而,应该理解的是,图13至图20中所示的对象和元素的特定组合仅仅是示例,而不旨在是限制性的。因此,也设想了对象和元素的其他组合。
如前所述,库中的每个对象可以具有定义对象以及对象与库中的其他对象的交互的计算机代码或计算机代码的一部分的相应文件。当项目的设计完成时,或在开发期间的间歇时间段,系统可以获取项目中的每个对象的代码部分,并且基于项目中的其他对象修改代码,使得每个对象与项目中的其他对象如设计窗口550中所描绘的那样进行交互。然后,可以将修改的代码部分组合成定义整个项目的操作的项目代码文件。通过自动生成项目代码文件,编写项目代码文件的所有代码不再是设计者的责任。
客户专用命名约定
用户可以经由仪表板200在设计时环境中开发用于对象的定制的客户专用命名约定,然后该命名约定可以被传播遍及由对应客户使用的一个或更多个库和/或一个或更多个项目。也就是说,不同的客户端可以使用不同的命名约定(例如,格式)来指定每个设备的身份。例如,可以将马达指定为“马达_1”、“马达_2”等。另外,命名约定可以提供关于相应设备的层级的一些信息。例如,对于根据区域、部分和设备组织的系统,可以将马达指定为“部分1_马达2”。更新对象的库和/或项目以遵守命名约定可能是资源密集的、乏味的并且易于出现人为错误。因此,可以使用以下技术来学习命名约定,并通过向对象赋予符合新命名约定的新名称来将该命名约定应用于一个或更多个对象组。另外,随着系统中的设备数目的增长,将新设备添加到现有系统命名约定中变得越来越具有挑战性。也就是说,安装在系统中的由于其位置而应该与特定数字相关联的新马达可能由于该特定数字已经被用于表示另一马达而被提供了不同的数字。然而,通过采用本文描述的实施方式,任何设备可以接收正确或适当的命名指定,并且用于其他相关设备的名称改变可以自动地并入整个系统。
作为示例,图21是用于定义命名约定并使该命名约定传播遍及一个或更多个项目和/或一个或更多个库的过程620的流程图。在框622处,接收一个或更多个示例对象/设备名称和/或命名约定的定义,或命名约定的部分定义。在一个实施方式中,用户可以提供要用作示例的对象的一个或更多个名称。在一些实施方式中,一个或更多个示例名称可以包括从现有库中选择的符合命名约定的对象。此外,在一些实施方式中,来自其中使用命名约定的其他项目的数据可被提供为训练数据。示例的数目可以对应于基础命名约定的复杂度。例如,在一些实施方式中,对于简单命名约定,可以给出单个示例名称。对于复杂命名约定,可以提供5、10、20或更多示例。此外,如以下更详细描述的,用户可以依赖于反馈环路来随时间推移而提供附加示例以微调命名约定。
在其他实施方式中,用户可以提供基础命名约定的定义或部分定义。例如,用户可以定义命名约定的各种字段、一个或更多个字段的可能值的示例的开放或封闭列表,和/或提供如何将命名约定应用于项目、库等的规则。例如,用户可以将命名约定定义为包括对象类型字段、模型名称/编号字段和/或实例化编号字段,其中,对象类型字段表示相应的对象类型(例如,马达、控制器、路由、泵、阀等),模型名称/编号字段表示设备的模型名称/编号,以及实例化编号字段表示区域或项目内的对象类型的实例化的编号。在一些实施方式中,命名约定还可以包括表示其中设置对象的项目的区域的区域字段。然而,应当理解,这些仅仅是示例,并且可以使用用户期望的任何命名约定。在一些实施方式中,可以在对象在库中时从对象的名称中省略字段,并且然后当字段添加到项目时将字段添加到对象的实例化的名称。例如,当对象在库中时,可以从对象的名称中省略实例化和/或区域字段,因为库中的对象不关联于特定的实例化或区域。然而,当对象的实例化被放置在项目中时,对象的实例的名称可以与实例化字段、区域字段和/或一个或更多个附加字段一起出现。这将在下面关于图22更详细地描述。
用户还可以提供关于要如何实现命名约定的规则或准则。例如,用户可以指定实例化编号字段对于整个项目向上计数或者对于每个区域重置。此外,用户可以指定可以省略针对给定对象类型的第一对象的实例化字段,直到添加了该对象类型的第二对象,此时,针对第一对象的实例化字段被包括为具有值“1”,并且针对第二对象的实例化字段被赋予值“2”。
在框624处,可以将机器学习算法应用于所接收的示例名称和/或命名约定定义以得出用于定义命名约定的一个或更多个规则。在一些实施方式中,机器学习算法还可以在得出用于定义命名约定的规则时使用关于与示例对象名称相关联的对象的以其他方式已知的信息(例如,对象类型、实例化编号、区域等)。例如,机器学习算法可以识别对应于已知对象类型、已知区域名称、已知实例化编号、已知部件制造商、已知零件模型名称/编号、已知序列编号、其他已知字母数字字符串和/或这些已知的字母数字字符串的已知缩写的字母数字字符串。在一些实施方式中,因为命名约定可以遵循少数常见形式,所以可以基于少量示例名称以可接受的置信水平(例如,70%、80%、90%等)来识别命名约定。
在一些情况下,甚至可以基于单个示例以可接受的置信水平来识别基础命名约定。例如,图20所示的仪表板200中的设计窗口550包括被命名为“马达_1”的第一马达对象。基于该单个示例,命名约定可以被理解为包括由下划线分开的对象类型字段和实例化编号字段,其中对象类型字段由分配给相应对象类型(例如,马达、控制器、路由、泵、阀等)的字符串填充,并且实例化编号字段对应于区域或项目内的对象类型的实例化的数目。因此,当第二马达被拖到设计窗口550中时,基于假定的命名约定,对象可以被赋予名称“马达_2”。
在框626处,识别该命名约定适用于的其他设备。这可以包括例如搜索当下项目、一个或更多个其他项目、当下对象库、一个或更多个其他对象库、对应于连接到网络的工业自动化设备的对象等。基于项具有已知对象类型、项被用于项目的区域中、用于特定项目中、存在于特定库中、用于命名约定中的所有字段的数据对于对象是已知的等,可以确定该命名约定适用于对象或工业自动化设备。在一些实施方式中,一旦识别了设备,就可以向用户呈现所讨论的设备(例如,经由GUI)以确认用户希望将命名约定应用于所识别的设备。在一些实施方式中,如果用户不希望将命名约定应用于所识别的设备,则机器学习算法可以被更新以反映用户希望将所识别的设备从命名约定中排除。
在框628处,使用定义命名约定的所得出的规则来生成用于一个或更多个所识别的设备的得出的新名称。例如,在以上关于图20给出的示例中,如果第三马达在设计窗口中550中,但是根据其序列号(例如,“123456789”)被命名,则可以识别第三马达,并且根据命名约定来生成新的名称(例如,“马达_3”)。在框630处,可以将得出的新名称呈现给用户(例如,经由GUI)以供检查。在一些实施方式中,可以一次向用户呈现多个得出的新名称以供批量检查。如果用户批准了所得出的新名称(框632),则可以通过用得出的新名称替换旧名称来使名称传播遍及当下项目、一个或更多个其他项目、当下库、一个或更多个其他库等(框634)。也就是说,可以更新其他库或项目中的相同对象或设备的其他实例化以用新名称替换旧名称。此外,用户对新名称的批准可以指示定义命名约定的所得出规则是正确的。这样,系统可以根据命名约定得出用于其他对象的新名称,并遍及一个或更多个库或项目用新得出的名称替换其他对象的旧名称,而无需来自用户的附加输入。然而,在一些实施方式中,如果用户拒绝所得出的新名称,则可以使用反馈来进一步训练机器学习算法并且更新定义命名约定的规则。应当理解,在一些实施方式中,可以省略框630和632的用户检查和批准,并且用于一个或更多个设备的所得出的新名称可以自动被传播遍及一个或更多个项目和/或一个或更多个库,而无需用户检查和批准。此外,在一些实施方式中,用户可以指定要将命名约定向其传播的一个或更多个其他项目和/或一个或更多个其他库。
图22是用于生成项目内的对象的实例化的名称的过程640的流程图。在框642处,接收将对象的实例化放置在设计窗口中的输入。例如,用户可以从库中选择对象并将该对象拖到设计窗口中。在其他实施方式中,用户可以从库中选择对象,并将该对象插入或粘贴到设计窗口中。在另外的实施方式中,用户可以选择已经在设计窗口中的对象的实例化,并且复制和粘贴该对象或者使该对象重复以创建该对象的新实例化。用户还可以提供将对象的实例化相对于设计窗口中的其他对象定位在设计窗口内、和/或指定对象如何与设计窗口中的其他对象交互或耦接的输入。
在框644处,根据命名约定来确定对象实例化的名称。在一些实施方式中,实例化的名称可以与库中出现的相同。在其他实施方式中,对象的特定实例化的名称可以与库中所示的名称不同。例如,可以将字段添加到名称(例如,区域字段、实例化编号字段等),可以改变字段,可以移除字段等,以反映对象实例化在项目内的位置以及对象实例化与其他对象的交互。例如,用于马达的对象可以在库中表现为“马达”,但是当对象被插入到项目中时,用于对象的特定实例化的名称可以是“马达_1”或“部分1_马达2”。在框646处,可以在设计窗口内显示用于对象的图标和所确定的用于对象实例化的名称,或者所确定的用于对象实例化的名称的缩写。然后,用户可以提供以下输入:该输入调整对象在设计窗口内的位置以及指定对象与项目中的其他对象如何交互。
在框648处,可以更新用于对象的实例的底层代码部分以反映新名称。例如,代码部分可以包括用于对象实例化的名称的占位符(place holder)。可以在代码的该部分中搜索占位符,然后用对象实例化的新名称来替换占位符。在其他实施方式中,用于对象实例化的代码部分可以包括用于对象实例化的旧名称的一个或更多个实例。在这样的实施方式中,可以在该部分代码中搜索旧名称的实例。一旦识别了旧名称的实例,就可以修改代码部分以用新名称替换旧名称的实例。此外,在一些实施方式中,用于项目中的其他对象的底层代码部分可以被更新以反映对象的实例化的新名称。例如,与项目中的其他对象相关联的代码部分可以引用对象的实例化(例如,从对象实例化接收输入、向对象实例化发送输出、从对象实例化接收控制信号、向对象实例化发送控制信号、从对象实例化接收设定点、向对象实例化发送设定点、从对象实例化接收测量值、向对象实例化发送测量值等等)。在这样的实施方式中,可以在与项目中其他对象相关联的代码部分中搜索对对象实例化的引用(例如,占位符、用于对象实例化的旧名称等)并且用用于对象实例化的新名称来对其进行替换。
如前所述,随着系统中设备数目的增长,在对象被添加、移除和/或重新排列时,维护逻辑命名约定可能是困难的。逻辑命名约定可以规定,例如,名称内的一个或更多个字段的值随着沿系统的流路(flow path)的每个实例化而增加或减少。在一个实施方式中,第二对象上游的第一对象的字段的值可能高于第二对象的字段的值。在另一实施方式中,第二对象上游的第一对象的字段的值可能低于第二对象的字段的值。这样,字段的值可能在流向上向上或向下计数。流向可以指系统内产品的流、系统内数据的流、系统内逻辑的流、系统内部件的实际物理布置、过程步骤的顺序流等。例如,项目可以包括被命名为“马达_1”、“马达_2”、“马达_3”和“马达_4”的马达。如果用户在马达_2与马达_3之间添加新的马达,则基于新的马达的位置,新的马达的逻辑名称可以是“马达_3”,并且因此,应该相应地调整马达_3和马达_4的名称(例如,马达_3变为马达_4,并且马达_4变为马达_5)。然而,调整其他部件的名称和底层相关联的代码部分可能是极其资源密集、乏味且易于出现人为错误,尤其是对于具有比4或5个马达多许多马达的系统。因此,可能的结果是用户将新的马达命名为“马达_5”并将马达定位在马达_2与马达_3之间,或者决定根本不添加附加的马达,尽管其将改善系统的操作。
因此,所公开的技术可以用于基于对象的添加、移除或重定位来调整项目中的其他对象的名称。图23是用于基于新对象实例化的添加来修订项目中的一个或更多个现有对象的名称的过程660的流程图。在框662处,接收将对象的实例化放置在项目的设计窗口内的输入。例如,用户可以从库中选择对象并将该对象拖到设计窗口中。在其他实施方式中,用户可以从库中选择对象,并将该对象插入或粘贴到设计窗口中。在又一实施方式中,用户可以选择已经在设计窗口中的对象的实例化,并且复制和粘贴该对象或使该对象重复以创建该对象的新实例化。用户还可以提供相对于设计窗口中的其他对象将对象的实例化定位设计窗口内和/或指定对象与设计窗口中的其他对象如何交互或耦接的输入。
在框664处,根据命名约定、基于对象实例化在设计窗口内相对于其他对象的位置来确定对象实例化的名称。实例化的名称可以与库中出现的相同,或者对象的特定实例化的名称可以与库中示出的名称不同。例如,特定实例化的名称可以包括从库中的对象的列表中省略的字段(例如,区域字段、实例化编号字段等)。在其他实施方式中,可以改变字段,可以移除字段等,以反映对象实例化在项目内的位置以及对象实例化与其他对象的交互。
在框666处,确定应当修订项目内的一个或更多个其他对象实例化的名称以说明新的对象实例化。例如,可以调整一些字段的值以说明新对象实例化的插入。在上述示例中,用户在包含马达_1、马达_2、马达_3和马达_4的系统的马达_2与马达_3之间添加新的马达。基于新马达的位置,确定新马达应该被命名为“马达_3”,并且马达_3和马达_4的名称被相应地调整以分别变成马达_4和马达_5。在框668处,基于对象实例化的插入来生成周围对象的新名称。在框670处,可以更新用于对象的实例化以及项目中的一个或更多个其他对象实例化的底层代码部分以反映项目中的对象实例化和其他对象实例化的新名称。例如,用于各个对象实例化的代码部分可以包括用于对象实例化的名称的占位符或对象实例化的旧名称。因此,可以在该代码部分中搜索占位符或旧名称,然后用用于对象实例化的新名称来替换占位符或旧名称。
尽管上述技术是针对其中将对象实例化添加到项目的情况,但应当理解,当对象实例化被从项目中移除、被修改或在项目内被重新定位使得该项目内的其他对象实例化的名称应当被改变时,可以使用类似的技术。例如,当从项目中移除对象实例化时,项目内的其他对象实例化的名称以及引用这些对象实例化的代码部分可以被用新名称来修订。使用上述示例,如果用户从包含马达_1、马达_2、马达_3和马达_4的系统中移除马达_2。马达_3和马达_4的名称可以被相应地调整以分别变为马达_2和马达_3。相应地,当对象实例化在项目内被重新定位时,项目内的其他对象实例化的名称以及引用这些对象实例的代码部分可以被用新名称来修订。继续如上所述的相同的示例,如果用户将包含马达_1、马达_2、马达_3和马达_4的系统内的马达_2移动到马达_3与马达_4之间的位置,则可以相应地调整马达_2、马达_3和马达_4的名称,使得马达_3变为马达_2,马达_2变为马达_3。因此,为了减少设计者响应于对象的添加、移除或重新定位而重命名系统内的对象的乏味工作负荷(这也易于发生人为错误),并且为了激励设计者实现将要最大化性能的系统设计,可以响应于项目内的对象的添加、移除或重新定位而自动更新项目内的部件的名称和底层代码部分。
设计环境视图选项
在设计时环境中,仪表板200可以被配置成以用户可选择的若干不同视图样式来显示项目。在图13至图20中,以逻辑视图样式示出了仪表板200,然而,其他样式也是可用的。图24示出了以逻辑视图样式示出饼干制作设施的项目的仪表板200的实施方式。如图所示,仪表板550的设计窗口包括多个区域,该多个区域包括混合器区域700、烤箱区域702、打包器区域704和包装器区域706。在所示的实施方式中,混合器区域700包括工业控制器20(例如CLX)、驱动22、马达24、输入/输出(I/O)设备26、运动控制系统28(例如KINETIX)和HMI30。烤箱区域702包括工业控制器20(例如CLX)、温度传感器32、I/O设备26和HMI 30。打包器区域704包括工业控制器20(例如CLX)、工业管理以太网交换机34(例如STRATIX)、驱动22、马达24、温度传感器32、运动控制系统28(例如KINETIX)和HMI 30。包装器区域706包括工业控制器20(例如CLX)、I/O设备26、运动控制系统28(例如KINETIX)、三个马达24和HMI 30。然而,应当理解,图24中所示的部件的特定组合仅仅是示例,并且设想了部件的许多其他组合。此外,应该理解,可能的工业自动化部件的范围不旨在限于图24所示的那些部件。如图所示,逻辑视图的特征在于各个区域700、702、704、706彼此分离,使得这些区域是自包含的,并且部件之间的连接不跨越区域边界(即,虚线)。此外,部件之间的连接由单线表示。在一些实施方式中,并非所有彼此通信的部件在仪表板200上都通过线连接。例如,虽然区域内的一个或更多个部件可能与HMI 30通信,但是在图24所示的仪表板200中,没有HMI 30通过线连接到部件。因此,逻辑视图提供了项目的简化视图,其减少了所示出的连接的数目,以便传达区域内的系统部件如何彼此交互。
用户可以使用下拉视图菜单708在各种可用视图选项之间切换。图25示出了以网络视图样式示出图24所示的饼干制作设施的项目的仪表板200的实施方式。如图所示,尽管逻辑视图中的每个区域内的连接线大部分是竖直的,但是在网络视图中,这些线大部分是水平的。此外,在逻辑视图中强调的区域在网络视图样式中不再被给予强调。在一些实施方式中,如图25所示,可以完全省略区域边界。如图25所示,网络视图样式强调数据(例如,控制信号、测量信号等)通过的在部件之间的连接以及网络架构。
图26示出了以树形视图样式示出图24和图25所示的饼干制作设施的项目的仪表板200的实施方式。如图所示,当在下拉菜单708中选择树形视图样式时,仪表板转换到与关于图5所示和所述的配置类似的配置,其中资源管理器窗口204占据仪表板200的一侧,主窗口206占据仪表板200的中间,以及附件窗口208占据仪表板200的与资源管理器窗口204相对的第二侧。资源管理器窗口204显示项目中所有部件的展开和折叠嵌套列表。当用户浏览资源管理器窗口204并选择部件时,关于所选部件的信息被显示在主窗口206中。资源管理器窗口204中的部件的嵌套列表的结构对应于各个项目和项目内的部件相对于彼此如何配置。在图26所示的实施方式中,仪表板是用于被称为“MightyQ”的客户,用于被称为“饼干”的过程和/或设施内的多个线之一(例如,线1)。如关于图24所示和所述的,线1包括混合器区域700、烤箱区域702、打包器区域704和包装器区域706。每个区域是可扩展的,以露出该区域内的部件。例如,如图26所示,混合器区域700包括HMI客户端30、CLX底盘(CLX底盘包括CLX M1控制器、输入模块和输出模块)、以及包括三个KINETIX单元的PowerFlex运动控制系统28。类似地,如图26所示,烤箱区域702、打包器区域704和包装器区域706各自都包括可展开子系统。
系统可以周期性地为特定部件或部件组生成警报、告警或信息通知(统称为通知)。如图26所示,通知710可以在资源管理器窗口204中出现在与通知相关的部件上或其旁边。在当下实施方式中,通知710是菱形内的感叹号。然而,应当理解,通知可以采取许多不同的形式(例如,星形、彩色形状、对象的强调或不予强调等)。此外,通知的形状、颜色或样式可以改变以反映通知的类别、通知的严重性等,在选择之后,可以出现弹出窗口,或者主窗口206可以更新以示出更多信息。查看通知的另一选项是表视图(可经由下拉视图菜单708选择)。图27示出了以表视图样式示出图24至图26所示的饼干制作设施的项目的仪表板200的实施方式。表视图通过在表750中显示信息来强调警报、告警和信息通知。表750内的每行对应于通知。表750具有用于显示表内不同字段的信息的列。如图所示,字段可以包括例如通知类型752、区域754、日期和时间756、部件758以及通知消息760。通知类型字段752可以包括例如警报、告警、警告、信息等。日期和时间字段756指定通知的日期和时间。设备字段758指定与通知相关联的各件设备。消息字段760显示通知的消息。在一些实施方式中,表750可以包括一列复选框762,其允许用户批量处理和/或撤消通知。然而,应该理解,在其他实施方式中,表750可以包括字段的不同组合,所述字段包括未示出的字段,图27中示出的字段。
图28示出了以逻辑视图样式示出图24至图27所示的饼干制作设施的项目的仪表板200的实施方式。如图所示,逻辑视图是经由竖直导航栏202的编辑器选项卡800可获得的。各种部件在资源管理器窗口204中在可展开/可折叠嵌套列表中出现。逻辑是资源管理器窗口204中的大多数部件内的嵌套项。通过选择用于特定部件的逻辑,与该部件相关联的逻辑出现在主窗口206中。此外,当在资源管理器窗口204中选择部件时,主窗口206被更新以显示关于该部件的信息。对于所选设备,主窗口206可以包括逻辑选项卡802、标签选项卡804、HMI选项卡806和警报选项卡808。如图28所示,当选择逻辑选项卡802时,主窗口206显示描述所选部件已经被编程以执行的各种逻辑任务的逻辑示意图810。
在一些实施方式中,逻辑视图样式可以包括占据主窗口206内的逻辑诊断工具窗口812的逻辑诊断工具。逻辑诊断工具可以运行一个或更多个脚本或算法和/或应用一组规则来分析项目内的逻辑。在一些实施方式中,逻辑诊断工具的范围可以限于单个所选部件。在其他实施方式中,逻辑诊断工具可以考虑具有若干部件的模块、部件的多个模块、区域、多个区域、整个项目。逻辑诊断工具窗口812包括逻辑诊断工具通栏(banner)814,其提供逻辑诊断运行结果的概要816,包括例如错误的数目、警告的数目、信息消息的数目等。用户可以选择概要816内的特定项来查看更详细的信息。在逻辑诊断工具通栏814下方,逻辑诊断工具窗口812显示逻辑诊断运行的详细结果818。
类似地,当选择标签选项卡804时,主窗口206更新以显示分配给所选部件的各种标签。当选择HMI选项卡806时,主窗口206显示关于与所选部件相关联的HMI的信息以及所选部件与HMI之间的交互。当选择警报选项卡808时,主窗口206显示关于与所选部件相关联的各种警报的信息。
用户也可以在资源管理器窗口204中选择多个对象以在主窗口206中创建分屏视图。图29是分屏视图中的仪表板200的屏幕截图。如图所示,已经选择了蒸馏可视化的主显示器850以及蒸馏过程内的累加器例程852。因此,主窗口被分成示出主显示器850的细节的第一子窗口854和示出累加器例程852的细节的第二子窗口856,就好像每个部件/对象已经被单独选择并且所选部件的详细信息被显示在主窗口206内。尽管在图29所示的实施方式中主窗口206被分成两个子窗口,但是应当理解,在一些实施方式中,主窗口206可以被分成3、4、5、6、7、8、9、10个或任何合适数目的子窗口。在这样的实施方式中,所有子窗口可能不能适配在单个屏幕内,用户可能能够滚动浏览各个子窗口。类似地,每个子窗口854、856可以包括一行选项卡858,每个选项卡对应于所选部件,使得用户可以通过从该行选项卡858中选择选项卡来切换由子窗口854、856显示的视图。此外,在一些实施方式中,分屏模式下的主窗口206的各个子窗口854、856能够同时显示不同的视图类型。例如,第一子窗口854可以以逻辑视图来显示,而第二子窗口856以网络视图来显示。
操纵现有项目
关于图13示出和描述了为项目创建区域。尽管图13中的区域(例如,第一卷盘区域、导辊区域、施压区域、第二卷盘区域)是在任何对象被拖到主窗口206的设计窗口550中之前创建的,但是也可以在设计窗口中已经具有一个或更多个对象的项目中添加和/或调整区域。图30是示出为现有项目创建区域的仪表板200的屏幕截图。如图所示,已经使用绘图工具来绘制限定现有项目的一个或更多个区域的形成闭合形状的线。具体地,用户使用绘图工具来绘制定义预备区域900、研磨区域902和分派区域904的闭合形状。绘图工具可以允许用户从标准形状的菜单中进行选择,标准形状包括圆形、椭圆形、三角形、正方形、矩形、菱形、平行四边形、五边形、六边形、七边形、八边形、九边形、十边形或任何其他多边形。此外,用户可以通过定义点——这些点然后可以用直线连接——来绘制其他形状。在一些实施方式中,绘图工具还可以允许用户添加曲线。在绘制了定义区域的形状之后,系统可以识别不完全在定义区域的形状的线内的对象。如果对象不完全在区域的形状内,则系统可以确定对象位于该区域内的程度(例如,对象大部分在该区域内还是大部分在该区域外),并考虑对象与区域内其他对象进行交互的程度以确定是否对象应被认为在区域内。在一些实施方式中,区域的使用可以用于定义或指定网络或子网络。此外,在一些命名约定中,对象所位于的区域或对象在区域中扮演的角色可以帮助定义赋予对象的名称。
仪表板200还可以用于生成和/或编辑项目的标签。图31是处于标签编辑模式下的仪表板200的屏幕截图。如图所示,当从资源管理器窗口204选择标签/参数项目950时,主窗口206更新以显示标签/参数编辑窗口952。从标签/参数编辑窗口952,用户可以添加和/或编辑与所选部件相关联的标签/参数。
标签是其中特定数据被保留的部件的存储器的区域的基于文本的名称。因此,创建标签在某种程度上类似于在存储器内创建分区。在标签之前,通过网络或存储器地址来识别数据位置。因此,在项目内使用标签是用于分配系统内的部件的存储器的机制。通常,分配给标签的存储量随标签不同而变化,但是至少四个字节。如图所示,标签/参数编辑窗口952包括标签表954,其列出与所选部件相关联的标签。在标签表954内,每个标签占用行。该行可以包括定义或描述标签的各种数据字段。例如,在图31所示的实施方式中,数据字段包括名称、值、样式、数据类型、标签描述、历史和警报。标签名称可以由用户生成或者自动生成。类似地,描述可以是由用户提供的或由系统自动生成的字符串。数据类型可以包括若干选项之一,该若干选项包括REAL(例如,针对浮点数,例如由模拟设备在浮点模式下提供)、INT(例如,针对整数模式下的模拟设备)、STRING(例如,针对ASCII字符串)、BOOL(例如,针对比特和/或数字I/O点)、COUNTER(例如,针对计数器)、DINT(针对完整数整数(wholenumber integer))、CONTROL(例如,针对定序器)、TIMER(例如,针对定时器)等。为了将标签添加到部件,用户可以填充标签表954底部的开放字段。为了添加标签,用户可以为每个字段提供字母数字字符串,从下拉菜单中选择,输入数值等。
如图31所示,标签/参数编辑窗口952还可以包括参数表956和子表958。参数表956可以定义与所选部件相关联的一个或更多个参数,使得每行对应于参数并且可以包括描述和/或定义参数的多个字段。在一些实施方式中,参数可以用于进一步定义标签。子表958列出所选部件的子实例。如果所选部件是另一部件的子部件,则在一些实施方式中,父部件也可以在子表958中或在单独的父表(未示出)中显示。
仪表板200还可以用于向现有项目或现有项目内的部件添加逻辑。图32是逻辑编辑模式下的仪表板200的屏幕截图。如图所示,当在资源管理窗口204内选择逻辑项目1000时,在当下实施方式中,对于搅拌器对象,主窗口206更新以显示逻辑窗口1002。在逻辑窗口1002内,可以显示弹出窗口1004,其允许用户选择他或她想要如何添加逻辑。如图所示,从弹出窗口1004内,用户可以选择添加梯形逻辑、添加结构化文本文件、添加功能块文件或添加SFC文件。然而,应该理解,弹出窗口1004中用于添加逻辑的选项仅仅是示例,而不旨在是限制性的。因此,也设想了用于将逻辑添加到项目或部件的其他方式。在弹出窗口1004内做出选择时,仪表板200可以引导用户进行添加梯形逻辑或者定位和导入适当的文件。
建议部件
以上参照图18示出并描述了仪表板200使用历史数据来建议部件之间的连接的能力。仪表板200还可以使用历史数据来基于已经在项目中的其他对象建议项目内的特定部件。图33是其中系统为图24至图27的饼干制作项目建议控制器的仪表板200的屏幕截图。在图24至图27中,利用通用标记CLX来示出工业控制器20。如图33所示,系统可以被配置成分析当下项目以及历史数据(例如,来自设计者、设计者团队、客户和/或一个或更多个其他客户的先前项目)以建议用于项目的特定CLX工业控制器20模型。如图所示,当系统建议一个或更多个部件时,仪表板200更新以显示建议通知通栏1050,其通知用户正在作出一个或更多个建议,并且允许用户单独地或成批地接受或丢弃建议。另外,仪表板可以在一个或更多个对象上显示建议弹出窗口1052。建议弹出窗口1052允许用户接受建议、拒绝建议、看到关于所建议的对象的更多信息和/或查看对象偏好。可以基于历史数据(例如,来自历史数据集的过去的设计中的频繁使用的部分的组合)来使用建议。例如,系统可以识别出设计者在区域中使用了三个特定对象,并且确定对象的组合通常与第四对象一起使用。然后,系统可以经由仪表板200建议第四对象。此外,系统还可以基于预期负载建议部件,并且基于其已知规范建议特定产品。例如,设计者可能已经将通用控制器20置于项目中。基于连接到控制器的部件,系统能够确定控制器上的预期负载,以及控制器20被设计成与之进行接合的部件的数目和类型。然后,系统可以参考已知产品的规范,并推荐非常适合该项目的特定产品。在一些实施方式中,系统可以利用机器学习来分析可用部件的目录和/或历史数据的趋势以生成建议。
在一些实施方式中,对象有关选项可以将用户发送至对象的供应商的网站。对象有关选项还可以提供对象的供应商的联系信息,并且在购买是适当的情况下,向用户提供关于如何购买对象的准则。此外,对象偏好选项可以允许用户定义他或她关于某些对象的偏好,例如优选供应商、优选模型、预算、优选编程语言、与优选标准的符合性、针对为特定行业设计的对象的偏好等。在其他实施方式中,对象偏好选项可以允许用户查看和编辑针对给定对象的设置。当建议多个对象时,如图33中的情况,用于每个建议的建议弹出窗口1052可以同时出现,或随着每个建议被用户接受或丢弃而一次一个地出现。此外,用户可以具有保持建议并推迟对建议作出决定的选项以便进一步考虑该建议。在当下实施方式中,系统在混合器区域700和烤箱区域702中建议CLX L83控制器20,而对于打包器区域704和包装器区域706建议CLX L85控制器20。在一些实施方式中,仪表板200可以将对象的每个建议实例呈现为单独的建议。在其他实施方式中,建议的部件的所有实例可被视为单个建议(即,所有建议的CLX L83控制器是单个建议,以及所有CLX L85控制器是单个建议)。
如图33所示,建议的对象以相对于其他部件被加以强调(例如,加粗、闪烁、彩色编码等)或不加以强调(例如,灰色、虚线等)的方式显示在设计窗口550内。在接受建议后,建议的对象被添加到项目,并且建议的对象的外观被更新以匹配项目中的其他对象。图34是其中控制器建议已被接受(例如,经由用户输入)并且控制器正被添加到项目的仪表板200的屏幕截图。如图所示,CLX L83控制器和CLX L85控制器已被添加到项目,并以与项目中的其他对象相同的样式被示出。
在关于图33和图34所示和所述的实施方式中,系统建议了对象的特定模型,其中用于这些对象的通用占位符存在于项目中。然而,在一些实施方式中,系统还可以建议新对象以添加到项目。图35是其中已经为包装器区域706建议了附加的运动控制模块1100的仪表板200的屏幕截图。尽管在图35中已经建议了通用运动控制模块1100,但是在一些实施方式中,系统可以建议对象的特定模型。尽管在图33至图35所示的实施方式中,建议的对象是硬件部件,但是应当理解,系统可以被配置成建议将不一定是硬件部件的其他对象(例如,例程、软件部件、逻辑、警报、定时器、进程等)添加到项目。
在一些实施方式中,系统还可以识别何时项目的部件已经达到或不久将达到其建议的生命周期的终止,何时已经变为或预期变为由于缺少软件/固件更新而过时,或何时已经以其他方式变为寿命终止产品。在这样的情况下,系统可以生成寿命终止通知并建议替换的产品。图36是显示寿命终止通知1102的仪表板200的屏幕截图。如图所示,当识别到寿命终止产品时,系统可以不再向该区域中的其他对象给予强调(例如,灰色显示),并且将寿命终止通知1102附加到寿命终止产品。此外,仪表板200还可以显示寿命终止弹出窗口1104。寿命终止弹出窗口1104可以显示所标识的部件是寿命终止产品,并建议基于现有设计系统识别的替换产品,以便以最少的编程与现有部件互连。在一些实施方式中,弹出窗口1104可以包括到产品的网站的超链接,其可以允许用户订购产品,或者产品的供应商的联系信息。在产品可以从多个供应商获得的实例中,系统可以比较来自多个供应商的产品的价格。该系统还可以应用算法或一个或更多个规则来确认所建议的产品与该区域和/或项目中的其余部件的兼容性。
系统还可以检测何时已知硬件部件已与网络断开连接以及何时新硬件部件已连接到网络。图37是示出断开连接的部件和新的未配置部件的仪表板200的屏幕截图。在当下实施方式中,打包器区域704中的CLX控制器20已经与网络断开连接,并且新的未配置CLX控制器已经代替其连接到网络。系统已经识别到打包器区域704中的已知CLX控制器20已经与网络断开连接。因此,打包器区域704中对应于CLX控制器20的对象已经不被给予强调(例如,变灰),并且已经生成通知1106以向用户传达部件已经与网络断开连接。此外,对应于新的未配置CLX控制器20的对象看起来浮在该项目的各个区域700、702、704、706之上。对应于新的未配置CLX控制器20的对象还包括通知新的CLX控制器已经连接到网络但未被配置的通知。通知窗口1110也出现,其指示未配置的控制器20已经被附接到网络,并且给予用户通过选择配置按钮1112来配置新的CLX控制器的选项。在选择配置按钮1112之后,系统可以引导用户完成新硬件配置。在配置过程期间,系统可以更新仪表板200以用用于新的CLX控制器20的对象替换与旧CLX控制器20相关联的对象。然而,在一些实施方式中,系统可以识别部件已经断开连接并且新的未配置部件已经代替其进行连接。因此,系统可以跳过图37所示的仪表板200视图,并且假设新部件替换旧部件并且用户想要配置新部件。
图38示出了在打包器区域704中代替旧的CLX控制器20的新的替换CLX控制器20。如图所示,新的替换CLX控制器20已经经由突出显示被强调,然而,也可以设想其他形式的强调(例如,粗线、彩色编码、闪烁、通知等)。仪表板200更新附件窗口208以显示对象属性窗口1114。在对象属性窗口1114内,仪表板200显示直接替换盒1116,其使得用户能够提供声明新部件是否是对断开连接的部件的直接替换的输入。如果是,则系统可以将用于旧部件的配置分配给新部件。
多个用户同时编辑
如上关于图2所述,在一些实施方式中,工业自动化项目可以由本地部署(预置)服务器、远程服务器、私有云网络、公共云网络、或多个用户可同时访问的某种其他方式来托管,而不是本地存储在计算设备上。因此,仪表板200可以被配置成有助于两个或更多人同时访问和编辑项目。图39是示出了多个人同时编辑累加器例程的仪表板200的屏幕截图。当多个人同时编辑项目的方面时,通知1150可以出现以通知用户多个人正在编辑项目的方面。如图39所示,通知1150可以包括编辑项目的方面的用户的数目。此外,在一些实施方式中,当用户选择通知1150时,可以出现弹出窗口1152,其标识哪些用户正在编辑项目。仪表板200可以允许用户同时编辑项目以向彼此发送消息。图40是示出用户向彼此发送消息的仪表板的屏幕截图。如图所示,当多个用户同时编辑项目时,用户可以经由聊天窗口1154交换消息。在一些实施方式中,聊天窗口1154可以允许两个用户交换消息。然而,在其他实施方式中,聊天窗口1154可以具有更广泛的能力,例如允许用户将任务分配给彼此并且参考对项目的特定修改。此外,在一些实施方式中,消息可以作为耦接至项目的特定部分的评论而出现。如图40所示,这些评论可以作为评论通知1156出现,用户可以选择该评论通知来打开较大的聊天窗口1154。
在一些实施方式中,多个用户可以编辑项目的主副本,该主副本由本地部署(预置)服务器、远程服务器、私有云网络、公共云网络、或由多个用户同时可访问的一些其他方式托管,并且被实时或接近实时(例如,在进行编辑的数秒内)更新。然而,在一些实施方式中,用户的计算设备可以创建要编辑的项目的本地副本,而不是根据主副本进行工作。可以以设定的间隔(例如,秒、分钟、小时、天)或在一些触发活动(例如,进行了特定数目的改变、用户选择保存按钮或请求同步主副本和本地副本、当用户关闭其本地副本时等)时考虑主副本与本地副本之间的差异或冲突。在注意到一个或更多个冲突时,可以关于如何处理所意识到的冲突向用户进行提示。图41是其中用户已被关于他们想要如何解决冲突受到提示的仪表板200的屏幕截图。如图所示,冲突弹出窗口1158可以打开,呈现用于解决所识别的冲突的多个选项。例如,选项可以包括将本地文件与主版本1160合并、忽略对本地版本的改变1162、以及将对本地版本的改变推送到主版本1164。在一些实施方式中,在用户已经做出选择之后,仪表板可以显示改变的展示模型以供用户考虑。图42是显示三个展示模型的仪表板200的屏幕截图。在所示的实施方式中,用户已经选择将他或她的改变与主版本合并。因此,仪表板呈现三个窗口:本地版本1166、合并版本1168、以及如果用户继续所选选项则更新的主版本将看起来像的展示模型。展示模型帮助用户在实现他们选择的动作之前理解他们所选择的动作的可能影响。因此,仪表板可以包括用于停止所选动作返回到前一屏幕的取消按钮1172,以及用于继续进行所选动作的完成按钮1174。
回顾性项目代码文件分析
如关于图18、图19以及图33至图38所讨论的,规则集、算法和历史数据可以用于在项目设计期间实时、接近实时、以设定的时间间隔或在触发事件发生时分析项目,以在用户设计项目时阻碍用户设计不遵循某些准则的系统和/或生成用于添加对象和/或连接的推荐。然而,在一些实施方式中,系统还可以分析已完成的项目代码文件。图43是用于分析项目代码文件的过程1200的流程图。如图所示,在框1202中,从一些合适的存储部件接收或检索项目代码文件。在一些实施方式中,项目代码文件可以由客户发送或上传。在其他实施方式中,客户可以提供到项目代码文件的超链接,或者以其他方式标识项目代码文件的位置。在框1204处,接收或检索规则和/或分析算法。规则和/或分析算法可以定义项目代码文件的准则和/或最佳实践。在一些实施方式中,可能存在可以使用的多组规则和/或分析算法。对特定成组规则和/或分析算法的选择可以由客户执行,或者基于项目代码文件的一个或更多个特性(例如,项目代码文件的大小、行业、应用等)被执行。在子过程1206,将成组的规则和/或分析算法应用于项目代码文件以例如经由静态代码分析来分析项目代码文件。
例如,如图43所示,子过程1206可以包括表示分析的不同方面的框的集合。然而,应当理解,图43中所示的框仅为示例性的,且子过程1206可以仅包括子过程1206中所示的框中的一些框,可以包括子过程1206中的框的不同组合,可以包括子过程1206中所示的但是是按照不同次序的框,或者可以包括图43中未示出的附加框。
在框1208处,系统可以分析项目代码文件以识别其代码结构。这可以包括例如识别较大代码部分,以及识别代码模块、循环、代码部分之间的交互等。例如,系统可以为项目代码文件的某些部分建议替选结构,例如建议如果则否则(if,then,else)结构。在项目代码文件由不再可找到的人(例如,离职的雇员、承包商、雇佣来开发项目代码文件的第三方的雇员)编写的情况下,识别项目代码文件的结构可以帮助项目代码文件的所有者理解项目代码文件是如何建构。在框1210处,系统可以生成项目代码文件的一个或更多个可视化。可视化可以包括例如项目代码文件内的数据流的映射、调用图等。
在框1212处,系统可以识别项目代码文件内的无效代码。例如,系统可以找到项目代码文件内的由于代码被编写的方式(例如,代码部分不被调用)而不运行的代码部分。此外,在框1214中,系统可以识别项目代码文件中的死路(dead end)。如果系统在项目代码文件内找到无效代码或死路部分,则系统可以建议用于解决无效代码或死路的一个或更多个步骤。在框1216中,系统可以识别项目代码文件内的不正确或低效的标签使用。如果系统发现不适当或低效的标签使用,则系统可以建议用于解决不适当或低效的标签使用的一个或更多个步骤。在框1218中,系统识别项目代码文件内的交叠和/或并发任务,并且确定是否应当将这些任务分离以及如何将交叠和/或并发任务进行分离。在框1220处,系统考虑部件之间的连接是否有效。也就是说,系统考虑部件之间的连接是否符合一组或更多组规则或准则。如果发现一个或更多个连接无效,则系统可以推荐用于使一个或更多个连接符合该一组或更多组规则或准则的一个或更多个步骤。在框1222处,系统识别部件或一组部件的过载情况(例如,当部件同时运行太多过程时),并提供解决过载情况的建议。
在框1224处,系统计算项目代码文件的代码复杂性分数。计算代码复杂性分数可以包括应用算法来确定表示项目代码文件的复杂性的单个数值。然而,应当理解,子过程1206中的项目代码文件分析可以包括计算项目代码文件的其他分数,这些分数确定例如项目代码文件符合各种规则或准则的程度,所述各种规则或准则例如为组织良好的结构、代码中没有无效代码和死路、标签使用的效率、并行交叠/并发任务的量、没有过载情况等。因此,在一些实施方式中,计算代码复杂性分数可以利用项目代码文件分析子过程1206内的其他框的结果。在框1226处,系统确定项目代码文件是否满足接受标准。接受标准可以包括定义项目代码文件的最佳实践的一组或更多组规则或准则。在一些实施方式中,关于项目代码文件是否满足接受标准的输出可以是二进制是/否、通过/失败等。然而,在其他实施方式中,输出可以包括对一个或更多个等级的选择,例如字母等级,差/满意/好/优秀等。在另外的实施方式中,项目代码文件是否满足接受标准的输出可以是数字分数。然而,还设想了项目代码文件是否满足接受标准的输出的其他实施方式。
在框1228处,系统生成并输出总结项目代码文件子过程1206的分析的报告。因此,报告可以包括来自子过程1206内的框的结果,以及其他信息。报告可以显示在仪表板内、不同的GUI内、作为PDF输出、或者以某种其他方式被提供。在框1230处,可以将来自分析子过程1206的数据添加到历史数据的数据库或其他存储装置,其中数据可以被进一步分析。在框1232处,可以将从分析项目代码文件以及其他项目代码文件收集的数据用于更新规则和/或分析算法。对规则和/或分析算法的更新可以以设定的间隔(例如,每天、每周、每月、每季度、每年等)发生、在一些触发事件(例如,所分析的项目代码文件的阈值数目、更新规则和/或分析算法的请求、过程中的改变等)时发生。
告警
图44是显示警报通知1250和警报弹出窗口1252的仪表板200的屏幕截图。如上所述,仪表板200被配置成当在设计时环境中时向用户显示通知。在一些实施方式中,通知可以包括警报。例如,如果在用户正在编辑设计时环境内对应项目时工业自动化过程正在运行,并且生成警报,则警报可以作为通知1250出现在仪表板200内。如图所示,烤箱区域702和打包器区域704两者中的工业控制器20都具有与相应图标相邻的待解决的警报通知1250。此外,如图44所示,在一些实施方式中,当一个或更多个部件具有待解决的警报通知1250时,项目中的其他对象可以在仪表板200内不再被给予强调(例如,变灰)。此外,仪表板200还可以显示警报弹出窗口1252,其将用户的注意力引至待解决的警报。用户可以选择查看按钮1254以显示关于警报通知的更多信息。当选择查看按钮1254时,仪表板200可以更新以显示警报概要屏幕。图45是显示警报概要屏幕1256的仪表板200的屏幕截图。如图45所示,警报概要屏幕1256占据仪表板的主窗口206并且显示可展开且可折叠的警报列表1258。警报列表1258包括用于每个警报的通栏1260,其显示相关联的对象、警报的优先级水平(例如,低、中、高、紧急)以及与警报相关联的消息。选择警报的通栏1260打开显示关于所选警报的信息的窗口。例如,该信息可以包括优先级、严重性分数、警报中时间、事件时间和消息。优先级水平反映确定的警报的紧急性(例如,警报的及时解决将减少潜在问题的影响的程度)。严重性分数可以是传达如果问题未得到解决则潜在问题对工业自动化系统的影响的程度的值(例如,1至100)。此外,警报概要屏幕1256可以包括用于每个展开的警报的一行选项卡1264,其控制内容窗口1266中示出的内容。选项卡可以包括例如HMI、代码、趋势、手册等。当选择HMI选项卡时,内容窗口1266可以显示HMI屏幕中正显示的项。在一些实施方式中,用户可以与内容窗口1266内的根据HMI屏幕重新创建的按钮交互,就好像用户正持有HMI一样。对代码选项卡的选择可以使内容窗口1266被更新以显示与受影响的对象或部件相关联的代码。然后,用户可以对内容窗口1266内的代码进行编辑。对趋势选项卡的选择可以使内容窗口1266被更新以显示值或度量随着时间变化的曲线图以及该值是高于还是低于该值或度量的平均值或某期望目标。对手册选项卡的选择可以使内容窗口1266被更新以显示到经历警报的部件或对象的手册的超链接。在其他实施方式中,一个或更多个相关手册可以被嵌入内容窗口1266内。
在一些实施方式中,系统可以参考历史数据并且提出关于如何解决警报的一个或更多个建议。例如,系统可以利用基于收集的历史数据训练的机器学习或人工智能。系统可以识别出过去已经发生并已经解决了相同或相似的情况。系统可以识别先前有效的解决方案并向用户建议该该解决方案。系统可以提供用于实现建议的解决方案的指令,或者向用户提供自动实现建议的解决方案的选项。在一些实施方式中,在多个可能的解决方案可用的情况下,系统可以呈现多个可能的解决方案。在另外的实施方式中,系统可以被配置成对可能的解决方案进行评估和排名。该系统可以提供例如每个可能解决方案的预测成功可能性。
轻工程客户端
如上文关于图3和图4所述,轻工程客户端环境可以向操作者提供运行时样式环境,但是该环境具有用于对工业自动化系统进行故障排除和/或调整的设计时环境的有限功能。图46至图48示出了轻工程客户端的各个方面。具体地,图46示出了显示在HMI 30上的轻工程客户端仪表板1300的主屏幕。然而,应当理解,轻工程客户端可以显示在任何计算设备上。如图所示,仪表板1300包括资源管理器窗口1302、连接部件窗口1304和主窗口1306。如同设计时环境的资源管理器窗口一样,资源管理器窗口1302包括与HMI 30相关联的部件和对象的可展开且可折叠的列表。当用户浏览资源管理器窗口1302时,从资源管理器窗口1302的选择可以指示在主窗口1306中显示什么。连接设备窗口1304显示与连接到HMI 30的一个或更多个设备相关联的信息。该信息可以包括例如部件是否在线、部件的状态、是否存在与部件相关联的任何通知等。
数据窗口1308可以被配置成显示与一个或更多个连接部件或对象相关联的数据。在一些实施方式中,数据可以经由一个或更多个可视化来显示。在其他实施方式中,数据可以经由一个或更多个分数来显示。数据窗口1308内显示的内容也可以由操作者定制。设备窗口1310显示与HMI 30相关联的一个或更多个设备,并且可以包括用于一个或更多个设备的一个或更多个信息。系统模型窗口1312可以列出与HMI 30相关联的一个或更多个模型,用户可以选择这些模型来查看所选模型。警报窗口1314显示HMI 30或与HMI 30相关联的部件所经历的警报的列表。
当已经选择主屏幕选项卡1316时,轻工程客户端仪表板1300的主屏幕可以是可见的。对警报选项卡1318的选择可以使主窗口1306更新以显示与一个或更多个警报相关联的信息。图47是当警报选项卡1318已被选择时的轻工程客户端仪表板1300的屏幕截图。如图所示,当已经选择了警报选项卡1318时,仪表板1300更新主窗口1306,以显示警报列表窗口1320和警报细节窗口1322。警报列表窗口1320列出与HMI 30或与HMI 30关联的任何部件相关的警报。当选择了警报列表窗口1320内的警报时,警报细节窗口1322更新以显示与所选警报相关联的信息。例如,警报细节窗口1322可以显示警报优先级、警报严重性、警报中时间、事件时间、警报消息、相关联部件的位置、所讨论的参数、作为相关联的控制器、路径、所讨论的值的趋势、到相关部件的手册的超链接、以及显示相关联代码和到HMI屏幕的选项卡。
在一些实施方式中,用户可以使资源管理器窗口1302和连接设备窗口1304最小化,使得主窗口1306占据HMI屏幕30的全部。图48是当资源管理器窗口1302和连接设备窗口1304已经被最小化时的轻工程客户端仪表板1300的屏幕截图。如图所示,警报细节窗口1322包括一行选项卡1324。选项卡可以包括例如代码和HMI。当选择HMI选项卡时,内容屏幕1326可以显示与HMI 30相关联的信息。对代码选项卡的选择可以使内容窗口1326被更新以显示与受影响的对象或部件相关联的代码。类似于设计时环境,轻工程客户端仪表板1300可以从用户接收对代码进行修改的输入,以解决警报。如前所述,轻工程客户端环境可以类似于运行时环境,但是具有来自设计环境的添加的功能,从而允许操作者对代码进行修改以对工业自动化系统进行调整和/或解决告警和警报。例如,轻工程客户端环境可以允许操作者调整某些参数的目标或阈值(在由设计者设置的指定范围内)、切换参数以检查不同传感器、改变时间段、改变输入值等)。相比之下,设计时环境允许用户改变分析功能,改变分析算法等。在一些实施方式中,与设计时环境中可用的完整功能相比,来自设计环境的添加的功能可能在范围上受限。
在一些实施方式中,系统可以被配置成参考历史数据并且提出关于如何解决警报的一个或更多个建议。例如,系统可以利用基于收集的历史数据训练的机器学习或人工智能。系统可以识别过去已经发生并已经解决了的相同或相似的情况。系统可以识别先前有效的解决方案并向用户建议该解决方案。系统可以提供用于实现建议的解决方案的指令,或者向用户提供自动实现建议的解决方案的选项。在一些实施方式中,在多个可能的解决方案可用的情况下,系统可以呈现多个可能的解决方案。在另外的实施方式中,系统可以对可能的解决方案进行评估和排名。该系统可以提供例如每个可能解决方案的预测的成功可能性。
所公开的技术包括应用一组工业自动化系统设计规则来确定设计者所采取的每一动作(例如,向项目添加对象、绘制对象之间的连接等)是否被规则所允许。规则可以充当“设计护栏”,以帮助设计者更高效地设计更好的系统,避免花费在故障排除上的长时间段。在某些情况下,可以完全防止设计者采取禁止的动作,而在其他情况下,具有某些指定证书的设计者可能能够超控与给定设计动作未遵循准则有关的警告消息。
所公开的技术还包括使用AI和/或机器学习以鉴于先前的设计和已知的部件规范来考虑设计者所采取的动作,以建议设计者可以接受或拒绝的设计动作。建议可以包括例如使用特定型号的部件、添加部件之间的连接、插入附加部件、用替换部件替换寿命终止部件等。当建议动作时,设计者可以选择是接受建议还是拒绝建议。在一些情况下,系统还可以向设计者提供到建议的部件的供应商或制造商的超链接或联系信息,或购买建议的部件的其他途径。
此外,所公开的技术包括使用AI和/或机器学习来分析历史数据集、识别之前何时遇到过当下问题、以及向设计者建议补救动作。例如,系统可以识别问题已经遇到过,并且使用历史数据集来识别过去何时遇到该问题。然后,系统可以考虑在那些先前发生的事情中做了什么以补救该问题。然后,系统可以识别一个或更多个可能的补救动作以解决问题。在一些情况下,系统可以对可能的补救动作进行排名或以其他方式对其进行评估,以识别每个可能的补救动作的成功可能性。然后,系统可以向设计者建议补救动作中的一个或更多个。例如,系统可以通知设计者“上一次出现这个问题时,我们采取这个补救动作”。在一些情况下,设计者可以具有自动实现建议的补救动作、查看用于人工实现建议的补救动作的指令或撤消建议的选项。
所公开的技术包括轻工程客户端环境,轻工程客户端环境类似于运行时环境,但是包括设计时环境的一些功能,从而允许操作者对工业自动化系统进行小的调整以解决小的问题。在一些实施方式中,轻工程客户端也能够提供关于如何解决出现的问题的推荐。
所公开的技术还包括使用包括被编程为以已知方式彼此交互的对象的部件库。因此,设计者可以将部件从库拖动到设计窗口中,并且系统可以理解部件旨在如何彼此交互。系统可以自动地布置部件并根据部件如何被频繁地实现来连接部件。库中的每个部件可以具有定义相应部件的操作的相应代码部分。基于部件在设计窗口中被如何布置和连接,系统然后可以生成或修改用于部件的程序代码,因此设计者无需负担为系统编写代码。
所公开的技术包括使用AI和/或机器学习来学习新的命名约定并使该新的命名约定传播遍及一个或更多个工业自动化系统和/或库,以及当在系统内添加、移除或重新布置部件时自动调整部件名称以维持命名约定。
所公开的技术包括项目代码文件分析算法,该算法可应用于项目代码文件并生成该项目代码文件的报告。项目代码分析算法可以被配置成确定项目代码文件的结构、创建项目代码文件的可视化、识别项目代码文件内的无效代码(即,不被执行的代码)、识别项目代码文件内的死路、识别低效标签使用、识别并行并发任务、考虑部件之间的连接的有效性、识别过载情况、计算代码的复杂性分数、确定项目代码文件是否满足接受准则等等。此外,一旦已经对项目代码文件进行过分析,就可以用来自分析的数据来更新数据库。当数据库填充有来自对多个项目代码文件的分析的数据时,可以对项目代码分析算法进行调整,使得项目代码分析算法随时间而改进。
本公开内容还包括以下技术方案:
1.一种系统,包括:
处理器;以及
存储器,其能够由所述处理器访问,所述存储器存储指令,所述指令在由所述处理器执行时使所述处理器进行以下操作:
接收工业自动化项目代码文件,其中,所述工业自动化项目代码文件定义工业自动化系统在工业自动化过程的执行期间的一个或更多个操作;
检索与用于项目代码文件的一组最佳实践相关联的一组工业自动化规则;
基于所述一组工业自动化规则来分析所述工业自动化项目代码文件,包括:
识别低效标签使用的一个或更多个实例;以及
识别一组或更多组并行交叠任务;以及
基于依据所述一组工业自动化规则对所述工业自动化项目代码文件的分析来生成报告。
2.根据方案1所述的系统,其中,所述指令在由所述处理器执行时使所述处理器将在所述分析期间生成的数据保存到历史数据集。
3.根据方案2所述的系统,其中,所述指令在由所述处理器执行时使所述处理器基于存储在所述历史数据集中的数据来修订所述一组工业自动化规则。
4.根据方案1所述的系统,其中,基于所述一组工业自动化规则来分析所述工业自动化项目代码文件包括:确定所述工业自动化项目代码文件是否满足接受标准,其中,当所述项目代码文件满足所述一组工业自动化规则中的阈值数量的工业自动化规则时,所述工业自动化项目代码文件满足所述接受标准。
5.根据方案1所述的系统,其中,基于所述一组工业自动化规则来分析所述工业自动化项目代码文件包括识别一个或更多个过载情况,在所述过载情况下所述项目代码文件使相应工业自动化部件运行多于阈值数量的并行过程。
6.根据方案1所述的系统,其中,基于所述一组工业自动化规则来分析所述工业自动化项目代码文件包括分析所述工业自动化项目代码文件的结构,以及生成所述工业自动化项目代码文件的结构的可视化。
7.根据方案1所述的系统,其中,基于所述一组工业自动化规则来分析所述工业自动化项目代码文件包括识别所述工业自动化项目代码文件内的一个或更多个无效代码部分。
8.根据方案1所述的系统,其中,基于所述一组工业自动化规则来分析所述工业自动化项目代码文件包括识别所述工业自动化项目代码文件内的一个或更多个死路。
9.根据方案1所述的系统,其中,基于所述一组工业自动化规则来分析所述工业自动化项目代码文件包括评估所述工业自动化项目代码文件内的对象之间的一个或更多个连接的有效性。
10.根据方案1所述的系统,其中,基于所述一组工业自动化规则来分析所述工业自动化项目代码文件包括计算所述工业自动化项目代码文件的代码复杂性分数,其中,计算所述代码复杂性分数包括应用算法来确定所述项目代码文件的结构的复杂性。
11.一种方法,包括:
接收工业自动化项目代码文件,其中,所述工业自动化项目代码文件定义工业自动化系统在工业自动化过程的执行期间的一个或更多个操作;
检索与用于项目代码文件的一组最佳实践相关联的一组工业自动化规则;
基于所述一组工业自动化规则来分析所述工业自动化项目代码文件,包括:
识别低效标签使用的一个或更多个实例;
识别一组或更多组并行交叠任务;以及
识别一个或更多个过载情况;以及
基于依据所述一组工业自动化规则对所述工业自动化项目代码文件的分析来生成报告。
12.根据方案11所述的方法,包括将在所述分析期间生成的数据保存到历史数据集。
13.根据方案12的方法,包括基于存储在所述历史数据集中的数据修订所述一组工业自动化规则。
14.根据方案12所述的方法,包括确定所述工业自动化项目代码文件是否满足接受标准,其中,当所述项目代码文件满足所述一组工业自动化规则中的阈值数量的工业自动化规则时,所述工业自动化项目代码文件满足所述接受标准。
15.根据方案12所述的方法,其中,基于所述一组工业自动化规则来分析所述工业自动化项目代码文件包括分析所述工业自动化项目代码文件的结构,以及生成所述工业自动化项目代码文件的结构的可视化。
16.一种包括指令的非暂态有形计算机可读介质,所述指令在由处理器执行时使所述处理器进行以下操作:
接收工业自动化项目代码文件,其中,所述工业自动化项目代码文件定义工业自动化系统在工业自动化过程的执行期间的一个或更多个操作;
检索与用于项目代码文件的一组最佳实践相关联的一组工业自动化规则;
基于所述一组工业自动化规则来分析所述工业自动化项目代码文件,包括:
识别低效标签使用的一个或更多个实例;以及
识别一组或更多组并行交叠任务;
基于依据所述一组工业自动化规则对所述工业自动化项目代码文件的分析来生成报告;以及
将来自分析的数据保存到历史数据集。
17.根据方案16所述的计算机可读介质,其中,所述指令在由所述处理器执行时使所述处理器基于存储在所述历史数据集中的数据来修订所述一组工业自动化规则。
18.根据方案16所述的计算机可读介质,其中,所述指令在由所述处理器执行时使所述处理器确定所述工业自动化项目代码文件是否满足接受标准,其中,当所述项目代码文件满足所述一组工业自动化规则中的阈值数量的工业自动化规则时,所述工业自动化项目代码文件满足所述接受标准。
19.根据方案16所述的计算机可读介质,其中,基于所述一组工业自动化规则来分析所述工业自动化项目代码文件包括识别一个或更多个过载情况,在所述过载情况下所述项目代码文件使相应工业自动化部件运行多于阈值数量的并行过程。
20.根据方案16所述的计算机可读介质,其中,基于所述一组工业自动化规则分析所述工业自动化项目代码文件包括计算所述工业自动化项目代码文件的代码复杂性分数。
虽然本文仅说明和描述了本公开内容的某些特征,但是本领域技术人员将想到许多修改和改变。因此,应当理解,所附权利要求旨在涵盖落入本文所述实施方式的真实精神内的所有这些修改和改变。

Claims (20)

1.一种用于代码分析的系统,包括:
处理器;以及
存储器,其能够由所述处理器访问,所述存储器存储指令,所述指令在由所述处理器执行时使所述处理器执行操作,所述操作包括:
接收代码文件,其中,所述代码文件是与工业自动化系统在工业自动化过程的执行期间的一个或更多个操作相关联的项目代码文件;
检索与所述代码文件相关联的一组规则;
基于所述一组规则来执行对所述代码文件的分析,包括:
识别标签使用的一个或更多个实例,
识别一组或更多组并行交叠任务,和
基于所识别的标签使用的一个或更多个实例中的标签使用的效率以及所识别的一组或更多组并行交叠任务中的并行交叠任务的量,来计算指示所述代码文件符合所述一组规则的程度的分数;以及
基于依据所述一组规则对所述代码文件的分析来生成报告。
2.根据权利要求1所述的系统,其中,所述指令在由所述处理器执行时使所述处理器执行所述操作,所述操作包括将在存储附加数据之前接收的数据集的分析期间生成的所述附加数据保存到历史数据集。
3.根据权利要求2所述的系统,其中,所述指令在由所述处理器执行时使所述处理器执行所述操作,所述操作包括基于存储在所述历史数据集中的附加数据来修订所述一组规则。
4.根据权利要求1所述的系统,其中,基于所述一组规则来分析所述代码文件包括确定所述代码文件是否满足所述一组规则中的阈值数量的规则。
5.根据权利要求1所述的系统,其中,基于所述一组规则来分析所述代码文件包括识别一个或更多个过载情况,在所述过载情况下所述代码文件使相应工业自动化部件执行多于阈值数量的并行过程。
6.根据权利要求1所述的系统,其中,基于所述一组规则来分析所述代码文件包括分析所述代码文件的结构,以及生成所述代码文件的结构的可视化。
7.根据权利要求1所述的系统,其中,基于所述一组规则来分析所述代码文件包括识别所述代码文件内的一个或更多个未被利用的代码部分。
8.根据权利要求1所述的系统,其中,基于所述一组规则来分析所述代码文件包括识别所述代码文件内的一个或更多个死路。
9.根据权利要求1所述的系统,其中,基于所述一组规则来分析所述代码文件包括评估所述代码文件内的对象之间的一个或更多个连接的有效性。
10.根据权利要求1所述的系统,其中,基于所述一组规则来分析所述代码文件包括计算所述代码文件的代码复杂性分数,其中,计算所述代码复杂性分数包括应用算法来确定所述代码文件的结构的复杂性。
11.一种用于代码分析的方法,包括:
接收代码文件,其中,所述代码文件是与工业自动化系统在工业自动化过程的执行期间的一个或更多个操作相对应的项目代码文件;
检索与所述代码文件相关联的一组规则;
基于所述一组规则来执行对所述代码文件的分析,包括:
识别标签使用的一个或更多个实例,
识别一组或更多组并行交叠任务,和
基于所识别的标签使用的一个或更多个实例中的标签使用的效率以及所识别的一组或更多组并行交叠任务中的并行交叠任务的量,来计算指示所述代码文件符合所述一组规则的程度的分数;以及
基于依据所述一组规则对所述代码文件的分析来生成报告。
12.根据权利要求11所述的方法,包括将在所述分析的期间生成的数据保存到历史数据集。
13.根据权利要求12的方法,包括基于所述历史数据集来修订所述一组规则。
14.根据权利要求12所述的方法,包括确定所述代码文件是否满足所述一组规则中的阈值数量的规则。
15.根据权利要求12所述的方法,其中,基于所述一组规则来分析所述代码文件包括分析所述代码文件的结构,以及生成所述代码文件的结构的可视化。
16.一种包括指令的非暂态有形计算机可读介质,所述指令在由处理器执行时使所述处理器进行以下操作:
接收代码文件,其中,所述代码文件是与工业自动化系统在工业自动化过程的执行期间的一个或更多个操作相关联的项目代码文件;
检索与所述代码文件相关联的一组规则;
基于所述一组规则来执行对所述代码文件的分析,包括:
识别标签使用的一个或更多个实例;
识别一组或更多组并行交叠任务,和
基于所识别的标签使用的一个或更多个实例中的标签使用的效率以及所识别的一组或更多组并行交叠任务中的并行交叠任务的量,来计算指示所述代码文件符合所述一组规则的程度的分数;
基于依据所述一组规则对所述代码文件的分析来生成报告;以及
将来自分析的数据保存到历史数据集。
17.根据权利要求16所述的计算机可读介质,其中,所述指令在由所述处理器执行时使所述处理器基于存储在所述历史数据集中的所述数据来修订所述一组规则。
18.根据权利要求16所述的计算机可读介质,其中,所述指令在由所述处理器执行时使所述处理器确定所述代码文件是否满足所述一组规则中的阈值数量的规则。
19.根据权利要求16所述的计算机可读介质,其中,基于所述一组规则来分析所述代码文件包括识别一个或更多个过载情况,在所述过载情况下所述代码文件使相应工业自动化部件运行多于阈值数量的并行过程。
20.根据权利要求16所述的计算机可读介质,其中,基于所述一组规则来分析所述代码文件包括计算所述代码文件的代码复杂性分数。
CN202010885503.7A 2019-09-27 2020-08-28 用于工业自动化项目代码分析的系统和方法 Active CN112579154B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/586,346 2019-09-27
US16/586,346 US11231924B2 (en) 2019-09-27 2019-09-27 System and method for industrial automation project code analysis

Publications (2)

Publication Number Publication Date
CN112579154A CN112579154A (zh) 2021-03-30
CN112579154B true CN112579154B (zh) 2024-01-12

Family

ID=71944009

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010885503.7A Active CN112579154B (zh) 2019-09-27 2020-08-28 用于工业自动化项目代码分析的系统和方法

Country Status (3)

Country Link
US (2) US11231924B2 (zh)
EP (1) EP3798760B1 (zh)
CN (1) CN112579154B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12025973B2 (en) * 2021-09-20 2024-07-02 Rockwell Automation Technologies, Inc. Industrial automation controller project online/offline state separation

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105527868A (zh) * 2014-10-15 2016-04-27 洛克威尔自动控制技术股份有限公司 应用环境中的客户资产
CN105988450A (zh) * 2015-03-16 2016-10-05 洛克威尔自动控制技术股份有限公司 基于云的工业控制器

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8478967B2 (en) 2009-06-01 2013-07-02 National Instruments Corporation Automatically creating parallel iterative program code in a data flow program
US20110289485A1 (en) * 2010-05-21 2011-11-24 International Business Machines Corporation Software Trace Collection and Analysis Utilizing Direct Interthread Communication On A Network On Chip
US8799880B2 (en) 2011-04-08 2014-08-05 Siemens Aktiengesellschaft Parallelization of PLC programs for operation in multi-processor environments
US9239873B2 (en) * 2013-06-25 2016-01-19 International Business Machines Corporation Process-aware code migration
US9110770B1 (en) * 2014-03-04 2015-08-18 Amazon Technologies, Inc. Assessing quality of code in an open platform environment
EP3140790A1 (en) * 2014-05-08 2017-03-15 Beet, LLC Issue tracking and resolution system
US9361068B2 (en) * 2014-05-21 2016-06-07 International Business Machines Corporation System and method for using development objectives to guide implementation of source code
US9921941B2 (en) * 2015-04-10 2018-03-20 Siemens Aktiengesellschaft Verification and validation of third party PLC code
US10075450B2 (en) * 2015-05-29 2018-09-11 Rockwell Automation Technologies, Inc. One time use password for temporary privilege escalation in a role-based access control (RBAC) system
US10503484B2 (en) * 2015-06-08 2019-12-10 Cisco Technology, Inc. Virtual replication of physical things for scale-out in an internet of things integrated developer environment
US11200143B2 (en) * 2019-01-08 2021-12-14 FinancialForce.com, Inc. Software development framework for a cloud computing platform
US11321749B2 (en) * 2019-01-23 2022-05-03 Kyndryl, Inc. Metering based on application code complexity

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105527868A (zh) * 2014-10-15 2016-04-27 洛克威尔自动控制技术股份有限公司 应用环境中的客户资产
CN105988450A (zh) * 2015-03-16 2016-10-05 洛克威尔自动控制技术股份有限公司 基于云的工业控制器

Also Published As

Publication number Publication date
EP3798760A3 (en) 2021-06-02
EP3798760A2 (en) 2021-03-31
US11740896B2 (en) 2023-08-29
CN112579154A (zh) 2021-03-30
EP3798760B1 (en) 2023-06-07
US20220107801A1 (en) 2022-04-07
US20210096852A1 (en) 2021-04-01
US11231924B2 (en) 2022-01-25
EP3798760C0 (en) 2023-06-07

Similar Documents

Publication Publication Date Title
CN112579432B (zh) 用于工业自动化规则引擎的系统和方法
CN112578765B (zh) 用于工业自动化故障排除的系统和方法
CN112578701B (zh) 用于工业自动化控制系统的智能选择和建立的系统和方法
CN112578742B (zh) 用于工业自动化设备的客户特定命名约定的系统和方法
CN112578741B (zh) 用于工业自动化设备库的系统和方法
EP3798765A1 (en) System and method for light engineering client for industrial automation system
CN112579154B (zh) 用于工业自动化项目代码分析的系统和方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant