Method for transferring a software application from a first data processing device to a second data processing device

CN116097217BActive Publication Date: 2026-10-09SIEMENS AG
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202180063080.3
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2020-09-15
Filing Date
2021-08-31
Publication Date
2026-10-09
Estimated Expiration
2041-08-31

AI Technical Summary

Technical Problem

[0003]现有技术的缺点是:不同实时控制器的、尤其所属的实时数据库的实时同步会是复杂且容易出错的——尤其是在实时要求更苛刻的情况下如此

Benefits of technology

[0116] Other advantageous design solutions can be derived from the dependent claims.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN116097217B_ABST
    Figure CN116097217B_ABST
Patent Text Reader

Abstract

The invention relates to the transfer of a software application from a first data processing device to a second data processing device by the following steps: - running a first instance of the software application in the first data processing device, wherein - the first instance of the software application is in data communication with further software applications and / or devices, - storing internal state data of the first data processing device and / or of the internal run of the first instance of the software application; - transferring start state data existing at a first point in time in the first data processing device to a second storage device communicatively coupled to the second data processing device; - starting a second instance of the software application implemented in the second data processing device at a second point in time using the start state data, so that the first instance and the second instance of the software application run synchronously at a subsequent third point in time; - transferring the data communication with the further software applications or devices from the first instance to the second instance of the software application.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present invention relates to a method for transferring a software application from a first data processing device to a second data processing device, wherein, in the case of a first instance of the software application running in the first data processing device, the first instance of the software application communicates with another software application and / or device. Background Technology

[0002] This method is known from the prior art. For example, published document EP 3 611 579 A1 describes a real-time automation device with a real-time data bus, via which different applications installed in the real-time automation device are coupled. Data communication via the real-time data bus is conducted through so-called bus variables, which are assigned data to specific bus variables. A bus database of the real-time data bus stores which application provides a value to which bus variable. EP 3 611 579 A1 also discloses the possibility of moving an application from one real-time controller to another, via synchronization of the corresponding bus data with two real-time data buses existing in different real-time controllers.

[0003] A drawback of existing technologies is that real-time synchronization of different real-time controllers, especially their associated real-time databases, can be complex and error-prone—particularly in situations with more stringent real-time requirements. This, for example, makes moving software applications between such real-time controllers complex and error-prone. Summary of the Invention

[0004] Therefore, the object of the present invention is to provide an improved method and / or improved device for moving software applications between different data processing devices.

[0005] This objective is achieved by a method having the features of the present invention.

[0006] This method is designed and configured to transfer a software application from a first data processing device to a second data processing device, and the method includes the following steps:

[0007] a.) Running a first instance of a software application executed in a first data processing device, wherein the first instance of the software application is executed within the first data processing device.

[0008] - To conduct data communication between the first instance of the software application and other software applications and / or devices, and

[0009] - Store data about the internal state of the first data processing device and / or the internal running state of the first instance of the software application in the first storage device;

[0010] b.) Transmit the startup state data existing in the first data processing device at the first time point to a second storage device that is communicatively coupled to the second data processing device;

[0011] c.) A second instance of implementing the software application in the second data processing device by launching the software application using the startup state data at the second time point.

[0012] Therefore, a second instance of the software application is executed in the second data processing device, such that at a third time point after the second time point, the first instance of the software application and the second instance of the software application run synchronously in the first data processing device.

[0013] d.) Transferring data communication with another software application or device from a first instance of the software application implemented in a first data processing device to a second instance of the software application executed in a second data processing device.

[0014] The advantage of the proposed method is that it enables the software application to move from the first data processing device to the second data processing device at least substantially without interruption and / or interference. In particular, the proposed method also enables the software application to move from the first data processing device to the second data processing device without interruption and / or interference.

[0015] This is also achieved, at least in the following way: detecting state data stored during the operation of the software application at a specific point in time and subsequently transmitting it to a second data processing device. Then, at a subsequent point in time, a second instance of the software application starts there using the transmitted state data. The other instances of the software application are "fast-forwarded" to some extent, more precisely, until the first and second instances of the software application are running synchronously.

[0016] In this manner, the described method achieves, for example, even when there are high real-time requirements: the software application can move substantially without interference and interruption from the first data processing device to the second data processing device, because of the "fast forward mechanism" that eliminates the need to transmit status data from the first data processing device to the second data processing device in real time.

[0017] Here, the terms "no interference" and / or "no interruption" are understood, for example, as meaning that the functionality of the software application is not interrupted even when the software application moves from the first data processing device to the second data processing device. This, for example, can be configured and designed such that the movement from the first data processing device to the second data processing device is not noticeable from the externally visible effects of the software application.

[0018] Here, the seamless and / or uninterrupted transfer of a software application from a first data processing device to a second data processing device can be configured and designed such that the switching of the software application's function from the first data processing device to the second data processing device operates faster than the usual or determined control time, reaction time, or response time set or anticipated for such an application.

