4 Mô phỏng và đánh giá hiệu quả của bộ điều khiển tần số điện áp
3.14 Mô tả các hàm liên thuộc cho đầu ra output
“IF input_1 =x AND input_2 =y THEN Output=ax+by+c”
Trong trường hợpa=b= 0 và đầu ra là một hằng số thì ta gọi mô hình này là mô hình Sugeno bậc 0. Trong mô hình này, với mỗi giá trị đầu ra zi của từng quy luật hợp thành sẽ được đặc trưng bởi một giá trị trọng số wi. Giá trị trọng số này sẽ phụ thuộc vào quy luật hợp thành mà ta đặt ra khi tổ hợp các biến ngôn ngữ tự nhiên. Giả sử, nếu ta áp dụng quy tắc AND với đầu vào input_1 = x vàinput_2 = y thì giá trị này sẽ là:
wi =M IN(µ(x), µ(y)) (3.2) Quá trình tính toán giá trị trọng sốwi sẽ tương ứng với khối AND-rule trong mô hình được đề xuất. Quá trình này sẽ được thực thi như là một Process và được thực hiện thông qua đoạn mã tìm kiếm giá trị cực tiểu như sau:
r u l e _ w e i g h t : process ( u_x , u_y ) i s va ri ab le i , j : i n t e g e r ;
begin
f o r i in 1 to n loop f o r j in 1 to m loop
i f ( u_x ( i ) < u_y ( j ) ) then
rule_w ( i , j ) <= u_x ( i ) ; e l s e rule_w ( i , j ) <= u_y ( j ) ; end i f; end loop; end loop; end process r u l e _ w e i g h t ;
Trong đó, u_x và u_y chính là các giá trị liên thuộc của các đầu vào input_1 và
input_2.
Với các hàm liên thuộc được mô tả như trong phần3.2.4.1, ta sẽ có tất cả5×3quy luật hợp thành. Thông thường, trong tổng số các quy luật hợp thành được đề xuất, chúng ta có thể bỏ qua những quy luật ít phổ biến hoặc ít xuất hiện. Tuy nhiên, trong mô hình này vì số lượng quy luật hợp thành không lớn nên toàn bộ 15 quy luật này đều được thực thi. Các quy luật hợp thành được mô tả như trong Bảng 3.1.
Bảng 3.1: Các quy luật hợp thành của khối xử lý lô-gíc mờ
Lưu lượng Biến thiên lưu lượng Tần số
vlow slow low
low slow low
medium slow low
high slow normal
vhigh slow normal
vlow normal low
low normal low
medium normal normal
high normal high
vhigh normal high
vlow fast normal
low fast normal
medium fast high
high fast high
3.2.4.3 Quá trình giải mờ
Quá trình giải mờ là quá trình tính toán lại giá trị chính xác ở đầu ra của FLP. Với các giá trị đầu ra của từng quy luật hợp thành zi và giá trị trọng số wi của nó, quá trình giải mờ sẽ sử dụng phương pháp xác định giá trị trọng tâm để tính ra giá trị đầu ra Zout. Giá trị này sẽ được tính theo công thức sau:
Zout = k P i=1 wi.zi k P i=1 wi (3.3)
Trong đó, k là tổng số các quy tắc hợp thành đã được thiết lập. Đoạn mã nguồn VHDL sau được dùng để mô tả quá trình tính toán này:
f o r i in 1 to n loop f o r j in 1 to m loop w_t:= u n s i g n e d (w( i , j ) ) ; z_t := u n s i g n e d ( z ( i , j ) ) ; upper := upper + (w_t∗z_t ) ; l o w e r := l o w e r + w_t ; end loop; end loop; z_out := d i v i d e ( upper , l o w e r ) ;
Trong đó, n và m là số hàm liên thuộc của các đầu vào input_1 và input_2. Các giá trị w(i,j) vàz(i,j) chính là các giá trị trọng số và giá trị đầu ra của các quy tắc hợp thành được tính ra trong những khối trước đó.
3.3 Mô phỏng hoạt động lô-gíc của bộ điều khiển tầnsố - điện áp số - điện áp
Để kiểm chứng các hoạt động lô-gíc của bộ điều khiển tần số - điện áp, từng khối chức năng trong bộ điều khiển tần số - điện áp sẽ được mô phỏng các hoạt động ở mức lô-gíc bằng phần mềm ModelSim. Đối với mỗi khối chức năng, một file testbench bằng VHDL sẽ được viết để tạo ra các tín hiệu đầu vào ngẫu nhiên cho khối đó. Sau khi chạy mô phỏng bằng phần mềm Model Sim, kết quả ở đầu ra sẽ được so sánh với dữ liệu tạo ra từ đặc tả kỹ thuật của từng khối để xác định hoạt động của khối đó đã đúng với thiết kế hay chưa.
Để có thể tạo ra các tín hiệu ngẫu nhiên, thư viện OSVVM được sử dụng để cho phép tạo ra các biến ngẫu nhiên trong ngôn ngữ VHDL. Do đó, trong file testbench ta
cần thêm vào gói RandomPkg để có thể dùng các hàm tạo biến ngẫu nhiên của thư viện này (Phụ lục A.1.4).
3.3.1 Mô phỏng hoạt động của khối đo lưu lượng
Sau khi chạy mô phỏng trên ModelSim, kết quả mô phỏng hoạt động của khối Counter được thể hiện dưới dạng giản đồ sóng như ở Hình3.15. Trong giản đồ sóng này, ta thấy khi thanh ghicount_num đếm đến giá trị 100 thì trạng thái của máy trạng thái (FSM) sẽ chuyển sang trạng thái count_full để kết thúc một lượt đếm. Giá trị đếm được lúc này là 0x78 sẽ được gửi từ thanh ghi val_count_temp ra cổng ra val_count_out. Giá trị này là phù hợp với số sự kiện phát sinh từ xung resp_in trong thời gian 100 chu kỳ xung nhịp. Đồng thời khi quá trình đếm kết thúc, xung end_count_out cũng được đưa lên cao trong một chu kỳ xung nhịp để thông báo quá trình đếm tại bộ đo lưu lượng đã kết thúc.