diff -r e08c65e27557 -r 873a5b60a7ea lib/time_math.txt --- a/lib/time_math.txt Wed Jul 11 09:53:27 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,360 +0,0 @@ -(* - * (c) 2005 Mario de Sousa - * - * 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. - * - * Math functions on Time and Date data types. - * ------------------------------------------- - * - * We also include the two data type conversions defined in table 30 of the IEC 61131-3 standard (version - *) - - -(* NOTE: The IEC 61131-3 standard library includes overloaded functions, which are not - * allowed in user code. Since our compiler does not yet support overloaded functions, these - * are commented out in the following library for the moment... - *) - -(***************) -(* TIME + TIME *) -(***************) - -FUNCTION ADD : TIME - VAR_INPUT - IN1 : TIME; - IN2 : TIME; - END_VAR - - ADD := IN1 + IN2; -END_FUNCTION - - -FUNCTION ADD_TIME : TIME - VAR_INPUT - IN1 : TIME; - IN2 : TIME; - END_VAR - - ADD_TIME := IN1 + IN2; -END_FUNCTION - - -FUNCTION SUB : TIME - VAR_INPUT - IN1 : TIME; - IN2 : TIME; - END_VAR - - SUB := IN1 - IN2; -END_FUNCTION - - -FUNCTION SUB_TIME : TIME - VAR_INPUT - IN1 : TIME; - IN2 : TIME; - END_VAR - - SUB_TIME := IN1 - IN2; -END_FUNCTION - - - -(**************) -(* TIME + TOD *) -(**************) - -FUNCTION ADD : TOD - VAR_INPUT - IN1 : TOD; - IN2 : TIME; - END_VAR - - ADD := IN1 + IN2; -END_FUNCTION - - -(* The following function is not defined in the standard, but its existance makes sense. *) -FUNCTION ADD : TOD - VAR_INPUT - IN1 : TIME; - IN2 : TOD; - END_VAR - - ADD := IN1 + IN2; -END_FUNCTION - - -FUNCTION ADD_TOD_TIME : TOD - VAR_INPUT - IN1 : TOD; - IN2 : TIME; - END_VAR - - ADD_TOD_TIME := IN1 + IN2; -END_FUNCTION - - -FUNCTION SUB : TOD - VAR_INPUT - IN1 : TOD; - IN2 : TIME; - END_VAR - - SUB := IN1 - IN2; -END_FUNCTION - - -FUNCTION SUB_TOD_TIME : TOD - VAR_INPUT - IN1 : TOD; - IN2 : TIME; - END_VAR - - SUB_TOD_TIME := IN1 - IN2; -END_FUNCTION - - - -(*************) -(* TIME + DT *) -(*************) - -FUNCTION ADD : DT - VAR_INPUT - IN1 : DT; - IN2 : TIME; - END_VAR - - ADD := IN1 + IN2; -END_FUNCTION - - -(* The following function is not defined in the standard, but its existance makes sense. *) -FUNCTION ADD : DT - VAR_INPUT - IN1 : TIME; - IN2 : DT; - END_VAR - - ADD := IN1 + IN2; -END_FUNCTION - - -FUNCTION ADD_DT_TIME : DT - VAR_INPUT - IN1 : DT; - IN2 : TIME; - END_VAR - - ADD_DT_TIME := IN1 + IN2; -END_FUNCTION - - - -(***************) -(* DATE + DATE *) -(***************) - -FUNCTION SUB : TIME - VAR_INPUT - IN1 : DATE; - IN2 : DATE; - END_VAR - - SUB := IN1 - IN2; -END_FUNCTION - - -FUNCTION SUB_DATE_DATE : TIME - VAR_INPUT - IN1 : DATE; - IN2 : DATE; - END_VAR - - SUB_DATE_DATE := IN1 - IN2; -END_FUNCTION - - - -(*************) -(* TOD + TOD *) -(*************) - -FUNCTION SUB : TIME - VAR_INPUT - IN1 : TOD; - IN2 : TOD; - END_VAR - - SUB := IN1 - IN2; -END_FUNCTION - - -FUNCTION SUB_TOD_TOD : TIME - VAR_INPUT - IN1 : TOD; - IN2 : TOD; - END_VAR - - SUB_TOD_TOD := IN1 - IN2; -END_FUNCTION - - - -(*************) -(* TIME + DT *) -(*************) - -FUNCTION SUB : DT - VAR_INPUT - IN1 : DT; - IN2 : TIME; - END_VAR - - SUB := IN1 - IN2; -END_FUNCTION - - -FUNCTION SUB_DT_TIME : DT - VAR_INPUT - IN1 : DT; - IN2 : TIME; - END_VAR - - SUB_DT_TIME := IN1 - IN2; -END_FUNCTION - - - -(***********) -(* DT + DT *) -(***********) - -FUNCTION SUB : TIME - VAR_INPUT - IN1 : DT; - IN2 : DT; - END_VAR - - SUB := IN1 - IN2; -END_FUNCTION - - -FUNCTION SUB_DT_DT : TIME - VAR_INPUT - IN1 : DT; - IN2 : DT; - END_VAR - - SUB_DT_DT := IN1 - IN2; -END_FUNCTION - - - -(******************) -(* TIME * ANY_NUM *) -(******************) - -FUNCTION MUL : TIME - VAR_INPUT - IN1 : TIME; - IN2 : LREAL; - END_VAR - - MUL := IN1 * IN2; -END_FUNCTION - - -FUNCTION MULTIME : TIME - VAR_INPUT - IN1 : TIME; - IN2 : LREAL; - END_VAR - - MULTIME := IN1 * IN2; -END_FUNCTION - - -FUNCTION DIV : TIME - VAR_INPUT - IN1 : TIME; - IN2 : LREAL; - END_VAR - - DIV := IN1 / IN2; -END_FUNCTION - - -FUNCTION DIVTIME : TIME - VAR_INPUT - IN1 : TIME; - IN2 : LREAL; - END_VAR - - DIVTIME := IN1 / IN2; -END_FUNCTION - - - -(*************) -(* DATE + DT *) -(*************) - -FUNCTION CONCAT_DATE_TOD : DT - VAR_INPUT - IN1 : DATE; - IN2 : TOD; - END_VAR - - CONCAT_DATE_TOD := IN1 + IN2; -END_FUNCTION - - - -(*************************) -(* Data Type Conversions *) -(*************************) - -FUNCTION DT_TO_DATE : DATE - VAR_INPUT - IN1 : DT; - END_VAR - - {DT_TO_DATE = IN1.__to_DATE();} -END_FUNCTION - - - -FUNCTION DT_TO_TOD : TOD - VAR_INPUT - IN1 : DT; - END_VAR - - {DT_TO_TOD = IN1.__to_TOD();} -END_FUNCTION - -