PLC-PLC 이더넷 통신을 하고 있습니다.
통신 방식은 고정버퍼에 의한 교신 (무수순) 방식입니다.
문제점은 A PLC -> B PLC로 송신 데이터는 설정값 20 Byte로 송신 & 수신이 잘 되나,
B PLC -> A PLC로 송신 데이터는 설정값 20 Byte로 되어 있으나, A PLC로 수신되는 데이터는 20 또는 40 또는 60 Byte로
수신이 됩니다. 20 Byte씩 수신이 되어야 하나 같은 데이터를 2~3번 연속적으로 읽습니다.
참고로 A PLC CPU는 "Q12H" 이고, B PLC는 "Q06UDEH"입니다.
속도가 빠른 B PLC를 A PLC가 못 따라가나 의심도 해 봤는데, 프로그램 분석해 보면 그것도 아닌 것 같습니다.
프로그램 캡쳐해서 올립니다.
B PLC 송신부
A PLC 수신부
추가적으로 위 증상으로 인하여 A PLC 버퍼메모리 5760 (커넥션 5 수신 데이터 길이)를 강제로 20으로 설정 후 BUFRCV 명령 실행시 맞게 동작 됩니다. 하지만 버퍼메모리 5760은 읽는 영역인데, 강제로 값을 바꿔서 사용해도 문제가 없는지 궁금합니다.
매뉴얼 상에는
"""""""""(2) 고정 버퍼에 의한 교신(무수순)의 경우
무수순에는 스테이트먼트데이터 길이가 없으므로, 수신한 데이터는 그대로
수신 버퍼 영역에 저장됩니다.
수신측에서 어플리케이션 데이터의 바이트수나 데이터 종류 등을 알 수 있
도록, 스테이트먼트의 어플리케이션 데이터 중에 데이터 길이나 데이터 종
류 코드를 포함시키는 등의 체크 수단을 마련할 것을 권합니다.""""""라고 나오는데
스테이트먼트의 어플리케이션 데이터 중에 데이터 길이나 데이터 종
류코드를 어떻게 추가하는지에 대한 방법은 찾지 못 했습니다.
고수님들의 조언을 부탁 드립니다.