راه اندازی سرو درایور MHD4830 در مد عملیاتی حلقه باز در نرم افزار متلب
۹ شهریور ۱۳۹۸آموزش GUI متلب: معرفی نوار ابزار ها (قسمت ۱)
۹ شهریور ۱۳۹۸۱- مقدمه
سرو درایور MHD4830 قادر است موقعیت هر موتور DC انکودر داری را به صورت دقیق کنترل نماید که از این ویژگی میتوان در کاربردهایی که نیاز به کنترل موقعیت دارند استفاده کرد. مد کنترل حلقه بسته در سرو درایور مطابق با شکل ۱ شامل سه حلقه کنترل: جریان، سرعت و موقعیت میباشد. به منظور کنترل جریان، سرعت و موقعیت موتور بایستی بهرههای کنترلرها در این حلقهها به درستی تنظیم شوند. در سادهترین شکل چنانچه از سه کنترلر PI در حلقههای کنترلی استفاده کنیم بایستی ۶ بهره را تنظیم نماییم که تنظیم آنها به گونهای که سیستم حلقه بسته رفتار مطلوبی داشته باشد کاری سخت و طاقت فرسا میباشد. یک از ویژگیهای منحصر به فرد سرو درایور MHD4830 خود تنظیم بودن لوپ کنترل جریان در آن میباشد.
سرو درایور MHD4830 قادر است پارامترهای الکتریکی موتور متصل به خود را به صورتی دقیق شناسایی کرده و براساس آن لوپ کنترل جریان رو به صورت خودکار برقرار نماید. با این کار دیگر نیازی به تنظیم لوپ کنترل جریان نیست و کافی است تنها لوپهای کنترل سرعت و موقعیت تنظیم شوند.
۲- ساخت مدل در سیمولینک
برای اینکه بتوانیم فرمان موقعیت را برای سرو درایور ارسال کرده و سپس اطلاعات مربوط به ولتاژ، جریان، سرعت و موقعیت را دریافت کنیم، نیازمند یک مدل در سیمولینک هستیم. مدل ساخته شده در سیمولینک به صورت شکل ۲ میباشد. جهت اطلاع از جزئیات تنظیمات مدل به فیلم آموزشی در آخر این مقاله مراجعه کنید.
در مدل شکل ۲ تابع fcn قبل از بلوک Pack وظیفه تولید مسیر مرجع موقعیت را بر عهده دارد. بلوک TCP/IP Client Send در هر مرحله یک عنصر از مسیر مرجع موقعیت را دریافت کرده و آن را برای سرو درایور ارسال میکند. به صورت همزمان نیز دادههای مربوط به ولتاژ، جریان، سرعت و موقعیت موتور توسط بلوک TCP/IP Client Receive دریافت شده و داخل متغیر FDB قرار میگیرند. مسیر مرجع موقعیت یک پالس مربعی به صورت شکل ۳ میباشد.
برای اجرای مدل و سپس رسم دادههای مربوط به ولتاژ، جریان، سرعت و موقعیت موتور از کد زیر استفاده شده است. برای توضیح جزئیات کد به فیلم آموزشی در آخر این مقاله مراجعه کنید.
clc; clear; close all; warning off; %% L = 2500; x = 0:L-1; yPOCD = 11800*ones(1,L); yPOCD(500:1000) = -11800; yPOCD(1500:2000) = -11800; plot(x,yPOCD,'linewidth',1.5); grid; %% S = zeros(L,4); for i = 1:L H = dec2hex(uint32(yPOCD(i)+ 2147483648)); S(i,:) = hex2dec({H(1,1:2),H(1,3:4),H(1,5:6),H(1,7:8)}); end %% sim('TCPIPCLPOPULSE'); %% VoltagePOCD = zeros(1,L+1); CurrentPOCD = zeros(1,L+1); SpeedCDPOCD = zeros(1,L+1); PositionPOCD = zeros(1,L+1); t = DATA.Time; DATA = DATA.Data; for i = 1:length(t) V = (bitshift(int32(DATA(1,1,i)),24) + bitshift(int32(DATA(2,1,i)),16)+ ... bitshift(int32(DATA(3,1,i)),8)+ bitshift(int32(DATA(4,1,i)),0)); VoltagePOCD(1,i) = V; C = bitshift(int32(DATA(5,1,i)),24) + bitshift(int32(DATA(6,1,i)),16)+ ... bitshift(int32(DATA(7,1,i)),8)+ bitshift(int32(DATA(8,1,i)),0); CurrentPOCD(1,i) = C; S = bitshift(int32(DATA(9,1,i)),24) + bitshift(int32(DATA(10,1,i)),16)+ ... bitshift(int32(DATA(11,1,i)),8)+ bitshift(int32(DATA(12,1,i)),0); SpeedCDPOCD(1,i) = S/1000; P = bitshift(int32(DATA(13,1,i)),24) + bitshift(int32(DATA(14,1,i)),16)+ ... bitshift(int32(DATA(15,1,i)),8)+ bitshift(int32(DATA(16,1,i)),0); PositionPOCD(1,i) = P; end %% Z = zeros(1,length(t)); ymin = min(VoltagePOCD); ymax = max(VoltagePOCD); figure, plot(t,VoltagePOCD,'linewidth',1.5); hold on; plot(t,Z,'--') axis([0 max(t) ymin ymax]) grid on; title('Terminal Voltage(ADC Value)','LineWidth',4); xlabel('Time(sec)','LineWidth',4) ylabel('Voltage(ADC Value)','LineWidth',4) %% ymin = min(CurrentPOCD); ymax = max(CurrentPOCD); figure,plot(t,CurrentPOCD,'linewidth',1.5); hold on; plot(t,Z,'--') axis([0 max(t) ymin ymax]) grid on; title('Current(ADC Value)','LineWidth',4); xlabel('Time(sec)','LineWidth',4) ylabel('Current(ADC Value)','LineWidth',4) %% ymin = min(SpeedCDPOCD); ymax = max(SpeedCDPOCD); figure,plot(t,SpeedCDPOCD,'linewidth',1.5); hold on; plot(t,Z,'--') axis([0 max(t) ymin ymax]) grid on; title('Speed(RPM)','LineWidth',5); xlabel('Time(sec)','LineWidth',5) ylabel('Speed(RPM)','LineWidth',5) %% ymin = min(PositionPOCD); ymax = max(PositionPOCD); figure, plot(t(1:2500,1),yPOCD,'g--','linewidth',1.5); hold on; plot(t,PositionPOCD,'r','linewidth',1.5); legend({'Reference Position','Actual Position(Pulse)'},'FontSize',16); axis([0 max(t) ymin-1000 ymax+1000]) grid on; title('Position(Pulse)','LineWidth',3); xlabel('Time(sec)','LineWidth',3) ylabel('Position(Pulse)','LineWidth',3) %% save('POCLPULSE.mat','t','VoltagePOCD','CurrentPOCD','SpeedCDPOCD','PositionPOCD');
۳- اجرای کد و رسم نمودارها
قبل از اتصال تغذیه ابتدا مد عملیاتی سرو درایور را در حالت حلقه بسته در وضعیت کنترل موقعیت و به صورت فرمان از طریق پورت ایترنت قرار دهید. مثالی از نحوه تنظیم دیپسوئیچها در این مد به صورت شکل ۴ میباشد.
پس از تنظیم دیپ سوئیچها سرو درایور را از طریق کابل شبکه به پورت ایترنت کامپیوتر متصل کنید و سپس تغذیه سرو درایور را وصل نمایید. پس از اتصال تغذیه تنظیمات مربوط به پورت شبکه در کامپیوتر را انجام دهید. جهت اطلاع از نحوه اتصال سرو درایور به کامپیوتر به مقاله آموزشی «نحوه اتصال سرو درایور MHD4830 به کامپیوتر» مراجعه فرمایید. پس از اتصال سرو درایور به کامپیوتر ابتدا بایستی توسط نرمافزار هرکولس با دادن یک فرمان موقعیت دلخواه لوپهای کنترلی را تنظیم کنید. جهت اطلاع از نحوهی تنظیم لوپهای کنترلی به دفترچه راهنمای سرو درایور مراجعه کنید. همچنین در فیلم آموزشی آخر این مقاله نحوهی تنظیم حلقههای کنترلی آموزش داده شده است. پس از تنظیم حلقههای کنترلی در محیط کدنویسی متلب کلید F5 بر روی صفحه کلید کامپیوتر را فشار داده تا کد اجرا شود. پس از اجرای کد نمودارهای مربوط به ولتاژ، جریان، سرعت و موقعیت موتور به صورت شکلهای ۵ تا ۸ میباشند.
مطابق شکل ۵ عدد نمودار شکل موج ولتاژ موتور جهت افزایش رزولوشن بر حسب عدد مربوط به مبدل آنالوگ به دیجیتال رسم شده است که برای تبدیل آن به ولت باید آن را تقسیم بر 517 نمود (مراجعه به دفترچه راهنمای سرو درایور). همچنین طبق شکل ۶ شکل موج جریان موتور نیز بر حسب عدد مربوط به مبدل آنالوگ به دیجیتال رسم شده است که برای تبدیل به آمپر باید آن را تقسیم بر 281.5 نمایید. در شکل ۷ سرعت موتور برحسب دور بر دقیقه رسم شده است و در نهایت در شکل ۸ موقعیت موتور نیز بر حسب تعداد پالس انکودر رسم شده است. طبق شکل ۸ مشاهده میکنیم که سرو درایور به خوبی توانسته است مسیر مرجع موقعیت را دنبال نماید. کدهای متلب و سیمولینک این مقاله را میتوانید از اینجا دریافت کنید.
محصول «سرو درایور موتور دیسی MHD4830» را ببینید. ✕
همه مستندات مربوط به «سرو درایور موتور دیسی MHD4830» را ببینید. ✕
1 Comment
[…] راه اندازی سرو درایور MHD4830 در مد حلقه بسته (پوزیشن کنترل… […]