WO2021245247A1 - Method for creating and executing a control program for controlling an automation system, and automation system - Google Patents

Method for creating and executing a control program for controlling an automation system, and automation system Download PDF

Info

Publication number
WO2021245247A1
WO2021245247A1 PCT/EP2021/065029 EP2021065029W WO2021245247A1 WO 2021245247 A1 WO2021245247 A1 WO 2021245247A1 EP 2021065029 W EP2021065029 W EP 2021065029W WO 2021245247 A1 WO2021245247 A1 WO 2021245247A1
Authority
WO
WIPO (PCT)
Prior art keywords
program code
version
input module
instance
client device
Prior art date
Application number
PCT/EP2021/065029
Other languages
German (de)
French (fr)
Inventor
Ralf DREESEN
Original Assignee
Beckhoff Automation Gmbh
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beckhoff Automation Gmbh filed Critical Beckhoff Automation Gmbh
Priority to EP21731117.4A priority Critical patent/EP4147121A1/en
Priority to CN202180039726.4A priority patent/CN115702413A/en
Publication of WO2021245247A1 publication Critical patent/WO2021245247A1/en
Priority to US18/060,538 priority patent/US20230101320A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/53Decompilation; Disassembly
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • G05B19/056Programming the PLC
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/30Semantic analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/40Processing or translation of natural language
    • G06F40/58Use of machine translation, e.g. for multi-lingual retrieval, for server-side translation for client devices or for real-time translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/452Remote windowing, e.g. X-Window System, desktop virtualisation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/02Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]

Definitions

  • the invention relates to a method for creating and executing a control program for controlling an automation system.
  • the invention also relates to an automation system which is set up to carry out the method for creating and executing a control program for controlling an automation system.
  • the technical discipline of automation technology (implementation, measurement, control / regulation, communication, human / machine interface, safety, etc.) has the task of automating machines including industrial robots and / or systems, i. H. To be able to operate independently and without human involvement.
  • a degree of automation (ratio of the automated production steps to all production steps) in an automation system is higher, the more independent a respective machine in a system and / or a relevant system is or are from human intervention.
  • the goals of automation technology include relieving people of dangerous, strenuous and / or monotonous activities, improving quality through the technical system, increasing the efficiency of the system and reducing costs through the system.
  • Advances in machines, signal acquisition, signal processing and / or communication (networking) of components within the automation system can significantly increase the degree of automation of an existing or a new system compared to the state of the art.
  • Programmable logic controllers are usually used to control automation systems. Programmable logic controllers are used, among other things, in process control technology, for example to control production lines or chemical plants. Machine controls designed as programmable logic controllers control or regulate machines and systems by actuators such as Relays, drives or valves can be controlled as a function of measured values that were recorded by sensors arranged on the machine or system.
  • Programmable logic controllers are usually event-driven and periodically execute a control program.
  • the signals from the sensors are read in within an execution cycle and output values for the actuators are calculated and output on the basis of the signals.
  • IDE Integrated Development Environments
  • So-called IDE also enable the user to use translation functions that enable the created program code to be translated into a binary language.
  • IDEs are set up, among other things, to carry out debugging processes that enable the user to find errors in the program code that has been created.
  • IDEs are operated locally on a desktop computer or on a laptop.
  • a corresponding IDE is installed on the computer to be used and that the computer used has sufficient computing power to carry out the functions mentioned.
  • Common IDEs for corresponding operating systems are also specified. The user is therefore bound to the computer on which the IDE is installed to create program code. This represents a considerable restriction in the flexibility of the user and the way in which the programming of control programs in automation technology can be carried out.
  • One object of the invention is thus to provide a method for creating and executing a control program for controlling an automation system that allows a user a high degree of flexibility.
  • Another object of the invention is to provide a corresponding automation system which is set up to carry out the method for creating and executing a control program for controlling an automation system.
  • a method for creating and executing a control program for controlling an automation system with a controller and a web server connected to the controller comprising:
  • a method for creating and executing a control program for controlling an automation system in which web-based programming of the program code of the control program is made possible via a web-based development environment.
  • a web-based development environment with an input module for creating a program code and a translation module for translating the created program code into a binary program for controlling the automation system is installed on a web server.
  • the input module of the web-based development environment can be executed in a web browser.
  • the translation module on the other hand, can be executed on the web server and is set up to translate a program code of any programming language into a program code of a binary language.
  • a user can thus establish a connection to the web server via a web browser running on any client device and execute an instance of the input module of the web-based development environment in the web browser running on the client device.
  • the client device can be a desktop computer, laptop, or any mobile device. This means that a user can act to create a program code for a control program from any client device. It is therefore not necessary for a development environment including an input module to be installed on the client device used in order to carry out a programming process for creating the program code.
  • the instance of the input module executed in the web browser of the client device is platform-independent and can be executed on any client device that is controlled via any operating system. This makes the web-based development environment platform-independent.
  • the user then creates a connection to a working environment set up on the web server via the instance of the input module executed in the web browser.
  • a programming project can be set up in the working environment which contains all files, directories or databases necessary to create the program code.
  • the working environment thus enables the web server to be structured so that different programming projects can be arranged so that they can be separated from one another.
  • the work environment can, for example, be provided with password-protected access and only allow authorized users to connect. This means that sensitive data from different users can be stored on the web server.
  • the user can subsequently create a version of the program code of the control program in any programming language from the respective client device used.
  • the user By executing the instance of the input module in the web browser of the client device used, the user is not bound to a specific client device to create the program code, which allows the user a high degree of flexibility and the user by using any client Device can create a program code for a control program at any location.
  • the program code transfer step only the changes to the program code made in the code creation step, on the basis of which the first version of the program code was created, can be transferred from the instance of the input module running in the web browser to the web server via the internet connection. This is of particular interest if the first version of the program code represents a modified version of a program code that has already been created.
  • the first programming language can be any programming language or a programming language known from the prior art for creating control programs for automation systems.
  • the instance of the input module executed in the web browser transmits the created program code to the web server and prompts the latter to store the transmitted program code in a program file within the working environment to write.
  • a program file can be designed as a composite type and have a plurality of files arranged in corresponding directories. This means that the program code created is stored in the programming language selected by the user on the server, in particular in the corresponding work environment, so that the program code created can be stored on the Client device used by the user is not necessary to back up the programming project. In this way, it can be achieved that when further editing the created program code, the user is not bound to the initially selected client device, but can edit the already created program code from any client device.
  • the program file can also be designed, comparable to a buffer, as a file in a main memory of the web server, so that changes to the program file do not have to be automatically saved in a permanent data memory, such as a hard drive, of the web server.
  • program file can be associated with an association file in the permanent data memory of the web server, in which the contents of the program file can be stored so that the contents of the program file can be stored in the permanent memory of the web server.
  • this can be translated into a corresponding binary code that can be executed for controlling the automation system by the control of the automation system.
  • the translation process can be outsourced to the web server, so that a computationally intensive translation of the generated program code on the client device can be avoided. A saving in resources of the client device used for creating the program code can thus be achieved.
  • the generated binary code can be transmitted directly from the web server, in particular from the work environment, to a control of the automation system connected to the web server and from of the controller.
  • a smooth transition between creating the program code and executing the respective control program through the control of the automation system and the associated control of the automation system can be achieved here.
  • a cumbersome process in which a program code is otherwise first created on a specially set up client device and translated into binary code, which then has to be uploaded to a controller of an automation system so that the controller can execute the respective control program and thus the automation system control can thus be avoided.
  • the method further comprises:
  • a connection between the further client device and the web server can be established via a further web browser running on the further client device.
  • the input module can be executed in the further web browser of the further client device.
  • the further client device can be any desktop, laptop or any mobile device and can be executed with any operating system, which can also be different from the operating system of the client device already connected to the web server.
  • the two web browsers of the two client devices can be different web browsers. The different instances of the input module can thus be executed in different web browsers of different client devices.
  • a connection to the working environment can be established and after the program code written in the program file has been transferred from the web server to the further instance of the input module executed in the further web browser, the The program code created can be displayed in the further instance of the input module on the further client device.
  • the further user can make changes to the program code created and create a second version of the program code.
  • the second version of the program code can subsequently be transferred from the further instance of the input module, which is executed in the further web browser, to the web server, in particular to the work environment, and written into the program file.
  • the program file stored in the working environment of the web server can be modified by both the first user and the second user.
  • the second version written in the program file can then be transmitted to the first user, in particular to the instance of the input module executed in the web browser of the client device, and displayed there.
  • This ensures that both users display the identical version of the program code at the same time in the input module executed in the web browser of the client device used in each case.
  • the different users can thus track the changes made by the respective other user, so that it is possible for the two users to work together to create the program code.
  • the individual users are thus able to benefit from their the client device used to effect changes to the program code and to track the changes made by the other users.
  • the second version of the program code created by the additional user of the additional client device can be written into the program file and thus stored on the web server. Furthermore, the second version written in the program file can be translated into a corresponding binary code by the translation module executed on the web server, in particular in the work environment, transferred to the control of the automation system and executed by this to control the automation system.
  • This enables a program code to be created in cooperation with different users using different client devices, translated using the web server and executed by a controller of the automation system. In this way, a cooperative collaboration for carrying out a common programming project for creating a control program for an automation system can be achieved.
  • the changes made in the further instance of the input module to the second version of the program code and the first version of the program code are transferred in the change transfer step, the method further comprising:
  • the respective version of the program code to which the changes were made by the respective user is transmitted from the respective instance of the input module to the web server and the transmitted version of the program code with the version of the written in the program file Program codes is compared, it can be ensured that with simultaneous processing of the program code by several users, all users are editing the identical version of the program code.
  • the transmitted changes are not written into the program file and instead the version currently written in the program file is transmitted to the respective user and saved in of the respective instance of the input module. This ensures that all users connected to the working environment are shown the current version of the program code written in the program file, so that all users editing the respective program project can edit an identical version of the program code.
  • the changes made in the further instance of the input module to the second version of the program code and information relating to the first version of the program code are transmitted in the change transfer step, the method further comprising:
  • Information relating to the first version can be, for example, a version number that uniquely identifies the version of the program code.
  • the version number of the first version of the program code can then be compared with the version number of the version of the program code stored in the program file in order to determine whether the version numbers match or differ.
  • each of the entries made in the code generation step is transmitted in an individual message in the program code transmission step, each of the changes made to the first version of the program code being transmitted in an individual message in the change transmission step.
  • a change in the program code can be a single keystroke of the client device or a single addition or deletion of a character in the program code displayed in the respective instance of the input module.
  • the translation module further comprises an analysis module for performing a semantic analysis and / or a syntactic analysis of the program code created in, the method further comprising: Execution of a global analysis of the program code created and written in the program file in the first programming language by the analysis module and determination of global analysis results in a global analysis step, the global analysis of the program code including a semantic analysis and / or a syntactic analysis of the entire program code Comprises a basis of semantics and / or a grammar of the first programming language;
  • the global analysis results are transmitted as a response from the web server to a poll request from the instance of the input module of the client device executed in the web browser and / or to a poll request from the further instance of the input module of the further client executed in the further web browser -Get trained.
  • the analysis results are automatically displayed in the instance of the input module used by the user. can be asked.
  • the instance of the input module can send corresponding inquiries to the web server at a preset time interval as to whether corresponding global analysis results of the analysis module are available.
  • the corresponding analysis results are transmitted from the web server to the instance of the input module executed in the web browser and displayed by this to the user.
  • the user is thus automatically informed of the corresponding semantic or syntactic analysis results without the user having to carry out a corresponding query.
  • the user is thus automatically shown the corresponding analysis results by the instance of the input module used by him and does not have to initiate a corresponding analysis.
  • global analysis results include error messages regarding semantic and / or syntactic errors in the created program code, program objects used in the program code and relationships between the program objects used in the program code, whereby program objects used in the program code variables, functions, data types, namespaces or other objects include.
  • the analysis results created in the global analysis which include both semantic and syntactic errors in the program code created and / or variables, functions, data types, namespaces and other instances of the programming language used, the user can for a possible Smooth programming of the program code, comprehensive information and input assistance are provided.
  • the global analysis step further comprises:
  • This has the technical advantage that the program code can be edited by the respective user while the global analysis is being carried out by the analysis module.
  • an analysis version of the program code written in the program file is first created, on the basis of which the corresponding global analysis of the program code is carried out by the analysis module.
  • the global analysis is being carried out by the analysis module, which comprises the entire program code and is therefore time-consuming, further changes can be made to the version of the program code written in the program file.
  • the user does not have to interrupt the programming process and can therefore make further changes to the program code while the analysis is being carried out.
  • the method further comprises:
  • the input module can provide the user with additional input aids.
  • the local analysis only analyzes parts of the generated program code. For this purpose, a current version of the program code written in the program file is first created and the respective local analysis is carried out on the current version. In particular, a current version of the program code is created for each change in the program code that is transmitted from the respective instance of the input module to the web server and a corresponding local analysis is carried out.
  • the transmission of the local analysis results is designed as a push message from the web server to the instance of the input module of the client device executed in the web browser and / or to the further instance of the input module of the further client device executed in the further web browser.
  • the analysis module comprises a global analysis module for carrying out the global analysis and a local analysis module for carrying out the local analysis.
  • the translation step further comprises:
  • the translation module By dividing the translation module into back-end and front-end units, of which the back-end unit provides a translation of the high-level language into binary code and the front-end unit provides a translation of the first programming language into the high-level language, the translation module can be easily adapted to various first programming languages or various controls of the automation system made possible by exclusively adapting the front-end unit or adapting the back-end unit.
  • the back-end unit has to be adapted to the translation of the high-level language into the binary language used by the further processor unit, while the front-end unit can remain unchanged.
  • the first programming language is a graphical programming language.
  • the method further comprises:
  • the debugging step further comprises:
  • the user can thus easily initiate the functioning of the program code he has created from the client device he is using, and does not require a direct connection to control the automation system or a simulation device installed on the client device to simulate a control of an automation system to check the functionality of the created program code.
  • the generated program code can be translated into a corresponding binary code by the translation module, and the binary code can be transferred from the web server to the control of the automation system and executed by it.
  • Information such as measured values from sensors of the automation system or other memory entries in the controller, can subsequently be transferred from the controller via the web server to the instance of the input module executed in the respective web browser and displayed to the user by this, so that the created program code is functional can be determined on the basis of the behavior of the controller or the components of the automation system controlled by the controller.
  • the debug translation step further comprises:
  • the work environment connection step comprises: generating the work environment on the web server in a work environment generation step; and Setting up the translation module in the work environment in one setup step.
  • a corresponding working environment with a translation module is set up in the web server.
  • one or a plurality of program files can be set up in the working environment.
  • a user can thus comfortably start a new programming project by executing the input module in the web server of a client device used by him and save and edit the correspondingly created program code within a working environment provided on the web server.
  • Different programming projects can thus be stored individually in different work environments and separated from one another. This avoids mixing up different projects.
  • a plurality of working environments that are separate from one another are generated on the web server, the translation module being executable in each working environment, and an individual programming project being able to be carried out in each working environment.
  • the various work environments can also be provided with corresponding, for example password-protected, accesses so that only authorized users can access the individual projects in the work environment.
  • the functionality of the web-based development environment and in particular the computing power of the web server can be made available to various users for carrying out corresponding programming projects. A backup of sensitive data on the web server can thus be guaranteed.
  • a plurality of instances of the translation module can be created for the translation module of the web-based development environment set up on the web server.
  • the various instances of the translation module can be executed in the various working environments. This means that several different programming projects can be processed at the same time.
  • Each of the instances of the translator The application module can have an analysis module so that local and global analyzes of the program codes created within the programming environments can be carried out.
  • the web server is integrated into the control of the automation system.
  • the working environment further comprises a service module, where the service module is set up to carry out computationally intensive processes of the input module executed in the web browser.
  • an automation system with a controller and a web server connected to the controller is provided, the web server being connectable to a client device and a further client device, a working environment and a web-based development environment on the web server is installed, and wherein the automation system is set up to execute the inventive method for creating and executing a control program for controlling an automation system.
  • a feature can be positive; H. present, or negative, d. H. absent, be designed, wherein a negative feature is not explicitly explained as a feature unless value is attached to the invention that it is absent, that is, the invention actually made and not one constructed by the prior art consists in this feature omit.
  • each characteristic can be understood as an optional, arbitrary or preferred, i.e. as a non-binding, characteristic. It is thus possible to extract a feature, possibly including its periphery, from an exemplary embodiment, this feature then being transferable to a generalized inventive concept.
  • the lack of a feature in one embodiment shows that the feature is optional with respect to the invention.
  • FIG. 1 shows a schematic representation of an automation system according to one embodiment
  • FIG. 2 shows a flow diagram of a method for creating and executing a control program for controlling an automation system according to an embodiment
  • FIG. 3 shows a further flow diagram of the method for creating and executing a control program for controlling an automation system according to a further embodiment
  • FIG. 4 shows a further flow diagram of the method for creating and executing a control program for controlling an automation system according to a further embodiment
  • FIG. 5 shows a time flow diagram of data communication between the web server and the client devices of the automation system in FIG. 1, according to an embodiment
  • FIG. 6 shows a time flow diagram of a data communication between the web server ver and the client devices of the automation system in FIG. 1, according to an embodiment
  • FIG. 7 shows a further flow diagram of the method for creating and executing a control program for controlling an automation system according to a further embodiment
  • FIG. 8 shows a further flow diagram of the method for creating and executing a control program for controlling an automation system according to a further embodiment
  • FIG. 9 shows a further schematic representation of the automation system in FIG. 1 according to a further embodiment.
  • FIG. 1 shows a schematic illustration of an automation system 200 according to an embodiment.
  • the automation system 200 shown in FIG. 1 comprises a controller 201 and a web server 203, which is connected to the controller via a data bus 213.
  • a working environment 209 is set up on the web server 203, in which a web-based development environment 300 can be executed, the development environment 300 being installed on the web server 203.
  • the controller 201 and the web server 203 are implemented by two individual data processing systems.
  • the web server 203 can be integrated into the controller 201.
  • a connection to the Internet can be implemented via the data bus 213.
  • a client device 205 and a further client device 207 are also connected to the web server 203 via an internet connection 215.
  • a web browser 206 in which an instance of an input module 311 of the web-based development environment 300 is executed, is installed on the client device 205.
  • a further web browser 208 in which a further instance of the input module 313 is executed, is installed on the further client device 207.
  • the client device 205 and the further client device 207 can be any data processing system, for example an industrial computer, a desktop computer, a laptop or any mobile device, for example a mobile phone or tablet.
  • the web browsers 206, 208 can be any web browser known from the prior art, and the client devices 205, 207 can be operated by any operating systems known from the prior art. Alternatively, a web browser can also be integrated into an application program and run as part of the application program.
  • the automation system 200 can be any industrial automation system and the controller 201 can be designed as any control of an automation system, in particular a programmable logic controller PLC.
  • any number of client devices can be connected to the web server 203 via an Internet connection 215.
  • the automation system 200 can have any number of web servers 203.
  • any number of different work environments 209 can be set up on the web server 203, on each of which web-based development environments 300 can be executed.
  • FIG. 2 shows a flow chart of a method 100 for creating and executing a control program for controlling an automation system 200 according to one embodiment.
  • the method 100 for creating and executing a control program for controlling an automation system 200 can be applied to automation systems with a controller 201 and a web server 203 connected to the controller 201 according to the automation system shown in FIG. 1.
  • a user can use a client device 205 used by him, for example a desktop computer or laptop or any mobile device, and a web browser 206 running on the client device 205 via an internet connection 215 with the web server 203 in a server connection step 101 connect.
  • This connection to the web server 203 can include, for example, a password-protected access process in which the user has to log in using a correspondingly created user account.
  • the user can load an instance of the input module 301 of the web-based development environment 300 in a work environment connection step 103 and display it in the web browser 206 of the client Device 205.
  • the instance of the input module 311 can have a corresponding graphical user interface GUI that provides the user with input options, such as text editors.
  • the instance of the input module 311 can be constructed in a manner comparable to integrated development environments (IDE) known from the prior art.
  • the user Via the graphical user interface GUI of the instance of the input module 311 executed in the web browser 206, the user can create a connection to a work environment 209 on the web server 201 in the work environment connection step 103.
  • the working environment 209 set up on the web server 201 can include a corresponding programming project including a program file in which a program code of the control program to be modified is arranged.
  • the user can set up a new programming project in the working environment 209 via the instance of the input module 300 executed in the web browser 206 and create a new program code.
  • a programming project can have any other files in which any information required to carry out the programming process is stored.
  • the programming project can include documentation of the program code or code for controlling the translation process.
  • the individual files can be arranged in appropriate directories.
  • a programming project can have various databases that are required for the creation of a program code in a corresponding programming language and, for example, include usable file types, functions and other objects of the respective programming language. the In particular, databases can be automatically filled with content. This is especially the case when performing analyzes of the program code created, in which the analysis results are stored or temporarily stored in the databases.
  • the user can create a first version of the program code to be created for a control program for the automation system 200 in a first programming language in a code creation step 105 by making appropriate entries in the instance of the input module 311 executed in the web browser 206.
  • a corresponding program code can be created in a first programming language via various text editors or graph editors of the input module 301 within the web browser 206 executed by the client device 205.
  • the first programming language used can be any text-based or graphical programming language known from the prior art.
  • the first programming language can be a programming language known from the prior art for automation systems, such as, for example, Sequential Function Chart SFC, Ladder Diagram LD or Function Block Diagram FBD.
  • the first programming language can be any text-based or graphical programming language known from the prior art.
  • the first version of the program code can be a newly created program code.
  • the first version of the program code can be a modified version of a program code that has already been created and which is stored on the web server 203 within the working environment 209 under the corresponding programming project.
  • the program code that has already been created can first be loaded from the web server 203 to the instance of the input module 311 executed in the web browser 206 of the client device 205.
  • a program code transfer step 107 the created first version of the program code can be transferred from the instance of input module 311 executed in web browser 206 to web server 203 via internet connection 215.
  • the transmission of the generated program code from the instance of the input module 311 executed in the web browser 206 to the web server 203 can be carried out automatically by the instance of the input module 311 executed in the web browser 206 transmitting corresponding messages to the web server 203 at predetermined time intervals.
  • the program code transfer step 107 only the changes to the program code made in the code creation step 105, on the basis of which the first version of the program code was created, can be transferred from the instance of the input module 311 executed in the web browser 206 to the web server 203 via the internet connection 215. This is of particular interest if the first version of the program code represents a modified version of a program code that has already been created.
  • the user can use a corresponding send function to transmit the program code created by him from the instance of the input module 311 executed in the web browser 206 to the web server 203.
  • the transmitted program code can be written into a program file within the working environment in a writing step 109.
  • the program file of the working environment can have been created in the course of a newly created programming project.
  • the program file can be part of an already existing programming project, while the created first version of the program code represents a modification of an already existing program code.
  • the program file can be designed as a file in a main memory of the web server 203, so that changes to the program file do not have to be automatically stored in a permanent data memory, such as a hard disk, of the web server 203.
  • the program file can be associated with an association file in the permanent data memory of the web server 203, in which the contents of the program file can be stored, so that the contents of the program file can be stored in the permanent memory of the web server 203.
  • the program file can be stored in the write step 109 on the permanent data memory of the web server 203.
  • a program file can, for example, be structured as a compound type and, in turn, comprise further file components that, for example, form parts of a comprehensive Include control program.
  • the generated program code can comprise a complete control program. Alternatively, the generated program code can represent part of a complex control program.
  • the translation module 303 of the web-based development environment 300 which can be executed in the working environment 209, can subsequently be executed and the program code written in the program file, which is written in the first programming language, into a corresponding binary code of a binary language or a Machine language to be translated.
  • the binary code generated by the translation by the translation module 303 is adapted to the design of the controller 201 of the automation system, so that the translated binary code can be executed by the controller 201.
  • the generated binary code can be transmitted from the working environment 209 to the controller 201 of the automation system 200 in a binary code transmission step 113. This can be achieved, for example, via a corresponding data bus 213.
  • the data bus 213 can be designed as a local network connection, for example.
  • the binary code After the binary code has been transmitted to the controller 201, it can be executed in an execution step 115 by the controller 201 and the automation system 200 controlled in accordance with the control program created.
  • FIG. 3 shows a further flow diagram of the method 100 for creating and executing a control program for controlling an automation system 200 according to a further embodiment.
  • the embodiment of the method 100 in FIG. 3 is based on the embodiment in FIG. 2 and comprises all method steps of the embodiment in FIG. 2. If these remain unchanged in the embodiment in FIG. 3, a renewed detailed description is dispensed with.
  • the embodiment in FIG. 3 describes the creation of a program code by two users who, via individual client devices, for example, the client device 205 and the further client device 207 according to FIG. 1, simultaneously write the program code of the control program.
  • a connection between the further client device 207 and the web server 203 can be established via a further web browser 208.
  • the connection between the further client device 207 and the web server 203 can in turn comprise a password-protected access process in which the further user has to log into the server via a corresponding individual user account.
  • the further user can then load a further instance of the input module 313 of the web-based development environment 300 installed on the web server 203 via the further web browser 208 of the further client device 207 and in a further work environment connection step 119 in the further web browser 208 of the further client device 207 To run.
  • the further instance of the input module 313 can, analogously to the instance of the input module 311, have a graphical user interface GUI which, within the further web browser 208, provides the user with corresponding input options for creating the program code.
  • the two instances of the input module 311, 313 can be executed in different web browsers and in different client devices that are operated with different operating systems.
  • the client device 205 can be a desktop computer, while the other client device 207 is a mobile device.
  • a connection to the work environment 209 of the web server 203 can then be established via the further instance of the input module 313. This in turn can include a password-protected access process.
  • the first version of the program code written in the program file can be transferred from the web server 203 to the further instance of the input module 313 and displayed there.
  • the additional user can thus edit the version of the program code edited by the first user.
  • a change creation step 123 changes can be made to the first version of the program code and a second version of the program code can be created.
  • the user can modify the program code downloaded from the working environment 209 of the web server 203 accordingly by means of corresponding inputs at the other instance of the input module 313.
  • the user can use the editors provided in the input module 301, via which the program code of the corresponding programming language can be created.
  • the second version of the program code can then be transmitted in a first change transmission step 125 from the further instance of the input module 313 to the web server 203 and in particular to the work environment 209.
  • the second version of the program code can be transferred in particular in that only the changes made in the program code are transferred.
  • each individual change made can be transmitted from the further instance of the input module 313 to the web server 203 in an individual message.
  • the second version of the program code can be written into the program file of the working environment 209 in a change writing step 127.
  • the changes made can be entered into the first version of the program code.
  • the version written in the program file can be transferred from the working environment 209 to the instance of the input module 311 of the client device 205 executed in the web browser 206 and in a change display step 131 the User of the client device 205, the second version of the program code created by the further user of the further client device 207 and in particular the changes made to the program code in the respective instance of the input module 311 are displayed.
  • both users can work with the same version of the program code, so that simultaneous processing of the program code by a plurality of users is possible.
  • the transmission of the version of the program code written in the program file in the change transmission step 129 can be carried out automatically by the web server 203 automatically transmitting the version of the program code to the instance of the input module 311 of the client device 205 after the version of the program code has been written into the program file.
  • the version of the program code can be transmitted from the web server 203 to the client devices 205, 207 as response messages to corresponding requests from the client devices 205, 207 or the instances of the input module 311, 313 to the web server 203 in which the client -Devices 205, 207 or the instances of the input module 311, 313 inquire whether current versions of the program code are available.
  • FIG. 4 shows a further flow diagram of the method 100 for creating and executing a control program for controlling an automation system 200 according to a further embodiment.
  • FIG. 4 is based on the embodiment in FIG. 3 and comprises all the method steps described there. Insofar as these remain unchanged in the embodiment in FIG. 4, a renewed detailed description is dispensed with.
  • the change transfer step 125 in addition to the changes made to the first version of the program code, the first version or information relating to the first version of the program code, for example a version number , are transmitted to the web server 203.
  • the first version transmitted in the change transmission step 125 or the information relating to the first version of the program code, on the basis of which the second version of the program code was created by making the corresponding changes can be compared with the version which is written in the program file and stored in the working environment 209 on the web server 203.
  • the version numbers of the first version and the version of the program code written in the program file can be compared.
  • the comparison step 133 If it is recognized in the comparison step 133 that the version of the program code written in the program file corresponds to the version of the program code transmitted in the first change transmission step 125, for example if the version numbers match, the changes transmitted in the first change transmission step 125 can be written or written to the program file in the change writing step 127 . be entered into the respective version of the program code. If, on the other hand, it is recognized in comparison step 133 that there is no correspondence between the version of the program code in the program file and the version of the program code transmitted in the first change transfer step 125, for example due to a lack of correspondence between the version numbers, a synchronization error is determined in an error message step 135.
  • the synchronization error means that while the first version of the program code was being processed by the further user in the further instance of the input module 313, the version of the program code stored in the program file was updated and thus changed. This can occur if several users make changes to the program code at the same time and these are saved in the program file.
  • error determination step 1335 it can thus be avoided that different users work on different versions of the program code and modify them independently of one another.
  • the version written in the program file can be transmitted from the web server 203 to the further instance of the input module 313 in a version transmission step 137.
  • this transmitted version of the program code which is written in the program file at the time of transmission, can be displayed to the further user in the further instance of the input module 313 on the further client device 207.
  • the version of the program code of the program file in the version display step 139 the current version of the program code including the changes made therein by the other user can be displayed to the further user.
  • the further user can make further changes by making appropriate entries in the further instance of the input module 313 in the change creation step 123 and create a further version of the program code.
  • This enables the program code to be processed to be synchronized for different users, so that This ensures that the various users can edit an identical version of the program code at the same time.
  • all changes made are displayed to all users who are editing the same program code at the same time.
  • FIG. 5 shows a time flow diagram of a data communication between the web server 201 and the client devices 205, 207 of the automation system 200 in FIG. 1, according to an embodiment.
  • FIGS. 5 and 6 each show a time sequence of the synchronization process described for FIG. 4 of the versions of the program code to be created that have been edited by several users.
  • FIGS. 5 and 6 the local states of the versions of the program code displayed in the respective instances of the input module 311, 313 of the two client devices 205, 207 are shown in the right and left columns.
  • the middle column represents a chronological sequence of the state of the web server 203 and describes the chronological sequence of the versions of the program code stored in the program file.
  • a first user on the client device 205 using the instance of the input module 311 executed in the web browser 206 initially processes the program code to be created and creates a first version of the program code V1 of the program code to be created.
  • the first version of the program code V1 is transmitted to the web server 203 at a first point in time T1 in the program code transmission step 107.
  • the transmitted first version of the program code V1 is written in the write step 109 into the program file of the working environment 209.
  • the local state of the web server 203 is thus defined by the first version of the program code V1 written in the program file.
  • the web server 203 transmits the first version of the program code V1 written in the program file to the further user of the further client device 207.
  • the further user edits the first version of the program code V1 and creates a second version of the program code V2 in the further instance of the input module 313 executed in the further web browser 208.
  • T2 transmits the Another instance of the input module 313 creates the second version of the program code V2 in the change transfer step 125 to the web server 203.
  • the change transfer step 125 the version number of the first version of the program code VN1 is transferred in addition to the changes made.
  • comparison step 133 the transmitted version number of the first version of the program code VN1 is compared with the version number of the version of the program code written in the program file.
  • the transmitted version number of the first version of the program code VN1 corresponds to the version number of the version of the program code written in the program file.
  • the second version of the program code V2 or the changes made are then transmitted from the web server 203 to the first client device 205 or the instance of the input module 311 executed in the web browser 206.
  • the transmitted changes of the second version of the program code are displayed in the instance of the input module 311, so that at this point in time the local state of the client device 205 is defined by the second version of the program code V2 displayed in the instance of the input module 311.
  • the user of the client device 205 modifies the second version of the program code V2 by making changes and creates a third version of the program code V3 in the change creation step 123.
  • the local state of the client device 205 at this point in time is thus determined by the in the instance of the input module 311 displayed third version of the program code V3 defined.
  • the instance of the input module 311 of the client device 205 transmits the third version of the program code V3, in particular the changes that were made to the second version of the program code V2, including the version number of the second version of the program code VN2, which served as the basis for the third version of the program code V3, to the web server 203.
  • This carries out the comparison step 133 and compares the transmitted version number of the second Version of the program code VN2 with the version number of the versions of the program code written in the program file.
  • the transferred version number of the second version of the program code VN2 corresponds to the version number of the version of the program code written in the program file, so that the changes are adopted and the third version of the program code V3 is written in the change writing step 127 in the program file .
  • the local state of the web server 203 is thus defined by the third version of the program code V3 written in the program file.
  • the web server 203 then transmits the third version of the program code V3 to the further instance of the input module 313 of the further client device 207.
  • the further instance of the input module 313 shows the third version of the program code V3 so that the local state of the further client device 207, after this has been changed to the third version, is defined by the displayed third version of the program code V3.
  • Fig. 6 shows a timing diagram of a data communication between the web server ver 201 and the client devices 205, 207 of the automation system 200 in FIG. 1, according to one embodiment.
  • FIG. 5 Another example of the synchronization process is shown in FIG. In contrast to FIG. 5, a synchronization error occurs in the example in FIG. 6.
  • the first user first processes the program code in the instance of the input module 311 and creates a first version of the program code V1.
  • this is transmitted to the server 203, which writes the first version of the program code V1 in the program file and transmits it to the further user or the further instance of the input module 313 of the further client device.
  • the further instance of the input module 313 displays the first version of the program code V1 and the further user of the further client device 207 processes the first version of the program code V1 and creates a second version of the program code V2.
  • the changes to the second version of the program code V2 including the version number of the first version of the program code VN1 are transmitted to the web server 203.
  • the program server 203 writes the second version of the program code V2 into the program file.
  • the first user of the client device 205 edits the first version of the program code V1 related to this at the same time as the second user edits the first version of the program code V1 Time defines the local state of the client device 205 and creates a third version of the program code V3.
  • the instance of the input module 311 transmits the third version of the program code V3 including the version number of the first version of the program code VN1, on which the third version of the program code V3 is based, to the web server 203.
  • the web server 203 compares the transmitted version number of the first version of the program code VN1 with the version number of the version of the program code written in the program file. Since at this point in time the version of the program file and thus the local state of the web server 203 is defined by the second version of the program code V2 and thus the transferred version number of the first version of the program code VN1 does not match the version number of the version of the program file that corresponds to the version number of the second Version of the program code VN2 corresponds, a synchronization error is determined in error determination step 135.
  • the transmitted third version of the program code is not written to the program file.
  • the second version of the program code V2 written in the program file at this point in time is transmitted from the web server 203 to the instance of the input module 311 of the client device 205 of the first user.
  • the second version of the program code V2 is then displayed in the instance of the input module 311 of the client device 205.
  • the changes to the second version of the program code made in the meantime by the further user of the further client device 207 are therefore available to the user of the client device 205 V2 shown, so that a synchronization of the versions of the program code used in each case or the states on the client devices 205, 207 of the different users is restored.
  • FIG. 7 shows a further flow diagram of the method 100 for creating and executing a control program for controlling an automation system 200 according to a further embodiment.
  • the embodiment of the method 100 in FIG. 7 is based on the embodiment in FIG. 2 and comprises all the method steps described there. If these remain unchanged in the embodiment in FIG. 7, a further detailed description is not required.
  • the work environment connection step 103 comprises a work environment generation step 173.
  • the user connected to the web server 203 can open a work environment 209 via the web browser 206 running on the client device 205 the web server 203 generate.
  • the user can generate a new programming project and arrange this in the newly created work environment 209.
  • the working environment 209 created can also be provided with a password-protected access process, by means of which it can be ensured that only authorized users have access to the working environment 209 and the program project created therein.
  • a setting up step 175 the translation module 301 of the web-based development environment 300 can be set up in the newly generated work environment 209.
  • the programming project created in the newly generated working environment can be executed via the web-based development environment 300.
  • an instance of the translation module 301 set up on the web server 203 can be generated, which can be executed in the working environment 209.
  • an individual instance of the translation module 301 can be generated for each work environment 209, each of which is exclusively in the respective work environment 209 is executable.
  • the plurality of instances of the translation module 301 can be executed at the same time. Different programming projects can thus be processed on the web server 203 at the same time.
  • the user can create the desired program code in code generation step 105 via the instance of input module 311 executed in web browser 206.
  • the embodiment in FIG. 7 enables global analyzes and local analyzes of the created program code to be carried out, which can be carried out simultaneously or at different times.
  • the translation module 301 of the web-based development environment 300 comprises an analysis module which is set up to carry out semantic and syntactic analyzes of the program code created.
  • the semantic and syntactic analyzes carried out are based on the semantics and grammar of the programming language used to create the program code.
  • each of these instances comprises an instance of the analysis module that can be executed within the respective instance of the translation module 301 within the respective work environment 209.
  • a global analysis of the transferred program code from the analysis module can be carried out in a global analysis step 141.
  • a global analysis takes into account the complete program code created and includes, in particular, a le xical analysis of the program code as well as an analysis of the semantics and grammar used in the program code.
  • the global analysis step 141 can include a snapshot step 147 in which an analysis version of the program code created can be generated. A copy of the program code can be made for this purpose.
  • the global analysis is carried out in the following on the basis of the created analysis version of the program code. Since the global analysis includes the complete generated program code, this can be time consuming.
  • the generated results of the global analysis can be transferred in a global analysis results transfer step 143 from web server 203 to the instance of input module 311 executed in web browser 206 of client device 205 will.
  • a global analysis result display step 145 the results of the global analysis can be displayed in the instance of the input module 311 executed in the web browser 206.
  • the results of the global analysis can include error messages from syntactic or semantic errors in the program code created. Furthermore, the results of the global analysis can include the variables, functions, data types, namespaces or other objects of the programming language used in the program code, which can be displayed in corresponding lists or display windows in the instance of the input module 311.
  • a local analysis of the generated program code can be carried out at the same time as or at a different time to the global analysis.
  • a current version of the program code can be created in an update step 149.
  • a current version of the program code can be created for each change made, in which the change made is recorded.
  • the local analysis is used to provide the user with input aids such as auto-completion or the coloring of Codes or the highlighting of relevant special characters or keywords of the created program code is used.
  • the local analysis is thus carried out on the current versions of the program code, which are each created after a change has been made to the program code.
  • program objects of the program code can be identified and stored in an accessible manner via the global analysis. For this purpose, for example, appropriate databases can be created.
  • a local analysis of part of the program code created can be carried out on each current version of the program code created.
  • the local analysis only takes into account parts of the program code that are required, for example, to enable the written program code to be completed automatically.
  • an individual local analysis can thus be carried out in the local analysis step 151.
  • the local analysis results determined can be transmitted to the instance of the input module 311 in a local analysis result transmission step 153.
  • a local analysis result display step 155 the transmitted local analysis results are displayed in the instance of the input module 311. These can be displayed, for example, by completing the written program code or graphically highlighting individual relevant parts of the program code as an input aid for the user.
  • each modification made to the program code created can be transmitted to the web server 203 in an individual message.
  • a current version of the program code can be created for each transmitted change and an individual local analysis can be carried out in the local analysis step 151 on the basis of this current version of the program code.
  • a change in the created program code can consist of adding or deleting a single character of the program code.
  • the analysis module of the translation module can further comprise a global analysis component and a local analysis component.
  • the global analysis component can be set up to carry out the global analysis, while the local analysis component can be set up to carry out the local analysis. Through the Carrying out the global analysis by the global analysis component and the local analysis by the local analysis component, both analyzes can be carried out at the same time without any mutual interference taking place.
  • the transmission of the global analysis results in the global analysis result transmission step 143 can be implemented as a response to corresponding poll queries by the instance of the input module 311 to the web server 203.
  • the transmission of the local analysis results in the local analysis results transmission step 153 can be embodied as push messages by the web server 203 to the instance of the input module 311.
  • the web server 203 can use push messages to inform the clients or the instances of the input module 311 that current analysis results are available.
  • the clients or instances of the input module 311 can query the current analysis results from the web server 203 by means of corresponding poll messages.
  • corresponding local analyzes can be initiated by the local analysis module 309 via corresponding poll messages from the clients to the web server 203.
  • the local analysis module 309 then carries out the local analyzes and the web server 203 sends the corresponding local analysis results to the clients or the instances of the input module 311 which have requested the corresponding local analyzes.
  • the implementation of the global analysis and the local analysis described in the embodiment in FIG. 7 can be transferred analogously to the creation of changes to the program code in the change creation step 123 by other users in accordance with the execution forms in FIGS. 3 and 4. Global and local analyzes can thus be carried out for all users who participate in the creation or modification of the program code.
  • the program code written in the program file can be translated in translation step 111.
  • the translation in translation step 111 comprises a first partial translation step 157 and a second partial translation step 159.
  • the program code created in the first programming language can be translated into a high-level language.
  • the high-level language can, for example, be a C ++ code.
  • the high-level language can be any high-level text language known from the prior art.
  • the program code translated into the high-level language can be translated into a corresponding binary code that can be executed by the controller 201 of the automation system 200.
  • the translation module can comprise a front-end component and a back-end component.
  • the front-end component can be set up to translate the program code of the first programming languages into a corresponding program code of the high-level language.
  • the back-end component can be set up to translate the generated program code of the high-level language into a corresponding binary code.
  • FIG. 8 shows a further flow diagram of the method 100 for creating and executing a control program for controlling an automation system 200 according to a further embodiment.
  • FIG. 8 is based on the embodiment in FIG. 2 and comprises all the method steps described there. The method steps unchanged in the embodiment in FIG. 8 will not be described again in detail below.
  • a debugging step 161 can be used to carry out a debugging process in which the functionality of the program code created is tested.
  • the debugging step 161 comprises a debugging translation step 163 in which the program code written in the program file is translated into a corresponding binary code by the translation module.
  • the binary code generated in the debugging translation step 163 can then be transmitted to the controller 201 of the automation system in a debugging transmission step 165.
  • the binary code of the created program code which is transmitted to the controller 201, can then be executed in a debugging execution step 167.
  • various control parameters can be logged, which enable a statement to be made regarding the functionality of the control program for controlling the automation system 200.
  • the control parameters logged in the debugging execution step 167 can be transferred as information to the instance of the input module executed in the web browser 206.
  • the information can first be transmitted from the controller 201 executing the control program to the web server 203.
  • the transmitted information or control parameters can be displayed to the user in the instance of the input module 311, so that the functionality of the created program code can be checked.
  • the debugging step 161 can include a breakpoint setting step 171, in which the generated program code can be provided with corresponding breakpoints which enable execution of the program code to be stopped in the debugging execution step 167 at a point in the program code marked by the breakpoints set.
  • the debugging step 161 can be initiated by the user by making a corresponding entry in the input module 303.
  • the debugging execution step 167 can be performed by the controller 201 of the automation system.
  • a simulation module can be installed on the web server 203 which is set up to carry out the debugging execution step 167 and to simulate a control of the automation system 200 on the basis of the created program code.
  • the debugging process in debugging step 161 can be carried out in accordance with a debugging process known from the customary prior art, in which the functionality of the generated program code can be checked.
  • the method 100 according to the invention can be applied to any number of different users who are connected to the web server 203 via different client devices. Each of the users is able to create a program code for a control program for an automation system via an instance of the input module executed in the web browser of the client device used.
  • the synchronization functions ensure that all users who create or edit a common program code at the same time or who display information about it can work on the identical version of the program code and are shown the changes made to the program code by the other users.
  • a client or a further client can be any application program that connects to the server via the defined interface and obtains information from the server and transmits it to it.
  • a client or another client can also take on a different role than that of an Intelligent Development Environment IDE.
  • FIG. 9 shows a further schematic illustration of the automation system 200 in FIG. 1 according to a further embodiment.
  • the automation system 200 comprises a controller 201 which is connected to a web server 203 via a data bus 213. Furthermore, a client device 205 is connected to the web server 203 via an internet connection 215.
  • Three different work environments 209 are set up on the web server 203.
  • An instance of the web-based development environment 300 installed on the web server with a translation module 303 is set up in a working environment 209.
  • the translation module 303 comprises an analysis module 305.
  • the analysis module 305 comprises a global analysis module 307 and a local analysis module 309.
  • the analysis module 305 is set up to carry out an analysis of the generated program code.
  • the global Bale analysis module 307 is set up to carry out a global analysis in accordance with global analysis step 141.
  • the local analysis module 309 is set up to carry out a local analysis of the created program code in accordance with the local analysis step 151.
  • a service module 211 is also set up in the working environment 209.
  • the service module 211 is designed to take over computationally expensive algorithms.
  • the service module 211 can be set up, for example, to carry out layout algorithms that are carried out when programming a graphic programming language. With the service module 211, computationally expensive process steps that occur during the programming of the program code can be outsourced to the web server 203 in order to conserve resources of the client device 205.
  • a programming project 219 is assigned program files 217 which are arranged in a data structure and which can be processed within the programming project 219 and written into the corresponding program codes.
  • any number of different individual work environments 209 can be set up on the web server 203.
  • any number of different programming projects 219 can be set up in each work environment, to which any number of different program files 217 can be assigned.
  • the client device 205 comprises a web browser 206 in which an instance of the input module 311 of the web-based development environment 300 is executed.
  • the instance of the input module 311 has a text editor 315, an editor for the programming language Sequential Function Chart SFC 317, an editor for the programming language Ladder Diagram LD 319 and an editor for the programming language Function Block Diagram FBD 321 on.
  • the embodiment of the input module 301 shown in FIG. 9 is only an example. Alternatively, the input module 301 can have further functions, editors and other components that are customary for an integrated development environment DIE known from the prior art.
  • Data communication between the client device 205 and the web server 203 can be implemented via an HTTP protocol or an HTTPS protocol.
  • versions of the program code can be exchanged between the web server 203 and the client device 205 via the HTTP protocol or the HTTPS protocol. Further communication between the web server 203 and the client device 205 can be carried out via a web socket channel.
  • V1 first version of the program code
  • VN2 Version number of the second version of the program code VN3 Version number of the third version of the program code

