Đăng Ký
Kết quả 1 đến 8 của 8
  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

    Kết nối MATLAB với AC500 PM573 qua giao thức Modbus TCP/IP

    a e thân mến, mình nhận được Đề tài này 1 thời gian rùi, loay hoay mãi vẫn ko tìm được cách giải quyết, hôm nay đăng bài lên đây, a e nào có kinh nghiệm xin hãy chia se giúp mình. Đề tài của mình là "kết nối AC500 PM573 voi MATLAB thông qua giao thức TCP/IP" MATLAB(Slave) đóng vai trò là 1 sensor nhiet và PLC(Master) sẽ yêu cầu thông tin từ MATLAB sau 1 thời gian nhất định.

    Mình gửi 2 file tìm được trên trang của ABB, mọi người cho ý kiến nên phải bắt đầu từ đâu.
    File đính kèm File đính kèm

  2. #2
    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
    https://www.dropbox.com/sh/au1d6i5kh3f1cum/thE5p19JnS

    minh tim dc 1 vd ve cau hinh TCP/IP tren ABB, moi nguoi vao link dropbox o tren de load ve may xem thu nha. Minh da cho no chay tren may cua minh, ko co bao loi, nhugn van chua biet lam sao de dua duoc data ra matlab. moi nguoi co hung thu thi vao xem nha.

  3. #3
    Thành viên cấp 1
    Ngày tham gia
    Nov 2011
    Bài viết
    48
    Thanks
    8
    14 lượt trong 9 bài viết
    Vậy câu hỏi đặt ra là :

    AC500 PM573 hỗ trợ các giao thức TCP/IP nào mà nó có thể làm master ?

    Cái này thực sự mình không rành ! Mong các bạn trao đổi thêm.

    Đọc qua các tài liệu bạn gửi, mình mới thấy được 1 phương án :

    AC500 PM573 = Modbus Master -------> Modbus Client = PC & data simulator from Matlab.

    Các giao thức khác thì mình chưa rõ

    Theo hướng này, cần biến cái matlab thành Modbus Client.

    Search trên mạng thì có 1 cách là xây dựng thư viện modbus client cho matlab. Thư viện này cần liên kết tới Simulink. Mình chưa tìm thấy cái nào ăn sẵn cả. Tuy nhiên cái này là khả thi, vì modbus là tiêu chuẩn mở, và code C/C++ xây dựng cũng có nhiều, nên có thể chuyển vào matlab.

    1 cách khác xuất phát từ việc tiếp cận Matlab sử dụng OPC Toolbox của nó. Theo cách này thì mô hình có thể là như sau :

    Modbus Client = SCADA Modbus OPC Server ( Matrikon ) ---> OPC Client = OPC Toolbox - Matlab.

    Một đề tài khá hay, bài toán ở đây là kiểm tra phản ứng của hệ điều khiển ( PLC ) trên các hệ thống mô phỏng ( sensor nhiệt) khi không có khả năng triển khai các hệ thống thật.

    Mong tiếp tục trao đổi với bạn. Nếu có thể ta có thể cùng hợp tác tại topic này.

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


  5. #4
    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
    AC500 PM573 = Modbus Master -------> Modbus Client = PC & data simulator from Matlab.

    minh van chua tim dc huong dan de xay dung thu vien modbus client cho matlab. minh tim dc cai link nay (http://www.mathworks.se/matlabcentra...us-over-tcp-ip), nhugn chua biet het cac ham ben trong. ban search dc thogn tin nao tren net, co the chia se tren day voi minh dc ko. cam on ban aladanh2000 da hop tac.

  6. #5
    Thành viên cấp 1
    Ngày tham gia
    Nov 2011
    Bài viết
    48
    Thanks
    8
    14 lượt trong 9 bài viết
    link đó mình cũng search tới rồi, nhưng chưa check dc trong matlab. Nhìn thì cũng dễ hiểu mà. vướng lệnh nào thì bạn tra của matlab thôi. Trên đó người ta mới ví dụ hàm modbus. Cần tạo thêm hàm kết nối vào simulink nữa

  7. #6
    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
    minh da hoi 1 nguoi ban da tung lam viec voi ABB nho giup do, minh nhan duoc loi khuyen nen sd UDP se de cau hinh hon, nen minh up len day thong tin cua ABB ve UPD, cung ko phai la cai minh can, nhugn doc thay ro rang hon va minh co the lam thu xem sao. anh em load ve roi nghien cuu chugn nha. tren Simulink cung co Toolbox UDP-send va UDP-Receive.

    link: https://www.dropbox.com/sh/8ii2m48m1sbvplz/NsbM4HTWaW

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


  9. #7
    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
    aladanh2000 oi ban co biet con AC500 PM573 nay xai con chip gi ko? (microchip, intel, AMD, freescale...)
    vao phan hardware implementation trong simulink thay co nhieu lua chon ma ko biet con PM573 nay la loai nao. ko biet co the doc duoc thogn tin cua PM573 o dau.

  10. #8
    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

  11. 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