Abstract:
A method and system are provided for automatically testing a program for automation systems (e.g., programmable logic controllers) with regard to maintaining programming guidelines for program design for automation systems. A copy of at least part of a safety-related program is obtained from a development system for automation systems as a copy to be tested. The program copy to be tested is loaded into a test device for testing programs. The test device has access to programming guidelines for program testing. The test device automatically performs the program test with regard to maintaining programming guidelines, and outputs the test result.

Description:
RELATED APPLICATION 
     This application claims priority as a continuation application under 35 U.S.C. §120 to PCT/EP 2010/001503, which was filed as an International Application on Mar. 11, 2010 designating the U.S., and which claims priority to German Application No. 10 2009 014 698.9 filed in Germany on Mar. 27, 2009. The entire contents of these applications are hereby incorporated by reference in their entireties. 
    
    
     FIELD 
     The present disclosure relates to a method and a system for automatically testing a program for at least partially safety-related automation systems, such as testing safety-related programmable logic controllers for compliance with guidelines, for example. 
     BACKGROUND INFORMATION 
     In order to certify an automation system (e.g., a safety-related automation system) as easily and cost-effectively as possible, as many pre-certified components as possible are used when creating such a system. These pre-certified components can be, for example: (i) hardware components such as a programmable logic controller, input/output modules, bus systems, sensors, and actuators; (ii) firmware on intelligent components such as the programmable logic controller; (iii) software components such as a development system for programs for automation systems; (iv) processes for developing a safety-related automation system; and (v) entities which carry out such a process. 
     The program in the programmable logic controller (e.g., the safety-related programmable logic controller) is the only component of a safety-related automation system which is dependent on the planned use and therefore cannot be prefabricated and/or pre-certified. 
     The practice of certifying the program in the safety-related programmable logic controller is facilitated if the structure and contents of the program are designed in such a manner that the certifying body can understand the method of operation of the program with as little effort as possible. This can be achieved by virtue of the fact that the possibilities provided by the programming language used for programmable logic controllers are restricted when used for a safety-related automation system. 
     Such restrictions can be represented in the form of guidelines which then need to be heeded when creating the program for the safety-related programmable logic controller. However, the test for compliance with such guidelines for designing programs for safety-related programmable logic controllers is a time-consuming activity and is susceptible to errors, for the development personnel or the body certifying the safety-related automation system. 
     The possibility of carrying out an automatic program test has existed for decades for different programming languages in the field of software development. In this case, a distinction is made between different types of tests, for example: (i) a test for compliance with particular rules, such as a test of syntax or type compatibility; (ii) a test for correctness, such as a test against field index overflow, pointer overflow, memory overflow, endless loops, memory which has not been allocated or has not been released, and variables which have not been initialized or unsafe type conversions; and (iii) a test of run time properties, such as performance or stress tests. 
     It is known to implement program testing means in a development system for safety-related programs in safety-related programmable logic controllers. This procedure leads to time-consuming software development and is associated with high costs since the development system for use in safety-related automation systems is pre-certified and the integration of the program testing means in the development system constitutes a change to the development system, which makes it necessary to certify the latter again. 
     SUMMARY 
     An exemplary embodiment of the present disclosure provides a method for automatically testing a program for a safety-related automation system having at least one safety-related programmable logic controller for compliance with programming guidelines pertaining to designing programs for the safety-related programmable logic controller. The exemplary method includes obtaining at least part of a safety-related program from a development system for automation systems. The safety-related program is stored in a programming environment for creating a safety-related program in the development system. The exemplary method also includes loading the obtained safety-related program into a test device for testing safety-related programs. The test device has access to guidelines for designing programs for safety-related programmable logic controllers. In addition, the exemplary method includes automatically testing the loaded safety-related program in the test device for compliance with the programming guidelines for designing programs for safety-related programmable logic controllers, and outputting results of the testing from the test device. 
     An exemplary embodiment of the present disclosure provides a system for automatically testing a program for a safety-related automation system having at least one safety-related programmable logic controller for compliance with programming guidelines pertaining to designing programs for the safety-related programmable logic controller. The exemplary system includes a development computer configured to interact with a safety-related automation system. The development computer includes a development system having a programming environment for creating a safety-related program, and a test device configured to load and test the safety-related program. The test device is configured to automatically test the safety-related program for compliance with programming guidelines for designing programs for safety-related programmable logic controllers, and to output a result the test. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       Additional refinements, advantages and features of the present disclosure are described in more detail below with reference to exemplary embodiments illustrated in the drawings, in which: 
         FIG. 1  is a flowchart illustrating steps of a method according to an exemplary embodiment of the present disclosure; and 
         FIG. 2  is an arrangement for carrying out the method according to an exemplary embodiment of the present disclosure. 
     
    
    
     DETAILED DESCRIPTION 
     Exemplary embodiments of the present disclosure provide a method and system for automatically testing a program for automation systems, such as safety-related automation systems, for compliance with guidelines, rules and specifications (also referred to as programming guidelines), for example, programming guidelines for designing programs for programmable logic controllers, such as safety-related programmable logic controllers. 
     An exemplary embodiment of the present disclosure provides a method for automatically testing a program for safety-related automation systems, for example, safety-related programmable logic controllers. 
     Exemplary embodiments of the present disclosure provide the feature of automatically testing control programs or program parts of the automation system for compliance with programming guidelines, for example guidelines, rules and specifications, for designing programs for programmable logic controllers (e.g., safety-related programmable logic controllers) outside a development environment for safety software (also referred to as a safety-related program). In accordance with an exemplary embodiment, the automatic test may relate to safety-related control programs or program parts of a safety-related automation system. 
     A change to the development system can be advantageously avoided if, for example, the guidelines for designing programs for safety-related programmable logic controllers are initially integrated or subsequently amended because the safety-related programmable logic controller is intended to be certified for a higher safety integrity level, for example according to the IEC 61508 standard, that is to say is intended to be adapted to different levels of safety applications. 
       FIG. 1  shows a flowchart of a method for automatically testing a program for safety-related automation systems. In step  1 , a copy of a program (also referred to as the original program) is exported from a development system for an exemplary safety-related automation system. According to a second step, this program copy (also referred to as the safety program) is loaded into another device (also referred to as a test device herein). This test device is set up to test a program and contains software which is configured for testing a program—to be carried out in a third step—and is configured to test a given set of guidelines for designing programs for safety-related programmable logic controllers (also referred to as programming guidelines below). The above-described test device includes a processor configured to execute the software for testing a program and perform the operative functions as described herein. The test device also includes a non-transitory computer-readable recording medium (e.g., ROM, hard disk drive, flash memory, optical memory, etc.) configured to record thereon the software executed by the processor of the test device. 
     The programming guidelines may be in a machine-readable form and are then interpreted during the test program run. 
     The program which is created in the development system and needs to be tested may be, for example, in a programming language according to the IEC 61131 standard, for example, in the form of a structured-text program, in the form of a function block diagram or in the form of a ladder diagram. 
     If the test result states that the program copy to be tested is free of errors according to the programming guidelines, for example, the guidelines for designing programs for safety-related programmable logic controllers, this is output to the development system and/or the programmer and the procedure is thus ended. 
     If errors which contravene the guidelines for designing programs for safety-related programmable logic controllers are found, these errors are marked or indicated and/or displayed. In accordance with an exemplary embodiment of the present disclosure, the erroneous program is now revised or corrected. This operation is illustrated as step  4  in  FIG. 1 . After the original program has been revised in the development system, this program is exported again and is loaded into the test device. 
     The repetition procedure is carried out either until contravention of the programming guidelines by the program to be tested is no longer determined or until only contravention of those guidelines which are of minor importance in the present case is determined, with the result that no delay in the certification sought can be expected as a result and the new program version can be used in the safety-related automation system. Contravention of those programming guidelines which are of minor importance may be determined at the start of the method according to the disclosure. 
     According to an exemplary embodiment of the method, it is possible to dispense with the first step, that is to say the export of a copy of the program from the development system, if the test device is designed to directly locate the safety program to be tested in the development system and to load it automatically, that is to say without an additional export step. 
     According to an exemplary embodiment of the method, the first step, that is to say the export of a program copy, is dispensed with. In this case, the test device is set up to directly access the safety program to be tested in the development system and thus to test the program inside the development system. In this case, the test device does not change the program inside the development system unless a user causes a modification. 
       FIG. 2  shows, by way of example, a system or an arrangement for carrying out the features of the exemplary method according to the present disclosure as described above. In this case, a safety-related automation system  1  interacts with a development computer  2 . The safety-related automation system  1  contains a safety-related programmable logic controller  11  and a non-safety-related programmable logic controller  12  which communicates with the safety-related programmable logic controller  11 . Safety-related input/output devices  13  and non-safety-related input/output devices  14  are also present and are connected to the controllers  11  and  12  by means of a data transmission system (e.g., wired or wireless). 
     The development computer  2  contains a development system  21  having a programming environment for creating a safety-related program (also referred to as safety software) and a test device  22  for testing the safety software. A programmer  3  has access both to the development system  21  and to the test device  22 . The development computer  2  can be connected to the safety-related programmable logic controller  11  and/or to the non-safety-related programmable logic controller  12 . The method of operation of the arrangement illustrated in  FIG. 2  then corresponds to the sequence described using  FIG. 1 . 
     The exemplary method according to the disclosure and the corresponding system not only relieve a programmer of the time-consuming program test but are also reaction-free insofar as the test device does not modify the original program in the development system. This is the prerequisite for the development system still being able to be used as pre-certified without further testing in the development of the program for the safety-related system. 
     Another advantage is that it is possible to flexibly adapt the programming guidelines for designing programs for programmable logic controllers, for example, safety-related programmable logic controllers, to a respectively required SIL (Safety Integrity Level). 
     It is advantageous to be able to modify the test device, for example, the guidelines to be tested for designing programs for safety-related programmable logic controllers, without having to change the development system in the process and therefore without having to certify the latter again. 
     It will be appreciated by those skilled in the art that the present invention can be embodied in other specific forms without departing from the spirit or essential characteristics thereof. The presently disclosed embodiments are therefore considered in all respects to be illustrative and not restricted. The scope of the invention is indicated by the appended claims rather than the foregoing description and all changes that come within the meaning and range and equivalence thereof are intended to be embraced therein.