initial commit

This commit is contained in:
chi
2025-01-07 16:07:58 +09:00
commit 9e657e2558
18 changed files with 2723 additions and 0 deletions

119
Arduino_PLC/VarClass.h Normal file
View File

@@ -0,0 +1,119 @@
#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