diff -r 000000000000 -r fb772792efd1 lib/bistable.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/bistable.txt Wed Jan 31 15:32:38 2007 +0100 @@ -0,0 +1,65 @@ +(* + * (c) 26 Feb 2001 David Campbell + * + * Offered to the public under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General + * Public License for more details. + * + * This code is made available on the understanding that it will not be + * used in safety-critical situations without a full and competent review. + *) + +(* + * An IEC 61131-3 IL and ST compiler. + * + * Based on the + * FINAL DRAFT - IEC 61131-3, 2nd Ed. (2001-12-10) + * + *) + + +(* + * This is part of the library conatining the functions + * and function blocks defined in the standard. + * + * SR and RS function blocks + * ------------------------- + *) + + +FUNCTION_BLOCK SR + VAR_INPUT + S1 : BOOL; + R : BOOL; + END_VAR + VAR_OUTPUT + Q1 : BOOL; + END_VAR + VAR + Q_INTERNAL : BOOL; + END_VAR + + Q_INTERNAL := S1 OR ( Q_INTERNAL AND (NOT R)); + Q1 := Q_INTERNAL; +END_FUNCTION_BLOCK + +FUNCTION_BLOCK RS + VAR_INPUT + S : BOOL; + R1 : BOOL; + END_VAR + VAR_OUTPUT + Q1 : BOOL; + END_VAR + VAR + Q_INTERNAL : BOOL; + END_VAR + + Q_INTERNAL := (NOT R1) AND (S OR Q_INTERNAL); + Q1 := Q_INTERNAL; +END_FUNCTION_BLOCK