120 lines
2.7 KiB
C++
120 lines
2.7 KiB
C++
#ifndef _VAR_H_
|
|
#define _VAR_H_
|
|
|
|
#define DEBUG
|
|
#define sprint(...) Serial1.print(__VA_ARGS__)
|
|
#define sprintln(...) Serial1.println(__VA_ARGS__)
|
|
#ifdef DEBUG
|
|
#define dprint(...) Serial1.print(__VA_ARGS__)
|
|
#define dprintln(...) Serial1.println(__VA_ARGS__)
|
|
#else
|
|
#define dprint(...)
|
|
#define dprint(...)
|
|
#endif
|
|
|
|
|
|
#include "arduino.h"
|
|
#include <EEPROM.h>
|
|
#include "UtilClass.h"
|
|
|
|
//모든 사용가능한 커맨드를 넣는다(이 파일은 서브PLC파일)
|
|
enum eCommand
|
|
{
|
|
LOAD = 0, //EEPROM 불러오기
|
|
SAVE, //EEPROM 저장
|
|
RESET, //초기화
|
|
PINGCHK,
|
|
SET_PINMODE, //PINMODE 설정
|
|
SET_DOUTPUT, //디지털출력설정(포트번호,값[1,0])
|
|
SET_AOUTPUT, //아날로그출력설정(포트GET_SETTING = 50, //셋팅값 요청
|
|
SET_FLAG,
|
|
SET_EEPROM,
|
|
SET_MANUALSPEED,
|
|
GET_SETTING = 50,
|
|
GUIDE_MOT= 90, //가이드커버(양쪽) 0=멈춤,1=UP,2=DN 아스키코드표 90=Z
|
|
SET_EEP_DIREV,
|
|
};
|
|
|
|
//asci 0=48,1=49,2=50
|
|
|
|
enum eEEPAddress
|
|
{
|
|
EEP_IOINTERVAL = 0,
|
|
EEP_RESETCOUNT,
|
|
EEP_DIREVH,
|
|
EEP_DIREVL,
|
|
EEP_OPTION,
|
|
EEP_UPTIME,
|
|
};
|
|
|
|
//플래그 총 32개 모두 다씀
|
|
enum eFlag
|
|
{
|
|
FLAG_STOPZ= 0,
|
|
FLAG_SETUP,
|
|
FLAG_WAIT,
|
|
FLAG_AUTORUN,
|
|
FLAG_MANUALRUN,
|
|
FLAG_LIMITHIGHL,
|
|
FLAG_LIMITHIGHR,
|
|
FLAG_LIMITLOWL,
|
|
FLAG_LIMITLOWR,
|
|
FLAG_POWERLOSS,
|
|
FLAG_DIR,
|
|
FLAG_LEFT_RUN,
|
|
FLAG_RIGHT_RUN,
|
|
FLAG_RUN_CMD,
|
|
FLAG_GO_CHAGER = 26,
|
|
FLAG_ENABLE_AD4INVERT=27,
|
|
FLAG_ENABLE_LOG_SPEED = 28,
|
|
};
|
|
|
|
class VarClass
|
|
{
|
|
|
|
public:
|
|
|
|
unsigned long serialprinttime = 0;
|
|
uint16_t runtime = 0;
|
|
long pingtime = 0;
|
|
|
|
//SUB
|
|
|
|
uint32_t IOData = 0; //IO데이터가 있으며 DI : Low 16bit, DO : High 16bit
|
|
uint8_t ANData[4]; //A0 ~ A3
|
|
uint8_t AOData[4]; //A4 ~ A6
|
|
|
|
void Setup();
|
|
void Update();
|
|
void runCommand(eCommand cmd, uint8_t p1, uint8_t p2);
|
|
|
|
uint8_t _eep_resetcount = 0; //장치초기화 횟수
|
|
uint8_t _eep_iosendinterval = 0;
|
|
|
|
uint8_t _eep_option = 0; //옵션값(이 값은 FLAG와 연결됨)
|
|
|
|
uint8_t _eep_pindir_iH = 0; //Input High
|
|
uint8_t _eep_pindir_iL = 0; //Input Low
|
|
|
|
uint8_t manual_speed = 0; //속도고정값
|
|
|
|
void eeprom_save(); //EEPROM 쓰기
|
|
void eeprom_load(); //EEPROM 읽기
|
|
void eeprom_incResetCount(); //초기화횟수증가 및 저장
|
|
|
|
void setFlag(uint8_t pos, bool value, String Readson); //플래그쓰기
|
|
bool getFlag(uint8_t pos); //플래그읽기
|
|
uint32_t getFlagValue(); //플래그값확인
|
|
|
|
bool runReset = false; //이값을 설정하면 Project.Ino 에서 초기화를 수행함
|
|
|
|
private:
|
|
|
|
uint32_t flag = 0; //시스템플래그
|
|
uint32_t flag_ = 0;
|
|
//void FlagValueChanged(uint8_t index, bool newValue);
|
|
};
|
|
|
|
extern VarClass var;
|
|
#endif
|