[0019] Here, the switching of software application functions is understood as: the generation of the execution effect (e.g., externally visible) of the software application is switched from the execution of a first instance of the software application through a first data processing device to the execution of a second instance of the software application through a second data processing device.

[0020] For example, this movement can occur faster than the maximum response time preset by the real-time specification. If a loop is provided for executing the software application, this movement of the software application's function from the first data processing device to the second data processing device can, for example, occur within the scope of the corresponding loop time or even faster than the corresponding loop time.

[0021] For example, the first data processing device and / or the second data processing device can be configured and designed to be mobile or stationary. Data processing devices can be configured and designed, for example, as computers, personal computers (PCs), workstations, smartphones, tablets, computer networks, clouds, control devices, controllers, programmable logic controllers, or similar devices or apparatuses.

[0022] Furthermore, the first data processing device and / or the second data processing device may, for example, have a housing. The first data processing device and / or the second data processing device may, for example, be configured and designed as separate structural units. Additionally, the first data processing device and / or the second data processing device may also be configured and designed as logical units and / or functional units within a larger overall system (e.g., as a "data processing device application" in the cloud).

[0023] The first storage device for storing state data can be provided, for example, in the first data processing device or in another data processing device or external data storage device that is communicatively connected to the first data processing device.

[0024] An external data storage device that is communicatively connected to the first data processing device may be located in or implemented in another data processing device, computer network, cloud, external electronic storage (memory card, storage module, USB stick, ...), external electronic mass storage (hard disk, SSD, ...) or similar device.

[0025] Here, storage devices and / or modular storage devices can be configured and designed as electronic storage devices or digital storage devices.

[0026] Such storage devices can be configured as non-volatile data storage (so-called "non-volatile memory"), and are constructed and designed for permanent or long-term data storage. Such storage devices can be, for example, SSDs, SSD cards, hard drives, CDs, DVDs, EPROMs, or flash memory, or similar storage devices.

[0027] Furthermore, the storage device can also be configured and designed as volatile memory. Such memory can be configured and designed, for example, as so-called DRAM or Dynamic Random Access Memory (DRAM) or SRAM (Static Random Access Memory).

[0028] Storage devices that store data and / or information can also be configured and designed, for example, as integrated circuits in which at least data and / or information are implemented.

[0029] Here, data communication between the first instance of the software application and other software applications and / or devices can be performed, for example, via internal and / or external data buses. Similarly, data communication between the second instance of the software application and other software applications and / or devices can be performed, for example, via internal and / or external data buses. For example, the first data processing device and / or the second data processing device can each include a corresponding internal data bus.

[0030] Data buses can be configured and designed, for example, as so-called fieldbuses, or may have proprietary and / or internal communication data formats and / or communication protocols.

[0031] The data bus, for example, can have a data area shared by communication partners communicating via the data bus. This shared data area can, for example, be configured and designed for (temporarily) storing data to be communicated, communicable, and / or in the process of communication. For example, such a shared data area can be configured and designed as a so-called "shared memory" or a so-called "dual-port RAM".

[0032] The additional software application can be any software application. For example, the additional software application can be configured and designed to communicate with at least one other software application. Here, the additional software application can be implemented, for example, in a first data processing device, a second data processing device, or another data processing device.

[0033] The device can be configured and designed as, for example, a module, a component, or a facility. For example, the device can also be configured and designed as a machine, instrument, robot, production facility, etc., or can include such components as a assembly. Such device or facility can include, for example, one or more components, modules, actuators, sensors, machines, instruments, communication devices, etc.

[0034] State data can be, for example, internal state data and / or internal data related to the operation of a software application. Such internal data can be, for example, counters, flags, status data, etc. For instance, state data can be temporary data necessary for the normal operation of a software application.

[0035] State data can also describe, for example, the internal state of a software application and / or the operation of the software application. In this sense, state data can describe, for example, which step, iteration, or state the software application is in.

[0036] State data can be auxiliary data required or used by a software application to function properly. This state data is usually stored internally and is typically purely state-related.

[0037] In an advantageous design, it is also possible to propose that the status data be identified separately. This identification can be implemented or designed, for example, by a system used to create such software applications, i.e., by a so-called engineering system. For example, the identification can be stored along with the status data, or it can be stored in a separate file or a separate memory area. Furthermore, it is possible to propose that the status data be stored separately, for example, in a separate file, a separate memory area, a separate storage device, etc.

[0038] For the purposes of this specification, startup status data refers to the status data relating to the internal state of the first data processing device and / or the internal operation of a first instance of a software application, as described in this specification, which is stored at a first point in time or has already been stored in the first storage device of the first data processing device.

[0039] Here, startup status data can be transmitted, for example, from the first data processing device to the second data processing device and / or from the first storage device to the second storage device.

[0040] The communication coupling between the second storage device and the second data processing device can be configured and designed such that the second data processing device includes the second storage device. Furthermore, the communication coupling can also be configured such that the second storage device is located in an external data storage device communicatively connected to the second data processing device.

