EP1894066A1 - Stored-program control - Google Patents
Stored-program controlInfo
- Publication number
- EP1894066A1 EP1894066A1 EP06754159A EP06754159A EP1894066A1 EP 1894066 A1 EP1894066 A1 EP 1894066A1 EP 06754159 A EP06754159 A EP 06754159A EP 06754159 A EP06754159 A EP 06754159A EP 1894066 A1 EP1894066 A1 EP 1894066A1
- Authority
- EP
- European Patent Office
- Prior art keywords
- task
- logic circuit
- plc
- cpu
- stored
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/05—Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
- G05B19/056—Programming the PLC
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/10—Plc systems
- G05B2219/13—Plc programming
- G05B2219/13068—Program divided in operation blocks, groups, tasks each executed
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/10—Plc systems
- G05B2219/13—Plc programming
- G05B2219/13071—Non time critical program by processor, time critical program by hardware
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/10—Plc systems
- G05B2219/15—Plc structure of the system
- G05B2219/15057—FPGA field programmable gate array
Definitions
- the present invention relates to a programmable logic controller (PLC) comprising a CPU operating at a first clock frequency, a configurable logic circuit operating at a second clock frequency and a bus to which the CPU and the logic circuit are connected, a PLC program being stored in the PLC, which comprises a first task and a second task, and wherein the first task is stored in the PLC such that it is executable by the CPU and wherein the second task is configured in the logic circuit.
- PLC programmable logic controller
- a task is understood to mean a time sequence unit of a program according to the European standard EN 61131.
- a task is defined by a name, a priority and a type that determines which condition triggers the start of the task. This condition can either be defined in time (cycle interval) or by an internal or external event at the occurrence of which the task is to be executed, for example the rising edge of a global project variable or an interrupt event of the controller.
- Each task can be assigned a sequence of programs that are to be executed when the task is executed.
- Cycle time of a task is the time between two consecutive times at which the task is executed.
- the time required for the execution of the task is usually lower and at most equal to the cycle time.
- a first task to be executed by the CPU can also be referred to as a hardware task as a software task and a second task configured in the logic circuit.
- the cycle time of the second task can be reduced by several orders of magnitude (10 4 to 10 5 ).
- the scope of the functions implementable in the logic circuit is limited, since this has only a certain size.
- CPU and programmable logic circuitry can be combined by decomposing a control program into a less time critical first task and a more time consuming second task, with the less time critical first task being executed by the CPU and the more time consuming second task being configured in the logic circuit.
- the combination of CPU and programmable logic circuitry per se is prior art. However, such solutions are associated with high development costs.
- the programming of the CPU and the configuration of the logic circuit takes place in different ways.
- the CPU is programmed by means of a list of sequential instructions formulated in a programming language.
- the logic circuit is defined by means of schematic input or via hardware description languages.
- the standard in addition to two graphical languages, the standard also defines three text-based languages that are mainly used by advanced users. Implementing a text-based language in a logic circuit is more difficult because it describes a sequential flow, whereas a graphical program already has a parallel structure.
- IEC 61131 defines execution time units called the tasks.
- the system of US 6,219,628 B1 has a data-driven system.
- the fast portion is configured in the logic circuit to be in the form of modules interconnected with one another, with the input data being incrementally passed from module to module in response to an enable signal.
- a cycle time therefore essentially corresponds to the time required for the data flow from the modules arranged at the input to the modules arranged at the output.
- the object of the invention is to develop a generic PLC such that it is programmable according to the standard IEC 61131. Furthermore, the PLC should have a higher speed.
- the measure according to the invention can be realized, for example, in such a way that at least part of the second task is configured in the logic circuit in the form of a combinatorial logic circuit.
- each input value of a signal is assigned the associated output value in exactly one cycle of the logic circuit.
- registers of corresponding width are provided in the logic circuit and the contents of these registers are determined by means of combinatorial logic from the register contents of the preceding cycle determined.
- the combinatorial logic circuit can be represented in the form of a table, wherein the rows of the table are formed by a final indication of all possible input values and the columns of the table are formed by the respectively associated output values.
- the programmer specifies the desired logic in a PLC programming language, such as structured text.
- a software tool generates the logic in a hardware description language, such as Verilog. This generation involves emulating global variables, configuring a synchronization unit, and generating the hardware task. In simple cases, the hardware task can be generated by a syntax translation. From the hardware description language, a bitstream is subsequently synthesized. The bitstream generated in this way then configures the logic in the logic circuit.
- control program stored in the PLC has, in addition to the first and the second task, at least one further task, wherein the at least one further task is configured in the logic circuit.
- a given control program can be split into a whole series of first and second tasks, the first tasks being respectively stored in the PLC such that they are executable by the CPU and the second tasks are respectively configured in the logic circuit.
- a given control program can be decomposed into a plurality of software and / or hardware tasks.
- the logic circuit has a control unit which is designed to control the execution of the configured in the logic circuit hardware tasks.
- control unit is designed such that it executes the second task at each clock of the logic circuit.
- control unit is designed such that it executes the second task at a predetermined multiple of the clock of the logic circuit.
- control unit is designed such that it the second task (first hardware task) and the at least one another task (second hardware task) executes at different clocks of the logic circuit.
- the configurable logic circuit comprises at least one FPGA (Field Programmable Gate Array).
- the configurable logic circuit can even be completely formed by an FPGA.
- a further variant of the invention relates to a programmable logic controller (PLC), in particular according to one of the aforementioned embodiments, comprising a CPU operating at a first clock frequency, a configurable logic circuit operating at a second clock frequency and a bus to which the CPU and the logic circuit are connected wherein the PLC stores a control program comprising a first task and a second task, and wherein the first task is stored in the PLC to be executable by the CPU and wherein the second task is configured in the logic circuit and wherein the first and the second task are designed such that they can exchange signals with each other.
- PLC programmable logic controller
- the application of a PLC in the control and measurement technology requires real-time capability of the control program. This is the ability to react to an event within a given period of time.
- the second tasks configured in the logic circuit must be able to run permanently and can not be stopped for signal or data exchange. For example, if the second task produces an output, then the output would be disrupted at that time. If the second task is configured to count input pulses, then input pulses would be missed during that time. Despite this limitation, a consistent signal or data exchange between the first and the second task (s) must be possible.
- a PLC having the features of claim 9.
- N an index indicating the number of each cycle of the second task
- M the corresponding index for the particular cycle of the first task
- the synchronization unit has at least two registers connected in series for temporarily storing the signals to be transmitted.
- This enables a method of controlling the transfer of data from the first tasks executed by the CPU of a PLC to the second tasks configured in the logic circuit, in which two values are exchanged for each value exchanged between the first and the second tasks Register are provided and in which the earlier data remain stored in the second register until the new transferring data has been transferred completely over the bus into the first register and then in a clock cycle of the receiving second task, the data to be transmitted from the first register to the second register are transmitted.
- a method of controlling the data transfer from the second tasks configured in the logic circuit to the first tasks executed by the CPU is provided in which two registers connected in series are provided for each value exchanged between the first and the second tasks the data to be transmitted is stored in the second register with each clock cycle of the second task, the data to be transferred is stored in the first register at a particular time, then the data in the first register is kept constant until it is sequentially sent over the bus the first task was transferred.
- the logic circuit has the synchronization unit.
- a further variant of the invention relates to a PLC, in particular according to one of the aforementioned embodiments comprising a CPU, a configurable logic circuit and a bus to which the CPU and the logic circuit are connected, wherein in the PLC a control program is stored, which has a first task and a second task and wherein the first task is stored in the PLC such that it is executable by the CPU and wherein the second task is configured in the logic circuit and wherein the control program comprises at least one global variable.
- Such global variables are available for all tasks in such a way that, in principle, each task can access the global variable both in writing and in reading. As such, it is known to a programmer that when it comes to the situation that multiple tasks write to a global variable, the global variable gets the value of the later write access.
- a data register is created in the emulation unit for each global variable.
- an output with a bit width adapted to the size of the respective global variable is created in the second task and connected to the respective data register of the emulation unit.
- another output is applied and connected to the emulation unit.
- the invention further relates to a method for programming a PLC with a CPU and a configurable logic circuit, in particular according to one of claims 1 to 13, with a control program to be executed by the PLC, the control program being in a text-based programming language.
- the European standard EN 61131-3 defines five different programming languages, two of which are graphical programming languages and three text-based programming languages. While the method defined in US 6,219,628 B1 is only applicable to graphical programming languages, the method defined in the embodiments described above is applicable to text-based programming languages.
- the invention further relates to a software tool for a text-based software for programming a PLC according to one of claims 1 to 13 with a control program to be executed by the PLC, wherein the software tool is designed such that the control program can be divided into a first part and a second part, and wherein the first part can be translated into a machine code readable by the CPU of the PLC and a hardware description can be generated from the second part and from the hardware description a bitstream configurable in the logic circuit of the PLC can be synthesized is and a disk on which a software tool of the aforementioned type is stored.
- Fig. 1 is a block diagram of an embodiment of an inventive
- FIG. 2 is a block diagram of the configurable logic circuit of the PLC after
- Fig. 1 is a block diagram of the logic circuit shown in Fig. 2, which is configured for a concrete application example
- Fig. 4 is a block diagram of an embodiment of an inventive
- Synchronization unit and Fig. 5 is a block diagram of an embodiment of an inventive
- Emulator unit Emulator unit.
- FIG. 1 shows a block diagram of a PLC 1, which comprises a CPU 2 and an FPGA 3, which are interconnected by a bus 8.
- Digital inputs 4 as well as analogue inputs 5 and digital outputs 6 as well as analogue outputs 7 are provided.
- the inputs 4, 5 and the outputs 6, 7 are connected to the FPGA 3, so that a quick response is possible. However, it remains up to the user whether the inputs 4, 5 or the outputs 6, 7 are to be processed in the first task or in the second task 11.
- further interfaces of the CPU 2 to further controls, to a visualization unit or to a development system (download, debugging).
- the module 9 can be connected to the FPGA 3 via a high-speed link 10.
- FIG. 2 shows a block diagram of the FPGA 3.
- the bold edged modules 11, 19 and 20 are configured depending on the control program.
- the remaining modules 12 to 16 and 18 are configured by default in FPGA 3.
- Registers 15, 16 and 18 represent the interface to the CPU 2.
- the registers 15 to 18 are connected to the bus 21 so that the data in the memory area of the CPU 2 are visible.
- the input-output unit 13 takes over tasks such as the synchronization of the inputs 4,5 or the driving of external analog-digital converters. This unit also resolves write conflicts to the outputs 6,7, so if software task (s) and hardware task (s) want to simultaneously write to one of the outputs 6,7.
- the emulation unit 20 for emulating global variables and the second task 11 configured in the FPGA 3 are also recognizable.
- the second task 11 communicates via a synchronization unit 19, which will be described in detail below via the bus 21 or the bus 8 with the CPU 2
- the control unit 12 assumes general control functions, such as the control of the execution of the second task 11, the definition of the cycle time of the second task 11 and additional functions such as debugging.
- the further module 14 can realize functions that would otherwise have to be done by additional chips. This may be, for example, a display controller or a CAN bus.
- example is to be measured with a PLC 2, the frequency of a digital input signal which is applied to the digital input 4. If the frequency is below an imaginary minimum, this should be signaled via one of the digital outputs 6, if the frequency is above a preset maximum, this should be signaled via another of the digital outputs 6.
- the control program is split into a first task and a second task 11.
- the second task 11 measures the frequency of the input signal by counting the positive edges of the pulses.
- the slower first task evaluates the counter readings and switches the digital outputs 6.
- the second task 11 (hardware task) is formulated as follows: TASK FastMain;
- the CounterModule program defines a Boolean variable named previousLevel. This stores the previous value of the input. Before the first execution of the program, previousLevel is LOW (thus has the logical value 0).
- the IF statement checks whether there is a positive edge of the signal. This is always given if the current state is already HIGH (that is, has the logical value 1), but the state stored in the previous level is still LOW.
- the first task to be performed by the CPU 2 is as follows:
- PROGRAM PLC_PRG VAR minValue: INT; maxValue: INT; previousValue: INT; difference: INT; END_VAR
- the program first defines the variables again. minValue and maxValue are the preset limits of the frequency. In previousValue the old counter reading is buffered. Before the first run, this variable is 0. The variable difference stores the difference between the current count and the count of the previous cycle.
- par ⁇ ut [1] is always HIGH if the difference is smaller than the preset value minValue.
- ParOut [2] is always HIGH if the difference is greater than the maximum (maxValue).
- the difference is a measure of the input frequency.
- the overflow of the counter does not need to be treated, as in case of overflow of the counter, an overflow also occurs during the subtraction.
- the two overflows cancel each other out so that the difference is correct in each case.
- the first task can take over other tasks, such as transmitting the measured frequency or saving in a log file.
- the second task 11 is generated in the hardware description language Verilog as follows:
- endmodule A module with the name FastTask is defined. All the input / output signals of the module are in parenthesis. These are then created in detail:
- clk is the system clock parln are the inputs, bit widths are given in square brackets.
- CounterValue is the generated counter value.
- output reg means that for the
- Output signal automatically creates a register.
- previsousLevel is created as a 1-bit register.
- the second task 11 is configured in the FPGA 3 as shown schematically in FIG. 3:
- the system clock goes to units 24, 25 and 19 (not shown)
- the input signal is present.
- the input signal corresponds to parln [1] in the program text above.
- the input-output unit 13 is not shown in this illustration.
- the input 23 leads to an AND-GATE 32 and to a D-FLIP FLOP 25 (data FLIP FLOP).
- the D-FLIP FLOP 25 is connected to the AND-GATTER 32 by a line 35.
- the input signal is fed to the D-FLIP FLOP 25.
- the output of the D-FLIP FLOP 25 corresponds to the input signal but is delayed by exactly one system clock.
- the output signal thus corresponds to the value "previousLevel" in the program text
- the AND gate 32 has an inverted input and corresponds to the IF instruction in the second task 1 1. If the condition of the IF instruction is fulfilled, then the output of the AND signal Gates 32 HIGH This causes the counter 24 to be incremented in this system clock.
- the output of the counter 24 is transferred via the synchronization unit 19 and the bus 8 to the CPU 2.
- the construction of a synchronization unit 19 is shown schematically in FIG.
- There are write registers 28, 29 and read registers 30, 31 are provided.
- the write registers 28, 29 and the read registers 30, 31 communicate with the second task 11.
- the data D to be read are applied to the registers 30 via the lines 33.
- a clock enable signal CE signal
- the CE signal Upon receipt of the CE signal, the data in the read registers 31 are overwritten with the data D currently present in the registers 30.
- the synchronization unit 19 communicates with the CPU 2.
- the direct implementation according to claim 1 would include a data register for storing the variables instead of the counter 24 and an adder with the constant "+1", which takes over the state change, but current synthesis tools are able to recognize this combination in Verilog and replace it with a counter.
- These optimizations allow the example described here to be clocked in currently available 500 MHz FPGAs. This corresponds to a cycle time of the hardware task of 2 ns.
- the PLC described here can therefore count signals with frequencies up to 250 MHz.
- FIG. 5 shows a block diagram of an emulation unit 20.
- the data register 37 holds the current value of the global variable. This is given on the one hand to the hardware task (right) as well as the read register 38, the buffer 39 and the address data bus 21 to the first task.
- the read register 38 has only the function of keeping the value constant while read from the bus 8; Access via the address data bus 21 generally takes several clock cycles of the system clock.
- register 37 All changes to the register 37 pass through the unit 36 (arbitration unit). This supplies to the register 37 the data (shown in bold) and an enable signal (thin). If the enable signal has the logic value 1, then the new data in the register 37 are adopted.
- the changes can be made either via bus 8 (in FIG. 5 on the right) or via the first task (in FIG. 5 on the left).
- the data is stored in register 40.
- the unit 41 detects a write access and in this case provides an enable signal that is HIGH for a system clock.
- the hardware task (second task 11) changes the global variable, it sets the enable signal HIGH (thin drawn) for one clock cycle. At the same time, he creates the new data. (drawn thickly).
- the unit 36 regulates the accesses to the register 37. It does this, for example, according to the following algorithm:
- the enable signal is HIGH and the data is the data of the first task.
- the enable signal is HIGH and the data is the data of the second task 11.
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Automation & Control Theory (AREA)
- Programmable Controllers (AREA)
Abstract
Disclosed is a stored-program control comprising a CPU operating at a first clock frequency, a configurable logic circuit operating at a second clock frequency, and a bus to which the CPU and the logic circuit are connected. A control program encompassing a first task and a second task is stored in the stored-program control. The first task is stored in the stored-program control in such a way that the same can be executed by the CPU while the second task in configured in the logic circuit. The logic circuit is configured such that the second task (11) can be executed by the logic circuit in exactly one clock pulse of the logic circuit.
Description
Speicherprogrammierbare Steuerung Programmable logic controller
Die vorliegende Erfindung betrifft eine speicherprogrammierbare Steuerung (SPS) umfassend eine mit einer ersten Taktfrequenz arbeitende CPU, einen mit einer zweiten Taktfrequenz arbeitenden konfigurierbaren Logikschaltkreis und einen Bus, an den die CPU und der Logikschaltkreis angeschlossen sind, wobei in der SPS ein Steuerungsprogramm gespeichert ist, das einen ersten Task und einen zweiten Task umfasst und wobei der erste Task derart in der SPS gespeichert ist, dass er von der CPU ausführbar ist und wobei der zweite Task im Logikschaltkreis konfiguriert ist.The present invention relates to a programmable logic controller (PLC) comprising a CPU operating at a first clock frequency, a configurable logic circuit operating at a second clock frequency and a bus to which the CPU and the logic circuit are connected, a PLC program being stored in the PLC, which comprises a first task and a second task, and wherein the first task is stored in the PLC such that it is executable by the CPU and wherein the second task is configured in the logic circuit.
Unter einem Task wird eine zeitliche Ablaufeinheit eines Programms nach der europäischen Norm EN 61131 verstanden. Ein Task ist definiert durch einen Namen, eine Priorität und einen Typ der festlegt, welche Bedingung den Start des Tasks auslöst. Diese Bedingung kann entweder zeitlich definiert sein (Zyklusintervall) oder durch ein internes oder externes Ereignis, bei dessen Eintreten der Task ausgeführt werden soll, beispielsweise die steigende Flanke einer globalen Projektvariable oder ein Interrupt-event der Steuerung. Jedem Task kann eine Folge von Programmen zugeordnet werden, die beim Ausführen des Tasks abgearbeitet werden sollen.A task is understood to mean a time sequence unit of a program according to the European standard EN 61131. A task is defined by a name, a priority and a type that determines which condition triggers the start of the task. This condition can either be defined in time (cycle interval) or by an internal or external event at the occurrence of which the task is to be executed, for example the rising edge of a global project variable or an interrupt event of the controller. Each task can be assigned a sequence of programs that are to be executed when the task is executed.
Unter Zykluszeit eines Tasks wird die Zeit verstanden, die zwischen zwei aufeinander folgenden Zeitpunkten liegt, zu denen der Task ausgeführt wird. Die Zeitdauer, die für die Ausführung des Tasks benötigt wird, ist meist geringer und maximal gleich groß der Zykluszeit.Cycle time of a task is the time between two consecutive times at which the task is executed. The time required for the execution of the task is usually lower and at most equal to the cycle time.
Im Rahmen dieser Beschreibung kann ein von der CPU auszuführender erster Task auch als Software-Task und ein im Logikschaltkreis konfigurierter zweiter Task auch als Hardware- Task bezeichnet werden.In the context of this description, a first task to be executed by the CPU can also be referred to as a hardware task as a software task and a second task configured in the logic circuit.
Da der programmierbare Logikschaltkreis parallel arbeitet, kann die Zykluszeit des zweiten Tasks um mehrere Größenordnungen (104 bis 105) verringert werden. Allerdings ist der Umfang der im Logikschaltkreis implementierbaren Funktionen beschränkt, da dieser nur eine bestimmte Größe hat.Since the programmable logic circuit operates in parallel, the cycle time of the second task can be reduced by several orders of magnitude (10 4 to 10 5 ). However, the scope of the functions implementable in the logic circuit is limited, since this has only a certain size.
Die Vorteile von CPU und programmierbarem Logikschaltkreis kann man kombinieren, indem man ein Steuerungsprogramm in einen weniger zeitkritischen ersten Task und einen zeitkritischeren zweiten Task zerlegt, wobei der weniger zeitkritische erste Task von der CPU abgearbeitet wird und der zeitkritischere zweite Task im Logikschaltkreis konfiguriert wird.
Die Kombination aus CPU und programmierbarem Logikschaltkreis an sich ist Stand der Technik. Allerdings sind solche Lösungen mit hohem Entwicklungsaufwand verbunden.The advantages of CPU and programmable logic circuitry can be combined by decomposing a control program into a less time critical first task and a more time consuming second task, with the less time critical first task being executed by the CPU and the more time consuming second task being configured in the logic circuit. The combination of CPU and programmable logic circuitry per se is prior art. However, such solutions are associated with high development costs.
Zum einen geschieht die Programmierung der CPU und der Konfiguration des Logikschaltkreises auf verschiedene Art und Weise. Die CPU wird mittels Liste von sequentiellen Befehlen programmiert, die in einer Programmiersprache formuliert sind. Der Logikschaltkreis wird mittels Schaltplaneingabe oder über Hardware-Beschreibungssprachen definiert.On the one hand, the programming of the CPU and the configuration of the logic circuit takes place in different ways. The CPU is programmed by means of a list of sequential instructions formulated in a programming language. The logic circuit is defined by means of schematic input or via hardware description languages.
Zum anderen müssen sowohl in der Software der CPU als auch im Logikschaltkreis Mittel vorgesehen werden, die den Datenaustausch ermöglichen. Nachdem die Programmierung der Hardware und der Software typischerweise von verschiedenen Ingenieuren erledigt wird, kommt zu der Kommunikation zwischen CPU und Logikschaltkreis auch die Kommunikation zwischen den Ingenieuren.On the other hand, means must be provided both in the software of the CPU and in the logic circuit, which allow the data exchange. After the hardware and software programming is typically done by different engineers, the communication between the CPU and the logic circuitry is also the communication between the engineers.
Es ist für den Anwender somit ein großer Vorteil, wenn er die Algorithmen der CPU und des Logikschaltkreises in derselben Programmiersprache schreiben kann und der Datenaustausch zwischen CPU und Logikschaltkreis automatisch erfolgt. Dieser Datenaustausch sollte idealerweise "transparent", also für den Anwender nicht sichtbar sein. Dadurch kann er einfach Programmteile zwischen CPU und Logikschaltkreis verschieben, ohne dass er die Kommunikation ändern muss.It is therefore a great advantage for the user if he can write the algorithms of the CPU and the logic circuit in the same programming language and the data exchange between the CPU and the logic circuit is automatic. This data exchange should ideally be "transparent", ie not visible to the user. This allows him to simply move program parts between the CPU and the logic circuit without having to change the communication.
Weiters ist es ein Vorteil, wenn der Anwender für die Programmierung des Gesamtsystems keine neue Programmiersprache erlernen muss, sondern eine Sprache verwenden kann, die im Steuerungsbereich weit verbreitet ist wie zum Beispiel IEC61131-3.Furthermore, it is an advantage if the user does not have to learn a new programming language for programming the overall system, but can use a language that is widely used in the control area, such as IEC61131-3.
Eine SPS mit einer CPU und einem konfigurierbaren Logikschaltkreis geht aus der US 6,219,628 B1 hervor.A PLC with a CPU and a configurable logic circuit is shown in US 6,219,628 B1.
Das System weist allerdings den Nachteil auf, dass es nicht der Norm IEC61131 entspricht.However, the system has the disadvantage that it does not comply with the standard IEC61131.
Erstens definiert die Norm neben zwei graphischen Sprachen auch drei textbasierte Sprachen, die von den fortgeschrittenen Benutzern hauptsächlich verwendet werden.
Das Implementieren einer textbasierten Sprache in einem Logikschaltkreis ist schwieriger, da diese einen sequentiellen Ablauf beschreiben, ein graphisches Programm dagegen bereits eine parallele Struktur hat.First, in addition to two graphical languages, the standard also defines three text-based languages that are mainly used by advanced users. Implementing a text-based language in a logic circuit is more difficult because it describes a sequential flow, whereas a graphical program already has a parallel structure.
Das Konvertieren der graphischen Sprachen in textbasierten ist hingegen Stand der Technik. Typischerweise übersetzen SPS-Systeme die graphischen Sprachen vor der Übersetzung in Maschinencode zuerst in eine textbasierte Zwischensprache (zum Beispiel AWL). Somit können mit der hier beschriebenen Erfindung sowohl textbasierte als auch graphische Sprachen ausgeführt werden.Conversely, converting the graphical languages to text-based is state of the art. Typically, PLC systems first translate the graphical languages into a text-based intermediate language (e.g., AWL) prior to translation into machine code. Thus, with the invention described herein, both text-based and graphical languages may be executed.
Zweitens definiert die IEC 61131 , wie bereits beschrieben, zeitliche Ausführungseinheiten die Tasks genannt werden. Das System der US 6,219,628 B1 weist hingegen ein datengetriebenes System auf. Wie beispielsweise aus den Figuren 16 und 19 dieser Schrift ersichtlich ist, wird der schnelle Teil derart im Logikschaltkreis konfiguriert, dass er in Form von miteinander vernetzten Modulen vorliegt, wobei die Eingangsdaten in Abhängigkeit von einem Enable-Signal schrittweise von Modul zu Modul weitergegeben werden. Eine Zykluszeit entspricht daher im Wesentlichen der Zeit, die für den Datenfluss von den am Eingang angeordneten Modulen bis zu den am Ausgang angeordneten Modulen benötigt wird.Secondly, as already described, IEC 61131 defines execution time units called the tasks. The system of US 6,219,628 B1, however, has a data-driven system. For example, as shown in Figures 16 and 19 of this document, the fast portion is configured in the logic circuit to be in the form of modules interconnected with one another, with the input data being incrementally passed from module to module in response to an enable signal. A cycle time therefore essentially corresponds to the time required for the data flow from the modules arranged at the input to the modules arranged at the output.
Weiters ergibt sich daraus das Problem, dass die Ausführung des schnellen Teiles immer mehrere Taktzyklen benötigt. Die resultierende SPS ist zwar schneller, als wenn das gesamte Programm auf der CPU ausgeführt würde. Die Geschwindigkeit des Logikschaltkreises wird aber nicht voll ausgenutzt.Furthermore, this results in the problem that the execution of the fast part always requires several clock cycles. The resulting PLC is faster than if the entire program were executed on the CPU. The speed of the logic circuit is not fully utilized.
Aufgabe der Erfindung ist es, eine gattungsgemäße SPS derart weiterzubilden, dass sie nach der Norm IEC 61131 programmierbar ist. Weiters soll die SPS eine höhere Geschwindigkeit aufweisen.The object of the invention is to develop a generic PLC such that it is programmable according to the standard IEC 61131. Furthermore, the PLC should have a higher speed.
Die erfindungsgemäße Maßnahme kann beispielsweise so realisiert werden, dass wenigstens ein Teil des zweiten Tasks im Logikschaltkreis in Form einer kombinatorischen Logikschaltung konfiguriert ist. Bei einer derartigen kombinatorischen Logikschaltung wird jedem Eingangswert eines Signals in genau einem Takt des Logikschaltkreises der dazugehörige Ausgangswert zugeordnet. Es werden für alle Variablen des Hardware-Tasks Register entsprechender Breite im Logikschaltkreis vorgesehen und es wird der Inhalt dieser Register mittels kombinatorischer Logik aus dem Registerinhalt des vorhergehenden Zyklus
ermittelt. Bei Hardware-Tasks einfacher Natur kann die kombinatorische Logikschaltung in Form einer Tabelle dargestellt werden, wobei die Zeilen der Tabelle durch eine abschließende Angabe aller möglicher Eingangswerte gebildet werden und die Spalten der Tabelle durch die jeweils dazugehörigen Ausgangswerte gebildet werden.The measure according to the invention can be realized, for example, in such a way that at least part of the second task is configured in the logic circuit in the form of a combinatorial logic circuit. In such a combinatorial logic circuit, each input value of a signal is assigned the associated output value in exactly one cycle of the logic circuit. Regarding all variables of the hardware task, registers of corresponding width are provided in the logic circuit and the contents of these registers are determined by means of combinatorial logic from the register contents of the preceding cycle determined. For hardware tasks of a simple nature, the combinatorial logic circuit can be represented in the form of a table, wherein the rows of the table are formed by a final indication of all possible input values and the columns of the table are formed by the respectively associated output values.
Der Programmierer gibt die gewünschte Logik in einer SPS-Programmiersprache, zum Beispiel strukturierter Text, vor. Ein Softwaretool generiert die Logik in einer Hardwarebeschreibungssprache, zum Beispiel Verilog. Dieses Generieren umfasst die Emulation von globalen Variablen, das Konfigurieren einer Synchronisierungseinheit sowie das Erzeugen des Hardware-Tasks. In einfachen Fällen kann das Erzeugen des Hardware- Tasks durch eine Syntaxübersetzung erfolgen. Aus der Hardwarebeschreibungssprache wird anschließend ein Bitstream synthetisiert. Mit dem so erzeugten Bitstream wird anschließend die Logik im Logikschaltkreis konfiguriert.The programmer specifies the desired logic in a PLC programming language, such as structured text. A software tool generates the logic in a hardware description language, such as Verilog. This generation involves emulating global variables, configuring a synchronization unit, and generating the hardware task. In simple cases, the hardware task can be generated by a syntax translation. From the hardware description language, a bitstream is subsequently synthesized. The bitstream generated in this way then configures the logic in the logic circuit.
Natürlich kann vorgesehen sein, dass das in der SPS gespeicherte Steuerungsprogramm neben dem ersten und dem zweiten Task wenigstens einen weiteren Task aufweist, wobei der wenigstens eine weitere Task im Logikschaltkreis konfiguriert ist. Im Allgemeinen kann ein vorgegebenes Steuerungsprogramm in eine ganze Reihe von jeweils ersten und zweiten Tasks aufgespalten werden, wobei die ersten Tasks jeweils derart in der SPS gespeichert sind, dass sie von der CPU ausführbar sind und die zweiten Tasks jeweils im Logikschaltkreis konfiguriert sind. Mit anderen Worten ist ein gegebenes Steuerungsprogramm in eine Vielzahl von Software- und/oder Hardware-Tasks zerlegbar.Of course, it can be provided that the control program stored in the PLC has, in addition to the first and the second task, at least one further task, wherein the at least one further task is configured in the logic circuit. In general, a given control program can be split into a whole series of first and second tasks, the first tasks being respectively stored in the PLC such that they are executable by the CPU and the second tasks are respectively configured in the logic circuit. In other words, a given control program can be decomposed into a plurality of software and / or hardware tasks.
Insbesondere - aber nicht ausschließlich - beim Vorliegen mehrerer Hardware-Tasks ist es vorteilhaft, wenn vorgesehen ist, dass der Logikschaltkreis eine Steuerungseinheit aufweist, die zur Steuerung der Ausführung der im Logikschaltkreis konfigurierten Hardware-Tasks ausgebildet ist.In particular - but not exclusively - in the presence of multiple hardware tasks, it is advantageous if it is provided that the logic circuit has a control unit which is designed to control the execution of the configured in the logic circuit hardware tasks.
Dies erlaubt eine größere Flexibilität hinsichtlich der Ausführbarkeit der im Logikschaltkreis konfigurierten zweiten Tasks. Je nach Anwendung kann beispielsweise vorgesehen sein, dass die Steuerungseinheit derart ausgebildet ist, dass sie den zweiten Task bei jedem Takt des Logikschaltkreises ausführt. Alternativ kann jedoch auch vorgesehen sein, dass die Steuerungseinheit derart ausgebildet ist, dass sie den zweiten Task bei einem vorgegebenen Vielfachen des Takts des Logikschaltkreises ausführt. Insbesondere kann beim Vorliegen von wenigstens zwei Hardware-Tasks vorgesehen sein, dass die Steuerungseinheit derart ausgebildet ist, dass sie den zweiten Task (erster Hardware-Task) und den wenigstens einen
weiteren Task (zweiter Hardware-Task) bei unterschiedlichen Takten des Logikschaltkreises ausführt.This allows greater flexibility in terms of the executability of the second tasks configured in the logic circuit. Depending on the application, it may be provided, for example, that the control unit is designed such that it executes the second task at each clock of the logic circuit. Alternatively, however, it can also be provided that the control unit is designed such that it executes the second task at a predetermined multiple of the clock of the logic circuit. In particular, in the presence of at least two hardware tasks can be provided that the control unit is designed such that it the second task (first hardware task) and the at least one another task (second hardware task) executes at different clocks of the logic circuit.
Besonders bevorzugt ist vorgesehen, dass der konfigurierbare Logikschaltkreis wenigstens einen FPGA (Field Programmable Gate Array) umfasst. Der konfigurierbare Logikschaltkreis kann sogar vollständig durch einen FPGA gebildet werden.It is particularly preferred that the configurable logic circuit comprises at least one FPGA (Field Programmable Gate Array). The configurable logic circuit can even be completely formed by an FPGA.
Eine weitere Variante der Erfindung betrifft eine speicherprogrammierbare Steuerung (SPS), insbesondere nach einem der vorgenannten Ausführungsbeispiele, umfassend eine mit einer ersten Taktfrequenz arbeitende CPU, einen mit einer zweiten Taktfrequenz arbeitenden konfigurierbaren Logikschaltkreis und einen Bus, an den die CPU und der Logikschaltkreis angeschlossen sind, wobei in der SPS ein Steuerungsprogramm gespeichert ist, das einen ersten Task und einen zweiten Task umfasst und wobei der erste Task derart in der SPS gespeichert ist, dass er von der CPU ausführbar ist und wobei der zweite Task im Logikschaltkreis konfiguriert ist und wobei der erste und der zweite Task derart ausgebildet sind, dass sie untereinander Signale austauschen können.A further variant of the invention relates to a programmable logic controller (PLC), in particular according to one of the aforementioned embodiments, comprising a CPU operating at a first clock frequency, a configurable logic circuit operating at a second clock frequency and a bus to which the CPU and the logic circuit are connected wherein the PLC stores a control program comprising a first task and a second task, and wherein the first task is stored in the PLC to be executable by the CPU and wherein the second task is configured in the logic circuit and wherein the first and the second task are designed such that they can exchange signals with each other.
Die Anwendung einer SPS in der Steuerungs- und Messtechnik erfordert Echtzeitfähigkeit des Steuerprogramms. Darunter versteht man die Fähigkeit innerhalb einer vorgegebenen Zeitspanne auf ein Ereignis reagieren zu können. Die im Logikschaltkreis konfigurierten zweiten Tasks müssen permanent laufen können und können nicht zum Signal- bzw. Datenaustausch angehalten werden. Wenn der zweite Task beispielsweise ein Ausgangssignal erzeugt, dann würde das Ausgangssignal zu dieser Zeit gestört werden. Ist der zweite Task derart konfiguriert, dass er Eingangsimpulse zählt, dann würden in dieser Zeit Eingangsimpulse übersehen werden. Trotz dieser Einschränkung muss ein konsistenter Signal- bzw. Datenaustausch zwischen dem bzw. den ersten und dem bzw. den zweiten Task(s) möglich sein.The application of a PLC in the control and measurement technology requires real-time capability of the control program. This is the ability to react to an event within a given period of time. The second tasks configured in the logic circuit must be able to run permanently and can not be stopped for signal or data exchange. For example, if the second task produces an output, then the output would be disrupted at that time. If the second task is configured to count input pulses, then input pulses would be missed during that time. Despite this limitation, a consistent signal or data exchange between the first and the second task (s) must be possible.
Dies wird durch eine SPS mit den Merkmalen des Anspruchs 9 gelöst. Durch das Vorsehen einer Synchronisierungseinheit über die der Signalaustausch erfolgt, wobei die Synchronisierungseinheit derart ausgebildet ist, dass die in einem Taktzyklus des empfangenden Tasks übertragenen Signale aus genau einem Taktzyklus des sendenden Tasks stammen, wird ein konsistenter Signal- bzw. Datenaustausch ermöglicht, da sich alle Daten bzw. Signale eines Daten- bzw. Signalsatzes auf den selben Zeitpunkt (den selben Zyklus) beziehen.
Dies sei im Folgenden anhand eines der Illustration dienenden, nicht einschränkend auszulegenden Beispiels erklärt:This is achieved by a PLC having the features of claim 9. By providing a synchronization unit via which the signal exchange takes place, wherein the synchronization unit is designed such that the signals transmitted in one clock cycle of the receiving task originate from exactly one clock cycle of the transmitting task, a consistent signal or data exchange is made possible since all Get data or signals of a data or signal set at the same time (the same cycle). This will be explained below with reference to an illustrative, nonlimiting example:
Unter der Annahme dass der erste Task eine Zykluszeit von 1 ms aufweist und dass der zweite Task eine Zykluszeit von 100 ns aufweist und unter Berücksichtigung der Tatsache, dass beide Zykluszeiten in etwa als Vielfache der Taktzeit des Logikschaltkreises (nachfolgend Systemtakt genannt) ausdrückbar sind, ergibt es sich, dass es bei jedem 10000-ten Systemtakt zu einem Datenaustausch kommt. (In der Praxis würde dies nicht stets exakt beim 10000-ten Systemtakt geschehen, wie der Fachmann weiß, ist eine gewisse Bandbreite von beispielsweise ± 500 Systemtakten zu erwarten.)Assuming that the first task has a cycle time of 1 ms, and that the second task has a cycle time of 100 ns, and taking into account that both cycle times are approximately expressible as multiples of the cycle time of the logic circuit (hereinafter called system clock) It is that there is a data exchange every 10000th system clock. (In practice, this would not always happen exactly at the 10000th system clock, as the expert knows, a certain bandwidth of, for example, ± 500 system clocks is to be expected.)
Sei N ein die Nummer des jeweiligen Zyklus des zweiten Tasks angebender Index und sei M der entsprechende Index für den jeweiligen Zyklus des ersten Tasks und sei angenommen, dass der erste Task drei Messwerte (A, B1 C) aus dem zweiten Task ausliest, dann ergibt sich folgendes:Let N be an index indicating the number of each cycle of the second task, and let M be the corresponding index for the particular cycle of the first task, and suppose that the first task reads three measurements (A, B 1 C) from the second task, then the following results:
Im Bezug auf den M-ten Zyklus des ersten Tasks müssen alle drei Messwerte aus dem Zyklus N=10 000 x M oder N=10 001 x M des zweiten Tasks stammen. Um eine konsistente Datenübertragung vom zweiten Task zum ersten Task sicherzustellen, darf es jedoch nicht vorkommen, dass zum Beispiel der Messwert A noch aus dem Zyklus N=10 000 x M stammt und die Messwerte B und C schon aus dem Zyklus N=10 001 x M stammen.With reference to the Mth cycle of the first task, all three measured values must come from the cycle N = 10 000 x M or N = 10 001 x M of the second task. In order to ensure consistent data transfer from the second task to the first task, however, it must not happen that, for example, the measured value A is still from the cycle N = 10 000 x M and the measured values B and C are already from the cycle N = 10 001 x M come from.
Äquivalentes gilt, wenn Daten vom ersten Task an den zweiten Task übergeben werden sollen. Alle Werte, die vom ersten Task an den zweiten Task übergeben werden, müssen innerhalb eines Zyklus des zweiten Tasks von ihrem alten auf den neu übergebenen Wert wechseln.The same applies if data is to be transferred from the first task to the second task. All values passed from the first task to the second task must change from their old to the new value within one cycle of the second task.
Dies kann beispielsweise dadurch realisiert werden, dass vorgesehen ist, dass die Synchronisierungseinheit wenigstens zwei hintereinander geschaltete Register zur Zwischenspeicherung der zu übertragenden Signale aufweist.This can be realized, for example, by providing that the synchronization unit has at least two registers connected in series for temporarily storing the signals to be transmitted.
Dies ermöglicht ein Verfahren zur Steuerung der Signal- bzw. Datenübertragung von den von der CPU einer SPS ausgeführten ersten Tasks zu den im Logikschaltkreis konfigurierten zweiten Tasks, bei dem für jeden Wert ,der zwischen dem ersten und den zweiten Tasks ausgetauscht wird, zwei hintereinander geschaltete Register vorgesehen sind und bei dem die früheren Daten solange im zweiten Register gespeichert bleiben, bis die neu zu
übertragenden Daten vollständig über den Bus ins erste Register übertragen wurden und wobei dann in einem Taktzyklus des empfangenden zweiten Tasks die zu übertragenden Daten vom ersten Register in das zweite Register übertragen werden.This enables a method of controlling the transfer of data from the first tasks executed by the CPU of a PLC to the second tasks configured in the logic circuit, in which two values are exchanged for each value exchanged between the first and the second tasks Register are provided and in which the earlier data remain stored in the second register until the new transferring data has been transferred completely over the bus into the first register and then in a clock cycle of the receiving second task, the data to be transmitted from the first register to the second register are transmitted.
Ebenso wird ein Verfahren zur Steuerung der Datenübertragung von den im Logikschaltkreis konfigurierten zweiten Tasks zu den von der CPU ausgeführten ersten Tasks ermöglicht, bei dem für jeden Wert, der zwischen den ersten und den zweiten Tasks ausgetauscht wird, zwei hintereinander geschaltete Register vorgesehen sind und bei dem die zu übertragenden Daten mit jedem Taktzyklus des zweiten Tasks im zweiten Register gespeichert werden, die zu übertragenden Daten zu einem bestimmten Zeitpunkt im ersten Register gespeichert werden, um dann die Daten im ersten Register solange konstant gehalten werden, bis es sequentiell über den Bus an den ersten Task übertragen wurden.Likewise, a method of controlling the data transfer from the second tasks configured in the logic circuit to the first tasks executed by the CPU is provided in which two registers connected in series are provided for each value exchanged between the first and the second tasks the data to be transmitted is stored in the second register with each clock cycle of the second task, the data to be transferred is stored in the first register at a particular time, then the data in the first register is kept constant until it is sequentially sent over the bus the first task was transferred.
Bei einer besonders bevorzugten Ausführungsform dieser Variante der Erfindung ist vorgesehen, dass der Logikschaltkreis die Synchronisierungseinheit aufweist.In a particularly preferred embodiment of this variant of the invention, it is provided that the logic circuit has the synchronization unit.
Eine weitere Variante der Erfindung betrifft eine SPS, insbesondere nach einem der vorgenannten Ausführungsbeispiele umfassend eine CPU, einen konfigurierbaren Logikschaltkreis und einen Bus an den die CPU und der Logikschaltkreis angeschlossen sind, wobei in der SPS ein Steuerungsprogramm gespeichert ist, das einen ersten Task und einen zweiten Task umfasst und wobei der erste Task derart in der SPS gespeichert ist, dass er von der CPU ausführbar ist und wobei der zweite Task im Logikschaltkreis konfiguriert ist und wobei das Steuerungsprogramm wenigstens eine globale Variable umfasst.A further variant of the invention relates to a PLC, in particular according to one of the aforementioned embodiments comprising a CPU, a configurable logic circuit and a bus to which the CPU and the logic circuit are connected, wherein in the PLC a control program is stored, which has a first task and a second task and wherein the first task is stored in the PLC such that it is executable by the CPU and wherein the second task is configured in the logic circuit and wherein the control program comprises at least one global variable.
Derartige globale Variablen sind für alle Tasks verfügbar und zwar so, dass im Prinzip jede Task sowohl schreibend als auch lesend auf die globale Variable zugreifen kann. An sich ist es einem Programmierer bekannt, dass, wenn es zu der Situation kommt dass mehrere Tasks auf eine globale Variable schreiben, die globale Variable den Wert des späteren Schreibzugriffs erhält.Such global variables are available for all tasks in such a way that, in principle, each task can access the global variable both in writing and in reading. As such, it is known to a programmer that when it comes to the situation that multiple tasks write to a global variable, the global variable gets the value of the later write access.
Das obige Verhalten ergibt sich aus der sequentiellen Ausführung von Software. Da der konfigurierbare Logikschaltkreis aber parallel arbeitet und nicht sequentiell, muss das Verhalten der globalen Variablen emuliert werden.The above behavior results from the sequential execution of software. However, since the configurable logic circuit operates in parallel rather than sequentially, the behavior of the global variable must be emulated.
Durch eine SPS mit den Merkmalen des Anspruchs 12 wird dies erreicht.
Beispielsweise kann vorgesehen sein, dass in der Emulationseinheit für jede globale Variable ein Datenregister angelegt ist. Für jede globale Variable wird ein Ausgang mit einer an die Größe der jeweiligen globalen Variable angepassten Bitbreite im zweiten Task angelegt und mit dem jeweiligen Datenregister der Emulationseinheit verbunden. Ebenso wird für jede globale Variable ein weiterer Ausgang (Enable, Fig. 5) angelegt und mit der Emulationseinheit verbunden.By a PLC with the features of claim 12 this is achieved. For example, it can be provided that a data register is created in the emulation unit for each global variable. For each global variable, an output with a bit width adapted to the size of the respective global variable is created in the second task and connected to the respective data register of the emulation unit. Likewise, for each global variable, another output (Enable, Fig. 5) is applied and connected to the emulation unit.
Die Erfindung betrifft weiters ein Verfahren zum Programmieren einer SPS mit einer CPU und einem konfigurierbaren Logikschaltkreis, insbesondere nach einem der Ansprüche 1 bis 13, mit einem von der SPS auszuführenden Steuerungsprogramm, wobei das Steuerungsprogramm in einer textbasierten Programmiersprache vorliegt.The invention further relates to a method for programming a PLC with a CPU and a configurable logic circuit, in particular according to one of claims 1 to 13, with a control program to be executed by the PLC, the control program being in a text-based programming language.
In der europäischen Norm EN 61131-3 sind fünf verschiedene Programmiersprachen definiert, von denen zwei grafische Programmiersprachen und drei textbasierte Programmiersprachen sind. Während das in der US 6,219,628 B1 definierte Verfahren nur bei grafischen Programmiersprachen anwendbar ist, ist das in den vorstehend beschriebenen Ausführungsformen definierte Verfahren bei textbasierten Programmiersprachen anwendbar.The European standard EN 61131-3 defines five different programming languages, two of which are graphical programming languages and three text-based programming languages. While the method defined in US 6,219,628 B1 is only applicable to graphical programming languages, the method defined in the embodiments described above is applicable to text-based programming languages.
Dies kann dadurch erfolgen, dass ein Softwaretool das Steuerungsprogramm in einen ersten Teil und einen zweiten Teil zerlegt, wobei der erste Teil in einen von der CPU der SPS lesbaren Maschinencode übersetzt wird und wobei aus dem zweiten Teil eine Hardwarebeschreibung generiert wird und wobei aus der Hardwarebeschreibung ein Bitstream synthetisiert wird und anschließend der übersetzte erste Teil derart in der SPS gespeichert wird, dass er von der CPU ausführbar ist und der synthetisierte Bitstream im Logikschaltkreis konfiguriert wird.This can be done by a software tool decomposing the control program into a first part and a second part, the first part being translated into a machine code readable by the PLC's CPU, and a hardware description being generated from the second part, and being from the hardware description a bit stream is synthesized, and then the translated first part is stored in the PLC so that it is executable by the CPU and the synthesized bit stream is configured in the logic circuit.
Dies ist insofern von Bedeutung als es sich bei den Anwendern von textbasierten bzw. grafischen Programmiersprachen um völlig unterschiedliche Gruppen hinsichtlich ihrer Qualifikation als Programmierer handelt. Benutzer von textbasierten Programmiersprachen haben im Allgemeinen fundierte Programmierkenntnisse und stellen auch höhere Anforderungen an die von der SPS zu bewältigende Funktionalität.This is important insofar as the users of text-based or graphical programming languages are completely different groups with regard to their qualification as programmers. Users of text-based programming languages generally have profound programming skills and also have higher requirements for the functionality to be handled by the PLC.
Die Erfindung betrifft weiters ein Softwaretool für eine textbasierte Software zum Programmieren einer SPS nach einem der Ansprüche 1 bis 13 mit einem von der SPS auszuführenden Steuerungsprogramm, wobei das Softwaretool derart ausgebildet ist, dass
das Steuerungsprogramm in einen ersten Teil und einen zweiten Teil zerlegbar ist und wobei der erste Teil in einen von der CPU der SPS lesbaren Maschinencode übersetzbar ist und aus dem zweiten Teil eine Hardwarebeschreibung generierbar ist und wobei aus der Hardwarebeschreibung ein im Logikschaltkreis der SPS konfigurierbarer Bitstream synthetisierbar ist sowie einen Datenträger, auf dem ein Softwaretool der vorgenannten Art gespeichert ist.The invention further relates to a software tool for a text-based software for programming a PLC according to one of claims 1 to 13 with a control program to be executed by the PLC, wherein the software tool is designed such that the control program can be divided into a first part and a second part, and wherein the first part can be translated into a machine code readable by the CPU of the PLC and a hardware description can be generated from the second part and from the hardware description a bitstream configurable in the logic circuit of the PLC can be synthesized is and a disk on which a software tool of the aforementioned type is stored.
Weitere Vorteile und Einzelheiten ergeben sich anhand der nachfolgenden Figuren sowie der dazugehörigen Figurenbeschreibungen. Dabei zeigen:Further advantages and details will become apparent from the following figures and the accompanying description of the figures. Showing:
Fig. 1 ein Blockschaltbild eines Ausführungsbeispiels einer erfindungsgemäßenFig. 1 is a block diagram of an embodiment of an inventive
SPS, Fig. 2 ein Blockschaltbild des konfigurierbaren Logikschaltkreises der SPS nachPLC, Fig. 2 is a block diagram of the configurable logic circuit of the PLC after
Fig. 1 , Fig. 3 ein Blockschaltbild des in Fig. 2 dargestellten Logikschaltkreises, der für ein konkretes Anwendungsbeispiel konfiguriert ist, Fig. 4 ein Blockschaltbild eines Ausführungsbeispiels einer erfindungsgemäßenFig. 1, Fig. 3 is a block diagram of the logic circuit shown in Fig. 2, which is configured for a concrete application example, Fig. 4 is a block diagram of an embodiment of an inventive
Synchronisierungseinheit und Fig. 5 ein Blockschaltbild eines Ausführungsbeispiels einer erfindungsgemäßenSynchronization unit and Fig. 5 is a block diagram of an embodiment of an inventive
Emulationseinheit.Emulator unit.
Fig. 1 zeigt ein Blockschaltbild einer SPS 1 , welche eine CPU 2 und einen FPGA 3 umfasst, die durch einen Bus 8 miteinander verbunden sind. Es sind Digitaleingänge 4 sowie analoge Eingänge 5 und Digitalausgänge 6 sowie analoge Ausgänge 7 vorgesehen. Die Eingänge 4, 5 bzw. die Ausgänge 6, 7 sind mit dem FPGA 3 verbunden, damit eine schnelle Reaktion möglich ist. Es bleibt jedoch dem Benutzer überlassen, ob die Eingänge 4, 5 bzw. die Ausgänge 6, 7 im ersten Task oder im zweiten Task 11 bearbeitet werden sollen. Nicht eingezeichnet sind weitere Schnittstellen der CPU 2 zu weiteren Steuerungen, zu einer Visualisierungseinheit bzw. zu einem Entwicklungssystem (Download, Debugging). Gezeigt ist ein optional vorsehbares Erweiterungsmodul 9 für den FPGA 3, welches auch ein schnelles Eingabe-Ausgabemodul darstellen kann. Das Modul 9 ist über einen Highspeed- Link 10 mit dem FPGA 3 verbindbar.1 shows a block diagram of a PLC 1, which comprises a CPU 2 and an FPGA 3, which are interconnected by a bus 8. Digital inputs 4 as well as analogue inputs 5 and digital outputs 6 as well as analogue outputs 7 are provided. The inputs 4, 5 and the outputs 6, 7 are connected to the FPGA 3, so that a quick response is possible. However, it remains up to the user whether the inputs 4, 5 or the outputs 6, 7 are to be processed in the first task or in the second task 11. Not shown are further interfaces of the CPU 2 to further controls, to a visualization unit or to a development system (download, debugging). Shown is an optional providable expansion module 9 for the FPGA 3, which may also represent a fast input-output module. The module 9 can be connected to the FPGA 3 via a high-speed link 10.
In Fig. 2 ist ein Blockschaltbild des FPGA 3 dargestellt. Die fett umrandeten Module 11 , 19 und 20 werden in Abhängigkeit vom Steuerungsprogramm konfiguriert. Die übrigen Module 12 bis 16 und 18 sind standardmäßig im FPGA 3 konfiguriert. Die Register 15, 16 und 18
stellen die Schnittstelle zur CPU 2 dar. Die Register 15 bis 18 werden so an den Bus 21 angeschlossen, dass die Daten im Speicherbereich der CPU 2 sichtbar werden. Die Input- Output-Einheit 13 übernimmt Aufgaben wie das Synchronisieren der Eingänge 4,5 oder das Ansteuern von externen Analog-Digital-Wandlern. Diese Einheit löst auch Schreibkonflikte auf die Ausgänge 6,7 auf, wenn also Software-Task(s) und Hardware-Task(s) gleichzeitig auf einen der Ausgänge 6,7 schreiben wollen. Erkennbar sind weiters die Emulationseinheit 20 zum Emulieren globaler Variabler und der im FPGA 3 konfigurierte zweite Task 11. Der zweite Task 11 kommuniziert über eine Synchronisierungseinheit 19, welche nachfolgend noch genau beschrieben werden wird über den Bus 21 bzw. den Bus 8 mit der CPU 2. Die Steuerungseinheit 12 übernimmt allgemeine Steuerfunktionen, wie beispielsweise die Steuerung der Ausführung des zweiten Tasks 11 , die Definition der Zykluszeit des zweiten Tasks 1 1 sowie Zusatzfunktionen wie zum Beispiel Debugging. Das weitere Modul 14 kann Funktionen realisieren, die sonst durch zusätzliche Chips erledigt werden müssten. Dabei kann es sich beispielsweise um einen Displaycontroller oder um einen CAN-Bus handeln.FIG. 2 shows a block diagram of the FPGA 3. The bold edged modules 11, 19 and 20 are configured depending on the control program. The remaining modules 12 to 16 and 18 are configured by default in FPGA 3. Registers 15, 16 and 18 represent the interface to the CPU 2. The registers 15 to 18 are connected to the bus 21 so that the data in the memory area of the CPU 2 are visible. The input-output unit 13 takes over tasks such as the synchronization of the inputs 4,5 or the driving of external analog-digital converters. This unit also resolves write conflicts to the outputs 6,7, so if software task (s) and hardware task (s) want to simultaneously write to one of the outputs 6,7. The emulation unit 20 for emulating global variables and the second task 11 configured in the FPGA 3 are also recognizable. The second task 11 communicates via a synchronization unit 19, which will be described in detail below via the bus 21 or the bus 8 with the CPU 2 The control unit 12 assumes general control functions, such as the control of the execution of the second task 11, the definition of the cycle time of the second task 11 and additional functions such as debugging. The further module 14 can realize functions that would otherwise have to be done by additional chips. This may be, for example, a display controller or a CAN bus.
Bei einem vereinfacht dargestellten, anhand der Fig. 3 erläuterten Beispiel soll mit einer SPS 2 die Frequenz eines digitalen Eingangssignals, welches am Digitaleingang 4 anliegt, gemessen werden. Wenn die Frequenz unter einem vorgestellten Minimum liegt, soll dies über einen der Digitalausgänge 6 signalisiert werden, wenn die Frequenz über einen voreingestellten Maximum liegt, soll dies über einen weiteren der Digitalausgänge 6 signalisiert werden.In a simplified example, explained with reference to FIG. 3 example is to be measured with a PLC 2, the frequency of a digital input signal which is applied to the digital input 4. If the frequency is below an imaginary minimum, this should be signaled via one of the digital outputs 6, if the frequency is above a preset maximum, this should be signaled via another of the digital outputs 6.
Das Steuerungsprogramm wird in einen ersten Task und einen zweiten Task 11 zerlegt. Der zweite Task 11 misst die Frequenz des Eingangssignals, in dem er die positiven Flanken der Impulse zählt. Der langsamere erste Task wertet die Zählerstände aus und schaltet die Digitalausgänge 6.The control program is split into a first task and a second task 11. The second task 11 measures the frequency of the input signal by counting the positive edges of the pulses. The slower first task evaluates the counter readings and switches the digital outputs 6.
In der in der EN 61131-3 definierten SPS-Programmiersprache „strukturierter Text" wird der zweite Task 11 (Hardware-Task) wie folgt formuliert:
TASK FastMain;In the PLC programming language "structured text" defined in EN 61131-3, the second task 11 (hardware task) is formulated as follows: TASK FastMain;
CounterModuleO; END_TASKCounterModuleO; END_TASK
PROGRAM CounterModule VAR previousLevel: BOOL; END_VAR VAR_OUTPUT counterValue: INT; END_VARPROGRAM CounterModule VAR previousLevel: BOOL; END_VAR VAR_OUTPUT counterValue: INT; END_VAR
IF parln[1] AND NOT previousLevel THEN counterValue:= counterValue+1; ENDJF previousLevel:= parln[1]; END PROGRAMIF parln [1] AND NOT previousLevel THEN counterValue: = counterValue + 1; ENDJF previousLevel: = parln [1]; END PROGRAM
Das Programm CounterModule definiert eine Boole'sche Variable mit dem Namen previousLevel. In dieser wird der vorhergehende Wert des Eingangs gespeichert. Vor der ersten Ausführung des Programmes ist previousLevel LOW (hat also den logischen Wert 0).The CounterModule program defines a Boolean variable named previousLevel. This stores the previous value of the input. Before the first execution of the program, previousLevel is LOW (thus has the logical value 0).
Dann definiert das Programm eine Ausgangsvariable mit dem Namen counterValue. Nach der Definition der Variablen folgen die Anweisungen, die zyklisch ausgeführt werden.Then the program defines an output variable called counterValue. After the definition of the variable, the instructions follow, which are executed cyclically.
In dem Beispiel wird angenommen, dass die digitalen Eingänge in der SPS mit dem Namen parln zur Verfügung gestellt werden. Der Ausdruck parln[1] beschreibt dann den Zustand des Eingangs Nummer 1 , an dem das zu zählende Signal anliegt.In the example it is assumed that the digital inputs are provided in the PLC with the name parln. The expression parln [1] then describes the state of input number 1 to which the signal to be counted is applied.
Die IF-Anweisung prüft, ob eine positive Flanke des Signals vorliegt. Diese ist immer dann gegeben, wenn der aktuelle Zustand schon HIGH ist (also den logischen Wert 1 hat), der in previousLevel gespeicherte Zustand aber noch LOW ist.The IF statement checks whether there is a positive edge of the signal. This is always given if the current state is already HIGH (that is, has the logical value 1), but the state stored in the previous level is still LOW.
In diesem Fall wird der Zähler „counterValue" um 1 erhöht. Anschließend wird der nächste Zyklus vorbereitet, indem der aktuelle Wert in der Variablen previousValue gespeichert wird.
Der von der CPU 2 auszuführende erste Task lautet wie folgt:In this case, the CounterValue counter is incremented by 1. Then, the next cycle is prepared by storing the current value in the previousValue variable. The first task to be performed by the CPU 2 is as follows:
TASK Main;TASK Main;
PLC_PRG(); END_TASK •PLC_PRG (); END_TASK •
PROGRAM PLC_PRG VAR minValue: INT; maxValue: INT; previousValue: INT; difference: INT; END_VARPROGRAM PLC_PRG VAR minValue: INT; maxValue: INT; previousValue: INT; difference: INT; END_VAR
difference:= CounterModule.counterValue - previousValue; previousValue:= CounterModule.counterValue;difference: = CounterModule.counterValue - previousValue; previousValue: = CounterModule.counterValue;
parOut [1] := difference < minValue; parOut [2] := difference > maxValue;parOut [1]: = difference <minValue; parOut [2]: = difference> maxValue;
END_ PROGRAMEND_ PROGRAM
Zuerst wird wieder der Task angelegt. Dieser führt das Hauptprogramm des Steuerungsprogramms aus, welches immer den Namen PLC_PRG trägt.First, the task is created again. This executes the main program of the control program, which always bears the name PLC_PRG.
Das Programm definiert zunächst wieder die Variablen. minValue und maxValue sind die voreingestellten Grenzwerte der Frequenz. In previousValue ist der alte Zählerstand zwischengespeichert. Vor dem ersten Durchlauf ist diese Variable 0. Die Variable difference speichert die Differenz zwischen dem aktuellen Zählerstand und dem Zählerstand des vorigen Zyklus.The program first defines the variables again. minValue and maxValue are the preset limits of the frequency. In previousValue the old counter reading is buffered. Before the first run, this variable is 0. The variable difference stores the difference between the current count and the count of the previous cycle.
Nach der Definition der Variablen beginnen wieder die Anweisungen.After defining the variables, the instructions start again.
Zuerst wird die Differenz der Zählerstände berechnet. Mit der Syntax „CounterModule.counterValue" wird auf den Wert des zweiten Tasks 11 zugegriffen.
Dann wird der aktuelle Zählerstand in previousValue gespeichert, damit der Wert im nächsten Zyklus zur Verfügung steht.First the difference of the counter readings is calculated. The value of the second task 11 is accessed with the syntax "CounterModule.counterValue". Then the current counter reading is stored in previousValue so that the value is available in the next cycle.
Anschließend werden die zwei digitalen Ausgänge geschaltet. parθut[1] ist immer dann HIGH, wenn die Differenz kleiner dem voreingestellten Wert minValue ist. Parθut[2] ist immer dann HIGH, wenn die Differenz größer dem Maximum (maxValue) ist.Then the two digital outputs are switched. parθut [1] is always HIGH if the difference is smaller than the preset value minValue. ParOut [2] is always HIGH if the difference is greater than the maximum (maxValue).
Die Differenz ist ein Maß für die Eingangsfrequenz. Die Eingangsfrequenz in Hertz berechnet sich aus der Formel „Eingangsfrequenz = (Differenz/Zykluszeit des langsamen Tasks)".The difference is a measure of the input frequency. The input frequency in hertz is calculated from the formula "input frequency = (difference / cycle time of the slow task)".
Der Überlauf des Zählers muss nicht behandelt werden, da im Falle eines Überlaufs des Zählers auch bei der Subtraktion ein Überlauf auftritt. Die beiden Überläufe heben sich auf, sodass die Differenz in jedem Fall richtig ist.The overflow of the counter does not need to be treated, as in case of overflow of the counter, an overflow also occurs during the subtraction. The two overflows cancel each other out so that the difference is correct in each case.
Der erste Task kann weitere Aufgaben übernehmen, wie das Übertragen der gemessenen Frequenz oder Speichern in einer Log-Datei.The first task can take over other tasks, such as transmitting the measured frequency or saving in a log file.
Der zweite Task 11 wird in der Hardwarebeschreibungssprache Verilog wie folgt generiert:The second task 11 is generated in the hardware description language Verilog as follows:
module FastTask(clk,parln,counterValue);module FastTask (clk, parln, counterValue);
input clk; input [7:0] parln; output reg [15:0] counterValue;input clk; input [7: 0] parln; output reg [15: 0] counterValue;
reg previousLevel;reg previousLevel;
always @(posedge clk) begin if (parln[1] & IpreviousLevel) counterValue= counterValue+1 ; previousl_evel= parln[1]; endalways @ (posedge clk) begin if (parln [1] & ipreviousLevel) counterValue = counterValue + 1; previousl_evel = parln [1]; end
endmodule
Es wird ein Modul mit dem Namen FastTask definert. In Klammer stehen alle Ein-Ausgangs- Signale des Modules. Diese werden dann im Detail angelegt:endmodule A module with the name FastTask is defined. All the input / output signals of the module are in parenthesis. These are then created in detail:
clk ist der Systemtakt parln sind die Eingänge, Bitbreiten werden in eckigen Klammern angegeben.clk is the system clock parln are the inputs, bit widths are given in square brackets.
CounterValue ist der generierte Zählerwert. Die Klausel „output reg" bedeutet, dass für dasCounterValue is the generated counter value. The clause "output reg" means that for the
Ausgangssignal automatisch ein Register angelegt wird.Output signal automatically creates a register.
Dann wird previsousLevel als 1 bit - Register angelegt.Then previsousLevel is created as a 1-bit register.
Die Zeile "always @(posedge clk)" beginnt einen Task. Dieser wird bei jedem Systemtakt clk ausgeführt, „if" entspricht dem IF des strukturierten Texts. „&" ist UND, „!" ist NICHT. Der Rest ist gleich wie im strukturierten TextThe line "always @ (posedge clk)" starts a task. This is executed at every system clock clk, "if" corresponds to the IF of the structured text. "&" Is AND, "!" Is NOT, the rest is the same as in the structured text
Der zweite Task 11 wird im FPGA 3 wie in Fig. 3 schematisch dargestellt konfiguriert:The second task 11 is configured in the FPGA 3 as shown schematically in FIG. 3:
Der Systemtakt geht an die Einheiten 24, 25 und 19 (nicht eingezeichnet)The system clock goes to units 24, 25 and 19 (not shown)
In diesem Beispiel ist angenommen, dass der zweite Task 11 in jedem Zyklus des Systemtakts ausgeführt wird.In this example, it is assumed that the second task 11 is executed every cycle of the system clock.
Am Eingang 23 liegt das Eingangssignal an. Das Eingangssignal entspricht parln[1] im obigen Programmtext. Die Input-Output-Einheit 13 ist in dieser Darstellung nicht gezeigt. Der Eingang 23 führt zu einem UND-GATTER 32 sowie zu einem D-FLIP FLOP 25 (Daten-FLIP FLOP). Das D-FLIP FLOP 25 liegt mit einer Leitung 35 am UND-GATTER 32 an. Das Eingangssignal wird an das D-FLIP FLOP 25 geführt. Der Ausgang des D-FLIP FLOP 25 entspricht dem Eingangssignal, ist aber um genau einen Systemtakt verzögert. Das Ausgangssignal entspricht also dem Wert „previousLevel" im Programmtext. Das UND- GATTER 32 hat einen invertierten Eingang und entspricht der IF-Anweisung im zweiten Task 1 1. Wenn die Bedingung der IF-Anweisung erfüllt ist, dann ist der Ausgang des UND-Gatters 32 HIGH. Das bewirkt, dass der Zähler 24 in diesem Systemtakt erhöht wird.At the input 23, the input signal is present. The input signal corresponds to parln [1] in the program text above. The input-output unit 13 is not shown in this illustration. The input 23 leads to an AND-GATE 32 and to a D-FLIP FLOP 25 (data FLIP FLOP). The D-FLIP FLOP 25 is connected to the AND-GATTER 32 by a line 35. The input signal is fed to the D-FLIP FLOP 25. The output of the D-FLIP FLOP 25 corresponds to the input signal but is delayed by exactly one system clock. The output signal thus corresponds to the value "previousLevel" in the program text The AND gate 32 has an inverted input and corresponds to the IF instruction in the second task 1 1. If the condition of the IF instruction is fulfilled, then the output of the AND signal Gates 32 HIGH This causes the counter 24 to be incremented in this system clock.
Der Ausgang des Zählers 24 wird über die Synchronisierungseinheit 19 und den Bus 8 an die CPU 2 übergeben.
Der Aufbau einer Synchronisierungseinheit 19 ist schematisch in Fig. 4 dargestellt. Es sind Schreibregister 28, 29 und Leseregister 30, 31 vorgesehen. Die Schreibregister 28, 29 und die Leseregister 30, 31 kommunizieren mit dem zweiten Task 11. Die zu lesenden Daten D liegen über die Leitungen 33 an den Registern 30 an. Über Leitungen 34 ist den Leseregistern 31 ein Clock-Enable-Signal (CE-Signal) zuführbar. Bei Eingang des CE- Signals werden die Daten in den Leseregistern 31 mit den aktuell in den Registern 30 vorliegenden Daten D überschrieben. Solange das CE-Signal gleich Null ist, bleibt der Ausgang an den Leseregistern 31 konstant, auch wenn sich der an den Leitungen 33 angelegte Eingangswert ändern sollte. Über den Bus 21 kommuniziert die Synchronisierungseinheit 19 mit der CPU 2.The output of the counter 24 is transferred via the synchronization unit 19 and the bus 8 to the CPU 2. The construction of a synchronization unit 19 is shown schematically in FIG. There are write registers 28, 29 and read registers 30, 31 are provided. The write registers 28, 29 and the read registers 30, 31 communicate with the second task 11. The data D to be read are applied to the registers 30 via the lines 33. Via lines 34, the read registers 31, a clock enable signal (CE signal) can be fed. Upon receipt of the CE signal, the data in the read registers 31 are overwritten with the data D currently present in the registers 30. As long as the CE signal is equal to zero, the output at the read registers 31 remains constant, even though the input value applied to the lines 33 should change. Via the bus 21, the synchronization unit 19 communicates with the CPU 2.
Der Ablauf ist wie folgt:The process is as follows:
Den Registern 28, 31 wird über die Leitungen 34 das CE-Signal zugeführt. Wenn diese Leitungen auf 1 geschalten sind, übernehmen die jeweiligen Register 28, 31 die Daten D in jedem Zyklus vom Eingang an den Ausgang. Bei CE = 0 behalten die Datenregister 28, 31 den aktuellen Wert. Zuerst ist das CE-Signal auf 1 gesetzt. Die Leseregister 30 erhalten permanent aktuelle Werte aus dem zweiten Task 11. Sodann setzt der erste Task über die Steuerungseinheit 12 das CE-Signal auf 0. Dadurch werden die Daten in den Leseregistern 31 eingefroren. Der erste Task liest die Daten sequentiell über den Bus 8 bzw. den Bus 21 ein und speichert sie im Arbeitsspeicher der CPU 2. Der erste Task schreibt dann die Ausgangswerte sequentiell über den Bus 8 bzw. den Bus 21 in die Schreibregister 29. Anschließend wird das CE-Signal auf 1 gesetzt. Hierdurch werden die Schreibwerte innerhalb eines Zyklus in die Register 28 und dann in den zweiten Task 11 übernommen. Gleichzeitig werden die in den Registern 31 vorliegenden Daten aktualisiert. Nach einem vollendeten Zyklus des ersten Task, beginnt dieser Vorgang von neuem.The registers 28, 31 is supplied via the lines 34, the CE signal. When these lines are switched to 1, the respective registers 28, 31 take the data D in each cycle from the input to the output. If CE = 0, the data registers 28, 31 retain the current value. First, the CE signal is set to 1. The read registers 30 permanently receive current values from the second task 11. The first task then sets the CE signal to 0 via the control unit 12. This causes the data in the read registers 31 to be frozen. The first task reads in the data sequentially via the bus 8 and the bus 21 and stores them in the main memory of the CPU 2. The first task then writes the output values sequentially via the bus 8 and the bus 21 in the write registers 29. Subsequently the CE signal is set to 1. As a result, the write values within a cycle in the register 28 and then in the second task 11 are adopted. At the same time, the data in registers 31 is updated. After a completed cycle of the first task, this process begins again.
Die hier gewählte Darstellung ist vereinfacht. In realer Anwendung werden zwei zusätzliche Signale benötigt: das Clock-Enable-Signal zur Steuerung der Zykluszeit und ein Reset- Signal zur Initialisierung.The representation chosen here is simplified. In real use, two additional signals are required: the clock enable signal for controlling the cycle time and a reset signal for initialization.
Weiters stellt das Blockschaltbild bereits eine optimierte Version dar. Die direkte Realisierung nach Anspruch 1 würde statt dem Zähler 24 ein Datenregister zur Speicherung der Variablen und einen Addierer mit der Konstanten „+1" beinhalten, der die Zustandsänderung übernimmt. Aktuelle Synthese-Tools sind aber in der Lage, diese Kombination in Verilog zu erkennen und durch einen Zähler zu ersetzen.
Diese Optimierungen ermöglichen, dass das hier beschriebene Beispiel in aktuell verfügbaren FPGAs mit 500 MHz getaktet werden kann. Das entspricht einer Zykluszeit des Hardware-Tasks von 2 ns. Die hier beschriebene SPS kann also Signale mit Frequenzen bis 250 MHz zählen.Furthermore, the block diagram already represents an optimized version The direct implementation according to claim 1 would include a data register for storing the variables instead of the counter 24 and an adder with the constant "+1", which takes over the state change, but current synthesis tools are able to recognize this combination in Verilog and replace it with a counter. These optimizations allow the example described here to be clocked in currently available 500 MHz FPGAs. This corresponds to a cycle time of the hardware task of 2 ns. The PLC described here can therefore count signals with frequencies up to 250 MHz.
Fig. 5 zeigt ein Blockschaltbild einer Emulationseinheit 20.5 shows a block diagram of an emulation unit 20.
Das Datenregister 37 hält den aktuellen Wert der globalen Variablen. Dieser wird einerseits an den Hardware-Task gegeben (rechts) als auch über das Leseregister 38, den Puffer 39 und den Adressdatenbus 21 an den ersten Task.The data register 37 holds the current value of the global variable. This is given on the one hand to the hardware task (right) as well as the read register 38, the buffer 39 and the address data bus 21 to the first task.
Das Leseregister 38 hat nur die Funktion, den Wert der konstant zu halten, während er vom Bus 8 gelesen wird; Ein Zugriff über den Adressdatenbus 21 dauert im Allgemeinen mehrere Taktzyklen des Systemtaktes.The read register 38 has only the function of keeping the value constant while read from the bus 8; Access via the address data bus 21 generally takes several clock cycles of the system clock.
Alle Änderungen des Registers 37 laufen über die Einheit 36 (Arbitriereinheit). Diese liefert an das Register 37 die Daten (fett gezeichnet) und ein Enable-Signal (dünn). Wenn das Enable-Signal den logischen Wert 1 hat, dann werden die neuen Daten im Register 37 übernommen.All changes to the register 37 pass through the unit 36 (arbitration unit). This supplies to the register 37 the data (shown in bold) and an enable signal (thin). If the enable signal has the logic value 1, then the new data in the register 37 are adopted.
Die Änderungen können entweder über den Bus 8 erfolgen (in Fig. 5 rechts) oder über den ersten Task (in Fig. 5 links)The changes can be made either via bus 8 (in FIG. 5 on the right) or via the first task (in FIG. 5 on the left).
Änderungen über den Bus 8:Changes via bus 8:
Bei Schreibzugriffen auf die globale Variable werden die Daten im Register 40 gespeichert. Die Einheit 41 erkennt einen Schreibzugriff und liefert in diesem Fall ein Enable-Signal, das für einen Systemtakt lang HIGH ist.For write accesses to the global variable, the data is stored in register 40. The unit 41 detects a write access and in this case provides an enable signal that is HIGH for a system clock.
Änderungen über den Hardware-Task:Changes via the hardware task:
Wenn der Hardware-Task (zweiter Task 11) die globale Variable ändert, dann setzt er das Enable-Signal für einen Taktzyklus HIGH (dünn gezeichnet). Gleichzeitig legt er die neuen Daten an. (dick gezeichnet).
Die Einheit 36 regelt die Zugriffe auf das Register 37. Sie macht das zum Beispiel nach folgendem Algorithmus:When the hardware task (second task 11) changes the global variable, it sets the enable signal HIGH (thin drawn) for one clock cycle. At the same time, he creates the new data. (drawn thickly). The unit 36 regulates the accesses to the register 37. It does this, for example, according to the following algorithm:
• Wenn kein Zugriff vorliegt, dann ist das Enable-Signal des Registers LOW. Die Daten sind in diesem Fall egal.• If there is no access, then the enable signal of the register is LOW. The data does not matter in this case.
• Wenn ein Schreibzugriff des ersten Task vorliegt, dann ist das Enable-Signal HIGH und die Daten sind die Daten des ersten Task.• If there is a write access of the first task, then the enable signal is HIGH and the data is the data of the first task.
• Wenn ein Schreibzugriff des zweiten Task 11 vorliegt, aber kein Zugriff des ersten Task, dann ist das Enable-Signal HIGH und die Daten sind die Daten des zweiten Task 11.If there is a write access of the second task 11 but no access of the first task, then the enable signal is HIGH and the data is the data of the second task 11.
Aus Fig. 5 ist ersichtlich, dass der zweite Task 11 für jede globale Variable drei Signale braucht.From Fig. 5 it can be seen that the second task 11 needs three signals for each global variable.
• einen Eingang entsprechend der Bitbreite der Variable (xxx_in)An input corresponding to the bit width of the variable (xxx_in)
• einen Ausgang entsprechend der Bitbreite der Variable (xxx_out)• an output corresponding to the bit width of the variable (xxx_out)
• einen Enable-Ausgang, der einen Schreibzugriff signalisiert (xxx_changed)• an enable output which signals a write access (xxx_changed)
Das muss natürlich bei der Generierung der Hardwarebeschreibung berücksichtigt werden und zwar wie folgt:Of course, this must be taken into account when generating the hardware description, as follows:
• Alle Lesezugriffe auf eine globale Variable werden mit Zugriffen auf den auf den entsprechenden Eingang ersetzt.• All read accesses to a global variable are replaced with accesses to the corresponding input.
• Alle Schreibzugriffe werden durch zwei Befehle ersetzt:• All write accesses are replaced by two commands:
1. Setzen des Ausgangs auf den entsprechenden Wert1. Set the output to the appropriate value
2. Für einen Taktzyklus das Enable-Signal HIGH setzen2. Set the enable signal HIGH for one clock cycle
Obwohl sich die Beschreibung auf zyklische Tasks bezieht, also auf Tasks, die mit einer vorgegebenen Periodizität ausgeführt werden, sind von der Offenbarung und vom Schutzumfang gleichermaßen nicht-zyklische Tasks umfasst. Wie bereits eingangs ausgeführt, versteht man hierunter Tasks, die immer bei Vorliegen eines bestimmten internen oder externen Ereignisses ausgeführt werden.
Although the description refers to cyclic tasks, that is, tasks performed at a given periodicity, the disclosure and the scope of protection equally encompass non-cyclic tasks. As already mentioned at the outset, this includes tasks that are always executed in the presence of a specific internal or external event.
Claims
1. SPS umfassend:1. PLC comprising:
- eine mit einer ersten Taktfrequenz arbeitende CPUa CPU operating at a first clock rate
- einen mit einer zweiten Taktfrequenz arbeitenden konfigurierbaren Logikschaltkreisa configurable logic circuit operating at a second clock frequency
- einen Bus, an den die CPU und der Logikschaltkreis angeschlossen sind, wobei in der SPS ein Steuerungsprogramm gespeichert ist, das einen ersten Task und einen zweiten Task umfasst und wobei der erste Task derart in der SPS gespeichert ist, dass er von der CPU ausführbar ist und wobei der zweite Task im Logikschaltkreis konfiguriert ist, dadurch gekennzeichnet, dass der Logikschaltkreis derart konfiguriert ist, dass der zweite Task (1 1 ) in genau einem Takt des Logikschaltkreises vom Logikschaltkreis ausführbar ist.a bus to which the CPU and the logic circuit are connected, wherein the PLC stores a control program comprising a first task and a second task, and wherein the first task is stored in the PLC such that it can be executed by the CPU is and wherein the second task is configured in the logic circuit, characterized in that the logic circuit is configured such that the second task (1 1) is executable in exactly one clock of the logic circuit of the logic circuit.
2. SPS nach Anspruch 1 , dadurch gekennzeichnet, dass wenigstens ein Teil des zweiten Tasks (11 ) im Logikschaltkreis in Form einer kombinatorischen Logikschaltung konfiguriert ist.2. PLC according to claim 1, characterized in that at least a part of the second task (11) is configured in the logic circuit in the form of a combinatorial logic circuit.
3. SPS nach Anspruch 1 oder 2, dadurch gekennzeichnet, dass das in der SPS (1 ) gespeicherte Steuerungsprogramm neben dem ersten und dem zweiten Task (1 1 ) wenigstens einen weiteren Task aufweist, wobei der wenigstens eine weitere Task im Logikschaltkreis konfiguriert ist.3. PLC according to claim 1 or 2, characterized in that in the PLC (1) stored control program in addition to the first and the second task (1 1) has at least one further task, wherein the at least one further task is configured in the logic circuit.
4. SPS nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, dass der Logikschaltkreis eine Steuerungseinheit (12) aufweist, die zur Steuerung der Ausführung der im Logikschaltkreis konfigurierten Tasks (11) ausgebildet ist.4. PLC according to one of claims 1 to 3, characterized in that the logic circuit comprises a control unit (12) which is designed to control the execution of the configured in the logic circuit tasks (11).
5. SPS nach Anspruch 4, dadurch gekennzeichnet, dass die Steuerungseinheit (12) derart ausgebildet ist, dass sie den zweiten Task (1 1 ) bei jedem Takt des Logikschaltkreises ausführt.5. PLC according to claim 4, characterized in that the control unit (12) is designed such that it executes the second task (1 1) at each clock of the logic circuit.
6. SPS nach Anspruch 4, dadurch gekennzeichnet, dass die Steuerungseinheit (10) derart ausgebildet ist, dass sie den zweiten Task (11 ) bei einem vorgegebenen Vielfachen des Takts des Logikschaltkreises ausführt. 6. PLC according to claim 4, characterized in that the control unit (10) is designed such that it executes the second task (11) at a predetermined multiple of the clock of the logic circuit.
7. SPS nach einem der Ansprüche 4 bis 6, dadurch gekennzeichnet, dass die Steuerungseinheit (12) derart ausgebildet ist, dass sie den zweiten Task (1 1 ) und den wenigstens einen weiteren Task bei unterschiedlichen Takten des Logikschaltkreises ausführt.7. PLC according to one of claims 4 to 6, characterized in that the control unit (12) is designed such that it executes the second task (1 1) and the at least one further task at different clocks of the logic circuit.
8. SPS nach einem der Ansprüche 1 bis 7, dadurch gekennzeichnet, dass der konfigurierbare Logikschaltkreis wenigstens einen FPGA (3) umfasst.8. PLC according to one of claims 1 to 7, characterized in that the configurable logic circuit comprises at least one FPGA (3).
9. SPS, insbesondere nach einem der Ansprüche 1 bis 8, umfassend:9. SPS, in particular according to one of claims 1 to 8, comprising:
- eine mit einer ersten Taktfrequenz arbeitende CPUa CPU operating at a first clock rate
- einen mit einer zweiten Taktfrequenz arbeitenden konfigurierbaren Logikschaltkreisa configurable logic circuit operating at a second clock frequency
- einen Bus, an den die CPU und der Logikschaltkreis angeschlossen sind, wobei in der SPS ein Steuerungsprogramm gespeichert ist, das einen ersten Task und einen zweiten Task umfasst und wobei der erste Task derart in der SPS gespeichert ist, dass er von der CPU ausführbar ist und wobei der zweite Task im Logikschaltkreis konfiguriert ist und wobei der erste und der zweite Task derart ausgebildet sind, dass sie untereinander Signale austauschen können, dadurch gekennzeichnet, dass die SPS (1 ) eine Synchronisierungseinheit (19) aufweist, über die der Signalaustausch erfolgt, wobei die Synchronisierungseinheit (19) derart ausgebildet ist, dass die in einem Taktzyklus des empfangenden Tasks übertragenen Signale aus genau einem Taktzyklus des sendenden Tasks stammen.a bus to which the CPU and the logic circuit are connected, wherein the PLC stores a control program comprising a first task and a second task, and wherein the first task is stored in the PLC such that it can be executed by the CPU is and wherein the second task is configured in the logic circuit and wherein the first and the second task are designed such that they can exchange signals with each other, characterized in that the PLC (1) has a synchronization unit (19) via which the signal exchange takes place wherein the synchronization unit (19) is designed such that the signals transmitted in one clock cycle of the receiving task originate from exactly one clock cycle of the sending task.
10. SPS nach Anspruch 9, dadurch gekennzeichnet, dass die Synchronisierungseinheit (19) wenigstens zwei hintereinander geschaltete Register (29, 30) zur Zwischenspeicherung der zu übertragenden Signale aufweist.10. The PLC according to claim 9, characterized in that the synchronization unit (19) has at least two registers (29, 30) connected in series for buffering the signals to be transmitted.
11. SPS nach Anspruch 9 oder 10, dadurch gekennzeichnet, dass der Logikschaltkreis die Synchronisierungseinheit (19) aufweist.11. PLC according to claim 9 or 10, characterized in that the logic circuit comprises the synchronization unit (19).
12. SPS, insbesondere nach einem der Ansprüche 1 bis 11 , umfassend eine CPU, einen konfigurierbaren Logikschaltkreis und einen Bus an den die CPU und der Logikschaltkreis angeschlossen sind, wobei in der SPS ein Steuerungsprogramm gespeichert ist, das einen ersten Task und einen zweiten Task umfasst und wobei der erste Task derart in der SPS gespeichert ist, dass er von der CPU ausführbar ist und wobei der zweite Task im Logikschaltkreis konfiguriert ist und wobei der Steuerungsprogramm wenigstens eine globale Variable umfasst, dadurch gekennzeichnet, dass im Logikschaltkreis eine Emulationseinheit (20) konfiguriert ist, die derart ausgebildet ist, dass sie bei einem Schreibzugriff mehrerer Tasks auf die globale Variable der globalen Variable den Wert des späteren Schreibzugriffs zuweist.12. A PLC, in particular according to one of claims 1 to 11, comprising a CPU, a configurable logic circuit and a bus to which the CPU and the logic circuit are connected, wherein in the PLC a control program is stored, which has a first task and a second task and wherein the first task is stored in the PLC such that it is executable by the CPU and wherein the second task is configured in the logic circuit and wherein the Control program comprises at least one global variable, characterized in that in the logic circuit, an emulation unit (20) is configured, which is designed such that it assigns the value of the later write access in a write access of multiple tasks to the global variable of the global variable.
13. SPS nach Anspruch 12, dadurch gekennzeichnet, dass die Emulationseinheit (20) derart ausgebildet ist, dass sie bei einem gleichzeitigen Schreibzugriff des ersten Tasks und des zweiten Tasks (11) der globalen Variable den Wert des Schreibzugriffs des ersten Tasks zuweist.A PLC according to claim 12, characterized in that the emulation unit (20) is adapted to assign the value of the write access of the first task to the global variable during simultaneous write access of the first task and the second task (11).
14. Verfahren zum Programmieren einer SPS mit einer CPU und einem konfigurierbaren Logikschaltkreis, insbesondere nach einem der Ansprüche 1 bis 13, mit einem von der SPS auszuführenden Steuerungsprogramm, wobei das Steuerungsprogramm in einer textbasierten Programmiersprache vorliegt, dadurch gekennzeichnet, dass ein Softwaretool das Steuerungsprogramm in einen ersten Teil und einen zweiten Teil zerlegt, wobei der erste Teil in einen von der CPU (2) der SPS (1 ) lesbaren Maschinencode übersetzt wird und wobei aus dem zweiten Teil eine Hardwarebeschreibung generiert wird und wobei aus der Hardwarebeschreibung ein Bitstream synthetisiert wird und anschließend der übersetzte erste Teil derart in der SPS (1 ) gespeichert wird, dass er von der CPU (2) ausführbar ist und der synthetisierte Bitstream im Logikschaltkreis konfiguriert wird.14. A method for programming a PLC with a CPU and a configurable logic circuit, in particular according to one of claims 1 to 13, with a PLC program to be executed by the PLC, wherein the control program is in a text-based programming language, characterized in that a software tool, the control program in decomposing a first part and a second part, the first part being translated into a machine code readable by the CPU (2) of the PLC (1), and a hardware description being generated from the second part and a bit stream being synthesized from the hardware description; then the translated first part is stored in the PLC (1) such that it is executable by the CPU (2) and the synthesized bit stream is configured in the logic circuit.
15. Verfahren zur Steuerung der Datenübertragung von den von der CPU einer SPS nach einem der Ansprüche 9 bis 13 ausgeführten ersten Tasks zu den im Logikschaltkreis konfigurierten zweiten Tasks, dadurch gekennzeichnet, dass für jeden Wert, der zwischen den ersten und den zweiten Tasks (11 ) ausgetauscht wird zwei hintereinander geschaltete Register (28, 29) vorgesehen sind und dass15. A method for controlling the data transfer from the first tasks executed by the CPU of a PLC according to one of claims 9 to 13 to the second tasks configured in the logic circuit, characterized in that for each value between the first and the second tasks (11 ) is replaced two registers (28, 29) connected in series, and that
- die früheren Daten solange im zweiten Register (28) gespeichert bleiben, bis die neu zu übertragenden Daten vollständig über den Bus (21 ) ins erste Register (29) übertragen wurden- The previous data remain stored in the second register (28) until the new data to be transferred have been completely transferred over the bus (21) in the first register (29)
- und dann in einem Taktzyklus die zu übertragenden Daten vom ersten Register (29) in das zweite Register (28) übertragen werden. - And then in a clock cycle, the data to be transmitted from the first register (29) in the second register (28) are transmitted.
16. Verfahren zur Steuerung der Datenübertragung von den im Logikschaltkreis einer SPS nach einem der Ansprüche 9 bis 13 konfigurierten zweiten Tasks zu den von der CPU ausgeführten ersten Tasks, dadurch gekennzeichnet, dass für jeden Wert, der zwischen den ersten und den zweiten Tasks (11 ) ausgetauscht wird zwei hintereinander geschaltete Register (30, 31 ) vorgesehen sind und dass16. A method of controlling the data transfer from the second tasks configured in the logic circuit of a PLC according to claim 9 to the first tasks executed by the CPU, characterized in that for each value that is between the first and the second tasks (11 ) is exchanged two registers (30, 31) connected in series are provided and that
- die zu übertragenden Daten mit jedem Taktzyklus des zweiten Tasks (11) im zweiten Register (30) gespeichert werden,the data to be transmitted is stored in the second register (30) with each clock cycle of the second task (11),
- die zu übertragenden Daten zu einem bestimmten Zeitpunkt im ersten Register (31 ) gespeichert werden- The data to be transmitted at a given time in the first register (31) are stored
- und dann die Daten im ersten Register (31 ) solange »konstant gehalten werden, bis sie sequentiell über den Bus (21 ) an den ersten Task übertragen wurden.- And then the data in the first register (31) as long as »held constant until they were transmitted sequentially via the bus (21) to the first task.
17. Softwaretool für eine textbasierte Software zum Programmieren einer SPS nach einem der Ansprüche 1 bis 13 mit einem von der SPS auszuführenden Steuerungsprogramm, dadurch gekennzeichnet, dass das Softwaretool derart ausgebildet ist, dass das Steuerungsprogramm in einen ersten Teil und einen zweiten Teil zerlegbar ist und dass der erste Teil in einen von der CPU (2) der SPS (1 ) lesbaren Maschinencode übersetzbar ist und aus dem zweiten Teil eine Hardwarebeschreibung generierbar ist und wobei aus der Hardwarebeschreibung ein im Logikschaltkreis der SPS (1 ) konfigurierbarer Bitstream synthetisierbar ist.17. Software tool for a text-based software for programming a PLC according to one of claims 1 to 13 with a PLC program to be executed by the PLC, characterized in that the software tool is designed such that the control program can be disassembled into a first part and a second part and in that the first part can be translated into a machine code which can be read by the CPU (2) of the PLC (1) and a hardware description can be generated from the second part, and a bitstream which can be configured in the logic circuit of the PLC (1) can be synthesized from the hardware description.
18. Datenträger, auf dem ein Softwaretool nach Anspruch 17 gespeichert ist. 18. disk on which a software tool according to claim 17 is stored.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
AT9622005A AT501880B1 (en) | 2005-06-07 | 2005-06-07 | MEMORY PROGRAMMABLE CONTROL |
PCT/EP2006/005389 WO2006131317A1 (en) | 2005-06-07 | 2006-06-06 | Stored-program control |
Publications (1)
Publication Number | Publication Date |
---|---|
EP1894066A1 true EP1894066A1 (en) | 2008-03-05 |
Family
ID=36939194
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
EP06754159A Withdrawn EP1894066A1 (en) | 2005-06-07 | 2006-06-06 | Stored-program control |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP1894066A1 (en) |
AT (1) | AT501880B1 (en) |
WO (1) | WO2006131317A1 (en) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140215096A1 (en) * | 2013-01-28 | 2014-07-31 | Ge Intelligent Platforms, Inc. | Method and system for a configurable hardware module |
EP2853965A1 (en) * | 2013-09-30 | 2015-04-01 | Siemens Aktiengesellschaft | Time deterministic human-machine interface device, and system and method for configuring the same |
IN2013CH05962A (en) * | 2013-12-20 | 2015-06-26 | Infotech Entpr Ltd |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE59107764D1 (en) * | 1991-02-22 | 1996-06-05 | Siemens Ag | Programmable logic controller |
US5731712A (en) * | 1995-11-09 | 1998-03-24 | Welch; John T. | Programmable gate array for relay ladder logic |
US6219628B1 (en) * | 1997-08-18 | 2001-04-17 | National Instruments Corporation | System and method for configuring an instrument to perform measurement functions utilizing conversion of graphical programs into hardware implementations |
US6608638B1 (en) * | 2000-02-07 | 2003-08-19 | National Instruments Corporation | System and method for configuring a programmable hardware instrument to perform measurement functions utilizing estimation of the hardware implentation and management of hardware resources |
DE19751439A1 (en) * | 1997-11-20 | 1999-06-02 | Dworski Claus Dipl Inform | Programmable controller for connection of sensors and actuators |
US6981167B2 (en) * | 2001-06-13 | 2005-12-27 | Siemens Energy & Automation, Inc. | Programmable controller with sub-phase clocking scheme |
-
2005
- 2005-06-07 AT AT9622005A patent/AT501880B1/en not_active IP Right Cessation
-
2006
- 2006-06-06 EP EP06754159A patent/EP1894066A1/en not_active Withdrawn
- 2006-06-06 WO PCT/EP2006/005389 patent/WO2006131317A1/en active Application Filing
Non-Patent Citations (1)
Title |
---|
See references of WO2006131317A1 * |
Also Published As
Publication number | Publication date |
---|---|
AT501880B1 (en) | 2007-04-15 |
WO2006131317A1 (en) | 2006-12-14 |
AT501880A1 (en) | 2006-12-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0642094B1 (en) | Method for programming a logic unit | |
DE3854594T2 (en) | Programmable control with parallel processors. | |
DE69814997T2 (en) | Power counters controlled by programmable logic | |
EP3542232B1 (en) | Control system for an industrial automation facility and method for programming and operating such a control system | |
EP0186724A1 (en) | Test and diagnostic device for a digital calculator | |
EP0991986B1 (en) | Method for process monitoring, control and adjustment | |
WO2011063869A1 (en) | Method for enabling sequential, non-blocking processing of statements in concurrent tasks in a control device | |
AT501880B1 (en) | MEMORY PROGRAMMABLE CONTROL | |
EP4068138A1 (en) | Method for splitting simulation models between a processor and an fpga | |
DE4226536A1 (en) | Programmable control system with user information function - uses memory to store status and data for checking and transmission over link to monitor for display | |
DE4005042A1 (en) | ARCHITECTURE OF A HIGH-SPEED DIGITAL MOTION CONTROL | |
DE102011103861A1 (en) | Functional unit for use in simulation system to perform simulation of mixed analog/digital model, has logic module operated over pulse, and interface connecting module with simulation device, where pulse is controlled by simulation device | |
EP2963541B1 (en) | Implementation of a constant in FPGA code | |
EP0862763B1 (en) | Simulator unit for simulating a peripheral unit of a modular programmable controller | |
DE19530669A1 (en) | Method for automatically selecting a clock-controlling signal path in reprogrammable systems for hardware emulation | |
EP2216696B1 (en) | Method and communication system for configuring a communication module containing a logic module | |
DE2403669A1 (en) | SPECIAL COMPUTER | |
DE202016008563U1 (en) | Configuration system for configuring a test device set up to test a controller | |
EP3142032B1 (en) | Method for changing the configuration of a programmable logic component | |
DE69500544T2 (en) | Microcomputer with integrated breakpoint arrangement for the detection of composite events | |
EP1283471B1 (en) | Program controlled unit | |
DE10394242T5 (en) | Method and instrument for allocating computational resources in a distributed control system | |
DE2657404A1 (en) | STEERING SYSTEM | |
DE10160633C1 (en) | Method of simulating circuit unit to be verified, by clocking test-bench elements of circuit unit and test bench controller and evaluating simulation results | |
EP3736712A1 (en) | Method for accessing a memory of an integrated circuit, program, data processing device and network |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PUAI | Public reference made under article 153(3) epc to a published international application that has entered the european phase |
Free format text: ORIGINAL CODE: 0009012 |
|
17P | Request for examination filed |
Effective date: 20080103 |
|
AK | Designated contracting states |
Kind code of ref document: A1 Designated state(s): AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LI LT LU LV MC NL PL PT RO SE SI SK TR |
|
17Q | First examination report despatched |
Effective date: 20080225 |
|
DAX | Request for extension of the european patent (deleted) | ||
DAX | Request for extension of the european patent (deleted) | ||
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: THE APPLICATION IS DEEMED TO BE WITHDRAWN |
|
18D | Application deemed to be withdrawn |
Effective date: 20140103 |