Lợi thế của việc cấy ghép PID có nguồn gốc từ biến đổi Z là gì?


29

Tôi đã thấy nhiều bài viết về PID, như thế này , sử dụng một biến đổi Z của phương trình PID chung để rút ra một số phương trình khác biệt điên rồ mà sau đó có thể được thực hiện trong phần mềm (hoặc trong trường hợp này là một đồ họa). Câu hỏi của tôi là, lợi thế của việc triển khai như vậy so với truyền thống và trực quan hơn nhiều, không có bằng tiến sĩthực hiện kiểu gì? Thứ hai có vẻ dễ hiểu và dễ thực hiện hơn. Thuật ngữ P là phép nhân thẳng, tích phân sử dụng tổng chạy và đạo hàm được ước tính bằng cách trừ mẫu trước đó khỏi mẫu hiện tại. Nếu bạn cần thêm một tính năng như bảo vệ Integral Windup, đó là đại số thẳng về phía trước. Cố gắng thêm bảo vệ Integup Windup hoặc các tính năng khác cho thuật toán loại khác, chẳng hạn như được liên kết ở trên, có vẻ như nó sẽ phức tạp hơn nhiều. Có bất kỳ lý do để sử dụng một triển khai như vậy, ngoài "Tôi là một kẻ xấu thích làm biến đổi Z cho vui" loại quyền khoe khoang đi cùng với nó?

EDIT: PID không có bài viết PHD mà tôi liên kết là một ví dụ về việc triển khai đơn giản hơn sử dụng tổng chạy cho thuật ngữ tích phân và sự khác biệt giữa các mẫu liên tiếp cho thuật ngữ phái sinh. Nó có thể được thực hiện với toán học điểm cố định theo cách xác định và có thể bao gồm thông tin hằng số thời gian thực trong tính toán, nếu muốn. Về cơ bản, tôi đang tìm kiếm một lợi thế thực tế cho phương pháp biến đổi Z. Tôi không thể thấy làm thế nào nó có thể nhanh hơn hoặc sử dụng ít tài nguyên hơn. Thay vì giữ tổng hoạt động của tích phân, phương thức Z dường như sử dụng đầu ra trước đó và trừ đi các thành phần P và D trước đó (để đến tổng tích phân bằng phép tính). Vì vậy, trừ khi ai đó có thể chỉ ra thứ gì đó tôi đang thiếu, tôi sẽ chấp nhận nhận xét của AngryEE rằng về cơ bản chúng giống nhau.

EDIT CUỐI CÙNG: Cảm ơn các câu trả lời. Tôi nghĩ rằng tôi đã học được một chút về mỗi thứ nhưng cuối cùng, nghĩ rằng Angry là chính xác ở chỗ nó chỉ là vấn đề ưu tiên. Hai hình thức:

e(k-2)=e(k-1),

