classicladder.h
来自「CNC 的开放码,EMC2 V2.2.8版」· C头文件 代码 · 共 387 行
H
387 行
/* Classic Ladder Project *//* Copyright (C) 2001-2006 Marc Le Douarain *//* http://www.multimania.com/mavati/classicladder *//* http://www.sourceforge.net/projects/classicladder *//* February 2001 *//* This library is free software; you can redistribute it and/or *//* modify it under the terms of the GNU Lesser General Public *//* License as published by the Free Software Foundation; either *//* version 2.1 of the License, or (at your option) any later version. *//* This library 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 *//* Lesser General Public License for more details. *//* You should have received a copy of the GNU Lesser General Public *//* License along with this library; if not, write to the Free Software *//* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *//* if GTK not included before */#ifndef TRUE#define TRUE 1#endif#ifndef FALSE#define FALSE 0#endif#define RELEASE_VER_STRING "0.7.100"#define RELEASE_DATE_STRING "4 November 2006"// defaults values#define NBR_RUNGS_DEF 100#define NBR_BITS_DEF 500#define NBR_WORDS_DEF 100#define NBR_TIMERS_DEF 10#define NBR_MONOSTABLES_DEF 10#define NBR_COUNTERS_DEF 10#define NBR_PHYS_INPUTS_DEF 50#define NBR_PHYS_OUTPUTS_DEF 50#define NBR_ARITHM_EXPR_DEF 100#define NBR_SECTIONS_DEF 10#define NBR_SYMBOLS_DEF 100#define NBR_REFRESH_DEF 50#define NBR_S32IN_DEF 0#define NBR_S32OUT_DEF 0#define NBR_INPUTS_CONF 5#define NBR_OUTPUTS_CONF 5#ifdef DYNAMIC_PLCSIZEtypedef struct plc_sizeinfo_s { int nbr_rungs; int nbr_bits; int nbr_words; int nbr_timers; int nbr_monostables; int nbr_counters; int nbr_phys_inputs; int nbr_phys_outputs; int nbr_arithm_expr; int nbr_sections; int nbr_symbols; int nbr_refresh; //number of ms between refresh of rungs int nbr_s32in; //number of HAL signed inputs int nbr_s32out; // number of HAL signed outputs }plc_sizeinfo_s;#define NBR_RUNGS InfosGene->SizesInfos.nbr_rungs#define NBR_BITS InfosGene->SizesInfos.nbr_bits#define NBR_WORDS InfosGene->SizesInfos.nbr_words#define NBR_TIMERS InfosGene->SizesInfos.nbr_timers#define NBR_MONOSTABLES InfosGene->SizesInfos.nbr_monostables#define NBR_COUNTERS InfosGene->SizesInfos.nbr_counters#define NBR_PHYS_INPUTS InfosGene->SizesInfos.nbr_phys_inputs#define NBR_PHYS_OUTPUTS InfosGene->SizesInfos.nbr_phys_outputs#define NBR_ARITHM_EXPR InfosGene->SizesInfos.nbr_arithm_expr#define NBR_SECTIONS InfosGene->SizesInfos.nbr_sections#define NBR_SYMBOLS InfosGene->SizesInfos.nbr_symbols#define NBR_REFRESH InfosGene->SizesInfos.nbr_refresh #define NBR_S32IN InfosGene->SizesInfos.nbr_s32in#define NBR_S32OUT InfosGene->SizesInfos.nbr_s32out #else/* static size */#define NBR_RUNGS NBR_RUNGS_DEF#define NBR_BITS NBR_BITS_DEF#define NBR_WORDS NBR_WORDS_DEF#define NBR_TIMERS NBR_TIMERS_DEF#define NBR_MONOSTABLES NBR_MONOSTABLES_DEF#define NBR_COUNTERS NBR_COUNTERS_DEF#define NBR_PHYS_INPUTS NBR_PHYS_INPUTS_DEF#define NBR_PHYS_OUTPUTS NBR_PHYS_OUTPUTS_DEF#define NBR_ARITHM_EXPR NBR_ARITHM_EXPR_DEF#define NBR_SECTIONS NBR_SECTIONS_DEF#define NBR_SYMBOLS NBR_SYMBOLS_DEF#define NBR_REFRESH NBR_REFRESH_DEF#define NBR_S32IN NBR_S32IN_DEF#define NBR_S32OUT NBR_S32OUT_DEF#endif#define ARITHM_EXPR_SIZE 32#ifdef MAT_CONNECTION#define TYPE_FOR_BOOL_VAR plc_pt_t#else#define TYPE_FOR_BOOL_VAR char#endif#define TIME_REFRESH_RUNG_MS 100 #define TIME_BASE_MINS 60000#define TIME_BASE_SECS 1000#define TIME_BASE_100MS 100/* numbers of blocks in a rung */#define RUNG_WIDTH 10#define RUNG_HEIGHT 6/* size in pixels of rungs blocks (default) *///#define BLOCK_WIDTH_DEF 32#define BLOCK_WIDTH_DEF 48#define BLOCK_HEIGHT_DEF 32/* offsets in pixels */#define OFFSET_X 4#define OFFSET_Y 6/* size of lines activated (comment to not use) */#define THICK_LINE_ELE_ACTIVATED 3/* elements in the rungs */#define ELE_FREE 0#define ELE_INPUT 1#define ELE_INPUT_NOT 2#define ELE_RISING_INPUT 3#define ELE_FALLING_INPUT 4#define ELE_CONNECTION 9#define ELE_TIMER 10#define ELE_MONOSTABLE 11#define ELE_COUNTER 12#define ELE_COMPAR 20#define ELE_OUTPUT 50#define ELE_OUTPUT_NOT 51#define ELE_OUTPUT_SET 52#define ELE_OUTPUT_RESET 53#define ELE_OUTPUT_JUMP 54#define ELE_OUTPUT_CALL 55#define ELE_OUTPUT_OPERATE 60/* for complex elements using many blocks : only one block is "alive", others are marked as UNUSABLE */#define ELE_UNUSABLE 99/* used only for edit */#define EDIT_CNX_WITH_TOP 100#define EDIT_POINTER 101#define EDIT_LONG_CONNECTION 102#define EDIT_ERASER 103/* booleans */#define VAR_MEM_BIT 00#define VAR_TIMER_DONE 10#define VAR_TIMER_RUNNING 11#define VAR_MONOSTABLE_RUNNING 20#define VAR_COUNTER_DONE 25#define VAR_COUNTER_EMPTY 26#define VAR_COUNTER_FULL 27#define VAR_STEP_ACTIVITY 30#define VAR_PHYS_INPUT 50#define VAR_PHYS_OUTPUT 60#define VAR_ARE_WORD 199 /* after it, all vars are no more booleans *//* integers */#define VAR_MEM_WORD 200#define VAR_STEP_TIME 220#define VAR_TIMER_PRESET 230#define VAR_TIMER_VALUE 231#define VAR_MONOSTABLE_PRESET 240#define VAR_MONOSTABLE_VALUE 241#define VAR_COUNTER_PRESET 250#define VAR_COUNTER_VALUE 251#define BASE_MINS 0#define BASE_SECS 1#define BASE_100MS 2#define TIME_UPDATE_GTK_DISPLAY_MS 100// attribute separator for variable names.//#define VAR_ATTRIBUTE_SEP ','#define VAR_ATTRIBUTE_SEP '.'typedef struct StrElement{ short int Type; char ConnectedWithTop; int VarType; int VarNum; /* or NumRung (for jump), NumTimer, NumMonostable,... */ char DynamicInput; char DynamicState; char DynamicVarBak; /* used for rising/falling edges */ char DynamicOutput;}StrElement;#define LGT_LABEL 10#define LGT_COMMENT 30typedef struct StrRung{ int Used; int PrevRung; int NextRung; char Label[LGT_LABEL]; char Comment[LGT_COMMENT]; StrElement Element[RUNG_WIDTH][RUNG_HEIGHT];}StrRung;typedef struct StrTimer{ int Preset; int Value; int Base; char DisplayFormat[10]; char InputEnable; char OutputDone; char OutputRunning;}StrTimer;typedef struct StrMonostable{ int Preset; int Value; int Base; char DisplayFormat[10]; char Input; char InputBak; char OutputRunning;}StrMonostable;typedef struct StrCounter{ int Preset; int Value; int ValueBak; char InputReset; char InputPreset; char InputCountUp; char InputCountUpBak; char InputCountDown; char InputCountDownBak; char OutputDone; char OutputEmpty; char OutputFull;}StrCounter;typedef struct StrArithmExpr{ char Expr[ARITHM_EXPR_SIZE];}StrArithmExpr;#define DEVICE_TYPE_DIRECT_ACCESS 0 /* used inb( ) and outb( ) calls */#define DEVICE_TYPE_COMEDI 100 /* /dev/comedi0 and following */typedef struct StrIOConf{ int FirstClassicLadderIO; /* -1 : not used */ int DeviceType; /* a comedi device or type direct I/O access */ int SubDevOrAdr; /* comedi sub-device or I/O port address */ int FirstChannel; int NbrConsecutivesChannels; int FlagInverted;}StrIOConf;typedef struct StrInfosGene{ int FirstRung; int CurrentRung; int LastRung; int LadderState; char CmdRefreshVarsBits; int BlockWidth; int BlockHeight; int PageWidth; int PageHeight; int TopRungDisplayed; int OffsetHiddenTopRungDisplayed; int OffsetCurrentRungDisplayed; int HScrollValue; int VScrollValue; unsigned long MsSinceLastScan; unsigned long NsSinceLastScan; /* how time for the last scan of the rungs in ns (if calc on RTLinux side) */ int DurationOfLastScan; int CurrentSection;#ifdef DYNAMIC_PLCSIZE plc_sizeinfo_s SizesInfos;#endif StrIOConf InputsConf[ NBR_INPUTS_CONF ]; StrIOConf OutputsConf[ NBR_OUTPUTS_CONF ]; char AskConfirmationToQuit; char DisplaySymbols; char LadderDirectory[ 400 ];}StrInfosGene;/* Differents states of Ladder */#define STATE_LOADING 0#define STATE_STOP 1#define STATE_RUN 2typedef struct StrEditRung{ StrRung Rung; char ModeEdit; int NumRung; char DoBeforeFinalCopy; short int NumElementSelectedInToolBar; StrElement * ElementUnderEdit;}StrEditRung;#define NBR_PARAMS_PER_OBJ 3#define NBR_TIMEBASES 3typedef struct StrDatasForBases{ int Id; int ValueInMS; char * DisplayFormat; char * ParamSelect;}StrDatasForBase;#define SECTION_IN_LADDER 0#define SECTION_IN_SEQUENTIAL 1#define LGT_SECTION_NAME 20typedef struct StrSection{ char Used; char Name[ LGT_SECTION_NAME ]; int Language; /* SECTION_IN_ */ /* -1 if not a sub-routine, else sub-routine number used for the calls */ int SubRoutineNumber; /* if section is in Ladder */ int FirstRung; int LastRung; /* if section is in Sequential */ int SequentialPage;}StrSection;#define LGT_VAR_NAME 10#define LGT_SYMBOL_STRING 10#define LGT_SYMBOL_COMMENT 30typedef struct StrSymbol{ char VarName[ LGT_VAR_NAME ]; char Symbol[ LGT_SYMBOL_STRING ]; char Comment[ LGT_SYMBOL_COMMENT ];}StrSymbol;#ifdef SEQUENTIAL_SUPPORT#include "sequential.h"#define SIZE_VAR_ARRAY (NBR_BITS+NBR_PHYS_INPUTS+NBR_PHYS_OUTPUTS+NBR_STEPS)#define SIZE_VAR_WORD_ARRAY (NBR_WORDS+NBR_STEPS)#else#define SIZE_VAR_ARRAY (NBR_BITS+NBR_PHYS_INPUTS+NBR_PHYS_OUTPUTS)#define SIZE_VAR_WORD_ARRAY (NBR_WORDS)#endifvoid DoPauseMilliSecs( int Time );void InitAllLadderDatas( char NoScreenRefresh );int ClassicLadderAllocAll(void);void ClassicLadderFreeAll(void);#define debug_printf(format...) rtapi_print_msg(RTAPI_MSG_DBG, format)#ifdef HAL_SUPPORT#include "rtapi.h"#include "hal.h"extern int compId;#endifextern int nogui;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?