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

d

일단 찾아보자

 

있다!!

 

뭔가 있다

이렇게 만들면 된다 

아직 뭔지 잘모름 알려주면 ㄳ

 

블로그 이미지

Or71nH

,

자 제일 햇갈리는 이것부터 해보자

PLC부터 설정하자

이거 이르 들 잘 맞쳐야함 

기기랑 CPU 정보 맞추는 거임

왼쪽 밑에 잘보자 Connection Destinaltion

이거 눌러서 인터넷 설정해야함

저거 더블클릭

일단눌러지는거 노란색으로 표시되있다

 

맨위에부터

 

Ethernet Board 는 

난 TCP 통신으로 할꺼다

 

 

 

PLC Module 

여기서 자동 찾기도 있으니 

Ficd CPU 누르면 내가 접속 되있는 인터넷에 PLC 를 찾아준다

 

이건뭐 딜레이 시간 넘 빠르면 애 힘들어함

그럼 잘됫고

 

 

여러가지 만들어준다 

보면 메모리 사용을 어디했나 함 보면 좋다

 

난 주석을 걸어놔서 뭐썻는지 보임 

 

저거 더블 클릭해주자

PLC Parmeter

위에꺼 맨 끝에 

Built-in Ethernet Port Setting 

클릭

이거보니깐 여러가지 있다 음

저거 IP Addres 는 PLC IP 써주고 밑에는 비워두자 

그럼 알아서 잡음

Open Setting을 누르면 

아직 이렇게되있는데 요롯게 바꿔준다

 

그리고 이제 PLC 에 잘 써준다

 

CHECK 해주고

잘됫다고 한다

 

End 끝

 

 

쪼기 위에 쓰기 해서

써주고

 

우리세상에 존제하는 PLC 

PLC 기계 온 오프!!!

껏다가 켜준다

 

 

 

이젠 SCADA 만 해주면 된다

 

이건 만들어져있어서 그런데 새걸로 해보자

여기서

통신만 연결하고 그다음에 동작은 알아서 만들어라 

땡강부리는 애는 키우지 않는다 

스파르타식이 좋음

여기서 같은거 찾아줘야한다

이름은 편한거 하는데 난 기계 이름 줫음

 

통신블록 쓴 워드 에 맞게 넣어줌

넣어주면 끝

잘만들어짐

 

 

 

데이터베이스 만들기

저따구로 태크 만들어주면 연동되있음

 

블로그 이미지

Or71nH

,

 

일단만드.gxw
0.88MB

이건 참고 하면 좋을듯 하다

 

일단 난 GX Work2 를 사용하기 때문에 언어가 미쯔비시 이다

 

미쯔비시

FMOV                 K0               K2M60

명령어 선언         값을 정한다   위치로부터 M60 에서 부터  M68 까지 K2(K는 니플[4개]이니깐 8개 를 0으로 바꿔주면된다)  

 

 

싸이몬(CIMON)

FMOV                  0                   M60         2

명령어 선언          값을 정한다     시작위치     M은워드[16개]이니깐 32개에 값을 넣는다

 

 

 

RST(Reset) : 값을 없에줌

RST                   M06

명령어 선어         위치

 

 

 

이것들은 회사마다 정해 놓은 데이터가있다

F1 을 눌러서 영어 공부 해야한다

 

정말 잘써져있는데 영어라 어렵다

 

이런식으로 회사마다 다르니깐 참고하길 바란다

 

 

 

이렇게 만들것이다

일단 시트는 이렇게 써준다

 

이렇게 만드려면 저거 다운받아서 보면서 만들면 된다

 

저거 모양은

위에있으니 차고 하면서 만들고

 

선은 Ctrl + 방양키 로 선 쭉쭉 만들어준다

 

 

그리고 밑에 빈줄 만드는법은 Shift + insert(단축키 위에있는거 home옆에) 눌러주면

 

Shift + insert

줄이 추가되서 적기가 편할것이다 많은 단축키가 있으니 참고하면서 만들면 된다

 

 

저기 초록색은 위에 초록 팬같은게 있다

저기 초색 첫번째 팬 누르고 이제 엔터나 더블클릭 하면 설명을 쓸수있다(주석)

 

이제 시물레이션을 해보자

저기 맨끝에 자물쇠 달린 컴퓨터가 보인다

저거 클릭하면 시물려이션 모드가 된다

 

시뮬레이션 모드이다

저길 들어가 보자

 

이건 관리자로 메모리 값을 입력할수 있는것이다

이걸로 가상으로 실행해볼수있다

블로그 이미지

Or71nH

,

한국물가정보

http://www.kpi.or.kr/www/

 

한국물가정보 :: 물가정보, 적산정보, 노임단가, 일위대가, 표준품셈, 품셈, 실적공사비, 물가, 적산, 노임, 가격, 원가계산

:::패밀리사이트::: KPI 출판그룹

www.kpi.or.kr

 

보면 화면에 갯수에 따라 견적이 측정된다

 

즉 일부러 화면 갯수를 많이 만들어서 일부러 많이 만들어서 견적넣는 업체가 생길 수 있다

 

협상을 할때 기능을 보고 줄일수 있는것은 페이지수를 최대한 줄여서 받으면 보다 합리적인 가격에

 

프로그램을 받을 수 있다

 

블로그 이미지

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

,