Abstract

The invention relates to a method (100) for creating and executing a control program for controlling an automation system (200) comprising a controller (201) and a web server (203) connected to the controller (201), the method comprising: in a code creation step (105), creating a first version of a program code (V1) of a control program for the automation system (200) in an input module of a web-based development environment (300), which input module is executed in a web browser (206); in a translation step (111), executing a translation module (303) of the web-based development environment (300) on the web server (201) and translating the program code into a program code of a binary language; and, in an execution step (115), executing the program code in the binary language by means of the controller (201) of the automation system. The invention also relates to an automation system (200).

Description

Beschreibung description
Verfahren zum Erstellen und Ausführen eines Steuerprogramms zum Steuern eines Auto matisierungssystems und Automatisierungssystem Method for creating and executing a control program for controlling an automation system and automation system
Die Erfindung betrifft ein Verfahren zum Erstellen und Ausführen eines Steuerprogramms zum Steuern eines Automatisierungssystems. Darüber hinaus betrifft die Erfindung ein Automatisierungssystem, das eingerichtet ist, das Verfahren zum Erstellen und Ausführen eines Steuerprogramms zum Steuern eines Automatisierungssystems auszuführen. The invention relates to a method for creating and executing a control program for controlling an automation system. The invention also relates to an automation system which is set up to carry out the method for creating and executing a control program for controlling an automation system.
Diese Patentanmeldung beansprucht die Priorität der deutschen Patentanmeldung DE 10 2020 115 028.8, deren Offenbarungsgehalt hiermit durch Rückbezug aufgenommen wird. This patent application claims the priority of German patent application DE 10 2020 115 028.8, the disclosure content of which is hereby incorporated by reference.
Die technische Disziplin der Automatisierungstechnik (Implementieren, Messen, Steu ern/Regeln, Kommunikation, Mensch/Maschine-Schnittstelle, Sicherheit etc.) hat zur Auf gabe, Maschinen inkl. Industrieroboter und/oder Anlagen zu automatisieren, d. h. aus sich heraus selbständig und ohne Mitwirkung eines Menschen betreiben zu können. Ein Grad der Automatisierung (Verhältnis der automatisierten Fertigungsschritte zu allen Ferti gungsschritten) in einem Automatisierungssystem ist umso höher, je unabhängiger eine jeweilige Maschine in einer Anlage und/oder eine betreffende Anlage von menschlichen Eingriffen ist bzw. sind. The technical discipline of automation technology (implementation, measurement, control / regulation, communication, human / machine interface, safety, etc.) has the task of automating machines including industrial robots and / or systems, i. H. To be able to operate independently and without human involvement. A degree of automation (ratio of the automated production steps to all production steps) in an automation system is higher, the more independent a respective machine in a system and / or a relevant system is or are from human intervention.
Ziele der Automatisierungstechnik sind unter anderem eine Entlastung des Menschen von gefährlichen, anstrengenden und/oder eintönigen Tätigkeiten, eine Verbesserung einer Qualität durch die technische Anlage, eine höhere Leistungsfähigkeit der Anlage und eine Kostenreduktion durch die Anlage. Durch Fortschritte bei Maschinen, einer Signalerfas sung, einer Signalverarbeitung und/oder einer Kommunikation (Vernetzung) von Kompo nenten innerhalb des Automatisierungssystems, kann der Automatisierungsgrad einer be stehenden oder einer neuen Anlage im Vergleich mit dem Stand der Technik deutlich ge steigert werden. The goals of automation technology include relieving people of dangerous, strenuous and / or monotonous activities, improving quality through the technical system, increasing the efficiency of the system and reducing costs through the system. Advances in machines, signal acquisition, signal processing and / or communication (networking) of components within the automation system can significantly increase the degree of automation of an existing or a new system compared to the state of the art.
Zur Steuerung von Automatisierungssysteme werden für gewöhnlich speicherprogrammier bare Steuerungen (SPS) eingesetzt. Speicherprogrammierbare Steuerungen kommen un ter anderem in der Prozessleittechnik zum Einsatz, etwa zur Steuerung von Fertigungsstra ßen oder chemischen Anlagen. Als speicherprogrammierbare Steuerungen ausgebildete Maschinensteuerungen steuern oder regeln Maschinen und Anlagen, indem Aktoren wie Relais, Antriebe oder Ventile in Abhängigkeit von Messwerten, die von an der Maschine oder der Anlage angeordneten Sensoren erfasst wurden, gesteuert werden. Programmable logic controllers (PLC) are usually used to control automation systems. Programmable logic controllers are used, among other things, in process control technology, for example to control production lines or chemical plants. Machine controls designed as programmable logic controllers control or regulate machines and systems by actuators such as Relays, drives or valves can be controlled as a function of measured values that were recorded by sensors arranged on the machine or system.
Speicherprogrammierbare Steuerungen arbeiten in der Regel ereignisgesteuert und führen ein Steuerprogramm periodisch aus. Innerhalb eines Ausführungszyklus werden dabei die Signale der Sensoren eingelesen und auf Grundlage der Signale Ausgabewerte für die Ak toren berechnet und ausgegeben. Programmable logic controllers are usually event-driven and periodically execute a control program. The signals from the sensors are read in within an execution cycle and output values for the actuators are calculated and output on the basis of the signals.
Zur Steuerung von Automatisierungssystemen werden entsprechend programmierte Steu erprogramme benötigt. Zum Erstellen von entsprechenden Steuerprogrammen werden üb licherweise entsprechend ausgestaltete Integrierte Entwicklungsumgebungen (Integrated Development Environments - IDE) verwendet, die dem Nutzer Eingabemöglichkeiten in Form von Editoren bereitstellen, die jeweils über verschiedene Eingabehilfen, wie beispiels weise Autovervollständigung des geschriebenen Programmcodes, bereitstellen. Soge nannte IDE ermöglichen dem Nutzer ferner Übersetzungsfunktionen, die eine Übersetzung des erstellten Programmcodes in eine Binärsprache ermöglichen. Ferner sind IDEs unter anderem eingerichtet, Debuggingprozesse durchzuführen, die dem Nutzer ermöglichen, Fehler in dem erstellten Programmcode zu finden. Appropriately programmed control programs are required to control automation systems. To create corresponding control programs, appropriately designed Integrated Development Environments (IDE) are usually used, which provide the user with input options in the form of editors, each of which provides various input aids, such as auto-completion of the written program code. So-called IDE also enable the user to use translation functions that enable the created program code to be translated into a binary language. Furthermore, IDEs are set up, among other things, to carry out debugging processes that enable the user to find errors in the program code that has been created.
Üblicherweise werden IDEs lokal auf einem Desktopcomputer oder auf einem Laptop be trieben. Dies setzt jedoch voraus, dass eine entsprechende IDE auf dem zu verwendenden Computer installiert ist und der verwendete Computer genügend Rechenleistung aufweist, die genannten Funktionen auszuführen. Auch sind übliche IDEs für entsprechende Be triebssysteme spezifiziert. Der Nutzer ist somit zum Erstellen von Programmcode an den jeweiligen Computer gebunden, auf dem die IDE installiert ist. Dies stellt eine erhebliche Einschränkung in der Flexibilität des Nutzers und der Art und Weise dar, wie die Program mierung von Steuerprogrammen in der Automatisierungstechnik durchführbar ist. Usually, IDEs are operated locally on a desktop computer or on a laptop. However, this assumes that a corresponding IDE is installed on the computer to be used and that the computer used has sufficient computing power to carry out the functions mentioned. Common IDEs for corresponding operating systems are also specified. The user is therefore bound to the computer on which the IDE is installed to create program code. This represents a considerable restriction in the flexibility of the user and the way in which the programming of control programs in automation technology can be carried out.
Eine Aufgabe der Erfindung ist somit, ein Verfahren zum Erstellen und Ausführen eines Steuerprogramms zum Steuern eines Automatisierungssystems bereitzustellen, dass ei nem Nutzer einen hohen Grad an Flexibilität ermöglicht. Eine weitere Aufgabe der Erfin dung ist es, ein entsprechendes Automatisierungssystem bereitzustellen, das eingerichtet ist, das Verfahren zum Erstellen und Ausführen eines Steuerprogramms zum Steuern ei nes Automatisierungssystems, auszuführen. Die genannten Aufgaben werden durch ein Verfahren und ein Automatisierungssystem gemäß den unabhängigen Ansprüchen gelöst. Vorteilhafte Weiterbildungen sind in den abhängigen Ansprüchen angeben. One object of the invention is thus to provide a method for creating and executing a control program for controlling an automation system that allows a user a high degree of flexibility. Another object of the invention is to provide a corresponding automation system which is set up to carry out the method for creating and executing a control program for controlling an automation system. The stated objects are achieved by a method and an automation system according to the independent claims. Advantageous developments are specified in the dependent claims.
Nach einem Aspekt der Erfindung wird ein Verfahren zum Erstellen und Ausführen eines Steuerprogramms zum Steuern eines Automatisierungssystems mit einer Steuerung und einem mit der Steuerung verbundenen Webserver bereitgestellt, wobei das Verfahren um fasst: According to one aspect of the invention, a method for creating and executing a control program for controlling an automation system with a controller and a web server connected to the controller is provided, the method comprising:
Erstellen einer Verbindung zwischen einem Client-Gerät und dem Webserver über einen auf dem Client-Gerät ausgeführten Webbrowser in einem Serververbindungsschritt, wobei auf dem Webserver eine webbasierte Entwicklungsumgebung mit einem Eingabemodul zum Erstellen eines Programmcodes und einem Übersetzungsmodul zum Übersetzen des erstellten Programmcodes installiert ist, wobei das Eingabemodul in dem Webbrowser ausführbar ist, und wobei das Übersetzungsmodul eingerichtet ist, einen Programmcode einer ersten Programmiersprache in einen Programmcode einer Binärsprache zu überset zen; Creating a connection between a client device and the web server via a web browser executed on the client device in a server connection step, a web-based development environment with an input module for creating a program code and a translation module for translating the created program code being installed on the web server, wherein the input module can be executed in the web browser, and wherein the translation module is set up to translate a program code of a first programming language into a program code of a binary language;
Ausführen einer Instanz des Eingabemoduls im Webbrowser durch das Client-Gerät und Erstellen einer Verbindung des Client-Geräts mit einer Arbeitsumgebung des Webservers und dem Übersetzungsmodul der Arbeitsumgebung über die im Webbrowser ausgeführte Instanz des Eingabemoduls in einem Arbeitsumgebungsverbindungsschritt, wobei inner halb der Arbeitsumgebung das Übersetzungsmodul ausführbar ist; Executing an instance of the input module in the web browser by the client device and creating a connection between the client device and a working environment of the web server and the translation module of the working environment via the instance of the input module executed in the web browser in a working environment connection step, the translation module being executable within the working environment is;
Erstellen einer ersten Version eines Programmcodes eines Steuerprogramms für das Au tomatisierungssystem in der ersten Programmiersprache in der im Webbrowser ausge führten Instanz des Eingabemoduls in einem Codeerstellungsschritt; Creating a first version of a program code of a control program for the automation system in the first programming language in the instance of the input module executed in the web browser in a code creation step;
Übertragen der erstellten ersten Version des Programmcodes von der im Webbrowser ausgeführten Instanz des Eingabemoduls an die Arbeitsumgebung des Webservers in ei nem Programmcodeübertragungsschritt; Transferring the created first version of the program code from the instance of the input module executed in the web browser to the working environment of the web server in a program code transfer step;
Schreiben der übertragenen ersten Version des Programmcodes in eine Programmdatei in der Arbeitsumgebung in einem Schreibschritt; Writing the transferred first version of the program code into a program file in the working environment in a writing step;
Ausführen des Übersetzungsmoduls in der Arbeitsumgebung und Übersetzen des in der ersten Programmiersprache erstellten und in die Programmdatei geschriebenen Pro grammcodes durch das Übersetzungsmodul in einen Programmcode der Binärsprache in einem Übersetzungsschritt; Execution of the translation module in the working environment and translation of the program code created in the first programming language and written in the program file by the translation module into a program code of the binary language in one translation step;
Übertragen des Programmcodes in der Binärsprache von der Arbeitsumgebung an die Steuerung des Automatisierungssystems in einem Binärcodeübertragungsschritt; und Ausführen des Programmcodes in der Binärsprache durch die Steuerung des Automati sierungssystems und Steuern des Automatisierungssystems auf Basis des Programm codes in einem Ausführungsschritt. Transferring the program code in the binary language from the working environment to the controller of the automation system in a binary code transfer step; and Execution of the program code in the binary language by the control of the automation system and control of the automation system on the basis of the program code in one execution step.
Hierdurch wird der technische Vorteil erreicht, dass ein Verfahren zum Erstellen und Aus führen eines Steuerprogramms zum Steuern eines Automatisierungssystems bereitge stellt werden kann, bei dem eine webbasierte Programmierung des Programmcodes des Steuerprogramms über eine webbasierte Entwicklungsumgebung ermöglicht ist. Hierzu ist auf einem Webserver eine webbasierte Entwicklungsumgebung mit einem Eingabemodul zum Erstellen eines Programmcodes und einem Übersetzungsmodul zum Übersetzen des erstellten Programmcodes in ein Binärprogramm zum Steuern des Automatisierungssys tems installiert. Das Eingabemodul der webbasierten Entwicklungsumgebung ist hierbei in einem Webbrowser ausführbar. Das Übersetzungsmodul ist hingegen auf dem Webserver ausführbar und eingerichtet, einen Programmcode einer beliebigen Programmiersprache in einen Programmcode einer Binärsprache zu übersetzen. This has the technical advantage that a method for creating and executing a control program for controlling an automation system can be provided, in which web-based programming of the program code of the control program is made possible via a web-based development environment. For this purpose, a web-based development environment with an input module for creating a program code and a translation module for translating the created program code into a binary program for controlling the automation system is installed on a web server. The input module of the web-based development environment can be executed in a web browser. The translation module, on the other hand, can be executed on the web server and is set up to translate a program code of any programming language into a program code of a binary language.
Zum Erstellen des Steuerprogramms kann ein Nutzer somit über einen auf einem beliebi gen Client-Gerät ausgeführten Webbrowser eine Verbindung zum Webserver aufbauen und eine Instanz des Eingabemoduls der webbasierten Entwicklungsumgebung im auf dem Client-Gerät ausgeführten Webbrowser ausführen. Das Client-Gerät kann ein Desk- top-Computer, Laptop oder ein beliebiges Mobilgerät sein. Hierdurch wird erreicht, dass ein Nutzer zum Erstellen eines Programmcodes eines Steuerprogramms von einem belie bigen Client-Gerät aus agieren kann. Es ist somit nicht erforderlich, dass eine Entwick lungsumgebung inklusive eines Eingabemoduls auf dem verwendeten Client-Gerät instal liert ist, um einen Programmierprozess zum Erstellen des Programmcodes durchzuführen. To create the control program, a user can thus establish a connection to the web server via a web browser running on any client device and execute an instance of the input module of the web-based development environment in the web browser running on the client device. The client device can be a desktop computer, laptop, or any mobile device. This means that a user can act to create a program code for a control program from any client device. It is therefore not necessary for a development environment including an input module to be installed on the client device used in order to carry out a programming process for creating the program code.
Die im Webbrowser des Client-Geräts ausgeführte Instanz des Eingabemoduls ist platt formunabhängig und kann auf beliebigen Client-Geräten, die über beliebige Betriebssys teme gesteuert werden, ausgeführt werden. Hierdurch wird eine Plattformunabhängigkeit der webbasierten Entwicklungsumgebung erreicht. The instance of the input module executed in the web browser of the client device is platform-independent and can be executed on any client device that is controlled via any operating system. This makes the web-based development environment platform-independent.
Zum Erstellen des Programmcodes des Steuerprogramms erstellt der Nutzer im Folgen den über die im Webbrowser ausgeführte Instanz des Eingabemoduls eine Verbindung zu einer auf dem Webserver eingerichteten Arbeitsumgebung. In der Arbeitsumgebung kann ein Programmierprojekt eingerichtet sein, das alle zur Erstellung des Programmcodes not wendigen Dateien, Verzeichnisse oder Datenbanken enthält. Die Arbeitsumgebung er- möglicht somit eine Strukturierung des Webservers, wodurch unterschiedliche Program mierprojekte voneinander separierbar angeordnet werden können. Die Arbeitsumgebung kann beispielsweise mit einem passwortgeschützten Zugang versehen sein und eine Ver bindung ausschließlich autorisierten Nutzern ermöglichen. Hierdurch können sensible Da ten unterschiedlicher Nutzer auf dem Webserver gespeichert sein. To create the program code of the control program, the user then creates a connection to a working environment set up on the web server via the instance of the input module executed in the web browser. A programming project can be set up in the working environment which contains all files, directories or databases necessary to create the program code. The working environment thus enables the web server to be structured so that different programming projects can be arranged so that they can be separated from one another. The work environment can, for example, be provided with password-protected access and only allow authorized users to connect. This means that sensitive data from different users can be stored on the web server.
Durch die im Webbrowser ausgeführte Instanz des Eingabemoduls kann der Nutzer im Folgenden von dem jeweilig genutzten Client-Gerät aus eine Version des Programm codes des Steuerprogramms in einer beliebigen Programmiersprache erstellen. Durch die Ausführung der Instanz des Eingabemoduls im Webbrowser des verwendeten Client-Ge räts ist der Nutzer zum Erstellen des Programmcodes an kein bestimmtes Client-Gerät gebunden, wodurch dem Nutzer ein hoher Grad an Flexibilität ermöglicht ist und der Nut zer durch die Verwendung eines beliebigen Client-Geräts an einem beliebigen Ort einen Programmcode für ein Steuerprogramm erstellen kann. Through the instance of the input module executed in the web browser, the user can subsequently create a version of the program code of the control program in any programming language from the respective client device used. By executing the instance of the input module in the web browser of the client device used, the user is not bound to a specific client device to create the program code, which allows the user a high degree of flexibility and the user by using any client Device can create a program code for a control program at any location.
Im Programmcodeübertragungsschritt können ausschließlich die im Codeerstellungs schritt vorgenommenen Änderungen am Programmcode, auf deren Basis die erste Ver sion des Programmcodes erstellt wurde, von der im Webbrowser ausgeführten Instanz des Eingabemoduls über die Internetverbindung an den Webserver übertragen werden. Dies ist insbesondere von Interesse, wenn die erste Version des Programmcodes eine geänderte Version eines bereits erstellten Programmcodes darstellt. In the program code transfer step, only the changes to the program code made in the code creation step, on the basis of which the first version of the program code was created, can be transferred from the instance of the input module running in the web browser to the web server via the internet connection. This is of particular interest if the first version of the program code represents a modified version of a program code that has already been created.
Die erste Programmiersprache kann hierbei eine beliebige Programmiersprache, bzw. eine aus dem Stand der Technik bekannte Programmiersprache zum Erstellen von Steu erprogrammen von Automatisierungssystemen sein. Zum Übersetzen des erstellten Pro grammcodes in der vom Nutzer ausgewählten ersten Programmiersprache in einen durch die Steuerung des Automatisierungssystems ausführbaren Binärcode übermittelt die im Webbrowser ausgeführte Instanz des Eingabemoduls den erstellten Programmcode an den Webserver und veranlasst diesen, den übermittelten Programmcode in einer Pro grammdatei innerhalb der Arbeitsumgebung zu schreiben. The first programming language can be any programming language or a programming language known from the prior art for creating control programs for automation systems. In order to translate the created program code in the first programming language selected by the user into a binary code that can be executed by the control of the automation system, the instance of the input module executed in the web browser transmits the created program code to the web server and prompts the latter to store the transmitted program code in a program file within the working environment to write.
Eine Programmdatei kann hierbei als ein Verbundtyp ausgebildet sein und eine Mehrzahl von in entsprechenden Verzeichnissen angeordneten Dateien aufweisen. Hierdurch kann erreicht werden, dass der erstellte Programmcode in der vom Nutzer ausgewählten Pro grammiersprache auf dem Server, insbesondere in der entsprechenden Arbeitsumge bung, gespeichert wird, sodass eine Speicherung des erstellten Programmcodes auf dem vom Nutzer verwendeten Client-Gerät zur Sicherung des Programmierprojekts nicht not wendig ist. Hierdurch kann erreicht werden, dass bei weiterem Bearbeiten des erstellten Programmcodes der Nutzer nicht an das zunächst ausgewählte Client-Gerät gebunden ist, sondern von beliebigen Client-Geräten aus eine Bearbeitung des bereits erstellten Programmcodes durchführen kann. A program file can be designed as a composite type and have a plurality of files arranged in corresponding directories. This means that the program code created is stored in the programming language selected by the user on the server, in particular in the corresponding work environment, so that the program code created can be stored on the Client device used by the user is not necessary to back up the programming project. In this way, it can be achieved that when further editing the created program code, the user is not bound to the initially selected client device, but can edit the already created program code from any client device.
Die Programmdatei kann ferner vergleichbar zu einem Puffer als eine Datei in einem Hauptspeicher des Webservers ausgebildet sein, so dass Änderungen der Programmda tei nicht automatisch in einem dauerhaften Datenspeicher, wie einer Festplatte, des Webservers gespeichert werden müssen. The program file can also be designed, comparable to a buffer, as a file in a main memory of the web server, so that changes to the program file do not have to be automatically saved in a permanent data memory, such as a hard drive, of the web server.
Darüber hinaus kann die Programmdatei mit einer Assoziationsdatei im dauerhaften Da tenspeicher des Webservers assoziiert sein, in der die Inhalte der Programmdatei gespei chert werden können, so dass eine Speicherung der Inhalte der Programmdatei im dauer haften Speicher des Webservers erreicht werden kann. In addition, the program file can be associated with an association file in the permanent data memory of the web server, in which the contents of the program file can be stored so that the contents of the program file can be stored in the permanent memory of the web server.
Ferner wird erreicht, dass ein Speicherbereich des verwendeten Client-Geräts zur Spei cherung des erstellten Programmcodes nicht belastet wird. Hierdurch können Ressourcen des verwendeten Client-Geräts eingespart werden. Furthermore, it is achieved that a memory area of the client device used for storing the generated program code is not loaded. In this way, resources of the client device used can be saved.
Durch Ausführen des Übersetzungsmoduls auf dem in die Programmdatei geschriebenen Programmcode kann dieser in einen entsprechenden Binärcode übersetzt werden, der zum Steuern des Automatisierungssystems durch die Steuerung des Automatisierungs systems ausführbar ist. Hierdurch kann der Übersetzungsprozess auf den Webserver ausgelagert werden, sodass eine rechenintensive Übersetzung des erstellten Programm codes auf dem Client-Gerät vermieden werden kann. Somit kann eine Einsparung von Ressourcen des verwendeten Client-Geräts zum Erstellen des Programmcodes erreicht werden. By executing the translation module on the program code written in the program file, this can be translated into a corresponding binary code that can be executed for controlling the automation system by the control of the automation system. In this way, the translation process can be outsourced to the web server, so that a computationally intensive translation of the generated program code on the client device can be avoided. A saving in resources of the client device used for creating the program code can thus be achieved.
Zum Ausführen des durch das Übersetzungsmodul erstellten Binärcodes des zuvor in der Instanz des Eingabemoduls erstellten Programmcodes durch die Steuerung des Automa tisierungssystems kann der generierte Binärcode direkt von dem Webserver, insbeson dere von der Arbeitsumgebung, an eine mit dem Webserver verbundene Steuerung des Automatisierungssystems übertragen und von der Steuerung ausgeführt werden. Hier durch kann ein reibungsloser Übergang zwischen Erstellen des Programmcodes und Aus führen des jeweiligen Steuerprogramms durch die Steuerung des Automatisierungssys tems und ein damit verbundenes Steuern des Automatisierungssystems erreicht werden. Ein umständlicher Prozess, in dem ansonsten ein Programmcode zunächst auf einem speziell dafür eingerichteten Client-Gerät erstellt und in einen Binärcode übersetzt wird, der darauf folgend auf eine Steuerung eines Automatisierungssystems aufgespielt werden muss, sodass die Steuerung das jeweilige Steuerprogramm ausführen und somit das Au tomatisierungssystem steuern kann, kann somit vermieden werden. To execute the binary code created by the translation module of the program code previously created in the instance of the input module by the control of the automation system, the generated binary code can be transmitted directly from the web server, in particular from the work environment, to a control of the automation system connected to the web server and from of the controller. A smooth transition between creating the program code and executing the respective control program through the control of the automation system and the associated control of the automation system can be achieved here. A cumbersome process in which a program code is otherwise first created on a specially set up client device and translated into binary code, which then has to be uploaded to a controller of an automation system so that the controller can execute the respective control program and thus the automation system control can thus be avoided.
Nach einer Ausführungsform umfasst das Verfahren ferner: In one embodiment, the method further comprises:
Erstellen einer weiteren Verbindung zwischen einem weiteren Client-Gerät und dem Webserver über einen auf dem weiteren Client-Gerät ausgeführten weiteren Webbrowser in einem weiteren Serververbindungsschritt; Establishing a further connection between a further client device and the web server via a further web browser executed on the further client device in a further server connection step;
Ausführen einer weiteren Instanz des Eingabemoduls im weiteren Webbrowser des weite ren Client-Geräts und Erstellen einerweiteren Verbindung des weiteren Client-Geräts mit der Arbeitsumgebung des Webservers über die im weiteren Webbrowser ausgeführte wei tere Instanz des Eingabemoduls in einem weiteren Arbeitsumgebungsverbindungsschritt; Übertragen der in die Programmdatei geschriebenen ersten Version des Programmcodes an die im weiteren Webbrowser des weiteren Client-Geräts ausgeführte weitere Instanz des Eingabemoduls in einem weiteren Programmcodeübertragungsschritt; Executing a further instance of the input module in the further web browser of the further client device and creating a further connection of the further client device with the working environment of the web server via the further instance of the input module executed in the further web browser in a further working environment connection step; Transferring the first version of the program code written in the program file to the further instance of the input module executed in the further web browser of the further client device in a further program code transfer step;
Vornehmen von Änderungen am Programmcode und Erstellen einer zweiten Version des Programmcodes in der ersten Programmiersprache in der im weiteren Webbrowser des weiteren Client-Geräts ausgeführten weiteren Instanz des Eingabemoduls in einem Ände rungserstellungsschritt; Making changes to the program code and creating a second version of the program code in the first programming language in the further instance of the input module executed in the further web browser of the further client device in a change creation step;
Übertragen der zweiten Version des Programmcodes von der weiteren Instanz des Einga bemoduls an die Arbeitsumgebung des Webservers in einem Änderungsübertragungs schritt; Transferring the second version of the program code from the further instance of the input module to the working environment of the web server in a change transfer step;
Schreiben der zweiten Version des Programmcodes in die Programmdatei in der Ar beitsumgebung in einem Änderungsschreibschritt; Writing the second version of the program code to the program file in the working environment in a change writing step;
Übertragen der zweiten Version des Programmcodes von der Arbeitsumgebung an die im Webbrowser ausgeführte Instanz des Eingabemoduls des Client-Geräts in einem zweiten Änderungsübertragungsschritt; und Transferring the second version of the program code from the working environment to the instance of the input module of the client device executed in the web browser in a second change transfer step; and
Anzeigen der zweiten Version des Programmcodes in der im Webbrowser ausgeführten Instanz des Eingabemoduls des Client-Geräts in einem Anzeigeschritt. Display of the second version of the program code in the instance of the input module of the client device executed in the web browser in a display step.
Hierdurch wird der technische Vorteil erreicht, dass eine simultane Bearbeitung des er stellten Programmcodes durch verschiedene Nutzer ermöglicht ist. Hierzu kann eine Ver bindung des weiteren Client-Geräts mit dem Webserver über einen auf dem weiteren Cli ent-Gerät ausgeführten weiteren Webbrowser hergestellt werden. Im Folgenden kann in dem weiteren Webbrowser des weiteren Client-Geräts eine weitere Instanz des Eingabe moduls ausgeführt werden. Das weitere Client-Gerät kann hierbei ein beliebiger Desktop, Laptop oder ein beliebiges Mobilgerät sein und kann mit einem beliebigen Betriebssystem ausgeführt werden, das auch von dem Betriebssystem verschieden von dem des bereits mit dem Webserver verbundene Client-Geräts sein kann. Ferner können die beiden Webbrowser der beiden Client-Geräte verschiedene Webbrowser sein. Die verschiedenen Instanzen des Eingabemoduls können somit in verschiedenen Webbrowsern unterschied licher Client-Geräte ausgeführt werden. This has the technical advantage that the program code created can be processed simultaneously by different users. For this purpose, a connection between the further client device and the web server can be established via a further web browser running on the further client device. In the following, in Another instance of the input module can be executed in the further web browser of the further client device. The further client device can be any desktop, laptop or any mobile device and can be executed with any operating system, which can also be different from the operating system of the client device already connected to the web server. Furthermore, the two web browsers of the two client devices can be different web browsers. The different instances of the input module can thus be executed in different web browsers of different client devices.
Über die weitere Instanz des Eingabemoduls, die im weiteren Webbrowser des weiteren Client-Geräts ausgeführt wird, kann eine Verbindung zur Arbeitsumgebung hergestellt werden und nach Übertragung des in die Programmdatei geschriebenen Programmcodes vom Webserver an die im weiteren Webbrowser ausgeführte weitere Instanz des Einga bemoduls kann der erstellte Programmcode in der weiteren Instanz des Eingabemoduls am weiteren Client-Gerät angezeigt werden. Hierdurch wird ermöglicht, dass verschie dene Nutzer von verschiedenen Client-Geräten aus simultan eine Bearbeitung eines Pro grammcodes durchführen können. Verschiedene Nutzer können somit zeitgleich zum Er stellen des gleichen Programmcodes beitragen und können dies von unterschiedlichen Geräten aus durchführen. Via the further instance of the input module, which is executed in the further web browser of the further client device, a connection to the working environment can be established and after the program code written in the program file has been transferred from the web server to the further instance of the input module executed in the further web browser, the The program code created can be displayed in the further instance of the input module on the further client device. This enables different users to simultaneously edit a program code from different client devices. Different users can thus simultaneously contribute to the creation of the same program code and can do this from different devices.
Über die weitere Instanz des Eingabemoduls kann der weitere Nutzer Änderungen an dem erstellten Programmcode durchführen und eine zweite Version des Programmcodes erstellen. Die zweite Version des Programmcodes kann im Folgenden von der weiteren Instanz des Eingabemoduls, die im weiteren Webbrowser ausgeführt wird, an den Webs erver, insbesondere an die Arbeitsumgebung übertragen und in die Programmdatei ge schrieben werden. Die in der Arbeitsumgebung des Webservers gespeicherte Programm datei kann sowohl durch den ersten Nutzer als auch den zweiten Nutzer modifiziert wer den. Via the further instance of the input module, the further user can make changes to the program code created and create a second version of the program code. The second version of the program code can subsequently be transferred from the further instance of the input module, which is executed in the further web browser, to the web server, in particular to the work environment, and written into the program file. The program file stored in the working environment of the web server can be modified by both the first user and the second user.
Die in die Programmdatei geschriebene zweite Version kann im Folgenden an den ersten Nutzer, insbesondere an die im Webbrowser des Client-Geräts ausgeführte Instanz des Eingabemoduls übertragen und in dieser angezeigt werden. Hierdurch wird erreicht, dass beide Nutzer die identische Version des Programmcodes zeitgleich in dem im Webbrow ser des jeweils verwendeten Client-Geräts ausgeführten Eingabemodul angezeigt wer den. Die unterschiedlichen Nutzer können somit die Änderungen des jeweils anderen Nut zers nachverfolgen, sodass eine Zusammenarbeit der beiden Nutzer zum Erstellen des Programmcodes ermöglicht ist. Die einzelnen Nutzer sind somit in der Lage, von ihrem verwendeten Client-Gerät Änderungen des Programmcodes zu erwirken und die Ände rungen der jeweils anderen Nutzer nachzuverfolgen. The second version written in the program file can then be transmitted to the first user, in particular to the instance of the input module executed in the web browser of the client device, and displayed there. This ensures that both users display the identical version of the program code at the same time in the input module executed in the web browser of the client device used in each case. The different users can thus track the changes made by the respective other user, so that it is possible for the two users to work together to create the program code. The individual users are thus able to benefit from their the client device used to effect changes to the program code and to track the changes made by the other users.
Die durch den weiteren Nutzer des weiteren Client-Geräts erstellte zweite Version des Programmcodes kann in die Programmdatei geschrieben und somit auf dem Webserver gespeichert werden. Ferner kann die in die Programmdatei geschriebene zweite Version durch das auf dem Webserver, insbesondere in der Arbeitsumgebung, ausgeführte Über setzungsmodul in einen entsprechenden Binärcode übersetzt, dieser an die Steuerung des Automatisierungssystems übertragen und von dieser zum Steuern des Automatisie rungssystems ausgeführt werden. Hierdurch ist somit ermöglicht, dass über verschiedene Nutzer, unter Verwendung verschiedener Client-Geräte, in Zusammenarbeit ein Pro grammcode erstellt, diese unter Verwendung des Webservers übersetzt und durch eine Steuerung des Automatisierungssystems ausgeführt werden kann. Hierdurch kann eine kooperative Zusammenarbeit zum Durchführen eines gemeinsamen Programmierprojekts zum Erstellen eines Steuerprogramms für ein Automatisierungssystem erreicht werden. The second version of the program code created by the additional user of the additional client device can be written into the program file and thus stored on the web server. Furthermore, the second version written in the program file can be translated into a corresponding binary code by the translation module executed on the web server, in particular in the work environment, transferred to the control of the automation system and executed by this to control the automation system. This enables a program code to be created in cooperation with different users using different client devices, translated using the web server and executed by a controller of the automation system. In this way, a cooperative collaboration for carrying out a common programming project for creating a control program for an automation system can be achieved.
Nach einer Ausführungsform werden im Änderungsübertragungsschritt und im zweiten Änderungsübertragungsschritt von der zweiten Version des Programmcodes ausschließ lich die in der weiteren Instanz des Eingabemoduls vorgenommenen Änderungen des Programmcodes übertragen. According to one embodiment, in the change transfer step and in the second change transfer step, only the changes to the program code made in the further instance of the input module are transferred from the second version of the program code.
Hierdurch wird der technische Vorteil erreicht, dass zur Übertragung der durch die ver schiedenen Nutzer erstellten verschiedenen Versionen des Programmcodes an den Webserver ein möglichst geringes Datenvolumen übertragen wird. Hierdurch kann eine schnelle Übertragung und somit eine möglichst zeitgleiche Anzeige der vorgenommenen Änderungen in den einzelnen Instanzen des Eingabemoduls der verschiedenen Nutzer erreicht werden. Durch die Übertragung ausschließlich der vorgenommenen Änderungen an den einzelnen Versionen des Programmcodes kann eine zeitnahe Aktualisierung des in die Programmdatei geschriebenen Programmcodes erreicht werden. This has the technical advantage that the smallest possible data volume is transmitted to the web server for the transmission of the different versions of the program code created by the various users. In this way, a fast transmission and thus a display of the changes made in the individual instances of the input module of the various users as simultaneously as possible can be achieved. By transferring only the changes made to the individual versions of the program code, the program code written in the program file can be updated promptly.
Nach einer Ausführungsform werden im Änderungsübertragungsschritt die in der weiteren Instanz des Eingabemoduls vorgenommenen Änderungen der zweiten Version des Pro grammcodes und die erste Version des Programmcodes übertragen, wobei das Verfahren ferner umfasst: According to one embodiment, the changes made in the further instance of the input module to the second version of the program code and the first version of the program code are transferred in the change transfer step, the method further comprising:
Vergleichen der im zweiten Änderungsübertragungsschritt übertragenen ersten Version des Programmcodes mit der in die Programmdatei geschriebenen Version des Pro grammcodes in einem Vergleichsschritt; Ermitteln eines Synchronisationsfehlers in einem Fehlerermittlungsschritt, falls die erste Version des Programmcodes nicht mit der in die Programmdatei geschriebenen Version des Programmcodes übereinstimmt; Comparing the first version of the program code transmitted in the second change transmission step with the version of the program code written in the program file in a comparison step; Determining a synchronization error in an error determining step if the first version of the program code does not match the version of the program code written in the program file;
Übertragen der in die Programmdatei geschriebenen Version des Programmcodes von der Arbeitsumgebung an die im weiteren Webbrowser ausgeführten weiteren Instanz des Eingabemoduls in einem Versionsübertragungsschritt; und Transferring the version of the program code written in the program file from the working environment to the further instance of the input module executed in the further web browser in a version transfer step; and
Anzeigen der übertragenen Version des Programmcodes in der im weiteren Webbrowser ausgeführten weiteren Instanz des Eingabemoduls in einem Versionsanzeigeschritt. Displaying the transferred version of the program code in the further instance of the input module executed in the further web browser in a version display step.
Hierdurch wird der technische Vorteil erreicht, dass eine Synchronisation der Bearbeitung des Programmcodes durch die beiden Nutzer ermöglicht ist. Indem neben den vorgenom menen Änderungen zusätzlich die jeweilige Version des Programmcodes, an denen die Änderungen durch den jeweiligen Nutzer vorgenommen wurden, von der jeweiligen In stanz des Eingabemoduls an den Webserver übermittelt wird und die übermittelte Version des Programmcodes mit der in die Programmdatei geschriebenen Version des Pro grammcodes verglichen wird, kann sichergestellt werden, dass bei gleichzeitiger Bearbei tung des Programmcodes durch mehrere Nutzer alle Nutzer jeweils die identische Version des Programmcodes bearbeiten. This has the technical advantage that the processing of the program code by the two users can be synchronized. In addition to the changes made, the respective version of the program code to which the changes were made by the respective user is transmitted from the respective instance of the input module to the web server and the transmitted version of the program code with the version of the written in the program file Program codes is compared, it can be ensured that with simultaneous processing of the program code by several users, all users are editing the identical version of the program code.
Stimmt die mit den vorgenommenen Änderungen übermittelte Version des Programm codes nicht mit der in die Programmdatei geschriebenen Version des Programmcodes überein, so werden die übermittelten Änderungen nicht in die Programmdatei geschrieben und stattdessen werden dem jeweiligen Nutzer die aktuell in die Programmdatei geschrie bene Version übermittelt und in der jeweiligen Instanz des Eingabemoduls angezeigt. So mit ist gewährleistet, dass alle mit der Arbeitsumgebung verbundenen Nutzer jeweils die aktuelle Version in die Programmdatei geschriebenen Programmcodes angezeigt bekom men, sodass alle das jeweilige Programmprojekt bearbeitenden Nutzer eine identische Version des Programmcodes bearbeiten können. If the version of the program code transmitted with the changes made does not match the version of the program code written in the program file, the transmitted changes are not written into the program file and instead the version currently written in the program file is transmitted to the respective user and saved in of the respective instance of the input module. This ensures that all users connected to the working environment are shown the current version of the program code written in the program file, so that all users editing the respective program project can edit an identical version of the program code.
Nach einer Ausführungsform werden im Änderungsübertragungsschritt die in der weiteren Instanz des Eingabemoduls vorgenommenen Änderungen der zweiten Version des Pro grammcodes und Informationen bezüglich der ersten Version des Programmcodes über tragen, wobei das Verfahren ferner umfasst: According to one embodiment, the changes made in the further instance of the input module to the second version of the program code and information relating to the first version of the program code are transmitted in the change transfer step, the method further comprising:
Vergleichen der im zweiten Änderungsübertragungsschritt übertragenen Information be züglich der ersten Version des Programmcodes mit der in die Programmdatei geschriebe nen Version des Programmcodes in einem Vergleichsschritt; Ermitteln eines Synchronisationsfehlers in einem Fehlerermittlungsschritt, falls die Infor mation bezüglich der ersten Version des Programmcodes nicht mit der in die Programm datei geschriebenen Version des Programmcodes übereinstimmt; Comparing the information transmitted in the second change transmission step with regard to the first version of the program code with the version of the program code written in the program file in a comparison step; Determining a synchronization error in an error determination step if the information relating to the first version of the program code does not match the version of the program code written in the program file;
Übertragen der in die Programmdatei geschriebenen Version des Programmcodes von der Arbeitsumgebung an die im weiteren Webbrowser ausgeführten weiteren Instanz des Eingabemoduls in einem Versionsübertragungsschritt; und Transferring the version of the program code written in the program file from the working environment to the further instance of the input module executed in the further web browser in a version transfer step; and
Anzeigen der übertragenen Version des Programmcodes in der im weiteren Webbrowser ausgeführten weiteren Instanz des Eingabemoduls in einem Versionsanzeigeschritt. Displaying the transferred version of the program code in the further instance of the input module executed in the further web browser in a version display step.
Hierdurch wird der technische Vorteil erreicht, dass durch die Übertragung der Information bezüglich der ersten Version zum Überprüfen der Übereinstimmung der ersten Version mit der in die Programmdatei geschriebenen Version ein verringertes Datenvolumen zu übertragen ist. This achieves the technical advantage that by transmitting the information relating to the first version for checking the correspondence of the first version with the version written in the program file, a reduced data volume has to be transmitted.
Eine Information bezüglich der ersten Version kann beispielsweise eine Versionsnummer sein, die Version des Programmcodes eindeutig identifiziert. Im Vergleichsschritt kann dann die Versionsnummer der ersten Version des Programmcodes mit der Versionsnum mer der in die Programmdatei gespeicherten Version des Programmcodes verglichen werden, um eine Übereinstimmung oder Abweichung der Versionsnummern zu ermitteln. Information relating to the first version can be, for example, a version number that uniquely identifies the version of the program code. In the comparison step, the version number of the first version of the program code can then be compared with the version number of the version of the program code stored in the program file in order to determine whether the version numbers match or differ.
Nach einer Ausführungsform wird im Programmcodeübertragungsschritt jede der im Codeerstellungsschritt vorgenommenen Eingaben in einer individuellen Nachricht übertra gen, wobei im Änderungsübertragungsschritt jeder der vorgenommenen Änderungen an der ersten Version des Programmcodes in einer individuellen Nachricht übertragen wird. According to one embodiment, each of the entries made in the code generation step is transmitted in an individual message in the program code transmission step, each of the changes made to the first version of the program code being transmitted in an individual message in the change transmission step.
Hierdurch wird der technische Vorteil erreicht, dass eine instantane Verarbeitung der vor genommenen Änderungen durch den Webserver und eine damit verbundene instantane Aktualisierung der in die Programmdatei geschriebenen Versionen des Programmcodes ermöglicht ist. Eine Änderung des Programmcodes kann hierbei ein einzelner Tastenan schlag des Client-Geräts bzw. ein einzelnes Hinzufügen oder Löschen eines Zeichens in dem in der jeweiligen Instanz des Eingabemoduls angezeigten Programmcodes sein. This has the technical advantage that instant processing of the changes made by the web server and an associated instant update of the versions of the program code written in the program file is made possible. A change in the program code can be a single keystroke of the client device or a single addition or deletion of a character in the program code displayed in the respective instance of the input module.
Nach einer Ausführungsform umfasst das Übersetzungsmodul ferner ein Analysemodul zum Ausführen einer semantischen Analyse und/oder einer syntaktischen Analyse des in erstellten Programmcodes, wobei das Verfahren ferner umfasst: Ausführen einer globalen Analyse des erstellten und in die Programmdatei geschriebenen Programmcodes in der ersten Programmiersprache durch das Analysemodul und Ermit teln von globalen Analyseergebnissen in einem globalen Analyseschritt, wobei die globale Analyse des Programmcodes eine semantische Analyse und/oder eine syntaktische Ana lyse des gesamten Programmcodes auf Basis einer Semantik und/oder einer Grammatik der ersten Programmiersprache umfasst; According to one embodiment, the translation module further comprises an analysis module for performing a semantic analysis and / or a syntactic analysis of the program code created in, the method further comprising: Execution of a global analysis of the program code created and written in the program file in the first programming language by the analysis module and determination of global analysis results in a global analysis step, the global analysis of the program code including a semantic analysis and / or a syntactic analysis of the entire program code Comprises a basis of semantics and / or a grammar of the first programming language;
Übertragen von im globalen Analyseschritt ermittelten globalen Analyseergebnissen an die im Webbrowser ausgeführte Instanz des Eingabemoduls des Client-Geräts und/oder an die im weiteren Webbrowser ausgeführte weitere Instanz des Eingabemoduls des wei teren Client-Geräts in einem Analyseergebnisübertragungsschritt; und Anzeigen der übertragenen globalen Analyseergebnisse in der im Webbrowser ausge führten Instanz des Eingabemoduls des Client-Geräts und/oder in der im weiteren Webbrowser ausgeführten weiteren Instanz des Eingabemoduls des weiteren Client-Ge räts in einem Analyseergebnisanzeigeschritt. Transferring global analysis results determined in the global analysis step to the instance of the input module of the client device executed in the web browser and / or to the further instance of the input module of the further client device executed in the further web browser in an analysis result transfer step; and displaying the transmitted global analysis results in the instance of the input module of the client device executed in the web browser and / or in the further instance of the input module of the further client device executed in the further web browser in an analysis result display step.
Hierdurch wird der technische Vorteil erreicht, dass während des Programmierprozesses auf dem Webserver, insbesondere in der Arbeitsumgebung des Webservers, eine Ana lyse des in die Programmdatei geschriebenen Programmcodes bezüglich der Richtigkeit des erstellten Programmcodes im Hinblick auf Semantik und Grammatik der jeweils ver wendeten Programmiersprache durchgeführt werden kann. Ferner wird erreicht, dass dem Nutzer während des Programmiervorgangs entsprechende Ergebnisse der semanti schen bzw. syntaktischen Analyse des erstellten Programmcodes in der jeweils verwen deten Instanz des Eingabemoduls angezeigt werden können, sodass der Nutzer bereits während des Programmierens entsprechende Fehler des erstellten Programmcodes be heben kann. Hierdurch wird ein möglichst einfacher Programmiervorgang ermöglicht, bei dem dem Nutzer gegebenenfalls syntaktische oder semantische Fehler des Programm codes angezeigt werden. This has the technical advantage that during the programming process on the web server, especially in the working environment of the web server, an analysis of the program code written in the program file is carried out with regard to the correctness of the program code created with regard to the semantics and grammar of the programming language used can. It is also achieved that during the programming process, the user can see the corresponding results of the semantic or syntactic analysis of the created program code in the instance of the input module used, so that the user can correct errors in the created program code while programming. This enables a programming process that is as simple as possible, in which syntactic or semantic errors in the program code are displayed to the user.
Nach einer Ausführungsform ist die Übertragung der globalen Analyseergebnisse als eine Antwort des Webservers auf eine Poll-Anfrage der im Webbrowser ausgeführten Instanz des Eingabemoduls des Client-Geräts und/oder auf eine Poll-Anfrage der im weiteren Webbrowser ausgeführten weiteren Instanz des Eingabemoduls des weiteren Client-Ge räts ausgebildet. According to one embodiment, the global analysis results are transmitted as a response from the web server to a poll request from the instance of the input module of the client device executed in the web browser and / or to a poll request from the further instance of the input module of the further client executed in the further web browser -Get trained.
Hierdurch wird der technische Vorteil erreicht, dass eine automatische Anzeige der Analy seergebnisse in der jeweils vom Nutzer verwendeten Instanz des Eingabemoduls bereit- gestellt werden kann. Hierzu können von der Instanz des Eingabemoduls einem voreinge stellten zeitlichen Abstand entsprechende Anfragen an den Webserver gestellt werden, ob entsprechende globale Analyseergebnisse des Analysemoduls vorliegen. Sobald die durch das Analysemodul durchgeführte Analyse des in die Programmdatei geschriebenen Programmcodes abgeschlossen ist, werden die entsprechenden Analyseergebnisse vom Webserver an die im Webbrowser ausgeführte Instanz des Eingabemoduls übermittelt und von diesem dem Nutzer angezeigt. Der Nutzer wird somit automatisch auf entspre chende semantische oder syntaktische Analyseergebnisse hingewiesen, ohne dass die ser eine entsprechende Anfrage ausführen muss. Der Nutzer bekommt entsprechende Analyseergebnisse somit automatisch durch die von ihm verwendete Instanz des Einga bemoduls angezeigt und muss nicht extra eine entsprechende Analyse in Gang setzen. This has the technical advantage that the analysis results are automatically displayed in the instance of the input module used by the user. can be asked. For this purpose, the instance of the input module can send corresponding inquiries to the web server at a preset time interval as to whether corresponding global analysis results of the analysis module are available. As soon as the analysis of the program code written in the program file carried out by the analysis module has been completed, the corresponding analysis results are transmitted from the web server to the instance of the input module executed in the web browser and displayed by this to the user. The user is thus automatically informed of the corresponding semantic or syntactic analysis results without the user having to carry out a corresponding query. The user is thus automatically shown the corresponding analysis results by the instance of the input module used by him and does not have to initiate a corresponding analysis.
Nach einer Ausführungsform umfassen globale Analyseergebnisse Fehlermeldungen be züglich semantischer und/oder syntaktischer Fehler im erstellen Programmcode, im Pro grammcode verwendete Programmobjekte und Beziehungen zwischen den im Programm code verwendeten Programmobjekten, wobei Programmobjekte im Programmcode ver wendete Variablen, Funktionen, Datentypen, Namensräume oder andere Objekte umfas sen. According to one embodiment, global analysis results include error messages regarding semantic and / or syntactic errors in the created program code, program objects used in the program code and relationships between the program objects used in the program code, whereby program objects used in the program code variables, functions, data types, namespaces or other objects include.
Hierdurch wird der technische Vorteil erreicht, dass dem Nutzer in der jeweils verwende ten Instanz des Eingabemoduls eine Vielzahl von Informationen bezüglich des von ihm er stellten Programmcodes angezeigt werden können. Durch die in der globalen Analyse er stellten Analyseergebnisse, die sowohl semantische wie auch syntaktische Fehler des er stellten Programmcodes und/oder im Programmcode verwendete Variablen, Funktionen, Datentypen, Namensräume und andere Instanzen der jeweils verwendeten Programmier sprache umfassen, können dem Nutzer für eine möglichst reibungslose Programmierung des Programmcodes umfassende Informationen und Eingabehilfen bereitgestellt werden. This has the technical advantage that a large amount of information relating to the program code created by the user can be displayed to the user in the instance of the input module used in each case. Through the analysis results created in the global analysis, which include both semantic and syntactic errors in the program code created and / or variables, functions, data types, namespaces and other instances of the programming language used, the user can for a possible Smooth programming of the program code, comprehensive information and input assistance are provided.
Nach einer Ausführungsform umfasst der globale Analyseschritt ferner: According to one embodiment, the global analysis step further comprises:
Erstellen einer Analyseversion des erstellten und in die Programmdatei geschriebenen Programmcodes in der ersten Programmiersprache durch das Analysemodul in einem Schnappschussschritt, wobei die Analyseversion des Programmcodes der zum Zeitpunkt der Ausführung des globalen Analyseschritts in die Programmdatei geschriebenen Ver sion des Programmcodes entspricht; und Creating an analysis version of the program code created and written in the program file in the first programming language by the analysis module in a snapshot step, the analysis version of the program code corresponding to the version of the program code written in the program file at the time the global analysis step is carried out; and
Ausführen der globalen Analyse des Programmcodes in der ersten Programmiersprache auf Basis der Analyseversion im globalen Analyseschritt. Hierdurch wird der technische Vorteil erreicht, dass während der Durchführung der globa len Analyse durch das Analysemodul eine Bearbeitung des Programmcodes durch die je weiligen Nutzer ermöglicht ist. Hierzu wird zunächst eine Analyseversion des in die Pro grammdatei geschriebenen Programmcodes erstellt, auf deren Basis durch das Analyse modul die entsprechende globale Analyse des Programmcodes durchgeführt wird. Wäh rend der Durchführung der globalen Analyse durch das Analysemodul, die den gesamten Programmcode umfasst und somit zeitaufwändig ist, können weitere Änderungen der in die Programmdatei geschriebenen Version des Programmcodes vorgenommen werden. Hierdurch kann erreicht werden, dass trotz Durchführung der globalen Analyse durch das Analysemodul der Nutzer den Programmierprozess nicht unterbrechen muss und somit während der Durchführung der Analyse weitere Änderungen am Programmcode durch führen kann. Da das Analysemodul auf der zuvor erstellten Analyseversion des Pro grammcodes agiert, wird ferner durch weitere Modifikationen der in die Programmdatei geschriebenen Version des Programmcodes die Analyse des Analysemoduls ebenfalls nicht unterbrochen. Somit kann eine zeitgleiche Analyse des Programmcodes durch das Analysemodul und weitere vorgenommene Änderungen des Programmcodes durch die jeweiligen Nutzer erreicht werden. Execution of the global analysis of the program code in the first programming language based on the analysis version in the global analysis step. This has the technical advantage that the program code can be edited by the respective user while the global analysis is being carried out by the analysis module. For this purpose, an analysis version of the program code written in the program file is first created, on the basis of which the corresponding global analysis of the program code is carried out by the analysis module. While the global analysis is being carried out by the analysis module, which comprises the entire program code and is therefore time-consuming, further changes can be made to the version of the program code written in the program file. This means that, despite the global analysis being carried out by the analysis module, the user does not have to interrupt the programming process and can therefore make further changes to the program code while the analysis is being carried out. Since the analysis module acts on the previously created analysis version of the program code, further modifications of the version of the program code written in the program file also do not interrupt the analysis of the analysis module. A simultaneous analysis of the program code by the analysis module and other changes made to the program code by the respective users can thus be achieved.
Nach einer Ausführungsform umfasst das Verfahren ferner: In one embodiment, the method further comprises:
Erstellen einer aktuellen Version des erstellten und in die Programmdatei geschriebenen Programmcodes in der ersten Programmiersprache durch das Analysemodul in einem Ak tualisierungsschritt, wobei eine aktuelle Version des erstellten und in die Programmdatei geschriebenen Programmcodes in der ersten Programmiersprache nach jeder Änderung des Programmcodes durch die Instanz des Eingabemoduls des Client-Geräts und/oder durch die weitere Instanz des Eingabemoduls des weiteren Client-Geräts erstellt wird; Ausführen einer lokalen Analyse eines Teils des erstellten und in die Programmdatei ge schriebenen Programmcodes in der ersten Programmiersprache durch das Analysemodul auf Basis der aktuellen Version des Programmcodes und ermitteln von lokalen Analyseer gebnissen in einem lokalen Analyseschritt; Creating a current version of the program code created and written in the program file in the first programming language by the analysis module in an update step, with a current version of the program code created and written in the program file in the first programming language after each change to the program code by the instance of the input module of the client device and / or is created by the further instance of the input module of the further client device; Carrying out a local analysis of part of the program code created and written in the program file in the first programming language by the analysis module on the basis of the current version of the program code and determining local analysis results in a local analysis step;
Übertragen der im lokalen Analyseschritt ermittelten lokalen Analyseergebnisse an die im Webbrowser ausgeführte Instanz des Eingabemoduls des Client-Geräts und/oder an die im weiteren Webbrowser ausgeführte weitere Instanz des Eingabemoduls des weiteren Client-Geräts in einem lokalen Analyseergebnisübertragungsschritt; und Anzeigen der übertragenen lokalen Analyseergebnisse in der im Webbrowser ausgeführ ten Instanz des Eingabemoduls des Client-Geräts und/oder in der im weiteren Webbrow ser ausgeführten weiteren Instanz des Eingabemoduls des weiteren Client-Geräts in ei- nem lokalen Analyseergebnisanzeigeschritt, wobei die lokalen Analyseergebnisse auto matische Vervollständigungen, Syntaxhervorhebungen und andere Eingabehilfen für Ein gaben in der Instanz des Eingabemoduls und/oder der weiteren Instanz des Eingabemo duls umfassen. Transferring the local analysis results determined in the local analysis step to the instance of the input module of the client device executed in the web browser and / or to the further instance of the input module of the further client device executed in the further web browser in a local analysis result transfer step; and displaying the transmitted local analysis results in the instance of the input module of the client device executed in the web browser and / or in the further instance of the input module of the further client device executed in the further web browser in a A local analysis result display step, the local analysis results including automatic completions, syntax highlighting and other input aids for inputs in the instance of the input module and / or the further instance of the input module.
Hierdurch wird der technische Vorteil erreicht, dass dem Nutzer durch das Eingabemodul weitere Eingabehilfen bereitgestellt werden können. Durch die lokale Analyse werden le diglich Teile des erstellten Programmcodes analysiert. Hierzu wird zunächst eine aktuelle Version des in die Programmdatei geschriebenen Programmcodes erstellt und die jewei lige lokale Analyse auf der aktuellen Version ausgeführt. Insbesondere wird für jede Ände rung des Programmcodes, die von der jeweiligen Instanz des Eingabemoduls an den Webserver übertragen wird, eine aktuelle Version des Programmcodes erstellt und eine entsprechende lokale Analyse durchgeführt. This has the technical advantage that the input module can provide the user with additional input aids. The local analysis only analyzes parts of the generated program code. For this purpose, a current version of the program code written in the program file is first created and the respective local analysis is carried out on the current version. In particular, a current version of the program code is created for each change in the program code that is transmitted from the respective instance of the input module to the web server and a corresponding local analysis is carried out.
Hierdurch können insbesondere Funktionen wie eine Autovervollständigung des in der In stanz des Eingabemoduls erstellten Programmcodes wie auch die Anzeige von Schreib fehlern und ähnlichen Eingabehilfen erreicht werden. Indem für jede Änderung des Pro grammcodes, die jedes Hinzufügen oder Löschen eines Zeichens des Programmcodes umfassen kann, eine entsprechende aktuelle Version des Programmcodes erstellt wird und eine lokale Analyse der aktuellen Version durchgeführt wird, können für jede durch den Nutzer durchgeführte Änderung entsprechende Anzeigen in dem Eingabemodul der jeweiligen Eingabehilfen, wie Autovervollständigung, Syntaxhervorhebung und Ähnliches, bereitgestellt werden. In this way, functions such as auto-completion of the program code created in the instance of the input module as well as the display of write errors and similar input aids can be achieved. By creating a corresponding current version of the program code for each change in the program code, which can include each addition or deletion of a character in the program code, and a local analysis of the current version is carried out, corresponding displays can be displayed for each change made by the user Input module of the respective input assistance, such as autocompletion, syntax highlighting and the like, are provided.
Nach einer Ausführungsform ist die Übertragung der lokalen Analyseergebnisse als eine Push-Nachricht des Webservers an die im Webbrowser ausgeführte Instanz des Eingabe moduls des Client-Geräts und/oder an die im weiteren Webbrowser ausgeführte weitere Instanz des Eingabemoduls des weiteren Client-Geräts ausgebildet. According to one embodiment, the transmission of the local analysis results is designed as a push message from the web server to the instance of the input module of the client device executed in the web browser and / or to the further instance of the input module of the further client device executed in the further web browser.
Hierdurch wird der technische Vorteil erreicht, dass eine instantane Anzeige der jeweili gen Eingabehilfen in der jeweiligen Instanz des Eingabemoduls bereitgestellt werden kann. Über die Push-Nachrichten werden somit automatisch durch den Webserver die entsprechenden Ergebnisse der lokalen Analyse an die jeweiligen Instanzen der Eingabe- module übertragen, sobald die entsprechenden lokalen Analysen durchgeführt sind. Nach einer Ausführungsform umfasst das Analysemodul ein globales Analysenmodul zum Ausführen der globalen Analyse und ein lokales Analysemodul zum Ausführen der lokalen Analyse umfasst. This has the technical advantage that an instantaneous display of the respective input aids can be provided in the respective instance of the input module. Via the push messages, the corresponding results of the local analysis are thus automatically transmitted by the web server to the respective instances of the input modules as soon as the corresponding local analyzes have been carried out. According to one embodiment, the analysis module comprises a global analysis module for carrying out the global analysis and a local analysis module for carrying out the local analysis.
Hierdurch wird der technische Vorteil erreicht, dass globale Analysen und lokale Analysen simultan durchgeführt werden können. Indem die globalen Analysen durch das globale Analysemodul auf Basis der Analyseversion des Programmcodes und die lokalen Analy sen durch das lokale Analysenmodul auf Basis der aktuellen Versionen des Programm codes durchgeführt werden, werden Interferenzen der beiden verschiedenen Analysen vermieden, sodass diese unabhängig und individuell durchführbar sind. This has the technical advantage that global analyzes and local analyzes can be carried out simultaneously. Since the global analyzes are carried out by the global analysis module on the basis of the analysis version of the program code and the local analyzes are carried out by the local analysis module on the basis of the current versions of the program code, interference between the two different analyzes is avoided so that they can be carried out independently and individually.
Nach einer Ausführungsform umfasst der Übersetzungsschritt ferner: According to one embodiment, the translation step further comprises:
Übersetzen des Programmcodes in der ersten Programmiersprache in einen Programm code in einer Hochsprache in einem ersten Teilübersetzungsschritt; und Übersetzen des Programmcodes in der Hochsprache in den Programmcode in der Binär sprache in einem zweiten Teilübersetzungsschritt. Translating the program code in the first programming language into a program code in a high-level language in a first partial translation step; and translating the program code in the high-level language into the program code in the binary language in a second partial translation step.
Hierdurch wird der technische Vorteil erreicht, dass eine möglichst flexible webbasierte Entwicklungsumgebung bereitgestellt werden kann. Durch die Übersetzung des Pro grammcodes der ersten Programmiersprache in Programmcode einer Hochsprache und das darauf folgende Übersetzen des Programmcodes der Hochsprache in einen entspre chenden Binärcode kann für einen Großteil verschiedener erster Programmiersprachen ein möglichst einfach gestaltetes Übersetzungsmodul mit kompatiblen Backend- und Frontend-Einheiten bereitgestellt werden. This has the technical advantage that a web-based development environment that is as flexible as possible can be provided. By translating the program code of the first programming language into program code of a high-level language and then translating the program code of the high-level language into a corresponding binary code, a translation module with compatible back-end and front-end units that is as simple as possible can be provided for a large number of different first programming languages.
Durch die Einteilung des Übersetzungsmoduls in Backend- und Frontend-Einheiten, von denen die Backend-Einheit eine Übersetzung der Hochsprache in einen Binärcode und die Frontend-Einheit eine Übersetzung der ersten Programmiersprache in die Hochspra che bereitstellt, wird eine einfache Anpassung des Übersetzungsmoduls an verschiedene erste Programmiersprachen bzw. verschiedene Steuerungen des Automatisierungssys tems ermöglicht, indem jeweils ausschließlich eine Anpassung der Frontend-Einheit bzw. eine Anpassung der Backend-Einheit vorzunehmen ist. Für eine Hinzunahme einerweite ren ersten Programmiersprache muss somit lediglich eine Frontend-einheit modifiziert werden, die eingerichtet ist, eine Übersetzung der weiteren ersten Programmiersprache in die Hochsprache durchzuführen, während die Backend-Einheit unverändert bleiben kann. Für die Verwendung der webbasierten Entwicklungsumgebung für eine weitere Steuerung mit einer weiteren Prozessoreinheit, muss lediglich die Backend-Einheit auf die Überset zung der Hochsprache in die von der weiteren Prozessoreinheit verwendeten Binärspra che angepasst werden, während die Frontend-Einheit unverändert verbleiben kann. By dividing the translation module into back-end and front-end units, of which the back-end unit provides a translation of the high-level language into binary code and the front-end unit provides a translation of the first programming language into the high-level language, the translation module can be easily adapted to various first programming languages or various controls of the automation system made possible by exclusively adapting the front-end unit or adapting the back-end unit. In order to add a second first programming language, it is only necessary to modify a front-end unit which is set up to translate the further first programming language into the high-level language, while the back-end unit can remain unchanged. For using the web-based development environment for further control with a further processor unit, only the back-end unit has to be adapted to the translation of the high-level language into the binary language used by the further processor unit, while the front-end unit can remain unchanged.
Nach einer Ausführungsform ist die erste Programmiersprache eine graphische Program miersprache. According to one embodiment, the first programming language is a graphical programming language.
Hierdurch wird der technische Vorteil erreicht, dass durch die webbasierte Entwicklungs umgebung die Entwicklung eines Programmcodes in einer standardmäßigen Program miersprache für Automatisierungssysteme, beispielsweise Sequential Function Chart, Ladder Diagram oder Function Block Diagramm ermöglicht ist. This has the technical advantage that the web-based development environment enables program code to be developed in a standard programming language for automation systems, for example a sequential function chart, ladder diagram or function block diagram.
Nach einer Ausführungsform umfasst das Verfahren ferner: In one embodiment, the method further comprises:
Ausführen eines Debugging-Prozesses des erstellten Programmcodes durch das Über setzungsmodul in einem Debuggingschritt. Execution of a debugging process of the generated program code by the translation module in a debugging step.
Hierdurch wird der technische Vorteil erreicht, dass der durch die webbasierte Entwick lungsumgebung erstellte Programmcode des Steuerprogramms für das Automatisierungs system auf Funktionsfähigkeit überprüft werden kann. Im Debuggingprozess kann die Funktionsfähigkeit des erstellten Steuerprogramms getestet werden. This has the technical advantage that the program code of the control program for the automation system created by the web-based development environment can be checked for functionality. The functionality of the created control program can be tested in the debugging process.
Nach einer Ausführungsform umfasst der Debuggingschritt ferner: According to one embodiment, the debugging step further comprises:
Übersetzen des in der ersten Programmiersprache generierten und in die Programmdatei geschriebenen Programmcodes der ersten Programmiersprache in einen Programmcode der Binärsprache in einem Debuggingübersetzungsschritt; Translating the program code of the first programming language generated in the first programming language and written in the program file into a program code of the binary language in a debugging translation step;
Übertragen des im Debuggingübersetzungsschritt übersetzten Programmcodes in der Bi närsprache von der Arbeitsumgebung an die Steuerung des Automatisierungssystems in einem Debuggingübertragungsschritt; Transferring the program code translated in the debugging translation step in binary language from the working environment to the controller of the automation system in a debugging transfer step;
Ausführen des Programmcodes in der Binärsprache durch die Steuerung des Automati sierungssystems in einem Debuggingausführungsschritt; und Übertragen von Informationen bezüglich des ausgeführten Programmcodes an die im Webbrowser ausgeführte Instanz des Eingabemoduls des Client-Geräts und/oder an die im weiteren Webbrowser ausgeführte weitere Instanz des Eingabemoduls des weiteren Client-Geräts in einem Debugginginformationsübertragungsschritt. Execution of the program code in the binary language by the control of the automation system in a debugging execution step; and transferring information relating to the executed program code to the instance of the input module of the client device executed in the web browser and / or to the further instance of the input module of the further client device executed in the further web browser in a debugging information transfer step.
Hierdurch wird der technische Vorteil erreicht, dass über die im Webbrowser ausgeführte Instanz des Eingabemoduls ein Debuggingprozess des erstellten Programmcodes initiiert werden kann, bei dem die Ausführung des erstellten Programmcodes zur Überprüfung der Funktionsfähigkeit des erstellten Programmcodes durch den Webserver bzw. durch die mit dem Webserver verbundenen Steuerung des Automatisierungssystems bewirkt wird. Der Nutzer kann somit die Funktionsweise des von ihm erstellten Programmcodes prob lemlos von dem von ihm genutzten Client-Gerät aus initiieren, und benötigt keine direkte Verbindung zur Steuerung des Automatisierungssystems bzw. eine auf dem Client-Gerät installierte Simulationseinrichtung zum Simulieren einer Steuerung eines Automatisie rungssystems zum Überprüfen der Funktionsfähigkeit des erstellten Programmcodes. This has the technical advantage that a debugging process for the program code created is initiated via the instance of the input module executed in the web browser can be, in which the execution of the created program code to check the functionality of the created program code is effected by the web server or by the control of the automation system connected to the web server. The user can thus easily initiate the functioning of the program code he has created from the client device he is using, and does not require a direct connection to control the automation system or a simulation device installed on the client device to simulate a control of an automation system to check the functionality of the created program code.
Zum Durchführen des Debuggingprozesses kann der erstellte Programmcode durch das Übersetzungsmodul in einen entsprechenden Binärcode übersetzt werden, der Binärcode vom Webserver an die Steuerung des Automatisierungssystems übertragen werden und von dieser ausgeführt werden. Informationen, wie beispielsweise Messwerte von Senso ren des Automatisierungssystems oder anderer Speichereinträge der Steuerung, können im Folgenden von der Steuerung über den Webserver an die im jeweiligen Webbrowser ausgeführte Instanz des Eingabemoduls übertragen und von diesem dem Nutzer ange zeigt werden, sodass eine Funktionsfähigkeit des erstellten Programmcodes auf Basis des Verhaltens der Steuerung bzw. der durch die Steuerung gesteuerten Komponenten des Automatisierungssystems bestimmbar ist. To carry out the debugging process, the generated program code can be translated into a corresponding binary code by the translation module, and the binary code can be transferred from the web server to the control of the automation system and executed by it. Information, such as measured values from sensors of the automation system or other memory entries in the controller, can subsequently be transferred from the controller via the web server to the instance of the input module executed in the respective web browser and displayed to the user by this, so that the created program code is functional can be determined on the basis of the behavior of the controller or the components of the automation system controlled by the controller.
Nach einer Ausführungsform umfasst der Debuggingübersetzungsschritt ferner: In one embodiment, the debug translation step further comprises:
Setzen wenigstens eines Breakpoints im Programmcode in einem Breakpointsetzungs schritt; und Setting at least one breakpoint in the program code in a breakpoint setting step; and
Ausführen des Programmcodes in der Binärsprache durch die Steuerung des Automati sierungssystems bis zum Breakpoint im Debuggingausführungsschritt. Execution of the program code in the binary language by the control of the automation system up to the breakpoint in the debugging execution step.
Hierdurch wird der technische Vorteil erreicht, dass eine einfache Überprüfung der Funkti onsweise des erstellten Programmcodes ermöglicht ist. Durch das Setzen entsprechender Breakpoints durch eine entsprechende Funktion innerhalb der im Webbrowser ausgeführ ten jeweiligen Instanz des Eingabemoduls kann eine Ausführung des Steuerprogramms durch die Steuerung an gewünschten Stellen des Steuerprogramms unterbrochen wer den. Hierdurch ist eine Identifikation eines Fehlers innerhalb des Programmcodes des Steuerprogramms, der zu einer Fehlfunktion des Steuerprogramms führt, erleichtert. This has the technical advantage that a simple check of the functionality of the created program code is made possible. By setting appropriate breakpoints through a corresponding function within the respective instance of the input module executed in the web browser, execution of the control program can be interrupted by the control at desired points in the control program. This makes it easier to identify an error within the program code of the control program which leads to a malfunction of the control program.
Nach einer Ausführungsform umfasst der Arbeitsumgebungsverbindungsschritt: Generieren der Arbeitsumgebung auf dem Webserver in einem Arbeitsumgebungsgene rierungsschritt; und Einrichten des Übersetzungsmoduls in der Arbeitsumgebung in einem Einrichtungsschritt. According to one embodiment, the work environment connection step comprises: generating the work environment on the web server in a work environment generation step; and Setting up the translation module in the work environment in one setup step.
Hierdurch wird der technische Vorteil erreicht, dass in Anwendung des im Webbrowser ausgeführten Eingabemoduls ein neues Programmierprojekt gestartet werden kann, in dem im Webserver eine entsprechende Arbeitsumgebung mit einem Übersetzungsmodul eingerichtet wird. In der Arbeitsumgebung kann bei Erstellen des jeweiligen Programm codes des Programmierprojekts eine bzw. eine Mehrzahl von Programmdateien einge richtet werden. Ein Nutzer kann somit bequem über Ausführung des Eingabemoduls im Webserver eines von ihm verwendeten Client-Geräts ein neues Programmierprojekt star ten und den entsprechend erstellten Programmcode innerhalb einer dafür vorgesehenen Arbeitsumgebung auf dem Webserver speichern und bearbeiten. Verschiedene Program mierprojekte können somit individuell in verschiedenen Arbeitsumgebungen hinterlegt und voneinander separiert werden. Hierdurch kann eine Vermischung verschiedener Projekte vermieden werden. This has the technical advantage that a new programming project can be started using the input module executed in the web browser, in which a corresponding working environment with a translation module is set up in the web server. When creating the respective program code of the programming project, one or a plurality of program files can be set up in the working environment. A user can thus comfortably start a new programming project by executing the input module in the web server of a client device used by him and save and edit the correspondingly created program code within a working environment provided on the web server. Different programming projects can thus be stored individually in different work environments and separated from one another. This avoids mixing up different projects.
Nach einer Ausführungsform ist auf dem Webserver eine Mehrzahl von einander separier ter Arbeitsumgebungen generiert, wobei in jeder Arbeitsumgebung das Übersetzungsmo dul ausführbar, und wobei in jeder Arbeitsumgebung ein individuelles Programmierprojekt durchführbar ist. According to one embodiment, a plurality of working environments that are separate from one another are generated on the web server, the translation module being executable in each working environment, and an individual programming project being able to be carried out in each working environment.
Hierdurch wird der technische Vorteil erreicht, dass eine saubere Trennung verschiedener Programmierprojekte in individuell ausgestalteten Arbeitsumgebungen auf dem Webser ver ermöglicht ist. Die verschiedenen Arbeitsumgebungen können darüber hinaus mit ent sprechenden beispielsweise passwortgeschützten Zugängen versehen werden, sodass lediglich autorisierten Nutzern ein Zugriff auf die einzelnen Projekte der Arbeitsumgebun gen ermöglicht ist. Hierdurch kann beispielsweise die Funktionalität der webbasierten Ent wicklungsumgebung und insbesondere die Rechenleistung des Webservers verschiede nen Nutzern, zum Durchführen entsprechender Programmierprojekte zur Verfügung ge stellt werden. Eine Sicherung sensibler Daten auf dem Webserver kann somit gewährleis tet werden. This has the technical advantage that a clean separation of different programming projects in individually designed working environments on the web server is made possible. The various work environments can also be provided with corresponding, for example password-protected, accesses so that only authorized users can access the individual projects in the work environment. In this way, for example, the functionality of the web-based development environment and in particular the computing power of the web server can be made available to various users for carrying out corresponding programming projects. A backup of sensitive data on the web server can thus be guaranteed.
Hierzu kann für das Übersetzungsmodul der auf dem Webserver eingerichteten webba sierten Entwicklungsumgebung eine Mehrzahl von Instanzen des Übersetzungsmoduls erstellt werden. Die verschiedenen Instanzen des Übersetzungsmoduls sind hierbei in den verschiedenen Arbeitsumgebungen ausführbar. Hierdurch können zeitgleich mehrere ver schiedene Programmierprojekte bearbeitet werden. Jede der Instanzen des Überset- zungsmoduls kann hierbei ein Analysemodul aufweisen, so dass lokale wie globale Analy sen der innerhalb der Programmierumgebungen erstellten Programmcodes durchführbar sind. For this purpose, a plurality of instances of the translation module can be created for the translation module of the web-based development environment set up on the web server. The various instances of the translation module can be executed in the various working environments. This means that several different programming projects can be processed at the same time. Each of the instances of the translator The application module can have an analysis module so that local and global analyzes of the program codes created within the programming environments can be carried out.
Nach einer Ausführungsform ist der Webserver in die Steuerung des Automatisierungs systems integriert. According to one embodiment, the web server is integrated into the control of the automation system.
Hierdurch wird der technische Vorteil erreicht, dass eine möglichst kompakte Einheit zwi schen Webserver und Steuerung des Automatisierungssystems bereitgestellt werden kann. Indem der Webserver in die Steuerung des Automatisierungssystems integriert ist, ist eine zusätzliche Datenverarbeitungsanlage zum Betreiben des Webservers nicht nötig. This has the technical advantage that a unit that is as compact as possible can be provided between the web server and the control of the automation system. Since the web server is integrated into the control of the automation system, an additional data processing system is not necessary to operate the web server.
Nach einer Ausführungsform umfasst die Arbeitsumgebung ferner ein Servicemodul, wo bei das Servicemodul eingerichtet ist, rechenaufwändige Vorgänge des im Webbrowser ausgeführten Eingebmoduls auszuführen. According to one embodiment, the working environment further comprises a service module, where the service module is set up to carry out computationally intensive processes of the input module executed in the web browser.
Hierdurch wird der technische Vorteil erreicht, dass rechenaufwändige Vorgänge an den Webserver ausgelagert werden können. Hierdurch können Ressourcen des jeweiligen Cli ent-Geräts eingespart werden. Rechenaufwändige Vorgänge des Eingabemoduls können beispielsweise Layout Algorithmen sein, die bei der Programmierung von graphischen Programmiersprachen zum Erstellen des Programmcodes benötigt werden und entspre chen rechenaufwändig sind. This has the technical advantage that complex processes can be outsourced to the web server. In this way, resources of the respective client device can be saved. Computationally expensive processes of the input module can be, for example, layout algorithms that are required when programming graphic programming languages to create the program code and are correspondingly computationally complex.
Nach einem zweiten Aspekt der vorliegenden Erfindung wird ein Automatisierungssystem mit einer Steuerung und einem mit der Steuerung verbundenen Webserver bereitgestellt, wobei der Webserver mit einem Client-Gerät und einem weiteren Client-Gerät verbindbar ist, wobei auf dem Webserver eine Arbeitsumgebung und eine webbasierte Entwicklungs umgebung installiert ist, und wobei das Automatisierungssystem eingerichtet ist, das erfin dungsgemäße Verfahren zum Erstellen und Ausführen eines Steuerprogramms zum Steuern eines Automatisierungssystems auszuführen. According to a second aspect of the present invention, an automation system with a controller and a web server connected to the controller is provided, the web server being connectable to a client device and a further client device, a working environment and a web-based development environment on the web server is installed, and wherein the automation system is set up to execute the inventive method for creating and executing a control program for controlling an automation system.
Hierdurch wird der technische Vorteil erreicht, dass ein Automatisierungssystem bereitge stellt wird, bei dem ermöglicht ist, dass ein Programmcode eines Steuerprogramms zum Steuern des Automatisierungssystems mittels einer auf einem Webserver installierten webbasierten Entwicklungsumgebung generiert wird. Die Erfindung ist im Folgenden anhand von Ausführungsbeispielen unter Bezugnahme auf die beigefügten, schematischen und nicht maßstabsgetreuen Zeichnungen näher er läutert. Abschnitte, Elemente, Bauteile, Einheiten, Komponenten und/oder Schemata, wel che eine identische oder analoge Ausbildung und/oder Funktion besitzen, sind in der Fi gurenbeschreibung, der Bezugszeichenliste, den Patentansprüchen und in den Figuren der Zeichnung mit denselben Bezugszeichen gekennzeichnet. This achieves the technical advantage that an automation system is provided in which it is possible for a program code of a control program for controlling the automation system to be generated by means of a web-based development environment installed on a web server. The invention is explained in more detail below on the basis of exemplary embodiments with reference to the attached, schematic and not to scale drawings. Sections, elements, components, units, components and / or schemes which have an identical or analogous design and / or function are identified with the same reference symbols in the fi gure description, the list of reference symbols, the claims and in the figures of the drawing.
Bei der Erfindung kann ein Merkmal positiv, d. h. vorhanden, oder negativ, d. h. abwe send, ausgestaltet sein, wobei ein negatives Merkmal als Merkmal nicht explizit erläutert ist, wenn nicht nach der Erfindung Wert daraufgelegt ist, dass es abwesend ist, also die tatsächlich gemachte und nicht eine durch den Stand der Technik konstruierte Erfindung darin besteht, dieses Merkmal wegzulassen. In the invention, a feature can be positive; H. present, or negative, d. H. absent, be designed, wherein a negative feature is not explicitly explained as a feature unless value is attached to the invention that it is absent, that is, the invention actually made and not one constructed by the prior art consists in this feature omit.
Die Merkmale der Beschreibung sind auch als optionale Merkmale interpretierbar; d. h. ein jedes Merkmal kann als ein fakultatives, arbiträres oder bevorzugtes, also als ein nicht verbindliches, Merkmal aufgefasst werden. So ist eine Herauslösung eines Merkmals, ggf. inkl. seiner Peripherie, aus einem Ausführungsbeispiel möglich, wobei dieses Merkmal dann auf einen verallgemeinerten Erfindungsgedanken übertragbar ist. Das Fehlen eines Merkmals in einem Ausführungsbeispiel zeigt, dass das Merkmal in Bezug auf die Erfin dung optional ist. The features of the description can also be interpreted as optional features; d. H. Each characteristic can be understood as an optional, arbitrary or preferred, i.e. as a non-binding, characteristic. It is thus possible to extract a feature, possibly including its periphery, from an exemplary embodiment, this feature then being transferable to a generalized inventive concept. The lack of a feature in one embodiment shows that the feature is optional with respect to the invention.
In den Figuren zeigen: In the figures show:
Fig. 1 eine schematische Darstellung eines Automatisierungssystems gemäß einer Aus führungsform; 1 shows a schematic representation of an automation system according to one embodiment;
Fig. 2 ein Flussdiagramm eines Verfahrens zum Erstellen und Ausführen eines Steuerpro gramms zum Steuern eines Automatisierungssystems gemäß einer Ausführungsform; 2 shows a flow diagram of a method for creating and executing a control program for controlling an automation system according to an embodiment;
Fig. 3 ein weiteres Flussdiagramm des Verfahrens zum Erstellen und Ausführen eines Steuerprogramms zum Steuern eines Automatisierungssystems gemäß einer weiteren Ausführungsform; 3 shows a further flow diagram of the method for creating and executing a control program for controlling an automation system according to a further embodiment;
Fig. 4 ein weiteres Flussdiagramm des Verfahrens zum Erstellen und Ausführen eines Steuerprogramms zum Steuern eines Automatisierungssystems gemäß einer weiteren Ausführungsform; Fig. 5 ein zeitliches Ablaufdiagramm einer Datenkommunikation zwischen dem Webser ver und den Client-Geräten des Automatisierungssystems in Fig. 1 , gemäß einer Ausfüh rungsform; 4 shows a further flow diagram of the method for creating and executing a control program for controlling an automation system according to a further embodiment; FIG. 5 shows a time flow diagram of data communication between the web server and the client devices of the automation system in FIG. 1, according to an embodiment;
Fig. 6 ein zeitliches Ablaufdiagramm einer Datenkommunikation zwischen dem Webser ver und den Client-Geräten des Automatisierungssystems in Fig. 1 , gemäß einer Ausfüh rungsform; und 6 shows a time flow diagram of a data communication between the web server ver and the client devices of the automation system in FIG. 1, according to an embodiment; and
Fig. 7 ein weiteres Flussdiagramm des Verfahrens zum Erstellen und Ausführen eines Steuerprogramms zum Steuern eines Automatisierungssystems gemäß einer weiteren Ausführungsform; 7 shows a further flow diagram of the method for creating and executing a control program for controlling an automation system according to a further embodiment;
Fig. 8 ein weiteres Flussdiagramm des Verfahrens zum Erstellen und Ausführen eines Steuerprogramms zum Steuern eines Automatisierungssystems gemäß einer weiteren Ausführungsform; und 8 shows a further flow diagram of the method for creating and executing a control program for controlling an automation system according to a further embodiment; and
Fig. 9 eine weitere schematische Darstellung des Automatisierungssystems in Fig. 1 ge mäß einer weiteren Ausführungsform. 9 shows a further schematic representation of the automation system in FIG. 1 according to a further embodiment.
Fig. 1 zeigt eine schematische Darstellung eines Automatisierungssystems 200 gemäß einer Ausführungsform. 1 shows a schematic illustration of an automation system 200 according to an embodiment.
Das in Fig. 1 dargestellte Automatisierungssystem 200 umfasst eine Steuerung 201 und einen Webserver 203, der über einen Datenbus 213 mit der Steuerung verbunden ist. Auf dem Webserver 203 ist eine Arbeitsumgebung 209 eingerichtet, in der eine webbasierte Entwicklungsumgebung 300 ausführbar ist, wobei die Entwicklungsumgebung 300 auf dem Webserver 203 installiert ist. In der in Fig. 1 gezeigten Ausführungsform des Automa tisierungssystems 200 sind die Steuerung 201 und der Webserver 203 durch zwei indivi duelle Datenverarbeitungsanlagen realisiert. Alternativ kann der Webserver 203 in die Steuerung 201 integriert sein. Im Übrigen kann über den Datenbus 213 eine Verbindung zum Internet realisiert sein. The automation system 200 shown in FIG. 1 comprises a controller 201 and a web server 203, which is connected to the controller via a data bus 213. A working environment 209 is set up on the web server 203, in which a web-based development environment 300 can be executed, the development environment 300 being installed on the web server 203. In the embodiment of the automation system 200 shown in FIG. 1, the controller 201 and the web server 203 are implemented by two individual data processing systems. Alternatively, the web server 203 can be integrated into the controller 201. In addition, a connection to the Internet can be implemented via the data bus 213.
In der Ausführungsform in Fig. 1 sind ferner ein Client-Gerät 205 und ein weiteres Client- Gerät 207 über eine Internetverbindung 215 mit dem Webserver 203 verbunden. Auf dem Client-Gerät 205 ist ein Webbrowser 206 installiert, in dem eine Instanz eines Eingabemo duls 311 der webbasierten Entwicklungsumgebung 300 ausgeführt ist. Auf dem weiteren Client-Gerät 207 ist ein weiterer Webbrowser 208 installiert, in dem eine weitere Instanz des Eingabemoduls 313 ausgeführt ist. In the embodiment in FIG. 1, a client device 205 and a further client device 207 are also connected to the web server 203 via an internet connection 215. A web browser 206, in which an instance of an input module 311 of the web-based development environment 300 is executed, is installed on the client device 205. A further web browser 208, in which a further instance of the input module 313 is executed, is installed on the further client device 207.
Das Client-Gerät 205 und das weitere Client-Gerät 207 können eine beliebige Datenverar beitungsanlage, beispielsweise ein Industriecomputer, ein Desktop-Computer, ein Laptop oder ein beliebiges Mobilgerät, beispielsweise ein Mobiltelefon oder Tablet sein. Die Webbrowser 206, 208 können beliebige aus dem Stand der Technik bekannte Webbrow ser sein und die Client-Geräte 205, 207 können durch beliebige aus dem Stand der Tech nik bekannte Betriebssysteme betrieben werden. Alternativ kann ein Webbrowser auch in ein Anwendungsprogramm integriert sein und als Teil des Anwendungsprogramms aus geführt werden. The client device 205 and the further client device 207 can be any data processing system, for example an industrial computer, a desktop computer, a laptop or any mobile device, for example a mobile phone or tablet. The web browsers 206, 208 can be any web browser known from the prior art, and the client devices 205, 207 can be operated by any operating systems known from the prior art. Alternatively, a web browser can also be integrated into an application program and run as part of the application program.
Das Automatisierungssystem 200 kann eine beliebige industrielle Automatisierungsanlage sein und die Steuerung 201 kann als eine beliebige Steuerung einer Automatisierungsan lage, insbesondere eine speicherprogrammierbare Steuerung SPS ausgebildet sein. The automation system 200 can be any industrial automation system and the controller 201 can be designed as any control of an automation system, in particular a programmable logic controller PLC.
Alternativ zu der in Fig. 1 gezeigten Ausführungsform kann eine beliebige Anzahl von Cli ent-Geräten über eine Internetverbindung 215 mit dem Webserver 203 verbunden sein. Insbesondere kann das Automatisierungssystem 200 eine beliebige Anzahl von Webser vern 203 aufweisen. Darüber hinaus kann auf dem Webserver 203 eine beliebige Anzahl verschiedener Arbeitsumgebungen 209 eingerichtet sein, auf denen jeweils webbasierte Entwicklungsumgebungen 300 ausführbar sind. As an alternative to the embodiment shown in FIG. 1, any number of client devices can be connected to the web server 203 via an Internet connection 215. In particular, the automation system 200 can have any number of web servers 203. In addition, any number of different work environments 209 can be set up on the web server 203, on each of which web-based development environments 300 can be executed.
Fig. 2 zeigt ein Flussdiagramm eines Verfahrens 100 zum Erstellen und Ausführen eines Steuerprogramms zum Steuern eines Automatisierungssystems 200 gemäß einer Ausfüh rungsform. FIG. 2 shows a flow chart of a method 100 for creating and executing a control program for controlling an automation system 200 according to one embodiment.
Die Ausführungsform des Verfahrens 100 in Fig. 2 wird mit Bezug auf Fig. 9 und die dazu gehörige Beschreibung beschrieben. The embodiment of the method 100 in FIG. 2 is described with reference to FIG. 9 and the description associated therewith.
Das Verfahren 100 zum Erstellen und Ausführen eines Steuerprogramms zum Steuern eines Automatisierungssystems 200 kann auf Automatisierungssysteme mit einer Steue rung 201 und einem mit der Steuerung 201 verbundenen Webserver 203 gemäß dem in Fig. 1 dargestellten Automatisierungssystem angewendet werden. Zum Erstellen eines Steuerprogramms kann sich ein Nutzer über ein von ihm verwende tes Client-Gerät 205, beispielsweise einen Desktop-Computer oder Laptop oder ein belie biges Mobilgerät, und einen auf dem Client-Gerät 205 ausgeführten Webbrowser 206 über eine Internetverbindung 215 mit dem Webserver 203 in einem Serververbindungs schritt 101 verbinden. Diese Verbindung mit dem Webserver 203 kann beispielsweise ei nen passwortgeschützten Zugangsprozess umfassen, bei dem der Nutzer sich über einen entsprechend angelegten User-Account einloggen muss. The method 100 for creating and executing a control program for controlling an automation system 200 can be applied to automation systems with a controller 201 and a web server 203 connected to the controller 201 according to the automation system shown in FIG. 1. To create a control program, a user can use a client device 205 used by him, for example a desktop computer or laptop or any mobile device, and a web browser 206 running on the client device 205 via an internet connection 215 with the web server 203 in a server connection step 101 connect. This connection to the web server 203 can include, for example, a password-protected access process in which the user has to log in using a correspondingly created user account.
Nach erfolgreicher Verbindung mit dem Webserver 203, auf dem die webbasierte Ent wicklungsumgebung 300 mit einem Eingabemodul 301 und einem Übersetzungsmodul 303 installiert ist, kann der Nutzer in einem Arbeitsumgebungsverbindungsschritt 103 eine Instanz des Eingabemoduls 301 der webbasierten Entwicklungsumgebung 300 laden und im Webbrowser 206 des Client-Geräts 205 ausführen. Die Instanz des Eingabemoduls 311 kann ein entsprechendes Graphical User Interface GUI aufweisen, das dem Nutzer Eingabemöglichkeiten, wie beispielsweise Texteditoren, bereitstellt. Die Instanz des Ein gabemoduls 311 kann vergleichbar zu aus dem Stand der Technik bekannten Integrierten Entwicklungsumgebungen (Integrated Development Environments IDE) aufgebaut sein. After a successful connection to the web server 203, on which the web-based development environment 300 is installed with an input module 301 and a translation module 303, the user can load an instance of the input module 301 of the web-based development environment 300 in a work environment connection step 103 and display it in the web browser 206 of the client Device 205. The instance of the input module 311 can have a corresponding graphical user interface GUI that provides the user with input options, such as text editors. The instance of the input module 311 can be constructed in a manner comparable to integrated development environments (IDE) known from the prior art.
Über das Graphical User Interface GUI der im Webbrowser 206 ausgeführten Instanz des Eingabemoduls 311 kann der Nutzer im Arbeitsumgebungsverbindungsschritt 103 eine Verbindung zu einer Arbeitsumgebung 209 auf dem Webserver 201 erstellen. Die auf dem Webserver 201 eingerichtete Arbeitsumgebung 209 kann ein entsprechendes Pro grammierprojekt inklusive einer Programmdatei umfassen, in der ein zu modifizierender Programmcode des Steuerprogramms angeordnet ist. Alternativ kann der Nutzer über die im Webbrowser 206 ausgeführte Instanz des Eingabemoduls 300 in der Arbeitsumgebung 209 ein neues Programmierprojekt einrichten und einen neuen Programmcode erstellen. Via the graphical user interface GUI of the instance of the input module 311 executed in the web browser 206, the user can create a connection to a work environment 209 on the web server 201 in the work environment connection step 103. The working environment 209 set up on the web server 201 can include a corresponding programming project including a program file in which a program code of the control program to be modified is arranged. Alternatively, the user can set up a new programming project in the working environment 209 via the instance of the input module 300 executed in the web browser 206 and create a new program code.
Ein Programmierprojekt kann neben der den Programmcode enthaltenden Programmda tei beliebige weitere Dateien aufweisen, in denen beliebige zum Ausführen des Program miervorgangs benötigte Informationen gespeichert sind. Darüber hinaus kann das Pro grammierprojekt Dokumentationen des Programmcodes oder Code zum Steuern des Übersetzungsvorgangs umfassen. Die einzelnen Dateien können in entsprechenden Ver zeichnissen geordnet sein. Darüber hinaus kann ein Programmierprojekt über verschie dene Datenbanken verfügen, die für die Erstellung eines Programmcodes in einer ent sprechende Programmiersprache benötigt werden und beispielsweise verwendbare Datei typen, Funktionen und andere Objekte der jeweiligen Programmiersprache umfassen. Die Datenbanken können insbesondere automatisch mit Inhalt befüllt werden. Dies ist insbe sondere bei der Durchführung von Analysen des erstellten Programmcodes der Fall, bei der Analyseergebnisse in den Datenbanken gespeichert beziehungsweise zwischenge speichert werden. In addition to the program file containing the program code, a programming project can have any other files in which any information required to carry out the programming process is stored. In addition, the programming project can include documentation of the program code or code for controlling the translation process. The individual files can be arranged in appropriate directories. In addition, a programming project can have various databases that are required for the creation of a program code in a corresponding programming language and, for example, include usable file types, functions and other objects of the respective programming language. the In particular, databases can be automatically filled with content. This is especially the case when performing analyzes of the program code created, in which the analysis results are stored or temporarily stored in the databases.
Hierzu kann der Nutzer in einem Codeerstellungsschritt 105 durch entsprechende Einga ben in die im Webbrowser 206 ausgeführte Instanz des Eingabemoduls 311 eine erste Version des zu erstellenden Programmcodes für ein Steuerprogramm für das Automati sierungssystem 200 in einer ersten Programmiersprache erstellen. Hierzu kann über ver schiedene Texteditoren oder Grapheditoren des Eingabemoduls 301 innerhalb des durch das Client-Gerät 205 ausgeführten Webbrowsers 206 in einer ersten Programmiersprache ein entsprechender Programmcode erstellt werden. For this purpose, the user can create a first version of the program code to be created for a control program for the automation system 200 in a first programming language in a code creation step 105 by making appropriate entries in the instance of the input module 311 executed in the web browser 206. For this purpose, a corresponding program code can be created in a first programming language via various text editors or graph editors of the input module 301 within the web browser 206 executed by the client device 205.
Die verwendete erste Programmiersprache kann eine beliebige aus dem Stand der Tech nik bekannte textbasierte oder grafische Programmiersprache sein. Alternativ kann die erste Programmiersprache eine aus dem Stand der Technik bekannte für Automatisie rungssysteme verwendete Programmiersprache wie beispielsweise Sequential Function Chart SFC, Ladder Diagram LD oder Function Block Diagram FBD sein. The first programming language used can be any text-based or graphical programming language known from the prior art. Alternatively, the first programming language can be a programming language known from the prior art for automation systems, such as, for example, Sequential Function Chart SFC, Ladder Diagram LD or Function Block Diagram FBD.
Alternativ kann die erste Programmiersprache eine beliebige aus dem Stand der Technik bekannte textbasierte oder grafische Programmiersprache sein. Alternatively, the first programming language can be any text-based or graphical programming language known from the prior art.
Die erste Version des Programmcodes kann ein neu erstellter Programmcode sein. Alter nativ kann die erste Version des Programmcodes eine geänderte Version eines bereits erstellten Programmcodes sein, der auf dem Webserver 203 innerhalb der Arbeitsumge bung 209 unter dem entsprechenden Programmierprojekt abgelegt ist. Hierzu kann der bereits erstellte Programmcode zunächst vom Webserver 203 auf die im Webbrowser 206 des Client-Geräts 205 ausgeführte Instanz des Eingabemoduls 311 geladen werden. The first version of the program code can be a newly created program code. Alternatively, the first version of the program code can be a modified version of a program code that has already been created and which is stored on the web server 203 within the working environment 209 under the corresponding programming project. For this purpose, the program code that has already been created can first be loaded from the web server 203 to the instance of the input module 311 executed in the web browser 206 of the client device 205.
Nach Erstellen der ersten Version des Programmcodes im Codeerstellungsschritt 105 kann in einem Programmcodeübertragungsschritt 107 die erstellte erste Version des Pro grammcodes von der im Webbrowser 206 ausgeführten Instanz des Eingabemoduls 311 über die Internetverbindung 215 an den Webserver 203 übertragen werden. Die Übertra gung des erstellten Programmcodes von der im Webbrowser 206 ausgeführten Instanz des Eingabemoduls 311 an den Webserver 203 kann automatisch durchgeführt werden, indem die im Webbrowser 206 ausgeführte Instanz des Eingabemoduls 311 in vorbe stimmten Zeitabständen entsprechende Nachrichten an den Webserver 203 übermittelt. Alternativ können im Programmcodeübertragungsschritt 107 ausschließlich die im Codeerstellungsschritt 105 vorgenommenen Änderungen am Programmcode, auf deren Basis die erste Version des Programmcodes erstellt wurde, von der im Webbrowser 206 ausgeführten Instanz des Eingabemoduls 311 über die Internetverbindung 215 an den Webserver 203 übertragen werden. Dies ist insbesondere von Interesse, wenn die erste Version des Programmcodes eine geänderte Version eines bereits erstellten Programm codes darstellt. After creating the first version of the program code in code creation step 105, in a program code transfer step 107 the created first version of the program code can be transferred from the instance of input module 311 executed in web browser 206 to web server 203 via internet connection 215. The transmission of the generated program code from the instance of the input module 311 executed in the web browser 206 to the web server 203 can be carried out automatically by the instance of the input module 311 executed in the web browser 206 transmitting corresponding messages to the web server 203 at predetermined time intervals. Alternatively, in the program code transfer step 107, only the changes to the program code made in the code creation step 105, on the basis of which the first version of the program code was created, can be transferred from the instance of the input module 311 executed in the web browser 206 to the web server 203 via the internet connection 215. This is of particular interest if the first version of the program code represents a modified version of a program code that has already been created.
Alternativ kann der Nutzer über eine entsprechende Sendefunktion den von ihm erstellten Programmcode von der im Webbrowser 206 ausgeführten Instanz des Eingabemoduls 311 an den Webserver 203 übermitteln. Alternatively, the user can use a corresponding send function to transmit the program code created by him from the instance of the input module 311 executed in the web browser 206 to the web server 203.
Nach erfolgreicher Übertragung des erstellten Programmcodes an den Webserver 203 kann in einem Schreibschritt 109 der übertragende Programmcode in eine Programmdatei innerhalb der Arbeitsumgebung geschrieben werden. Die Programmdatei der Arbeitsum gebung kann hierbei im Zuge eines neu erstellten Programmierprojekts erstellt worden sein. Alternativ kann die Programmdatei Teil eines bereits bestehenden Programmierpro jekts sein, während die erstellte erste Version des Programmcodes eine Modifikation ei nes bereits bestehenden Programmcodes darstellt. After the generated program code has been successfully transmitted to the web server 203, the transmitted program code can be written into a program file within the working environment in a writing step 109. The program file of the working environment can have been created in the course of a newly created programming project. Alternatively, the program file can be part of an already existing programming project, while the created first version of the program code represents a modification of an already existing program code.
Die Programmdatei kann vergleichbar zu einem Puffer als eine Datei in einem Hauptspei cher des Webservers 203 ausgebildet sein, sodass Änderungen der Programmdatei nicht automatisch in einem dauerhaften Datenspeicher, wie einer Festplatte, des Webservers 203 gespeichert werden müssen. The program file, comparable to a buffer, can be designed as a file in a main memory of the web server 203, so that changes to the program file do not have to be automatically stored in a permanent data memory, such as a hard disk, of the web server 203.
Darüber hinaus kann die Programmdatei mit einer Assoziationsdatei im dauerhaften Da tenspeicher des Webservers 203 assoziiert sein, in der die Inhalte der Programmdatei ge speichert werden können, so dass eine Speicherung der Inhalte der Programmdatei im dauerhaften Speicher des Webservers 203 erreicht werden kann. In addition, the program file can be associated with an association file in the permanent data memory of the web server 203, in which the contents of the program file can be stored, so that the contents of the program file can be stored in the permanent memory of the web server 203.
Alternativ kann die Programdatei im Schreibschritt 109 auf dem dauerhaften Datenspei cher des Webservers 203 gespeichert werden. Alternatively, the program file can be stored in the write step 109 on the permanent data memory of the web server 203.
Eine Programmdatei kann beispielsweise als ein Verbundtyp aufgebaut sein und wiede rum weitere Dateikomponenten umfassen, die beispielsweise Teile eines umfassenden Steuerprogramms beinhalten. Der erstellte Programmcode kann ein vollständiges Steuer programm umfassen. Alternativ kann der erstellte Programmcode einen Teil eines kom plexen Steuerprogramms darstellen. A program file can, for example, be structured as a compound type and, in turn, comprise further file components that, for example, form parts of a comprehensive Include control program. The generated program code can comprise a complete control program. Alternatively, the generated program code can represent part of a complex control program.
In einem Übersetzungsschritt 111 kann im Folgenden das Übersetzungsmodul 303 der webbasierten Entwicklungsumgebung 300, das in der Arbeitsumgebung 209 ausführbar ist, ausgeführt werden und der in die Programmdatei geschriebene Programmcode, der in der ersten Programmiersprache verfasst ist, in einen entsprechenden Binärcode einer Bi närsprache beziehungsweise einer Maschinensprache übersetzt werden. Der durch die Übersetzung durch das Übersetzungsmodul 303 generierte Binärcode ist auf die Ausbil dung der Steuerung 201 des Automatisierungssystems angepasst, sodass der übersetzte Binärcode durch die Steuerung 201 ausführbar ist. In a translation step 111, the translation module 303 of the web-based development environment 300, which can be executed in the working environment 209, can subsequently be executed and the program code written in the program file, which is written in the first programming language, into a corresponding binary code of a binary language or a Machine language to be translated. The binary code generated by the translation by the translation module 303 is adapted to the design of the controller 201 of the automation system, so that the translated binary code can be executed by the controller 201.
Nach Übersetzen des erstellten Programmcodes im Übersetzungsschritt 111 kann in ei nem Binärcodeübertragungsschritt 113 der erzeugte Binärcode von der Arbeitsumgebung 209 an die Steuerung 201 des Automatisierungssystems 200 übertragen werden. Dies kann beispielsweise über einen entsprechende Datenbus 213 erreicht werden. Der Daten bus 213 kann beispielsweise als eine lokale Netzwerkverbindung ausgebildet sein. After the generated program code has been translated in the translation step 111, the generated binary code can be transmitted from the working environment 209 to the controller 201 of the automation system 200 in a binary code transmission step 113. This can be achieved, for example, via a corresponding data bus 213. The data bus 213 can be designed as a local network connection, for example.
Nach Übertragung des Binärcodes an die Steuerung 201 kann dieser in einem Ausfüh rungsschritt 115 durch die Steuerung 201 ausgeführt werden und das Automatisierungs system 200 gemäß dem erstellten Steuerprogramm gesteuert werden. After the binary code has been transmitted to the controller 201, it can be executed in an execution step 115 by the controller 201 and the automation system 200 controlled in accordance with the control program created.
Fig. 3 zeigt ein weiteres Flussdiagramm des Verfahrens 100 zum Erstellen und Ausführen eines Steuerprogramms zum Steuern eines Automatisierungssystems 200 gemäß einer weiteren Ausführungsform. 3 shows a further flow diagram of the method 100 for creating and executing a control program for controlling an automation system 200 according to a further embodiment.
Die Ausführungsform des Verfahrens 100 in Fig. 3 basiert auf der Ausführungsform in Fig. 2 und umfasst alle Verfahrensschritte der Ausführungsform in Fig. 2. Sofern diese in der Ausführungsform in Fig. 3 unverändert bleiben, wird von einer erneuten detaillierten Be schreibung abgesehen. The embodiment of the method 100 in FIG. 3 is based on the embodiment in FIG. 2 and comprises all method steps of the embodiment in FIG. 2. If these remain unchanged in the embodiment in FIG. 3, a renewed detailed description is dispensed with.
Abweichend zu der Ausführungsform in Fig. 2 beschreibt die Ausführungsform in Fig. 3 das Erstellen eines Programmcodes durch zwei Nutzer, die über individuelle Client-Ge räte beispielsweise das Client-Gerät 205 und das weitere Client-Gerät 207 gemäß Fig. 1 simultan den Programmcode des Steuerprogramms erstellen. Hierzu kann in einem weiteren Serververbindungsschritt 117 eine Verbindung zwischen dem weiteren Client-Gerät 207 und dem Webserver 203 über einen weiteren Webbrowser 208 erstellt werden. Die Verbindung zwischen dem weiteren Client-Gerät 207 und dem Webserver 203 kann wiederum einen passwortgeschützten Zugangsprozess umfassen, bei dem der weitere Nutzer sich über einen entsprechenden individuellen User-Account beim Server einloggen muss. In contrast to the embodiment in FIG. 2, the embodiment in FIG. 3 describes the creation of a program code by two users who, via individual client devices, for example, the client device 205 and the further client device 207 according to FIG. 1, simultaneously write the program code of the control program. For this purpose, in a further server connection step 117, a connection between the further client device 207 and the web server 203 can be established via a further web browser 208. The connection between the further client device 207 and the web server 203 can in turn comprise a password-protected access process in which the further user has to log into the server via a corresponding individual user account.
Darauf folgend kann der weitere Nutzer über den weiteren Webbrowser 208 des weiteren Client-Geräts 207 eine weitere Instanz des Eingabemoduls 313 der auf dem Webserver 203 installierten webbasierten Entwicklungsumgebung 300 laden und in einem weiteren Arbeitsumgebungsverbindungsschritt 119 im weiteren Webbrowser 208 des weiteren Cli ent-Geräts 207 ausführen. Die weitere Instanz des Eingabemoduls 313 kann analog zur Instanz des Eingabemoduls 311 ein grafisches User Interface GUI aufweisen, das inner halb des weiteren Webbrowsers 208 dem Nutzer entsprechende Eingabemöglichkeiten zum Erstellen des Programmcodes bereitstellt. Die beiden Instanzen des Eingabemoduls 311, 313 können in unterschiedlichen Webbrowsern und in unterschiedlichen Client-Gerä ten, die mit verschiedenen Betriebssystemen betrieben werden, ausgeführt werden. So kann das Client-Gerät 205 beispielsweise ein Desktop-Computer sein, während das wei tere Client-Gerät 207 ein Mobilgerät ist. The further user can then load a further instance of the input module 313 of the web-based development environment 300 installed on the web server 203 via the further web browser 208 of the further client device 207 and in a further work environment connection step 119 in the further web browser 208 of the further client device 207 To run. The further instance of the input module 313 can, analogously to the instance of the input module 311, have a graphical user interface GUI which, within the further web browser 208, provides the user with corresponding input options for creating the program code. The two instances of the input module 311, 313 can be executed in different web browsers and in different client devices that are operated with different operating systems. For example, the client device 205 can be a desktop computer, while the other client device 207 is a mobile device.
Darauffolgend kann über die weitere Instanz des Eingabemoduls 313 eine Verbindung zur Arbeitsumgebung 209 des Webservers 203 aufgebaut werden. Diese kann wiederum ei nen passwortgeschützten Zugangsprozess umfassen. A connection to the work environment 209 of the web server 203 can then be established via the further instance of the input module 313. This in turn can include a password-protected access process.
Darauffolgend kann in einem weiteren Programmcodeübertragungsschritt 121 die in die Programmdatei geschriebene erste Version des Programmcodes vom Webserver 203 an die weitere Instanz des Eingabemoduls 313 übertragen und in dieser angezeigt werden. Der weitere Nutzer kann somit die vom ersten Nutzer bearbeitete Version des Programm codes bearbeiten. Subsequently, in a further program code transfer step 121, the first version of the program code written in the program file can be transferred from the web server 203 to the further instance of the input module 313 and displayed there. The additional user can thus edit the version of the program code edited by the first user.
Darauffolgend können in einem Änderungserstellungsschritt 123 Änderungen an der ers ten Version des Programmcodes vorgenommen und eine zweite Version des Programm codes erstellt werden. Hierzu kann der Nutzer über entsprechende Eingaben an der wei teren Instanz des Eingabemoduls 313 den von der Arbeitsumgebung 209 des Webservers 203 heruntergeladenen Programmcode entsprechend modifizieren. Hierzu kann der Nut zer die im Eingabemodul 301 bereitgestellten Editoren verwenden, über die Programm code der entsprechenden Programmiersprache erstellt werden kann. Darauffolgend kann die zweite Version des Programmcodes in einem ersten Änderungs übertragungsschritt 125 von der weiteren Instanz des Eingabemoduls 313 an den Webs erver 203 und insbesondere an die Arbeitsumgebung 209 übertragen werden. Im ersten Änderungsübertragungsschritt 125 kann die zweite Version des Programmcodes insbe sondere dadurch übertragen werden, dass ausschließlich die vorgenommenen Änderun gen im Programmcode übertragen werden. Hierzu kann jede einzelne vorgenommene Än derung in einer individuellen Nachricht von der weiteren Instanz des Eingabemoduls 313 an den Webserver 203 übertragen werden. Subsequently, in a change creation step 123, changes can be made to the first version of the program code and a second version of the program code can be created. For this purpose, the user can modify the program code downloaded from the working environment 209 of the web server 203 accordingly by means of corresponding inputs at the other instance of the input module 313. For this purpose, the user can use the editors provided in the input module 301, via which the program code of the corresponding programming language can be created. The second version of the program code can then be transmitted in a first change transmission step 125 from the further instance of the input module 313 to the web server 203 and in particular to the work environment 209. In the first change transfer step 125, the second version of the program code can be transferred in particular in that only the changes made in the program code are transferred. For this purpose, each individual change made can be transmitted from the further instance of the input module 313 to the web server 203 in an individual message.
Nach Übertragung der zweiten Version des Programmcodes bzw. der vorgenommenen Änderungen an die Arbeitsumgebung 209 des Webservers 203 kann die zweite Version des Programmcodes in einem Änderungsschreibschritt 127 in die Programmdatei der Ar beitsumgebung 209 geschrieben werden. Hierzu können insbesondere lediglich die vor genommenen Änderungen in die erste Version des Programmcodes eingepflegt werden. After the second version of the program code or the changes made have been transferred to the working environment 209 of the web server 203, the second version of the program code can be written into the program file of the working environment 209 in a change writing step 127. For this purpose, in particular, only the changes made can be entered into the first version of the program code.
Nach Schreiben der zweiten Version des Programmcodes in die Programmdatei kann in einem zweiten Änderungsübertragungsschritt 129 die in die Programmdatei geschriebene Version von der Arbeitsumgebung 209 an die im Webbrowser 206 ausgeführte Instanz des Eingabemoduls 311 des Client-Geräts 205 übertragen werden und in einem Ände rungsanzeigeschritt 131 dem Nutzer des Client-Geräts 205 die durch den weiteren Nutzer des weiteren Client-Geräts 207 erstellte zweite Version des Programmcodes und insbe sondere die vorgenommenen Änderungen des Programmcodes in der jeweiligen Instanz des Eingabemoduls 311 angezeigt werden. Durch diesen Abgleich können beide Nutzer mit der gleichen Version des Programmcodes arbeiten, sodass eine simultane Bearbei tung des Programmcodes durch eine Mehrzahl von Nutzern ermöglicht ist. After writing the second version of the program code in the program file, in a second change transfer step 129, the version written in the program file can be transferred from the working environment 209 to the instance of the input module 311 of the client device 205 executed in the web browser 206 and in a change display step 131 the User of the client device 205, the second version of the program code created by the further user of the further client device 207 and in particular the changes made to the program code in the respective instance of the input module 311 are displayed. As a result of this comparison, both users can work with the same version of the program code, so that simultaneous processing of the program code by a plurality of users is possible.
Die Übertragung der in die Programmdatei geschriebenen Version des Programmcodes im Änderungsübertragungsschritt 129 kann automatisch durchgeführt werden, indem der Webserver 203 automatisch nach dem Schreiben der Version des Programmcodes in die Programmdatei die Version des Programmcodes an die Instanz des Eingabemoduls 311 des Client-Geräts 205 überträgt. Alternativ kann die Übertragung der Version des Pro grammcodes vom Webserver 203 an die Client-Geräte 205, 207 als Antwortnachrichten auf entsprechende Anfragen der Client-Geräte 205, 207 beziehungsweise der Instanzen des Eingabemoduls 311 , 313 an den Webserver 203 erfolgen, in denen die Client-Geräte 205, 207 beziehungsweise der Instanzen des Eingabemoduls 311, 313 anfragen, ob aktu elle Versionen des Programmcodes vorliegen. Nach Schreiben der zweiten Version in die Programmdatei im Änderungsschreibschritt 127 kann analog zu der Ausführungsform in Fig. 2 die in die Programmdatei geschriebene Version des Programmcodes im Übersetzungsschritt 111 durch das Übersetzungsmodul 303 in einen entsprechenden Binärcode übersetzt werden, der in dem Binärcodeübertra gungsschritt 113 an die Steuerung 201 übertragen und im Ausführungsschritt 115 durch die Steuerung ausgeführt werden kann. The transmission of the version of the program code written in the program file in the change transmission step 129 can be carried out automatically by the web server 203 automatically transmitting the version of the program code to the instance of the input module 311 of the client device 205 after the version of the program code has been written into the program file. Alternatively, the version of the program code can be transmitted from the web server 203 to the client devices 205, 207 as response messages to corresponding requests from the client devices 205, 207 or the instances of the input module 311, 313 to the web server 203 in which the client -Devices 205, 207 or the instances of the input module 311, 313 inquire whether current versions of the program code are available. After writing the second version in the program file in the change writing step 127, analogous to the embodiment in FIG Transfer control 201 and can be executed in execution step 115 by the control.
Fig. 4 zeigt ein weiteres Flussdiagramm des Verfahrens 100 zum Erstellen und Ausführen eines Steuerprogramms zum Steuern eines Automatisierungssystems 200 gemäß einer weiteren Ausführungsform. FIG. 4 shows a further flow diagram of the method 100 for creating and executing a control program for controlling an automation system 200 according to a further embodiment.
Die Ausführungsform in Fig. 4 basiert auf der Ausführungsform in Fig. 3 und umfasst alle dort beschriebenen Verfahrensschritte. Sofern diese in der Ausführungsform in Fig. 4 un verändert bleiben, wird von einer erneuten detaillierten Beschreibung abgesehen. The embodiment in FIG. 4 is based on the embodiment in FIG. 3 and comprises all the method steps described there. Insofar as these remain unchanged in the embodiment in FIG. 4, a renewed detailed description is dispensed with.
Abweichend zu der Ausführungsform in Fig. 3 können in der Ausführungsform in Fig. 4 im Änderungsübertragungsschritt 125 neben den Änderungen, die an der ersten Version des Programmcodes vorgenommen wurden, zusätzlich die erste Version beziehungsweise eine Information bezüglich der ersten Version des Programmcodes, beispielsweise eine Versionsnummer, an den Webserver 203 übertragen werden. In contrast to the embodiment in FIG. 3, in the embodiment in FIG. 4, in the change transfer step 125, in addition to the changes made to the first version of the program code, the first version or information relating to the first version of the program code, for example a version number , are transmitted to the web server 203.
Darauf folgend kann in einem Vergleichsschritt 133 die in dem Änderungsübertragungs schritt 125 übertragene erste Version beziehungsweise die Information bezüglich der ers ten Version des Programmcodes, auf Basis derer die zweite Version des Programmcodes durch die Vornahme der entsprechenden Änderungen erstellt wurde, mit der Version ver glichen werden, die in die Programmdatei geschrieben ist und in der Arbeitsumgebung 209 auf dem Webserver 203 gespeichert ist. Beispielsweise können die Versionsnum mern der ersten Version und der in die Programmdatei geschriebenen Version des Pro grammcodes verglichen werden. Subsequently, in a comparison step 133, the first version transmitted in the change transmission step 125 or the information relating to the first version of the program code, on the basis of which the second version of the program code was created by making the corresponding changes, can be compared with the version which is written in the program file and stored in the working environment 209 on the web server 203. For example, the version numbers of the first version and the version of the program code written in the program file can be compared.
Wird im Vergleichsschritt 133 erkannt, dass die in die Programmdatei geschriebene Ver sion des Programmcodes mit der im ersten Änderungsübertragungsschritt 125 übertrage nen Version des Programmcodes übereinstimmt, beispielsweise bei übereinstimmenden Versionsnummern, können die im ersten Änderungsübertragungsschritt 125 übertragenen Änderungen im Änderungsschreibschritt 127 in die Programmdatei geschrieben bzw. in die jeweilige Version des Programmcodes eingepflegt werden. Wird im Vergleichsschritt 133 hingegen erkannt, dass keine Übereinstimmung zwischen der Version des Programmcodes der Programmdatei und der im ersten Änderungsüber tragungsschritt 125 übertragenen Version des Programmcodes besteht, beispielsweise durch eine fehlende Übereinstimmung der Versionsnummern, so wird in einem Fehlermel dungsschritt 135 ein Synchronisationsfehler ermittelt. Der Synchronisationsfehler besagt, dass während der Bearbeitung der ersten Version des Programmcodes durch den weite ren Nutzer in der weiteren Instanz des Eingabemoduls 313 die in der Programmdatei ge speicherte Version des Programmcodes aktualisiert und somit verändert wurde. Dies kann Vorkommen, wenn mehrere Nutzer zeitgleich Änderungen am Programmcode vor nehmen und diese in der Programmdatei gespeichert werden. Durch die Ermittlung des Synchronisationsfehlers im Fehlerermittlungsschritt 135 kann somit vermieden werden, dass verschiedene Nutzer auf unterschiedlichen Versionen des Programmcodes arbeiten und diese unabhängig voneinander modifizieren. If it is recognized in the comparison step 133 that the version of the program code written in the program file corresponds to the version of the program code transmitted in the first change transmission step 125, for example if the version numbers match, the changes transmitted in the first change transmission step 125 can be written or written to the program file in the change writing step 127 . be entered into the respective version of the program code. If, on the other hand, it is recognized in comparison step 133 that there is no correspondence between the version of the program code in the program file and the version of the program code transmitted in the first change transfer step 125, for example due to a lack of correspondence between the version numbers, a synchronization error is determined in an error message step 135. The synchronization error means that while the first version of the program code was being processed by the further user in the further instance of the input module 313, the version of the program code stored in the program file was updated and thus changed. This can occur if several users make changes to the program code at the same time and these are saved in the program file. By determining the synchronization error in error determination step 135, it can thus be avoided that different users work on different versions of the program code and modify them independently of one another.
Nach Ermittlung des Synchronisationsfehlers kann in einem Versionsübertragungsschritt 137 die in die Programmdatei geschriebene Version vom Webserver 203 an die weitere Instanz des Eingabemoduls 313 übermittelt werden. After the synchronization error has been determined, the version written in the program file can be transmitted from the web server 203 to the further instance of the input module 313 in a version transmission step 137.
In einem Versionsanzeigeschritt 139 kann diese übertragene Version des Programm codes, die zum Zeitpunkt der Übertragung in die Programmdatei geschrieben ist, in der weiteren Instanz des Eingabemoduls 313 auf dem weiteren Client-Gerät 207 dem weite ren Nutzer angezeigt werden. Hierdurch kann dem weiteren Nutzer gezeigt werden, dass während der weitere Nutzer Änderungen an der ersten Version des Programmcodes vor genommen hat, um eine zweite Version des Programmcodes zu erstellen, diese erste Version des Programmcodes bereits durch einen anderen Nutzer durch Hinzufügen weite rer Änderungen modifiziert wurde. Durch das Anzeigen der Version des Programmcodes der Programmdatei im Versionsanzeigeschritt 139 kann dem weiteren Nutzer somit die derzeitige Version des Programmcodes inklusive der darin durch den anderen Nutzer vor genommenen Änderungen angezeigt werden. In a version display step 139, this transmitted version of the program code, which is written in the program file at the time of transmission, can be displayed to the further user in the further instance of the input module 313 on the further client device 207. This allows the further user to be shown that while the further user has made changes to the first version of the program code in order to create a second version of the program code, this first version of the program code has already been modified by another user by adding further changes . By displaying the version of the program code of the program file in the version display step 139, the current version of the program code including the changes made therein by the other user can be displayed to the further user.
Auf Basis der im Versionsanzeigeschritt 139 angezeigten Version des Programmcodes kann der weitere Nutzer durch entsprechende Eingaben in die weitere Instanz des Einga bemoduls 313 im Änderungserstellungsschritt 123 weitere Änderungen vornehmen und eine weitere Version des Programmcodes erstellen. Hierdurch wird eine Synchronisation des zu bearbeitenden Programmcodes für verschiedene Nutzer ermöglicht, sodass ge- währleistet ist, dass die verschiedenen Nutzer zeitgleich eine identische Version des Pro grammcodes bearbeiten können. Darüber hinaus werden allen Nutzern, die zeitgleich den gleichen Programmcode bearbeiten, alle vorgenommenen Änderungen angezeigt. On the basis of the version of the program code displayed in the version display step 139, the further user can make further changes by making appropriate entries in the further instance of the input module 313 in the change creation step 123 and create a further version of the program code. This enables the program code to be processed to be synchronized for different users, so that This ensures that the various users can edit an identical version of the program code at the same time. In addition, all changes made are displayed to all users who are editing the same program code at the same time.
Fig. 5 zeigt ein zeitliches Ablaufdiagramm einer Datenkommunikation zwischen dem Webserver 201 und den Client-Geräten 205, 207 des Automatisierungssystems 200 in Fig. 1, gemäß einer Ausführungsform. FIG. 5 shows a time flow diagram of a data communication between the web server 201 and the client devices 205, 207 of the automation system 200 in FIG. 1, according to an embodiment.
Die Figuren 5 und 6 zeigen jeweils einen zeitlichen Ablauf des zur Fig. 4 beschriebenen Synchronisationsprozesses der durch mehrere Nutzer bearbeiteten Versionen des zu er stellenden Programmcodes. FIGS. 5 and 6 each show a time sequence of the synchronization process described for FIG. 4 of the versions of the program code to be created that have been edited by several users.
In Fig. 5 und 6 werden jeweils in den rechten und linken Spalten die lokalen Zustände der in den jeweiligen Instanzen des Eingabemoduls 311, 313 der beiden Client-Geräte 205, 207 angezeigten Versionen des Programmcodes dargestellt. Die mittlere Spalte stellt ei nen zeitlichen Ablauf des Zustands des Webservers 203 dar und beschreibt den zeitlichen Ablauf der in der Programmdatei gespeicherten Versionen des Programmcodes. In FIGS. 5 and 6, the local states of the versions of the program code displayed in the respective instances of the input module 311, 313 of the two client devices 205, 207 are shown in the right and left columns. The middle column represents a chronological sequence of the state of the web server 203 and describes the chronological sequence of the versions of the program code stored in the program file.
In Fig. 5 bearbeitet ein erster Nutzer am Client-Gerät 205 unter Verwendung der im Webbrowser 206 ausgeführten Instanz des Eingabemoduls 311 zunächst den zu erstel lenden Programmcode und erstellt eine erste Version des Programmcodes V1 des zu er stellenden Programmcodes. In Fig. 5, a first user on the client device 205 using the instance of the input module 311 executed in the web browser 206 initially processes the program code to be created and creates a first version of the program code V1 of the program code to be created.
Nach Erstellen der ersten Version des Programmcodes V1 durch den ersten Nutzer in der Instanz des Eingabemoduls 311 wird die erste Version des Programmcodes V1 zu einem ersten Zeitpunkt T1 im Programmcodeübertragungsschritt 107 an den Webserver 203 übertragen. Im Webserver 203 wird die übertragene erste Version des Programmcodes V1 im Schreibschritt 109 in die Programmdatei der Arbeitsumgebung 209 geschrieben. Der lokale Zustand des Webservers 203 ist somit durch die in die Programmdatei ge schriebene erste Version des Programmcodes V1 definiert. Im Programmcodeübertra gungsschritt 121 überträgt der Webserver 203 die in die Programmdatei geschriebene erste Version des Programmcodes V1 an den weiteren Nutzer des weiteren Client-Geräts 207. After the first version of the program code V1 has been created by the first user in the instance of the input module 311, the first version of the program code V1 is transmitted to the web server 203 at a first point in time T1 in the program code transmission step 107. In the web server 203, the transmitted first version of the program code V1 is written in the write step 109 into the program file of the working environment 209. The local state of the web server 203 is thus defined by the first version of the program code V1 written in the program file. In the program code transmission step 121, the web server 203 transmits the first version of the program code V1 written in the program file to the further user of the further client device 207.
Der weitere Nutzer bearbeitet die erste Version des Programmcodes V1 und erstellt eine zweite Version des Programmcodes V2 in der im weiteren Webbrowser 208 ausgeführten weiteren Instanz des Eingabemoduls 313. Zu einem zweiten Zeitpunkt T2 überträgt die weitere Instanz des Eingabemoduls 313 die erstellte zweite Version des Programmcodes V2 im Änderungsübertragungsschritt 125 an den Webserver 203. Im Änderungsübertra gungsschritt 125 wird zusätzlich zu den vorgenommenen Änderungen die Versionsnum mer der ersten Version des Programmcodes VN1 übertragen. The further user edits the first version of the program code V1 and creates a second version of the program code V2 in the further instance of the input module 313 executed in the further web browser 208. At a second point in time T2 transmits the Another instance of the input module 313 creates the second version of the program code V2 in the change transfer step 125 to the web server 203. In the change transfer step 125, the version number of the first version of the program code VN1 is transferred in addition to the changes made.
Darauffolgend wird im Vergleichsschritt 133 die übertragene Versionsnummer der ersten Version des Programmcodes VN1 mit der Versionsnummer der in die Programmdatei ge schriebene Version des Programmcodes verglichen. In dem in Fig. 5 gezeigten Beispiel entspricht zum Zeitpunkt des Empfangens der übertragenen Änderungen durch den Webserver 203 die übertragene Versionsnummer der ersten Version des Programmcodes VN1 der Versionsnummer der in die Programmdatei geschriebenen Version des Pro grammcodes. Nach Durchführung des Vergleichsschritts 133 werden somit die Änderun gen der zweiten Version des Programmcodes V2 in die Programmdatei geschrieben, so- dass der lokale Zustand des Webservers 203 die in die Programmdatei geschriebene zweite Version des Programmcodes umfasst ist. Subsequently, in comparison step 133, the transmitted version number of the first version of the program code VN1 is compared with the version number of the version of the program code written in the program file. In the example shown in FIG. 5, at the time of the receipt of the transmitted changes by the web server 203, the transmitted version number of the first version of the program code VN1 corresponds to the version number of the version of the program code written in the program file. After the comparison step 133 has been carried out, the changes to the second version of the program code V2 are thus written into the program file, so that the local state of the web server 203 includes the second version of the program code written into the program file.
Darauffolgend wird die zweite Version des Programmcodes V2 bzw. die vorgenommenen Änderungen, vom Webserver 203 an das erste Client-Gerät 205 bzw. die im Webbrowser 206 ausgeführte Instanz des Eingabemoduls 311 übertragen. The second version of the program code V2 or the changes made are then transmitted from the web server 203 to the first client device 205 or the instance of the input module 311 executed in the web browser 206.
Im Änderungsanzeigeschritt 131 werden die übertragenen Änderungen der zweiten Ver sion des Programmcodes in der Instanz des Eingabemoduls 311 angezeigt, sodass zu diesem Zeitpunkt der lokale Zustand des Client-Geräts 205 durch die in der Instanz des Eingabemoduls 311 angezeigten zweiten Version des Programmcodes V2 definiert ist. In the change display step 131, the transmitted changes of the second version of the program code are displayed in the instance of the input module 311, so that at this point in time the local state of the client device 205 is defined by the second version of the program code V2 displayed in the instance of the input module 311.
Darauffolgend modifiziert der Nutzer des Client-Geräts 205 die zweite Version des Pro grammcodes V2 durch das Vornehmen von Änderungen und erstellt eine dritte Version des Programmcodes V3 im Änderungserstellungsschritt 123. Der lokale Zustand des Cli ent-Geräts 205 ist zu diesem Zeitpunkt somit durch die in der Instanz des Eingabemoduls 311 angezeigten dritten Version des Programmcodes V3 definiert. The user of the client device 205 then modifies the second version of the program code V2 by making changes and creates a third version of the program code V3 in the change creation step 123. The local state of the client device 205 at this point in time is thus determined by the in the instance of the input module 311 displayed third version of the program code V3 defined.
Zu einem dritten Zeitpunkt T3 überträgt die Instanz des Eingabemoduls 311 des Client- Geräts 205 die dritte Version des Programmcodes V3, insbesondere die Änderungen, die an der zweiten Version des Programmcodes V2 vorgenommen wurden, inklusive der Ver sionsnummer der zweiten Version des Programmcodes VN2, die als Basis der dritten Ver sion des Programmcodes V3 diente, an den Webserver 203. Dieser führt wiederum den Vergleichsschritt 133 aus und vergleicht die übertragene Versionsnummer der zweiten Version des Programmcodes VN2 mit der Versionsnummer der in die Programmdatei ge schriebenen Versionen des Programmcodes. At a third point in time T3, the instance of the input module 311 of the client device 205 transmits the third version of the program code V3, in particular the changes that were made to the second version of the program code V2, including the version number of the second version of the program code VN2, which served as the basis for the third version of the program code V3, to the web server 203. This in turn carries out the comparison step 133 and compares the transmitted version number of the second Version of the program code VN2 with the version number of the versions of the program code written in the program file.
In dem in Fig. 5 dargestellten Beispiel entspricht die übertragene Versionsnummer zweite Version des Programmcodes VN2 der Versionsnummer der in die Programmdatei ge schriebenen Version des Programmcodes, sodass die Änderungen übernommen werden und die dritte Version des Programmcodes V3 im Änderungsschreibschritt 127 in die Pro grammdatei geschrieben wird. Der lokale Zustand des Webservers 203 ist somit durch die in die Programmdatei geschriebene dritte Version des Programmcodes V3 definiert. In the example shown in Fig. 5, the transferred version number of the second version of the program code VN2 corresponds to the version number of the version of the program code written in the program file, so that the changes are adopted and the third version of the program code V3 is written in the change writing step 127 in the program file . The local state of the web server 203 is thus defined by the third version of the program code V3 written in the program file.
Darauffolgend überträgt der Webserver 203 die dritte Version des Programmcodes V3 an die weitere Instanz des Eingabemoduls 313 des weiteren Client-Geräts 207. Im Ände rungsanzeigeschritt 131 zeigt die weitere Instanz des Eingabemoduls 313 im Folgenden die dritte Version des Programmcodes V3 an, sodass der lokale Zustand des weiteren Cli ent-Geräts 207, nachdem dieser auf die dritte Version geändert wurde, durch die ange zeigte dritte Version des Programmcodes V3 definiert ist. The web server 203 then transmits the third version of the program code V3 to the further instance of the input module 313 of the further client device 207. In the change display step 131, the further instance of the input module 313 shows the third version of the program code V3 so that the local state of the further client device 207, after this has been changed to the third version, is defined by the displayed third version of the program code V3.
Fig. 6 zeigt zeitliches Ablaufdiagramm einer Datenkommunikation zwischen dem Webser ver 201 und den Client-Geräten 205, 207 des Automatisierungssystems 200 in Fig. 1, ge mäß einer Ausführungsform. Fig. 6 shows a timing diagram of a data communication between the web server ver 201 and the client devices 205, 207 of the automation system 200 in FIG. 1, according to one embodiment.
In Fig. 6 ist ein weiteres Beispiel des Synchronisationsprozesses dargestellt. Abweichend zu Fig. 5 tritt in dem Beispiel in Fig. 6 ein Synchronisationsfehler auf. Another example of the synchronization process is shown in FIG. In contrast to FIG. 5, a synchronization error occurs in the example in FIG. 6.
Analog zu dem Beispiel in Fig. 5 bearbeitet der erste Nutzer in der Instanz des Eingabe moduls 311 zunächst den Programmcode und erstellt eine erste Version des Programm codes V1. Analogously to the example in FIG. 5, the first user first processes the program code in the instance of the input module 311 and creates a first version of the program code V1.
Zum Zeitpunkt T 1 wird diese an den Server 203 übertragen, der die erste Version des Programmcodes V1 in die Programmdatei schreibt und an den weiteren Nutzer bzw. die weitere Instanz des Eingabemoduls 313 des weiteren Client-Geräts überträgt. At time T 1, this is transmitted to the server 203, which writes the first version of the program code V1 in the program file and transmits it to the further user or the further instance of the input module 313 of the further client device.
Die weitere Instanz des Eingabemoduls 313 zeigt die erste Version des Programmcodes V1 an und der weitere Nutzer des weiteren Client-Geräts 207 bearbeitet die erste Version des Programmcodes V1 und erstellt eine zweite Version des Programmcodes V2. Zum Zeitpunkt T2 werden die Änderungen der zweiten Version des Programmcodes V2 inklusive der Versionsnummer der ersten Version des Programmcodes VN1 an den Webserver 203 übertragen. Nach Durchführung des Vergleichsschritts 133 schreibt der Programmserver 203 die zweite Version des Programmcodes V2 in die Programmdatei. The further instance of the input module 313 displays the first version of the program code V1 and the further user of the further client device 207 processes the first version of the program code V1 and creates a second version of the program code V2. At time T2, the changes to the second version of the program code V2 including the version number of the first version of the program code VN1 are transmitted to the web server 203. After the comparison step 133 has been carried out, the program server 203 writes the second version of the program code V2 into the program file.
Abweichend zu dem Beispiel in Fig. 5 bearbeitet in dem Beispiel in Fig. 6 der erste Nutzer des Client-Geräts 205 zeitgleich zu der Bearbeitung der ersten Version des Programm codes V1 durch den zweiten Nutzer die erste Version des Programmcodes V1 , die zu die sem Zeitpunkt den lokalen Zustand des Client-Geräts 205 definiert und erstellt eine dritte Version des Programmcodes V3. In contrast to the example in FIG. 5, in the example in FIG. 6, the first user of the client device 205 edits the first version of the program code V1 related to this at the same time as the second user edits the first version of the program code V1 Time defines the local state of the client device 205 and creates a third version of the program code V3.
Zu einem dritten Zeitpunkt T3 überträgt die Instanz des Eingabemoduls 311 die dritte Ver sion des Programmcodes V3 inklusive der Versionsnummer der ersten Version des Pro grammcodes VN1 , auf der die dritte Version des Programmcodes V3 basiert, an den Webserver 203. At a third point in time T3, the instance of the input module 311 transmits the third version of the program code V3 including the version number of the first version of the program code VN1, on which the third version of the program code V3 is based, to the web server 203.
Im Vergleichsschritt 133 vergleicht der Webserver 203 die übertragene Versionsnummer der ersten Version des Programmcodes VN1 mit der Versionsnummer der in die Pro grammdatei geschriebenen Version des Programmcodes. Da zu diesem Zeitpunkt die Version der Programmdatei und somit der lokale Zustand des Webservers 203 durch die zweite Version des Programmcodes V2 definiert und somit die übertragene Versionsnum mer der ersten Version des Programmcodes VN1 nicht mit Versionsnummer der Version der Programmdatei übereinstimmt, die der Versionsnummer der zweiten Version des Pro grammcodes VN2 entspricht, wird im Fehlerermittlungsschritt 135 ein Synchronisations fehler ermittelt. In the comparison step 133, the web server 203 compares the transmitted version number of the first version of the program code VN1 with the version number of the version of the program code written in the program file. Since at this point in time the version of the program file and thus the local state of the web server 203 is defined by the second version of the program code V2 and thus the transferred version number of the first version of the program code VN1 does not match the version number of the version of the program file that corresponds to the version number of the second Version of the program code VN2 corresponds, a synchronization error is determined in error determination step 135.
Darauffolgend wird die übertragene dritte Version des Programmcodes nicht in die Pro grammdatei geschrieben. Stattdessen wird die zu diesem Zeitpunkt in die Programmdatei geschriebene zweite Version des Programmcodes V2 vom Webserver 203 an die Instanz des Eingabemoduls 311 des Client-Geräts 205 des ersten Nutzers übertragen. Subsequently, the transmitted third version of the program code is not written to the program file. Instead, the second version of the program code V2 written in the program file at this point in time is transmitted from the web server 203 to the instance of the input module 311 of the client device 205 of the first user.
Im Änderungsanzeigeschritt 131 wird darauffolgend die zweite Version des Programm codes V2 in der Instanz des Eingabemoduls 311 des Client-Geräts 205 angezeigt. Dem Nutzer des Client-Geräts 205 sind somit die vom weiteren Nutzer des weiteren Client-Ge räts 207 zwischenzeitlich erstellten Änderungen der zweiten Version des Programmcodes V2 dargestellt, sodass eine Synchronisation der jeweils verwendeten Versionen des Pro grammcodes beziehungsweise der Zustände auf den Client-Geräten 205, 207 der unter schiedlichen Nutzer wiederhergestellt ist. In the change display step 131, the second version of the program code V2 is then displayed in the instance of the input module 311 of the client device 205. The changes to the second version of the program code made in the meantime by the further user of the further client device 207 are therefore available to the user of the client device 205 V2 shown, so that a synchronization of the versions of the program code used in each case or the states on the client devices 205, 207 of the different users is restored.
Fig. 7 zeigt ein weiteres Flussdiagramm des Verfahrens 100 zum Erstellen und Ausführen eines Steuerprogramms zum Steuern eines Automatisierungssystems 200 gemäß einer weiteren Ausführungsform. FIG. 7 shows a further flow diagram of the method 100 for creating and executing a control program for controlling an automation system 200 according to a further embodiment.
Die Ausführungsform des Verfahrens 100 in Fig. 7 basiert auf der Ausführungsform in Fig. 2 und umfasst alle dort beschriebenen Verfahrensschritte. Sofern diese in der Ausfüh rungsform in Fig. 7 unverändert bleiben, wird von einer erneuten detaillierten Beschrei bung abgesehen. The embodiment of the method 100 in FIG. 7 is based on the embodiment in FIG. 2 and comprises all the method steps described there. If these remain unchanged in the embodiment in FIG. 7, a further detailed description is not required.
Abweichend zu der Ausführungsform in Fig. 2 umfasst in der Ausführungsform in Fig. 7 der Arbeitsumgebungsverbindungsschritt 103 einen Arbeitsumgebungsgenerierungs schritt 173. Im Arbeitsumgebungsgenerierungsschritt 173 kann der mit dem Webserver 203 verbundene Nutzer über den auf dem Client-Gerät 205 ausgeführten Webbrowser 206 eine Arbeitsumgebung 209 auf dem Webserver 203 generieren. In contrast to the embodiment in FIG. 2, in the embodiment in FIG. 7, the work environment connection step 103 comprises a work environment generation step 173. In the work environment generation step 173, the user connected to the web server 203 can open a work environment 209 via the web browser 206 running on the client device 205 the web server 203 generate.
Der Nutzer kann hierzu ein neues Programmierprojekt erzeugen und dieses in der neu er stellten Arbeitsumgebung 209 anordnen. Die erstellte Arbeitsumgebung 209 kann ferner mit einem passwortgeschützten Zugangsprozess versehen werden, mittels dem gesichert werden kann, dass ausschließlich autorisierte Nutzer Zugang zu der Arbeitsumgebung 209 und dem darin angelegten Programmprojekt erhalten. For this purpose, the user can generate a new programming project and arrange this in the newly created work environment 209. The working environment 209 created can also be provided with a password-protected access process, by means of which it can be ensured that only authorized users have access to the working environment 209 and the program project created therein.
Darauffolgend kann in einem Einrichtungsschritt 175 in der neu generierten Arbeitsumge bung 209 das Übersetzungsmodul 301 der webbasierten Entwicklungsumgebung 300 ein gerichtet werden. Hierdurch ist das in der neu generierten Arbeitsumgebung angelegte Programmierprojekt über die webbasierte Entwicklungsumgebung 300 ausführbar. Subsequently, in a setting up step 175, the translation module 301 of the web-based development environment 300 can be set up in the newly generated work environment 209. As a result, the programming project created in the newly generated working environment can be executed via the web-based development environment 300.
Alternativ kann eine Instanz des auf dem Webserver 203 eingerichteten Übersetzungsmo duls 301 erzeugt werden, die in der Arbeitsumgebung 209 ausführbar ist. Für den Fall, dass auf dem Webserver 203 eine Mehrzahl von Arbeitsumgebungen 209 eingerichtet ist, kann für jede Arbeitsumgebung 209 eine individuelle Instanz des Übersetzungsmoduls 301 erzeugt werden, die jeweils ausschließlich in der jeweiligen Arbeitsumgebung 209 ausführbar ist. Die Mehrzahl von Instanzen des Übersetzungsmoduls 301 können zeit gleich ausgeführt werden. So können auf dem Webserver 203 zeitgleich verschiedenen Programmierprojekte bearbeitet werden. Alternatively, an instance of the translation module 301 set up on the web server 203 can be generated, which can be executed in the working environment 209. In the event that a plurality of work environments 209 are set up on the web server 203, an individual instance of the translation module 301 can be generated for each work environment 209, each of which is exclusively in the respective work environment 209 is executable. The plurality of instances of the translation module 301 can be executed at the same time. Different programming projects can thus be processed on the web server 203 at the same time.
Nach erfolgreicher Verbindung mit der Arbeitsumgebung im Arbeitsumgebungsverbin dungsschritt 103 kann der Nutzer über die im Webbrowser 206 ausgeführte Instanz des Eingabemoduls 311 den gewünschten Programmcode im Codeerstellungsschritt 105 er stellen. After successful connection to the work environment in work environment connection step 103, the user can create the desired program code in code generation step 105 via the instance of input module 311 executed in web browser 206.
Abweichend zu der Ausführungsform in Fig. 2 ermöglicht die Ausführungsform in Fig. 7 die Durchführung globaler Analysen und lokaler Analysen des erstellten Programmcodes, die simultan oder zeitversetzt durchgeführt werden können. In contrast to the embodiment in FIG. 2, the embodiment in FIG. 7 enables global analyzes and local analyzes of the created program code to be carried out, which can be carried out simultaneously or at different times.
Hierzu umfasst das Übersetzungsmodul 301 der webbasierten Entwicklungsumgebung 300 ein Analysemodul, das eingerichtet ist, semantische und syntaktische Analysen des erstellten Programmcodes durchzuführen. Die durchgeführten semantischen und syntakti schen Analysen basieren hierbei auf der Semantik und Grammatik der jeweils zum Erstel len des Programmcodes verwendeten Programmiersprache. Für den Fall, dass für jede Arbeitsumgebung 209 des Webservers 203 eine Instanz des Übersetzungsmoduls 301 generiert ist, umfasst jede dieser Instanzen eine Instanz des Analysemoduls, die inner halb des jeweiligen Instanz des Übersetzungsmoduls 301 innerhalb der jeweiligen Ar beitsumgebung 209 ausführbar ist. For this purpose, the translation module 301 of the web-based development environment 300 comprises an analysis module which is set up to carry out semantic and syntactic analyzes of the program code created. The semantic and syntactic analyzes carried out are based on the semantics and grammar of the programming language used to create the program code. In the event that an instance of the translation module 301 is generated for each work environment 209 of the web server 203, each of these instances comprises an instance of the analysis module that can be executed within the respective instance of the translation module 301 within the respective work environment 209.
Nach Übertragung des erstellten Programmcodes im Programmcodeübertragungsschritt 107 von der Instanz des Eingabemoduls 300 an den Webserver 203 und dem Schreiben des übertragenen Programmcodes in die Programmdatei im Schreibschritt 109 kann so mit in einem globalen Analyseschritt 141 eine globale Analyse des übertragenen Pro grammcodes vom Analysemodul durchgeführt werden. Eine globale Analyse berücksich tigt hierbei den vollständigen erstellten Programmcode und umfasst insbesondere eine le xikalische Analyse des Programmcodes wie auch eine Analyse der im Programmcode verwendeten Semantik und Grammatik. After transferring the generated program code in program code transfer step 107 from the instance of input module 300 to web server 203 and writing the transferred program code into the program file in write step 109, a global analysis of the transferred program code from the analysis module can be carried out in a global analysis step 141. A global analysis takes into account the complete program code created and includes, in particular, a le xical analysis of the program code as well as an analysis of the semantics and grammar used in the program code.
Hierzu kann der globale Analyseschritt 141 einen Schnappschussschritt 147 umfassen, in dem eine Analyseversion des erstellten Programmcodes generiert werden kann. Hierzu kann eine Kopie des Programmcodes erstellt werden. Die globale Analyse wird im Fol genden auf Basis der erstellten Analyseversion des Programmcodes durchgeführt. Da die globale Analyse den vollständigen erstellten Programmcode umfasst, kann diese zeitauf wändig sein. Indem eine für die globale Analyse zu verwendende Analyseversion des Pro grammcodes erstellt wird, die von weiteren Änderungen des in die Programmdatei ge schriebenen Programmcodes unberührt bleibt, kann gewährleistet werden, dass zeitgleich zur Durchführung der globalen Analyse weitere Änderungen am Programmcode durch den Nutzer durchgeführt werden können, ohne dass der Programmierprozess des Nut zers durch die Durchführung der globalen Analyse blockiert bzw. die Ergebnisse der glo balen Analyse durch simultane Änderungen des Programmcodes korrumpiert werden. For this purpose, the global analysis step 141 can include a snapshot step 147 in which an analysis version of the program code created can be generated. A copy of the program code can be made for this purpose. The global analysis is carried out in the following on the basis of the created analysis version of the program code. Since the global analysis includes the complete generated program code, this can be time consuming. By creating an analysis version of the program code to be used for the global analysis, which remains unaffected by further changes to the program code written in the program file, it can be ensured that the user can make further changes to the program code at the same time as the global analysis is carried out without the user's programming process being blocked by performing the global analysis or the results of the global analysis being corrupted by simultaneous changes to the program code.
Nach Erstellen der Analyseversion des Programmcodes und Durchführen der globalen Analyse auf Basis der Analyseversion des Programmcodes können die generierten Er gebnisse der globalen Analyse in einem globalen Analyseergebnisübertragungsschritt 143 vom Webserver 203 an die im Webbrowser 206 des Client-Geräts 205 ausgeführte In stanz des Eingabemoduls 311 übertragen werden. After creating the analysis version of the program code and performing the global analysis based on the analysis version of the program code, the generated results of the global analysis can be transferred in a global analysis results transfer step 143 from web server 203 to the instance of input module 311 executed in web browser 206 of client device 205 will.
In einem globalen Analyseergebnisanzeigeschritt 145 können die Ergebnisse der globalen Analyse in der im Webbrowser 206 ausgeführten Instanz des Eingabemoduls 311 ange zeigt werden. In a global analysis result display step 145, the results of the global analysis can be displayed in the instance of the input module 311 executed in the web browser 206.
Die Ergebnisse der globalen Analyse können hierbei Fehlermeldungen von syntaktischen bzw. semantischen Fehlern im erstellten Programmcode umfassen. Ferner können die Er gebnisse der globalen Analyse die im Programmcode verwendeten Variablen, Funktio nen, Datentypen, Namensräume oder andere Objekte der verwendeten Programmierspra che umfassen, die in entsprechenden Listen bzw. Anzeigefenstern in der Instanz des Ein gabemoduls 311 angezeigt werden können. The results of the global analysis can include error messages from syntactic or semantic errors in the program code created. Furthermore, the results of the global analysis can include the variables, functions, data types, namespaces or other objects of the programming language used in the program code, which can be displayed in corresponding lists or display windows in the instance of the input module 311.
Zeitgleich oder zeitversetzt zur globalen Analyse kann eine lokale Analyse des erstellten Programmcodes durchgeführt werden. Hierzu kann in einem Aktualisierungsschritt 149 eine aktuelle Version des Programmcodes erstellt werden. Insbesondere kann für jede durchgeführte Änderung eine aktuelle Version des Programmcodes erstellt werden, in der die durchgeführte Änderung erfasst ist. A local analysis of the generated program code can be carried out at the same time as or at a different time to the global analysis. For this purpose, a current version of the program code can be created in an update step 149. In particular, a current version of the program code can be created for each change made, in which the change made is recorded.
Im Unterschied zur globalen Analyse, in der primär die semantische und syntaktische Richtigkeit des erstellten Programmcodes bzw. die im Programmcode verwendeten Ob jekte überprüft bzw. identifiziert werden sollen, dient die lokale Analyse dazu, dem Nutzer Eingabehilfen wie beispielsweise eine Autovervollständigung bzw. das Einfärben von Codestellen bzw. das Hervorheben von relevanten Sonderzeichen oder Schlüsselwörtern des erstellten Programmcodes dient. Die lokale Analyse wird somit auf den aktuellen Ver sionen des Programmcodes durchgeführt, die jeweils nach Durchführung einer Änderung des Programmcodes erstellt werden. Darüber hinaus können über die globale Analyse Programmobjekte des Programmcodes identifiziert und zugreifbar gespeichert werden. Hierzu können beispielsweise entsprechende Datenbanken erzeugt werden. In contrast to the global analysis, in which primarily the semantic and syntactic correctness of the created program code or the objects used in the program code are to be checked or identified, the local analysis is used to provide the user with input aids such as auto-completion or the coloring of Codes or the highlighting of relevant special characters or keywords of the created program code is used. The local analysis is thus carried out on the current versions of the program code, which are each created after a change has been made to the program code. In addition, program objects of the program code can be identified and stored in an accessible manner via the global analysis. For this purpose, for example, appropriate databases can be created.
Hierzu kann im lokalen Analyseschritt 151 auf jeder erstellten aktuellen Version des Pro grammcodes eine lokale Analyse eines Teils des erstellten Programmcodes durchgeführt werden. Die lokale Analyse berücksichtigt lediglich Teile des Programmcodes, die bei spielsweise dazu benötigt werden, eine automatische Vervollständigung des geschriebe nen Programmcodes zu ermöglichen. Für jede erstellte aktuelle Version des Programm codes kann somit eine individuelle lokale Analyse im lokalen Analyseschritt 151 durchge führt werden. Nach Abschluss der lokalen Analyse können die ermittelten lokalen Analy seergebnisse in einem lokalen Analyseergebnisübertragungsschritt 153 an die Instanz des Eingabemoduls 311 übermittelt werden. For this purpose, in the local analysis step 151, a local analysis of part of the program code created can be carried out on each current version of the program code created. The local analysis only takes into account parts of the program code that are required, for example, to enable the written program code to be completed automatically. For each current version of the program code created, an individual local analysis can thus be carried out in the local analysis step 151. After the local analysis has been completed, the local analysis results determined can be transmitted to the instance of the input module 311 in a local analysis result transmission step 153.
In einem lokalen Analyseergebnisanzeigeschritt 155 werden die übertragenen lokalen Analyseergebnisse in der Instanz des Eingabemoduls 311 angezeigt. Diese können bei spielsweise durch eine Vervollständigung des geschriebenen Programmcodes bzw. eine grafische Hervorhebung von einzelnen relevanten Teilen des Programmcodes als Einga behilfe für den Nutzer angezeigt werden. In a local analysis result display step 155, the transmitted local analysis results are displayed in the instance of the input module 311. These can be displayed, for example, by completing the written program code or graphically highlighting individual relevant parts of the program code as an input aid for the user.
Im Programmcodeübertragungsschritt 107 kann jede durchgeführte Modifikation des er stellten Programmcodes in einer individuellen Nachricht an den Webserver 203 übermit telt werden. Somit kann im Aktualisierungsschritt 149 für jede übertragene Änderung eine aktuelle Version des Programmcodes erstellt werden und eine individuelle lokale Analyse im lokalen Analyseschritt 151 auf Basis dieser aktuellen Version des Programmcodes durchgeführt werden. In the program code transfer step 107, each modification made to the program code created can be transmitted to the web server 203 in an individual message. Thus, in the update step 149, a current version of the program code can be created for each transmitted change and an individual local analysis can be carried out in the local analysis step 151 on the basis of this current version of the program code.
Eine Änderung des erstellten Programmcodes kann hierbei aus dem Hinzufügen oder Lö schen eines einzelnen Zeichens des Programmcodes bestehen. A change in the created program code can consist of adding or deleting a single character of the program code.
Das Analysemodul des Übersetzungsmoduls kann ferner eine globale Analysekompo nente und eine lokale Analysekomponente umfassen. Die globale Analysekomponente kann hierbei eingerichtet sein, die globale Analyse durchzuführen, während die lokale Analysekomponente eingerichtet sein kann, die lokale Analyse durchzuführen. Durch die Durchführung der globalen Analyse durch die globale Analysekomponente und der loka len Analyse durch die lokale Analysekomponente können beide Analysen zeitgleich durchgeführt werden, ohne dass eine gegenseitige Beeinflussung stattfindet. The analysis module of the translation module can further comprise a global analysis component and a local analysis component. The global analysis component can be set up to carry out the global analysis, while the local analysis component can be set up to carry out the local analysis. Through the Carrying out the global analysis by the global analysis component and the local analysis by the local analysis component, both analyzes can be carried out at the same time without any mutual interference taking place.
Die Übertragung der globalen Analyseergebnisse im globalen Analyseergebnisübertra gungsschritt 143 kann als Antwort auf entsprechende Poll-Abfragen durch die Instanz des Eingabemoduls 311 an den Webserver 203 ausgebildet sein. Die Übertragung der lokalen Analyseergebnis im lokalen Analyseergebnisübertragungsschritt 153 können als Push- Nachrichten durch den Webserver 203 an die Instanz des Eingabemoduls 311 ausgebil det sein. The transmission of the global analysis results in the global analysis result transmission step 143 can be implemented as a response to corresponding poll queries by the instance of the input module 311 to the web server 203. The transmission of the local analysis results in the local analysis results transmission step 153 can be embodied as push messages by the web server 203 to the instance of the input module 311.
Alternativ kann der Webserver 203 mittels Push-Nachrichten den Clients beziehungs weise den Instanzen des Eingabemoduls 311 mitteilen, dass aktuelle Analyseergebnisse vorliegen. Mittels entsprechender Poll-Nachrichten können die Clients beziehungsweise Instanzen des Eingabemoduls 311 die aktuellen Analyseergebnisse vom Webserver 203 abfragen. Alternatively, the web server 203 can use push messages to inform the clients or the instances of the input module 311 that current analysis results are available. The clients or instances of the input module 311 can query the current analysis results from the web server 203 by means of corresponding poll messages.
Alternativ kann über entsprechende Poll-Nachrichten von den Clients an den Webserver 203 entsprechende lokale Analysen durch das lokale Analysemodul 309 angestoßen wer den. Das lokale Analysemodul 309 führt hierauf die lokalen Analysen durch und der Webserver 203 sendet die entsprechenden lokalen Analyseergebnisse an die Clients be ziehungsweise die Instanzen des Eingabemoduls 311, die die entsprechenden lokalen Analysen angefordert haben. Alternatively, corresponding local analyzes can be initiated by the local analysis module 309 via corresponding poll messages from the clients to the web server 203. The local analysis module 309 then carries out the local analyzes and the web server 203 sends the corresponding local analysis results to the clients or the instances of the input module 311 which have requested the corresponding local analyzes.
Die in der Ausführungsform in Fig. 7 beschriebene Durchführung der globalen Analyse und der lokalen Analyse kann analog auf die Erstellung von Änderungen des Programm codes im Änderungserstellungsschritt 123 durch weitere Nutzer gemäß den Ausführungs formen in Fig. 3 und Fig. 4 übertragen werden. Globale und lokale Analysen können somit für alle Nutzer durchgeführt werden, die an der Erstellung bzw. Änderung des Programm codes teilnehmen. The implementation of the global analysis and the local analysis described in the embodiment in FIG. 7 can be transferred analogously to the creation of changes to the program code in the change creation step 123 by other users in accordance with the execution forms in FIGS. 3 and 4. Global and local analyzes can thus be carried out for all users who participate in the creation or modification of the program code.
Nach Durchführung der globalen Analyse bzw. der lokalen Analyse kann der in die Pro grammdatei geschriebene Programmcode im Übersetzungsschritt 111 übersetzt werden. Vor der Übersetzung des Programmcodes im Übersetzungsschritt 111 können mehrere globale und lokale Analysen des erstellten Programmcodes durchgeführt werden. Insbe sondere können mehrere Änderungen bzw. Modifikationen der in die Programmdatei ge schriebenen Version des Programmcodes vorgenommen werden. In der Ausführungsform in Fig. 7 umfasst die Übersetzung im Übersetzungsschritt 111 ei nen ersten Teilübersetzungsschritt 157 und einen zweiten Teilübersetzungsschritt 159. Im ersten Teilübersetzungsschritt 157 kann der in der ersten Programmiersprache erstellte Programmcode in eine Hochsprache übersetzt werden. Die Hochsprache kann beispiels weise ein C++-Code sein. Alternativ kann die Hochsprache eine beliebige aus dem Stand der Technik bekannte textuelle Hochsprache sein. After the global analysis or the local analysis has been carried out, the program code written in the program file can be translated in translation step 111. Before the translation of the program code in translation step 111, several global and local analyzes of the generated program code can be carried out. In particular, several changes or modifications of the version of the program code written in the program file can be made. In the embodiment in FIG. 7, the translation in translation step 111 comprises a first partial translation step 157 and a second partial translation step 159. In the first partial translation step 157, the program code created in the first programming language can be translated into a high-level language. The high-level language can, for example, be a C ++ code. Alternatively, the high-level language can be any high-level text language known from the prior art.
Im zweiten Teilübersetzungsschritt 159 kann der in die Hochsprache übersetzte Pro grammcode in einen entsprechenden Binärcode übersetzt werden, der durch die Steue rung 201 des Automatisierungssystems 200 ausführbar ist. In the second partial translation step 159, the program code translated into the high-level language can be translated into a corresponding binary code that can be executed by the controller 201 of the automation system 200.
Zur Durchführung des ersten Teilübersetzungsschritts 157 und des zweiten Teilüberset zungsschritts 159 kann das Übersetzungsmodul eine Frontend-Komponente und eine Ba- ckend-Komponente umfassen. Die Frontend-Komponente kann hierbei eingerichtet sein, den Programmcode der ersten Programmiersprachen in einen entsprechenden Pro grammcode der Hochsprache zu übersetzen. Die Backend-Komponente kann eingerichtet sein, den erstellten Programmcode der Hochsprache in einen entsprechenden Binärcode zu übersetzen. To carry out the first partial translation step 157 and the second partial translation step 159, the translation module can comprise a front-end component and a back-end component. The front-end component can be set up to translate the program code of the first programming languages into a corresponding program code of the high-level language. The back-end component can be set up to translate the generated program code of the high-level language into a corresponding binary code.
Fig. 8 zeigt ein weiteres Flussdiagramm des Verfahrens 100 zum Erstellen und Ausführen eines Steuerprogramms zum Steuern eines Automatisierungssystems 200 gemäß einer weiteren Ausführungsform. 8 shows a further flow diagram of the method 100 for creating and executing a control program for controlling an automation system 200 according to a further embodiment.
Die Ausführungsform in Fig. 8 basiert auf der Ausführungsform in Fig. 2 und umfasst alle dort beschriebenen Verfahrensschritte. Die in der Ausführungsform in Fig. 8 unveränder ten Verfahrensschritte werden im Folgenden nicht erneut detailliert beschrieben werden. The embodiment in FIG. 8 is based on the embodiment in FIG. 2 and comprises all the method steps described there. The method steps unchanged in the embodiment in FIG. 8 will not be described again in detail below.
In der Ausführungsform in Fig. 8 kann nach dem Schreiben des erstellten Programm codes in die Programmdatei im Schreibschritt 109 in einem Debuggingschritt 161 ein De buggingprozess durchgeführt werden, in dem die Funktionsfähigkeit des erstellten Pro grammcodes getestet wird. In the embodiment in FIG. 8, after the program code created has been written into the program file in writing step 109, a debugging step 161 can be used to carry out a debugging process in which the functionality of the program code created is tested.
Hierzu umfasst der Debuggingschritt 161 einen Debuggingübersetzungsschritt 163, in dem der in die Programmdatei eingeschriebene Programmcode in einen entsprechenden Binärcode durch das Übersetzungsmodul übersetzt wird. Darauffolgend kann der im Debuggingübersetzungsschritt 163 generierte Binärcode an die Steuerung 201 des Automatisierungssystems in einen Debuggingübertragungsschritt 165 übertragen werden. For this purpose, the debugging step 161 comprises a debugging translation step 163 in which the program code written in the program file is translated into a corresponding binary code by the translation module. The binary code generated in the debugging translation step 163 can then be transmitted to the controller 201 of the automation system in a debugging transmission step 165.
Darauffolgend kann der an die Steuerung 201 übertragene Binärcode des erstellten Pro grammcodes in einem Debuggingausführungsschritt 167 ausgeführt werden. Während der Ausführung des Binärcodes des Steuerprogramms durch die Steuerung 201 können verschiedene Steuerungsparameter protokolliert werden, die eine Aussage bezüglich der Funktionsfähigkeit des Steuerprogramms zum Steuern des Automatisierungssystems 200 ermöglichen. The binary code of the created program code, which is transmitted to the controller 201, can then be executed in a debugging execution step 167. During the execution of the binary code of the control program by the controller 201, various control parameters can be logged, which enable a statement to be made regarding the functionality of the control program for controlling the automation system 200.
In einem folgenden Debugginginformationsübertragungsschritt 169 können die im Debug gingausführungsschritt 167 protokollierten Steuerungsparameter als Information an die im Webbrowser 206 ausgeführte Instanz des Eingabemoduls übertragen werden. Hierzu kann zunächst die Information von der das Steuerprogramm ausführenden Steuerung 201 an den Webserver 203 übertragen werden. Die übertragenen Informationen bzw. Steue rungsparameter können in der Instanz des Eingabemoduls 311 dem Nutzer angezeigt werden, sodass eine Überprüfung der Funktionsfähigkeit des erstellten Programmcodes ermöglicht ist. Darüber hinaus kann der Debuggingschritt 161 einen Breakpointsetzungs schritt 171 umfassen, in dem der erstellte Programmcode mit entsprechenden Breakpoints versehen werden kann, die ermöglichen, eine Ausführung des Programm codes im Debuggingausführungsschritt 167 an einer durch den gesetzten Breakpoints markierten Stelle des Programmcodes anzuhalten. In a subsequent debugging information transfer step 169, the control parameters logged in the debugging execution step 167 can be transferred as information to the instance of the input module executed in the web browser 206. For this purpose, the information can first be transmitted from the controller 201 executing the control program to the web server 203. The transmitted information or control parameters can be displayed to the user in the instance of the input module 311, so that the functionality of the created program code can be checked. In addition, the debugging step 161 can include a breakpoint setting step 171, in which the generated program code can be provided with corresponding breakpoints which enable execution of the program code to be stopped in the debugging execution step 167 at a point in the program code marked by the breakpoints set.
Der Debuggingschritt 161 kann durch den Nutzer durch eine entsprechende Eingabe in das Eingabemodul 303 initiiert werden. The debugging step 161 can be initiated by the user by making a corresponding entry in the input module 303.
Der Debuggingsausführungsschritt 167 kann durch die Steuerung 201 des Automatisie rungssystems durchgeführt werden. Alternativ kann auf dem Webserver 203 ein Simulati onsmodul installiert sein, das eingerichtet ist, den Debuggingausführungsschritt 167 aus zuführen und eine Steuerung des Automatisierungssystems 200 auf Basis des erstellten Programmcodes zu simulieren. The debugging execution step 167 can be performed by the controller 201 of the automation system. Alternatively, a simulation module can be installed on the web server 203 which is set up to carry out the debugging execution step 167 and to simulate a control of the automation system 200 on the basis of the created program code.
Der Debuggingvorgang im Debuggingschritt 161 kann gemäß einem aus dem üblichen Stand der Technik bekannten Debuggingprozess ausgeführt werden, bei dem die Funkti onsfähigkeit des erstellten Programmcodes überprüfbar ist. Das erfindungsgemäße Verfahren 100 kann auf eine beliebige Anzahl verschiedener Nut zer, die über unterschiedliche Client-Geräte mit dem Webserver 203 verbunden sind, an gewendet werden. Jeder der Nutzer ist über eine im Webbrowser des verwendeten Client- Geräts ausgeführte Instanz des Eingabemoduls in der Lage, einen Programmcode für ein Steuerprogramm für ein Automatisierungssystem zu erstellen. Über die Synchronisations funktionen kann gewährleistet werden, dass alle Nutzer, die zeitgleich einen gemeinsa men Programmcode erstellen bzw. bearbeiten oder Informationen darüber anzeigen, auf der identischen Version des Programmcodes arbeiten können, und die durch die jeweils anderen Nutzer vorgenommenen Änderungen am Programmcode angezeigt bekommen. Hierdurch ist eine direkte Zusammenarbeit ermöglicht, bei der im gegenseitigen Aus tausch gemeinsam ein Programmcode für ein Steuerprogramm eines Automatisierungs systems generiert werden kann. Die Rechenoperationen zum Erstellen des Programm codes bzw. zum Übersetzen des Programmcodes in einen Binärcode wie auch zum Durchführen der einzelnen Analysen oder eines Debuggingprozesses können hierbei über den Webserver 203 ausgeführt werden. The debugging process in debugging step 161 can be carried out in accordance with a debugging process known from the customary prior art, in which the functionality of the generated program code can be checked. The method 100 according to the invention can be applied to any number of different users who are connected to the web server 203 via different client devices. Each of the users is able to create a program code for a control program for an automation system via an instance of the input module executed in the web browser of the client device used. The synchronization functions ensure that all users who create or edit a common program code at the same time or who display information about it can work on the identical version of the program code and are shown the changes made to the program code by the other users. This enables direct cooperation in which a program code for a control program of an automation system can be generated jointly in mutual exchange. The arithmetic operations for creating the program code or for translating the program code into a binary code as well as for performing the individual analyzes or a debugging process can be carried out via the web server 203.
Gemäß einer Ausführungsform kann ein Client beziehungsweise ein weiterer Client ein beliebiges Anwendungsprogramm sein, das sich über die definierte Schnittstelle mit dem Server verbindet und Informationen vom Server bezieht und auf diesen überträgt. Ein Cli ent oder ein weiterer Client kann darüber hinaus eine andere Rolle als die einer Intelligent Development Environment IDE einnehmen. According to one embodiment, a client or a further client can be any application program that connects to the server via the defined interface and obtains information from the server and transmits it to it. A client or another client can also take on a different role than that of an Intelligent Development Environment IDE.
Fig. 9 zeigt eine weitere schematische Darstellung des Automatisierungssystems 200 in Fig. 1 gemäß einerweiteren Ausführungsform. FIG. 9 shows a further schematic illustration of the automation system 200 in FIG. 1 according to a further embodiment.
In der Ausführungsform in Fig. 9 umfasst das Automatisierungssystem 200 eine Steue rung 201 , die über einen Datenbus 213 mit einem Webserver 203 verbunden ist. Ferner ist ein Client-Gerät 205 über eine Internetverbindung 215 mit dem Webserver 203 verbun den. In the embodiment in FIG. 9, the automation system 200 comprises a controller 201 which is connected to a web server 203 via a data bus 213. Furthermore, a client device 205 is connected to the web server 203 via an internet connection 215.
Auf dem Webserver 203 sind drei verschiedene Arbeitsumgebungen 209 eingerichtet. In einer Arbeitsumgebung 209 ist eine Instanz der auf dem Webserver installierten webba sierten Entwicklungsumgebung 300 mit einem Übersetzungsmodul 303 eingerichtet. Das Übersetzungsmodul 303 umfasst ein Analysemodul 305. Das Analysemodul 305 umfasst ein globales Analysemodul 307 und ein lokales Analysemodul 309. Das Analysemodul 305 ist eingerichtet, eine Analyse des erstellten Programmcodes durchzuführen. Das glo- bale Analysemodul 307 ist eingerichtet, eine globale Analyse gemäß dem globalen Analy seschritt 141 durchzuführen. Das lokale Analysemodul 309 ist eingerichtet, eine lokale Analyse des erstellten Programmcodes gemäß dem lokalen Analyseschritt 151 durchzu führen. Three different work environments 209 are set up on the web server 203. An instance of the web-based development environment 300 installed on the web server with a translation module 303 is set up in a working environment 209. The translation module 303 comprises an analysis module 305. The analysis module 305 comprises a global analysis module 307 and a local analysis module 309. The analysis module 305 is set up to carry out an analysis of the generated program code. The global Bale analysis module 307 is set up to carry out a global analysis in accordance with global analysis step 141. The local analysis module 309 is set up to carry out a local analysis of the created program code in accordance with the local analysis step 151.
In der Ausführungsform in Fig. 9 ist in der Arbeitsumgebung 209 ferner ein Servicemodul 211 eingerichtet. Das Servicemodul 211 ist ausgebildet, rechenaufwändige Algorithmen zu übernehmen. Das Servicemodul 211 kann beispielsweise eingerichtet sein, Layoutal gorithmen durchzuführen, die bei der Programmierung einer grafischen Programmierspra che vorgenommen werden. Durch das Servicemodul 211 können somit rechenaufwändige Prozessschritte, die während des Programmierens des Programmcodes auftreten, auf den Webserver 203 ausgelagert werden, um Ressourcen des Client-Geräts 205 zu scho nen. In the embodiment in FIG. 9, a service module 211 is also set up in the working environment 209. The service module 211 is designed to take over computationally expensive algorithms. The service module 211 can be set up, for example, to carry out layout algorithms that are carried out when programming a graphic programming language. With the service module 211, computationally expensive process steps that occur during the programming of the program code can be outsourced to the web server 203 in order to conserve resources of the client device 205.
Darüber hinaus sind in der Arbeitsumgebung 209 zwei unabhängige Programmierprojekte 219 eingerichtet. Einem Programmierprojekt 219 sind hierbei in einer Datenstruktur ange ordnete Programmdateien 217 zugeordnet, die innerhalb des Programmierprojekts 219 bearbeitet und in die entsprechende Programmcodes geschrieben werden können. In addition, two independent programming projects 219 are set up in the working environment 209. A programming project 219 is assigned program files 217 which are arranged in a data structure and which can be processed within the programming project 219 and written into the corresponding program codes.
Alternativ zu der in Fig. 9 gezeigten beispielhaften Ausführungsform kann auf dem Webs erver 203 eine beliebige Anzahl verschiedener individueller Arbeitsumgebungen 209 ein gerichtet sein. Ferner kann in jeder Arbeitsumgebung eine beliebige Anzahl verschiedener Programmierprojekte 219 eingerichtet sein, denen eine beliebigen Anzahl verschiedener Programmdateien 217 zugeordnet sein können. As an alternative to the exemplary embodiment shown in FIG. 9, any number of different individual work environments 209 can be set up on the web server 203. Furthermore, any number of different programming projects 219 can be set up in each work environment, to which any number of different program files 217 can be assigned.
Das Client-Gerät 205 umfasst einen Webbrowser 206, in dem eine Instanz des Eingabe moduls 311 der webbasierten Entwicklungsumgebung 300 ausgeführt wird. Die Instanz des Eingabemoduls 311 weist in der Ausführungsform in Fig. 9 einen Texteditor 315, ei nen Editor für die Programmiersprache Sequential Function Chart SFC 317, einen Editor für die Programmierspracher Ladder Diagram LD 319 und einen Editor für die Program miersprache Function Block Diagram FBD 321 auf. Die in Fig. 9 dargestellte Ausführungs form des Eingabemoduls 301 ist lediglich beispielhaft. Alternativ kann das Eingabemodul 301 weitere Funktionen, Editoren und andere Komponenten aufweisen, die für eine aus dem Stand der Technik bekannte Integrated Development Environment DIE üblich sind. Eine Datenkommunikation zwischen dem Client-Gerät 205 und dem Webserver 203 kann über ein HTTP-Protokoll oder ein HTTPS-Protokoll realisiert werden. Insbesondere kön nen Versionen des Programmcodes zwischen dem Webserver 203 und dem Client-Gerät 205 über das HTTP-Protokoll oder das HTTPS-Protokoll ausgetauscht werden. Weitere Kommunikation zwischen dem Webserver 203 und dem Client-Gerät 205 kann über einen Web-Socket-Kanal durchgeführt werden. The client device 205 comprises a web browser 206 in which an instance of the input module 311 of the web-based development environment 300 is executed. In the embodiment in FIG. 9, the instance of the input module 311 has a text editor 315, an editor for the programming language Sequential Function Chart SFC 317, an editor for the programming language Ladder Diagram LD 319 and an editor for the programming language Function Block Diagram FBD 321 on. The embodiment of the input module 301 shown in FIG. 9 is only an example. Alternatively, the input module 301 can have further functions, editors and other components that are customary for an integrated development environment DIE known from the prior art. Data communication between the client device 205 and the web server 203 can be implemented via an HTTP protocol or an HTTPS protocol. In particular, versions of the program code can be exchanged between the web server 203 and the client device 205 via the HTTP protocol or the HTTPS protocol. Further communication between the web server 203 and the client device 205 can be carried out via a web socket channel.
Bezugszeichenliste List of reference symbols
100 Verfahren zum Generieren und Ausführen eines Steuerprogramms100 Method for generating and executing a control program
101 Serververbindungsschritt 101 Server connection step
103 Arbeitsumgebungsverbindungsschritt 103 Location Connection Step
105 Codeerstellungsschritt 105 Code creation step
107 Programmcodeübertragungsschritt 107 Program code transfer step
109 Schreibschritt 109 write step
111 Übersetzungsschritt 111 translation step
113 Binärcodeübertragungsschritt 113 Binary Code Transfer Step
115 Ausführungsschritt 115 Execution step
117 Serververbindungsschritt 117 Server connection step
119 weiterer Arbeitsumgebungsverbindungsschritt 119 further location connection step
121 weiterer Programmcodeübertragungsschritt 121 further program code transfer step
123 Änderungserstellungsschritt 123 Change creation step
125 Änderungsübertragungsschritt 125 change transfer step
127 Änderungsschreibschritt 127 Change writing step
129 zweiter Änderungsübertragungsschritt 129 second change transfer step
131 Änderungsanzeigeschritt 131 Change display step
133 Vergleichsschritt 133 Comparison step
135 Fehlerermittlungsschritt 135 Fault Determination Step
137 Versionsübertragungsschritt 137 Version Transfer Step
139 Versionsanzeigeschritt 139 Version display step
141 globaler Analyseschritt 141 global analysis step
143 globaler Analyseergebnisübertragungsschritt 143 global analysis result transfer step
145 globaler Analyseergebnisanzeigeschritt 145 global analysis result display step
147 Schnappschussschritt 147 Snapshot Step
149 Aktualisierungsschritt 149 Update step
151 lokaler Analyseschritt 151 local analysis step
153 lokaler Analyseergebnisübertragungsschritt 153 local analysis result transfer step
155 lokaler Analyseergebnisanzeigeschritt 155 local analysis result display step
157 erster T eilübersetzungsschritt 157 first partial translation step
159 zweiter T eilübersetzungsschritt 159 second partial translation step
161 Debuggingschritt 161 debugging step
163 Debuggingübersetzungsschritt 163 Debug translation step
165 Debuggingübertragungsschritt 165 Debug transfer step
167 Debuggingausführungsschritt 169 Debugginginformationsübertragungsschritt 171 Breakpointsetzungsschritt 173 Arbeitsumgebungsgenerierungsschritt 175 Einrichtungsschritt 167 Debug execution step 169 Debug information transfer step 171 Breakpoint setting step 173 Work environment generation step 175 Setup step
200 Automatisierungssystem 200 automation system
201 Steuerung 203 Webserver 201 control 203 web server
205 Client-Gerät 205 client device
206 Webbrowser 206 web browser
207 weiteres Client-Gerät 207 another client device
208 weiterer Webbrowser 208 additional web browser
209 Arbeitsumgebung 211 Servicemodul 213 Datenbus 209 working environment 211 service module 213 data bus
215 Internetverbindung 217 Programmdatei 219 Programmierprojekt 215 Internet connection 217 Program file 219 Programming project
300 webbasierte Entwicklungsumgebung 300 web-based development environment
301 Eingabemodul 301 input module
303 Übersetzungsmodul 303 translation module
305 Analysemodul 305 analysis module
307 globales Analysenmodul 307 global analysis module
309 lokales Analysenmodul 309 local analysis module
311 Instanz des Eingabemoduls 311 Instance of the input module
313 weitere Instanz des Eingabemoduls 313 further instance of the input module
315 Texteditor 315 text editor
317 Editor für Sequential Function Chart (SFC) 317 Editor for Sequential Function Chart (SFC)
319 Editor für Ladder Diagram (LA) 319 Editor for Ladder Diagram (LA)
321 Editor für Function Block Diagram (FBD) 321 Editor for Function Block Diagram (FBD)
V1 erste Version des Programmcodes V1 first version of the program code
V2 zweite Version des Programmcodes V2 second version of the program code
V3 dritte Version des Programmcodes V3 third version of the program code
VN1 Versionsnummer der ersten Version des ProgrammcodesVN1 Version number of the first version of the program code
VN2 Versionsnummer der zweiten Version des Programmcodes VN3 Versionsnummer der dritten Version des Programmcodes VN2 Version number of the second version of the program code VN3 Version number of the third version of the program code
T 1 erster Zeitpunkt T 1 first point in time
T2 zweiter Zeitpunkt T3 dritter Zeitpunkt T2 second point in time T3 third point in time

