.1 Các tham số PID theo phương pháp Ziegler-Nichols 1

Một phần của tài liệu ĐỀ TÀI THIẾT KẾ BỘ ĐIỀU KHIỂN NHIỆT ĐỘ SỬ DỤNG GIẢI THUẬT PID MỜ (Trang 28 - 44)

Phương pháp này có một số nhược điểm sau:

- Việc lấy đáp ứng tín hiệu bậc thang rất dễ bị ảnh hưởng của nhiễu và không áp dụng được cho q trình dao động hoặc q trình khơng ổn định.

- Đối với các q trình có tính phi tuyến mạnh, các số liệu đặc tính nhận được phụ thuộc rất nhiều vào biên độ và chiều thay đổi giá trị đặt.

- Đặc tính đáp ứng của hệ kín với giá trị đặt thường hơi quá dao động.

2.2.6. Bộ điều khiển PID số

Trong cơng nghiệp, các bộ điều khiển PID có thể được tạo thành từ các mạch tương tự hoặc cơ cấu chấp hành. Tuy nhiên các bộ điều khiển này chưa đáp ứng được yêu cầu cao về độ chính xác và chống nhiễu tốt. Do vậy, cùng với sự phát triển của ứng dụng nhúng trên nền vi xử lý, các bộ điều khiển cũng được số hóa để có thể thực thi với tốc độ cao và chính xác hơn.

Ta có hàm truyền của các khâu hiệu chỉnh PID số (PID rời rạc):

Khâu tỉ lệ:

𝐺𝑃(𝑧) = 𝐾𝑃 (2.6)

Khâu vi phân:

Công thức sai phân lùi được sử dụng chủ yếu để tính hàm truyền khâu vi phân rời rạc: 𝑢(𝑘) = 𝐾𝐷 𝑒(𝑘)−𝑒(𝑘−1) 𝑇𝑇 (2.6)  𝑈(𝑧) = 𝐾𝐷𝐸(𝑧)−𝑧−1𝐸(𝑧) 2𝑇 (2.7)  𝐺𝐷(𝑧) = 𝑈(𝑧) 𝐸(𝑧) = 𝐾𝐷 𝑇 (1 − 𝑧−1) = 𝐾𝐷 𝑇 𝑧−1 𝑧 (2.8) Khâu tích phân:

Có ba cách tính khâu tích phẩn phổ biến là: Tích phân hình chữ nhật tới, tích phân hình chữ nhật lùi và tích phân hình thang. Trong đó tích phân hình thang cho ra kết quả tốt nhất: ∫ 𝑒(𝑡)𝑑𝑡 ≈ 𝑇(𝑒[(𝑘−1)𝑇]+𝑒(𝑘𝑇)) 2 𝑘𝑇 (𝑘−1)𝑇 (2.9)  𝑢(𝑘𝑇) = 𝑢[(𝑘 − 1)𝑇] +𝐾𝐼𝑇 2 (𝑒[(𝑘 − 1)𝑇] + 𝑒(𝑘𝑡)) (2.10)  𝑈(𝑧) = 𝑧−1𝑈(𝑧) +𝐾𝐼𝑇 2 (𝑧−1𝐸(𝑧) + 𝐸(𝑧)) (2.11)  𝐺𝐼(𝑧) = 𝑈(𝑧) 𝐸(𝑧) = 𝐾𝐼𝑇 2 𝑧−1+1 1−𝑧−1 = 𝐾𝐼𝑇 2 𝑧+1 𝑧−1 (2.12)

Từ các khâu riêng biệt trên, ta có hàm truyền của bộ điều khiến PID số [7]:

𝐺𝑃𝐼𝐷(𝑧) = 𝑈(𝑧) 𝐸(𝑧) = 𝐾𝐷 +𝐾𝐼.𝑇 2 𝑧+1 𝑧−1+𝐾𝐷 𝑇 𝑧−1 𝑧 (2.13) ↔ 2𝑇𝑧(𝑧 − 1)𝑈(𝑧) = [[2𝑇𝑧(𝑧 − 1)]𝐾𝑃+ 𝑇𝑧𝐾𝐼𝑇(𝑧 + 1) + 𝐾𝐷(𝑧 − 1)[2(𝑧 − 1)]]𝐸(𝑧) (2.14) ↔ 2𝑇𝑧2𝑈(𝑧) − 2𝑇𝑧𝑈(𝑧)