[0041] Such an external data storage device that is communicatively connected to a second data processing device can be set up and / or implemented in other data processing devices, computer networks, clouds, external electronic storage devices (memory cards, storage modules, USB sticks, ...), external electronic mass storage devices (hard disks, SSDs, ...) or similar devices.

[0042] The storage device mentioned herein can also be constructed and designed according to this specification.

[0043] Furthermore, the second time point can be the same as the first time point or be in chronological order after the first time point.

[0044] In step c.) of the method according to this specification, a second instance of the software application is executed in the second data processing device such that this execution is faster than the parallel execution of the first instance of the software application in the first data processing device. This allows it to be achieved that although the second instance of the software application starts later in the second data processing device with startup state data than the first instance of the software application starts in the first data processing device, the second instance of the software application runs synchronously with the first instance of the software application at a third point in time. To some extent, this can be considered as "fast-forwarding" the second instance of the software application until the two instances of the software application run synchronously.

[0045] It is possible to achieve faster operation of a second instance of a software application, for example, by using different clocks, changing the time base, reducing the cycle time, changing the running graph, using another time base, or similar mechanisms.

[0046] The third time point could be, for example, the time when the first and second instances of the software application first run synchronously. Alternatively, the third time point could also be a time point after the first and second instances of the software application have first run synchronously.

[0047] In an advantageous design, it can be proposed that a second instance of the software application is subsequently executed in the second storage device of the second data processing device, such that, starting from a third time point after the second time point, the first instance of the software application in the first storage device of the first data processing device and the second instance of the software application in the second storage device of the second data processing device run synchronously.

[0048] Data communication with another software application or device can be transferred from a first instance of the software application to a second instance of the software application, for example, at a third point in time or at a point in time after the third point in time.

[0049] Here, the transfer can be performed, for example, such that, within the scope of the transfer, communication between a first instance of the software application and another software application or device can be terminated, and communication between a second instance of the software application and another software application or device can be initiated.

[0050] The cessation of communication between the first instance of the software application and another software application or device, and the initiation of communication between the second instance of the software application and another software application or device, can occur simultaneously, or within a preset or pre-set time window. Here, the preset or pre-set time window can, for example, correspond to a switching time. The magnitude of this switching time can be given or determined, for example, by real-time requirements or other requirements for uninterrupted or interference-free individual switching.

[0051] In an advantageous design, the method according to this specification can be configured and designed to—within the scope of method step a.) in data communication—store input data for another software application and / or device, and / or store output data for another software application and / or device.

[0052] - In an additional method step a1.) preceding method step b.), a tracing process is initiated to store the current input data and / or output data in the I / O tracing database, respectively, and

[0053] - Within the scope of method step c.), a second instance of the software application is also launched using input data and / or output data stored in the I / O trace database about the first time point.

[0054] The design of this invention further simplifies the transfer of software applications from a first data processing device to a second data processing device. A second instance of "fast-forwarding" the software application in the second data processing device is further simplified by storing the input and / or output data for running the software application in an I / O trace database.

[0055] Therefore, when the second instance of the software application is launched in the second data processing device, in addition to the startup status data associated with the first time point, input data and / or output data existing at the first time point from the I / O trace database are also used. When the second instance of the software application is further run within the scope of method step c.), input data and / or output data from the I / O trace database that match the corresponding status data in terms of time are then used, until the correct booting or running of the second instance of the application is achieved at the third time point.

[0056] Here, the input data is data transferred from another software application and / or device to this software application. This input data is typically used within the scope of the software application's operation.

[0057] Here, output data refers to data transferred from one software application to another software application and / or device. This output data is typically used to run or build another software application and / or control or operate the device. Input and / or output data for another software application can be, for example, data exchanged or to be exchanged between the software application and another software application.

[0058] The input and / or output data associated with the device may be, for example, data from the machine or facility (sensor data, machine status data, or characteristic data) or data sent to the machine or facility (for actuators or for adjusting or setting device parameters) within the control range of the machine or facility.

[0059] If the data processing device is configured and designed, for example, as a programmable logic controller, then the input data and / or output data can be stored, for example, in the so-called process image of the programmable logic controller.

[0060] In an advantageous design, the I / O tracking database can be stored, for example, in a first data processing device or a second data processing device.

[0061] The separate storage of current input data and / or output data can be configured and designed such that, for example, at periodic or time intervals that follow each other, the current input data and / or output data are stored separately in the I / O tracking database. The period or cycle for storing the corresponding input data and / or output data can be preset or set, for example, by a user or an automated device.

[0062] In the execution of a loop program, such as in a software application, the corresponding current input and / or output data can be stored once in the I / O trace database for each program loop. This is especially possible between two program loops.

[0063] Storing the corresponding current input and / or output data in the I / O trace database can be configured such that each input and / or output data is also stored together at a specific point in time, where the data exists. Alternatively, the input and / or output data can be stored in the I / O trace database such that input and / or output data appearing at a specific point in time are stored as a dataset in the I / O trace database, and the time point in time at which the data exists is assigned to the dataset.

