Siemens(지멘스) PLC Write 기능 질문드립니다.(내용추가)

garocn   
   조회 933   추천 0    

c# 으로 S7netplus 라이브러리 받아서 개발 중인 초보 PLC 개발자 입니다.

Connection 부분은 문제 없이 되구, Write 테스트 하는데 막히는 부분이 있어서 질문드려요

_plc.Write("MW0", (short)8);

이렇게 쓰면 MW0 영역에만 써지는게 맞는데, MW1 영역에는 왜 써지는 걸까요?


추가 내용) 

저는 라이브러리가 잘못된줄알았는데, Siemes가 제공하는 TIA Tool 에서 값을 줘도 동일한 문제가 발생하네요. 

아마 Siemens가 다른 제조사 PLC들과 메모리 체계 방식이 다른거 같아서 혼동이 오네요.. 

10진수 255 값을 MW0 주소에 Write했을 때는 다음 주소(MW1) 까지 영향을 주지만, 256 이상 값을 쓰면 다음 주소 값에 영향을 안주네요. 

1. MW0 에 10진수 12를 Write 했을 때

2. MW0 에 10진수 256를 Write 했을 때,





소스 첨부)




서명
짧은글 일수록 신중하게.
서형호 01-16
질문이 너무 짧습니다.
문제가 있는 곳 근처의 코드를 같이 보여주시면 해결에 도움이 될겁니다.
     
garocn 01-17
첨부해서 올려놨습니다 감사합니다
곰삼촌 01-17
올리신 질문이 좀 이해가 안되서 다시 여쭈어봅니다.

그러니까 %MW0에 값 범위가 넘지 않은 값을 넣었는데 %MW1의 값이 왜 변하냐 라는 이야기신건가요?(Siemens S7 PLC의 1 워드는 16비트입니다.)
     
garocn 01-17
네 맞습니다. %MW1의 값이 왜 변하는지 궁금합니다.
16bit면 8이란 값을 입력 했을때, 해당 주소(%MW0)에만 표현 되는게 맞지 않나 싶어서요.

현재까지 몇 가지 case로 테스트했을 때,
Simens S7 PLC에서 워드 형식의 데이터를 읽고 쓸 때는 짝수 어드레스 기준으로 Write 하면, 홀수 번호의 주소 값은 배제하는게 맞는거 같아요.
다른 예로 더블 워드의 값을 %MW0 에 적으면, MW0, MW1, MW2, MW3 의 값들이 모두 바뀌네요.
이 말은 (%MW0, %MW1) 가 1 Word 에 필요한 주소값이란 얘기고, Tool 상 에서 Bin 값으로 확인해봐도 32bit 를 모두 사용하는게 헷갈리네요.
          
곰삼촌 01-19
해당 통신 소스가 1워드 전송을 못한다고 봐야겠네요. 소스 한번 재검토 해보시는게 좋을거같습니다.
               
garocn 01-19
소스문제는 아니구, 지멘스에서 제공하는 TIA Tool 자체에서도 그렇네요. 지멘스 PLC 통신자체가 그런가봐요


QnA
제목Page 35/5728
2014-05   5257129   정은준1
2015-12   1781976   백메가
01-17   1363   풀로드시스템
01-17   1105   홀릭0o0
01-16   834   염불님
01-16   934   garocn
01-16   1146   프랑
01-18   790   컴박
01-16   919   행복하세
01-16   827   Nicoffeine
01-16   798   박문형
01-16   919   빠끔살이
01-16   616   haniy
01-16   730   쭝2짱
01-15   823   최딴따라
01-15   1213   안토니오김
01-16   953   안토니오김
01-15   867   안토니오김
01-15   796   안토니오김
01-15   990   김제연
01-15   1128   pumkin
01-15   772   Noman