bạn(k)= =bạn(k-1)+Kp(e(k)-e(k-1)+KtôiTtôie(k)+KdTtôi(e(k)-2e(k-1)+e(k-2))
u ( k - 1 ) = u ( k )
e(k-2)= =e(k-1),e(k-1)= =e(k)
bạn(k-1)= =bạn(k)

hoặc là

u ( k ) = K

tổng= =tổng+e(k)
bạn(k)= =Kpe(k)+KtôiTtôitổng+KdTtôi(e(k)-e(k-1))
e(k-1)= =e(k)

sẽ đánh giá về cơ bản cùng một điều. Một số đề cập đầu tiên có thể được thực hiện trong DSP hoặc FPGA nhanh hơn, nhưng tôi không mua nó. Hoặc là có thể được vector hóa. Cái đầu tiên yêu cầu hai thao tác bài, cái thứ hai yêu cầu một thao tác trước và một bài, vì vậy nó xuất hiện ngay cả. Việc đầu tiên cũng đòi hỏi thêm 1 phép nhân trong tính toán thực tế.


Ý bạn là "Phương trình vi phân"?
Kevin Vermeer

Tôi đã hiểu nhầm ý kiến ​​của bạn, dựa trên phản hồi này tôi đã làm ít nhất. Tôi sẽ xóa bình luận của tôi!
Kortuk

1
Vui lòng di chuyển đến dsp.stackexchange.com
Jason S

Câu trả lời:


7

Bạn đang bị mê hoặc bởi tất cả sự huyền ảo của biến đổi Z. Hai cách tiếp cận về cơ bản là giống nhau - phương pháp PID không có PHD chỉ có ít đăng ký hơn. Chúng thực hiện cùng chức năng cơ bản và sử dụng cùng một phép toán cơ bản.

Sự khác biệt lớn duy nhất giữa hai cái mà tôi có thể thấy là PID không có PHD không tính đến thời gian lấy mẫu. Để làm bất cứ điều gì có thể không ổn định, thời gian lấy mẫu là một xem xét rất quan trọng. Lợi ích của phương pháp biến đổi Z trong trường hợp này là bạn không thể sử dụng nó mà không tính đến thời gian lấy mẫu - nó buộc bạn phải thể hiện công việc của mình và giúp bạn thiết kế một hệ thống ổn định hơn.

Nó cũng giống như trường hợp nghiên cứu mà bạn thấy khi thực hiện phương pháp biến đổi Z được thiết kế có tính quyết định cao. Điều này giải thích việc sử dụng các GPU của họ - các tính toán sẽ luôn mất cùng một lượng thời gian. Việc không có triển khai PHD được quyết định là không xác định. Việc sử dụng nhân đôi như một biến thay vì triển khai điểm cố định chắc chắn sẽ gây ra hành vi không xác định trên bất kỳ vi điều khiển nào mà không có đơn vị dấu phẩy động (và có thể trên uCs với một FPU). Nghiên cứu trường hợp đang làm việc trên một mức độ phức tạp hoàn toàn khác so với phương pháp PHD w / o PHD.

Vì vậy, về cơ bản cách tiếp cận toán học và kiểm soát là như nhau, nhưng phương pháp nghiên cứu trường hợp / biến đổi Z là nghiêm ngặt hơn và dựa trên lý thuyết. Phương pháp PID w / o PHD sẽ chỉ hoạt động đối với hệ thống rất đơn giản, không quan trọng về thời gian, tương đối ổn định.


PID không có bài viết PHD chỉ là một ví dụ về việc triển khai đơn giản hơn, sử dụng tổng chạy cho tích phân và sự khác biệt giữa các mẫu liên tiếp cho đạo hàm. Bài báo nói rằng thời gian mẫu phải nhất quán. Thời gian lấy mẫu có thể dễ dàng được thêm vào các tính toán I và D, nhưng trong hầu hết các trường hợp, nó không được thực hiện trong tính toán thực tế. GUI của bộ điều khiển (hoặc giao diện khác) sẽ trình bày các thuật ngữ I và D cho người dùng theo số giây dựa trên thời gian vòng lặp.
bt2

@ bt2 có vẻ như bạn có một trường hợp rất cụ thể trong đó PID w / oa Tiến sĩ là phương pháp tốt nhất. Hầu hết các hệ thống không hiển thị các thuật ngữ I và D theo bất kỳ cách nào. Đó là kết quả của bộ điều khiển PID có một số thay đổi trên toàn bộ hệ thống sau đó được lặp lại trên chính nó. Nếu bạn chỉ hiển thị cho người dùng thì thực sự không có lý do gì để lo lắng về sự ổn định.
Kellenjb

"Cách tiếp cận PHD w / o PHD sẽ chỉ hoạt động rất đơn giản" - tôi không đồng ý. Bạn chắc chắn có thể tối ưu hóa các hệ thống điều khiển kỹ thuật số bằng cách sử dụng phân tích biến đổi Z, nhưng mặt trái là bạn có thể bắt kịp mô hình hóa hệ thống của mình một cách chính xác đến nỗi bạn bỏ lỡ rừng cho cây.
Jason S

10

Phương pháp biến đổi Z để thiết kế bộ điều khiển PID cuối cùng sẽ mang lại hiệu quả thực hiện cao hơn nhiều. Điều này rất quan trọng nếu bạn đang thiết kế cho ứng dụng Vi điều khiển / DSP / Vi điều khiển nhỏ nhất cho ứng dụng của bạn.

"PID không có PHD" được đề cập có lẽ là cách tiếp cận dễ dàng nhất để thực hiện điều khiển PID trong phần mềm, nhưng nó trở nên cồng kềnh với tốc độ lấy mẫu cao hơn.

Ngoài ra, biến đổi Z cho vay tốt hơn để thiết kế trong một miền riêng biệt (kỹ thuật số). Phương pháp thiết kế truyền thống (biến đổi Laplace) là nhiều hơn cho thời gian liên tục. Có nhiều cách chuyển đổi giữa hai (Giữ không thứ tự, Nội suy tuyến tính, Vị trí cực, Bilinear / Tustin), mỗi cách đều có điểm mạnh và hạn chế về tính ổn định và phản ứng của hệ thống. Nhìn chung, việc thực hiện toàn bộ thiết kế trong miền rời rạc sẽ dễ dàng hơn.

Tóm lại, nếu bạn đang sử dụng một hệ thống tương đối "chậm" (tất cả các hành vi chính xảy ra đáng kể dưới 100kHz hoặc hơn), thì thiết kế đầu tiên có lẽ chỉ là tốt. Bạn có thể thực hiện nó trên một vi điều khiển hoặc PC và được thực hiện với nó. Khi các hệ thống trở nên nhanh hơn, thì bạn có thể phải sử dụng phương pháp biến đổi Z để có được tốc độ mà bạn cần (bài viết đề cập đến 9,5 MHz, giả sử bạn có A / D và DAC có thể theo kịp).


1
Cùng một số phép toán, biểu diễn số khác nhau. Nhân đôi là một cách biểu diễn số phức tạp hơn nhiều so với phương pháp điểm cố định được sử dụng trong nghiên cứu trường hợp. Ít phức tạp hơn có nghĩa là ít hoạt động hơn (trên silicon).
AngryEE

2
@ bt2, tôi sẽ nói hiệu quả hơn theo nghĩa là các chip DSP được thiết lập cho các tập lệnh SIMD (Hướng dẫn đơn, Nhiều dữ liệu). Mặc dù có cùng số lượng các phép toán, biến đổi Z cho phép bạn thực hiện tất cả các phép nhân trong một chu kỳ lệnh, sau đó tổng hợp tất cả các phần tử của vectơ kết quả trong một chu kỳ (phụ thuộc nền tảng). Vì vậy, trong khi toán học là như nhau, độ phức tạp thời gian thấp hơn đáng kể, mang lại tốc độ cao hơn.
mjcarroll

1
@ bt2 dạng z cho vay để thực hiện như một phương trình khác biệt, chỉ phụ thuộc vào các đầu ra trong quá khứ và đầu vào hiện tại, mà không yêu cầu một tổng chạy sẽ ở một số điểm tràn (hoặc tràn). DSP được thiết kế để cho phép thực hiện hiệu quả các bộ lọc kỹ thuật số thông qua phương pháp phương trình khác biệt. Xem en.wikipedia.org/wiki/Digital_filter đặc biệt. các hình thức trực tiếp - đó là những gì DSP được tối ưu hóa.
freespace

1
Tôi nghĩ rằng bạn đang thiếu một cái gì đó. Tổng chạy sẽ không bao giờ tràn trong các trường hợp bình thường. Bộ lọc IIR sẽ không luôn luôn bão hòa và trong trường hợp điều khiển PID, thông thường sẽ không xảy ra. Nói nó sẽ với một thuật toán nhưng không với thuật toán khác là sai. Tổng số chạy tương tự như vậy dựa trên đầu ra trước đó. Nếu một trong những nguyên nhân gây ra tràn, cả hai sẽ. Hãy nghĩ về nó theo cách này, cấy ghép thứ 2 là lần đầu tiên, với một số toán học được đưa ra ... u (k-1) - kp (e (k-1) - kd / Ti (e (k-1) - e ( k-2) == (tổng chạy).
bt2

1
-1: Biến đổi Z không cung cấp cho bạn triển khai hiệu quả hơn. Trên thực tế, nếu bạn so sánh bộ lọc thông thấp 1 cực bằng phương pháp kỹ thuật số "ngây thơ" với bộ lọc thông thấp 1 cực bằng cách sử dụng biến đổi song tuyến, bạn sẽ có cách triển khai kém hiệu quả hơn với phương pháp này. Bất kể dẫn xuất bộ lọc, cùng một # biến trạng thái = về cùng hiệu quả thực hiện. Phần lớn đây là một đại lượng độc lập với cách thiết kế bộ lọc.
Jason S

5

Đây là thỏa thuận, theo kinh nghiệm của tôi:

  • Các phép biến đổi Z giúp cho một số phân tích: lý thuyết về các hệ thống lấy mẫu thời gian rời rạc được mô hình hóa tốt nhất thông qua các phép biến đổi Z.
  • Thiết kế bộ điều khiển PID hoặc bộ lọc thông thấp có thể được thực hiện cả thông qua các phép biến đổi Z cũng như phân tích cổ điển, với một trong một số phép tính gần đúng được sử dụng để chuyển đổi các đạo hàm / tích phân từ thời gian liên tục sang thời gian rời rạc. Nếu cực và số không của bạn ở tần số thấp so với tốc độ mẫu, điều đó không thành vấn đề. Gắn bó với bất kỳ cách tiếp cận nào bạn cảm thấy tự tin nhất.
  • Biến đổi Z của bộ lọc và bộ điều khiển thường che khuất ý nghĩa vật lý của các tham số của các bộ lọc và bộ điều khiển đó. Nếu tôi có một vòng lặp PID với mức tăng tích phân, mức tăng tỷ lệ và mức tăng chênh lệch, tôi biết trực tiếp từng tham số đó làm gì. Nếu tôi sử dụng biến đổi Z, chúng chỉ là những con số mà tôi phải rút ra bằng cách nào đó.
  • Việc thực hiện các bộ lọc và bộ điều khiển có thể hoặc không làm mờ ý nghĩa vật lý của các tham số của các bộ lọc và bộ điều khiển đó. Chất lượng này phần lớn độc lập với điểm trước: Nếu tôi có thiết kế dựa trên biến đổi Z, tôi có thể chuyển đổi nó thành triển khai theo kiểu cổ điển và ngược lại. Ví dụ của bạn trong FINAL EDIT là một ví dụ tốt vì việc triển khai thứ hai giữ cho bộ tích phân (" sum") tách biệt trong biến trạng thái của chính nó. Biến trạng thái đó có ý nghĩa. Việc thực hiện đầu tiên giữ cho biến trạng thái là lịch sử lỗi trong quá khứ; Điều đó có ý nghĩa, nhưng nó cung cấp ít hiểu biết hơn trong quan điểm của tôi.

Cuối cùng, có những vấn đề khác liên quan đến tính phi tuyến tính hoặc phân tích thường khiến bạn chọn một triển khai khác (đối với tôi, đó luôn là cách tiếp cận cổ điển đối với các bộ điều khiển, đối với các bộ lọc FIR, đó là biến đổi Z và cho các bộ lọc IIR 1 hoặc 2 cực thường là phương pháp cổ điển):

  • Đối với bộ điều khiển, tôi luôn giữ một bộ tích hợp dưới dạng biến trạng thái, thay vì các mẫu lỗi trong quá khứ. Lý do là các hệ thống thực thường yêu cầu chống gió, trong đó bạn phải kẹp tích phân khỏi quá tích cực hoặc quá tiêu cực. (Và nếu bạn đang triển khai ở điểm cố định, dù sao bạn cũng phải thực hiện việc này, bởi vì điều kiện quay vòng khi bạn nhấn tràn sẽ làm điều xấu đối với hành vi của vòng điều khiển của bạn)

  • Vì lý do tương tự, tôi cũng luôn tính toán tích phân theo cách được tham chiếu đầu ra: vd sum += Ki*error; out = stuff + sumhơn là sum += error; out = stuff + Ki*sum. Với cách tiếp cận thứ hai, nếu bạn thay đổi mức tăng Ki, sẽ điều chỉnh tỷ lệ ảnh hưởng của bộ tích hợp lên đầu ra lên xuống, đây có thể không phải là điều bạn muốn và giới hạn thay đổi tùy theo mức tăng. Nếu bạn nhân lỗi với Ki trước khi tích hợp, các đơn vị tích hợp của bạn giống như các đơn vị đầu ra của vòng điều khiển và nó có ý nghĩa vật lý rõ ràng hơn.

(cập nhật: Tôi đã viết một mục blog về chủ đề này chi tiết hơn.)


4

Chỉnh sửa :

Sử dụng biến đổi Z giúp kết hợp và đơn giản hóa các hệ thống LTI để phân tích dễ dàng hơn . Ví dụ, một loạt các hệ thống k LTI xếp tầng với các chức năng chuyển đổi H1, H2, ..., Hk sẽ kết hợp như một sản phẩm đơn giản H = H1*H2*...*Hk. Ngoài ra, chức năng chuyển của vòng phản hồi âm là T = G/(1 + G*H), trong đó H nằm trên đường phản hồi. Khi bạn có chức năng chuyển tổng thể, bạn có thể phân tích độ ổn định (vị trí của các cực) và hiệu suất (quá độ, lỗi trạng thái ổn định), thêm các bộ lọc và phản hồi bổ sung để tối ưu hóa thiết kế.

Đối với các hệ thống con có thứ tự cao hơn, bạn có thể phân vùng chức năng hệ thống và triển khai nó dưới dạng một loạt các phép tính xếp tầng (tức là theo các cặp số không và cực, như liên hợp phức hoặc gốc lặp lại), làm giảm sự mất ổn định do lượng tử hóa. Một biquad dạng chính tắc:

phần biquad


Câu trả lời của bạn nghe có vẻ ấn tượng, nhưng tôi gần như không biết bạn nói gì. Sự ổn định lượng tử hóa là gì, ví dụ, và nó vượt trội như thế nào đối với một dạng của phương trình so với dạng khác?
bt2

1
Hàm truyền H (z) là hàm hữu tỉ B (z) / A (z). Mỗi đa thức trong z là một yếu tố của N số không cho một hệ thống bậc N. Các số 0 của A (z), các số trong mẫu số, được gọi là các cực (đây là đường dẫn phản hồi). Đối với một hệ số tỷ lệ không đổi, một hệ thống bất biến thời gian tuyến tính (LTI) được mô tả bởi các số 0 và các cực của nó.
Eryk CN

1
Một hệ thống LTI thời gian rời rạc ổn định nếu tất cả các cực của nó nằm trong vòng tròn đơn vị trên mặt phẳng z. Nhưng lượng tử hóa với độ chính xác kỹ thuật số hữu hạn đưa ra tiếng ồn có thể khiến một hệ thống ổn định biên, không ổn định hoặc trôi vào trạng thái không ổn định theo thời gian. Bằng cách bao gồm H (z) vào một biquadratics sản phẩm (biquads), loại lỗi này được giảm thiểu.
Eryk CN

2
Một biquad là phân vùng tối thiểu ưa thích vì các số không của đa thức có hệ số thực là thực hoặc theo cặp liên hợp phức. Biquad B (z) / A (z) là (b0 + b1z ^ -1 + b2z ^ -2) / (a0 + a1z ^ -1 + a2z ^ -2).
Eryk CN

Tôi đã thêm và sau đó loại bỏ một ví dụ cho nhiễu lượng tử hóa so sánh bậc hai bậc một với poly bậc 4 trực tiếp. Nhưng nó đã quá nhiều. Tôi cần ngủ một chút. Xin lỗi, tyblu.
Eryk CN

3

Phần khó về bộ điều khiển PID không phải là bản thân mã. Các vấn đề thực sự đến khi cố gắng tối ưu hóa bộ điều khiển. Chắc chắn bạn có thể thực hiện thử nghiệm và lỗi và có được một bộ điều khiển khá tốt, nhưng một số hệ thống quá phức tạp đối với một phương pháp thử và lỗi để dễ thực hiện. Những hệ thống tương tự có xu hướng là những hệ thống cần một bộ điều khiển rất tốt thay vì chỉ là một bộ điều khiển tốt. Trong trường hợp này, biến đổi Z dễ phân tích hơn nhiều.

Một điều khác để suy nghĩ là sự ổn định của một hệ thống. Bạn có thể đang phải đối phó với một hệ thống khá khó trở nên không ổn định hoặc ngay cả khi nó không làm hại gì cả. Nhưng có nhiều hệ thống có thể có kết quả thảm khốc nếu bộ điều khiển khiến nó không ổn định. Biến đổi Z là một nơi khác, nơi dễ xác định hơn nếu có bất kỳ vấn đề nào.

Và 1 lưu ý cuối cùng. Khi phân tích toàn bộ một hệ thống, bạn sẽ phải có các phương trình cho tất cả các thành phần trong hệ thống của mình. Chắc chắn bạn có thể lấy nó từ Tiến sĩ PID, nhưng nếu bạn đã làm việc với nó trong phương pháp biến đổi Z thì sẽ có rất ít công việc qua lại mà bạn phải làm.

Bây giờ, như một sở thích cá nhân, tôi luôn sử dụng phương pháp tiến sĩ PID. Điều này chỉ là do tôi chỉ sử dụng bộ điều khiển vi mô với các hệ thống không phụ thuộc quá nhiều vào bộ điều khiển.


2

Có một số điểm tại sao dạng biến đổi Z có tiện ích cao hơn.

Hỏi bất cứ ai thúc đẩy cách tiếp cận dựa trên thời gian / đơn giản / sans-PHD, điều gì đã đặt ra thuật ngữ Kd của họ. Họ có khả năng trả lời 'không' và có khả năng họ nói D không ổn định (không có bộ lọc thông thấp). Trước khi tôi học được cách tất cả những thứ này kết hợp với nhau, tôi sẽ có và đã nói những điều như vậy.

Điều chỉnh Kd là khó khăn trong miền thời gian. Khi bạn có thể thấy chức năng chuyển (biến đổi Z của hệ thống phụ PID), bạn có thể dễ dàng thấy nó ổn định như thế nào. Bạn cũng dễ dàng thấy thuật ngữ D ảnh hưởng đến bộ điều khiển như thế nào so với các tham số khác. Nếu tham số Kd của bạn đóng góp 0,00001 cho các hệ số đa thức z nhưng thuật ngữ Ki của bạn được đặt trong 10,5 thì thuật ngữ D của bạn quá nhỏ để có ảnh hưởng thực sự đến hệ thống. Bạn cũng có thể thấy sự cân bằng giữa các điều khoản Kp & Ki.

DSP được thiết kế để tính toán phương trình sai phân hữu hạn (FDE). Chúng có các mã op sẽ nhân một hệ số, tính tổng cho một bộ tích lũy và dịch chuyển một giá trị trong bộ đệm trong một chu kỳ lệnh. Điều này khai thác bản chất song song của FDE. Nếu máy thiếu mã op này ... thì đó không phải là DSP. Các PowerPC nhúng (MPC) có một thiết bị ngoại vi dành riêng cho việc tính toán FDE (họ gọi nó là đơn vị số thập phân). DSP được thiết kế để tính toán FDE vì việc chuyển đổi hàm truyền thành FDE là chuyện nhỏ. 16-bit không đủ phạm vi động để dễ dàng định lượng hệ số. Nhiều DSP đầu tiên thực sự có các từ 24 bit vì lý do này (tôi tin rằng các từ 32 bit là phổ biến ngày nay.)

IIRC, biến đổi được gọi là biến đổi song tuyến có hàm truyền (biến đổi z của bộ điều khiển miền thời gian) và biến nó thành FDE. Chứng minh nó là "khó", sử dụng nó để thu được kết quả là không đáng kể - bạn chỉ cần dạng mở rộng (nhân mọi thứ ra) và các hệ số đa thức là các hệ số FDE.

Bộ điều khiển PI không phải là một cách tiếp cận tuyệt vời - một cách tiếp cận tốt hơn là xây dựng một mô hình về cách hệ thống của bạn hoạt động và sử dụng PID để sửa lỗi. Mô hình nên đơn giản và dựa trên vật lý cơ bản của những gì bạn đang làm. Đây là nguồn cấp dữ liệu vào khối điều khiển. Sau đó, một khối PID sửa lỗi bằng cách sử dụng phản hồi từ hệ thống được kiểm soát.

Nếu bạn sử dụng các giá trị được chuẩn hóa, [-1 .. 1] hoặc [0 ... 1], cho điểm đặt (tham chiếu), phản hồi và chuyển tiếp nguồn cấp dữ liệu thì bạn có thể thực hiện một thuật toán 2 cực 2 cực trong lắp ráp DSP được tối ưu hóa và bạn có thể sử dụng nó để thực hiện bất kỳ bộ lọc bậc 2 nào bao gồm bộ lọc PID và bộ lọc thông thấp (hoặc thông cao) cơ bản nhất. Đây là lý do tại sao DSP có các mã op giả định các giá trị được chuẩn hóa, ví dụ: một mã sẽ đưa ra ước tính của squareroot nghịch đảo cho phạm vi (0..1] Bạn có thể đặt hai bộ lọc 2p2z nối tiếp và tạo bộ lọc 4p4z, điều này cho phép bạn tận dụng mã DSP 2p2z của mình để thực hiện bộ lọc Butterworth vượt qua 4 chạm.

Hầu hết việc thực hiện miền thời gian nướng thuật ngữ dt vào các tham số PID (Kp / Ki / Kd). Hầu hết các triển khai tên miền z không. dt được đưa vào các phương trình lấy Kp, Ki, & Kd và biến chúng thành các hệ số [] & b [] để hiệu chuẩn (điều chỉnh) của bộ điều khiển PID hiện không phụ thuộc vào tốc độ điều khiển. Bạn có thể làm cho nó chạy nhanh hơn mười lần, tạo ra toán học [] & b [] và bộ điều khiển PID sẽ có hiệu suất ổn định.

Một kết quả tự nhiên của việc sử dụng FDE là thuật toán hoàn toàn "không ổn". Bạn có thể thay đổi mức tăng (Kp / Ki / Kd) khi đang chạy và nó hoạt động tốt - tùy thuộc vào việc triển khai miền thời gian, điều này có thể xấu.

Rất nhiều nỗ lực thường được dành cho các bộ điều khiển PID miền thời gian để ngăn chặn việc tích hợp. Có một mẹo đơn giản với biểu mẫu FDE làm cho PID hoạt động tốt, bạn có thể kẹp giá trị của nó trong bộ đệm lịch sử. Tôi chưa thực hiện phép toán để xem điều này ảnh hưởng đến hoạt động của bộ lọc (liên quan đến các tham số Kp / Ki / Kd), nhưng kết quả theo kinh nghiệm là nó 'trơn tru'. Điều này đang khai thác bản chất 'không ổn định' của biểu mẫu FDE. Một mô hình chuyển tiếp thức ăn góp phần ngăn chặn việc tích hợp và việc sử dụng thuật ngữ D giúp cân bằng thuật ngữ I. PID thực sự không hoạt động như dự định với mức tăng D. (Điểm đặt vòng xoay là một tính năng quan trọng khác để ngăn gió quá mức.)

Cuối cùng, biến đổi Z là một chủ đề chưa được nâng cấp, không phải là "Ph.D." Bạn nên tìm hiểu tất cả về chúng trong Phân tích phức tạp. Đây là nơi bạn học đại học, người hướng dẫn bạn có, và nỗ lực bạn học toán và học cách sử dụng các công cụ có sẵn có thể tạo ra sự khác biệt đáng kể trong khả năng thực hiện trong ngành. (Lớp phân tích phức tạp của tôi thật kinh khủng.)

Công cụ công nghiệp defacto là Simulink (thiếu hệ thống đại số máy tính, CAS, vì vậy bạn cần một công cụ khác để tạo ra các phương trình tổng quát). MathCAD hoặc wxMaxima là những người giải quyết biểu tượng bạn có thể sử dụng trên PC và tôi đã học cách làm điều đó bằng máy tính TI-92. Tôi nghĩ TI-89 cũng có hệ thống CAS.

Bạn có thể tra cứu các phương trình miền z hoặc tên miền laplace trên wikipedia cho các bộ lọc PID & low-pass. Có một bước ở đây mà tôi không mò mẫm, tôi tin rằng bạn cần dạng miền thời gian rời rạc của bộ điều khiển PID sau đó cần thực hiện chuyển đổi z của nó. Biến đổi laplace phải rất giống với biến đổi z và được đưa ra dưới dạng PID {s} = Kp + Ki / s + Kd · s Tôi nghĩ rằng biến đổi z sẽ giải thích tốt hơn cho các Dt trong các phương trình sau. Dt là delta-t [ime], tôi sử dụng Dt để không nhầm lẫn hằng số này với đạo hàm 'dt'.

b[0] = Kp + (Ki*Dt/2) + (Kd/Dt)
b[1] = (Ki*Dt/2) - Kp - (2*Kd/Dt)
b[2] = Kd/Dt

a[1] = -1
a[2] = 0

Và đây là FDE 2p2z:

y[n] = b[0]·x[n] + b[1]·x[n-1] + b[2]·x[n-2] - a[1]·y[n-1] - a[2]·y[n-2]

DSP thường chỉ có bội số & cộng (không phải bội & trừ) để bạn có thể thấy phủ định được đưa vào hệ số []. Thêm nhiều b cho nhiều cực hơn, thêm nhiều hơn cho nhiều số không.


1

Tốt hơn là sử dụng phương thức biến đổi Z nói chung, bởi vì bằng cách này, bạn bảo toàn hành vi chính xác của hệ thống tương tự. Có những phương pháp điều chỉnh nổi tiếng, như Ziegler-Nichols, hoạt động trong miền tương tự như đã xuất bản. Nếu bạn sử dụng phương thức biến đổi Z, bạn có một kỳ vọng nghiêm ngặt về mặt toán học rằng bộ điều khiển kết quả của bạn sẽ làm điều tương tự cho cùng các giá trị của mức tăng P, I và D, nó sẽ làm trong miền tương tự, với các mức tăng đó. Ngoài ra, bạn có thể vẽ một locus gốc riêng biệt cho hệ thống và dự đoán tính ổn định cho một nhóm lợi ích nhất định, điều này không thể thực hiện nếu bạn tạo một bộ điều khiển ad hoc trực tiếp trong mã.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.