천객만래 [千客萬來] (It has an interminable succession of visitors)

'PLC'에 해당되는 글 2건

  1. 2015.03.17 [개발/ASP.NET] ASP.NET Life Cycle
  2. 2013.09.04 [전기/기계] PLC 자료와 정보 - RS-422/485

오래 전 회사에서 옆 직원의 책상에 붙여진 ASP.NET Life Cycle 을 보게 되었습니다.

그냥 무턱대고 개발만 했지, 진정으로 중요한 부분을 간과하고 넘어간게 아닌가 하는 생각이 들어서 유심히 바라보게 되었습니다.

 

Life Cycle을 보는 순간 답답하더군요. 모르는게 많구나....

물론 개발할 때 꼭 필요하지 않을 수 있지만, 아는게 좋겠죠?

 

여기저기 찾아본 결과 제가 봤던 건 ASP.NET Life Cycle 이 아니라 컨트롤의 실행 주기라고 하더군요. (같은건가? ;;;)

사용자 정의 서버컨트롤인가? 이거 만들때 유용하게 쓸 수 있습니다.

 

Control Execution Lifecycle

내용은 이렇습니다.

총 11 단계로 구성되어 있고 재정의할 메서드 들이 나와있습니다.

아래 표는 컨트롤 실행 주기의 각 단계에 대한 상위 수준 개요입니다.

 

단계재정의할 메서드 또는 이벤트
초기화Init 이벤트(OnInit 메서드)
뷰 상태 로드LoadViewState 메서드
게시 테이터 처리LoadPostData 메서드
(IpostBackDataHandler가 구현된 경우)
로드Load 이벤트
(OnLoad 메서드)
게시 변경 알림 보내기RaisePostDataChangedEvent 메서드
(IpostBackDataHandler가 구현된 경우)
게시 이벤트 처리RaisePostBackEvent 메서드
(IpostBackEventHandler가 구현된 경우)
사전 렌더링PreRender 이벤트
(OnPreRender 메서드)
상태 저장SaveViewState 메서드
렌더링Render 메서드
삭제Dispose 메서드
언로드UnLoad 이벤트(On UnLoad 메서드)


참고   EventName 이벤트를 재정의하려면, OnEventName 메서드를 재정의하고 기본 OnEventName을 호출합니다.

 

위의 내용은 아마도 MS에 나와 있는 내용 같습니다.

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconcontrolexecutionlifecycle.asp

 

 

아래는 검색하다보니 한 영문 사이트에 나와 있는 걸 옮겨 놨습니다.

같은 이야기 같은데 설명만 조금 다른것 같습니다.

 

ASP.NET Page Life Cycle

 

1. Object Initialization (페이지 초기화)
   OnInit Method : Controls are initialized based on their declaration.
2. Load ViewState Data (뷰상태의 로딩-Postback)
   When load viewstate is fired, controls are populated with the appropriate view state data.
3. Load PostData Processes Postback Data (포스트백 데이터의 로딩-Postback)
   Unique IDs for each controls
4. Object Load (페이지의 로딩)
   The OnLoad event is an idal location to place logic.
5. Raise PostBack Change Events (상태변경과 관련된 이벤트 발생-Postback)
6. Process Client-Side PostBack Event (포스트백 이벤트 발생-Postback)
   Postback event handling
   The RaisePostDataChanged and RaisePostBackEvent events are defined by the IPostBackDataHandler interface.
7. Prerender the objects (렌더링 준비)
8. ViewState saved (뷰상태저장)
9.Render to HTML 페이지 렌더링
10. Disposal (페이지 자원의 해제-리소스 해제)
11. UnLoad (페이지의 언로드-메모리에서 언로드)

 

 

첨부된 소스는 간단하게 확인 할 수 있도록 만들어 봤는데, 제대로 만든 코드인지 모르겠네요. ^^;

어떻게 실행되는지 참고 하세요.

 

첨부된 그림은 한 인터넷 사이트에서 발견했습니다.

설명이 필요할 것 같은데, 읽어보기 귀찮아서 그냥 그림만 가져왔는데, 난해하군요..ㅎㅎ

 

http://hydrate.typepad.com/leo/2004/08/the_aspnet_v20_.html




 

Posted by SB패밀리


PLC 자료와 정보 - RS-422/485


RS-422/485

 

시리얼 통신을 얘기할 때 RS-232와 함께 빠지지 않고 등장하는 것이 RS-422/485입니다. 그래서 이번에는 RS-422/485는 무엇이고, 어디에 쓰는건지에 대한 얘기를 하려고 합니다.

대개 뭔가 불만족스러운 것이 있을 때 새로운 것이 만들진다고 한다면, RS-422/485를 등장시키는 RS-232에 대한 불만족은 뭘까요? 그것은 바로 짧은 통신 거리와 두개의 장비만을 연결할 수 있다는 제한입니다. RS-232로는 15m를 넘지 않는 거리의 두 장비만을 서로 연결할 수 있을 뿐입니다. 소위 말하는 최대 15m의 1:1 통신이 바로 RS-232입니다.

그래서 RS-422/485는 좀 더 먼 거리와 여러 대의 장비를 동시에 연결하기 위한 목적으로 만들어집니다. 그래서 RS-422/485는 약 1200m까지의 통신거리를 지원합니다. 그리고 RS-422은 소위 1:N이라는 통신 형태로 하나의 장비가 여러 대의 장비와 통신하는 형태를 지원하고, RS-485는 소위 N:N이라는 통신 형태로 여러 대의 장비가 서로 간에 통신하는 형태를 지원합니다.