[0064] The aforementioned points in time in which the corresponding input data and / or output data exist can be detected and / or allocated, for example, by the first data processing device, the operating environment of the first instance of the software application, or, for example, an I / O tracking database or the operating system associated therewith.

[0065] For example, an I / O tracking database can exist in SQL format or so-called NoSQL format. Here, the database or storage within the database can be constructed and designed according to this specification, or can include components according to this specification.

[0066] Using input data and / or output data stored in the I / O trace database about the first time point to start a second instance of the software application within the scope of method step c.) can, for example, be configured and designed such that, within the scope of method step c.), when starting the second instance of the software application, startup state data about the first time point and input data and / or output data about the first time point are used as data available for starting the second instance of the software application.

[0067] Furthermore, it is possible to propose: assigning at least one time value to the input data and / or output data stored in the I / O tracking database, respectively.

[0068] The corresponding I / O data can be stored in the I / O tracking database along with their current time values. These time values ​​can be calculated and / or allocated, for example, by a first data processing device. Furthermore, the time values ​​can also be calculated and / or allocated, for example, by a second data processing device.

[0069] It is possible to propose, for example, assigning time values ​​to each input and / or output date. Furthermore, it is possible to propose assigning time values ​​to a set of input and / or output data that exist at the same point in time.

[0070] This time value is often referred to as a "timestamp".

[0071] Furthermore, the time values ​​belonging to the corresponding input data and / or output data can be detected by the first data processing device or the second data processing device, then assigned to the corresponding input data and / or output data, and then stored together with the associated data in the I / O trace database. Alternatively, the time values ​​can also be detected and associated with the corresponding data within the scope of storing the corresponding input data and / or output data in the I / O trace database. For example, detection and association can be performed through the I / O trace database or the operating environment (in which the database is running).

[0072] The above objective is also achieved by a method for transferring a software application from a first data processing device to a second data processing device, the method comprising the following steps:

[0073] A1.) A first instance of running a software application implemented in a first control device, wherein the first instance of running the software application is within the scope of the first data processing device.

[0074] - To enable the first instance of a software application to communicate data with other software applications and / or devices.

[0075] - Store input data for other software applications and / or devices within the scope of data communication, and / or store output data for other software applications and / or devices, and

[0076] - Store data about the internal state of the first data processing device and / or the internal running state of the first instance of the software application in the first storage device;

[0077] B1.) Initiate the tracing process to store the current input and / or output data in the I / O tracing database respectively;

[0078] C1.) Transmits the startup state data existing in the first data processing device at the first time point to the second storage device which is communicatively coupled to the second data processing device;

[0079] D1.) A second instance of implementing a software application in a second data processing device by using startup state data and input and / or output data stored in the I / O trace database at a second time point, at a second time point.

[0080] Thus, the second instance of the software application is executed in the second data processing device such that at a third time point after the second time point, the first instance of the software application and the second instance of the software application run synchronously in the first data processing device.

[0081] E1.) Transferring data communication with another software application or device from a first instance of the software application implemented in a first data processing device to a second instance of the software application implemented in a second data processing device.

[0082] An advantageous design can be proposed: the method described in this specification is configured and designed to enable uninterrupted data communication with other software applications and / or devices.

[0083] Here, "uninterrupted" is understood, for example, as meaning that communication between the software application and other software applications and / or devices is uninterrupted within the scope of said communication, taking into account normal or defined time tolerances. This, for example, can be configured and designed such that the externally visible effects of the software application remain substantially unchanged despite moving from a first data processing device to a second data processing device.

[0084] The mentioned time tolerance can be, for example, the maximum response time and / or reaction time preset within the definition or scope of the communication standard or protocol. If, also during the movement of the software application from the first data processing device to the second data processing device, the communication partner can perform interference-free communication with either the first or second data processing device in that sense, then the corresponding data communication can be considered uninterrupted, for example. This interference-free communication, for example, involves standards and / or protocols performed within the scope of the data communication while considering the same general accuracy and tolerances.

[0085] Furthermore, the method according to this specification can be configured and designed such that a first instance of the software application is executed cyclically in a first data processing device and a second instance of the software application is executed cyclically in a second data processing device.

[0086] Here, the cyclic execution of a software application is generally understood as the software application starting from the beginning again after it has finished running. Typically, this cyclic execution is frequently used with real-time operating systems and / or real-time control devices of machines or facilities. Therefore, for example, cyclic program execution is commonly used in programmable logic controllers within the scope of lateral execution.

[0087] In an advantageous design, the execution of a loop program can be configured and designed such that, before the start of the loop, input data relevant to program execution is read, for example, into a specific memory region, and then the loop is run using said input data. During or after the end of the loop, output data generated during the process of the loop is written to and / or read out into the specific memory region. Then, the next loop continues with the reading of the next input data.

[0088] The time it takes for a program loop to run is usually called the loop time. This time can be defined in different ways, for example, as the pure running time of the program loop. In addition, the loop time can also be defined as the total time required to read input data, run the program loop, and write output data.

