matlab에서 MODBUS②WAGO의 PLC 750 시리즈
아날로그 입력 모듈은 2채널입니다. 13비트 + 부호(왼쪽 채우기, 아래 2비트는 에러 코드. 통상 '00')의, 2의 보수 형식으로 유지 레지스터로부터 읽어낼 수 있습니다. 아날로그 모듈의 주소는 연결 순서로 흔들리는 것처럼 보이며 '1'로 보입니다.
TCP 인터페이스 750-342 외부에는 MAC 주소가 쓰여져 있습니다. 이를 바탕으로 TCP/IP 주소를 흔들어줍니다. 750-842 매뉴얼을 읽고 설정했습니다. 구체적인 설명은, 이 기사 를 참조해 주세요.
우선 Modbus Explorer
"Modbus Explorer를 시작합니다.
Device를 클릭하고 나온 Modbus TCP/IP 아이콘을 클릭합니다.
Device Address에 설정한 192.168.111.24를 넣고 Register Type은 Holding...을 선택합니다. Register Address는 '1', Read 아이콘을 클릭하면 8195를 읽었습니다.
Confirm Parameters를 클릭합니다. 다음 화면이 일어나서 연속적으로 읽기가 실행되어 그래프가 그려집니다.
Reg_1 옆에 체크하고 Generate Scripts CODE를 클릭합니다.
라이브 에디터가 시작됩니다.
프로그램
자동으로 생성된,
% Holding Registers
% Read 1 Holding Register of type 'int16' starting from address 1.
modbusData.Reg_1 = read(m, 'holdingregs', 1, 1, serverId, 'int16');
의 설명으로 데이터를 읽어내, 값은 modbusData.Reg_1 에 들어갑니다. 이것을 전압으로 바꿉니다.
16비트 길이 2의 보수 형식이므로 한 번 dec2bin()로 바이너리 문자열로 변환합니다. 이 문자열 앞에 접두어 '0b'를 붙여 뒤에 자리수? 를 나타내는 's16'을 연결합니다. 그 문자열을 bin2dec()로 10진수로 변환하면, 선두가 '1'이면 마이너스의 부호의 처리가 행해집니다(R2020a 이후).
아날로그 데이터의 포맷은 ±10V이므로, 2^15로 나누어 10을 걸면 전압으로 변환됩니다.
프로그램입니다.
% Create a Modbus Object.
m = modbus('tcpip', '192.168.111.24');
m.Timeout = 3;
% Save the Server ID specified.
serverId = 1;
% Holding Registers
% Read 1 Holding Register of type 'int16' starting from address 1.
modbusData.Reg_1 = read(m, 'holdingregs', 1, 1, serverId, 'int16');
binStr = dec2bin(modbusData.Reg_1,16);
Vin = bin2dec(append('0b',binStr,'s16')) / 32768 * 10;
fprintf('Vin0 = %.5fV\n', Vin);
% Clear the Modbus Object created.
clear m
% Clear the Server ID.
clear serverId
Reference
이 문제에 관하여(matlab에서 MODBUS②WAGO의 PLC 750 시리즈), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/jamjam/items/cc03d4a78b8be0c6da4b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)