'[ 충남인력개발원 ] (2019)/┗SCADA'에 해당되는 글 32건

앞에 쓰던것들이 날라갓다..

 

아아ㅏ아아아아아아아아아ㅏ아ㅏ아아아아아

일단 X-SCADA에서 

도구설정

그리고 

태그설정

그리고

장치 탐색

끝난거 부터 한다

 

아아아ㅏ아아알아아

 

LS 꺼 켜주고

아마 도움말 보면 

d00이 증감 뭐시기 되있을거임

누가 UDT 가아니라 TCP 로 해놓은듯

 

TCP 포트 번호로는 들어가지네..

잘됨

됫움

 

'[ 충남인력개발원 ] (2019) > ┗SCADA' 카테고리의 다른 글

X-SCADA 게이지 만들기  (0) 2019.12.30
SCADA 통신 WEB  (0) 2019.12.26
CIMON access 하기 ODBC  (0) 2019.12.23
CIMON SCADA 외부 접속 통신 하는법  (0) 2019.12.23
SIMON DB 만들기  (0) 2019.12.18
블로그 이미지

Or71nH

,

형식 잘만들어주고

.mdb

만들고

보기 누루면 됨

 

 

 

 

저장되면 겟아웃

 

C:\Windows\SysWOW64

 

검색하자 들가서

 

들가서 보면 뭔가있음

 

 

db찾움

 

넣어주면끝

끝~

정해준 이름 그니깐 파일이름 .mdb써저있는거 써줌

 

SQL 작성 들간다

태그안만듬

만들고 다시옴

만들어주고

Sub 되나()

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

wcGridCommand "그림16", 7, 0, 0
for i=0 to cnt

	CSqlGetRecord "Select", i

	data1$ = GetTagval("START.TIME")
	wcGridSetData "그림16",000,i, data1$
	
	data2$ = GetTagval("START.CODE")
	wcGridSetData "그림16",001,i, data2$

	data3$ = GetTagval("START.TC")
	wcGridSetData "그림16",002,i, data3$
	
	data4$ = GetTagval("START.ALERT")
	wcGridSetData "그림16",003,i, data4$	

	data5$ = GetTagval("START.PRESS")
	wcGridSetData "그림16",004,i, data5$

next i

CSqlClose("Select")

End Sub

그리고

버튼

 

끝~!

'[ 충남인력개발원 ] (2019) > ┗SCADA' 카테고리의 다른 글

SCADA 통신 WEB  (0) 2019.12.26
PLC X-SCADA 연결해보기  (0) 2019.12.26
CIMON SCADA 외부 접속 통신 하는법  (0) 2019.12.23
SIMON DB 만들기  (0) 2019.12.18
CIMON OpenPageEx() 함수  (0) 2019.12.17
블로그 이미지

Or71nH

,

포트폴링 ???

 

 

일단 서버부터 열어줘야한다

 

네트워크를 들어가자

 

 

 

 

 

 

 

 

 

나자신으로 설정해준다

 

서버는 열었다

 

클라이언트랑 서버 DB만들어주고

옌 서버 태그

 

 

옌 클라이언트 테그

내가 치면 이제 서버도 바뀐다!!

잘되면 ???가 안뜬다 문제가 있다면 ??? 가 뜰것이다 찾아봐야한다

'[ 충남인력개발원 ] (2019) > ┗SCADA' 카테고리의 다른 글

PLC X-SCADA 연결해보기  (0) 2019.12.26
CIMON access 하기 ODBC  (0) 2019.12.23
SIMON DB 만들기  (0) 2019.12.18
CIMON OpenPageEx() 함수  (0) 2019.12.17
CIMON 스크립트 만들어보자  (0) 2019.12.17
블로그 이미지

Or71nH

,

DB 를 이렇게 만들어준다

 

이거를 꼭확인할것

 

저거 이름 그림 이름으로 스크립트 다바꿀것!!!

##############################################

그림 그려준다 윈도우 컨트롤러 를 사용하여 끌어오면 된다

밑에 큰박스는 리스트 컨트롤러임

 

이건 날짜 

 

 

 

불러와서 설정해준다

 

 

스클립트를 만들어준다

 

 

 

 

이렇게 하면 PRODUCT.CODE 가 바뀌면 그 당시 태그의 내용이 Log DB 모델에 써집니다

Sub PrInsert()

  n = DbInsert("PRODUCT")

  ' 여기서 n 은 0 이 리턴 되야 성공이고 나머지는 

  ' 데이터를 넣지 못했다는 얘기 입니다 

End Sub

 


입력한 시간에서 얻은 레코드에서 어떤 특정 조건을 만족하는 레코드만 따로 뽑아 낼 수 있는 방법이 존재합니다 .

 

.