[0089] The method according to this specification can also be configured and designed such that the first data processing device and the second data processing device each include a real-time operating system, wherein a first instance of a software application executed in the first data processing device and a second instance of a software application executed in the second data processing device are respectively executed within the scope of the respective real-time operating system of the respective data processing device.

[0090] Furthermore, in another advantageous design, the operation of a first instance of the software application in a first data processing device and the operation of a second instance of the software application in a second data processing device can also be configured and designed such that the data communication between each active instance of the software application and other software applications and / or devices is configured and designed as real-time communication.

[0091] More generally, the term "real-time operation of a computer system" is understood here as meaning that the program used to process the generated data is continuously prepared to run in such a way that the processing results are available within a predetermined time interval. Depending on the application, the data may accumulate after being randomly distributed over time or accumulate over a predetermined time interval.

[0092] A real-time operating system can be understood as an operating system for a data processing device configured and designed to safely process requests from user programs or signals appearing via a hardware interface within predetermined or determinable time segments. Importantly, such guaranteed time segments are essential. The length of these time segments is not critical to the fact that the particular operating system is a real-time operating system.

[0093] Real-time operating systems, for example, can be configured and designed as real-time operating systems in the sense of DIN 44300.

[0094] Real-time communication can be configured and designed to comply with preset or pre-set real-time requirements. These real-time requirements may relate to guaranteed transmission bandwidth or transmission latency to be met. Here, real-time communication can be configured, for example, as real-time Ethernet communication, such as real-time Ethernet communication according to the TSN standard. Furthermore, real-time communication can be configured and designed according to fieldbus standards with real-time capabilities.

[0095] Furthermore, the first and second instances of the software application can be configured and designed to communicate with other software applications and / or devices in real time.

[0096] For example, real-time communication can be constructed and designed based on this specification.

[0097] In addition, data communication can be conducted using a storage area shared by the participating communication partners.

[0098] Here, for example, time values ​​are assigned to or can be assigned to data or groups of data stored in a shared memory area. Here, "manageable" is understood, for example, as the ability to derive time values ​​from or from other stored variables (e.g., loop time and loop count).

[0099] Shared memory regions can be configured and designed, for example, as so-called dual-port RAM or so-called "shared memory".

[0100] In another advantageous design, data communication is configured and designed for communicating values ​​associated with variables. Here, for example, values ​​associated with a specific variable and values ​​stored at different times in a shared memory area are stored in a data buffer associated with the variable.

[0101] The participating communication partners are understood as the various partners, software applications, and / or instances participating in the communication under consideration.

[0102] In a favorable design, the memory region shared by data communication applications is configured and designed for real-time data communication.

[0103] In another advantageous design, time values ​​are assigned to, or can be assigned to, data stored in a shared memory area within the communication range.

[0104] In another advantageous design, the time value belonging to the date is also stored in a shared memory area.

[0105] The method according to this specification can also be configured and designed to identify state data within the scope of a first instance of a software application established in the first data processing apparatus.

[0106] For example, an engineering system can be provided, by which software applications can be created, modified, and / or implemented, or already implemented, within a corresponding data processing device. Through such an engineering system, specific data can then be identified as status data, for example. In the case of implementing or instantiating the software application, this identification can then also be stored on the corresponding control device and then used, for example, to identify status data according to the method described herein. The identification can also be performed directly during the implementation or instantiation of the software application.

[0107] In an advantageous design, the first data processing unit and the second data processing unit can be configured and designed as control devices for controlling equipment or facilities, respectively.

[0108] For example, the method according to this specification can be advantageously used to move a software application from a first control device to a second control device. Control devices are typically used for controlling and / or regulating tasks. Here, for example, real-time requirements or fault tolerance are often important criteria to be met. The method according to this specification achieves, for example, moving a software application from a first control device to a second control device without interrupting the functionality of the software application. In this way, the method can be configured and designed, for example, such that the corresponding real-time requirements or response time are also guaranteed during the movement of the software application.

[0109] Control devices can be configured and designed, for example, as so-called programmable logic controllers (SPS). Furthermore, control devices can also be configured and designed as so-called modular programmable logic controllers (modular SPS).

[0110] The control device can be any type of computer or computer system configured and designed for controlling equipment or instruments. The control device can also be a computer, computer system, or so-called cloud, on which control software or control software applications, such as control applications, are executed or installed. Such control applications implemented in the cloud can, for example, be configured and designed as applications with programmable logic controller functionality.

[0111] The control device can also be configured and designed as a so-called edge device, which, for example, can include an application for controlling equipment or facilities. For example, such an application can be configured and designed as an application with programmable logic controller (PLC) functionality. Here, the edge device can, for example, connect to another control device, the equipment to be controlled, or the facility to be controlled. Furthermore, the edge device can be configured and designed to additionally connect to a data network or cloud, or to connect to a corresponding data network or cloud.

