레이블이 HMI인 게시물을 표시합니다. 모든 게시물 표시
레이블이 HMI인 게시물을 표시합니다. 모든 게시물 표시

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년 7월 28일 금요일

Access와 Cimon을 이용한 DB연동하기-2

























//////////////////////////////////////
Sub 리스트업2()

CSqlOpen("SelectQ2")
cnt# = CSqlGetRecordNo("SelectQ2")

wcGridCommand "grid03", 7, 0, 0

for i=1 to cnt

CSqlGetRecord "SelectQ2", i

data1$ = GetTagVal("날짜")
wcGridSetData "grid03",1,i,  data1$

data2$ = GetTagVal("온도")
wcGridSetData "grid03",2,i, data2$

data3$ = GetTagVal("압력")
wcGridSetData "grid03",3,i, data3$

data4$ = GetTagVal("유량")
wcGridSetData "grid03",4,i, data4$

wcGridSetData "grid03",0,i, i '번호입력

blank$ = " "
wcGridSetData "grid03",0,i+1, blank$ '번호삭제
wcGridSetData "grid03",0,i+2, blank$
wcGridSetData "grid03",0,i+3, blank$
wcGridSetData "grid03",0,i+4, blank$

next i

CSqlClose("SelectQ2")

End Sub


2017년 7월 26일 수요일

Access와 Cimon을 이용한 DB연동하기
















































































































/////////////////////////////////////////
Sub 검색()

CSqlOpen("SelectQ")
CSqlClose("SelectQ")

End Sub



/////////////////////////////////////////
Sub 삽입()

CSqlRun "InsertQ"

RunScript("리스트업") 'DB리스트 갱신

End Sub


/////////////////////////////////////////
Sub 갱신()

CSqlRun "UpdateQ"

RunScript("리스트업") 'DB리스트 갱신

End Sub


/////////////////////////////////////////
Sub 삭제()

CSqlRun "DeleteQ"

RunScript("리스트업") 'DB리스트 갱신

End Sub



/////////////////////////////////////////
Sub 리스트업()

CSqlOpen("SelectAll")
cnt# = CSqlGetRecordNo("SelectAll")

wcGridCommand "grid02", 7, 0, 0

for i=1 to cnt

CSqlGetRecord "SelectAll", i

data1$ = GetTagVal("날짜")
wcGridSetData "grid02",1,i,  data1$

data2$ = GetTagVal("온도")
wcGridSetData "grid02",2,i, data2$

data3$ = GetTagVal("압력")
wcGridSetData "grid02",3,i, data3$

data4$ = GetTagVal("유량")
wcGridSetData "grid02",4,i, data4$

wcGridSetData "grid02",0,i, i '번호입력

blank$ = " "
wcGridSetData "grid02",0,i+1, blank$ '번호삭제

next i

CSqlClose("SelectAll")

End Sub



2017년 7월 19일 수요일

데이터수집_엑셀저장


























///////////////////설정시간 데이터수집

Sub OutputFile()

flagD = GetTagVal("save_start")

if flagD = 1 then
start_time$ = GetTagVal("시작시간")
SetTagVal "start_time", start_time$
else
start_time$ = GetTagVal("start_time")
end_time$ = GetTagVal("끝시간")

intval = DateDiff("s", start_time$, end_time$)
SetTagVal "interval", cstr(intval)

FileName$ = "D:\EXCEL\" & TimeStr(44) & ".xls"
FileOld$ = "D:\EXCEL\Ex.xls"

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) = "ANA1"
ws.Cells(Cell_Cnt,3) = "ANA2"

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("ANA1", nowTime$)
ws.Cells(Cell_Cnt+i,3) = DLogVal("ANA2", nowTime$)

next i

ws.Calculate
XelFile.Save
XelApp.Quit

end if

End Sub



///////////////////실시간 데이터수집

Sub OutputFile2()

flagD = GetTagVal("save_start2")

if flagD = 1 then
start_time$ = now()
SetTagVal "start_time2", start_time$
else
start_time$ = GetTagVal("start_time2")
end_time$ = now()

intval = DateDiff("s", start_time$, end_time$)
SetTagVal "interval", cstr(intval)

FileName$ = "D:\EXCEL\" & TimeStr(44) & ".xls"
FileOld$ = "D:\EXCEL\Ex.xls"

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) = "ANA1"
ws.Cells(Cell_Cnt,3) = "ANA2"

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("ANA1", nowTime$)
ws.Cells(Cell_Cnt+i,3) = DLogVal("ANA2", nowTime$)

next i

ws.Calculate
XelFile.Save
XelApp.Quit

end if

End Sub

2017년 7월 15일 토요일

사용자정의통신_동영상


-사용자정의통신_이종연결




-사용자정의통신_PLC와CIMON연결











2017년 6월 28일 수요일

좌표기억운전


1. 조그운전으로 기억한 위치데이터를 선입선출로 운전하기
- FIWRP의 경우 워드데이터이고, 좌표는 더블워드이므로 주의
- 아래예제는 데이터 한번출력후 소멸
- #D나 GMOV등으로 데이터를 보관하는 방법을 강구해야함





















2. 조그운전으로 X축 현재위치를 바꾸고, X축 기동운전으로 동작
- #D는 D디바이스를 다루므로 직접적으로 K영역의 디바이스 주소를 지정할 수 없다
- 축파라미터와 비교후 PLC읽기로 읽어오면 파라미터 정보가 변경된 것을 확인가능
- X축 스텝 1번주소 K530에서 +10씩 증가(2번주소: K540...)






2017년 5월 31일 수요일

Modbus 통신(비트/워드)


1. 아래그림과 같이 PLC 작성한다







2. CIMON에서  I/0 디바이스 설정  스테이션, Block추가 , 통신포트 설정한다.



3. 태그작성








































4. 작화 및 각 동작설정





















































5. 작화 후  CimonX 실행