Sub PrTimeFind()

   sDate$ = GetTagVal ("PRODUCT.SDATE")

   sTime$ = GetTagVal ("PRODUCT.STIME")

 ' 달력 컨트롤에 물린 태그로 부터 검색 시작 날짜와 시간을 얻어온다.

   eDate$ = GetTagVal ("PRODUCT.EDATE")

   eTime$ = GetTagVal ("PRODUCT.ETIME")

   ' 달력 컨트롤에 물린 태그로 부터 검색 종료 날짜와 시간을 얻어온다.

   DbSetFindTimeStr "PRODUCT",sDate$+sTime$,eDate$+eTime$

 ' 얻어온 시간을 입력 받아서 우리가 만든 PRODUCT 라는 Log DB 모델로 

  ‘부터 검색 시간을 세팅한다.

   n = DbFindRun("PRODUCT")

  ' 실제 검색을 수행한다.

   wcGridCommand "그림3",102,0,0 

 ' 그림3 는 우리가 아까 만든 리스트 컨트롤 이름이며 102라는 명령은 

   ' 이 리스트 컨트롤에 걸려있는 Log DB 모델 검색 결과를 출력하는 명령이다.

End Sub

위에서 사용한 스크립트를 돌리기 위해 이전에 했던 것처럼 버튼을 만들고 명령식에 RunScript("PrOutput") 을 작성합니다

Sub PrOutput()

 

  wcSaveData "그림3","D:\Z-Excel\a.csv" 

  '그림3 의 출력 내용을 csv 지정된 경로에 파일로 출력

  wcSaveData "그림3","D:\Z-Excel\a.xlsx" 

  '엑셀 양식을 복사해서 엑셀 파일로 출력

  wcSaveData "그림3","D:\Z-Excel\a.pdf" 

'엑셀 양식을 복사해서 수정이 불가능한 pdf 문서로 출력

 

End Sub

 

 


행과 열의 선택이 바뀔 때 마다 "PRODUCT.SEL_STR" 태그 값이 변해야 하므로 "PRODUCT.ROW" 태그에 태그 동작과 태그 변경 시 동작을 체크하고 명령식에 RunScript("PrListChange") 를 써줍니다.

Sub PrListChange()

 

  nRow = GetTagVal("PRODUCT.ROW")

  '리스트 컨트롤 행 위치를 얻어 온다.

  nCol = GetTagVal("PRODUCT.COL")

 '리스트 컨트롤 열 위치를 얻어 온다.

  strData$ = wcGridGetData("그림3", nCol, nRow)

' 위에서 구한 행과 열을 가지고 그 위치의 데이터를 얻어온다.

  SetTagVal "PRODUCT.SEL_STR", strData$

 '태그에 얻어온 값을 쓴다.

 

End Sub

 


CimonX에서 검색을 일단 먼저 후 위의 스크립트를 실행 시키면 다음과 같은 결과를 얻을 수 있습니다.

레코드가 차례대로 바뀌는 것을 알 수 있습니다.

Sub PrDirect()

 

   nCnt = DbFindCount("PRODUCT")

  ' 찾은 레코드 수를 얻어온다.

 

   n = DbFindFirstItem("PRODUCT")

  ' 첫번째 레코드로 이동한다.

 

   for i= 1 to nCnt

      ' 레코드 수 만큼 루프를 돈다.

       strVal$ = DbFindItemData("PRODUCT","TIME")

       SetTagVal "PRODUCT.FIND_VAL1",strVal$

      ' 현 레코드 위치에서 시간 문자열을 얻어온다.

 

       strVal$ = DbFindItemData("PRODUCT","CODE")

       SetTagVal "PRODUCT.FIND_VAL2",strVal$

     ' 현 레코드에서 PRODUCT 모델에서 CODE 아이템에 있는 값을 가져와서 가상태그에 쓴다.

 

       strVal$ = DbFindItemData("PRODUCT","ALERT")

       SetTagVal "PRODUCT.FIND_VAL3",strVal$

      ' 현 레코드에서 PRODUCT 모델에서 ALERT 아이템에 있는 값을 가져와서 가상태그에 쓴다.

 

       strVal$ = DbFindItemData("PRODUCT","TC")

       SetTagVal "PRODUCT.FIND_VAL4",strVal$

      ' 현 레코드에서 PRODUCT 모델에서 TC 아이템에 있는 값을 가져와서 가상태그에 쓴다.

 

       strVal$ = DbFindItemData("PRODUCT","PRESS")

       SetTagVal "PRODUCT.FIND_VAL5",strVal$

     ' 현 레코드에서 PRODUCT 모델에서 PRESS 아이템에 있는 값을 가져와서 가상태그에 쓴다.

              

       n = DbFindNextItem("PRODUCT")

      ' 다음 레코드로 이동한다.

       Sleep(100)

      '너무 빨리 지나가므로 좀 천천히 지나가게 해서 값을 확인

      

   next i

 

End Sub

 


검색 내용을 뒤부터 먼저 출력하고 싶다면