Claims

Ansprüche Expectations
1. Verfahren (100) zum Erstellen und Ausführen eines Steuerprogramms zum Steu ern eines Automatisierungssystems (200) mit einer Steuerung (201) und einem mit der Steuerung (201) verbundenen Webserver (203), umfassend: A method (100) for creating and executing a control program for controlling an automation system (200) with a controller (201) and a web server (203) connected to the controller (201), comprising:
Erstellen einer Verbindung zwischen einem Client-Gerät (205) und dem Webserver (203) über einen auf dem Client-Gerät (205) ausgeführten Webbrowser (206) in einem Server verbindungsschritt (101), wobei auf dem Webserver (203) eine webbasierte Entwicklungs umgebung (300) mit einem Eingabemodul (301) zum Erstellen eines Programmcodes und einem Übersetzungsmodul (303) zum Übersetzen des erstellten Programmcodes instal liert ist, wobei das Eingabemodul in dem Webbrowser (206) ausführbar ist, und wobei das Übersetzungsmodul (303) eingerichtet ist, einen Programmcode einer ersten Program miersprache in einen Programmcode einer Binärsprache zu übersetzen; Establishing a connection between a client device (205) and the web server (203) via a web browser (206) executed on the client device (205) in a server connection step (101), with a web-based development on the web server (203) environment (300) with an input module (301) for creating a program code and a translation module (303) for translating the created program code instal, the input module being executable in the web browser (206), and the translation module (303) being set up To translate a program code of a first programming language into a program code of a binary language;
Ausführen einer Instanz des Eingabemoduls (311) im Webbrowser (206) durch das Client- Gerät (205) und Erstellen einer Verbindung des Client-Geräts (205) mit einer Arbeitsum gebung (209) des Webservers (203) und dem Übersetzungsmodul (303) der Arbeitsum gebung (209) über die im Webbrowser (206) ausgeführte Instanz des Eingabemoduls (311) in einem Arbeitsumgebungsverbindungsschritt (103), wobei innerhalb der Ar beitsumgebung das Übersetzungsmodul (303) ausführbar ist; Execution of an instance of the input module (311) in the web browser (206) by the client device (205) and creating a connection between the client device (205) and a work environment (209) of the web server (203) and the translation module (303) the work environment (209) via the instance of the input module (311) executed in the web browser (206) in a work environment connection step (103), the translation module (303) being executable within the work environment;
Erstellen einer ersten Version eines Programmcodes (V1) eines Steuerprogramms für das Automatisierungssystem (200) in der ersten Programmiersprache in der im Webbrowser (206) ausgeführten Instanz des Eingabemoduls (311) in einem Codeerstellungsschritt (105); Creating a first version of a program code (V1) of a control program for the automation system (200) in the first programming language in the instance of the input module (311) executed in the web browser (206) in a code creation step (105);
Übertragen der erstellten ersten Version des Programmcodes (V1) von der im Webbrow ser (206) ausgeführten Instanz des Eingabemoduls (311) an die Arbeitsumgebung (209) des Webservers (203) in einem Programmcodeübertragungsschritt (107); Transferring the created first version of the program code (V1) from the instance of the input module (311) executed in the web browser (206) to the working environment (209) of the web server (203) in a program code transfer step (107);
Schreiben der ersten Version des Programmcodes (V1) in eine Programmdatei (217) in der Arbeitsumgebung (209) in einem Schreibschritt (109); Writing the first version of the program code (V1) in a program file (217) in the working environment (209) in a writing step (109);
Ausführen des Übersetzungsmoduls (303) in der Arbeitsumgebung (209) und Übersetzen des in der ersten Programmiersprache erstellten und in die Programmdatei (217) ge schriebenen Programmcodes durch das Übersetzungsmodul (303) in einen Programm code der Binärsprache in einem Übersetzungsschritt (111); Execution of the translation module (303) in the working environment (209) and translation of the program code created in the first programming language and written in the program file (217) by the translation module (303) into a program code of the binary language in a translation step (111);
Übertragen des Programmcodes in der Binärsprache von der Arbeitsumgebung (209) an die Steuerung (201) des Automatisierungssystems (200) in einem Binärcodeübertra gungsschritt (113); und Ausführen des Programmcodes in der Binärsprache durch die Steuerung (201) des Auto matisierungssystems (200) und Steuern des Automatisierungssystems (200) auf Basis des Programmcodes in einem Ausführungsschritt (115). Transferring the program code in the binary language from the working environment (209) to the controller (201) of the automation system (200) in a binary code transfer step (113); and Execution of the program code in the binary language by the controller (201) of the automation system (200) and control of the automation system (200) on the basis of the program code in an execution step (115).
2. Verfahren (100) nach Anspruch 1, ferner umfassend: 2. The method (100) of claim 1, further comprising:
Erstellen einer weiteren Verbindung zwischen einem weiteren Client-Gerät (207) und dem Webserver (203) über einen auf dem weiteren Client-Gerät (207) ausgeführten weiteren Webbrowser (208) in einem weiteren Serververbindungsschritt (117); Establishing a further connection between a further client device (207) and the web server (203) via a further web browser (208) executed on the further client device (207) in a further server connection step (117);
Ausführen einer weiteren Instanz des Eingabemoduls (313) im weiteren Webbrowser (208) des weiteren Client-Geräts (207) und Erstellen einer weiteren Verbindung des wei teren Client-Geräts (207) mit der Arbeitsumgebung (209) des Webservers (203) über die im weiteren Webbrowser (208) ausgeführte weitere Instanz des Eingabemoduls (313) in einem weiteren Arbeitsumgebungsverbindungsschritt (119); Execute another instance of the input module (313) in the further web browser (208) of the further client device (207) and create a further connection of the further client device (207) with the working environment (209) of the web server (203) via the further instance of the input module (313) executed in the further web browser (208) in a further work environment connection step (119);
Übertragen der in die Programmdatei (217) geschriebenen ersten Version des Programm codes (V1) an die im weiteren Webbrowser (208) des weiteren Client-Geräts (207) ausge führte weitere Instanz des Eingabemoduls (313) in einem weiteren Programmcodeüber tragungsschritt (121); Transferring the first version of the program code (V1) written in the program file (217) to the further instance of the input module (313) executed in the further web browser (208) of the further client device (207) in a further program code transfer step (121) ;
Vornehmen von Änderungen an der ersten Version des Programmcodes (V1) und Erstel len einer zweiten Version des Programmcodes (V2) in der ersten Programmiersprache in der im weiteren Webbrowser (208) des weiteren Client-Geräts (207) ausgeführten weite ren Instanz des Eingabemoduls (313) in einem Änderungserstellungsschritt (123); Übertragen der zweiten Version des Programmcodes (V2) von der weiteren Instanz des Eingabemoduls (313) an die Arbeitsumgebung (209) des Webservers (203) in einem ers ten Änderungsübertragungsschritt (125); Making changes to the first version of the program code (V1) and creating a second version of the program code (V2) in the first programming language in the further instance of the input module (207) executed in the further web browser (208) of the further client device (207) 313) in a change creation step (123); Transferring the second version of the program code (V2) from the further instance of the input module (313) to the working environment (209) of the web server (203) in a first change transfer step (125);
Schreiben der zweiten Version des Programmcodes (V2) in die Programmdatei (217) in der Arbeitsumgebung (209) in einem Änderungsschreibschritt (127); Writing the second version of the program code (V2) in the program file (217) in the working environment (209) in a change writing step (127);
Übertragen der in die Programmdatei (217) geschriebenen zweiten Version des Pro grammcodes (V2) von der Arbeitsumgebung (209) an die im Webbrowser (206) ausge führte Instanz des Eingabemoduls (311) des Client-Geräts (205) in einem zweiten Ände rungsübertragungsschritt (129); und Transferring the second version of the program code (V2) written in the program file (217) from the working environment (209) to the instance of the input module (311) of the client device (205) executed in the web browser (206) in a second change transfer step (129); and
Anzeigen der zweiten Version des Programmcodes (V2) in der im Webbrowser (206) aus geführten Instanz des Eingabemoduls (311) des Client-Geräts (207) in einem Änderungs anzeigeschritt (131). Displaying the second version of the program code (V2) in the instance of the input module (311) of the client device (207) executed in the web browser (206) in a change display step (131).
3. Verfahren (100) nach Anspruch 2, wobei im Änderungsübertragungsschritt (125) und im zweiten Änderungsübertragungsschritt (129) von der zweiten Version des Pro grammcodes (V2) ausschließlich die in der weiteren Instanz des Eingabemoduls (313) vorgenommenen Änderungen an der ersten Version des Programmcodes (V1) übertragen werden. 3. The method (100) according to claim 2, wherein in the change transfer step (125) and in the second change transfer step (129) of the second version of the program code (V2) only those in the further instance of the input module (313) Any changes made to the first version of the program code (V1) are transferred.
4. Verfahren (100) nach Anspruch 2, wobei im Änderungsübertragungsschritt (125) die in der weiteren Instanz des Eingabemoduls (313) vorgenommenen Änderungen an der ersten Version des Programmcodes (V1) und die erste Version des Programmcodes (V1) übertragen werden, und wobei das Verfahren ferner umfasst: 4. The method (100) according to claim 2, wherein in the change transfer step (125) the changes made in the further instance of the input module (313) to the first version of the program code (V1) and the first version of the program code (V1) are transferred, and the method further comprising:
Vergleichen der im Änderungsübertragungsschritt (125) übertragenen ersten Version des Programmcodes (V1) mit der in die Programmdatei (217) geschriebenen Version des Pro grammcodes in einem Vergleichsschritt (133); Comparing the first version of the program code (V1) transmitted in the change transmission step (125) with the version of the program code written in the program file (217) in a comparison step (133);
Ermitteln eines Synchronisationsfehlers in einem Fehlerermittlungsschritt (135), falls die erste Version des Programmcodes (V1) nicht mit der in die Programmdatei geschriebenen Version des Programmcodes übereinstimmt; Determining a synchronization error in an error determining step (135) if the first version of the program code (V1) does not match the version of the program code written in the program file;
Übertragen der in die Programmdatei (217) geschriebenen Version des Programmcodes von der Arbeitsumgebung an die im weiteren Webbrowser (208) ausgeführten weiteren Instanz des Eingabemoduls (313) in einem Versionsübertragungsschritt (137); und Anzeigen der übertragenen Version des Programmcodes in der im weiteren Webbrowser (208) ausgeführten weiteren Instanz des Eingabemoduls (313) in einem Versionsanzeige schritt (139). Transferring the version of the program code written in the program file (217) from the working environment to the further instance of the input module (313) executed in the further web browser (208) in a version transfer step (137); and displaying the transmitted version of the program code in the further instance of the input module (313) executed in the further web browser (208) in a version display step (139).
5. Verfahren (100) nach einem der voranstehenden Ansprüche 2 bis 4, wobei im Pro grammcodeübertragungsschritt (107) jede der im Codeerstellungsschritt (105) vorgenom menen Eingaben in einer individuellen Nachricht übertragen wird, und wobei im Ände rungsübertragungsschritt (125) jeder der vorgenommenen Änderungen an der ersten Ver sion des Programmcodes (V1) in einer individuellen Nachricht übertragen wird. 5. The method (100) according to any one of the preceding claims 2 to 4, wherein in the program code transmission step (107) each of the inputs made in the code creation step (105) is transmitted in an individual message, and wherein in the change transmission step (125) each of the made Changes to the first version of the program code (V1) are transmitted in an individual message.
6. Verfahren (100) nach einem der voranstehenden Ansprüche, wobei das Überset zungsmodul (303) ferner ein Analysemodul (305) zum Ausführen einer semantischen Analyse und/oder einer syntaktischen Analyse des in erstellten Programmcodes umfasst, ferner umfassend: 6. The method (100) according to any one of the preceding claims, wherein the translation module (303) further comprises an analysis module (305) for performing a semantic analysis and / or a syntactic analysis of the program code created in, further comprising:
Ausführen einer globalen Analyse des in die Programmdatei (217) geschriebenen Pro grammcodes in der ersten Programmiersprache durch das Analysemodul (305) und Er mitteln von globalen Analyseergebnissen in einem globalen Analyseschritt (141), wobei die globale Analyse des Programmcodes eine semantische Analyse und/oder eine syn taktische Analyse des gesamten Programmcodes auf Basis einer Semantik und/oder ei ner Grammatik der ersten Programmiersprache umfasst; Übertragen von im globalen Analyseschritt (141) ermittelten globalen Analyseergebnissen an die im Webbrowser (206) ausgeführte Instanz des Eingabemoduls (311) des Client- Geräts (205) und/oder an die im weiteren Webbrowser (208) ausgeführte weitere Instanz des Eingabemoduls (313) des weiteren Client-Geräts (207) in einem globalen Analyseer gebnisübertragungsschritt (143); und Execution of a global analysis of the program code written in the program file (217) in the first programming language by the analysis module (305) and determination of global analysis results in a global analysis step (141), the global analysis of the program code being a semantic analysis and / or a syn tactical analysis of the entire program code on the basis of semantics and / or a grammar of the first programming language; Transmission of global analysis results determined in the global analysis step (141) to the instance of the input module (311) of the client device (205) executed in the web browser (206) and / or to the further instance of the input module (313) executed in the further web browser (208) ) the further client device (207) in a global analysis results transmission step (143); and
Anzeigen der übertragenen globalen Analyseergebnisse in der im Webbrowser (206) aus geführten Instanz des Eingabemoduls (311) des Client-Geräts (205) und/oder in der im weiteren Webbrowser (208) ausgeführten weiteren Instanz des Eingabemoduls (313) des weiteren Client-Geräts (207) in einem globalen Analyseergebnisanzeigeschritt (145). Display of the transmitted global analysis results in the instance of the input module (311) of the client device (205) executed in the web browser (206) and / or in the further instance of the input module (313) of the further client executed in the further web browser (208) Device (207) in a global analysis result display step (145).
7. Verfahren (100) nach Anspruch 6, wobei die Übertragung der globalen Analyseer gebnisse als eine Antwort des Webservers (203) auf eine Poll-Anfrage der im Webbrow ser (206) ausgeführten Instanz des Eingabemoduls (311) des Client-Geräts (205) und/oder auf eine Poll-Anfrage der im weiteren Webbrowser (208) ausgeführten weiteren Instanz des Eingabemoduls (313) des weiteren Client-Geräts (207) ausgebildet ist. 7. The method (100) according to claim 6, wherein the transmission of the global analysis results as a response from the web server (203) to a poll request from the instance of the input module (311) of the client device (205) executed in the web browser (206) ) and / or in response to a poll request from the further instance of the input module (313) of the further client device (207) executed in the further web browser (208).
8. Verfahren (100) nach einem der voranstehenden Ansprüche 6 bis 7, wobei globale Analyseergebnisse Fehlermeldungen bezüglich semantischer und/oder syntaktischer Feh ler im erstellen Programmcode, im Programmcode verwendete Programmobjekte und Be ziehungen zwischen den im Programmcode verwendeten Programmobjekte umfassen, und wobei Programmobjekte im Programmcode verwendete Variablen, Funktionen, Da tentypen, Namensräume oder andere Objekte umfassen. 8. The method (100) according to any one of the preceding claims 6 to 7, wherein global analysis results include error messages relating to semantic and / or syntactic errors in the program code created, program objects used in the program code and relationships between the program objects used in the program code, and program objects in the Variables, functions, data types, namespaces or other objects used in the program code.
9. Verfahren (100) nach einem der voranstehenden Ansprüche 6 bis 8, wobei der globale Analyseschritt (141) ferner umfasst: 9. The method (100) according to any one of the preceding claims 6 to 8, wherein the global analysis step (141) further comprises:
Bestimmen einer Analyseversion des in die Programmdatei (217) geschriebenen Pro grammcodes in der ersten Programmiersprache durch das Analysemodul (305) in einem Schnappschussschritt (147), wobei die Analyseversion des Programmcodes der zum Zeit punkt der Ausführung des globalen Analyseschritts (141) in die Programmdatei (217) ge schriebenen Version des Programmcodes entspricht; und Determining an analysis version of the program code written in the program file (217) in the first programming language by the analysis module (305) in a snapshot step (147), the analysis version of the program code being the one at the time of execution of the global analysis step (141) in the program file (217) corresponds to the written version of the program code; and
Ausführen der globalen Analyse des Programmcodes in der ersten Programmiersprache auf Basis der Analyseversion im globalen Analyseschritt (141). Carrying out the global analysis of the program code in the first programming language on the basis of the analysis version in the global analysis step (141).
10. Verfahren (100) nach einem der voranstehenden Ansprüche 6 bis 9, ferner umfas send: 10. The method (100) according to any one of the preceding claims 6 to 9, further comprising:
Erstellen einer aktuellen Version des in die Programmdatei (217) geschriebenen Pro grammcodes in der ersten Programmiersprache durch das Analysemodul (305) in einem Aktualisierungsschritt (149), wobei eine aktuelle Version des in die Programmdatei (217) geschriebenen Programmcodes in der ersten Programmiersprache nach jeder Änderung des Programmcodes durch die Instanz des Eingabemoduls (311) des Client-Geräts (205) und/oder durch die weitere Instanz des Eingabemoduls (313) des weiteren Client-Geräts (207) erstellt wird; Creating a current version of the program code written in the program file (217) in the first programming language by the analysis module (305) in one Update step (149), whereby a current version of the program code written in the program file (217) in the first programming language after each change of the program code by the instance of the input module (311) of the client device (205) and / or by the further instance of Input module (313) of the further client device (207) is created;
Ausführen einer lokalen Analyse eines Teils des in die Programmdatei (217) geschriebe nen Programmcodes in der ersten Programmiersprache durch das Analysemodul (305) auf Basis der aktuellen Version des Programmcodes und ermitteln von lokalen Analyseer gebnissen in einem lokalen Analyseschritt (151); Carrying out a local analysis of part of the program code written in the program file (217) in the first programming language by the analysis module (305) on the basis of the current version of the program code and determining local analysis results in a local analysis step (151);
Übertragen der im lokalen Analyseschritt (151) ermittelten lokalen Analyseergebnisse an die im Webbrowser (206) ausgeführte Instanz des Eingabemoduls (311) des Client-Ge räts (205) und/oder an die im weiteren Webbrowser (208) ausgeführte weitere Instanz des Eingabemoduls (313) des weiteren Client-Geräts (207) in einem lokalen Analyseergebnis übertragungsschritt (153); und Transmission of the local analysis results determined in the local analysis step (151) to the instance of the input module (311) of the client device (205) executed in the web browser (206) and / or to the further instance of the input module executed in the further web browser (208) ( 313) of the further client device (207) in a local analysis result transmission step (153); and
Anzeigen der übertragenen lokalen Analyseergebnisse in der im Webbrowser (206) aus geführten Instanz des Eingabemoduls (311) des Client-Geräts (205) und/oder in der im weiteren Webbrowser (208) ausgeführten weiteren Instanz des Eingabemoduls (313) des weiteren Client-Geräts (207) in einem lokalen Analyseergebnisanzeigeschritt (155), wobei die lokalen Analyseergebnisse automatische Vervollständigungen, Syntaxhervorhebun gen und andere Eingabehilfen für Eingaben in der Instanz des Eingabemoduls (311) und/oder der weiteren Instanz des Eingabemoduls (313) umfassen. Display of the transmitted local analysis results in the instance of the input module (311) of the client device (205) executed in the web browser (206) and / or in the further instance of the input module (313) of the further client executed in the further web browser (208) Device (207) in a local analysis results display step (155), the local analysis results including automatic completions, syntax highlighting and other input aids for inputs in the instance of the input module (311) and / or the further instance of the input module (313).
11. Verfahren (100) nach Anspruch 10, wobei die Übertragung der lokalen Analyseer gebnisse als eine Push-Nachricht des Webservers (203) an die im Webbrowser (206) ausgeführte Instanz des Eingabemoduls (311) des Client-Geräts (205) und/oder an die im weiteren Webbrowser (208) ausgeführte weitere Instanz des Eingabemoduls (313) des weiteren Client-Geräts (207) ausgebildet ist. 11. The method (100) according to claim 10, wherein the transmission of the local analysis results as a push message from the web server (203) to the instance of the input module (311) of the client device (205) executed in the web browser (206) and / or to the further instance of the input module (313) of the further client device (207) executed in the further web browser (208).
12. Verfahren (100) nach einem der voranstehenden Ansprüche 6 bis 11, wobei das Analysemodul (305) ein globales Analysenmodul (307) zum Ausführen der globalen Ana lyse und ein lokales Analysemodul (309) zum Ausführen der lokalen Analyse umfasst. 12. The method (100) according to any one of the preceding claims 6 to 11, wherein the analysis module (305) comprises a global analysis module (307) for performing the global analysis and a local analysis module (309) for performing the local analysis.
13. Verfahren (100) nach einem der voranstehenden Ansprüche, wobei der Überset zungsschritt (111) ferner umfasst: 13. The method (100) according to any one of the preceding claims, wherein the translation step (111) further comprises:
Übersetzen des Programmcodes in der ersten Programmiersprache in einen Programm code in einer Hochsprache in einem ersten Teilübersetzungsschritt (157); und Übersetzen des Programmcodes in der Hochsprache in den Programmcode in der Binär sprache in einem zweiten Teilübersetzungsschritt (159). Translating the program code in the first programming language into a program code in a high-level language in a first partial translation step (157); and Translation of the program code in the high-level language into the program code in the binary language in a second partial translation step (159).
14. Verfahren (100) nach einem der voranstehenden Ansprüche, wobei die erste Pro grammiersprache eine graphische Programmiersprache ist. 14. The method (100) according to any one of the preceding claims, wherein the first programming language is a graphical programming language.
15. Verfahren (100) nach einem der voranstehenden Ansprüche, ferner umfassend: Ausführen eines Debugging-Prozesses des in die Programmdatei (217) geschriebenen Programmcodes durch das Übersetzungsmodul (303) in einem Debuggingschritt (161). 15. The method (100) according to any one of the preceding claims, further comprising: executing a debugging process of the program code written in the program file (217) by the translation module (303) in a debugging step (161).
16. Verfahren (100) nach Anspruch 15, wobei der Debuggingschritt (161) ferner um fasst: 16. The method (100) of claim 15, wherein the debugging step (161) further comprises:
Übersetzen des in der ersten Programmiersprache generierten und in die Programmdatei (217) geschriebenen Programmcodes der ersten Programmiersprache in einen Pro grammcode der Binärsprache in einem Debuggingübersetzungsschritt (163); Translating the program code of the first programming language generated in the first programming language and written in the program file (217) into a program code of the binary language in a debugging translation step (163);
Übertragen des im Debuggingübersetzungsschritt (163) übersetzten Programmcodes in der Binärsprache von der Arbeitsumgebung (209) an die Steuerung (201) des Automati sierungssystems (200) in einem Debuggingübertragungsschritt (165); Transferring the program code translated in the debugging translation step (163) in the binary language from the working environment (209) to the controller (201) of the automation system (200) in a debugging transfer step (165);
Ausführen des Programmcodes in der Binärsprache durch die Steuerung (201) des Auto matisierungssystems (200) in einem Debuggingausführungsschritt (167); und Übertragen von Informationen bezüglich des ausgeführten Programmcodes an die im Webbrowser (206) ausgeführte Instanz des Eingabemoduls (311) des Client-Geräts (205) und/oder an die im weiteren Webbrowser (208) ausgeführte weitere Instanz des Eingabe moduls (313) des weiteren Client-Geräts (207) in einem Debugginginformationsübertra gungsschritt (169). Executing the program code in the binary language by the controller (201) of the automation system (200) in a debugging execution step (167); and transmitting information relating to the executed program code to the instance of the input module (311) of the client device (205) executed in the web browser (206) and / or to the further instance of the input module (313) executed in the further web browser (208) further client device (207) in a debugging information transmission step (169).
17. Verfahren (100) nach Anspruch 15 oder 16, wobei der Debuggingübersetzungs schritt (163) ferner umfasst: The method (100) of claim 15 or 16, wherein the debugging translation step (163) further comprises:
Setzen wenigstens eines Breakpoints im Programmcode in einem Breakpointsetzungs schritt (171); und Setting at least one breakpoint in the program code in a breakpoint setting step (171); and
Ausführen des Programmcodes in der Binärsprache durch die Steuerung (201) des Auto matisierungssystems (200) bis zum Breakpoint im Debuggingausführungsschritt (167). Execution of the program code in the binary language by the controller (201) of the automation system (200) up to the breakpoint in the debugging execution step (167).
18. Verfahren (100) nach einem der voranstehenden Ansprüche, wobei der Arbeitsum gebungsverbindungsschritt (103) umfasst: 18. The method (100) according to any one of the preceding claims, wherein the work environment connection step (103) comprises:
Generieren der Arbeitsumgebung (209) auf dem Webserver (203) in einem Arbeitsumge bungsgenerierungsschritt (173); und Einrichten des Übersetzungsmoduls (303) in der Arbeitsumgebung (209) in einem Einrich tungsschritt (175). Generating the working environment (209) on the web server (203) in a working environment generating step (173); and Setting up the translation module (303) in the work environment (209) in a setting up step (175).
19. Verfahren (100) nach einem der voranstehenden Ansprüche, wobei auf dem Webserver (203) eine Mehrzahl von einander separierter Arbeitsumgebungen (209) gene riert ist, wobei in jeder Arbeitsumgebung (209) das Übersetzungsmodul (303) ausführbar, und wobei in jeder Arbeitsumgebung (209) ein individuelles Programmierprojekt durch führbar ist. 20. Verfahren (100) nach einem der voranstehenden Ansprüche, wobei der Webserver19. The method (100) according to any one of the preceding claims, wherein a plurality of separate work environments (209) is generated on the web server (203), the translation module (303) being executable in each work environment (209), and in each Working environment (209) an individual programming project can be carried out. 20. The method (100) according to any one of the preceding claims, wherein the web server
(203) in die Steuerung (201) des Automatisierungssystems (200) integriert ist. (203) is integrated into the controller (201) of the automation system (200).
21. Verfahren (100) nach einem der voranstehenden Ansprüche, wobei die Arbeitsum gebung (209) ferner ein Servicemodul (211) umfasst, und wobei das Servicemodul (211) eingerichtet ist, rechenaufwändige Vorgänge des im Webbrowser (206) ausgeführten Ein gebmoduls (301) auszuführen. 21. The method (100) according to any one of the preceding claims, wherein the working environment (209) further comprises a service module (211), and wherein the service module (211) is set up, computationally expensive processes of the input module (301) executed in the web browser (206) ) to execute.
22. Automatisierungssystem (200) mit einer Steuerung (201) und einem mit der Steue rung (201) verbundenen Webserver (203), wobei der Webserver (203) mit einem Client- Gerät (205) und einem weiteren Client-Gerät (201) verbindbar ist, wobei auf dem Webser ver (203) eine Arbeitsumgebung (209) und eine webbasierte Entwicklungsumgebung (300) installiert sind, und wobei das Automatisierungssystem (200) eingerichtet ist, das Verfahren (100) nach einem der voranstehenden Ansprüche 1 bis 21 auszuführen. 22. Automation system (200) with a controller (201) and a web server (203) connected to the controller (201), the web server (203) having a client device (205) and a further client device (201) can be connected, wherein a working environment (209) and a web-based development environment (300) are installed on the web server (203), and the automation system (200) is set up to carry out the method (100) according to one of the preceding claims 1 to 21 .
PCT/EP2021/065029 2020-06-05 2021-06-04 Method for creating and executing a control program for controlling an automation system, and automation system WO2021245247A1 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
EP21731117.4A EP4147121A1 (en) 2020-06-05 2021-06-04 Method for creating and executing a control program for controlling an automation system, and automation system
CN202180039726.4A CN115702413A (en) 2020-06-05 2021-06-04 Method for creating and executing a control program for controlling an automation system, and automation system
US18/060,538 US20230101320A1 (en) 2020-06-05 2022-11-30 Method for creating and executing a control program for controlling an automation system, and automation system

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE102020115028.8A DE102020115028A1 (en) 2020-06-05 2020-06-05 Method for creating and executing a control program for controlling an automation system and automation system
DE102020115028.8 2020-06-05

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US18/060,538 Continuation US20230101320A1 (en) 2020-06-05 2022-11-30 Method for creating and executing a control program for controlling an automation system, and automation system

