2017년 8월 17일 목요일

DB-output

Sub OutputFile()

flagD = gettagval("save_start")
ST = gettagval("시작시간")
ET = gettagval("종료시간")

if flagD = 1 then '시작시간 저장
start_time$ = ST
'start_time$ = now()
settagval "start_time", start_time$
else
start_time$ = gettagval("start_time")
'end_time$ = ET
end_time$ = now()

'시작시간에서 몇 초가 경과 되었는지 계산
intval = DateDiff("s",start_time$, end_time$)
settagval "interval", cstr(intval)

'엑셀파일 경로
FileName$ = "D:\DB\NEW\" & TimeStr(44) & ".xlsx" '생성될 파일
'FileName$ = "D:\" & TimeStr(44) & ".xlsx" '생성될 파일
FileOld$ = "D:\DB\Ex.xlsx" '양식 파일

If FileExists(FileName$) Then
Else
'양식 파일에서 복사해 새로운 파일을 만든다
FileCopy FileOld$, FileName$
End If

Set XelApp = CreateObject("Excel.Application")
Set XelFile = XelApp.Workbooks.Open(FileName$)
Set ws = XelFile.sheets.item("sheet1")

Cell_Cnt = 1

ws.Cells(Cell_Cnt,1) = "시간" '첫 행
ws.Cells(Cell_Cnt,2) = "좌표DB"
ws.Cells(Cell_Cnt,3) = "입고DB"
ws.Cells(Cell_Cnt,4) = "출고DB"
ws.Cells(Cell_Cnt,5) = "재고DB"

for i = 1 to intval

setDate$ = DateAdd("s", i, start_time$)

hh$ = hour(setDate$)
mm$ = minute(setDate$)
ss$ = second(setDate$)

nowTime$ = hh$ & "시" & mm$ & "분" & ss$ & "초"

'행,열
ws.Cells(Cell_Cnt+i,1) = nowTime$
ws.Cells(Cell_Cnt+i,2) = Dlogval("좌표DB", nowTime$)
ws.Cells(Cell_Cnt+i,3) = Dlogval("입고DB", nowTime$)
ws.Cells(Cell_Cnt+i,4) = Dlogval("출고DB", nowTime$)
ws.Cells(Cell_Cnt+i,5) = Dlogval("재고DB", nowTime$)

next i
ws.Calculate
XelFile.Save
XelApp.Quit

end if


End Sub

2017년 8월 14일 월요일

CIMON-아두이노 485통신


#include <SoftwareSerial.h>
#include <SimpleModbusSlave.h>

int a[2] = {A0,A1};
int fnd_a = 3;
int buffer[2] = {0};
int analogValue;
unsigned char table[10][7] = {
    {1,1,1,1,1,1,0},  //0
    {0,1,1,0,0,0,0},  //1
    {1,1,0,1,1,0,1},  //2
    {1,1,1,1,0,0,1},  //3
    {0,1,1,0,0,1,1},  //4
    {1,0,1,1,0,1,1},  //5
    {1,0,1,1,1,1,1},  //6
    {1,1,1,0,0,1,0},  //7
    {1,1,1,1,1,1,1},  //8
    {1,1,1,0,0,1,1}   //9
  };

enum
{    
/*  ADC0,  
  ADC1,  
  ADC2,
  ADC3,
  ADC4,
  ADC5,   */
  FND_STATE,        //40001

  TOTAL_ERRORS,     // leave this one
  TOTAL_REGS_SIZE   // total number of registers for function 3 and 16 share the same register array
};

unsigned int holdingRegs[TOTAL_REGS_SIZE]; // function 3 and 16 register array