= [(2𝑇𝐾𝐷 + 𝐾𝐼𝑇2+ 2𝐾𝐷)𝑧2+ (𝑇2𝐾𝐼 − 4𝐾𝐷− 2𝑇𝐾𝑃)𝑧 + 2𝐾𝐷]𝐸(𝑧) (2.16) Đặt: ∆= 2𝑇 ∆𝑧2𝑈(𝑧) − ∆𝑧𝑈(𝑧) = 𝛼[𝑧2𝐸(𝑧)] + 𝛽[𝑧𝐸(𝑧)] + 𝛾𝐸(𝑧) (2.17) ∆𝑈(𝑧) − ∆𝑧−1𝑈(𝑧) = 𝛼𝐸(𝑧) + 𝛽𝑧−1𝐸(𝑧) + 𝛾𝑧−2𝐸(𝑧) (2.18) ∆𝑈(𝑘) − ∆𝑈(𝑘 − 1) = 𝛼𝑒(𝑘) + 𝛽𝑒(𝑘 − 1) + 𝛾𝑒(𝑘 − 2) (2.19) → 𝐺𝑃𝐼𝐷(𝑧) = 𝛼𝑒(𝑘) ∆ +𝛽𝑒(𝑘−1) ∆ +𝛾𝑒(𝑘−2) ∆ +∆𝑢(𝑘−1) ∆ (2.20)

2.3. Lý thuyết điều khiển mờ (Fuzzy Logic Control) [8]

2.3.1. Định nghĩa tập mờ

Tập mờ 𝐹 xác định trên tập kinh điển 𝐵 là một tập mà mỗi phần tử của nó là

một cặp giá trị (𝑥, 𝜇𝐹(𝑥)), với 𝑥 ∈ 𝑋 và 𝜇𝐹(𝑥) là một ánh xạ:

𝜇𝐹(𝑥): 𝐵 → [0 1]

Trong đó: 𝜇𝐹 gọi là hàm thuộc, 𝐵 gọi là tập nền.

2.3.1.1 Các thuật ngữ trong logic mờ

Hình 2.2 Miền xác định và miền tin cậy của tập mờ

• Độ cao tập mờ 𝐹 là giá trị ℎ = 𝑆𝑢𝑝. 𝜇𝐹(𝑥), trong đó 𝑆𝑢𝑝. 𝜇𝐹(𝑥) chỉ giá trị nhở

nhất trong tất cả các chặn trên của hàm 𝜇𝐹(𝑥)

• Miền xác định của tập mờ 𝐹, ký hiệu là 𝑆 là tập con thỏa mãn:

• Miền tin cậy của tập mờ 𝐹, ký hiệu là 𝑇 là tập con thỏa mãn:

𝑇 = {𝑥 ∈ 𝐵 | 𝜇𝐹(𝑥) = 1}

• Các dụng hàm thuộc (membership function) trong logic mờ: Gaussian, PI- shape, S-shape, Sigmoidal, Z-shape…

Hình 2.3 Một số dạng hàm thuộc

2.3.1.2 Biến ngôn ngữ

Biến ngôn ngữ là phần tử chủ đạo trong các hệ thống dùng logic mờ. Ở đây các thành phần ngôn ngữ của cùng một ngữ cảnh được kết hợp lại với nhau. Ta xét ví dụ sau để minh họa về biến ngôn ngữ:

Xét tốc độ của một chiếc xe mơtơ, ta có thể phát biểu xe đang chạy: Rất chậm (VS), chậm (S), trung bình (M), nhanh (F), rất nhanh (VF).

Những phát biểu như vậy gọi là biến ngôn ngữ của tập mờ. Gọi 𝑥 là giá trị của biến tốc độ, ví vụ 𝑥 = 10𝑘𝑚/ℎ, 𝑥 = 60𝑘𝑚/ℎ… Hàm thuộc tương ứng của các biến ngơn ngữ trên được kí hiệu là:

Hình 2.4 Ví dụ về liên hệ giữa biến ngôn ngữ và biến vật lý Như vậy biến tốc độ có hai miền giá trị: Như vậy biến tốc độ có hai miền giá trị:

- Miền các giá trị ngôn ngữ:

𝑁 = {𝑟ấ𝑡 𝑐ℎậm, 𝑐ℎậ𝑚, 𝑡𝑟𝑢𝑛𝑔 𝑏ì𝑛ℎ, 𝑛ℎ𝑎𝑛ℎ, 𝑟ấ𝑡 𝑛ℎ𝑎𝑛ℎ

- Miền các giá trị vật lý:

𝑉 = {𝑥 ∈ 𝐵 | 𝑥 ≥ 0}

Biến tốc độ được xác định trên miền ngôn ngữ N được gọi là biến ngôn ngữ. Với mỗi 𝑥 ∈ 𝐵 ta có hàm thuộc:

𝑥 → 𝜇𝑥 = {𝜇𝑉𝑆(𝑥), 𝜇𝑆(𝑥), 𝜇𝑀(𝑥), 𝜇𝐹(𝑥), 𝜇𝑉𝐹(𝑥)}

Ví dụ hàm thuộc tại giá trị rõ 𝑥 = 65𝑘𝑚/ℎ là:

𝜇𝑥(65) = {0; 0; 0.75; 0.25; 0}

2.3.1.3 Các phép toán trên tập mờ

Cho 𝑋, 𝑌 là hai tập mờ trên khơng gian nền B, có các hàm thuộc tương ứng là

𝜇𝑋, 𝜇𝑌, khi đó:

- Phép hợp hai tập mờ: 𝑋 ∪ 𝑌

+ Theo luật Max 𝜇𝑋∪𝑌(𝑏) = 𝑀𝑎𝑥{𝜇𝑋(𝑏), 𝜇𝑦(𝑏)}

+ Theo luật Sum 𝜇𝑋∪𝑌(𝑏) = 𝑀𝑖𝑛{1, 𝜇𝑋(𝑏) + 𝜇𝑦(𝑏)}

- Phép giao hai tập mờ: 𝑋 ∩ 𝑌

+ Theo luật Min 𝜇𝑋∩𝑌(𝑏) = 𝑀𝑖𝑛{𝜇𝑥(𝑏), 𝜇𝑦(𝑏)}

+ Theo luật Lukasiewicz 𝜇𝑋∩𝑌(𝑏) = 𝑀𝑎𝑥{0, 𝜇𝑥(𝑏) + 𝜇𝑦(𝑏) − 1}

+ Theo luật Prod 𝜇𝑋∩𝑌(𝑏) = 𝜇𝑥(𝑏). 𝜇𝑦(𝑏)

- Phép bù tập mờ: 𝜇𝑋𝑐(𝑏) = 1 − 𝜇𝑥(𝑏)

2.3.1.4 Luật hợp thành mờ

Định lý Mamdani:

“Độ phụ thuộc của kết luận không được lớn hơn độ phụ thuộc điều kiện”. Nếu hệ thống có nhiều đầu vào, đầu ra thì mệnh đề suy diễn có dạng tổng quát như sau:

𝐼𝑓 𝑁 = 𝑛𝑖 𝑎𝑛𝑑 𝑀 = 𝑚𝑖 𝑎𝑛𝑑 … 𝑇ℎ𝑒𝑛 𝑅 = 𝑟𝑖 𝑎𝑛𝑑 𝐾 = 𝑘𝑖 𝑎𝑛𝑑 …

Luật hợp thành: Luật hợp thành là tên gọi chung của mơ hình biểu diễn một hay nhiều hàm thuộc cho một hay nhiều mệnh đề hợp thành.

Các luật hợp thành cơ bản: - Luật Max – Min. - Luật Max – Prod. - Luật Sum – Min. - Luật Sum – Prod.

2.3.1.5 Giải mờ

Giải mờ là quá trình xác định giá trị rõ ở đầu ra từ hàm thuộc 𝜇𝐵′(𝑦) của tập mờ 𝐵′. Có 2 phương pháp giải mờ.

1. Phương pháp cực đại Các bước thực hiện:

- Xác định miền chứa giá trị 𝑦′, 𝑦′ là giá trị mà tại đó 𝜇𝐵′(𝑦) đạt Max:

𝐺 = {𝑦 ∈ 𝑌 | 𝜇𝐵′(𝑦) = 𝐻}

- Xác định 𝑦′ theo một trong 3 cách sau:

Hình 2.5 Giải mờ theo phương pháp cực đại 2. Phương pháp trọng tâm 2. Phương pháp trọng tâm

Điểm 𝑦′ được xác định là hoành độ của điểm trọng tâm miền được bao bởi trục hồnh và được 𝜇𝐵′(𝑦). Cơng thức xác định:

𝑦′ = ∫ 𝑦𝜇(𝑦)𝑑𝑦𝑆

∫ 𝜇(𝑦)𝑑𝑦𝑆 Trong đó 𝑆 là miền xác định của tập mờ 𝐵′

2.3.2. Cấu trúc bộ điều khiển mờ

Hình 2.6 Sơ đồ cấu trúc bộ điều khiển mờ

Các nguyên lý thiết kế hệ thống điều khiển mờ:

- Giao diện đầu vào gồm các khâu: Mờ hóa và các khâu hiệu chỉnh như tỉ lệ, tích phân, vi phân.

- Thiết bị hợp thành: Sự triển khai luật hợp thành R.

- Giao diện đầu ra gồm: khâu giải mờ và các khâu giao diện trực tiếp với đội tượng.

Trình tự thiết kế hệ thống điều khiển mờ: - Định nghĩa các biến ngôn ngữ vào/ra.

- Xác định các tập mờ cho từng biến ngơn ngữ vào/ra (mờ hóa). + Xác định miền giá trị vật lý của các biến ngôn ngữ.

+ Số lượng tập mờ.

+ Xác định các hàm thuộc. + Rời rạc hóa tập mờ. - Xây dựng các luật hợp thành. - Chọn thiết bị hợp thành. - Giải mờ và tối ưu hóa.

2.3.3. Nhược điểm của bộ điều khiển mờ thuần túy

Điều khiển mờ là phương pháp điều khiển hiện đại, có nhiều phát triển. Tuy nhiên cho đến nay vẫn chưa có các nguyên tắc chuẩn mực cho việc thiết kế cũng như khảo sát tính ổn định, bền vững, chất lượng q trình, hay ảnh hưởng của nhiễu…cho các bộ điều khiển mờ. Việc thiết kế các bộ mờ chủ yếu dựa trên kinh nghiệm chỉnh định thực nghiệm. Điểm yếu của lý thuyết mờ là vấn đề về độ phi tuyến của hệ thống.

2.4. Kết luận chương

Trong chương 2 đã trình bày tổng quan vê lý thuyết hai giải thuật điều khiển và nhược điểm của chúng. Để khắc phục những nhược điểm trên, một trong những phương pháp hữu hiệu nhất là sự kết hợp giữa hai bộ điều khiển kinh điển PID với logic mờ nhằm vận dụng ưu điểm của cả hai phương pháp. Bằng cách đấy ta xây dựng được các bộ điều khiển tích hợp như: mờ - PID, mờ lai, mờ thích nghi – PID…

Chương 3: Xây dựng bộ điều khiển PID mờ cho bộ điều khiển nhiệt độ

3.1. Giới thiệu chương

Nội dung chương này trình bày việc xây dựng hàm tryền lò nhiệt thực tế. Phương pháp chỉnh định tham số mờ PID từ đó thực hiện việc mơ phỏng giải thuật PID mờ và so sánh với giải thuật PID truyền thống.

3.2. Xây dựng hàm truyền lò nhiệt

Hàm truyền của lị nhiệt ln là khác nhau với mỗi lị khác nhau, tùy thuộc vào thể tích lị, thanh gia nhiệt, hay công suất gia nhiệt mà thời gian đáp ứng cũng khác nhau. Vì vậy hàm truyền của lị được xác định một cách tương đối bằng phương pháp thực nghiêm, quan sát đồ thị tăng nhiệt của lị khi được cấp cơng suất tối đa từ đó rút ra được các giá trị theo công thức (1.1). Các giá trị 𝑇1, 𝑇2 được xác định bằng đường tiếp tuyến của điểm nút đồ thị.

Hình 3.1 Đặc tính của lị nhiệt.

Trong đề tài này, để giúp cho việc xác định một cách chuẩn xác hàm truyền của lò nhiệt. Ta xử dụng công cụ System Identification Toolbox có trong phần mềm Matlab để nhận dạng đối tượng.

Phương pháp xác định bằng cách thu thập giá trị mà cảm biến nhiệt độ đọc được và hiển thị trong phần mềm Matlab & Simulink. Giá trị nhiệt độ gửi lên Simulink thơng qua board trung gian Arduino Uno.

Hình 3.2 Chương trình Simulink đọc giá trị nhiệt độ được gửi từ Arduino Uno Cơng suất của lị nhiệt được khảo sát sẽ là tối đa, đảm bảo khơng có thay đổi Cơng suất của lị nhiệt được khảo sát sẽ là tối đa, đảm bảo khơng có thay đổi trong suốt quá trình khảo sát. Cảm biến nhiệt độ sẽ đọc giá trị tại mỗi thời điểm khác nhau với chu kì trích mẫu là 1000ms.

Hình 3.3 Đồ thị lò nhiệt được khảo sát

Sau khi xác định được đồ thị của lò nhiệt. Sử dụng phần mềm System Identification để nhận dạng đối tượng. Chọn Import data nhập số liệu đã thu thập được vào mục Input và Output.

Hình 3.4 Thu thập dữ liệu thật bằng System Identification

Sau đó chọn mục Estimate rồi chọn Process Models và chọn dạng hàm truyền của lò nhiệt. Thu được các giá trị tham số 𝐾 = 4.079, 𝑇𝑝1 = 239.81, 𝑇𝑑 = 9.51.

Hình 3.6 So sánh hàm truyền được xây dựng và đồ thị thực Suy ra được hàm truyền của lị nhiệt với độ chính xác 98,09% Suy ra được hàm truyền của lị nhiệt với độ chính xác 98,09%

𝐺(𝑠) = 4.079.𝑒−9.51𝑠

1+239.8𝑠 (3.1)

Hàm truyền lò nhiệt được thể hiện trong Simulink bởi các khối Transfer Fcn như sau:

Hình 3.7 Khối hàm truyền

Đề tài xây dựng giải thuật dựa trên phương pháp điều khiển PID số nên cần có khâu lấy mẫu ZOH.

Hình 3.8 Khối hàm truyền và khâu lấy mẫu

3.3. Chỉnh định tham số mờ PID

3.3.1. Phương pháp chỉnh định

Có nhiều phương phương pháp khác nhau để chỉnh định tham số bộ điều khiển PID như là chỉnh định mờ Madani, chỉnh định theo Zhao – Tomizuka – Isaka, chỉnh định mờ Mallesham – Rajani, chỉnh định mờ Sugeno… Nguyên tắc chung là bắt đầu với các giá trị 𝐾𝑃, 𝐾𝐼, 𝐾𝐷 theo Zeigler – Nichols, các tham số được chỉnh định dựa trên sai lệch 𝑒(𝑡) và đạo hàm 𝑑𝑒(𝑡).

Ở trong đề tài này sử dụng chỉnh định mờ Mallesham – Rajani để tối ưu giá trị của các tham số bộ điều khiển PID.

Đầu tiên cần chuẩn hóa cho cả ba tham số 𝐾𝑃, 𝐾𝐼, 𝐾𝐷 với giả thiếu cả ba đều bị chặn trong khoản [𝐾𝑃𝑚𝑖𝑛, 𝐾𝑃𝑚𝑎𝑥], [𝐾𝐼𝑚𝑖𝑛, 𝐾𝐼𝑚𝑎𝑥], [𝐾𝐷𝑚𝑖𝑛, 𝐾𝐷𝑚𝑎𝑥]. Ta quy đổi các

khoảng này về dạng chính tắc [9]: 𝐾𝑃′ = 𝐾𝑃−𝐾𝑃𝑚𝑖𝑛 𝐾𝑃𝑚𝑎𝑥−𝐾𝑃𝑚𝑖𝑛 (3.2) 𝐾𝐼′ = 𝐾𝐼−𝐾𝐼𝑚𝑖𝑛 𝐾𝐼𝑚𝑎𝑥 − 𝐾𝐼𝑚𝑖𝑛 (3.3) 𝐾𝑃′ = 𝐾𝐷−𝐾𝐷𝑚𝑖𝑛 𝐾𝐷𝑚𝑎𝑥−𝐾𝐷𝑚𝑖𝑛 (3.4)

Khi đó, các giá trị 𝐾𝑃′, 𝐾𝐼′, 𝐾𝐷′ 𝜖 [0,1], và các bộ PID được tính lại:

𝐾𝑃 = (𝐾𝑃𝑚𝑎𝑥 − 𝐾𝑃𝑚𝑖𝑛)𝐾𝑃′ + 𝐾𝑃𝑚𝑖𝑛 (3.5)

𝐾𝑃 = (𝐾𝑃𝑚𝑎𝑥 − 𝐾𝑃𝑚𝑖𝑛)𝐾𝑃′ + 𝐾𝑃𝑚𝑖𝑛 (3.6)

𝐾𝑃 = (𝐾𝑃𝑚𝑎𝑥 − 𝐾𝑃𝑚𝑖𝑛)𝐾𝑃′ + 𝐾𝑃𝑚𝑖𝑛 (3.7) Khi đó bộ chỉnh định mờ của Malleshan – Rajani bao gồm hai đầu vào: sai lệch

𝑒(𝑡) và đạo hàm sai lệch 𝑑𝑒(𝑡). Và ba đầu ra cho ba tham số bộ PID: 𝐾𝑃′, 𝐾𝐼′, 𝐾𝐷′ như

hình 3.7:

Hình 3.9 Mờ hóa bộ chỉnh định mờ cho PID

3.3.2. Cấu trúc bộ mờ và các hàm thuộc

Hình 3.10 Cấu trúc của khối mờ

Ở đây, với mỗi đầu vào bộ mờ ta lập 5 hàm thuộc tương ứng với 5 biến ngôn ngữ:

𝑒(𝑡) = {𝑁𝐵, 𝑁𝑆, 𝑍𝐸, 𝑃𝑆, 𝑃𝐵} 𝑑𝑒(𝑡) = {𝐷𝐹, 𝐷𝑆, 𝑀𝑇, 𝐼𝑆, 𝐼𝐹}

Hình 3.11 Các hạm thuộc của sai lệch 𝑒(𝑡)

Khoảng giá trị của các biến vật lý cho các hàm thuộc của sai lệch 𝑒(𝑡) phụ

thuộc vào khoảng giá trị của tín hiệu đo được.

Hình 3.12 Các hàm thuộc của đạo hàm sai lệch 𝑑𝑒(𝑡)

Khoảng giá trị của các biến vật lý cho các hàm thuộc của đạo hàm sai lệch

𝑑𝑒(𝑡) ta cũng lấy tương tự như đối với 𝑒(𝑡). Tuy nhiên có một chú ý là khoảng giá trị

này phụ thuộc vào thời gian lấy mẫu 𝑇. Thời gian lấy mẫu ở đây là 𝑇 = 1.

Các đầu ra 𝐾𝑃′, 𝐾𝐼′, 𝐾𝐷′ có dạng giống nhau là dạng chuẩn, nên hàm thuộc ta cũng lấy cùng dạng như hình 3.11. Khoảng giá trị biến ra là chính tắc [0; 1]

Hình 3.13 Các hàm thuộc của biến ra 𝐾𝑃′, 𝐾𝐼′, 𝐾𝐷′

3.3.3. Xây dựng luật hợp thành

Phương pháp Mallesham – Rajani sử dụng luật hợp thành Min – Max và giải mờ theo phương pháp điểm trọng tâm.

Hình 3.14 Luật hợp thành và phương pháp giải mờ được sử dụng Các luật hợp thành đều có dạng chung cho ba đầu ra 𝐾𝑃′, 𝐾𝐼′, 𝐾𝐷′ như sau: Các luật hợp thành đều có dạng chung cho ba đầu ra 𝐾𝑃′, 𝐾𝐼′, 𝐾𝐷′ như sau:

If 𝑒(𝑡) is NB and 𝑑𝑒(𝑡) is DF, then 𝐾𝑃′, 𝐾𝐼′, 𝐾𝐷′ is S

Tổng kết lại ta có bảng luật hợp thành như bảng 3.1 và hình 3.10 với hai giá tri đầu vào, ba giá trị đầu ra và hai mươi lăm luật hợp thành.

Một phần của tài liệu ĐỀ TÀI THIẾT KẾ BỘ ĐIỀU KHIỂN NHIỆT ĐỘ SỬ DỤNG GIẢI THUẬT PID MỜ (Trang 28 - 44)

Tải bản đầy đủ (PDF)

(70 trang)