QuakeGod
2021-06-20 bfc108e6097eff2bec73050e261f3b9e5db447b7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
/**
  ******************************************************************************
  * @file           : PLCfunctions.h
  * @brief          : Header for PLCfunctions.c file.
  *                   This file contains the user functions defines of the application.
  ******************************************************************************
    */
#ifndef __PLCFUNCTIONS_H__
#define __PLCFUNCTIONS_H__
#include "GlobalDef.h"
#include "KMachine.h"
 
 
#define TOTAL_WDFS (16)        //Total DF Count
#define TOTAL_CurVAL (8)        //
 
//extern unsigned short X[256];
//extern unsigned short Y[256];
//extern unsigned short R[256];
 
#define TOTALTIMERS (64)
#define TICK_OF_MS (10)        //1ms
#define TICK_OF_RS (100)        //10mS
#define TICK_OF_XS (1000)            //100mS
#define TICK_OF_YS (10000)        //1S
 
#pragma anon_unions
 
typedef struct tagTimerStat
{
    unsigned short nScale:2;//Time Scale, 0:1ms 1:10ms 2:100ms 3:1S
    unsigned short nType:1;    //0 : timer 1:counter ;
    unsigned short nDir:1;        //0 : count down. 1 count up;
    unsigned short nInited:1;
    unsigned short bSet:1;
    unsigned short bTon:1;
    
}stTimerStat;
 
typedef struct tagTimer
{
    unsigned short SV;
    unsigned short EV;
    unsigned int LastActTime;
    union {
        unsigned short StatByte;
     struct 
    {
        unsigned short nScale:2;    //Time Scale, 0:1ms 1:10ms 2:100ms 3:1S
        unsigned short nType:1;        //0 : timer 1    :    counter ;
        unsigned short nDir:1;        //0 : count down. 1 count up;
        unsigned short nInited:1;
        unsigned short bSet:1;
        unsigned short bTon:1;
        
    };        
//        stTimerStat Stat;
    };
}stTimer;
 
typedef struct tagPLCPROG
{
    unsigned char OP;
    unsigned char AddrType;
    unsigned short Addr;
}stPLCPROG;
 
extern stPLCPROG const prog1[];
extern int nSizeProg1;
 
 
//extern unsigned char CurVAL;
//extern unsigned char CurVALs[TOTAL_CurVAL];
//extern unsigned short DFs[TOTAL_WDFS];
 
//extern unsigned short WX[13];
//extern unsigned short WY[13];
//extern unsigned short WR[64];
//extern unsigned short DT[256];
//extern unsigned short SDT[256];
extern const unsigned short bitMasks[16];
//extern stTimer Timers[TOTALTIMERS];
 
 
typedef struct tagPLCMem
{
    unsigned short WDFs[TOTAL_WDFS];
    unsigned char CurVALs[TOTAL_CurVAL];
    unsigned char CurVAL;
    stTimer Timers[TOTALTIMERS];
    
}stPLCMem;
 
extern stPLCMem PLCMem;
 
int InitTimer(int nIndex, int nType);
int StartTimer(int nIndex , int SV);
int StopTimer(int nIndex);
int ResetTimer(int nIndex);
int SetTimerValue(int nIndex, int bSet, int SV);
int ProcessTimer(int nIndex);
int IsTimerOn(int nIndex);
int GetTimerSV(int nIndex);
int GetTimerEV(int nIndex);
 
int PushInVal(void);
int PopOutVal(void);
 
 
enum enPLCOPs
{
    OP_None =0,
    OP_ST=1,
    OP_ST_=2,
    OP_AN=3,
    OP_AN_=4,
    OP_OR=5,
    OP_OR_=6,
    OP_NOT=7,
    
    OP_PSHS =8,
    OP_POPS =9,
 
    OP_ANS=10,
    OP_ORS=11,
 
    OP_OUT=16,
    OP_SET=17,
    OP_RESET=18,
    OP_DF=19,
    OP_DF_=20,
    
    OP_TML=0xC8,
    OP_TMR=0xDC,
    OP_TMX=0xDD,
    OP_TMY=0xFA,
    
};
 
enum enAddrTypes
{
    Addr_None =0,
    Addr_X =1,
    Addr_Y =2,
    Addr_R =3,
    Addr_T =4,
    Addr_L =5,
    Addr_ =6,
 
};
 
int ProcessPLCPROG(const stPLCPROG * prog,int nSize);
 
 
 
#endif  /* __PLCFUNCTIONS_H__ */