[TeledyneLeCroy] ‘RS485 신호 디코딩 절차’ 주제의 포스팅

  • 2024-08-24
  • 조회수644
[TeledyneLeCroy] ‘RS485 신호 디코딩 절차’ 주제의 포스팅



                               그림 1. RS-232 디코딩을 적용하여 디코딩된 RS-485 신호

RS-485 통신은 산업 자동화 및 제어 시스템에서 널리 사용되고 있는 통신 프로토콜입니다. 차동 신호를 이용한 데이터의 안정성과 하나의 마스터에 여러 슬레이브를 연결하는 멀티 드롭 환경에서 특히 주목 받고 있습니다. 이번 기사에서는 오실로스코프에서 제공하고 있는 Embedded 또는 RS232, UART 디코딩 기능을 RS-495 신호에 적용하여 신호의 정보를 디코딩하고 원하는 데이터를 트리거하는 절차에 대해서 말씀드리도록 하겠습니다.

그림 1은 차동프로브를 이용하여 TXD+와 TXD- 를 프로빙하여 디코딩을 수행한 예입니다.



                                            그림 2. 2 바이트 정보에 대한 시그럴링 확대

데이터 프레임을 바이트 길이로 확대하여 확인해보면 그림 2에서 확인할 수 있는 것처럼, RS485 통신을 위한 특정 프로토콜은 가지고 있지 않습니다. 바이트의 시작(Start)와 끝(Stop)으로 이루어진 단순한 구조이며, RS485를 사용하는 용도에 맞는 프로토콜에 따른 프로그래밍이 수행되어야 합니다.

프로빙 방향만 주의를 기울인다면 정보를 확인하고 트리거하는 작업은 그다지 어렵지 않습니다. 그럼 디코딩 절차를 알아보겠습니다.


RS-485 신호 디코딩 적용 순서

1. RS-485 신호를 포착하여 화면에 표시합니다. 한 개이상의 데이터 프레임이 표시되도록 타임베이스를 설정합니다. 아래의 그림 3은 RS485 신호를 오실로스코프 채널 1에서 포착한 예입니다.



               그림 3. 디코딩 전에 포착한 RS-485 신호, 차동 프로브를 이용하여 포착

2. 신호를 포착하고 있는 채널의 정보를 표시합니다. 채널 설정 메뉴가 화면에 나타나면 Actions for trace C1 메뉴에서 "Decode" 버튼을 선택합니다. 또는, 풀다운 메뉴 Analysis 에서 Serial Decode 항목을 선택합니다.



그림 4. 디코딩 메뉴에 접근하는 방법 중 하나인 채널 디스크립터 메뉴에서 디코딩 설정에 접근할 수 있습니다.

3. 화면 하단에 표시된 Decode Setup 탭에서 신호가 입력되고 있는 소스 채널, 프로토콜 및 속도(Bitrate)를 설정합니다.



               그림 5. 디코딩 설정탭, RS-232 설정으로 RS-485 디코딩 설정이 가능합니다.

4. 마지막으로, View Decode를 체크하면 곧바로 화면에 디코딩 결과가 표시됩니다.



                                                 그림 6. 바이트 단위로 표시한 디코딩 결과

간단하게 4 번의 동작으로 디코딩을 수행했습니다.

세부적으로 확인하면 신호의 정보를 더 자세하게 알아볼 수 있는 메뉴를 살펴본다면, 화면의 오른쪽에 보이는 세부 


디코드 Mode Setup : Byte 또는 Message Frame

메뉴 항목중 Mode Setup 부분의 "Mode Setup"을 들 수 있습니다. 디코딩 결과를 바이트 단위로 표시할 것인지 아니면 프레임 단위로 디코딩 할 것인지를 선택하는 부분입니다. 예를 들어, 그림 6의 디코딩 정보를 왼쪽에서 부터 나열해보면,  0x55, 0x45, 0x56,0x77,0x2e, 0x2d, 0x5c,0x56,0x77,0x2e의 10 바이트 정보가 디코딩 되어 있습니다. 그리고 화면 아래에 표시된 테이블에는 데이터 칼럼에 각 바이트 정보가 하나씩 디코딩되어 있는 것을 확인할 수 있습니다.

만약, 실제 확인해야 할 정보는 각 바이트 단위가 아닌 프레임 단위로 정보가 이동한다면, 디코딩을 프레임 단위로 수행하는 것이 더 도움이 됩니다. 이때 사용할 수 있는 메뉴가 디코딩 mode를 선택하는 것입니다.

동일한 신호를 프레임 단위로 표시한 예를 아래 그림 7에 표시합니다.



    그림 7. 메시지 프레임 단위로 표시하여 바이트 표시보다 의미있는 결과를 확인할 수 있습니다.

Message Frame 모드로 선택했을 때, 더 의미 있는 값을 확인할 수 있습니다. 


interframe Time

인터프레임 타임 항목은 프레임과 프레임 사이를 구분할 수 있는 최소 간격이 어느 정도여야 하는 지를 지정하는 메뉴입니다. 이 메뉴는 message frame 모드를 선택했을 때만 사용할 수 있는 메뉴로 지정한 시간에 따라 프레임의 길이가 결정됩니다.

그림 7에서는 interframe time이 1us로 지정되어 있습니다. 1us 보다 긴 시간동안 idle 상태를 유지하면 프레임과 프레임을 구분한다는 의미입니다. 따라서 0x55, 44와 0x56,0x77,0x2e가 서로 다른 프레임으로 나누어져 있는 것을 볼 수 있습니다.  바로 앞에서 나열한 5 바이트의 정보가 실제로는 하나의 프레임이라면 interframe time이 1us 보다는 길어져야 합니다. 그림 8에서는 interframe time을 1ms로 길게 선택하여 5 바이트의 정보가 하나의 프레임으로 여겨지도록 선택한 예입니다.


 
         그림 8. Interfame Time 설정으로 프레임과 프레임을 정확하게 구분할 수 있습니다.

프레임과 프레임 사이의 간격이 1ms 보다 짧은 데이터들은 모두 하나의 프레임안에 포함된 정보로 인식하여 디코딩 결과를 테이블에 표시합니다.

바이트 단위의 디코딩에서는 의미를 갖지 못하지만 프레임 단위로 디코딩을 수행할 때는 각각의 프레임을 구분하는 중요한 역할을 수행합니다.

RS485의 경우 특정 프로토콜을 가지고 있지 않아, 비교적 쉽게 디코딩을 수행할 수 있습니다.