[0112] The above objectives are also achieved by a data processing system comprising a first data processing device and a second data processing device according to this specification, wherein the data processing system is configured and designed to transfer a software application from the first data processing device to the second data processing device by means of a method according to this specification.

[0113] Hereinafter, the data processing apparatus, its couplings, and its elements or components can also be constructed and designed according to this specification.

[0114] Here, for example, the first data processing apparatus may include a first storage device. Furthermore, the second data processing apparatus may include a second storage device.

[0115] Furthermore, the first data processing device may include a shared memory area, as described in this specification, for data communication with other software applications and / or devices. The second data processing device may also include a shared memory area, as described in this specification, for data communication with other software applications and / or devices.

[0116] Other advantageous design solutions can be derived from the dependent claims. Attached Figure Description

[0117] The invention will now be explained in more detail by way of example with reference to the accompanying drawings.

[0118] The attached diagram shows:

[0119] Figure 1 A schematic diagram illustrating the first working step of an instance in which a second software application, which communicates with a first software application, is moved from a first PC to a second PC;

[0120] Figure 2 A schematic diagram illustrating the second working step of an example of moving a second software application, which communicates with a first software application, from a first PC to a second PC;

[0121] Figure 3 A schematic diagram illustrating the third working step of an instance in which a second software application communicating with a first software application is moved from a first PC to a second PC;

[0122] Figure 4 This diagram illustrates the fourth step of an instance in which a second software application, which communicates with a first software application, is moved from a first PC to a second PC.

[0123] Figure 5 This diagram illustrates the fifth step of an instance in which a second software application, which communicates with a first software application, is moved from a first PC to a second PC.

[0124] Figure 6A schematic diagram illustrating the sixth operational step of an instance in which a second software application, which communicates with a first software application, is moved from a first PC to a second PC;

[0125] Figure 7 A schematic diagram illustrating the seventh working step of an instance in which a second software application communicating with a first software application is moved from a first PC to a second PC;

[0126] Figure 8 This diagram illustrates the eighth operational step of an instance in which a second software application, which communicates with a first software application, is moved from a first PC to a second PC.

[0127] Figure 9 This diagram illustrates the ninth step of an instance in which a second software application, which communicates with a first software application, is moved from a first PC to a second PC.

[0128] Figure 10 A schematic diagram illustrating the first working step of an example of moving a third software application that communicates with a robot from a first PC to a second PC;

[0129] Figure 11 This diagram illustrates the ninth step of an example of moving a third software application that communicates with the robot from a first PC to a second PC. Detailed Implementation

[0130] The following explanation Figures 1-9 This diagram illustrates the working steps of an exemplary movement of a second software application 500 from a first PC 200 to a second PC 300 (where PC represents a personal computer).

[0131] Here, Figure 1 A data processing system 100 including a first PC 200 and a second PC 300 is shown. Here, the first PC 200 includes a first storage device 210, in which a first software application 400 and a first instance of a second software application 500 are stored. Furthermore, status data 510 of the first instance of the second software application 500 is stored in the storage device 210 of the first PC 200. The status data 510 includes various counters and status variables necessary for the normal operation of the first instance of the second software application 500.

[0132] Furthermore, the first PC 200 includes so-called "middleware" 220, which includes a data bus for communication between different software applications within the first PC 200. A first instance of the second software application 500 communicates with the first software application 400 via the middleware. The middleware 220 also has internal control tasks regarding operational control and communication within the first PC 200.

[0133] Figure 1 An engineering system 600 is also shown, configured and designed for programming and building the first PC 200. Specifically, a first software application 400 and a second software application 500 are created using the engineering system 600 and instantiated on the first PC 200. Furthermore, with the aid of the engineering system 600, the state data 510 of the first instance of the second software application 500 is specifically identified as "state data" so that it can be distinguished from other data stored in the storage device 210 of the first PC 200.

[0134] The second PC 300 also includes a storage device 310. Further features and other structures of the second PC 300 will then be explained within the scope of the following operational steps.

[0135] Figure 1 At the first time point T=1, the first working steps for transferring the functionality of the second software application 500 to the second PC 300 are shown, wherein communication with the first software application 400 is maintained. Here, the transfer of the second software application is performed such that the execution of the first instance of the second software application 500 in the first PC 200 is switched to the execution of the second instance of the second software application 502 in the second PC 300 (not shown in the original text). Figure 1 As shown in the text, but in Figure 2 (Only shown in the middle).

[0136] exist Figure 1 In the first step shown, a trigger command is sent from an external device, such as engineering system 600, to middleware 220 of first PC 200, wherein the trigger then triggers a process sequence described in conjunction with the figures below to transfer the functionality of second software application 500 from first PC 200 to second PC 300.

[0137] Figure 2 The results of the second working step at time T=2 are shown. The previously mentioned second instance of the second software application 502 is installed in the storage device 310 of the second PC 300 during the second working step.

