Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 Q&A
Delphi Programming Q&A
[15943] modbus 통신
박진오 [spc9506] 2170 읽음    2017-12-09 18:16
안녕 하세요.

시리얼로 modbus 통신을 할려고 하는데 어떻게 해야 할지 고수님들 의견 듣고 싶습니다.

장비는 오토닉스 온도콘트롤러 입니다. TK4L-TR44 이고요. modbus 485 통신을 합니다.
장비 국번은 '1'번이고 현재 온도값을 호출 해서 받는 것입니다.

응답을 하면 7개의 데이터가 수신이 되고 그 중에서 5번 값이 온도 값입니다.

<< 문제점 >
cport에서 한번에 전체값을 읽어 오지 못합니다.

< 도움 사항 >
7개의 데이터가 장비에서 출력이 되는데 일정 하게 7개를 받고 싶습니다.
그래야지 5번째 값이 온도 값이니 변환을 할수 있으니까요?
modbus 통신이라서 start 값이 없어서 어떻게 일정 하게 받을 수 있는지 도움 부탁 드립니다.

// 데이터 송신 함수
procedure TForm1.Button_SendClick(Sender: TObject);
var
        Str: String;
begin
        Str := chr(1) + chr(4) + chr(3) + chr(232) + chr(0) + chr(1) + chr(177) + chr(186);
        ComPort.WriteStr(Str);
end;

// 데이터 수신 함수
procedure TForm1.ComPortRxChar(Sender: TObject; Count: Integer);
var
        Str: String;

        h1_temp : String;
        h1_sum : Integer;
begin
        ComPort.ReadStr(Str, Count);
        recv_data := recv_data + Str;
        inc(recv_count);
        Edit_Data.Text := IntToStr(recv_count);

        if (recv_count = 7) then
        begin
                h1_temp := BufToHex(Copy(recv_data, 4, 1));
                h1_sum := HexToInt(copy(h1_temp,2,1)) * 16 + HexToInt(copy(h1_temp,3,1));

                Edit1.Text := IntToStr(h1_sum);

                Memo.Text := '';
                recv_data := '';
                recv_count := 0;

        end;
end;

+ -

관련 글 리스트
15943 modbus 통신 박진오 2170 2017/12/09
15944     Re:modbus 통신 조대현.Clau 3333 2017/12/10
15945         Re:Re:modbus 통신 박진오 2172 2017/12/12
15946             Re:Re:Re:modbus 통신 조대현.Clau 1909 2017/12/12
15947                 Re:Re:Re:Re:modbus 통신 박진오 1984 2017/12/13
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.