Publications (1)

Publication Number Publication Date
WO2021245247A1 true WO2021245247A1 (en) 2021-12-09

Family

ID=76355496

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/EP2021/065029 WO2021245247A1 (en) 2020-06-05 2021-06-04 Method for creating and executing a control program for controlling an automation system, and automation system

Country Status (5)

Country Link
US (1) US20230101320A1 (en)
EP (1) EP4147121A1 (en)
CN (1) CN115702413A (en)
DE (1) DE102020115028A1 (en)
WO (1) WO2021245247A1 (en)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120246610A1 (en) * 2011-03-23 2012-09-27 Infosys Technologies Ltd. Online integrated development environment with code assist
US20140258970A1 (en) * 2013-03-11 2014-09-11 Research In Motion Limited Collaborative application development environment using a connected device

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200133651A1 (en) 2018-10-24 2020-04-30 CA Software Österreich GmbH Release automation service in software development tools

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120246610A1 (en) * 2011-03-23 2012-09-27 Infosys Technologies Ltd. Online integrated development environment with code assist
US20140258970A1 (en) * 2013-03-11 2014-09-11 Research In Motion Limited Collaborative application development environment using a connected device

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
ANONYMOUS: "Integrated development environment - Wikipedia", 23 May 2020 (2020-05-23), pages 1 - 7, XP055835201, Retrieved from the Internet <URL:https://en.wikipedia.org/w/index.php?title=Integrated_development_environment&oldid=958373165> [retrieved on 20210826] *
MAX GOLDMAN: "Role-based interfaces for collaborative software development", USER INTERFACE SOFTWARE AND TECHNOLOGY, ACM, 2 PENN PLAZA, SUITE 701 NEW YORK NY 10121-0701 USA, 16 October 2011 (2011-10-16), pages 23 - 26, XP058005915, ISBN: 978-1-4503-1014-7, DOI: 10.1145/2046396.2046410 *