[0138] Figure 3The results of the third working step at time T=3 are shown, wherein in the third working step, the input and output data of the first instance of the second software application 500 are continuously stored in the tracking database 330. Here, the tracking database 330 is stored in the storage device 310 of the second PC 300.

[0139] The input and output data of the first instance of the second software application 500 are stored and transmitted to the tracking database 330. Figure 3 The number 280 is indicated by arrow 280.

[0140] Starting from the aforementioned start time point T=3, the separate storage of current input and output data in the tracking database 330 is continuously performed at subsequent time points, as long as this is noted in the corresponding figures and / or descriptions.

[0141] Within the scope of this initiated tracking of input and output data of the first instance of the second software application 500, the tracking database 330 jointly stores the points in time when the corresponding input and output data existed in the first PC 200. In this way, for all input and output data stored in the tracking database 330, it is visible that the corresponding data existed in the first PC 200 at which point in time.

[0142] Both the first PC 200 and the second PC 300 are configured and designed for the cyclic execution of software applications 400, 500, and 502 running therein. Here, the cyclic execution is performed using defined or definable loop times. The storage of current input and output data of the first instance of the second software application 500 is performed between two program cycles of the first instance of the second software application 500 executing in the first PC 200.

[0143] Figure 4 This shows the result of the fourth operational step at time T=4, after middleware 220 has opened the control channel to the first instance of the second software application 500. The opening of the control channel... Figure 4 The middleware 220 is represented by a double arrow symbol from the first instance of the second software application 500.

[0144] Now, the middleware 220 is able to access the internal data and timestamps of the first instance of the second software application 500 via the control channel, and in particular, access the status data 510 of the first instance of the second software application 500.

[0145] Figure 5The process of the fifth operational step at time point T=5 is now shown, wherein the current state data 510 of the first instance of the second software application 500 at this fifth time point T=5 is first transmitted from the first instance of the second software application 500 to the middleware 220 via an activated control channel. Then, the state data 510 is transmitted from the middleware 220 to the memory region 310 of the second PC 300 via a communication channel activated for this purpose. This transmission process occurs... Figure 5 The symbols are respectively represented by a double arrow from the state data 510 of the first instance of the second software application 500 to the middleware 220 and further from the middleware 220 to a copy of the state data 510 in the memory region 310 of the second PC 300.

[0146] Figure 6 The results of the sixth working step at time point T6 are shown, wherein the state data 510 stored in the second PC in the fifth working step is now used as the state data 512 of the second instance belonging to the second software application 502, and is loaded into the state data area 512 of the second instance of the second software application 502 for this purpose.

[0147] Figure 7 The results of the seventh operational step at time T=7 are shown. At the start of this seventh step, the second instance of the second software application 502 in the second PC 300 is started with state data existing in the first instance of the second software application 500 in the first PC 200 at time T=5. In addition to the state data 512, input and output data corresponding to time T=5 are also selected from the tracking database 330 and delivered to the second instance of the second software application 502 in the second PC 300. This... Figure 7 The arrows are used to represent the second instance of the tracking database 330 to the second software application 502.

[0148] Then, in the seventh working step, the second instance of the second software application 502 runs at a reduced cycle time. Here, status data 512 is then tracked at each time point according to the normal program flow, and the input and output data belonging to said time point are retrieved from the tracking database 330 and sent to the second instance of the second software application 502. Since the input and output data correspond precisely to the data that also exists in the first PC 200 at the corresponding time points, the second instance of the second software application 502 in the second PC 300 runs in exactly the same way as the first instance of the second software application 500 in the first PC 200.

[0149] The operation can be understood as a "fast forward" of the second instance of the second software application 502 in the second PC 300. This fast forward is now executed until, at time T=7, the first instance of the second software application 500 is running synchronously in the first PC 200 and the second instance of the second software application 502 is running synchronously in the second PC 300. The state is... Figure 7 As shown in the image.

[0150] From the time point mentioned above, the first instance of the second software application 500 and the second instance of the second software application 502 run synchronously.

[0151] Figure 8 The results of the eighth working step at time T=8 are shown, wherein the second instance of the second software application 502 built in the second PC 300 communicates with the middleware 220 in the first PC 200 via a communication connection 285, and then checks whether the data stored in the second PC 300 in conjunction with the second instance of the second software application 502 is consistent with the data stored in the first PC 200 in conjunction with the first instance of the second software application 502.

[0152] Figure 9 The diagram shows the state after the ninth operational step at time T=9. In this ninth operational step, communication with the first software application 400 is switched from a first instance of the second software application 500 to a second instance of the second software application 502 located in the second PC 300. This switchover only occurs if the consistency check performed in the eighth operational step is successful.

[0153] Starting from the time point T=9, the second instance of the second software application 502 in the second PC undertakes communication with the first software application forming 400 via the communication connection 285 between the first PC 200 and the second PC 300 and the middleware 220.

[0154] After the communication is established, the first instance of the second software application 500 can be deleted from the first PC 200.