Sub PrDirectReverse()

 

   nCnt = DbFindCount("PRODUCT")

   ' 찾은 레코드 수를 얻어온다.

 

   n = DbFindLastItem("PRODUCT")

   ' 첫번째 레코드로 이동한다.

 

   for i= 1 to nCnt

       ' 레코드 수 만큼 루프를 돈다.

       strVal$ = DbFindItemData("PRODUCT","TIME")

       SetTagVal "PRODUCT.FIND_VAL1",strVal$

       ' 현 레코드 위치에서 시간 문자열을 얻어온다.

 

       strVal$ = DbFindItemData("PRODUCT","CODE")

       SetTagVal "PRODUCT.FIND_VAL2",strVal$

       ' 현 레코드에서 PRODUCT 모델에서 CODE 아이템에 있는 값을 가져와서 가상태그에 쓴다.

 

       strVal$ = DbFindItemData("PRODUCT","ALERT")

       SetTagVal "PRODUCT.FIND_VAL3",strVal$

       ' 현 레코드에서 PRODUCT 모델에서 ALERT 아이템에 있는 값을 가져와서 가상태그에 쓴다.

 

       strVal$ = DbFindItemData("PRODUCT","TC")

       SetTagVal "PRODUCT.FIND_VAL4",strVal$

       ' 현 레코드에서 PRODUCT 모델에서 TC 아이템에 있는 값을 가져와서 가상태그에 쓴다.

 

       strVal$ = DbFindItemData("PRODUCT","PRESS")

       SetTagVal "PRODUCT.FIND_VAL5",strVal$

       ' 현 레코드에서 PRODUCT 모델에서 PRESS 아이템에 있는 값을 가져와서 가상태그에 쓴다.

              

       n = DbFindPrevItem("PRODUCT")

        ' 이전 레코드로 이동한다.

       Sleep(1000)

        ' 너무 빨리 지나가므로 사람이 볼 수 있게 천천히   

   next i

 

End Sub

리스트컨트롤은LogDB 내용을 검색할 수도 있지만 사용자가 임의대로 값을 출력할 수도 있고 파일(csv 형태일 때만 가능) 을 읽어서 값을 표출할 수 있습니다.

아래와 같은 스크립트를 작성해고 실험해 봅니다.

 

Sub PrGaraData()

 

   wcGridCommand "그림3", 100, 0, 0 

  '리스트 컨트롤 내용을 모두 지운다

   for nRow = 0 to 25 

    '행을 0 부터 25 까지 돌린다.

 

      data$ ="GaraA"+CStr(nRow)

      wcGridSetData "그림3", 0, nRow, data$

      '임의의 데이터를 만든 후 nRow 행 0열에 데이터를 쓴다

 

      data$ ="GaraB"+CStr(nRow)

      wcGridSetData "그림3", 1, nRow, data$

      '임의의 데이터를 만든 후 nRow 행 1열에 데이터를 쓴다

 

      data$ ="GaraC"+CStr(nRow)

      wcGridSetData "그림3", 2, nRow, data$

      '임의의 데이터를 만든 후 nRow 행 2열에 데이터를 쓴다

 

      data$ ="GaraD"+CStr(nRow)

      wcGridSetData "그림3", 3, nRow, data$

      '임의의 데이터를 만든 후 nRow 행 3열에 데이터를 쓴다

 

      data$ ="GaraE"+CStr(nRow)

      wcGridSetData "그림3", 4, nRow, data$

      '임의의 데이터를 만든 후 nRow 행 4열에 데이터를 쓴다

 

  next nRow

  

End Sub

다음과 같은 스크립트를 실행합니다.

Sub PrGaraLoad()

 

   wcGridCommand "그림3", 100, 0, 0 

 '리스트 컨트롤 내용을 모두 지운다.

  wcLoadData "그림3","D:\gara.csv" 

  'gara.csv 를 읽어 들여 리스트컨트롤에 뿌려준다.

 

End Sub

 


이코드들 다만들어준다  8개임

이제 순서대로 하나씩 해보자

이런버튼하나 만들어준다

 

엑셀 만들어준다

 

C:\CIMON\SCADA 3.90\스마트팜\LOGDB 요따가 저장햇다난

 

리스트 컨트롤 다시 설정해주자

 

 

 

버튼도 만들어주자

 

끝!!

블로그 이미지

Or71nH

,

OpenPageEx를 써보자

 

만들어주고

이고이거 만들어주자

짤린거 없다 딱 저기가지 쓰면 된다

이건 열려있는 페이지 만들기 

즉 화면이 전환되도 그대로 남아있는애만들거다

 $1 은 변수 를 준것으로 즉슨 받은 값 전페이지에서 준 값을 가져올수있다

 

OpenPageEx("페이지이름", "태그이름목록")

그니깐 틀릭햇을때 "태그이름목록" ==> $1 로 들어간다

즉 $1 를 태그이름목록으로 바뀐다 

매번 새로운거 넣어도 똑같게된다

이렇게 만들어주고 

 

밑에거는 복붙해버린다

화면 전환 없이 바로 다음꺼까지 들어가진다

좋움~

 

작동도 잘되고 

끝~

 

블로그 이미지

Or71nH

,