Để chuyển mô hình SIMULINK/SCICOS sang định dạng MacDot trước hết, chúng ta sẽ xem xét một sốđiểm tương quan giữa chúng.
Mối tương quan giữa môi trường SIMULINK/SCICOS và SATAN
Mô hình SCICOS được xây dựng dưới dạng là một mạng lưới các khối được liên kết với nhau. Một khối (toán tử) SIMULINK/SCICOS tương ứng với một kiểu SATAN. Chúng ta xem các đầu vào và đầu ra của khối SIMULINK/SCICOS như các đầu vào và đầu ra của kiểu SATAN. Lời gọi hàm trong khối SIMULINK/SCICOS tương ứng với việc sử dụng một kiểu con trong kiểu SATAN. Bảng 4.1 mô tả sự tương quan giữa SIMULINK/SCICOS và SATAN.
Bảng 4.1. Sự tương quan giữa SIMULINK/SCICOS và SATAN
SIMULINK/SCICOS SATAN
Khối SIMULINK/SCICOS Kiểu SATAN Tham số đầu vào và đầu ra của
81
Lời gọi hàm trong khối Sử dụng thành phần con trong khối
Tuy nhiên, có một số khác biệt giữa SIMULINK/SCICOS và SATAN: − Trong SIMULINK/SCICOS phân biệt chữ hoa và chữ thường,
trong khi SATAN lại không phân biệt.
− Số lượng tham số đầu vào của một khối SIMULINK/SCICOS có thể tùy biến, tuy nhiên trong công cụ SATAN thì ngược lại, số lượng đầu vào và đầu ra của một khối phải cốđịnh trước.
Tạo đầu vào cho SATAN từ mô hình SIMULINK/SCICOS
Để tạo các đầu vào cho công cụ SATAN, trước hết chúng ta phân tích mô hình SIMULINK/SCICOS để tìm ra các dữ liệu cần thiết như:
− Các khối được sử dụng,
− Kiểu, hằng số và biến toàn cục.
Sau đó, chúng ta xây dựng thành phần mạng và định nghĩa kiểu SATAN cho mỗi mô-đun.
Đổi tên trong công cụ SATAN
Tên của các thành phần SIMULINK/SCICOS phân biệt chữ in hoa và chữ in thường, trong khi tên của các thành phần trong SATAN được đặt hoàn toàn bằng chữ in hoa. Vì vậy, chúng tôi đưa ra một số quy tắc đặt tên như sau: − Tên của các thành phần, chân, kiểu, khối, hằng số được viết bằng
chữ in hoa.
− Tên của hằng số bắt đầu bởi “CST_”.
82
− Tên của tham sốđầu vào và đầu ra bắt đầu bởi “BY”. − Tên của biến cục bộ bắt đầu bởi “LOC_”.
Tuy nhiên, vẫn có thể xuất hiện trường hợp hai đối tượng SIMULINK/SCICOS sẽ có cùng tên khi mô tả trong SATAN. Chẳng hạn, ba biến cục bộ trong SIMULINK/SCICOS có tên lần lượt là NumOcc, NUMOcc và NumOCC sẽ có cùng tên khi mô tả trong SATAN. Để giải quyết vấn đề này, khi tạo ra một tên trong SATAN tương ứng với một tên trong SIMULINK/SCICOS, chúng ta kiểm tra xem tên này đã tồn tại trong mô tả MacDot chưa. Nếu đã tồn tại, chúng ta thêm vào hậu tố “_n” (n được tính từ 1).
Khối SIMULINK/SCICOS tương ứng trong SATAN
Một khối trong SIMULINK/SCICOS tương ứng với một khối cùng tên trong SATAN. Thành phần mạng của mô-đun n được mô tả trong tệp tin
n.cssf. Kiểu SATAN của mô đun n được mô tả trong tệp tin n.sat. ITG của mô-đun nđược lưu trữ trong tệp tin n.pro.
Tham số đầu vào, đầu ra của khối SIMULINK/SCICOS tương ứng trong SATAN
Các tham sốđầu vào và đầu ra của khối SIMULINK/SCICOS tương ứng với các tham sốđầu vào và đầu ra của khối SATAN. Chẳng hạn:
Trong SIMULINK:
function [result] = myfun(x, y)
Trong SCICOS:
function result = myfun(x, y)
endfunction
Trong SATAN:
83
INPUTS: PAR_X, PAR_Y;
OUTPUTS: PAR_RESULT;
Đặt tên cho khối trong SATAN
Để đặt tên một khối trong SATAN, chúng ta lấy tên của khối tương ứng trong SIMULINK/SCICOS, sau đó viết dưới dạng in hoa và thêm vào hậu tố “_n”. Chẳng hạn:
Trong SIMULINK:
function result[out] = Max(x , y)
if x > y then out = x; else out = y; end end Trong SCICOS:
function result[out] = Max(x , y)
if x > y then out = x; else out = y; end endfunction Trong SATAN:
Khối trên sử dụng ba phép toán “=”, “>”, “if then else”. Các kiểu SATAN tương ứng là COMP_EGAL, COMP_SUP, SWITCH. Định nghĩa kiểu:
TYPES: COMP_EGAL, COMP_SUP, SWITCH;
Khai báo sử dụng:
COMP_EGAL: COMP_EGAL _1; COMP_GREAT: COMP_SUP_1; SWITCH _I: SWITCH_1;
Chúng tôi trình bày chi tiết một số mô-đun con trong thuật toán tổng thể trong Hình 4.2, như khởi động và xác định các thành phần của mô hình,
84
chuyển mô hình sang định dạng MacDot, chuyển các khối/liên kết sang định dạng MacDot.
Khởi động và xác định các thành phần của mô hình (cos_mdl_2_dot)
Hình 4.3. Thuật toán cos_mdl_2_dot
Chuyển mô hình sang định dạng MacDot (system2dot)
Hình 4.4. Thuật toán system2dot
Algorithm system2dot
Input: Các thành phần của mô hình Simulink/Scicos
Ouput: ðịnh dạng MacDot
Begin
Gọi hàm blocks_to_dot_nodes ñể chuyển các khối
sang ñịnh dạng MACDOT.
Gọi hàm lines_to_dot_edges ñể chuyển các liên kết sang ñịnh dạng MACDOT.
Duyệt qua các hệ thống con và gọi system2dot ñối với mỗi hệ thống con ñể chuyển chúng sang ñịnh dang MACDOT.
End
Algorithm cos_mdl_2_dot
Input: Mô hình Simulink/Scicos
Ouput: ðịnh dạng MacDot
Begin
Tạo thư mục lưu trữ các tệp tin .dot. Các tệp tin
này ñược tạo ra từ các mô hình SIMULINK/SCICOS.
Tạo tệp tin toplevel lưu trữ tên của mô hình gốc. Gọi hàm system2dot ñể chuyển ñổi các khối, liên kết và hệ thống con của mô hình sang ñịnh dạng MACDOT.
85
Chuyển các khối sang định dạng MacDot (blocks_to_dot_nodes)
Hình 4.5. Thuật toán blocks_to_dot_nodes
Chuyển các liên kết sang định dạng MacDot
(lines_to_dot_egdes)
Hình 4.6. Thuật toán lines_to_dot_egdes
Algorithm blocks_to_dot_nodes
Input: Các khối của mô hình Simulink/Scicos
Ouput: Các ñỉnh trong ñịnh dạng MacDot
Begin
Duyệt các khối có kiểu là Inport, EnablePort,
OutPort lấy các tham số và chuyển vào danh sách
blocks_list.
Duyệt các khối trong blocks_list, ñối với mỗi khối thực hiện:
- Dùng hàm get_param ñể lấy tên của khối, tên của hệ thống cha chứa khối, các cổng vào và cổng ra, các khối tham chiếu, các kiểu của khối.
- Ghi các thông tin trên vào tệp tin .dot.
End
Algorithm lines_to_dot_egdes
Input: Các liên kết của mô hình Simulink/Scicos
Ouput: Các cung trong ñịnh dạng MacDot
Begin
Duyệt mỗi liên kết và lấy các tham số
SrcPortHandle, SrcBlockHandle, DstPortHandle, DstBlockHandle.
Chuyển liên kết sang ñịnh dạng MacDot.
86