물론 RS-422/485는 이 보다 훨신 복잡 다양한 얘기를 필요로 하는 것입니다. 하지만 저는 어디까지나 프로그램을 하는데 있어 필요한 것에만 관심이 있고, 그 이외의 내용에 대해서는 사실 문외한입니다.

 

1:N

 

자동화를 하다보면 이런 형태를 많이 보게 됩니다. 가장 쉽게는 하나의 PLC에 여러 대의 터치 스크린을 물리는 경우라고 생각됩니다. 이 경우 PLC가 1이 되고, 여러 대의 터치 스크린이 N이 되어 RS-422를 이용한 1:N 통신 형태를 구성하게 되는 것입니다.

하드웨어적으로 볼 때 RS-422은 통신을 위해 최소한 4가닥의 선이 필요합니다. 송신을 위한 신호선 2가닥(TX+, TX-)과 수신을 위한 신호선 2가닥(RX+, RX-) 그렇게 4가닥이 필요합니다.

이들 신호선들을 배선하는데 있어 1과 N 사이에서는 1의 TX+,. TX-가 N의 RX+, RX-로 연결되고, 같은 방법으로 N의 TX+,. TX-가 1의 RX+, RX-로 연결되어 1이 송신을 하면 N이 수신을 하고, N이 송신을 하면 1이 수신을 하는 형태가 되도록 합니다.

이것은 생각하기에 따라 1과 N이라는 두 장비의 1:1 통신이라고 볼 수도 있습니다. 하지만 N으로 대표되는 것은 하나의 장비가 아니라, 하나 이상의 장비들입니다. 따라서 이들 간에도 배선이 필요합니다. 장비는 여럿이지만 마치 하나인 것처럼 하기 위한 배선? 그것은 4개의 신호선을 모두 동일하게 연결하는 것입니다. TX+는 TX+로 TX-는 TX-로 ....

결론적으로 RS-422로 1:N 구성을 한 경우 1에 해당하는 장비가 송신을 하면 N에 해당하는 모든 장비들이 그것을 수신하게 되고, 반대로 N에 포함되는 장비중 하나라도 송신을 하면 그것을 1이 수신할 수 있게 되는 형태입니다.

이렇게 함으로써 물리적으로 1:N 사이의 통신은 가능하게 되었지만 몇가지 문제가 생깁니다. 1이 송신을 하는 경우 이것은 N전체에 대한 것일 수도 있겠지만 N중의 누군가를 위한 것일 수도 있습니다. 그럴 경우에는 어떻게 할 것인지를 고민해야 합니다. 반대로 N에 포함되는 장비들이 동시에 1에게 송신을 하게 되면 1은 도대체 무엇을 수신하게 될까를 걱정하지 않을 수 없습니다. 하지만 RS-422에 있어 하드웨어적으로 이 문제를 해결할 수 있는 방법은 없습니다. 그래서 프로그램을 통해서, 논리적으로 이 문제를 해결해야 합니다.

문제를 해결하는 아이디어는 사용하는 프로토콜에 반드시 국번이라는 것이 포함되도록 하는 것입니다. 즉, N에 해당하는 모든 장비에게 고유한 순번인 국번을 부여하고, 송신을 할 때 반드시 국번을 포함시킴으로써 국번이 일치하는 N의 장비만이 반응을 하도록 하는 규칙을 통해 위의 두 가지 문제를 해결하는 것입니다.

1은 국번을 포함하는 전송으로 N의 특정한 장비에게만 요청을 한다.

1의 요청을 모든 N 장비들이 수신은 하겠지만 국번을 확인해서 자신에게 하는 요청이 아니라면 무시해 버림으로써 요청된 하나의 장비만이 송신하게 되어 N 간에 송신이 중복되는 문제도 해결한다.

RS-422 통신을 위해서는 1처럼 특정 N에게만 요청을 하고, 응답을 대기했다가 또 다른 장비에게 요청을 하는 식으로 전체적인 통신을 주도/통제할 수 있어야 합니다.

 

N:N

 

RS-422을 이용한 1:N의 통신에서는 N에 포함된 장비들 상호간에는 통신을 할 수 없는 문제가 있습니다. 그래서 N:N 즉, 연결된 모든 장비들이 서로 간에 송/수신이 가능하도록 하기 위해서 RS-485를 사용합니다.

RS-485는 하드웨어적으로 단 2가닥의 선을 사용합니다. 두 신호선을 TRX+, TRX-라고 합니다. 이름에서도 보이는 것처럼 같은 신호선을 통해 송신도 하고 수신도 하는 것입니다.

이것은 N의 장비중 하나가 송신을 하면 그것을 나머지 모든 N-1이 수신하게 되는 것입니다(설정하기에 따라서는 자신이 송신한 내용을 자신이 수신하기도 합니다). 그래서 이 경우에도 1:N에서 처럼 한 순간에 하나의 장비만이 송신을 해야 합니다. 여러 장비가 동시에 송신을 하려고 한다면 그것은 잡음이 될 뿐입니다. 그러므로 N:N에서도 국번을 이용한 논리적인 차원에서의 송/수신 통제가 반드시 필요합니다.

Posted by SB패밀리
TAG PLC, rs-422, RS-485