[0155] In addition to switching communication from the first instance of the second software application 500 to the second instance of the second software application 502, Figure 9In addition to the switching process shown in the ninth working step, communication between one of the two instances of the first software application 400 and the second software applications 500 and 502 occurs at any time. Therefore, quasi-continuous communication between the second software applications 500 and 502 and the first software application 400 is ensured if the switching time is sufficiently short. Thus, it is possible to move the second software applications 500 and 502 from the first PC 200 to the second PC 300 without interruption.

[0156] The more time-consuming steps of transmitting status information 510 and implementing status information 512 in a newly installed second instance of the second software application 502 are performed in the background before the switchover by using the tracking database 330 and the fast-forward steps of the second instance of the second software application 502, thereby extending the switchover time.

[0157] Figure 10 and Figure 11 The diagram illustrates the third software application 550 from the first PC 200 to the second PC 300 according to... Figures 1 to 9 Another example of the movement performed in steps 1 through 9 of the work process.

[0158] Here, in Figure 10 In the example shown, a first instance of the third software application 550 communicates with the robot 700 via middleware 220, fieldbus interface 290, and fieldbus line 710 of the first PC 200. Therefore, the first instance of the third software application 550 controls the robot 700 via the described communication connection. Regarding the first instance of the third software application 550, status data 560 is stored in the memory area 210 of the first PC 200.

[0159] exist Figure 10 Following the state shown, a corresponding combination now occurs here as well. Figures 1-9 The work steps 1-9 shown are for transferring control of robot 700 from a first instance of third software application 550 in first PC 200 to a second instance of third software application 552 in second PC 300.

[0160] Figure 10 The results of the ninth working step described above are now shown, wherein the second instance of the third software application 552 in the second PC 300 has taken over the control of the robot 700, and there is no critical or significant interruption time when switching the control of the robot 700 from the first instance of the third software application 550 to the second instance of the third software application 552. The second instance of the third software application is then run again using the status data 562 generated according to the method described above.

Claims

1. A method for transferring a software application from a first data processing device to a second data processing device, the method comprising the following steps: a.) Running a first instance of the software application executed in the first data processing device, wherein, during the running of the first instance of the software application within the first data processing device, - To perform data communication between the first instance of the software application and other software applications and / or devices, and - Store the internal state of the first data processing device and / or the internal running state of the first instance of the software application in the first storage device; a1.) Initiate a tracing process to store current input data from other software applications and / or devices and / or output data for other software applications and / or devices respectively in the I / O tracing database; b.) Transmit the startup state data existing in the first data processing device at a first time point to a second storage device that is communicatively coupled to the second data processing device; c.) A second instance of the software application implemented in the second data processing device, which is launched at a second time point after the first time point, using the startup state data and input and / or output data stored in the I / O trace database regarding the first time point. The second instance of the software application is executed in the second data processing device such that, up to a third time point after the second time point, the execution of the second instance of the software application in the second data processing device is faster than the execution of the first instance of the software application in the first data processing device, the second instance and the first instance run in parallel, and from the third time point after the second time point, the first instance of the software application in the first data processing device and the second instance of the software application in the second data processing device run synchronously. d.) Transferring data communication with another software application or device from the first instance of the software application implemented in the first data processing device to the second instance of the software application executed in the second data processing device. The first data processing device and the second data processing device each include a real-time operating system. Furthermore, the execution of the first instance of the software application in the first data processing device and the execution of the second instance of the software application in the second data processing device are respectively performed within the corresponding real-time operating system of the respective data processing device.

2. The method according to claim 1, Its features are, - Within the scope of method step a.), in the data communication, input data for additional software applications and / or devices is stored, and / or output data for additional software applications and / or devices is stored.

3. The method according to claim 1 or 2, Its features are, At least one time value is assigned to the input data and / or output data stored in the I / O tracking database, respectively.

4. The method according to claim 1 or 2, Its features are, The method is designed and configured to enable uninterrupted data communication with other software applications and / or the device.

5. The method according to claim 1 or 2, Its features are, The first instance of the software application is executed cyclically in the first data processing device and the second instance of the software application is executed cyclically in the second data processing device.

6. The method according to claim 1 or 2, Its features are, The first and second instances of the software application are respectively designed and configured to perform real-time data communication with other software applications and / or the device.

7. The method according to claim 1 or 2, Its features are, The data communication application is conducted using a storage area shared by the participating communication partners.

8. The method according to claim 1 or 2, Its features are, During the process of establishing the first instance of the software application in the first data processing device, the status data is identified.

9. The method according to claim 1 or 2, Its features are, The first data processing device and the second data processing device are respectively designed and configured as control devices for controlling equipment or facilities.

10. A data processing system, comprising a first data processing device and a second data processing device according to any one of the preceding claims. in, The data processing system is designed and configured to transfer a software application from the first data processing device to the second data processing device by means of the method according to any one of the preceding claims.

Citation Information

Patent Citations

  • Real time automation device with a real-time data bus

    EP3611579A1

  • Method for operating a highly available computer system using one or more virtual machines

    DE102013106923A1