Systems, methods, and computer-readable media for developing industrial applications
Through the integrated development environment (IDE) system, the fragmented design problem of industrial automation systems is solved, the resource manager panel and automation objects are provided, the integrated and efficient development of the system is realized, and the development interface and debugging process is simplified.
Patent Information
- Application Number
- CN202211137145.7
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2021-09-20
- Filing Date
- 2022-09-19
- Publication Date
- 2025-07-22
- Estimated Expiration
- 2042-09-19
AI Technical Summary
In the prior art, different aspects of industrial automation systems require separate design, configuration, and programming in different development environments, resulting in fragmented design methods, increasing the difficulty of testing and debugging, and the development interface usually provides too many editing options, resulting in confusing development workspaces and difficulty in positioning desired editing functions.
Provides an integrated development environment (IDE) system that presents the development interface through user interface components, including the resource manager panel, displays offline and online version differences of the control program, and automatically filters irrelevant tools and information, supports multi-developer collaboration, uses automation objects as building blocks, and generates and deploys system projects.
Simplifies the design and configuration of industrial automation systems, reduces confusion, improves development efficiency, ensures appropriate integration and rapid positioning and editing functions in the system, and supports project debugging and deployment across different devices.
Smart Images

Figure CN115840422B_ABST
Abstract
Description
Technical Field
[0001] The subject matter disclosed herein generally relates to industrial automation systems and, for example, to industrial programming development platforms. Background Art
[0002] The need to program and configure different aspects of an industrial automation system using separate configuration tools has led to a fragmented design approach, whereby different but related or overlapping aspects of the automation system are designed, configured, and programmed separately on different development environments. For example, a motion control system may require programming an industrial controller and tuning control loops using a control logic programming platform, configuring a motor drive using another configuration platform, and programming an associated HMI using a visualization development platform. Related peripheral systems - such as vision systems, safety systems, etc. - may also need to be configured using separate programming or development applications.
[0003] This separate development approach may also require a significant amount of testing and debugging effort to ensure proper integration of the separately configured system aspects. In this regard, due to the failure to properly coordinate different programming efforts, significant debugging may be required for the expected data docking or coordinated actions between different system aspects.
[0004] Industrial development platforms are also limited in the development interfaces provided to users to facilitate programming and configuration. These interfaces typically provide a fixed user experience that requires users to develop control code, visualization, or other control system aspects using a relatively fixed set of development interfaces. In many development scenarios, the number of editing options - such as function buttons or other selectable editing controls, configuration fields, etc. - displayed on the interface of the development platform exceeds the number required by the developer for the current project development tasks, resulting in an unnecessarily cluttered development workspace and making it difficult to locate the desired editing options. Summary of the Invention
[0005] A simplified overview is presented below in order to provide a basic understanding of some aspects described herein. This overview is not an extensive review nor is it intended to identify key / important elements or delineate the scope of the various aspects described herein. Its sole purpose is to present some concepts in a simplified form as a prelude to the more detailed description that follows.
[0006] In one or more embodiments, a system for developing industrial applications is provided, the system comprising: a user interface component configured to present an industrial integrated development environment (IDE) development interface and receive industrial design input via interaction with the development interface, the industrial design input defining aspects of an industrial automation project; a project generation component configured to generate system project data based on the industrial design input; and a project deployment component configured to remotely connect the system to an industrial controller, wherein the development interface includes a resource manager panel facilitating browsing of aspects of the industrial automation project, the resource manager panel displaying nodes representing routines of one or more control programs included as part of the industrial automation project, and the user interface component is configured to: in response to determining that a routine of an offline version of a control program being viewed on the development interface does not match a corresponding routine of an online version of the control program executing on the industrial controller, present a symbol representing the routine beside one of the nodes.
[0007] Further, one or more embodiments provide a method for developing industrial applications, the method comprising: presenting, by an industrial integrated development environment (IDE) system including a processor, a development interface on a client device, wherein the development interface includes a resource manager panel facilitating browsing of aspects of the industrial automation project, and the presenting includes: displaying on the resource manager panel nodes representing routines of one or more control programs that are part of the industrial automation project, and in response to determining that a routine of an offline version of a control program being viewed on the development interface does not match a corresponding routine of an online version of the control program executing on the industrial controller, presenting a symbol corresponding to the routine beside one of the nodes.
[0008] Moreover, according to one or more embodiments, a non-transitory computer-readable medium is provided, having instructions stored thereon that, in response to execution, cause an industrial integrated development environment (IDE) system to perform operations, the operations including: presenting a development interface on a client device, wherein the development interface includes a resource manager panel that facilitates browsing of aspects of the industrial automation project, and the presenting includes: displaying on the resource manager panel nodes representing routines of one or more control programs that are part of the industrial automation project, and in response to determining that a routine of an offline version of a control program being viewed on the development interface is different from a corresponding routine of an online version of the control program executing on the industrial controller, presenting a symbol corresponding to the routine beside one of the nodes.
[0009] To achieve the foregoing and related purposes, certain illustrative aspects are described herein in connection with the following description and the accompanying drawings. These aspects indicate various ways in which the invention may be practiced, all of which are intended to be encompassed herein. Other advantages and novel features may become apparent from the following detailed description when considered in conjunction with the accompanying drawings. BRIEF DESCRIPTION OF THE DRAWINGS
[0010] Figure 1 is a block diagram of an example industrial control environment.
[0011] Figure 2 is a block diagram of an example integrated development environment (IDE) system.
[0012] Figure 3 is a diagram showing the general architecture of an industrial IDE system.
[0013] Figure 4 is a diagram showing several example automation object properties that can be utilized by an IDE system in connection with building, deploying, and executing system projects.
[0014] Figure 5 is a diagram showing an example data flow associated with creating a system project for an automation system designed using an industrial IDE system.
[0015] Figure 6 is a diagram showing an example system project that incorporates automation objects into a project model.
[0016] Figure 7 is a diagram showing debugging of a system project.
[0017] Figure 8 is a diagram showing an example architecture in which a cloud-based IDE service is used to develop an industrial application and deploy the industrial application to a factory environment.
[0018] Figure 9 is an example development interface that may be presented by one or more implementations of a user interface component of an industrial IDE system.
[0019] Figure 10a is a close-up view of a full panel control bar showing an example organization of panel visibility icons.
[0020] Figure 10b is an example view menu that may be presented as a drop-down menu in response to a selection of a view option in a menu bar of an industrial IDE system.
[0021] Figure 11a is a view of the upper right corner of a development interface depicting a property panel fixed in a right full panel area.
[0022] Figure 11bIt is a view of the upper right corner of a development interface depicting the selection of an online panel as an overlay panel in the right full panel area.
[0023] Figure 11c It is a view of the upper right corner of a development interface depicting two fixed panels that are simultaneously visible.
[0024] Figure 11d It is a view of the upper right corner of a development interface where the toolbox panel is presented as an overlay on top of the property panel.
[0025] Figure 11e It is a view of the upper right corner of a development interface where the toolbox panel is switched to a fixed panel.
[0026] Figure 12 It is a view of the upper right corner of a development interface depicting the panel placement area in the right full panel area.
[0027] Figure 13a It is a view of two horizontally stacked fixed panels in the default non - collapsed state.
[0028] Figure 13b It is a view of two horizontally stacked fixed panels with the bottom panel in the collapsed state.
[0029] Figure 13c It is a view of two horizontally stacked fixed panels with the top panel in the collapsed state.
[0030] Figure 14 It is a view of an example canvas within the canvas area of an industrial IDE development interface.
[0031] Figure 15 It is a view of an industrial development interface where two canvases are horizontally stacked.
[0032] Figure 16a It is a view of a two - tabbed development interface where a tab is selected and the corresponding ladder logic canvas is presented in the canvas area.
[0033] Figure 16b It is a view of a two - tabbed development interface where a tab is selected and the corresponding tag database canvas is presented in the canvas area.
[0034] Figure 17a It is a view of a development interface where a single canvas is open and the left panel, right panel, or bottom panel is not called.
[0035] Figure 17b It is a view of a development interface where the explorer panel is presented as visible in the left full panel area and the property panel is presented in the right full panel area.
[0036] Figure 17c is a view of a development interface where a layer panel has been added to a previous view.
[0037] Figure 17d is a view of a development interface where a second canvas is added stacked horizontally with a previously existing canvas.
[0038] Figure 17e is a view of a development interface where a third canvas is added to a previous view and stacked vertically with two previous canvases.
[0039] Figure 18 is a view of an explorer panel that resides in the left full panel area of the development interface when invoked.
[0040] Figure 19a is a view of the explorer panel when the logical system view is currently selected.
[0041] Figure 19b is a view of the explorer panel when the execution system view is currently selected.
[0042] Figure 20 is an example explorer panel depicting a system navigation tree of an example automation system project.
[0043] Figure 21a shows an example response of an industrial IDE development interface when a user selects but does not start a ladder logic node representing a ladder logic program of a system project.
[0044] Figure 21b shows an example response of an industrial IDE development interface when a user starts ladder logic node 2002.
[0045] Figure 21c shows an example response of an industrial IDE development interface when a user right-clicks on a ladder logic node.
[0046] Figure 22a is a view of the explorer panel when the application view and the controller tab are currently selected.
[0047] Figure 22b is a view of the explorer panel when the application view and the HMI tab are currently selected.
[0048] Figure 23 is a view of an industrial IDE workspace canvas presenting a part of an example structured text program in response to the selection of a structured text application node.
[0049] Figure 24A view of an industrial IDE workspace canvas that presents a portion of an example functional block diagram program in response to a selection of a functional block diagram application node.
[0050] Figure 25 A view of the explorer panel when the device view is currently selected.
[0051] Figure 26 A view of an industrial IDE workspace canvas that presents information of an example controller in response to a selection of a controller node.
[0052] Figure 27 A view of the explorer panel when the library view is currently selected.
[0053] Figure 28 A view of the explorer panel when the extended view is currently selected.
[0054] Figure 29a The left instance of an industrial IDE development interface distributed across two display devices.
[0055] Figure 29b The right instance of an industrial IDE development interface distributed across two display devices.
[0056] Figure 30 An example available tab menu.
[0057] Figure 31a An industrial IDE development interface presented according to a first layout mode suitable for scenarios without width limitations.
[0058] Figure 31b An industrial IDE development interface presented according to a second layout mode invoked when the available screen width is below a first threshold width.
[0059] Figure 31c An industrial IDE development interface presented according to a third layout mode that can be initiated when the available screen width is below a second threshold width, where the second threshold width is less than the first threshold width.
[0060] Figure 32 A diagram showing an implementation of an IDE system that resides on a cloud platform and executes as a collection of cloud-based IDE services accessible by authorized remote client devices.
[0061] Figure 33 A view of a development interface that includes a visualization tool for notifying a developer of differences between an online version and a local version of a control program.
[0062] Figures 34a to 34cIt is a view of the resource manager panel independent of the selected system view.
[0063] Figure 35a It is a flowchart of the first part of an example method for presenting graphical indications of the online and offline states of an industrial control program on an industrial IDE system.
[0064] Figure 35b It is a flowchart of the second part of an example method for presenting graphical indications of the online and offline states of an industrial control program on an industrial IDE system.
[0065] Figure 35c It is a flowchart of the third part of an example method for presenting graphical indications of the online and offline states of an industrial control program on an industrial IDE system.
[0066] Figure 36 It is an example computing environment.
[0067] Figure 37 It is an example networking environment. Detailed Description
[0068] The present disclosure will now be described with reference to the accompanying drawings, in which like reference numerals are always used to refer to like elements. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present disclosure. It is apparent, however, that the present disclosure may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form in order to facilitate their description.
[0069] As used in this application, the terms "component", "system", "platform", "layer", "controller", "terminal", "station", "node", "interface" are intended to refer to a computer-related entity or an entity related to an operating device having one or more specific functions or an entity that is part of such an operating device, where such an entity can be hardware, a combination of hardware and software, software, or software in execution. For example, a component can be, but is not limited to, a process running on a processor, a processor, a hard disk drive, multiple storage drives (optical storage media or magnetic storage media) including fixed (e.g., screwed or bolted) or removable fixed solid state storage drives; an object; an executable file; an executing thread; a computer-executable program and / or a computer. As an illustration, both a server and an application running on the server can be components. One or more components can reside within an executing process and / or thread, and a component can be located on one computer and / or distributed between two or more computers. Additionally, the components described herein can execute from various computer-readable storage media storing various data structures. These components can communicate, for example, via local and / or remote processes according to a signal having one or more data packets (e.g., data from a component that interacts with a local system, another component in a distributed system, and / or interacts with other systems via a network such as the Internet). As another example, a component can be a device having a specific function provided by a mechanical component operated by an electrical or electronic circuitry system that is operated by a software or firmware application executed by a processor, where the processor can be inside or outside the device and executes at least a portion of the software or firmware application. As yet another example, a component can be a device that provides a specific function through an electronic component rather than a mechanical component, and the electronic component can include a processor therein to execute software or firmware that at least partially provides the function of the electronic component. As yet another example, an interface can include input / output (I / O) components and associated processors, applications, or application programming interface (API) components. Although the foregoing examples are directed to aspects of components, the illustrated aspects or features also apply to systems, platforms, interfaces, layers, controllers, terminals, etc.
[0070] As used herein, the terms "infer" and "inference" generally refer to the process of reasoning or inferring about the state of a system, environment, and / or user based on a set of observations captured via events and / or data. For example, an inference can be used to identify a particular context or action, or can generate a probability distribution over states. An inference can be probabilistic, i.e., calculating a probability distribution over states of interest based on consideration of data and events. An inference can also refer to techniques for composing higher-level events from a set of events and / or data. Such inferences result in constructing new events or actions from a set of observed events and / or stored event data, regardless of whether the events are closely related in temporal proximity and whether the events and data are from one or several events and data sources.
[0071] Additionally, the term "or" is intended to mean an inclusive "or" rather than an exclusive "or". That is, unless otherwise stated or clear from the context, the phrase "X uses A or B" is intended to mean any of the natural inclusive permutations. That is, any of the following examples satisfy the phrase "X uses A or B": X uses A; X uses B; or X uses both A and B. Additionally, the articles "a" and "an" as used in this application and the appended claims should generally be construed to mean "one or more" unless otherwise stated or clear from the context that the article is directed to the singular form.
[0072] Furthermore, as used herein, the term "set" excludes the empty set, e.g., a set with no elements. Thus, a "set" in this disclosure includes one or more elements or entities. By way of illustration, a set of controllers includes one or more controllers; a set of data resources includes one or more data resources; and so on. Similarly, the term "group" as used herein refers to a collection of one or more entities, e.g., a group of nodes refers to one or more nodes.
[0073] Aspects or features will be presented with respect to systems that may include multiple devices, components, modules, etc. It should be understood and appreciated that various systems may include additional devices, components, modules, etc., and / or various systems may not include all of the devices, components, modules, etc. discussed in connection with the figures. Combinations of these methods may also be used.
[0074] Figure 1is a block diagram of an example industrial control environment 100. In this example, multiple industrial controllers 118 are deployed throughout an industrial plant environment to monitor and control corresponding industrial systems or processes related to product manufacturing, processing, motion control, batch processing, material handling, or other such industrial functions. The industrial controllers 118 typically execute corresponding control programs to facilitate the monitoring and control of industrial equipment 120 (e.g., industrial machines) that make up the controlled industrial assets or systems. One or more of the industrial controllers 118 may also include soft controllers executed on a personal computer or other hardware platform or on a cloud platform. Some hybrid devices may also combine controller functionality with other functions (e.g., visualization). The control programs executed by the industrial controllers 118 may include substantially any type of code capable of processing input signals read from the industrial equipment 120 and controlling output signals generated by the industrial controllers 118, and the any type of code includes, but is not limited to, ladder logic, sequential function charts, function block diagrams, or structured text.
[0075] The industrial equipment 120 may include both input devices that provide data related to the controlled industrial system to the industrial controllers 118 and output devices that respond to control signals generated by the industrial controllers 118 for controlling aspects of the industrial system. Example input devices may include telemetry devices (e.g., temperature sensors, flow meters, level sensors, pressure sensors, etc.), manual operator control devices (e.g., buttons, selector switches, etc.), safety monitoring devices (e.g., safety mats, safety pull cords, light curtains, etc.), and other such devices. Output devices may include motor drives, pneumatic actuators, signaling devices, robot control inputs, valves, pumps, etc.
[0076] Industrial controller 118 can communicatively interface with industrial devices 120 through hardwired or networked connections. For example, industrial controller 118 can be equipped with local hardwired inputs and outputs for communicating with industrial devices 120 to effect control of those devices. Local controller I / O can include digital I / O that sends discrete voltage signals to field devices and receives discrete voltage signals from field devices, or analog I / O that sends analog voltage or current signals to devices and receives analog voltage or current signals from devices. The controller I / O can communicate with the processor of the controller through a backplane such that digital and analog signals can be read into a control program and controlled by the control program. Industrial controller 118 can also communicate with industrial devices 120 over a network using, for example, a communication module or an integrated networking port. Exemplary networks can include the Internet, intranets, Ethernet, DeviceNet, ControlNet, Data Highway and Data Highway Plus (DH / DH+), Remote I / O, Fieldbus, Modbus, Profibus, wireless networks, serial protocols, and the like. Industrial controller 118 can also store persistent data values that can be referenced by its associated control program and used for control decisions, the persistent data values including, but not limited to, measured or calculated values representing the operating state of a controlled machine or process (e.g., tank level, position, alarms, etc.), or captured time series data collected during operation of an automation system (e.g., status information at multiple time points, occurrence of diagnostics, etc.). Similarly, some intelligent devices - including, but not limited to, motor drives, instruments, or condition monitoring modules - can store data values for controlling and / or visualizing an operating state. Such devices can also capture time series data or events in a log for later retrieval and viewing.
[0077] Industrial automation systems typically include one or more human-machine interfaces (HMIs) 114 that allow plant personnel to view telemetry and status data associated with the automation system and control some aspects of system operation. The HMI 114 can communicate with one or more of the industrial controllers 118 via the plant network 116 and exchange data with the industrial controllers to visualize information related to the controlled industrial process on one or more pre-developed operator interface screens. The HMI 114 can also be configured to allow an operator to submit data to a specified data tag or memory address of the industrial controller 118, thereby providing a means for the operator to issue commands to the controlled system (e.g., cycle start command, device actuation command, etc.), modify setpoint values, and the like. The HMI 114 can generate one or more display screens through which the operator interacts with the industrial controller 118 and thus with the controlled process and / or system. Example display screens can use graphical representations of processes that display measured or calculated values to visualize the current state of the industrial system or its associated equipment, employ state-based color or position animations, present alarm notifications, or use other such techniques to present relevant data to the operator. The data presented in this way is read by the HMI 114 from the industrial controller 118 and presented on one or more of the display screens according to a display format selected by the HMI developer. The HMI can include a fixed-location device or a mobile device with a user-installed or pre-installed operating system and a user-installed or pre-installed graphical application software.
[0078] Some industrial environments may also include other systems or devices related to specific aspects of the controlled industrial system. These systems or devices can include, for example, a data historian 110 that aggregates and stores production information collected from the industrial controller 118 or other data sources, a device document repository containing electronic documents of the various industrial devices that make up the controlled industrial system, an inventory tracking system, a work order management system, a repository for machine or process drawings and documentation, a supplier product document repository, a supplier knowledge base, an internal knowledge base, a work scheduling application, or other such systems, some or all of which may reside on the office network 108 of the industrial environment.
[0079] Higher-level systems 126 can perform functions that are not as directly related to the control of industrial automation systems at the factory floor and instead are directed towards long-term planning, high-level supervisory control, analysis, reporting, or other such high-level functions. These systems 126 can reside on the office network 108 at an external location relative to the factory facility, or on a cloud platform that can access the office network and / or the factory network. Higher-level systems 126 can include, but are not limited to, cloud storage and analysis systems, big data analysis systems, manufacturing execution systems, data lakes, reporting systems, etc. In some scenarios, applications running at these higher levels in an enterprise can be configured to analyze control system operation data, and the results of this analysis can be fed back to an operator at the control system or directly to a controller 118 or device 120 in the control system.
[0080] The various control, monitoring, and analysis devices that make up the industrial environment must be programmed or configured using corresponding configuration applications specific to each device. For example, an industrial controller 118 is typically configured and programmed using a control programming development application such as a ladder logic editor (e.g., executed on the client device 124). Using such a development platform, a designer can write a control program (e.g., ladder logic, structured text, function block diagram, etc.) for performing a desired industrial sequence or process and download the resulting program file to the controller 118. Separately, a developer uses an HMI development platform (e.g., executed on the client device 122) to design a visualization screen and associated navigation structure for the HMI 114 and downloads the resulting visualization file to the HMI 114. Some industrial devices 120 - such as motor drives, telemetry devices, safety input devices, etc. - may also need to be configured using a separate device configuration tool specific to the device being configured (e.g., executed on the client device 128). Such a device configuration tool can be used to set device parameters or operating modes (e.g., high / low limits, output signal format, scale factor, energy consumption mode, etc.).
[0081] The need to program and configure different aspects of an industrial automation system using separate configuration tools has led to a fragmented design approach, whereby different but related or overlapping aspects of the automation system are designed, configured, and programmed separately on different development environments. For example, a motion control system may require programming an industrial controller using a control logic programming platform and tuning the control loop, configuring a motor drive using another configuration platform, and programming an associated HMI using a visualization development platform. Related peripheral systems - such as vision systems, safety systems, etc. - may also need to be configured using separate programming or development applications.
[0082] This separate development approach may also require a fair amount of testing and debugging effort to ensure proper integration of the separately configured system aspects. In this regard, due to the failure to properly coordinate different programming efforts, significant debugging may be required for the expected data docking or coordination actions between different system aspects.
[0083] Industrial development platforms are also limited in terms of the development interfaces provided to users to facilitate programming and configuration. These interfaces typically provide a fixed user experience that requires users to use a relatively fixed set of development interfaces to develop control code, visualization, or other control system aspects. In many development scenarios, the number of editing options displayed on the interface of the development platform - such as function buttons or other selectable editing controls, configuration fields, etc. - exceeds the number required by the developer for the current project development tasks, resulting in an unnecessarily cluttered development workspace and making it difficult to locate the desired editing options.
[0084] To address at least some of these problems or other problems, one or more embodiments described herein provide an integrated development environment (IDE) for designing, programming, and configuring multiple aspects of an industrial automation system using a common design environment and data model. Embodiments of the industrial IDE can be used to configure and manage automation system devices in a common manner, thereby facilitating integrated multidisciplinary programming of the control, visualization, and other aspects of the control system.
[0085] In some embodiments, the development interface presented by the IDE system can provide the user with a great deal of control over the editing tools, workspace canvas, and project information presented at a given time. The IDE system also automatically filters the available tools, panels, and information based on a determination of the current project development task that the user is performing, such that a focused subset of the editing tools relevant to the current development task is available for selection while other tools are hidden. The development interface also allows the user to selectively present or hide the selected tools or information from the relevant, filtered set of tools. This approach can reduce or eliminate unnecessary clutter and assist the developer in quickly and easily locating and selecting the desired editing functions. The development interface of the IDE can also conform to the structured organization of the workspace canvas and panels, which promotes an intuitive workflow.
[0086] Figure 2It is a block diagram of an example integrated development environment (IDE) system 202 according to one or more embodiments of the present disclosure. Aspects of the systems, apparatuses, or processes described in the present disclosure may constitute machine-executable components contained within a machine, such as machine-executable components contained within one or more computer-readable media (or media) associated with one or more machines. When executed by one or more machines, such as a computer, computing device, automated device, virtual machine, etc., such components may cause the machine to perform the described operations.
[0087] The IDE system 202 may include: a user interface component 204 including an IDE editor 224, a project generation component 206, a project deployment component 208, a collaboration management component 210, one or more processors 218, and a memory 220. In various embodiments, one or more of the user interface component 204, the project generation component 206, the project deployment component 208, the collaboration management component 210, one or more processors 218, and the memory 220 may be electrically coupled and / or communicatively coupled to each other to perform one or more of the functions of the IDE system 202. In some embodiments, the components 204, 206, 208, and 210 may include software instructions stored on the memory 220 and executed by the processor 218. The IDE system 202 may also interact with Figure 2 other hardware components and / or software components not depicted. For example, the processor 218 may interact with one or more external user interface devices such as a keyboard, mouse, display monitor, touch screen, or other such interface devices.
[0088] The user interface component 204 can be configured to receive user input and present output to the user in any suitable format (e.g., visual, audio, tactile, etc.). In some embodiments, the user interface component 204 can be configured to communicatively interact with an IDE client executing on a client device (e.g., a laptop computer, a tablet computer, a smart phone, etc.), and the client device is communicatively connected to the IDE system 202 (e.g., via a hardwired connection or a wireless connection). Then, the user interface component 204 can receive user input data via the IDE client and present output data. In other embodiments, the user interface component 204 can be configured to generate a development interface screen (e.g., a program development screen) and provide the development interface screen to the client device, and exchange data via these interface screens. As will be described in more detail herein, the development interfaces presented by the user interface component 204 support many user experience features, which simplify the project development workflow, relieve the stress associated with a cluttered development workspace, and assist developers in locating desired editing functions more quickly and easily. The input data that can be received via various embodiments of the user interface component 204 can include, but is not limited to, programming code, industrial design specifications or objectives, engineering drawings, AR / VR input, DSL definitions, video or image data, or other such inputs. The output data presented by various embodiments of the user interface component 204 can include program code, programming feedback (e.g., errors and highlights, coding suggestions, etc.), programming and visualization development screens, and the like.
[0089] The project generation component 206 can be configured to create a system project including one or more project files based on the design input received via the user interface component 204 and the industrial knowledge, predefined code modules, and visualization and automation objects 222 maintained by the IDE system 202. The project deployment component 208 can be configured to delegate the system project created by the project generation component 206 to an appropriate industrial device (e.g., a controller, an HMI terminal, a motor drive, an AR / VR system, etc.) for execution. To this end, the project deployment component 208 can identify the appropriate target devices to which the corresponding parts of the system project should be sent for execution, convert these corresponding parts into a format understandable by the target devices, and deploy the converted project components to their corresponding devices. The collaboration management component 210 can be configured to manage and regulate the design inputs submitted by multiple developers in a manner that ensures project consistency and coordination among the developers.
[0090] One or more processors 218 can execute one or more of the functions described herein with reference to the disclosed systems and / or methods. The memory 220 can be a computer-readable storage medium storing computer-executable instructions and / or information for executing the functions described herein with reference to the disclosed systems and / or methods.
[0091] Figure 3 FIG. is a diagram showing a general architecture of an industrial IDE system 202 according to one or more embodiments. The industrial IDE system 202 can implement a common set of services and workflows not only across design but also across debugging, operation, and maintenance. In terms of design, the IDE system 202 can support not only industrial controller programming and HMI development, but also sizing and selection of system components, device / system configuration, AR / VR visualization, and other features. The IDE system 202 can also include tools that streamline and automate the debugging of the resulting project and assist in the subsequent management of the deployed system during runtime.
[0092] Embodiments of the IDE system 202 implemented on a cloud platform also facilitate collaborative project development, whereby multiple developers 304 contribute design and programming input to a common automation system project 302. The collaborative tools supported by the IDE system can manage design contributions from multiple contributors and perform version control of the aggregated system project 302 to ensure project consistency.
[0093] Based on design and programming input from one or more developers 304, the IDE system 202 generates a system project 302 that includes one or more project files. The system project 302 encodes one or more of the following: a control program; HMI, AR, and / or VR visualization; device or subsystem configuration data (e.g., drive parameters, vision system configuration, telemetry device parameters, safety zone definitions, etc.); or other such aspects of the industrial automation system being designed. The IDE system 202 can identify an appropriate target device 306 (e.g., an industrial controller, an HMI terminal, a variable frequency drive, a safety device, etc.) on which the corresponding aspect of the system project 302 should be executed, convert the system project 302 into an executable file that can be executed on the corresponding target device, and deploy the executable file to its corresponding target device 306 for execution, thereby delegating the system project 302 to the factory floor for realizing the automation project.
[0094] To support enhanced development capabilities, some embodiments of the IDE system 202 can be built on an object - based data model rather than a tag - based architecture. Automation objects 222 serve as building blocks for this object - based development architecture. Figure 4FIG. is a diagram showing several example automation object properties related to building, deploying, and executing a system project 302 that can be utilized by an IDE system 202. Automation objects 222 can be created and augmented during design, integrated into a larger data model, and consumed during runtime. These automation objects 222 provide a common data structure across the IDE system 202 and can be stored in an object library (e.g., a portion of the memory 220) for reuse. The object library can store predefined automation objects 222 representing various classifications of real-world industrial assets 402, which include but are not limited to pumps, tanks, valves, motors, motor drives (e.g., variable frequency drives), industrial robots, actuators (e.g., pneumatic or hydraulic actuators), or other such assets. Automation objects 222 can represent elements at essentially any level of an industrial enterprise, including individual devices, machines composed of many industrial devices and components (some of which may be associated with their own automation objects 222), and entire production lines or process control systems.
[0095] Automation objects 222 for a given type of industrial asset can encode aspects such as 2D or 3D visualization, alarms, control coding (e.g., logic or other types of control programs), analysis, startup procedures, test protocols, verification reports, simulations, diagrams, security protocols, and other such properties associated with the industrial asset 402 represented by the object 222. The automation objects 222 can also be geographically tagged with location information identifying the location of the associated asset. During the runtime of the system project 302, the automation object 222 corresponding to a given real-world asset 402 can also record status or operational history data about the asset. Generally, the automation object 222 serves as a programming representation of its corresponding industrial asset 402 and can be incorporated into the system project 302 as an element of control code, 2D or 3D visualization, a knowledge base or maintenance guidance system for the industrial asset, or other such aspects.
[0096] Figure 5This is a diagram showing an example data flow associated with creating a system project 302 for an automation system designed using the IDE system 202 according to one or more embodiments. A client device 504 (e.g., a laptop computer, a tablet computer, a desktop computer, a mobile device, a wearable AR / VR device, etc.) executing an IDE client application 514 can access the project development tools of the IDE system and utilize these tools to create an integrated system project 302 for the automation system being developed. By interacting with the user interface component 204 of the system, a developer can submit design inputs 512 to the IDE system 202 in various supported formats, including industry-specific control programs (e.g., control logic, structured text, sequential function charts, etc.) and HMI screen configuration inputs. Based on the design inputs 512 and the information stored in the industrial knowledge base (predefined code modules 508 and visualizations 510, guardrail templates 506, physics-based rules 516, etc.), the user interface component 204 presents design feedback 518, which is designed to assist the developer in developing a system project 302 for configuring, controlling, and visualizing an industrial automation system.
[0097] In addition to control programming and visual definition, some implementations of the IDE system 202 can be configured to receive digital engineering drawings (e.g., computer-aided design (CAD) files) as design inputs 512. In such implementations, the project generation component 206 can generate portions of the system project 302 based on an analysis of the existing design drawings, such as by automatically generating control and / or visual code. Drawings that can be submitted as design inputs 512 can include, but are not limited to, P&ID drawings, mechanical drawings, flowcharts, or other such documents. For example, a P&ID drawing can be imported into the IDE system 202, and the project generation component 206 can identify the elements conveyed by the drawing (e.g., tanks, pumps, etc.) and the relationships between them. The project generation component 206 can associate or map the elements identified in the drawing with appropriate automation objects 222 corresponding to those elements (e.g., tanks, pumps, etc.) and add these automation objects 222 to the system project 302. Device-specific and asset-specific automation objects 222 include the appropriate code and visualization to be associated with the elements identified in the drawing. Generally, the IDE system 202 can examine one or more different types of drawings (mechanical, electrical, piping, etc.) to determine the relationships between devices, machines, and / or assets (including identifying common elements across different drawings) and intelligently associate these elements with appropriate automation objects 222, code modules 508, and / or visualizations 510. In generating code or project data for the system project 302, the IDE system 202 can utilize physics-based rules 516 and predefined code modules 508 and visualizations 510 as needed.
[0098] The IDE system 202 can also determine whether predefined visualizations are available for any of the objects found in the drawing and generate appropriate HMI screens or AR / VR content for the discovered objects based on these predefined visualizations. To this end, the IDE system 202 can store industry-, asset-, and / or application-specific visualizations 510 that can be accessed on demand by the project generation component 206. These visualizations 510 can be classified according to the industry or industrial vertical market (e.g., automotive, food and pharmaceuticals, oil and gas, pharmaceuticals, etc.), the type of industrial asset (e.g., the type of machine or industrial equipment), the type of industrial application (e.g., batch processing, flow control, web tension control, sheet metal stamping, water treatment, etc.), or other such categories. The predefined visualizations 510 can include visualizations in various formats, including but not limited to HMI screens or windows, mashups that aggregate data from multiple pre-specified sources, AR overlays, VR objects that represent the 3D virtualization of associated industrial assets, or other such visualization formats. The IDE system 202 can select a suitable visualization for a given object based on a predefined association between the object type and the visualization content.
[0099] In another example, the markings applied by the user to the engineering drawing can be understood by some implementations of the project generation component 206 to convey specific design intents or parameters. For example, a marking made with a red pen can be understood to indicate a safety area, two circles connected by a dashed line can be interpreted as a gear relationship, and a thick line can indicate a cam relationship. In this way, the designer can sketch design goals on an existing drawing in a way that the IDE system 202 can understand and utilize to generate code and visualizations. In another example, the project generation component 206 can learn the permissions and interlocks (e.g., valves and their associated states) that serve as the necessary preconditions for starting a machine based on an analysis of the user's CAD drawing. The project generation component 206 can generate any suitable code (ladder logic, function blocks, etc.), device configurations, and visualizations for incorporation into the system project 302 based on an analysis of these drawings and markings. In some implementations, the user interface component 204 can include design tools for developing engineering drawings within the IDE platform itself, and the project generation component 206 can generate the code as a background process when the user creates a drawing for a new project. In some implementations, the project generation component 206 can also convert a state machine diagram into a corresponding programming sequence, thereby at least generating skeletal code that can be enhanced by the developer with additional programming details as needed.
[0100] Additionally or alternatively, some embodiments of the IDE system 202 may support goal-based automated programming. For example, the user interface component 204 may allow the user to specify the production goals of the automated system being designed (e.g., specifying that the bottling plant being designed must be able to produce at least 5000 bottles per second during normal operation) and any other relevant design constraints applied to the design project (e.g., budget limitations, available shop floor space, available control cabinet space, etc.). Based on this information, the project generation component 206 will generate some parts of the system project 302 to meet the specified design goals and constraints. Some parts of the system project 302 that can be generated in this way may include, but are not limited to, equipment and equipment selection (e.g., how many pumps, controllers, stations, conveyors, drives, or other assets will be required to meet the definition of the specified goal), associated equipment configuration (e.g., adjustment parameters, network settings, drive parameters, etc.), control coding, or HMI screens suitable for visualizing the automated system being designed.
[0101] Some embodiments of the project generation component 206 may also generate at least some of the project code for the system project 302 based on knowledge of the parts that have been ordered for the project being developed. This may involve: accessing the customer's account information maintained by the equipment supplier to identify the equipment that has been purchased for the project. Based on this information, the project generation component 206 may add appropriate automation objects 222 and associated code modules 508 corresponding to the purchased assets, thereby providing a starting point for project development.
[0102] Some implementations of the project generation component 206 can also monitor customer - specific design methods for co - programmed functions (e.g., pumping applications, batch processing, palletizing operations, etc.) and generate recommendations for design modules (e.g., code module 508, visualization 510, etc.) that a user may wish to incorporate into the current design project based on an inference of the designer's goals and the methods learned to achieve that goal. To this end, some implementations of the project generation component 206 can be configured to monitor design inputs 512 over time and, based on that monitoring, learn the correlations between certain design actions (e.g., adding certain code modules or code snippets to the design project, selecting certain visualizations, etc.) and the type of industrial asset, industrial sequence, or industrial process being designed. The project generation component 206 can record these learned correlations and generate recommendations based on them during subsequent project development sessions. For example, if the project generation component 206 determines based on an analysis of the design inputs 512 that the designer is currently developing a control project for an industrial equipment that has been programmed and / or visualized in the past in a repetitive and predictable manner, the project generation component 206 can instruct the user interface component 204 to present recommended development steps or code module 508 that the designer may wish to incorporate into the system project 302 based on how the equipment was configured and / or programmed in the past.
[0103] In some implementations, the IDE system 202 can also store and implement guardrail templates 506 that define design guardrails intended to ensure that the project complies with internal or external design standards. Based on the design parameters defined by one or more selected guardrail templates 506, the user interface component 204 can provide dynamic recommendations or other types of feedback as a subset of the design feedback 518, which are designed to guide the developer in a manner that ensures the system project 302 complies with internal or external requirements or standards (e.g., certifications such as TUV certification, internal design standards, industry - specific or vertical - market - specific design standards, etc.). This feedback 518 can take the form of text - based recommendations (e.g., recommendations to rewrite an indicative portion of control code to comply with the defined programming standards), syntax highlighting, error highlighting, auto - completion of code snippets, or other such formats. In this way, the IDE system 202 can customize the design feedback 518, which includes programming recommendations, recommendations for predefined code modules 508 or visualizations 510, error highlighting, and syntax highlighting, according to the type of industrial system being developed and any applicable internal design standards.
[0104] The guardrail template 506 can also be designed to conform to global best practices applicable to other aspects of control programming or project development. For example, if the developer's control programming is considered too complex (as defined by the criteria specified by one or more guardrail templates 506), the user interface component 204 can generate and present an alert. Since different vertical markets (e.g., automotive, pharmaceutical, oil and gas, food and drug, marine, etc.) must comply with different standards and certifications, the IDE system 202 can maintain a library of guardrail templates 506 for different internal and external standards and certifications, including customized user-specific guardrail templates 506. These guardrail templates 506 can be classified according to industrial vertical markets, types of industrial applications, factory facilities (in the case of customized internal guardrail templates 506), or other such categories. During development, the project generation component 206 can select and apply a subset of guardrail templates 506 determined to be relevant to the currently developing project based on aspects such as the industrial vertical market associated with the project, the type of industrial application being programmed (e.g., flow control, web tension control, specific batch processing, etc.), or other such aspects. The project generation component 206 can utilize the guardrail templates 506 to implement rule-based programming, thereby presenting programming feedback (a subset of the design feedback 518) such as dynamic intelligent auto-correction, type-ahead, or coding suggestions based on coded industrial expertise and best practices (e.g., identifying inefficiencies in the code being developed and recommending appropriate corrections).
[0105] The user can also run their own internal guardrail templates 506 against code provided by an external vendor (e.g., an OEM) to ensure that the code complies with internal programming standards. In such a scenario, the code provided by the vendor can be submitted to the IDE system 202, and the project generation component 206 can analyze the code in view of the internal coding standards specified by one or more customized guardrail templates 506. Based on the results of this analysis, the user interface component 204 can indicate (e.g., using highlighting, overlaid text, etc.) the portions of the code provided by the vendor that do not conform to the programming standards set forth by the guardrail templates 506, and display suggestions for modifying the code to make it compliant. As an alternative to or in addition to recommending these modifications, some implementations of the project generation component 206 can be configured to automatically modify the code to make it compliant based on the recommendations.
[0106] When proposing coding suggestions as part of the design feedback 518, the project generation component 206 can call a selected code module 508 stored in a database of code modules (e.g., on the memory 220). These code modules 508 include standardized coding segments for controlling common industrial tasks or applications (e.g., pallet wrapping, flow control, web tension control, pick and place applications, conveyor control, etc.). In some embodiments, the code modules 508 can be classified according to one or more of the industrial vertical market (e.g., automotive, food and drug, oil and gas, textiles, marine, pharmaceuticals, etc.), industrial application, or the type of machine or equipment to which the code module 508 applies. In some embodiments, the project generation component 206 can infer the current programming task or design goal of the programmer based on program inputs provided by the programmer (as a subset of the design input 512), and based on that task or goal, determine whether one of the predefined code modules 508 can be appropriately added to the control program being developed to achieve the inferred task or goal. For example, the project generation component 206 can infer that the programmer is currently developing control code for transferring materials from a first tank to another tank based on an analysis of the design input 512, and in response, recommend a predefined code module 508 that includes standardized or frequently utilized code for controlling valves, pumps, or other assets required to implement the material transfer.
[0107] The customized guardrail template 506 can also be defined to capture the nuances of the customer site that should be considered in the project design. For example, the guardrail template 506 can record the fact that the automated system being designed will be installed in an area where power outages are common, and this factor will be considered when generating the design feedback 518, such as by recommending the implementation of an alternate uninterruptible power supply and suggesting how these power supplies should be incorporated and recommending associated programming or control strategies that account for these power outages.
[0108] The IDE system 202 can also use the guardrail template 506 to guide a user in selecting equipment or devices for a given design goal, for example, based on the following: industrial vertical market, type of control application (e.g., sheet metal stamping, die casting, pallet packaging, conveyor control, web tension control, batch processing, etc.), budget constraints of the project, physical constraints at the installation site (e.g., available floor, wall, or cabinet space; dimensions of the installation space, etc.), equipment already existing at the site, and so on. Some or all of these parameters and constraints can be provided as design inputs 512, and the user interface component 204 can present equipment recommendations as a subset of the design feedback 518. In some embodiments, the project generation component 206 can also determine whether some or all of the existing equipment can be reconfigured for use in the new control system being designed. For example, since some bottling lines already exist, there may be an opportunity to utilize the existing equipment if a new bottling line is to be added to the production area. The decision regarding which devices and equipment can be reused will impact the design of the new control system. Thus, some of the design inputs 512 provided to the IDE system 202 can include details of the customer's existing system within or near the installation site. In some embodiments, the project generation component 206 can apply artificial intelligence (AI) or traditional analytical methods to this information to determine whether the existing equipment specified in the design inputs 512 can be reconfigured or utilized. Based on the results of this analysis, the project generation component 206 can generate a list of any new equipment that may need to be purchased as the design feedback 518, based on these decisions.
[0109] In some embodiments, the IDE system 202 can provide design recommendations based on an understanding of the physical environment in which the automated system being designed will be installed. To this end, information about the physical environment can be submitted to the IDE system 202 (as part of the design input 512) in the form of a 2D or 3D image or video of the factory environment. In some embodiments, this environmental information can also be obtained from an existing digital twin of the factory or by analyzing scanned environmental data obtained by wearable AR appliances. The project generation component 206 can analyze the image, video, or digital twin data to identify physical elements (e.g., walls, beams, safety fences, existing machines and equipment, etc.) within the installation area and the physical relationships between these elements. This can include determining distances between machines, lengths of pipe runs, positions and distances of wire harnesses or cable trays, etc. Based on the results of this analysis, the project generation component 206 can add context to the generated schematic as part of the system project 302, generate recommendations for the optimal placement of equipment or machines (e.g., recommend a minimum separation between power cables and data cables), or make other improvements to the system project 302. At least some of these design data can be generated according to physics-based rules 516, which the project generation component 206 can refer to in order to determine such physical design specifications as, for example, the minimum safe distance from hazardous equipment (which can also be considered as a factor when determining the appropriate installation location of safety equipment relative to that equipment, given the expected reaction time of a person or vehicle as defined by the physics-based rules 516), material selection capable of withstanding the expected load, pipe configuration and regulation for a specified flow control application, wiring specifications suitable for the expected electrical load, the minimum distance between signal wiring and an electromagnetic field (EMF) source to ensure negligible electrical interference with data signals, or other such design features that depend on physical rules.
[0110] In an example use case, the relative positions of machines and equipment specified by the physical environment information submitted to the IDE system 202 can be used by the project generation component 206 to generate design data for an industrial safety system. For example, the project generation component 206 can analyze the distance measurements between safety equipment and hazardous machines and, based on these measurements, determine the appropriate placement and configuration of safety devices and associated safety controllers to ensure that the machines will shut down within a sufficient safety reaction time to prevent injury (e.g., in the case of a person walking through a light curtain).
[0111] In some embodiments, the project generation component 206 can also analyze photo data or video data of existing machines to determine inline mechanical characteristics such as gears or cams and incorporate this information as a factor into one or more guardrail templates 506 or design recommendations.
[0112] As described above, the system project 302 generated by the IDE system 202 for a given automation system being designed can be built on an object-based architecture that uses automation objects 222 as building blocks. Figure 6 FIG. is a diagram showing an example system project 302 that incorporates automation objects 222 into a project model. In this example, various automation objects 222 representing assets such as industrial equipment, systems, or automation systems (e.g., processes, tanks, valves, pumps, etc.) have been incorporated into the system project 302 as elements of a larger project data model 602. The project data model 602 also defines the hierarchical relationships between these automation objects 222. According to an example relationship, a process automation object representing a batch process can be defined as the parent object of a plurality of sub-objects representing the equipment and installations that execute the process, such as tanks, pumps, and valves. Each automation object 222 has object characteristics or attributes specific to its corresponding industrial asset associated with it (e.g., those discussed above in connection with Figure 4 ), including an executable control program for controlling the asset (or for coordinating the actions of the asset with other industrial assets) and a visualization that can be used to present relevant information about the asset during runtime.
[0113] At least some of the attributes of each automation object 222 are default attributes defined by the IDE system 202 based on encoded industrial expertise related to the asset represented by the object. Developers can modify or add other attributes as needed (via design input 512) to customize the object 222 for the specific asset and / or industrial application for which the system project 302 is being developed. This can include, for example, associated custom control code, HMI screens, AR demonstrations, or help files associated with the selected automation object 222. In this way, automation objects 222 can be created and augmented as needed during design for consumption or execution by the target control device during runtime.
[0114] Once the development of the system project 302 has been completed, the debugging tools supported by the IDE system 202 can simplify the process of commissioning the project in the field. In the case where the system project 302 for a given automation system has been completed, the system project 302 can be deployed to one or more target control devices for execution. Figure 7 FIG. is a diagram showing the debugging of the system project 302. The project deployment component 208 can compile or otherwise convert the completed system project 302 into one or more executable files or configuration files that can be stored and executed on the corresponding target industrial devices of the automation system (e.g., industrial controller 118, HMI terminal 114, or other types of visualization systems, motor drive 710, telemetry device, vision system, safety relay, etc.).
[0115] Conventional control program development platforms require developers to specify the type of industrial controller (e.g., the model of the controller) on which the control program will run before development, thus binding the control program to the specified controller. Then, during program development, controller-specific guardrails are imposed, which limit the way the program is developed given the capabilities of the selected controller. In contrast, some implementations of the IDE system 202 can abstract project development based on the specific controller type, allowing designers to develop the system project 302 as a logical representation of an automation system in a way that is agnostic to where and how the various control aspects of the system project 302 will run. Once project development is complete and the system project 302 is ready for debugging, the user can (via the user interface component 204) specify the target device on which to execute the corresponding aspects of the system project 302. In response, the allocation engine of the project deployment component 208 converts the aspects of the system project 302 into corresponding executable files that are formatted for storage and execution on their respective target devices.
[0116] For example, in addition to other project aspects, the system project 302 can include control code, visualization screen definitions, and motor drive parameter definitions. After project development is complete, the user can identify which target devices - including the industrial controller 118, the HMI terminal 114, and the motor drive 710 - will execute or receive these corresponding aspects of the system project 302. Then, the project deployment component 208 can convert the controller code defined by the system project 302 into a control program file 702 that is formatted for execution on the specified industrial controller 118 and (e.g., via the factory network 116) send the control program file 702 to the controller 118. Similarly, the project deployment component 208 can convert the visualization definition and the motor drive parameter definition into a visualization application 704 and a device configuration file 708, respectively, and deploy these files to their respective target devices for execution and / or device configuration.
[0117] Typically, the project deployment component 208 performs any conversions necessary to allow the aspects of the system project 302 to execute on the specified devices. Any inherent relationships, handshakes, or data sharing defined in the system project 302 will be maintained regardless of how the individual elements of the system project 302 are distributed. In this way, implementations of the IDE system 202 can decouple the project from how and where the project will run. This also allows the same system project 302 to be debugged at different factory facilities with different sets of control equipment. That is, some implementations of the IDE system 202 can allocate project code to different target devices based on the specific devices found on-site. The IDE system 202 can also allow some parts of the project files to be debugged as emulators or on cloud-based controllers.
[0118] As an alternative to having the user specify the target control device to which system project 302 is to be deployed, some implementations of the IDE system 202 can actively connect to the factory network 116 and discover available devices, ascertain the control hardware architecture present in the factory floor, infer the appropriate target devices for the corresponding executable aspects of system project 302, and deploy system project 302 to these selected target devices. As part of this commissioning process, the IDE system 202 can also connect to a remote knowledge base (e.g., a web-based knowledge base or a cloud-based knowledge base) to determine which of the discovered devices are obsolete or need a firmware upgrade to correctly execute system project 302. In this way, the IDE system 202 can serve as a link between the device vendor and the customer's factory ecosystem via a trusted connection in the cloud.
[0119] Copies of system project 302 can be propagated to multiple factory facilities with different equipment configurations using intelligent dissemination so that even if the on-site equipment does not perfectly match the defined target (e.g., if different pump types are found at different locations), the project deployment component 208 intelligently associates the project components with the correct industrial assets or control devices. For target devices that do not perfectly match the expected assets, the project deployment component 208 can calculate the estimated impact of running system project 302 on the non-optimal target equipment and generate warnings or recommendations for reducing the expected deviation from optimal project execution.
[0120] As described above, some implementations of the IDE system 202 can be implemented on a cloud platform. Figure 8 FIG. is a diagram showing an example architecture in which a cloud-based IDE service 802 is used to develop an industrial application and deploy the industrial application to a factory environment. In this example, the industrial environment includes one or more industrial controllers 118, HMI terminals 114, motor drives 710, servers 801 running higher-level applications (e.g., ERP, MES, etc.), and other such industrial assets. These industrial assets are connected to the factory network 116 (e.g., a common industrial protocol network, an Ethernet / IP network, etc.), which facilitates data exchange between the industrial devices on the factory floor. The factory network 116 can be a wired or wireless network. In the example shown, the high-level server 810 resides on a separate office network 108 (e.g., via a router 808 or other network infrastructure device) connected to the factory network 116.
[0121] In this example, the IDE system 202 resides on the cloud platform 806 and executes as a collection of cloud-based IDE services 802 that can be accessed by an authorized remote client device 504. The cloud platform 806 can be any infrastructure that allows shared computing services, such as the IDE services 802, to be accessed and utilized by devices capable of connecting to the cloud. The cloud platform 806 can be a public cloud that can be accessed via the Internet by a device 504 having Internet connectivity and appropriate authorization to utilize the IDE services 802. In some scenarios, the cloud platform 806 can be provided by a cloud provider as a platform as a service (PaaS), and the IDE services 802 can reside on and execute on the cloud platform 806 as cloud-based services. In some such configurations, the owner of the IDE services 802 can provide access to the cloud platform 806 and the associated IDE services 802 to customers as a subscription service. Alternatively, the cloud platform 806 can be a private cloud operated internally by an industrial enterprise (owner of a factory facility). An example private cloud platform can include a collection of servers that host the IDE services 802 and reside on a corporate network protected by a firewall.
[0122] The cloud-based implementation of the IDE system 202 can facilitate collaborative development among multiple remote developers authorized to access the IDE services 802. When the system project 302 is ready for deployment, the project 302 can be delegated to the factory facility via a secure connection between the office network 108 or the factory network 116 and the cloud platform 806. As discussed above, the industrial IDE services 802 can convert the system project 302 into one or more appropriate executable files - control program files 702, visualization applications 704, device configuration files 708, system configuration files 812 - and deploy these files to the appropriate devices in the factory facility to facilitate the implementation of the automation project.
[0123] Figure 9 is an example development interface 902 that can be presented by one or more implementations of the user interface component 204 of the industrial IDE system. The development interface 902 is organized into panels and workspaces in a manner that will be described in more detail herein and supports automated and manual curation features that organize the development space and bring into focus a subset of the project editing functions relevant to the current development task. These features can improve the user's development workflow experience by filtering out optional options that are not relevant to the current development task, thereby allowing for easier location of relevant editing tools and information.
[0124] The basic structure of the development interface 902 includes: a canvas area 930 that houses a workspace canvas 940 (with associated tabs 932), a global panel control bar 920 on the right edge of the interface 902 (to the right of the canvas area 930), a menu bar 904 along the top edge of the interface 902, and a toolbar 906 below the menu bar 904. Other panels can be selectively added to or removed from the workspace of the interface using the visibility control icons on the global panel control bar 920 or via optional options under the View option of the menu bar 904. These panels can be added to or removed from three main panel areas: a left global panel area 922, a bottom global panel area 924, and a right global panel area 928. In Figure 9 the example scenario depicted in, a properties panel 936 is visible in the right global panel area 928, and an explorer panel 910 and a toolbox panel 912 have been presented in a vertically stacked arrangement in the left global panel area 922. The development interface 902 can also include a search bar 934 for searching open projects using text string searches. In some embodiments, the search bar 934 can also be used to insert text or launch shortcuts.
[0125] Figure 10a is a close-up view of the global panel control bar 920 showing an example organization of panel visibility icons. The visibility icons are vertically organized into three groups along the global panel control bar 920, with each group residing in a global left panel control region 914, a global right panel control region 916, and a global bottom panel control region 918 of the control bar 920. These three panel control regions are all marked with corresponding title icons 1002, 1004, and 1006, which show which global panel area (left, right, or bottom) is controlled by the associated icon. In the example shown, the left panel control region 914 includes an explorer visibility icon 1008 that toggles the visibility of the explorer panel 910 in the left global panel area 922 in response to selection. The right panel control region 916 includes three visibility icons 1010a to 1010c that control the visibility of a properties panel (visibility icon 1010a), an online panel (visibility icon 1010b), and a cross-reference panel (visibility icon 1010c) in the right global panel area 928, respectively. The bottom panel control region 918 includes two visibility icons 1012a and 1012b that control the visibility of an errors panel (visibility icon 1012a) and an output panel (visibility icon 1012b) in the bottom global panel area 924, respectively.
[0126] The visibility icons on the global panel control bar 920 can be used as toggle buttons to switch the visibility of their corresponding panels, such that selecting the icon for the first time causes the corresponding panel to be presented in its designated area, and selecting the icon a second time removes its corresponding panel from its designated area. The visibility icons can be colored animations such that the color of the icon indicates the visible or hidden state of the corresponding panel (e.g., black indicates hidden and blue indicates visible).
[0127] Figure 10b An example view menu 1014 that can be presented as a drop-down menu in response to a selection of a view option in the menu bar 904. The view menu 1014 presents selectable visibility controls corresponding to the visibility icons presented on the global panel control bar 920 and having the same functionality as that visibility icon, allowing a user to selectively present and hide panels using either the menu 1014 or the global panel control bar 920. Similar to the global panel control bar 920, the selectable visibility controls are organized according to the left panel, right panel, and bottom panel. Different from the global panel control bar 920, the selectable controls of the view menu 1014 are presented as selectable text rather than icons, where a checkmark indicates the currently visible panel.
[0128] In some embodiments, a single selection can be used to make any panel associated with a global panel region (left, right, or bottom) that has been set to be pinned (discussed below) visible or invisible by selecting any one of the following: the title icon (icons 1002, 1004, or 1006) corresponding to that region in the global panel control bar 920 or the title text of the panel set in the view menu 1014 (e.g., the right panel title 1016).
[0129] In some embodiments, the panels whose visibility is controlled from the global panel control bar 920 can be global panels related to all development tasks or scenarios supported by the industrial IDE system 202 (content panels related to specific development tasks or scenarios will be described below). In Figure 10a and Figure 10bIn the example depicted, the global panels include: an Explorer panel through which a user can browse and select aspects or elements of an automation project; a Properties panel that presents property information of the selected elements within the canvas area 930; an Online panel that presents communication statistics of the industrial IDE system; a Cross - Reference panel that presents cross - reference information of the selected elements within the canvas area 930 (e.g., by listing all uses or instances of the selected elements within the industrial automation system project); an Output panel that presents output status; and an Error panel that lists active and / or historical development or runtime errors. However, without departing from the scope of one or more embodiments, the development interface 902 can support any type of global panel. For example, a Toolbox panel that presents a collection of global editing tools or a specific subset of editing tools linked to a selected category of tools can also be supported as a global panel.
[0130] In some embodiments, the transition of a panel between a visible state and an invisible state can be animated such that invoking a panel causes the panel to slide from a designated edge (left, right, or bottom) of the development interface 902 towards the middle of the interface 902 until the panel is fully expanded and visible. Similarly, indicating that a visible panel is to switch to a hidden state causes the panel to retract towards the edge from which it initially extended.
[0131] The panels supported by the IDE system 202 can generally be classified into two types: global panels and content panels. Global panels are globally applicable to all development scenarios and can include, but are not limited to, the global panels described above. The visibility icon corresponding to a global panel is always fixed on the panel control bar 920.
[0132] In contrast to global panels, content panels are not globally applicable but are instead relevant to or applicable only to specific development tasks or scenarios (e.g., ladder logic control programming, function block diagram control programming, sequential function chart control programming, structured text control programming, HMI screen development, device configuration, controller tag definition, etc.). Content panels can include, but are not limited to: a Layer panel that facilitates browsing of a graphical content layer (e.g., engineering drawings, HMI screens, etc.); an Alarm panel that presents configurable alarm qualification data for selected alarm tags; a Logic Editor panel that presents optional program elements (e.g., output coils, contacts, function blocks, etc.) that can be added to a ladder logic program; an HMI Screen Development panel that presents optional graphical elements that can be added to an HMI screen; or other such content panels. The visibility icons of content panels are located along the top edge of the canvas 940 on the canvas toolbar 938 (e.g., see Figure 9) Above, and a set of content panel visibility icons available on the toolbar 938 depends on the type of content presented in the canvas 940 (e.g., control programming, HMI development screens, etc.). Thus, the content panels are only selectable when the user is currently focused on a development task or scenario related to the content panels (based on which canvas 940 within the development interface 902 is currently in focus and the type of project content presented through the canvas 940). Example types of project content that can be associated with a set of specialized content panels (and associated visibility icons) can include, but are not limited to, ladder logic routines, function block diagram routines, structured text routines, sequential function chart routines, tag databases, HMI screens or applications, faceplates, various types of device views (e.g., controllers, drives, I / O modules, etc.), engineering drawings, or other such content types.
[0133] Generally, any panel associated with the left full panel area 922, the right full panel area 928, or the bottom full panel area 924 can be selectively set as a fixed panel or an overlay panel. Figure 11a Is a view of the upper right corner of the development interface 902, depicting the property panel 936 fixed in the right full panel area 928. The visibility icon 1010a corresponding to the property panel 936 is highlighted to indicate that the property panel 936 is visible. Any panel can be selectively set to be fixed or unfixed (i.e., overlaid) by selecting an appropriate control; for example, a control selected from a drop-down panel settings menu that can be invoked by selecting the panel menu icon 1102 in the upper right corner of the panel. In some embodiments, a panel can also be selectively presented as a fixed panel or an overlay panel by selecting an appropriate control from a right-click menu associated with the corresponding visibility icon in the full panel control bar 920. Setting a panel to be fixed mimics fixing the panel to the background when visible, while setting the panel to be overlaid (unfixed) causes the panel to be presented as an overlay on any fixed panel or other interface content (e.g., canvas content) that may have been invoked in that part of the display.
[0134] When a fixed panel is invoked, the user interface component 204 reduces the width of the canvas area 930 (or in the case of a fixed panel in the bottom full panel area 924, reduces the height of the canvas area) to accommodate the fixed panel. This also causes one or more canvases 940 within the canvas area 930 to be similarly reduced in size. This can be seen in Figure 11a and in Figure 11aIn [the figure], the right edge 1112 of the canvas area 930 has been moved towards the middle of the interface 902 to accommodate the width of the fixed panel 936, such that the right edge 1112 of the canvas area 930 abuts against the left edge of the panel 936. When the overlay panel is invoked, the size of the canvas area 930 is not adjusted. Instead, the panel is presented as an overlay on a portion of the canvas, thereby obscuring the part of the canvas content behind the panel.
[0135] Figure 11b is a view of the upper right corner of the development interface 902 depicting the selection of the online panel 1104 as the overlay panel in the right full panel area 928. As shown in this figure, selecting the online panel visibility icon 1010b when the fixed property panel 936 is visible causes the online panel 1104, which is currently set as the overlay panel, to be displayed on the property panel. A shadow effect 1106 can be used to present the panel set as the overlay to convey that the panel is an overlay panel rather than a fixed panel (fixed panels are not presented using a shadow effect). The width of the overlay panel (e.g., the online panel 1104 in [the figure]) can be adjusted by clicking or otherwise selecting the outer edge of the panel and sliding the edge inwards or outwards. Reducing the width of the overlay panel causes some parts of any fixed panel below the overlay panel to be revealed. Although the fixed panel effect and the overlay panel effect are shown with reference to the right full panel area 928 in [the figure] and [the figure], these effects also apply to the left full panel area 922 and the bottom full panel area 924. Figure 11b In Figure 11a and Figure 11b the fixed panel effect and the overlay panel effect are shown with reference to the right full panel area 928, these effects also apply to the left full panel area 922 and the bottom full panel area 924.
[0136] Figure 11c is a view of the upper right corner of the development interface 902 depicting two fixed panels that are simultaneously visible - the property panel 936 and the cross-reference panel 1108. In this example, the property panel visibility icon 1010a and the cross-reference panel visibility icon 1010b have been turned on. Since both of these panels are currently set as fixed panels, the two panels 936 and 1108 are visible and vertically stacked in the right full panel area. In an example implementation, if only one fixed panel is selected to be visible in a given area, the panel can be vertically resized to encompass the entire height of the panel area (e.g., the right full panel area 928). If a second fixed panel is invoked, the two panels will be vertically resized such that both panels will fit within the panel area in a vertically stacked arrangement. The horizontal size of the stacked fixed panels can be changed by clicking and dragging the horizontal interface 1110 between the two panels upwards or downwards (where dragging upwards reduces the size of the upper panel and increases the size of the lower panel, while dragging downwards performs the opposite size adjustment).
[0137] In some scenarios, the overlay panel can be resized or oriented to allow a portion of the fixed panel behind the overlay panel to remain visible. Figure 11d is a view of the upper right corner of the development interface 902 where the toolbox panel 1114 is presented as an overlay on the property panel 936. However, the top of the toolbox panel 1114 is below the top of the property panel 936, allowing a portion of the property panel 936 to remain visible. Figure 11e depicts Figure 11d a scenario where the toolbox panel 1114 is switched to a fixed panel so that the panels 936 and 1114 are stacked vertically.
[0138] As described above, a panel can be set to fixed by selecting the control associated with the panel. In some embodiments, a drag-and-drop action can also be used to fix a panel to the full-screen panel area. Figure 12 is a view of the upper right corner of the development interface 902 depicting the panel placement area 1202 of the right full-screen panel area 928 according to such an embodiment. According to an example embodiment, if no panel associated with the right full-screen panel area 928 is set to fixed (i.e., the three available panels in the right full-screen panel area 928 are currently set to overlay such that invoking a panel will cause the panel to be presented as an overlay in the right full-screen panel area 928), then selecting the title icon 1004 of the right full-screen panel area 928 causes the blank panel placement area 1202 to be presented in the right full-screen panel area 928. As Figure 12 shown by the arrow in, any of the three panels available for the right full-screen panel area 928 can be set to a fixed panel by dragging the corresponding visibility icon 1010 of the panel to the panel placement area 1202. A fixed panel can also be unfixed (i.e., set to an overlay panel) by dragging the panel back from the placement area 1202 to the full-screen panel control bar 920. This drag-and-drop method can be used to fix a panel to any of the three full-screen panel areas (left, right, and bottom).
[0139] In some embodiments, a fixed visible panel can also be selectively collapsed or expanded. Figure 13a depicts two horizontally stacked fixed panels (property panel 936 and assignment panel 1302) in a default non-collapsed state. In this state, the content windows of the two panels are visible below the respective title bars 1304 and 1306. The panel can be collapsed by selecting the title bar 1304 or 1306 corresponding to the panel. Figure 13bDepicts the assignment panel 1302 in a collapsed state due to clicking or otherwise selecting the title bar 1306 of the panel. When the lower panel - in this case the assignment panel 1302 - is collapsed, the content window of the panel is rendered invisible, and the title bar 1306 moves to the bottom of the panel area, while the content window of the upper panel (in this case the property panel 936) is lengthened to fill the remaining panel area space, thereby exposing more content of the window. Figure 13c Depicts the property panel 936 that is collapsed due to clicking or otherwise selecting the title bar 1304 of the panel. When the upper panel is collapsed, the content window of the panel is rendered invisible, and the title bar 1306 of the lower panel moves up to a position just below the title bar 1304 of the upper panel. The content window of the lower panel fills the remaining panel area space, thereby showing more content of the panel.
[0140] Temporarily return Figure 9 , the canvas area 930 is the main working area of the development interface 902 of the IDE system and is bounded by the left global panel area 922, the right global panel area 928, the bottom global panel area 924, and the menu bar 904. Generally, the canvas area 930 contains one or more workspace canvases 940 on which user interface components 204 present components of a system project, such as ladder logic or other types of control code, program routines, controller tag definitions, development views of visualization screens, device configurations, engineering drawings, or other project components. The canvas area 930 is also the space through which the user interacts with these components using the editing tools and information provided by the global panels and content panels to perform development functions such as developing controller code (e.g., ladder logic, function block diagrams, structured text, etc.), developing visualizations of an automation system (e.g., HMI screens, AR / VR demonstrations, mashups, etc.), configuring device parameter settings, defining controller tags, developing engineering drawings, or other such project development functions.
[0141] Figure 14 is a close-up view of an example canvas 940 within the canvas area 930. Each canvas 940 within the canvas area 930 can be associated at a tab 932, and selection of the tab 932 makes the corresponding canvas 940 the focus. The canvas 940 can also have an associated toolbar 938 that includes optional icons and / or fields that allow the user to set properties of the associated canvas 940, such as zoom level, view format, grid line visibility, or other such properties. In Figure 14 the example depicted, the toolbar 938 of the canvas is located below the tab 932.
[0142] In some embodiments, the toolbar 938 of the canvas may further include visibility icons for any content panel associated with the type of content currently being presented in the canvas 940 (e.g., ladder logic, functional block diagram, structured text, HMI screen under development, device parameters, engineering drawing, etc.). Similar to the global panel visibility icons located on the global panel control bar 920, selecting a content panel visibility icon from the toolbar 938 of the canvas toggles the visibility of the panel associated with the selected icon. In some embodiments, when making a content panel visible, the content panel may be presented at a predefined designated location within or adjacent to one of the global panel areas. In some embodiments, the content panel may also be moved to a selected location within the interface workspace. Similar to the global panels, the content panels may be selectively set to be fixed or overlay.
[0143] Although the example shown depicts the panel visibility icons as being presented in the toolbar 938 of the canvas, in some embodiments, the panel visibility icons may also be presented elsewhere on the development interface 902, such as on the main toolbar 906 below the menu bar 904. In such embodiments, the list of panel visibility icons presented in this space at a given time will depend on the type of item content that is currently in focus (e.g., the content of a particular canvas 940 that is currently in focus). In other embodiments, the user interface component 204 may add the available content panel visibility icons to the global panel control bar 920 in their own specified groupings based on the type of development task currently being performed or the type of project content.
[0144] The canvas area 930 may include one or more tabbed canvases 940, where each canvas 940 is associated with a tab 932. The user interface component 204 allows the user to create as many tabbed canvases 940 as needed within the canvas area 930, where each tab 932 presents a different aspect of the automation system project. Multiple tabbed canvases 940 may be stacked horizontally or vertically within the canvas area 930. Figure 15 is a view of the development interface 902 where two canvases 940a and 940b are stacked horizontally. Stacking the tabs in this manner - horizontally or vertically - allows the content of both canvases 940a and 940b to be presented simultaneously.
[0145] The user may also choose to present multiple canvases 940 as an overlay on top of each other. Figure 16a and Figure 16b is a view of two overlaid canvases 940a and 940b. In this example scenario, the first canvas 940a presents a ladder logic routine being developed for an industrial controller, and the second canvas 940b presents a tag database for the controller. Figure 16aDepicts a scenario where tab 932a is selected, causing the corresponding ladder logic canvas 940a to be presented in canvas area 930. Figure 16b Depicts a scenario where tab 932b is selected, causing the corresponding tag database canvas 940b to be presented in canvas area 930.
[0146] Generally speaking, the basic layout of the development interface 902 and the panel control and tab manipulation functions described above can provide the user with a smooth development workspace that offers a great deal of control over the balance between the available workspace and the availability of editing functions. Additionally, since the user interface component 204 dynamically filters the available editing tools based on the user's current development task or focus - by making only a subset of the content panels relevant to the current task available for selection - the development interface 902 tidies up the development workspace sufficiently by removing panels and editing functions that are not relevant to the task at hand.
[0147] Figures 17a to 17e Is a view of various example layouts of the development interface 902 of the IDE system, showing the degree of increase in IDE content density that can be supported by the interface 902. Figure 17a Is a view of the interface 902 with a single canvas 940a open and no left panel, right panel, or bottom panel being called. Since no development workspace is being consumed by the full - screen panel or content panels, this substantially maximizes the size of the canvas 940, thus showing a substantially maximized amount of canvas content (e.g., control programming, tag database information, etc.). The panel control bar 920 remains fixed to the right edge of the development interface 902 to allow the user to call up panels as needed. As described above, in addition to the full - screen panel visibility icon, the panel control bar 920 will also present a relevant subset of the visibility icons corresponding to the content panels that are relevant to the task being performed in the active canvas 940a (e.g., ladder logic programming, FBD programming, structured text programming, HMI screen development, device configuration, network configuration, etc.).
[0148] Figure 17b Is a view of the interface 902 where the explorer panel 910 is presented as visible in the left full - screen panel area 922 and the property panel 936 has been presented in the right full - screen panel area 928. These panels can be presented as visible using any of the techniques described above (e.g., selecting from the panel control bar 920 or from the view menu options). Both panels 910 and 936 are set to be fixed, so the width of the canvas 940a has been reduced to accommodate panels 910 and 922, thus preventing the canvas content 940a from being obscured by the panels.
[0149] Figure 17cThe view is that the layer panel 1702 (a content panel specific to a particular task being performed in the canvas 940a) has been added to the development interface 902 of the previous view. The layer panel 1702 has been added as an overlay panel to the left side of the property panel 936, thus obscuring the portion of the canvas content corresponding to that space. Figure 17d More content is added to the previous view by adding a second canvas 940b that is horizontally stacked with the original canvas 940a. The user can select which canvas 940 is currently in focus by selecting the tab 932a or 932b corresponding to the desired canvas 940. This configuration allows the user to view the content of both canvases 940 simultaneously (e.g., a control program and a tag database, a control program and a device view, etc.), while also providing the user with access to the editing tools, information, and navigation structures associated with the explorer panel 910, the property panel 936, and the layer panel 1702.
[0150] Figure 17e The view is of a development interface where a third canvas 940c has been added to the previous view and is vertically stacked with the two previous canvases 940a and 940b. As shown in this figure, the canvases 940 can be selectively stacked horizontally or vertically within the canvas area 930, or both horizontally and vertically.
[0151] As Figures 17a to 17e As depicted in the example shown, the layout and customization features of the development interface give the user considerable flexibility in customizing or managing the canvas layout and behavior, as well as the selective presentation of project data and editing tools. Additionally, the editing tools and views available to the user at a given time are intelligently managed by the user interface component 204 based on the user's current development task or context, which can be determined based on the identity of the currently focused canvas 940 and the content of that canvas 940. For example, if the user selects a canvas 940 that is developing a structured text program, only a subset of the overall library of content panels in the interface that is relevant to that structured text program development will be available to the user (e.g., by adding visibility icons corresponding to those panels to the panel control bar 920).
[0152] Some of the global panels and content panels supported by some implementations of the development interface will now be discussed. Figure 18is a view of the Explorer panel 910, which resides in the left full panel 922 area when invoked. The Explorer panel 910 serves as a means for navigating and viewing the contents of system items and supports multiple ways to perform such navigation. The Explorer panel 910 itself supports many different viewing categories, which are represented by the selectable Explorer icons 1806 presented on the Explorer view control bar 908 fixed to the left edge of the Explorer panel 910. Selection of an Explorer icon 1806 determines one or both of the type of item content to be browsed via the Explorer panel 910 or the format in which browsable item content is presented on the Explorer panel 910.
[0153] The Explorer panel 910 also includes a panel title 1802, the text of which identifies the set of currently visible Explorer tools (e.g., Figure 18 "System" in ). For Explorer views that provide a choice of alternative presentation formats for the content represented by the Explorer icons 1806, horizontally stacked tabs 1804a and 1804b are located below the panel title 1802 for selection from the available views. Below the tabs 1802a and 1804b (or below the title 1802 if there is only one view for the current Explorer toolset) is the Explorer panel content area 1808 in which the currently selected Explorer tool is presented. As will be discussed and shown below, the content presented in the content area 1808 depends on the currently selected Explorer icon 1806 and the currently focused tab 1804. For example, the selected Explorer icon 1806 can determine the browsable item content to be presented in the Explorer panel 910, and the selected tab 1804 determines the presentation format or organization of that browsable item content. For some views supported by the Explorer panel 910, selection of an Explorer icon 1806 can set the category of content to be presented in the content area 1808, while selection of a tab can set a specific subcategory of the presented content within the main category.
[0154] Figures 19a to 19b is a view of the isolated Explorer panel 910 when the system view is currently selected. The system view of the Explorer panel can be invoked by selecting the system icon 1904 in the Explorer view control bar 908. The system view provides two tabbed views - Logic (tab 1804a) and Execution (tab 1804b). Figure 19aDepicts a logical system view presented in response to a selection of the logical tab 1804a. The logical system view presents a logical system navigation tree 1902 including hierarchically organized selectable nodes in the content area 1808. Selection of one of the nodes of the navigation tree 1902 associated with the content of a viewable item causes the content corresponding to the selected node to be presented in the currently focused canvas 940, or causes an appropriate panel to be presented on the development interface 902 for displaying the content (depending on the selected node and the corresponding content).
[0155] Aspects of items that can be selected via the logical system navigation tree 1902 can include, but are not limited to: control programs or routines (e.g., the RLL_01 node and the ST_01 node in FIG. 19, which are listed below the parent node programs 1 and 2 respectively in Figure 19a ), labels and / or parameters associated with the program (e.g., Figure 19a the label / parameter nodes in, which are also listed below the parent nodes of their corresponding control programs), visualizations, alarm configurations, device configurations or parameter settings, trends, security settings, test results, or other such item aspects. Generally, the nodes presented in the logical system navigation tree 1902 reflect the elements present for the current automation system project.
[0156] Generally, the logical system view organizes system elements according to processes, production areas, or plant facilities within an industrial enterprise. Figure 20 Is an example explorer panel 910 depicting the logical system navigation tree 1902 of an example automation system project. As shown in this example, the logical system navigation tree 1902 can hierarchically organize aspects of the project. A user can define a parent node 2002, which represents different processes, production areas, or plant facilities within an industrial enterprise (e.g., extraction, fermentation, distillation, etc.). If a process, production area, or plant facility is to be further broken down into multiple parts (e.g., LIC551, P561, PIC535, etc.), child nodes 2004 can also be defined as children of the parent node 2002.
[0157] Below one or more of these user-defined nodes are selectable nodes representing aspects of the parent node that can be viewed and configured by the user. These can include: logical nodes 2006 representing the control programming associated with the parent node, visualization nodes 2008 representing the HMI application or other type of visualization application associated with the parent node, label and parameter nodes 2010 representing the labels and device parameters defined or configured for the parent node, device nodes representing the devices associated with the parent node (e.g., industrial controllers, motor drives, etc.) ( Figure 20not shown) or other such system project components. Generally, the path from the tree 1902 to a node represents a logical path to the corresponding project aspect, which is defined according to the user's factory layout or process layout.
[0158] Figure 19b is a view of the explorer panel 910 that presents an execution system view in response to a selection of the execution tab 1804b. This view presents content similar to that of the logical system view described above in conjunction with Figure 19a and Figure 20 but organizes this view in a hierarchical execution system navigation tree 1906 according to the execution device (e.g., industrial controller) on which various aspects of the automation system reside and execute. This is different from the factory-based organization provided by the logical system navigation tree 1902. The path from the tree 1906 to a node represents an execution path to the corresponding project aspect.
[0159] In some embodiments, the way the user interacts with a node of the system navigation tree will determine how the content associated with the selected node is presented. Figure 21a shows an example response of the user interface component 204 when the user selects but does not start the ladder logic node 2102 (RLL_01) that represents a ladder logic program of the system project. The node 2102 can be selected, for example, by performing a single mouse click on the node 2102 such that the node is highlighted. When the node 2102 is selected in this way, information about the selected ladder logic program will be presented in the property panel 936 (if the property panel 936 is currently visible).
[0160] Figure 21b shows an example response of the user interface component 204 when the user starts the ladder logic node 2102, for example, by double-clicking on the node 2102. When double-clicking or otherwise indicating to start a node in the system navigation tree 1902 or 1906, the content or workspace associated with the node 2102 is presented on the tabbed canvas 940. Double-clicking on the node 2102 can cause a new canvas 940 to be opened in the canvas area 930, or can cause the currently focused canvas 940 to present the content associated with the node 2102.
[0161] Figure 21cShows an example response of the user interface component 204 when the user right - clicks on node 2102. Right - clicking on a node of the system navigation tree 1902 can cause a context menu 2104 to be presented near node 2102. The context menu 2104 presents a list of selectable options specific to the type of the selected node. For example, if the selected node represents an industrial controller, the context menu 2104 can list options for adding an I / O module to the controller, adding a device to the controller (e.g., a drive), or options for other controller - specific configuration actions. The context menu 2104 can also include options for configuring the system navigation tree 1902 itself, such as copying, pasting, and deleting nodes.
[0162] Figure 22a and Figure 22b Is the view of the explorer panel 910 when the application view is currently selected. The application view is invoked by selecting the application icon 2202 in the explorer view control bar 908. The application view lists the applications (e.g., controller programs, HMI applications) that make up the automation system project in a browsable format. In this example, the application view allows the user to view controller application information by selecting the controller tab 1804a and to view HMI application information by selecting the HMI tab 1804b.
[0163] Selecting the controller tab 1804a causes the controller navigation tree 2204 to be presented in the explorer panel content area 1808. The controller navigation tree 2204 includes nodes representing items such as controller tags, controller parameters, control programming (e.g., ladder logic, structured text, function block diagrams, etc.), handler routines (e.g., fault handlers, power - on handlers, etc.), and other such aspects of the industrial controller that makes up the automation system project. These nodes are organized in the controller navigation tree 2204 according to the controller associated with the node. Selection of a controller application node can present the property information of the selected controller application in the property panel 936 (e.g., via a click interaction), or can present the code of the selected application in the canvas 940 (e.g., via a double - click interaction). Figure 23 Is a view of the canvas 940 on which a portion of an example structured text program is presented in response to selecting a structured text application node from the controller navigation tree 2204 or the system navigation tree 1902. Figure 24 Is a view of the canvas 940 on which a portion of an example function block diagram program is presented in response to selecting a function block diagram application node from the controller navigation tree 2204 or the system navigation tree 1902.
[0164] Similarly, selecting the HMI tab 1804b causes the HMI navigation tree 2206 to be presented in the explorer panel content area 1808. This tree 2206 lists any HMI projects (or other types of visualization projects) associated with the automation system project organized according to the HMI server. Selection of an HMI application node can cause the properties of the selected application to be presented in the property panel 936, or can cause the HMI application to be presented in the canvas 940.
[0165] Figure 25 Is the view of the explorer panel 910 when the device view is currently selected. The device view is invoked by selecting the device icon 2502 in the explorer view control bar 908. The device view presents the device navigation tree 2504 in the explorer panel content area 1808. This tree 2504 includes nodes representing the devices that make up the control system project (e.g., controllers, drives, motor control centers, etc.). Similar to other explorer views, information about the selected device can be presented in the property panel 936 or on the canvas 940 through appropriate interaction with the node of the device. Figure 26 Is the view of the canvas 940 on which information about an example controller is presented in response to selecting a controller node from the device navigation tree 2504. As shown in this example, the information that can be presented for the selected device can include, but is not limited to: the name and model of the device, the network address of the device, an overview description of the device, the firmware version currently installed on the device, the type of electronic key, the connection type, or other such device information.
[0166] Figure 27 Is the view of the explorer panel 910 when the library view is currently selected. The library view is invoked by selecting the library icon 2702 in the explorer view control bar 908. The library view presents the library navigation tree 2704 in the explorer panel content area 1808. The library navigation tree 2704 includes nodes representing software objects such as automation objects, additional instructions, user-defined data types, device configurations, or other such objects. The library view can include two or more tabs 1804 that allow the user to select the source of the software object to view. In the example shown, tab 1804a presents objects associated with the current automation system project, tab 1804b presents objects available in the vendor library, and tab 1804c presents objects from an external source. Similar to other explorer views, information about the selected object can be presented in the property panel 936 or on the canvas 940 through appropriate interaction with the node of the object.
[0167] Figure 28This is the view of the Explorer panel 910 when the extended view is currently selected. The extended view is invoked by selecting the expand icon 2802 in the Explorer view control bar 908. The extended view presents a list of software extensions currently installed on the IDE system 202, which may include, but is not limited to: dashboards, system viewers and designers, ladder logic editors, function block diagram editors, structured text editors, HMI screen editors, or other such extensions.
[0168] Some embodiments of the user interface component 204 of the IDE system may also support a multi-instance state of the project development environment, such that the development environment can be distributed across multiple display devices. Such embodiments may support a multi-instance workflow, which helps users adapt to the development environment and allows users to easily locate relevant editors across an extended and distributed workspace content and work smoothly across multiple instances of the development interface 902.
[0169] Figure 29a and Figure 29b depicts an example distributed, multi-instance implementation of the development interface 902. In this example, the development environment of the automation project currently being developed is distributed across two monitors or other display devices, thus effectively extending the development interface 902 across two separate but linked instances - the development interface 902a presented on the left monitor ( Figure 29a ) and the development interface 902b presented on the right monitor ( Figure 29b ). In the example shown, the left interface 902a presents a first canvas 940a (and associated tab 932a) on which the control routine currently being developed is displayed. The interface 902a also presents the Explorer panel 910 and its associated Explorer view control bar 908 in the left full panel area 922, a first instance of the property panel 936a in the right full panel area 928, and a first instance of the overlay panel 2902a adjacent to the property panel 936a. A first instance of the panel control bar 920a is anchored to the right edge of the interface 902a.
[0170] The right interface 902b presents two horizontally stacked canvases 940b and 940c (and their associated tabs 932a and 932b), where canvases 940b and 940c respectively contain two other aspects of the system project - the tag database and the parameter view. Second instances of the property panel 936b and the layer panel 2902b are presented on the right side of the interface 902b, and a second instance of the panel control bar 920b is anchored to the right edge of the interface 902b. In this example scenario, the user has chosen to omit the Explorer panel 910 from the right full panel area of the second interface 902b.
[0171] Although inFigures 29a to 29b Only two instances of the interface 902 are depicted in the example shown, but the user interface component 204 can support the development of the interface 902 across any number of instances (e.g., if more than two display devices are available). Additionally, although the example shown depicts three open canvases 940a to 940c distributed across two instances, any number of tabbed canvases 940 can be presented on each instance of the interface 902.
[0172] Two interfaces 902a and 902b are extensions of each other such that moving the cursor beyond the right boundary of the left interface 902a causes the cursor to enter the right interface 902b via the left boundary of the right interface 902b, and vice versa. Thus, the user can smoothly traverse the three canvases 940a to 940c. Generally, the user can independently configure panel visibility and layout for each of the extended interfaces 902a and 902b. For example, the user can choose to present a copy of the same global panel on both interface instances, or can choose to present a given panel as visible on one interface while omitting it from the other interface.
[0173] To assist the user in easily navigating between interface instances, particularly in scenarios where several tabbed canvases 940 are open, some implementations of the interface 902 can present an available tab menu in response to the selection of an appropriate control (e.g., a control in the menu bar 904), the available tab menu listing the tabs 932 that are currently open and available for selective focusing. Figure 30 An example available tab menu 3002 that can be invoked in such an implementation is shown. The example menu 3002 lists the currently active canvases 940 by name (e.g., ladder logic 1, tags, parameters, etc.) and separates the list according to the instance of the interface 902 on which each canvas n940 currently resides. The list can be separated vertically such that a first portion 3004 lists the tabs 932 visible on the first instance of the interface 902 and a second portion 3006 lists the tabs 932 visible on the second instance. Selecting any tab on the menu 3002 will cause the interface 902 to move the focus to the selected tab 936 (i.e., bring the selected tab to the front of the workspace). By listing all active tabs in one menu 3002, the user can easily select the desired tab, which may be located on an interface instance other than the one the user is currently viewing or may be hidden beneath other overlapping canvases 940 or panels. This can alleviate the need to search through the distributed instances of the interface 902 to locate the desired canvas 940.
[0174] The menu 3002 may also include other controls for manipulating the tab 932. For example, the merge menu option 3008 may cause all tab instances across multiple interface instances to be moved to the interface instance that is currently being viewed (i.e., the instance from which the merge command was triggered). In some embodiments, performing this merge function will also cause all extended instances of the interface 902 to be closed, leaving only the currently viewed instance active.
[0175] The tab 932 and its associated canvas 940 can be moved from one instance of the interface 902 to another by selecting the tab and dragging the tab from the current instance of the interface 902 to a target instance (e.g., a target instance on another display device). If the tab 932 is moved to an instance of the interface 902 that already contains one or more visible canvases 940, the dimensions of the existing canvases will be adjusted to accommodate the addition of the canvas 940 associated with the repositioned tab 932. In such a case, the canvas 940 can automatically determine an appropriate configuration for horizontal and / or vertical stacking of the canvases 940 based on the current orientation of the pre-existing tabs and the placement location of the repositioned tab.
[0176] In some embodiments, the layout and functionality of the development interface 902 can also respond to the size of the screen or display device on which the interface is presented. The dimensions of the boundaries within which the interface 902 operates can depend on the size of the device's display screen, or can be set by the user by adjusting the size of the development environment window of the IDE system. In either case, the user interface component 204 can be configured to: enable or disable certain functions of the development interface 902 based on the size or aspect ratio of the boundaries of the interface, and reorganize the elements of the development interface 902 as needed to fill the available horizontal and vertical viewport space based on the available space.
[0177] In an example embodiment, the development interface 902 can support multiple layout modes corresponding to respective ranges of the screen or window width. Figures 31a to 31c is an example instance of the development interface 902, which coordinates respective different layout modes according to the available screen width.
[0178] Figure 31a Depicts a first layout mode suitable for a scenario without width limitations. As described above, this first layout mode provides full support for all major interface elements.
[0179] Figure 31bDescribes a second layout mode that can be enabled by the user interface component 204 when the available screen width is below a first threshold width. According to this second layout mode, the full panel section (e.g., the property panel 936) is removed, and the pinned panels are disabled (i.e., all panels are presented as overlay panels). The left panel support and the bottom panel support are disabled, and only the global right overlay panel is allowed to be presented. Only one panel is allowed to be presented at a given time. The content panel visibility icon, which is typically presented on the toolbar of the canvas, is moved to the full panel control bar 920 (e.g., the layer visibility icon 3102). The support for multiple stacked canvases is disabled. The explorer panel 910, including its associated explorer view control bar 908, is moved from the left side of the interface 902 to the right side adjacent to the full panel control bar 920.
[0180] Figure 31c Describes a third layout mode that can be enabled by the user interface component 204 when the available screen width is below a second threshold width, where the second threshold width is less than the first threshold width. This third layout mode maintains all the limitations and constraints of the second layout mode. Additionally, the title elements are collapsed to reduce the number of simultaneously visible options. This includes collapsing the visible options on the menu bar 904 into a single selectable menu icon 3104, which can be selected to present the menu bar options as a drop-down list. Similarly, the options on the toolbar 906 are collapsed into a single tool icon 3108, which can be selected to present the toolbar options in another drop-down list. The search bar 934 is also reduced to an optional search icon 3110. As a result of these consolidations, the total number of visible options is reduced, thus organizing the limited development space.
[0181] As described above in connection with Figure 7 and Figure 8As discussed, the system project 302 that has been developed using the IDE system 202 can be deployed to one or more target control devices for execution. In the case of industrial control code (such as control program file 702), this involves downloading the compiled control program to the industrial controller 118, and then the industrial controller 118 executes the program in monitoring and controlling its associated industrial assets. After the control program has been deployed to the controller 118, one or more control developers can subsequently submit edits to the online version of the program or an offline copy of the program, where the offline copy of the program is stored locally on the developer's client device or as an offline version stored on the IDE system 202. This can result in differences between the online version and the offline version of the control program. In a collaborative development environment that allows multiple developers to access and edit the control program, this can also lead to several versions of the control program, including the online version currently being executed on the industrial controller 118 and any offline versions of the program that may differ from the online version because the developers have submitted edits to their local copies of the program but have not yet been downloaded to the controller 118. Differences between the offline version and the online version of the control program can also be caused by edits directly to the online program submitted by a first developer that have not been synchronized to the local offline version belonging to a second developer. To assist in coordinating these collaborative edits, some implementations of the IDE system 202 can include tools for managing the differences between these different versions of the control program, tools for graphically communicating the various online and offline states of the control program, and tools for presenting notifications that inform program developers of pending edits submitted by other developers.
[0182] Figure 32 FIG. is a diagram showing an implementation of the IDE system 202, which resides on the cloud platform 806 and executes as a collection of cloud-based IDE services 802 that can be accessed by authorized remote client devices 504. This architecture allows multiple users to access and utilize the industrial IDE services 802 for the development of industrial control programs to be downloaded to and executed on the industrial controller 118 at a factory facility.
[0183] The example shown assumes that an online version of the control program (online program 3202) has been deployed to the industrial controller 118 and is currently being executed to facilitate the monitoring and control of the corresponding automation system. Subsequently, multiple different remote client devices 504 can utilize the centralized industrial IDE service 802 to individually submit additional design inputs 512 for the control program using the development interface 902. These edits 512 can be offline edits to the offline version (offline program 3204) of the program stored on the respective client device 504 or online edits submitted directly to the online program 3202. Using this architecture, multiple remote developers can submit design inputs 512 to a common industrial automation system project 302, thereby facilitating parallel development by multiple remote designers. The industrial IDE system 202 can support collaborative design tools that manage and reconcile these different collections of design inputs 512 to ensure the consistency and optimization of the control program.
[0184] In Figure 32 the example depicted, the above-described development interface is delivered to the client device 504 in a secure manner, and developers at each client device 504 can submit design inputs 512 for the online program 3202 or the offline version 3204 of the program stored locally on the client device 504 or on the cloud platform 806 ( Figure 32 illustrates a scenario where the offline version 3204 of each user's program is stored on the cloud platform 806). As discussed above, as each user proceeds through their program editing workflow, which may contribute to the development of the user's industrial control project, the IDE service 802 will generate individual design feedback 518 and present this design feedback 518 to the client device 504 of each user.
[0185] Figure 33 depicts an implementation of the development interface 902 that includes a visualization tool for notifying developers of the differences that exist between the online version 3202 of the control program and the local offline version 3204 of the developer's control program. Similar to the version of the development interface 902 discussed above, this version includes a workspace canvas 940, the content of which is determined based on which tab 932 in the options is currently selected. The development interface 902 also includes: a global panel control bar 920 on the right edge of the interface 902, a menu bar 904 along the top edge of the interface 902, and a toolbar 906 below the menu bar 904.
[0186] The Explorer panel 910 resides on the left side of the interface 902, where the Explorer view control bar 908 is fixed to the left edge of the Explorer panel 910. The Explorer panel 910 is currently displaying the system navigation tree 1902, which includes hierarchically organized selectable nodes. Selection of one of the nodes of the navigation tree 1902 causes the content corresponding to the selected node to be presented in the currently focused canvas 940, or causes an appropriate panel to be presented on the development interface 902 for displaying the content (depending on the selected node and the corresponding content).
[0187] Figures 34a to 34c is a view of the isolated Explorer panel 910, where the system view is currently selected. As depicted in these views, the nodes of the navigation tree 1902 can be selectively expanded or collapsed, such that the child nodes below a parent node can be selectively shown or hidden. Figure 34a depicts a view in which the navigation tree 1902 is fully collapsed into a single project node (AO1). As Figure 34b depicted therein, selection of this parent node causes the nodes representing the control programs associated with the project - Program 1, Program 2, and Program 3 - to be shown in the navigation tree 1902. Selection of any one of these program nodes reveals below the selected node the nodes representing the control routines that make up the selected program (e.g., RLL_01, RLL_02, etc.), the node for the label database and configuration parameters for calling the program (e.g., Labels / Parameters), and any other nodes representing aspects of the selected program (e.g., visualization, alarm configuration, trends, security settings, test results, or other such item aspects).
[0188] The Explorer panel 910 can also present a color - coded indicator bar 3206 next to the corresponding nodes of the navigation tree 1902. In the example shown, the indicator bar 3206 includes a vertical indicator to the left of each node. The color of the indicator bar 3206 next to a node of the navigation tree 1902 indicates whether the version of the program represented by that node is currently installed on the industrial controller 118 to which the user is connected via the IDE system 102, or alternatively, whether the program exists only as an offline program that has not yet been downloaded to the controller 118.
[0189] For example, as Figure 34a shown, the indicator bar 3206a next to the project node AO1 is the color indicating that at least one of the programs associated with this project is installed as an online program 3202 on the industrial controller 118 and is running on the industrial controller 118, e.g., green (note that the green indicator bar 3206 is depicted as black in the drawings). As Figure 34bAs shown, expanding the project node that displays the program nodes reveals two programs—Program 1 and Program 3—with green indicator bars 3206b and 3206d. The indicator bar 3206c associated with another program—Program 2—is a different color, e.g., gray, indicating that this program exists only as an offline program 3204 and has not been downloaded to the industrial controller 118. The offline program 3204 can be, for example, a program that is written offline for subsequent download to the controller and that currently exists only as an offline program 3204 stored locally on the user's client device 504 or stored on a cloud platform 806 associated with the system project.
[0190] As Figure 34c shown, expanding the program node reveals an indicator bar 3206e next to the routines of Program 1, which is green, indicating that these routines are currently active in the controller 118. In contrast, the indicator bar 3206f next to the routine nodes of Program 2 is gray, indicating that these routines exist only as offline routines and have not been sent to the controller 118.
[0191] In this example, it is assumed that the routines of Program 3 have currently been installed on and are being executed on the industrial controller 118, but the developer has submitted an offline edit to a routine of this program named RLL_01. This thus results in a difference between the version of the routine RLL_01 stored in the offline version 3204 of the program and the version of RLL_01 in the online version 3202 of the program. To convey this online - offline difference, the node representing RLL_01 is marked with a dot 3306 or other symbol. The dot 3306 indicates that the routine RLL_01 exists in both the online program 3202 and its corresponding offline version (offline program 3204), but due to the submission of an offline edit that has not been downloaded to the controller 118, the offline version and the online version do not match. The indicator bar 3206 next to the node corresponding to this mismatched routine can also be distinguished with a third color or pattern to further indicate this difference between the online and offline states.
[0192] The dot 3306 can also be used to indicate when there is a difference between an offline routine and its corresponding online routine due to an edit that has been submitted to the online version of the routine but has not been synchronized to the offline version of the user's routine. In some embodiments, the color of the dot 3306 can be set to convey whether there is an edit available on the online program 3202 for synchronization to the offline version of the program 3204, or alternatively, whether there is an edit available on the offline program 3204 for synchronization to the online program 3202.
[0193] The navigation tree 1902 can use a similar marker to indicate when a routine exists in the industrial controller 118 that the user is connected to but does not exist in the offline copy of the user's project. For example, if a first developer adds a new routine to the controller 118, the navigation tree 1902 can present a node representing the new routine on the development interface 902 of a second developer. The user interface component 204 can mark the node with an indicator bar 3206, and the indicator bar 3206 has a color that identifies the routine as a routine that exists in the controller 118 but has no corresponding offline version in the local version 3204 of the program of the second developer.
[0194] Using this marking standard, the navigation tree 1902 can clearly communicate to the developer the online and offline difference status of the programs and routines that make up the project. As will be described in more detail below, the IDE system 202 can resolve the differences between the online version and the offline version of the program.
[0195] Returning to Figure 33 , the user interface component 204 can also present color-coded tab indicators 3302 on the tabs 932 associated with the corresponding workspace canvas 940. In Figure 33 the example shown, these tab indicators 3302 include vertical boxes located at the left edge of each tab 932. The colors of these tab indicators 3302 can convey information similar to the information conveyed by the vertical bars in the navigation tree 1902. For example, a tab 932 corresponding to a routine that only exists offline but has not been deployed to the controller 118 can be assigned a tab indicator 3302 with a first color (as in the case of tab indicator 3302c), while a tab 932 corresponding to a routine that has been deployed to the controller 118 and matches its corresponding offline version can be assigned a tab indicator 3302 with a second color (as in the case of tab indicator 3302b).
[0196] As discussed above, when a developer submits an edit to the offline version of a control routine that runs on the controller 118 for its online version, the navigation tree will indicate the mismatch between the online version and the offline version with a dot 3306 next to the node corresponding to the mismatched routine. The user interface component 204 will also change the color of the tab indicator 3302 corresponding to the routine to a color that indicates that the offline version of the routine does not match its corresponding online version on the controller 118 (as in the case of tab indicator 3302a). When another developer submits an edit to the online version 3202 of a program that has not been synchronized to the offline version 3204 of the first developer's program, the dot 3306 is also presented on the developer's navigation tree 1902, and this status can also be indicated by the color of the tab indicator 3302 corresponding to the mismatched routine.
[0197] If there is a mismatch between the online version 3202 of the program and its corresponding offline version 3204 due to offline edits submitted by the user (as indicated by the dots 3306 next to the edited routines), the user can synchronize the pending edits to the online version 3202 of the program by selecting the sync button 3304 in the toolbar 906. In some embodiments, when pending offline edits are available for synchronization to the controller 118, the development interface 902 may present an indication near the sync button 3304 or otherwise change the visual state of the button 3304.
[0198] The sync button 3304 can also trigger an updated synchronization from the online program 3202 to the offline version 3204 of the program. For example, if the user remotely docks with the online program 3202 currently executing on the controller 118 and the collaboration management component 210 determines that the online program 3202 has been modified relative to the user's offline version 3204 of the program, the user interface component 204 may present various notifications on the user's development interface 902 to convey that the online program 3202 includes edits that have not been synchronized to the local version 3204 of the user's program. To notify the user of these changes, the user interface component 204 may change the color of the vertical indicator 3206 and / or the tab indicator 3302 corresponding to any routines that have been modified on the controller 118. The user interface component 204 may also indicate the portions of the program that have been modified within the workspace canvas 940 (e.g., by highlighting the ladder logic rungs that have been changed, added, or deleted; by highlighting the instruction parameters that have been modified, etc.). In some embodiments, the development interface 902 may also display information about the edits, including the identity of the developer who submitted the edits to the online program 3202 and any development notes submitted by the initiator of the edits explaining the reasons for the changes. The user can then select to synchronize these changes to his or her personal offline version 3404 of the program by selecting the sync button 3304.
[0199] To coordinate edits to both the online and offline versions of a control program within a collaborative development environment where multiple developers view and edit a common control project, the IDE system 202 can include a collaboration management component 210 that tracks these collaborative edits, notifies developers of edits submitted by other users, intelligently resolves differences between the various online and offline versions of the system project, and creates a change history for each system project. In an example scenario, a first developer and a second developer can view an active program 3202 currently running on the controller 118 on their respective development interfaces 902 presented on client devices 504a and 504b. The first developer (at client device 504a) can use the development interface 902 to edit the online version 3202 of the program while the second developer is viewing (on client device 504b) the portion of the program 3202 that has already been edited by the first developer. As part of the edit delegation process, the development interface 902 can prompt the first developer to enter comments about the edit. When the edit is complete and deployed to the controller 118, the collaboration management component 310 stores a record of the comment and the edit in the edit history of the project, which is maintained by the IDE system 202 on cloud storage. The edit history includes a log entry for each edit submitted to the online program 3202, where each entry includes at least an indication of the portion of the program that has been edited, the nature of the edit, the comment submitted by the developer, and the identity of the developer who submitted the edit.
[0200] When an edit is submitted while the second developer is viewing the portion of the online program 3202 affected by the edit, the second developer's development interface 902 can automatically refresh the view of the program 3202 in the second user's workspace canvas 940 to reflect the edit and can also present a notification that an edit has been made. The notification can indicate, within the workspace canvas 940, the portion of the program 3202 that has been affected by the edit. The notification can also identify the first developer who submitted the edit and display the first developer's comment about the edit. Alternatively, the notification can provide only a minimal notification that the program 3202 has been edited, and the second developer can choose to view the edit history if desired to learn about the edit.
[0201] In some embodiments, if there are differences between the online program 3202 and the offline version 3204 of the user's program, as an alternative to allowing the user to select whether to synchronize the local version to the controller 118 or update the offline version to reflect the running version, the collaboration management component 210 can intelligently determine which version of the control program meets one or more suitability criteria and perform a synchronization operation based on that determination. In some scenarios, this may involve a partial synchronization of the offline edits performed on the controller 118 such that only a selected subset of the offline edits are deployed to the online program 3202, with the remaining edits omitted from the synchronization process. The determination of whether the user's offline edits are to be synchronized to the controller 118 and which of the edits are to be sent to the controller 118 can be based on any suitable optimization criteria, including but not limited to determining which version of the control program (e.g., which subset of the proposed edits) will perform a given task with the least amount of code, which version will result in the least energy consumption of the controlled industrial asset, which version will have the least impact on the machine lifecycle, or other such criteria. In some embodiments, this intelligent synchronization can be triggered by selecting the synchronization button 3304.
[0202] In another scenario, a first developer may be editing the offline version 3204 of a program while a second developer is submitting online edits to the online version 3202 of the program. As a result, the offline version 3204 of the first developer's program no longer matches the online program 3202 due to both the changes made to the offline program 3204 by the first developer and the edits made to the online version by the second developer. As in the previous example, the development interface displays a dot 3306 next to any node in the navigation tree 1902 corresponding to a routine that is different between the offline and online versions of the program due to offline edits made by the first developer or edits in the online program 3202 that do not exist in the offline program 3204.
[0203] In some embodiments, the development interface 902 can convey these two types of program differences by presenting two different tabs 932 and corresponding workspace canvases 940 for the same routine - the first tab 932 for the online version 3202 of the program includes new edits that have been submitted by a second developer, and the second tab 932 for the offline version includes offline edits prepared by a first developer. This allows the first developer to view the two sets of edits in adjacent tabs 932 to determine whether the second developer's online edits conflict with the first developer's proposed offline edits, or whether changes to the offline edits are needed. The first developer can then choose to merge the two sets of edits and update the offline version accordingly, or abort the offline edits and only synchronize the second developer's online edits to the offline version 3204 of the first user's program, thus keeping the offline version in sync with the online changes.
[0204] Alternatively, some embodiments of the development interface 902 can present both the first developer's offline edits and the second developer's online edits within the same workspace canvas 940 with appropriate differences, rather than presenting different online and offline versions of the program in two separate tabs 932. The first developer can then selectively synchronize some or all of the offline edits to the online program 3202 based on a determination of whether the offline edits are compatible with the second developer's online edits. The first developer can also choose to merge all online and offline edits with one action by selecting the sync button 3304, which causes all offline edits to be synchronized to the controller 118 and all online edits to be synchronized to the offline version 3204 of the first developer's program, thus resolving all differences between the online and offline versions.
[0205] In some embodiments, if the online and offline edits include modifications to the same part of the control program and are incompatible with each other, the collaboration management component 210 can apply selection criteria to determine which version of the edit should be applied to the running version 3202 of the program. In such embodiments, this proxy process can be enabled by the first developer by selecting the sync button 3304. The collaboration management component 210 can apply any suitable criteria related to selecting the preferred version of the edit. For example, in some embodiments, the collaboration management component 210 can select the edit that is predicted to perform the same control function with the fewest lines of code. In another example, the collaboration management component 210 can select the edit that is predicted to control its associated mechanical asset with the least stress on the machine. In this case, given the built-in industrial expertise regarding how the corresponding control sequences will affect the mechanical asset, the collaboration management component 210 can determine an estimate of the amount of stress applied to the controlled industrial asset based on an analysis of the corresponding versions of the control code.
[0206] For example, the collaboration management component 210 can analyze each version of the control code - the version with online edits applied and the version with alternative offline edits applied - to determine the estimated machine cycle frequency that will result from the execution of each version of the program. Since a higher frequency is associated with faster machine wear, the collaboration management component 210 can select the version that is estimated to execute the control function at the minimum machine cycle frequency without causing the product throughput to drop below a defined minimum. In another example, the collaboration management component 210 can estimate the expected range of motion of a mechanical asset (e.g., a motion device) that will be achieved by each version of the program to perform the same function or the expected range of motion of multiple individual mechanical motions that will be achieved by the corresponding versions of the program to perform the same function, and select the edit that is expected to use the shortest motion or the fewest number of motions to achieve the control function. Other types of predictive control analysis and corresponding edit selection criteria are within the scope of one or more embodiments. Based on the results of such analysis, the collaboration management component 210 can select the offline edit or the current online edit as the most suitable version. If the offline edit is selected, these offline edits are synchronized to the online program 3202 - overriding the online edits - and the development interface 902 of the second developer presents a notification that the previously submitted online edits have been overwritten by the first developer. Alternatively, if the online edit is selected, these edits are synchronized to the offline version 3204 of the user's program, and the pending offline edits are discarded.
[0207] According to another feature related to the collaboration environment, some embodiments of the IDE system 202 can allow selective locking and unlocking of online edits while the user is using the development interface 902 to perform online edits to the control program 3202. For example, while the first developer is using the IDE system 202 to view and edit the online version 3202 of the program, the first developer can choose to lock other developers out of the online edit mode, thereby preventing other developers from submitting online edits to the program 3202. Although in this mode, the IDE system 202 allows other developers to view the online program 3202, it prevents edits to the program 3202 from being submitted from the development interfaces 902 of those other developers.
[0208] If desired, the first developer can choose to unlock online editing for the selected second developer, thereby allowing the second developer to view and edit the online program 3202 in parallel with the first developer. In some embodiments, when a developer unlocks online editing for another developer, the workspace canvas 940 presented to the corresponding developer serves as a shared canvas for simultaneously editing the online program 3202, such that edits submitted by the first developer are reflected in the second developer's workspace canvas 940, and such that edits submitted by the second developer are reflected in the first developer's workspace canvas 940. This can facilitate simultaneous collaborative editing of the online program 3202 by two or more developers.
[0209] The graphical indicators and notification features supported by the development interface 902 can clearly convey the relative online and offline states of the industrial control program within the context of a collaborative development environment. These features allow users to quickly distinguish between: control routines that exist only as an offline version, routines that are executing on the controller but do not exist in the user's offline project, routines that exist in both the online and offline versions of the program but differ due to the submission of an online or offline edit, and routines that match in both their online and offline versions. The collaborative management features supported by embodiments of the IDE system 202 notify users of edits submitted by other users and help coordinate the submission of program edits and the synchronization of program versions within the development platform.
[0210] Figures 35a to 35c A method in accordance with one or more embodiments of the present application is shown. While the methods shown and described herein are shown and described as a series of acts for purposes of simplicity of explanation, it should be understood and appreciated that the invention is not limited by the order of these acts, as some acts may occur in an order different from that shown and described herein and / or concurrently with other acts. For example, those skilled in the art will understand and appreciate that a method may alternatively be represented, for example, as a series of related states or events in a state diagram. Further, not all acts shown are required to implement a method in accordance with the present invention. Additionally, when different entities implement different portions of a method, an interaction diagram may represent the methodology or method in accordance with the present disclosure. Further, two or more of the example methods disclosed herein may be implemented in combination with one another to achieve one or more of the features or advantages described herein.
[0211] Figure 35aShows the first part of an example method 3500a for presenting graphical indications of the online and offline states of an industrial control program on an industrial IDE system. First, at 3502, an explorer panel is presented on the development interface of the industrial IDE. The explorer panel is configured to facilitate browsing and selection of aspects of an industrial automation project (e.g., control programming or routines, HMI development screens, controller tag databases, industrial device parameter configurations, alarm configurations, etc.) to be presented on the workspace canvas of the development interface. The explorer panel may include a collection of selectable icons representing respective viewing categories. Aspects of the project represented by nodes include one or more control programs and their associated routines.
[0212] At 3504, an indicator is presented next to the node corresponding to the routine of the control program in the explorer panel. Before remotely docking with the physical industrial controller, the indicator is initially displayed in a first color, which indicates that the routine exists in the offline version of the program currently being viewed on the development interface.
[0213] At 3506, a tabbed workspace canvas is presented on the development interface. The tabbed workspace canvas displays the routines of the control program such that the respective tabs of the tabbed workspace canvas correspond to the routines. In this arrangement, selection of a tab causes the workspace canvas to display the routine corresponding to the selected tab in the workspace canvas.
[0214] At 3508, it is determined whether the IDE system has received an instruction to go online with the industrial controller. The industrial controller may be executing the online version of the control program being viewed on the development interface, or the industrial controller may be executing another control program that is not currently part of the user's offline project file. If an instruction to go online with the industrial controller is received (Yes at step 3508), the method proceeds to step 3510, where the IDE system remotely connects to the specified industrial controller and reads the online program installed on that controller.
[0215] Then the method proceeds to Figure 35b the second part 3500b shown in. At 3512, it is determined whether the routines of the offline version of the control program correspond to the routines of the online program currently installed on the controller. If the controller includes a routine corresponding to the routine of the offline version of the program (Yes at step 3512), the method proceeds to step 3514, where the color of the indicator next to the node corresponding to the routine is set to a second color, which indicates that the routine exists in both the offline version of the program and the online version of the program installed and executed on the controller.
[0216] At 3516, it is determined whether the online version of the routine matches the offline version of the routine. If the two versions match ("Yes" at step 3516), the method returns to step 3512. Alternatively, if the two versions of the routine do not match due to an edit submitted to either the offline version or the online version of the routine ("No" at step 3516), the method proceeds to step 3518, where a symbol (e.g., a dot or another type of symbol) is presented next to the node corresponding to the routine. The symbol indicates that the online version of the routine does not match the offline version of the routine. In such a case, the development interface may indicate the differences between the online version and the offline version of the routine in the workspace canvas (e.g., newly added or deleted rungs in ladder logic programming, modified instruction parameters, etc.). The user may also choose to synchronize the two versions by writing the offline version of the routine to the controller or synchronizing the edits made to the online version to the offline version.
[0217] If it is determined at step 3512 that the routine of the offline program has no corresponding routine in the online program ("No" at step 3512), the method proceeds to Figure 35c the third part 3500c as shown in. At 3520, a node is added to the navigation tree that represents a routine that exists in the online program and does not exist in the offline project currently being viewed on the development interface. In such a case, if desired, the development interface may allow the user to synchronize a copy of the routine to the offline version of the project.
[0218] The embodiments, systems, and components described herein, as well as the control systems and automation environments that can perform the various aspects set forth in this specification, may include computer or network components capable of interacting across a network, such as servers, clients, programmable logic controllers (PLCs), automation controllers, communication modules, mobile computers, in-vehicle computers for mobile vehicles, wireless components, control components, etc. Computers and servers include one or more processors - electronic integrated circuits that perform logical operations using electrical signals - that are configured to execute instructions stored in media such as random access memory (RAM), read-only memory (ROM), hard disk drives, and removable memory devices, which may include memory sticks, memory cards, flash drives, external hard disk drives, etc.
[0219] Similarly, the term "PLC or automation controller" as used herein can include functionality that can be shared across multiple components, systems, and / or networks. As an example, one or more PLCs or automation controllers can communicate and cooperate with various network devices across a network. This can include substantially any type of controller, communication module, computer, input / output (I / O) device, sensor, actuator, and human-machine interface (HMI) that communicates via a network, the network including a control network, an automation network, and / or a public network. The PLC or automation controller can also communicate with and control various other devices, such as standard or safety-rated I / O modules including analog modules, digital modules, programming / smart I / O modules, other programmable controllers, communication modules, sensors, actuators, output devices, etc.
[0220] Networks can include public networks such as the Internet, intranets, and automation networks such as Control and Information Protocol (CIP) networks, which include DeviceNet, ControlNet, SafetyNet, and Ethernet / IP. Other networks include Ethernet, DH / DH+, Remote I / O, Fieldbus, Modbus, Profibus, CAN, wireless networks, serial protocols, etc. Additionally, network devices can include a variety of possibilities (hardware components and / or software components). These include components such as switches with virtual local area network (VLAN) capabilities, LANs, WANs, proxies, gateways, routers, firewalls, virtual private network (VPN) devices, servers, clients, computers, configuration tools, monitoring tools, and / or other devices.
[0221] To provide context for various aspects of the disclosed subject matter, Figure 36 and Figure 37 and the following discussion is intended to provide a brief, general description of a suitable environment in which the various aspects of the disclosed subject matter can be implemented. Although the various embodiments have been described above in the general context of computer-executable instructions that can run on one or more computers, those skilled in the art will recognize that the various embodiments can also be implemented in combination with other program modules and / or as a combination of hardware and software.
[0222] Typically, a program module includes routines, programs, components, data structures, etc. that perform a particular task or implement a particular abstract data type. Additionally, those skilled in the art will understand that the methods of the present invention may be practiced with other computer system configurations, including single-processor or multi-processor computer systems, minicomputers, mainframe computers, Internet of Things (IoT) devices, distributed computing systems, and personal computers, handheld computing devices, microprocessor-based or programmable consumer electronics, etc., each of which may be operably coupled to one or more associated devices.
[0223] The embodiments shown herein may also be practiced in a distributed computing environment where certain tasks are performed by remote processing devices linked through a communication network. In a distributed computing environment, program modules may be located in both local and remote memory storage devices.
[0224] A computing device generally includes various media, which may include computer-readable storage media, machine-readable storage media, and / or communication media, and these two terms are used differently from each other herein. Computer-readable storage media or machine-readable storage media can be any available storage media accessible by a computer, and include volatile and non-volatile media, removable and non-removable media. By way of example and not limitation, computer-readable storage media or machine-readable storage media can be implemented in conjunction with any method or technology for storing information such as computer-readable instructions or machine-readable instructions, program modules, structured data, or unstructured data.
[0225] Computer-readable storage media may include, but are not limited to, random access memory (RAM), read-only memory (ROM), electrically erasable programmable read-only memory (EEPROM), flash memory or other memory technologies, compact disc read-only memory (CD-ROM), digital versatile disc (DVD), Blu-ray disc (BD) or other optical disc storage devices, magnetic tape cartridges, tapes, magnetic disk storage devices or other magnetic storage devices, solid-state drives or other solid-state storage devices, or other tangible and / or non-transitory media that can be used to store the desired information. In this regard, the terms "tangible" or "non-transitory" as applied to storage devices, memories, or computer-readable media herein should be understood as modifiers that only exclude propagating transient signals themselves and do not relinquish rights to all standard storage devices, memories, or computer-readable media that are not only propagating transient signals themselves.
[0226] Computer-readable storage media can be accessed by one or more local or remote computing devices, for example, via access requests, queries, or other data retrieval protocols, to perform various operations on the information stored by the media.
[0227] A communication medium typically embodies computer-readable instructions, data structures, program modules, or other structured or unstructured data in a data signal, such as a modulated data signal, such as a carrier wave or other transmission mechanism, and includes any information delivery or transmission medium. The term "modulated data signal" or signal refers to a signal that sets or changes one or more of its characteristics in a manner that encodes information in one or more signals. By way of example and not limitation, communication media include wired media such as a wired network or direct wired connection, and wireless media such as acoustic, RF, infrared, and other wireless media.
[0228] Referring again to Figure 36 , an example environment 3600 for implementing various embodiments for the aspects described herein includes a computer 3602 that includes a processing unit 3604, a system memory 3606, and a system bus 3608. The system bus 3608 couples system components, including but not limited to the system memory 3606, to the processing unit 3604. The processing unit 3604 can be any of a variety of commercially available processors. Dual microprocessors and other multi-processor architectures can also be used as the processing unit 3604.
[0229] The system bus 3608 can be any of several types of bus structures that can also use any of a variety of commercially available bus architectures to interconnect to a memory bus (with or without a memory controller), a peripheral bus, and a local bus. The system memory 3606 includes a ROM 3610 and a RAM 3612. A basic input / output system (BIOS) can be stored in non-volatile memory such as ROM, erasable programmable read-only memory (EPROM), EEPROM, and contains basic routines that help transfer information between elements within the computer 3602, for example, during startup. The RAM 3612 can also include high-speed RAM, such as static RAM for caching data.
[0230] The computer 3602 also includes an internal hard disk drive (HDD) 3614 (e.g., EIDE, SATA), one or more external storage devices 3616 (e.g., a magnetic floppy disk drive (FDD) 3616, a memory stick or flash drive reader, a memory card reader, etc.), and an optical disk drive 3620 (e.g., which can read from or write to a CD-ROM disk, a DVD, a BD, etc.). Although the internal HDD 3614 is shown as being located within the computer 3602, the internal HDD 3614 can also be configured to be used external to a suitable chassis (not shown). Additionally, although not shown in the environment 3600, a solid state drive (SSD) can be used in addition to or in place of the HDD 3614. The HDD 3614, the external storage device 3616, and the optical disk drive 3620 can be connected to the system bus 3608 via an HDD interface 3624, an external storage interface 3626, and an optical drive interface 3628, respectively. The interface 3624 for external drive implementation can include at least one or both of the Universal Serial Bus (USB) and the Institute of Electrical and Electronics Engineers (IEEE) 1394 interface technology. Other external drive connection technologies are within the contemplation of the embodiments described herein.
[0231] The drives, along with their associated computer-readable storage media, provide non-volatile storage of data, data structures, computer-executable instructions, etc. For the computer 3602, the drives and storage media are adapted to store any data in a suitable digital format. Although the above description of computer-readable storage media refers to the corresponding type of storage device, those skilled in the art should understand that other types of storage media that are computer-readable - whether currently existing or to be developed in the future - can also be used in the exemplary operating environment. Additionally, any such storage media can contain computer-executable instructions for performing the methods described herein.
[0232] Multiple program modules can be stored in the drives and in the RAM 3612, the multiple program modules including an operating system 3630, one or more application programs 3632, other program modules 3634, and program data 3636. All or part of the operating system, applications, modules, and / or data can also be cached in the RAM 3612. The systems and methods described herein can be implemented using a variety of commercially available operating systems or combinations of operating systems.
[0233] The computer 3602 can optionally include emulation technology. For example, a hypervisor (not shown) or other intermediary can emulate the hardware environment for the operating system 3630, and the emulated hardware can optionally be different from Figure 36The hardware shown in [figure reference]. In such an embodiment, the operating system 3630 may include one virtual machine (VM) out of multiple VMs hosted on the computer 3602. Additionally, the operating system 3630 may provide a runtime environment for the application 3632, such as the Java runtime environment or the.NET framework. The runtime environment is a consistent execution environment that allows the application 3632 to run on any operating system that includes the runtime environment. Similarly, the operating system 3630 may support containers, and the application 3632 may be in the form of a container, which is a lightweight, independent, executable software package that includes, for example, code, runtime, system tools, system libraries, and settings for the application.
[0234] In addition, a security module such as a Trusted Platform Module (TPM) can be utilized to enable the computer 3602. For example, with the TPM, the boot component hashes the next boot component in time and waits for the result to match a security value before loading the next boot component. This process can occur at any layer in the code execution stack of the computer 3602, such as being applied at the application execution level or at the operating system (OS) kernel level, thus enabling security at any level of code execution.
[0235] The user can input commands and information into the computer 3602 through one or more wired / wireless input devices such as the keyboard 3638, the touch screen 3640, and a pointing device such as the mouse 3642. Other input devices (not shown) may include a microphone, an infrared (IR) remote control, a radio frequency (RF) remote control, or other remote controls, a joystick, a virtual reality controller and / or a virtual reality headset, a gamepad, a stylus, an image input device such as a camera, a gesture sensor input device, a vision motion sensor input device, an emotion or face detection device, a biometric input device (e.g., a fingerprint or iris scanner), etc. These input devices and other input devices are typically connected to the processing unit 3604 through an input device interface 3644 that can be coupled to the system bus 3608, but can also be connected through other interfaces such as a parallel port, an IEEE 1394 serial port, a game port, a USB port, an IR interface, an interface, etc.
[0236] The monitor 3644 or other type of display device can also be connected to the system bus 3608 via an interface such as a video adapter 3646. In addition to the monitor 3644, the computer typically also includes other peripheral output devices (not shown), such as speakers, printers, etc.
[0237] The computer 3602 can operate in a networked environment using logical connections via wired and / or wireless communication to one or more remote computers such as the remote computer 3648. The remote computer 3648 can be a workstation, server computer, router, personal computer, portable computer, microprocessor-based entertainment appliance, peer device, or other common network node and typically includes many or all of the elements described with respect to the computer 3602, but for simplicity only the memory / storage device 3650 is shown. The depicted logical connections include wired / wireless connections to a local area network (LAN) 3652 and / or a larger network such as a wide area network (WAN) 3654. Such LAN and WAN networking environments are common in offices and companies and facilitate enterprise-wide computer networks such as intranets, all of which can be connected to a global communication network such as the Internet.
[0238] When used in a LAN networking environment, the computer 3602 can be connected to the local area network 3652 through a wired and / or wireless communication network interface or adapter 3656. The adapter 3656 can facilitate wired or wireless communication to the LAN 3652, which may also include a wireless access point (AP) disposed thereon for communicating with the adapter 3656 in a wireless mode.
[0239] When used in a WAN networking environment, the computer 3602 can include a modem 3658 or can be connected to a communication server on the WAN 3654 via other means for establishing communication through the WAN 3654 such as through the Internet. The modem 3658, which can be an internal or external device and a wired or wireless device, can be connected to the system bus 3608 via an input device interface 3642. In a networked environment, program modules depicted with respect to the computer 3602 or portions thereof can be stored in the remote memory / storage device 3650. It will be understood that the network connections shown are examples and other means of establishing a communication link between computers can be used.
[0240] When used in a LAN or WAN networking environment, in addition to the external storage device 3616 as described above, the computer 3602 can also access a cloud storage system or other network-based storage systems, or instead of the external storage device 3616 as described above, the computer 3602 can access a cloud storage system or other network-based storage systems. Generally, a connection between the computer 3602 and the cloud storage system can be established, for example, via the LAN 3652 or WAN 3654 through the adapter 3656 or the modem 3658, respectively. When connecting the computer 3602 to an associated cloud storage system, the external storage interface 3626 can manage the storage provided by the cloud storage system with the help of the adapter 3656 and / or the modem 3658, just as it manages other types of external storage. For example, the external storage interface 3626 can be configured to provide access to cloud storage sources as if those sources were physically connected to the computer 3602.
[0241] The computer 3602 can be operable to communicate with any wireless device or entity that is operatively arranged in a wireless communication configuration, such as a printer, a scanner, a desktop computer and / or a portable computer, a portable data assistant, a communication satellite, any equipment or location associated with a wirelessly detectable tag (e.g., a kiosk, a newsstand, a store shelf, etc.), and a telephone. This can include Wi-Fi and wireless technologies. Thus, the communication can be a predefined structure like a conventional network or just an ad-hoc communication between at least two devices.
[0242] Figure 37FIG. 0 is a schematic block diagram of an exemplary computing environment 1800 with which the disclosed subject matter may interact. Exemplary computing environment 3700 includes one or more clients 3702. Client 3702 can be hardware and / or software (e.g., threads, processes, computing devices). Exemplary computing environment 3700 also includes one or more servers 3704. Server 3704 can also be hardware and / or software (e.g., threads, processes, computing devices). For example, server 3704 can house threads to perform transformations by employing one or more of the embodiments described herein. A possible communication between client 3702 and server 3704 can be in the form of data packets adapted to be transmitted between two or more computer processes. Exemplary computing environment 3700 includes a communication framework 3706 that can be used to facilitate communications between client 3702 and server 3704. Client 3702 is operatively connected to one or more client data storage devices 3708 that can be used to locally store information to client 3702. Similarly, server 3704 is operatively connected to one or more server data storage devices 3710 that can be used to locally store information to server 3704.
[0243] The foregoing description includes examples of the invention. Of course, it is not possible to describe every conceivable combination of components or methods for purposes of describing the disclosed subject matter, but one of ordinary skill in the art will recognize that many other combinations and permutations of the invention are possible. Accordingly, the disclosed subject matter is intended to embrace all such alterations, modifications, and variations that fall within the spirit and scope of the appended claims.
[0244] In particular and with respect to the various functions performed by the above-described components, devices, circuits, systems, etc., unless otherwise indicated, the terms used to describe such components (including references to “means”) are intended to correspond to any component that performs the specified function of the described component (e.g., any component that is functionally equivalent), even though not structurally equivalent to the disclosed structure, such component still performs the functions of the disclosed subject matter's exemplary aspects shown herein. In this regard, it will also be recognized that the disclosed subject matter includes systems as well as computer-readable media having computer-executable instructions for performing the acts and / or events of the various methods of the disclosed subject matter.
[0245] In addition, although specific features of the disclosed subject matter may be disclosed with respect to only one of several implementations, such features may be combined with one or more other features of other implementations, which may be desirable and advantageous for any given or particular application. Further, to the extent that the terms "includes" and "including" and variations thereof are used in the detailed description or the claims, these terms are intended to be inclusive in a manner similar to the term "comprising".
[0246] In this application, the word "exemplary" is used to mean serving as an example, instance, or illustration. Any aspect or design described herein as "exemplary" is not necessarily to be construed as preferred or advantageous over other aspects or designs. Rather, the use of the word "exemplary" is intended to present concepts in a concrete fashion.
[0247] The various aspects or features described herein may be implemented as a method, apparatus, or article using standard programming and / or engineering techniques. As used herein, the term "article of manufacture" is intended to encompass a computer program accessible from any computer-readable device, carrier, or medium. For example, the computer-readable medium may include, but is not limited to: magnetic storage devices (e.g., hard disks, floppy disks, magnetic strips...), optical disks (e.g., compact disk (CD), digital versatile disk (DVD)...), smart cards, and flash memory devices (e.g., cards, sticks, key drives...).
Claims
1. A system for developing industrial applications, comprising: a memory that stores executable components; and a processor operably coupled to the memory, the processor executing the executable components, the executable components including: a user interface component configured to present an industrial integrated development environment (IDE) development interface and receive industrial design inputs via interaction with the development interface, the industrial design inputs defining aspects of an industrial automation project; a project generation component configured to generate system project data based on the industrial design inputs; and a project deployment component configured to remotely connect the system to an industrial controller, wherein the development interface includes an explorer panel and a tabbed workspace canvas, the explorer panel facilitating browsing of aspects of the industrial automation project, the explorer panel displays nodes representing routines of one or more control programs included as part of the industrial automation project, the tabbed workspace canvas includes tabs corresponding respectively to the routines of the one or more control programs, and the user interface component is configured to: present a symbol representing a routine next to one of the nodes in response to determining that a routine of an offline version of a control program being viewed on the development interface does not match a corresponding routine of an online version of the control program executing on the industrial controller; present a corresponding color-coded tab indicator on the tab, wherein a first subset of the color-coded tab indicator corresponding to routines present in both the online version and the offline version of the control program is presented in a first color; and a second subset of the color-coded tab indicator corresponding to routines present in the offline version of the control program but not present in the online version of the control program is presented in a second color.
2. The system according to claim 1, wherein the explorer panel further displays a corresponding color-coded indicator next to the node representing the routine, a first subset of the color-coded indicator corresponding to routines present in both the online version and the offline version of the control program is presented in a third color; and a second subset of the color-coded indicator corresponding to routines present in the offline version of the control program and not present in the online version of the control program is presented in a fourth color.
3. The system according to claim 1, wherein, Arrange the nodes representing the routines hierarchically according to the industrial controller to which the routines are assigned.
4. The system according to claim 1, wherein the development interface includes a synchronization button, and the project deployment component is configured to: in response to selection of the synchronization button, perform a synchronization operation to resolve differences between the online version and the offline version of the control program.
5. The system according to claim 4, wherein, The synchronization operation includes at least one of the following: Synchronize changes made to the online version of the control program to the offline version of the control program, or Synchronize changes made to the offline version of the control program to the online version of the control program.
6. The system according to claim 1, wherein The tabbed workspace canvas displays a selected routine from the routines based on a selection of a node in the explorer panel or a selection of a tab corresponding to the routine respectively.
7. The system according to claim 6, wherein The user interface component is configured to:[[]] In response to a selection of one of the nodes corresponding to an online routine executed on the industrial controller, display a view of the online routine in the tabbed workspace canvas, and In response to determining that the online routine has been modified on the industrial controller by an edit submitted via another development interface, update the view of the online routine and display a notification of the edit on the development interface.
8. The system according to claim 7, wherein, The notification identifies the developer who submitted the edit and displays a comment about the edit submitted by the developer.
9. A method for developing an industrial application, comprising: Presenting, by an industrial integrated development environment (IDE) system including a processor, a development interface on a client device, wherein the development interface includes an explorer panel that facilitates browsing aspects of an industrial automation project, and the presenting includes: Displaying, on the explorer panel, nodes representing routines of one or more control programs that are part of the industrial automation project, In response to determining that a routine of an offline version of a control program being viewed on the development interface does not match a corresponding routine of an online version of the control program executed on an industrial controller, presenting a symbol corresponding to the routine next to one of the nodes, Presenting a tabbed workspace canvas that includes tabs corresponding to the routines of the one or more control programs, and Presenting corresponding color-coded tab indicators on the tabs, wherein a first subset of the color-coded tab indicators corresponding to routines that exist in both the online version and the offline version of the control program is presented in a first color, and a second subset of the color-coded tab indicators corresponding to routines that exist in the offline version of the control program and do not exist in the online version of the control program is presented in a second color.
10. The method according to claim 9, wherein the presenting further includes: presenting corresponding color-coded indicators next to the nodes representing the routines, a first subset of the color-coded indicators corresponding to routines that exist in both the online version and the offline version of the control program is presented in a third color, and a second subset of the color-coded indicators corresponding to routines that exist in the offline version of the control program and do not exist in the online version of the control program is presented in a fourth color.
11. The method according to claim 9, wherein, The rendering further includes: hierarchically arranging nodes representing the routines according to the industrial controller to which the routines are assigned.
12. The method according to claim 9, further comprising: The industrial IDE system performs a synchronization operation to resolve differences between an online version and an offline version of the control program in response to receiving a selection of a synchronization button displayed on the development interface.
13. The method according to claim 12, wherein, Performing the synchronization operation includes at least one of the following: Synchronizing modifications made to the online version of the control program to the offline version of the control program, or Synchronizing modifications made to the offline version of the control program to the online version of the control program.
14. The method according to claim 9, wherein The tabbed workspace canvas displays a selected routine among the routines based on a selection of a node in the explorer panel or a selection of a tab corresponding to the routine.
15. The method according to claim 14, further comprising: The industrial IDE system displays a view of the online routine in the tabbed workspace canvas in response to a selection of one of the nodes corresponding to an online routine executed on the industrial controller, and In response to determining that the online routine has been edited on the industrial controller via another development interface: The industrial IDE system updates the view of the online routine, and The industrial IDE system displays a notification of the edit on the development interface.
16. The method according to claim 15, wherein the notification identifies the developer who submitted the edit and displays comments about the edit submitted by the developer.
17. A non-transitory computer-readable medium having instructions stored thereon that, when executed, cause an industrial integrated development environment (IDE) system including a processor to perform operations, the operations including: Rendering a development interface on a client device, wherein the development interface includes an explorer panel that facilitates browsing aspects of an industrial automation project, and the rendering includes: Displaying nodes representing routines of one or more control programs, the one or more control programs being part of the industrial automation project, on the explorer panel, In response to determining that a routine of an offline version of a control program being viewed on the development interface is different from a corresponding routine of an online version of the control program executed on an industrial controller, presenting a symbol corresponding to the routine next to one of the nodes, presenting a tabbed workspace canvas that includes tabs corresponding to the routines of the one or more control programs, and Presenting corresponding color-coded tab indicators on the tabs, wherein a first subset of the color-coded tab indicators corresponding to routines that exist in both the online version and the offline version of the control program is presented in a first color, and A second subset of the color-coded tab indicators corresponding to routines that are present in the offline version of the control program and absent from the online version of the control program is presented in a second color.
18. The non-transitory computer-readable medium according to claim 17, wherein the presenting further comprises: presenting a corresponding color-coded indicator next to a node representing the routine, a first subset of the color-coded indicators corresponding to routines that are present in both the online version and the offline version of the control program is presented in a third color, and a second subset of the color-coded indicators corresponding to routines that are present in the offline version of the control program and absent from the online version of the control program is presented in a fourth color.
Citation Information
Patent Citations
System management user interface providing user access to status information for process control system equipment including displayed propagated status in a navigation pane
US20070239351A1
Methods and Systems for Reporting on Build Runs in Software Development
US20130339932A1
Deferred synchronization for work unit-related data
US20160342671A1
Development platform for industrial internet applications
US20190356739A1
Tree-based interface apparatus for display of call dependencies and method therefor
US7065717B1