⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 classicladder.h

📁 Source code for an Numeric Cmputer
💻 H
字号:
/* Classic Ladder Project *//* Copyright (C) 2001-2004 Marc Le Douarain *//* mavati@club-internet.fr *//* http://www.multimania.com/mavati/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.3"#define RELEASE_DATE_STRING "28 December 2004"#define CL_SHMEM_KEY			0x434C5254	// "CLRT"typedef struct plc_sizeinfo_s {    int nbr_rungs;    int nbr_bits;    int nbr_words;    int nbr_timers;    int nbr_monostables;    int nbr_phys_inputs;    int nbr_phys_outputs;    int nbr_arithm_expr;    int nbr_sections;} 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_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 ARITHM_EXPR_SIZE 32#define TYPE_FOR_BOOL_VAR char#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 (default) */#define BLOCK_WIDTH_DEF 32#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_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#define ELE_UNUSABLE 99		/* for complex elements using many blocks :				   only one block is "alive" *//* used only for edit */#define EDIT_CNX_WITH_TOP 100#define EDIT_POINTER 101#define EDIT_LONG_CONNECTION 102/* booleans */#define VAR_MEM_BIT 00#define VAR_TIMER_DONE 10#define VAR_TIMER_RUNNING 11#define VAR_MONOSTABLE_RUNNING 20#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 BASE_MINS 0#define BASE_SECS 1#define BASE_100MS 2typedef 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 StrArithmExpr {    char Expr[ARITHM_EXPR_SIZE];} StrArithmExpr;typedef 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;typedef struct StrInfosGene {    unsigned long Signature;	// This must be first.    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;    /* time for the last scan of the rungs in ns (if calc on RT side) */    unsigned int DurationOfLastScan;    unsigned long TimeSinceLastScan;	// In mSec.    unsigned long NsSinceLastScan;    int CurrentSection;    plc_sizeinfo_s SizesInfos;} StrInfosGene;/* Differents states of Ladder */#define STATE_LOADING 0#define STATE_STOP 1#define STATE_RUN 2#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)#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -