Q&A

  • RS232에서 통신 불량 처리방법
제가 하고 있는 일은 Micom과 PC 간의 rs232 data통신입니다.



우선 조건부터 말씀드리자면(PC의 OS는 WINDOW2000입니다)

1. PC 에서 마이컴으로 8 바이트를 보냅니다

2. 마이컴은 PC로 부터 받은 8 바이트 값를 분석하여 해당 프로시져를 수행합니다.

미리 규약된 데이터(총 8개)중의 하나이면 ACK, 그외의 데이터이거나 Checksum값이 틀리면 NAK 를 PC로 전송합니다.





그럼 지금까지 한 결과를 말하겠습니다.

첫번째, 우선 통신이 제대로 되는지를 검증하기 위해서 완전 DOS 에서 통신을

해본 결과 통신은 아주 잘 됩니다.



두번째, 한텔 자료실에서 입수한 컴퍼넌트을 이용했습니다(Component 그룹창에는 Varian Freeware 라고 나타납니다. Component 이름은 Comm 이구요)

실험결과 통신이 불규칙적으로 됐다 안됐다 합니다

물론, PC에서의 송출은 잘되지만 일정한 간격으로 MICOM 에서 응답하지 않는 경우도 있고, ACK와 NAK 가 반복되거나, 아예 신호를 받지 못하구 있습니다.





통신이 에러없이 잘 이루어질 수있도록 해결책을

알려 주시면 대단히 감사하겠습니다.

참고로 송수신 되는 데이터는 HEXA값입니다.



좀 시간이 긴박합니다.



1  COMMENTS
  • Profile
    김명수 2001.04.26 02:26
    제가 써놓고 제가 답변을 하게 되네요... 혹시 도움이 될까해서

    사실은 다른분의 전화와 토론에 힌트를 얻어서 해결하게 되었습니다.

    김봉수님이라구... 감사드립니다.

    그분 말씀이 도스모드와 윈도우 모드는 OS의 운용체제가 틀려서

    비선점(non-preemtive), 선점형(preemtive)으로 나뉜다고 합니다.

    비선점형의 DOS는 통신프로그램을 실행시키는 동안 인터럽트가 없어서 등간격의 펄스로 통신을 할수있기 때문에 문제가 없는데, 윈도우에서는 인터럽트가 들어와서 신호간격이 등간격이 될수없다고 합니다.(굉장히 수긍이가는 이론입니다.)

    그래서, 처음에는 보내야할 8 바이트를 한꺼번에 보냈었는데, 이러니까 자주 통신에러가 발생되었습니다.

    그래서 아래와 같이 한바이트씩 나누어 보내고 사이사이에 20msec의 인터벌을 주었더니 에러가 거짓말 처럼 없어졌습니다. 이렇게 해서 통신불량을 해결했습니다.

    그럼 저처럼 난관에 부딪친 분들의 건투를 기원하며.. 델파이 다룬지 3일째되는 왕초보였습니다.





    sendstr := #$F;

    comm1.write(sendstr[1],1);

    sleep(20);

    sendstr := #00;

    comm1.write(sendstr[1],1);

    sleep(20);

    sendstr := #00;

    comm1.write(sendstr[1],1);

    sleep(20);

    sendstr := #05;

    comm1.write(sendstr[1],1);

    sleep(20);

    sendstr := #00;

    comm1.write(sendstr[1],1);

    sleep(20);



    김명수 wrote:

    > 제가 하고 있는 일은 Micom과 PC 간의 rs232 data통신입니다.

    >

    > 우선 조건부터 말씀드리자면(PC의 OS는 WINDOW2000입니다)

    > 1. PC 에서 마이컴으로 8 바이트를 보냅니다

    > 2. 마이컴은 PC로 부터 받은 8 바이트 값를 분석하여 해당 프로시져를 수행합니다.

    > 미리 규약된 데이터(총 8개)중의 하나이면 ACK, 그외의 데이터이거나 Checksum값이 틀리면 NAK 를 PC로 전송합니다.

    >

    >

    > 그럼 지금까지 한 결과를 말하겠습니다.

    > 첫번째, 우선 통신이 제대로 되는지를 검증하기 위해서 완전 DOS 에서 통신을

    > 해본 결과 통신은 아주 잘 됩니다.

    >

    > 두번째, 한텔 자료실에서 입수한 컴퍼넌트을 이용했습니다(Component 그룹창에는 Varian Freeware 라고 나타납니다. Component 이름은 Comm 이구요)

    > 실험결과 통신이 불규칙적으로 됐다 안됐다 합니다

    > 물론, PC에서의 송출은 잘되지만 일정한 간격으로 MICOM 에서 응답하지 않는 경우도 있고, ACK와 NAK 가 반복되거나, 아예 신호를 받지 못하구 있습니다.

    >

    >

    > 통신이 에러없이 잘 이루어질 수있도록 해결책을

    > 알려 주시면 대단히 감사하겠습니다.

    > 참고로 송수신 되는 데이터는 HEXA값입니다.

    >

    > 좀 시간이 긴박합니다.

    >