void setup()
{
 
  modbus_configure(9600, 1, 2, TOTAL_REGS_SIZE,0);   //국번1

  Serial.begin(9600);

  int i,j;

  for(i=fnd_a; i<fnd_a+7; i++)    //FND a핀부터 g핀까지 포트설정
    pinMode(i, OUTPUT);

  for(j=0; j<2; j++)          //FND Control PIN
    pinMode(a[j], OUTPUT);
   
}

  void fnd(int STATUS)
{
  int j;
  switch(STATUS){
    case 0: for(j=0; j<7; j++) digitalWrite(fnd_a+j, table[0][j]); break;
    case 1: for(j=0; j<7; j++) digitalWrite(fnd_a+j, table[1][j]); break;
    case 2: for(j=0; j<7; j++) digitalWrite(fnd_a+j, table[2][j]); break;
    case 3: for(j=0; j<7; j++) digitalWrite(fnd_a+j, table[3][j]); break;
    case 4: for(j=0; j<7; j++) digitalWrite(fnd_a+j, table[4][j]); break;
    case 5: for(j=0; j<7; j++) digitalWrite(fnd_a+j, table[5][j]); break;
    case 6: for(j=0; j<7; j++) digitalWrite(fnd_a+j, table[6][j]); break;
    case 7: for(j=0; j<7; j++) digitalWrite(fnd_a+j, table[7][j]); break;
    case 8: for(j=0; j<7; j++) digitalWrite(fnd_a+j, table[8][j]); break;
    case 9: for(j=0; j<7; j++) digitalWrite(fnd_a+j, table[9][j]); break;
    }
 }
 
void loop()
{
  holdingRegs[TOTAL_ERRORS] = modbus_update(holdingRegs);

    int i,k = 0;
    int STATUS;
    byte fndState = holdingRegs[FND_STATE];
    analogValue = fndState;
 //   Serial.println(FND_STATE);
   
      buffer[1] = (analogValue%100)/10;
      buffer[0] = analogValue%10;

    for(i=0; i<2; i++){
      STATUS = buffer[1-i];
      fnd(STATUS);
      digitalWrite(a[k],LOW);
      delay(5);
      digitalWrite(a[k],HIGH);
      k++;
      k = k % 2;
     
    }
 
}


2017년 8월 11일 금요일

2-Digit FND(F4201AH) 아날로그입력값 표시



int a[2] = {10,11};
int fnd_a = 2;
int buffer[2] = {0};
int analogValue;
unsigned char table[10][7] = {
    {1,1,1,1,1,1,0},  //0
    {0,1,1,0,0,0,0},  //1
    {1,1,0,1,1,0,1},  //2
    {1,1,1,1,0,0,1},  //3
    {0,1,1,0,0,1,1},  //4
    {1,0,1,1,0,1,1},  //5
    {1,0,1,1,1,1,1},  //6
    {1,1,1,0,0,1,0},  //7
    {1,1,1,1,1,1,1},  //8
    {1,1,1,0,0,1,1}   //9
  };

void setup()
{
  Serial.begin(9600);

  int i,j;

  for(i=fnd_a; i<fnd_a+7; i++)    //FND a핀부터 g핀까지 포트설정
    pinMode(i, OUTPUT);

  for(j=0; j<2; j++)          //FND Control PIN
    pinMode(a[j], OUTPUT);
  }

  void fnd(int STATUS)
{
  int j;
  switch(STATUS){
    case 0: for(j=0; j<7; j++) digitalWrite(fnd_a+j, table[0][j]); break;
    case 1: for(j=0; j<7; j++) digitalWrite(fnd_a+j, table[1][j]); break;
    case 2: for(j=0; j<7; j++) digitalWrite(fnd_a+j, table[2][j]); break;
    case 3: for(j=0; j<7; j++) digitalWrite(fnd_a+j, table[3][j]); break;
    case 4: for(j=0; j<7; j++) digitalWrite(fnd_a+j, table[4][j]); break;
    case 5: for(j=0; j<7; j++) digitalWrite(fnd_a+j, table[5][j]); break;
    case 6: for(j=0; j<7; j++) digitalWrite(fnd_a+j, table[6][j]); break;
    case 7: for(j=0; j<7; j++) digitalWrite(fnd_a+j, table[7][j]); break;
    case 8: for(j=0; j<7; j++) digitalWrite(fnd_a+j, table[8][j]); break;
    case 9: for(j=0; j<7; j++) digitalWrite(fnd_a+j, table[9][j]); break;
    }
 }

void loop()
  {
    int i,k = 0;
    int STATUS;
    analogValue = analogRead(A0);
    Serial.println(analogValue);    

      buffer[1] = (analogValue%100)/10;
      buffer[0] = analogValue%10;  

    for(i=0; i<2; i++){
      STATUS = buffer[1-i];
      fnd(STATUS);
      digitalWrite(a[k],LOW);
      delay(10);
      digitalWrite(a[k],HIGH);
      k++;
      k = k % 2;
      }
    }