Đăng Ký
Kết quả 1 đến 8 của 8

Hybrid View

  1. #1
    Thành viên Mới
    Ngày tham gia
    Nov 2013
    Bài viết
    8
    Thanks
    2
    2 lượt trong 2 bài viết
    update lai thong tin la minh da truyen va nhan dc du lieu giua matlab va PLC qua UDP. Ben Codesys minh sun dung 'ETH_UDP_STD_REC' va 'ETH_UDP_STD_SEND', du lieu co the duoc dinh dang o LINT hoac LREAL.
    ben matlab minh ko xai simulink ma su dung matlab binh thuong, code la:

    %% ket noi AC500 voi Matlab qua UDP/IP %%
    %------ ------------------------- -------------%
    %------ VD 25,5° in Matlab -> 255 in PLC --------------%




    clear all
    clc


    host = '192.168.0.11'; %IP cua MATLAB (Laptop)
    port_m = 9091; % Port cua MATLAB
    port_PLC = 9090; % Port cua PLC
    IP_PLC = '192.168.0.10'; %IP cua AC500 PM573

    UDP = udp(IP_PLC, port_PLC,'LocalPort',9091);
    %set(UDP, 'InputBufferSize', 8);
    %set(UDP,'Timeout',0.016);
    %set(UDP,'TimerPeriod',1000);
    %UDP.ByteOrder='BigEndian';
    %UDP.DatagramTerminateMode = 'off';

    n=8;

    try
    if ~strcmp(UDP.Status,'open')
    fopen(UDP);

    nhietdo_phong = 10 + 1;
    nhietdo_vao = 10 - 1;
    Data_recv = [10*nhietdo_phong 10*nhietdo_vao];
    fwrite(UDP, Data_recv,'double');


    data_send = fread(UDP,n); % voi LINT format tu PLC, gia tri nhan duoc la 1 vecto
    [temperatur] = data_lesen(data_send); % vi ko doc truc tiep duoc nen minh viet 1 function (data_lesen) de chuyen du lieu
    % dang array ve dang so.
    %%%%%%%function%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    % function[temperatur] = data_lesen(data_send)
    %
    %
    % if data_send(6,1)==255 && data_send(7,1)==255
    %
    % temperatur1 = data_send(8,1)-256; % wenn -256 < Ergebnis < 0
    %
    % elseif data_send(6,1)==255 && data_send(7,1)~=255
    %
    % temperatur1 = -256 - (256-data_send(8,1)); % wenn Ergebnis < -256
    %
    % end
    %
    % if data_send(2,1)==0 && data_send(7,1)>0
    %
    % temperatur1 = data_send(8,1)+ data_send(7,1)*256; % wenn Ergebnis > 256
    %
    % elseif data_send(2,1)==0 && data_send(7,1)~=1
    %
    % temperatur1 = data_send(8,1); % wenn 0 < ergebnis < 256, denn wird in data_send(8,1) gelesen.
    % end
    % temperatur = temperatur1/10;
    % end
    fclose(UDP);
    end
    disp('UDP/IP Open');
    catch err
    disp('Error: Can''t open UDP/IP');
    end

  2. Bài viết của "tranqu" đã được cám ơn bởi các thành viên:


Đánh dấu

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •  
Back to Top