Borrar filtros
Borrar filtros

Read OK but I can't Write in PLC by TCP/IP client.

3 visualizaciones (últimos 30 días)
José Rudiney De Sousa Miranda Júnior
Respondida: SANKALP DEV el 15 de Dic. de 2023
I have a comunicatio betwen PLC Mitsubhishi Q03UDE and MatLab by TCP/IP. I can read register and memories, but I cant write. When I use the 'write' command to request the reading of the registers, it returns the values correctly. However, when I try to use 'write' to write into the PLC, it doesn't write.
% Define the frame structure
frame.header = [hex2dec('50'), 0, 0, hex2dec('ff'), hex2dec('ff'), 3, 0];
frame.length = [hex2dec('0c'), 0];
frame.timer = [hex2dec('20'), 0];
frame.command = [1, 4];
frame.sub_command = [1, 0];
frame.start_addr = [hex2dec('64'), 0, 0];
frame.device = hex2dec('90');
frame.points = [8, 0];
frame1.header = [hex2dec('50'), 0, 0, hex2dec('ff'), hex2dec('ff'), 3, 0];
frame1.length = [hex2dec('10'), 0];
frame1.timer = [hex2dec('20'), 0];
frame1.command = [1, hex2dec('14')];
frame1.sub_command = [0, 0];
frame1.start_addr = [hex2dec('64'), 0, 0];
frame1.device = hex2dec('a8');
frame1.points = [1, 0];
frame1.w_data = [hex2dec('64'), 0];
s = tcpclient('192.168.3.38', 2500, 'Timeout', 10);
write(s, uint8(struct2array(frame)));
data = read(s, 15);
write(s, uint8(struct2array(frame1)));

Respuestas (1)

SANKALP DEV
SANKALP DEV el 15 de Dic. de 2023
Hello Jose,
I understand that you are experiencing difficulties with writing data to a Mitsubishi PLC (Q03UDE) from MATLAB using TCP/IP communication.
To resolve the issue, you can consider implementing robust error handling using try-catch blocks in MATLAB to capture and display any exceptions that may occur during communication and utilize MATLAB debugging tools to step through the code, inspect variable values, and print/display intermediate results for better visibility.
Wrapping the code in a try-catch block will allow you to catch any exceptions that may occur during the execution of the code and handle them appropriately.
Secondly, you can also add a delay between writing the first and the second frame, the delay is necessary to allow the plc sufficient time to process the write operation. You can use MATLAB’s ‘pause’ function to add delay.
Refer to the following documentation to know more about try, catch statements, and ‘pause’ function respectively in MATLAB: -
I hope it helps.
Thanks, and regards,
Sankalp dev.

Categorías

Más información sobre Modbus Communication en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2023b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by