Also Published As

Publication number Publication date
US20230101320A1 (en) 2023-03-30
EP4147121A1 (en) 2023-03-15
DE102020115028A1 (en) 2021-12-09
CN115702413A (en) 2023-02-14

Similar Documents

Publication Publication Date Title
EP2182418A2 (en) Method and device for accessing a function module of an automation system
DE2810977A1 (en) ARRANGEMENT FOR CREATING AND CORRECTING A USER PROGRAM
EP1176482A1 (en) Method and computer program for generating a regulation or control system
EP1265146A2 (en) Debugging method and system
DE10210280A1 (en) Controller for factory automation system, specifies control program access address, to tool, by referring memory storing control program and relevant information associated with tool
DE4437272C2 (en) Automatically operated data processing system
DE4104568A1 (en) Distributed program processing for processing system - examining input and output commands to organise data flow
EP1005215B1 (en) Method and system for editing configuration data in telecommunications systems
AT412131B (en) AUTOMATION SYSTEM FOR SOLVING A PROCESS TECHNICAL TASK AND METHOD FOR THIS
EP0838054B1 (en) Graphic control process and device for controlling operations in a network management system
EP1005216B1 (en) Method and system for the validation of configuration data for telecommunications systems
EP4147121A1 (en) Method for creating and executing a control program for controlling an automation system, and automation system
EP3438774B1 (en) Method for providing functions within an industrial automation system and automation system
DE19707107A1 (en) Device for programming a PLC
EP1862901A1 (en) Input of program commands in imperative programming languages
WO2003026208A2 (en) Data processing unit, resource controller and method for remote control of resources by means of generically-coded resource description data
DE4310615A1 (en) Method and device to provide a system which can be configured by the user, and integrates and manages several different tasks and software tools
EP3355186A1 (en) Creation and execution of software modules
EP1621945B1 (en) Ensuring data consistency in an automation system
DE10101745A1 (en) Method for operation of an automation system for control and regulation of component groups, using operating program with information file to call appropriate service program when required
DE102004050293B3 (en) Simulating operation of network involves describing subscriber time behavior using configurable time parameters derived from time parameters of subscriber functional model run time points
EP1241568B1 (en) Method and apparatus for entering variables into the program flow of a data processing system
DE19906177C1 (en) Equipment transmitting models between simulators analyses model into operators stored in library, before integration as semantically-equivalent external operators
EP4123396A1 (en) Technique for implementing visualization for an automation system with a programmable controller
DE102019201060A1 (en) Process for computer-aided generation of operating software for a terminal and data processing device and terminal

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 21731117

Country of ref document: EP

Kind code of ref document: A1

DPE1 Request for preliminary examination filed after expiration of 19th month from priority date (pct application filed from 20040101)
ENP Entry into the national phase

Ref document number: 2021731117

Country of ref document: EP

Effective date: 20221205

NENP Non-entry into the national phase

Ref country code: DE