當前位置:首頁 » 操作系統 » 工控演算法

工控演算法

發布時間: 2022-08-25 02:30:45

Ⅰ 機器人控制演算法如何編寫

基於DSP運動控制器的5R工業機器人系統設計 摘要:以所設計的開放式5R關節型工業機器人為研究對象,分析了該機器人的結構設計。該機器人采 用基於工控PC及DSP運動控制器的分布式控制結構,具有開放性強、運算速度快等特點,對其工作原理 進行了詳細的說明。機器人的控制軟體採用基於Windows平台下的VC++實現,具有良好的人機交互 功能,對各組成模塊的作用進行了說明。所設計的開放式5R工業機器人系統,具有較好的實用性。 關鍵詞:開放式;關節型;工業機器人;控制軟體 0引言 工業機器人技術在現代工業生產自動化領域得到 了廣泛的應用,也對工程技術人員提出更高的要求,作 為機械工程及自動化專業的技術人才迫切需要掌握這 一 先進技術。為了能更好地加強技術人員對工業機器 人的技能實踐與技術掌握,需要開放性強的設備來滿 足要求。本文闡述了我們所開發設計的一種5R關節 型工業機器人系統,可以作為通用的工業機器人應用 於現場,也可作為教學培訓設備。 1 5R工業機器人操作機結構設計 關節型工業機器人由2個肩關節和1個肘關節進 行定位,由2個或3個腕關節進行定向,其中一個肩關節 繞鉛直軸旋轉,另一個肩關節實現俯仰,這兩個肩關節 軸線正交。肘關節平行於第二個肩關節軸線。這種構 型的機器人動作靈活、工作空間大,在作業空間內手臂 的干涉最小,結構緊湊,佔地面積小,關節上相對運動部 位容易密封防塵,但運動學復雜、運動學反解困難,控制 時計算量大。在工業用應用是一種通用型機器人¨。 1.1 5R工業機器人操作機結構 所設計的5R關節型機器人具有5個自由度,結構 簡圖如圖1所示。5個自由度分別是:肩部旋轉關節 J1、大臂旋轉關節J2、小臂旋轉關節J3、手腕仰俯運動 關節J4和在旋轉運動關節J5。總體設計思想為:選用 伺服電機(帶制動器)驅動,通過同步帶、輪系等機械機 構進行間接傳動。腕關節上設計有裝配手爪用法蘭, 通過不斷地更換手爪來實現不同的作業任務。 1.2 5R工業機器人參數 表1為設計的5R工業機器人參數。 2 5R工業機器人開放式控制系統 機器人控制技術對其性能的優良起著重大的作用。隨著機器人控制技術的發展,針對結構封閉的機 器人控制器的缺陷,開發「具有開發性結構的模塊化、 標准化機器人控制器」是當前機器人控制器發展的趨 勢]。為提高穩定性、可靠性和抗干擾性,採用「工業 PC+DSP運動控制器」的結構來實現機器人的控制:伺 服系統中伺服級計算機採用以信號處理器(DSP)為核 心的多軸運動控制器,藉助DSP高速信號處理能力與 運算能力,可同時控制多軸運動,實現復雜的控制演算法 並獲得優良的伺服性能。 2.1基於DSP的運動控制器MCT8000F8簡介 深圳摩信科技公司MCT8000F8運動控制器是基 於網路技術的開放式結構高性能DSP8軸運動控制器, 包括主控制板、介面板以及控制軟體等,具有開放式、 高速、高精度、網際在線控制、多軸同步控制、可重構 性、高集成度、高可靠性和安全性等特點,是新一代開 放式結構高性能可編程運動控制器。 圖2為DSP多軸運動控制器硬體原理圖。圖中增 量編碼器的A0(/A0)、B0(/B0)、c0(/CO)信號作為 位置反饋,運動控制器通過四倍頻、加減計數器得到實 際的位置,實際位置信息存在位置寄存器中,計算機可 以通過控制寄存器進行讀取。運動控制卡的目標位置 由計算機通過機器人運動軌跡規劃求得,通過內部計 算得到位置誤差值,再經過加減速控制和數字濾波後, 送到D/A轉換(DAC)、運算放大器、脈寬調制器 (PWM)硬體處理電路,轉化後輸出伺服電機的控制信 號或PWM信號。各個關節可以完成獨立伺服控制,能 夠實現線性插補控制、二軸圓弧插補控制。 2.2機器人控制系統結構及工作原理 基於PC的Windows操作系統,因其友好的人機界 面和廣泛的用戶基礎,而成為基於PC控制器的首選。 採用PC作為機器人控制器的主機系統的優點是:①成 本低;②具有開放性;③完備的軟體開發環境和豐富的 軟體資源;④良好的通訊功能。機器人控制結構上采 用了上、下兩級計算機系統完成對機器人的控制:上級 主控計算機負責整個系統管理,下級則實現對各個關 節的插補運算和伺服控制。這里通過採用一台工業 PC+DSP運動控制卡的結構來實現機器人控制。實驗 結果證明了採用Pc+DSP的計算結構可以充分利用 DSP運算的高速性,滿足機器人控制的實時需求,實現 較高的運動控制性能。 機器人伺服系統框圖如圖3所示。伺服系統由基 於DSP的運動控制器、伺服驅動器、伺服電動機及光電 編碼器組成。伺服系統包含三個反饋子系統:位置環、 速度環、電流環,其工作原理如下:執行元件為交流伺 服電動機,伺服驅動器為速度、電流閉環的功率驅動元 件,光電編碼器擔負著檢測伺服電機速度和位置的任 務。伺服級計算機的主要功能是接受控制級發出的各 種運動控制命令,根據位置給定信號及光電編碼器的 位置反饋信號,分時完成各關節的誤差計算、控制演算法 及D/A轉換、將速度給定信號加至伺服組件的控制端 子,完成對各關節的位置伺服控制。管理級計算機採用 586工控機(或便攜筆記本),主要完成離線編程、模擬、 與控制級通訊、作業管理等功能;控制級計算機採用586 工控機,主要完成用戶程序編輯、用戶程序解釋,向下位 機運動控制器發機器人運動指令、實時監控、輸入輸出 控制(如列印)等。示教盒通過控制級計算機可以獲得 機器人伺服系統中的數據(脈沖、轉角),並用於控制級 計算機控制軟體中實現對機器人的示教及控制。 3 5R工業機器人運動控制軟體設計 5R工業機器人控制軟體採用C++Builder編程, 最終軟體運行在Windows環境下。C++Builder對在 Windows平台下開發應用程序時所涉及到的圖形用戶 界面(GUI)編程具有很強的支持能力,提供了可視化 的開發環境,可以方便調用硬體廠商提供的底層函數, 直接對硬體進行操作,而且生成目標代碼效率高。 所設計的控制軟體為分級式模塊化結構。 管理級主模塊具有離線編程、圖形模擬、資料查詢 及故障診斷等功能,其結構如圖4所示。 (1)離線編程模塊利用計算機圖形學的成果,建立 機器人及其工作環境的模型,利用規劃演算法,通過對圖 形和對象的操作,編制各種運動控制,在離線情況下生 成工作程序。 (2)圖形模擬模塊可預先模擬結果,便於檢查及優 化。 (3)資料查詢模塊可以查閱當日工作及近期工作 記錄、相關資料(生產數量、班次等),並可以列印輸出 存檔。 (4)故障診斷模塊可以實時故障診斷,以代碼形式顯 示出故障類型,並為技術人員排除故障提供幫助信息。 控制級主模塊軟體結構如圖5所示。 (1)復位模塊使得機器人停機時或動作異常時,通 過特定的操作或自動的方式,使機器人回到作業原點。 機器人在作業原點,機構的各運動副所受力矩最小,它 確定了機器人待機的安全位姿。 (2)系統提供兩種示教方法。第一種示教方法即 「下位機+示教盒」的示教方法:示教盒和下位機操作 界面上的手動操作開關分別對應著裝配機器人的各種 動作和功能。通過高、中、低速、點動等速度檔次的選 擇,對機器人進行大致的定位和精確的位置微調。並 存儲期望的運動軌跡上機器人的位置、姿態參數。第 二種方法即離線模擬的示教方法。這種示教方法是在 計算機上建立起機器人作業環境的模型,再在這個模 型的基礎上生成示教數據的一種應用人工智慧的示教 方法。進行示教時使用計算機圖示的方法分析機器人與作業模型的位置關系,也可以通過特定指令指定機 器人的運動位置…。 4結束語 所開發的開放式工業機器人系統具有以下特點: (1)採用分布式二級控制結構,運動控制由基於 DSP的運動控制器M'CT8000F8完成,增加了系統的開 放性,以及運行處理的快速性及可靠性。 (2)考慮到具有良好的通用性,可以作為通用機器 人使用,具有較好的產業化、商品化前景。 (3)計算機輔助軟體採用基於Windows平台的 c++編程,通過調用底層函數可以對硬體進行直接操 作,可視化環境可提供良好的人機交互操作界面。 通過本機器人系統的研究開發,可極大地滿足工 業現場對機器人的開放性要求,進一步提高我國工礦 企業自動化水平。同時,也可作為機器人技術訓練平 台,加強工程人員能力鍛煉。 [參考文獻] [1]馬香峰,等.工業機器人的操作機設計[M].北京:冶金工 業出版社,1996. [2]吳振彪.工業機器人[M].武漢:華中理工大學出版社, 2006. [3]蔡自興.機器人學[M].北京:清華大學出版社,2003. [4]王天然,曲道奎.工業機器人控制系統的開放體系結構 [J].機器人,2002,24(3):256—261. [5]深圳摩信科技有限公司.MCT8000系列控制器使用手冊 [z].深圳:深圳摩信科技有限公司,2001. [6]張興國.環保壓縮機裝配機器人的運動學分析[J].南通 工學院學報,2004(1):32—34,38. [7]張興國.計算機輔助環保壓縮機裝配機器人運動學分析 [J].機械設計與製造,2005(3):98—100, [8]本書編寫委員會編著.程序設計VisualC++6[M].北京: 電子工業出版社,2000. [9]吳斌,等.OpenGL編程實例與技巧[M].北京:人民郵電出 版社,1999. [10]江早.OpenGLVC/VB圖形編程[M】.北京:中國科學技 術出版社,2001. [11]韓軍,等.6R機器人運動學控制實驗系統的研製[J].實 驗室研究與探索,2003(5):103—104.

Ⅱ 8位單片機PID控制PWM的演算法如何實現,C語言計算

PID控制在8位單片機中仍然有廣泛的應用,比如溫度控制,利用比例、積分、微分補償來做恆溫補償控制,當然由於有這些數學處理,用C語言相對方便一些,以下是一個具體的實例。

#include<reg51.h>

#include<intrins.h>

#include<math.h>

#include<string.h>

struct PID {

unsigned int SetPoint; // 設定目標 Desired Value

unsigned int Proportion; // 比例常數 Proportional Const

unsigned int Integral; // 積分常數 Integral Const

unsigned int Derivative; // 微分常數 Derivative Const

unsigned int LastError; // Error[-1]

unsigned int PrevError; // Error[-2]

unsigned int SumError; // Sums of Errors

};

struct PID spid; // PID Control Structure

unsigned int rout; // PID Response (Output)

unsigned int rin; // PID Feedback (Input)

sbit data1=P1^0;

sbit clk=P1^1;

sbit plus=P2^0;

sbit subs=P2^1;

sbit stop=P2^2;

sbit output=P3^4;

sbit DQ=P3^3;

unsigned char flag,flag_1=0;

unsigned char high_time,low_time,count=0;//占空比調節參數

unsigned char set_temper=35;

unsigned char temper;

unsigned char i;

unsigned char j=0;

unsigned int s;

/***********************************************************

延時子程序,延時時間以12M晶振為准,延時時間為30us×time

***********************************************************/

void delay(unsigned char time)

{

unsigned char m,n;

for(n=0;n<time;n++)

for(m=0;m<2;m++){}

}

/***********************************************************

寫一位數據子程序

***********************************************************/

void write_bit(unsigned char bitval)

{

EA=0;

DQ=0; /*拉低DQ以開始一個寫時序*/

if(bitval==1)

{

_nop_();

DQ=1; /*如要寫1,則將匯流排置高*/

}

delay(5); /*延時90us供DA18B20采樣*/

DQ=1; /*釋放DQ匯流排*/

_nop_();

_nop_();

EA=1;

}

/***********************************************************

寫一位元組數據子程序

***********************************************************/

void write_byte(unsigned char val)

{

unsigned char i;

unsigned char temp;

EA=0;

TR0=0;

for(i=0;i<8;i++) /*寫一位元組數據,一次寫一位*/

{

temp=val>>i; /*移位操作,將本次要寫的位移到最低位*/

temp=temp&1;

write_bit(temp); /*向匯流排寫該位*/

}

delay(7); /*延時120us後*/

// TR0=1;

EA=1;

}

/***********************************************************

讀一位數據子程序

***********************************************************/

unsigned char read_bit()

{

unsigned char i,value_bit;

EA=0;

DQ=0; /*拉低DQ,開始讀時序*/

_nop_();

_nop_();

DQ=1; /*釋放匯流排*/

for(i=0;i<2;i++){}

value_bit=DQ;

EA=1;

return(value_bit);

}

/***********************************************************

讀一位元組數據子程序

***********************************************************/

unsigned char read_byte()

{

unsigned char i,value=0;

EA=0;

for(i=0;i<8;i++)

{

if(read_bit()) /*讀一位元組數據,一個時序中讀一次,並作移位處理*/

value|=0x01<<i;

delay(4); /*延時80us以完成此次都時序,之後再讀下一數據*/

}

EA=1;

return(value);

}

/***********************************************************

復位子程序

***********************************************************/

unsigned char reset()

{

unsigned char presence;

EA=0;

DQ=0; /*拉低DQ匯流排開始復位*/

delay(30); /*保持低電平480us*/

DQ=1; /*釋放匯流排*/

delay(3);

presence=DQ; /*獲取應答信號*/

delay(28); /*延時以完成整個時序*/

EA=1;

return(presence); /*返回應答信號,有晶元應答返回0,無晶元則返回1*/

}

/***********************************************************

獲取溫度子程序

***********************************************************/

void get_temper()

{

unsigned char i,j;

do

{

i=reset(); /*復位*/

} while(i!=0); /*1為無反饋信號*/

i=0xcc; /*發送設備定位命令*/

write_byte(i);

i=0x44; /*發送開始轉換命令*/

write_byte(i);

delay(180); /*延時*/

do

{

i=reset(); /*復位*/

} while(i!=0);

i=0xcc; /*設備定位*/

write_byte(i);

i=0xbe; /*讀出緩沖區內容*/

write_byte(i);

j=read_byte();

i=read_byte();

i=(i<<4)&0x7f;

s=(unsigned int)(j&0x0f); //得到小數部分

s=(s*100)/16;

j=j>>4;

temper=i|j; /*獲取的溫度放在temper中*/

}

/*====================================================================================================

Initialize PID Structure

=====================================================================================================*/

void PIDInit (struct PID *pp)

{

memset ( pp,0,sizeof(struct PID)); //全部初始化為0

}

/*====================================================================================================

PID計算部分

=====================================================================================================*/

unsigned int PIDCalc( struct PID *pp, unsigned int NextPoint )

{

unsigned int dError,Error;

Error = pp->SetPoint - NextPoint; // 偏差

pp->SumError += Error; // 積分

dError = pp->LastError - pp->PrevError; // 當前微分

pp->PrevError = pp->LastError;

pp->LastError = Error;

return (pp->Proportion * Error // 比例項

+ pp->Integral * pp->SumError // 積分項

+ pp->Derivative * dError); // 微分項

}

/***********************************************************

溫度比較處理子程序

***********************************************************/

void compare_temper()

{

unsigned char i;

if(set_temper>temper) //是否設置的溫度大於實際溫度

{

if(set_temper-temper>1) //設置的溫度比實際的溫度是否是大於1度

{

high_time=100; //如果是,則全速加熱

low_time=0;

}

else //如果是在1度范圍內,則運行PID計算

{

for(i=0;i<10;i++)

{

get_temper(); //獲取溫度

rin = s; // Read Input

rout = PIDCalc ( &spid,rin ); // Perform PID Interation

}

if (high_time<=100)

high_time=(unsigned char)(rout/800);

else

high_time=100;

low_time= (100-high_time);

}

}

else if(set_temper<=temper)

{

if(temper-set_temper>0)

{

high_time=0;

low_time=100;

}

else

{

for(i=0;i<10;i++)

{

get_temper();

rin = s; // Read Input

rout = PIDCalc ( &spid,rin ); // Perform PID Interation

}

if (high_time<100)

high_time=(unsigned char)(rout/10000);

else

high_time=0;

low_time= (100-high_time);

}

}

// else

// {}

}

/*****************************************************

T0中斷服務子程序,用於控制電平的翻轉 ,40us*100=4ms周期

******************************************************/

void serve_T0() interrupt 1 using 1

{

if(++count<=(high_time))

output=1;

else if(count<=100)

{

output=0;

}

else

count=0;

TH0=0x2f;

TL0=0xe0;

}

/*****************************************************

串列口中斷服務程序,用於上位機通訊

******************************************************/

void serve_sio() interrupt 4 using 2

{

/* EA=0;

RI=0;

i=SBUF;

if(i==2)

{

while(RI==0){}

RI=0;

set_temper=SBUF;

SBUF=0x02;

while(TI==0){}

TI=0;

}

else if(i==3)

{

TI=0;

SBUF=temper;

while(TI==0){}

TI=0;

}

EA=1; */

}

void disp_1(unsigned char disp_num1[6])

{

unsigned char n,a,m;

for(n=0;n<6;n++)

{

// k=disp_num1[n];

for(a=0;a<8;a++)

{

clk=0;

m=(disp_num1[n]&1);

disp_num1[n]=disp_num1[n]>>1;

if(m==1)

data1=1;

else

data1=0;

_nop_();

clk=1;

_nop_();

}

}

}

/*****************************************************

顯示子程序

功能:將占空比溫度轉化為單個字元,顯示占空比和測得到的溫度

******************************************************/

void display()

{

unsigned char code number[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6};

unsigned char disp_num[6];

unsigned int k,k1;


k=high_time;

k=k%1000;

k1=k/100;

if(k1==0)

disp_num[0]=0;

else

disp_num[0]=0x60;

k=k%100;

disp_num[1]=number[k/10];

disp_num[2]=number[k%10];

k=temper;

k=k%100;

disp_num[3]=number[k/10];

disp_num[4]=number[k%10]+1;

disp_num[5]=number[s/10];

disp_1(disp_num);

}

/***********************************************************

主程序

***********************************************************/

void main()

{

unsigned char z;

unsigned char a,b,flag_2=1,count1=0;

unsigned char phil[]={2,0xce,0x6e,0x60,0x1c,2};

TMOD=0x21;

TH0=0x2f;

TL0=0x40;

SCON=0x50;

PCON=0x00;

TH1=0xfd;

TL1=0xfd;

PS=1;

EA=1;

EX1=0;

ET0=1;

ES=1;

TR0=1;

TR1=1;

high_time=50;

low_time=50;

PIDInit ( &spid ); // Initialize Structure

spid.Proportion = 10; // Set PID Coefficients 比例常數 Proportional Const

spid.Integral = 8; //積分常數 Integral Const

spid.Derivative =6; //微分常數 Derivative Const

spid.SetPoint = 100; // Set PID Setpoint 設定目標 Desired Value

while(1)

{

if(plus==0)

{

EA=0;

for(a=0;a<5;a++)

for(b=0;b<102;b++){}

if(plus==0)

{

set_temper++;

flag=0;

}

}

else if(subs==0)

{

for(a=0;a<5;a++)

for(b=0;a<102;b++){}

if(subs==0)

{

set_temper--;

flag=0;

}

}

else if(stop==0)

{

for(a=0;a<5;a++)

for(b=0;b<102;b++){}

if(stop==0)

{

flag=0;

break;

}

EA=1;

}

get_temper();

b=temper;

if(flag_2==1)

a=b;

if((abs(a-b))>5)

temper=a;

else

temper=b;

a=temper;

flag_2=0;

if(++count1>30)

{

display();

count1=0;

}

compare_temper();

}

TR0=0;

z=1;

while(1)

{

EA=0;

if(stop==0)

{

for(a=0;a<5;a++)

for(b=0;b<102;b++){}

if(stop==0)

disp_1(phil);

// break;

}

EA=1;

}

}

Ⅲ 控制演算法與電機控制的關系

照你這么說演算法和控制應該是一樣的吧,都是指:運行在計算處理器中的軟體程序。這些程序一般由定時器定時觸發,每跑一次程序就生成一個新的指令,由處理器輸送給電機驅動。比較普遍的處理器周期都是1-10kHz (0.1-1豪秒),並且和電機驅動中的功率電力電子器件的開關頻率吻合。
電機驅動是功率器件,把處理器的控制信號(信號級別,通常是占空比或者PWM信號)輸入到電力電子器件的門極上。電力電子器件在控制信號的作用下,可以對大電流、高電壓的功率級別進行動作。功率電信號用功率電線送到電機里。
演算法模型和所有公式都是在單片機、PLC裡面運行的。時域演算法(PI、PID之類的)可以進行離散化(Z變換)得到離散的控制關系,然後編相應的程序。這個離散化的采樣頻率就是程序的處理周期(0.1-1毫秒)。總之這些軟硬體的東西都是關聯的。
至於時域演算法如何得到,那需要知道電機的模型和你要控制的是什麼。電機驅動一般是電壓型輸出。所以你最終結果是得到一個電機控制電壓。電壓信號輸出到電機驅動,一般需要一個PWM控制,例如正弦調制SPWM,或者矢量控制SVPWM。在電壓基礎上,如果想控制電流,那麼一個PI就可以(電流控制器),輸入是電流反饋,輸出是電壓。如果想控制轉矩,轉矩和電流是對應的。所以另外一個模塊要加在電流控制器之前,這個模塊輸入是轉矩,輸出電流,模塊本身不是反饋控制,是比例放大。如果想控制速度,那需要在轉矩模塊之前再加一個速度模塊,輸入是速度,輸出是轉矩,這個模塊可以是PI。這些具體的東西不是一兩天可以弄懂的,我只是給你大概說一下。
至於硬體電路,一般是我上面說的電機驅動以及它內部的電壓、電流、溫度檢測、電力電子器件、保護措施。
電機上一般也有一個位置感測器,用於反饋控制信號給單片機,這個位置信號在交流電機里是用來做dq變換的,或者叫park變換。這個是交流轉化為直流控制的重要步驟。

Ⅳ 誰做過用工控機控制電機,用VC編程的PID演算法的例子啊,不勝感激

//數據結構
typedef struct PID
{
int SetPoint; //設定目標 Desired Value
long SumError; //誤差累計
double Proportion; //比例常數 Proportional Const
double Integral; //積分常數 Integral Const
double Derivative; //微分常數 Derivative Const
int LastError; //Error[-1]
int PrevError; //Error[-2]
} PID;
static PID sPID;
static PID *sptr = &sPID;
//PID參數初始化
void IncPIDInit(void)
{
sptr->SumError = 0;
sptr->LastError = 0; //Error[-1]
sptr->PrevError = 0; //Error[-2]
sptr->Proportion = 0; //比例常數 Proportional Const
sptr->Integral = 0; //積分常數Integral Const
sptr->Derivative = 0; //微分常數 Derivative Const
sptr->SetPoint = 0;
}
//增量式PID控制設計
int IncPIDCalc(int NextPoint)
{
register int iError, iIncpid;
//當前誤差
iError = sptr->SetPoint - NextPoint;
//增量計算
iIncpid = sptr->Proportion * iError //E[k]項
- sptr->Integral * sptr->LastError //E[k-1]項
+ sptr->Derivative * sptr->PrevError; //E[k-2]項
//存儲誤差,用於下次計算
sptr->PrevError = sptr->LastError;
sptr->LastError = iError;
//返回增量值
return(iIncpid);
}
//位置式PID控制設計
unsigned int LocPIDCalc(int NextPoint)
{
register int iError,dError;
iError = sptr->SetPoint - NextPoint; //偏差
sptr->SumError += iError; //積分
dError = iError - sptr->LastError; //微分
sptr->LastError = iError;
return(sptr->Proportion * iError //比例項
+ sptr->Integral * sptr->SumError //積分項
+ sptr->Derivative * dError); //微分項
}
記得給分哦

Ⅳ 工控機中使用VC編程,採用PID控制演算法求助

你看你要存儲的數據量大不大,很大很多的話可以用sqlserver或oracle,小點的話用access,存一點數據的話可以用XML就可以了

Ⅵ 工控的智能化

眾所周知,從20世紀60年代開始,西方國家就依靠技術進步(即新設備、新工藝以及計算機應用)開始對傳統工業進行改造,使工業得到飛速發展。20世紀末世界上最大的變化就是全球市場的形成。全球市場導致競爭空前激烈,促使企業必須加快新產品投放市場時間(TimetoMarket)、改善質量(Quality)、降低成本(Cost)以及完善服務體系(Service),這就是企業的T.Q.C.S.。
雖然計算機集成製造系統(CIMS)結合信息集成和系統集成,追求更完善的T.Q.C.S.,使企業實現「在正確的時間,將正確的信息以正確的方式傳給正確的人,以便作出正確的決策」,即「五個正確」。然而這種自動化需要投入大量的資金,是一種高投資、高效益同時是高風險的發展模式,很難為大多數中小企業所採用。在我國,中小型企業以及准大型企業走的還是低成本工業控制自動化的道路。 工業控制自動化主要包含三個層次,從下往上依次是基礎自動化、過程自動化和管理自動化,其核心是基礎自動化和過程自動化。
傳統的自動化系統,基礎自動化部分基本被PLC和DCS所壟斷,過程自動化和管理自動化部分主要是由各種進口的過程計算機或小型機組成,其硬體、系統軟體和應用軟體的價格之高令眾多企業望而卻步。
20世紀90年代以來,由於PC-based的工業計算機(簡稱工業PC)的發展,以工業PC、I/O裝置、監控裝置、控制網路組成的PC-based的自動化系統得到了迅速普及,成為實現低成本工業自動化的重要途徑。我國重慶鋼鐵公司這樣的大企業的幾乎全部大型加熱爐,也拆除了原來DCS或單迴路數字式調節器,而改用工業PC來組成控制系統,並採用模糊控制演算法,獲得了良好效果。 由於基於PC的控制器被證明可以像PLC一樣可*,並且被操作和維護人員接受,所以,一個接一個的製造商至少在部分生產中正在採用PC控制方案。基於PC的控制系統易於安裝和使用,有高級的診斷功能,為系統集成商提供了更靈活的選擇,從長遠角度看,PC控制系統維護成本低。
由於可編程式控制制器(PLC)受PC控制的威脅最大,所以PLC供應商對PC的應用感到很不安。事實上,可編程式控制制器(PLC)也加入到了PC控制「浪潮」中。
工業PC在我國得到了異常迅速的發展。從世界范圍來看,工業PC主要包含兩種類型:IPC工控機和CompactPCI工控機以及它們的變形機,如AT96匯流排工控機等。由於基礎自動化和過程自動化對工業PC的運行穩定性、熱插拔和冗餘配置要求很高,現有的IPC已經不能完全滿足要求,將逐漸退出該領域,取而代之的將是CompactPCI-based工控機,而IPC將占據管理自動化層。國家於2001年設立了「以工業控制計算機為基礎的開放式控制系統產業化」工業自動化重大專項,目標就是發展具有自主知識產權的PC-based控制系統,在3(5年內,佔領30%(50%的國內市場,並實現產業化。
幾年前,當「軟PLC」出現時,業界曾認為工業PC將會取代PLC。然而,時至今日工業PC並沒有代替PLC,主要有兩個原因:一個是系統集成原因;另一個是軟體操作系統WindowsNT的原因。一個成功的PC-based控制系統要具備兩點:一是所有工作要由一個平台上的軟體完成;二是向客戶提供所需要的所有東西。可以預見,工業PC與PLC的競爭將主要在高端應用上,其數據復雜且設備集成度高。工業PC不可能與低價的微型PLC競爭,這也是PLC市場增長最快的一部分。從發展趨勢看,控制系統的將來很可能存在於工業PC和PLC之間,這些融合的跡象已經出現。
和PLC一樣,工業PC市場在過去的兩年裡保持平穩。與PLC相比,工業PC軟體很便宜。據Frost&Sullivan公司估計,全世界每年7億美元工業PC市場里,大約8500萬美元為控制軟體,一億美元為操作系統。到2007年會翻一番,工業PC市場變得非常可觀。

Ⅶ cpu利用率怎麼計算

方法1:
使用cpu的處理能力基準計算實時cpu佔用率
具體描述:
(1)
在rtos系統啟動前,
使用tick中斷測試cpu的處理能力基準
cpuperformancebase;
(2)
在系統進入運行後,
使用空閑任務執行與測試cpu處理能力基準完全相同的演算法,
得到rtcpuperformance.
(3)
周期地計算cpu佔用率,
並清除rtcpuperformance的值,
一般每秒鍾計算一次:
realtime
cpu
load
=
1
-
(rtcpuperformance/cpuperformancebase)
*
100%
評價:
這個演算法只適用於工控,
電信等對不需要使cpu進入掉電保護模式的領域.
方法2:
在tick中斷中對rtos中的任務進行采樣
具體描述:
(1)
系統進入運行後,
每次tick中斷發生時,
采樣一下當前正在執行的任務,
如果cpu處於halt態,
累加halttimes
(2)
周期性地計算cpu佔用率,
一般每秒鍾計算一次,
並清除halttimes:(tickintfrequance表示tick中斷的發生頻率)
realtime
cpu
load
=
halttimes
/
tickintfrequance
某個任務對cpu佔用率的貢獻
=
一個周期內該任務被采樣到的次數
/
tickintfrequance
*
100%
評價:
這個演算法適用於對cpu佔用率精度要求不高的消息電子產品.
方法3:
精確計算每個任務對cpu佔用率的貢獻
具體描述:
(1)
除tick中斷外,另開一個比tick中斷頻率快若干倍的周期中斷(就叫auxtimer中斷吧),
這個中斷只對一個計數器執行一次累加.
(2)
在os每次執行任務切換時讀取該計數器的值(auxtimer),
並保存到tcb中,
比如,
從任務task1切換到任務task2,
演算法如下:
task1,
換出動作:
task1的結束運行時間
=
auxtimer的當前值
task1的總運行時間
=
task1的總運行時間
+
task1的結束運行時間
-
task1的開始運行時間
task2,
換入動作:
task2的開始運行時間
=
auxtimer的當前值
(以上演算法中沒有考慮數字回繞,
在工程實現時應當考慮,
發生回繞後任務的結束運行時間小於任務的開始運行時間.
(3)
周期性地計算cpu佔用率,
一般每秒鍾計算一次,
並清除每個任務的總運行時間,
下面的公式中,
一個周期內的總時間等於auxtimer周期除以tick周期得到的倍數:
某個任務對cpu佔用率的貢獻
=
一個周期內該任務的總運行時間
/
一個周期內的總時間
realtime
cpu
load
=
所有任務的cpu佔用率之和

Ⅷ 控制器設計和控制演算法設計有什麼區別

基於DSP運動控制器的5R工業機器人系統設計 摘要:以所設計的開放式5R關節型工業機器人為研究對象,分析了該機器人的結構設計。該機器人采 用基於工控PC及DSP運動控制器的分布式控制結構,具有開放性強、運算速度快等特點,對其工作原理 進行了詳細的說明。機器人的控制軟體採用基於Windows平台下的VC++實現,具有良好的人機交互 功能,對各組成模塊的作用進行了說明。所設計的開放式5R工業機器人系統,具有較好的實用性。 關鍵詞:開放式;關節型;工業機器人;控制軟體 0引言 工業機器人技術在現代工業生產自動化領域得到 了廣泛的應用,也對工程技術人員提出更高的要求,作 為機械工程及自動化專業的技術人才迫切需要掌握這 一 先進技術。為了能更好地加強技術人員對工業機器 人的技能實踐與技術掌握,需要開放性強的設備來滿 足要求。本文闡述了我們所開發設計的一種5R關節 型工業機器人系統,可以作為通用的工業機器人應用 於現場,也可作為教學培訓設備。 1 5R工業機器人操作機結構設計 關節型工業機器人由2個肩關節和1個肘關節進 行定位,由2個或3個腕關節進行定向,其中一個肩關節 繞鉛直軸旋轉,另一個肩關節實現俯仰,這兩個肩關節 軸線正交。肘關節平行於第二個肩關...

Ⅸ PID控制演算法的含義是什麼數字PID演算法和連續PID演算法的區別是什麼(工業控制,製冷系統,計算機技術)

PID 是閉環控制系統的比例-積分-微分控制演算法。
PID 控制器根據設定值(給定)與被控對象的實際值(反饋)的差值,按照 PID 演算法
計算出控制器的輸出量,控制執行機構去影響被控對象的變化。
PID 控制是負反饋閉環控制,能夠抑制系統閉環內的各種因素所引起的擾動,使反饋
跟隨給定變化。
根據具體項目的控制要求,在實際應用中有可能用到其中的一部分,比如常用的是 PI
(比例-積分)控制,這時沒有微分控制部分。

Ⅹ 工業控制技術包括哪些方面的控制

這個問題主要分兩種情況來回答。
1 工業控制技術所應用的領域。
這應該是你最關心的。就是學了這個可以干什麼。實際上工業控制應用非常廣泛。包括電廠鍋爐自動化、汽機自動化、化工廠工藝自動化、鋁廠工藝自動化、許多工廠的生產線如果要達到自動效果、提高效率也都是需要工業控制技術。所以我認為在將來工業控制技術的應用會更加廣泛。
2 工業控制技術的實現方法
目前主要分為兩大類,一類是經典控制技術、 另一類是現代控制技術。
經典控制技術主要指PID控制技術、它的優點是 實現簡單、反應快速。有一定的魯棒性。目前在工業控制應用領域佔有壟斷性地位。
現代控制技術包含很多種類,包括神經網路控制、模糊控制、自適應控制、等控制演算法。但是他們在工業上應用還不夠成熟,還需要更深入的研究才可以達到更優更廣泛的效果。

熱點內容
美嘉演算法口訣 發布:2025-05-16 06:03:15 瀏覽:952
c程序編譯連接 發布:2025-05-16 06:02:36 瀏覽:964
腳本魔獸 發布:2025-05-16 06:01:52 瀏覽:330
文件夾python 發布:2025-05-16 06:01:43 瀏覽:627
電腦我的世界伺服器游戲幣 發布:2025-05-16 05:27:25 瀏覽:488
索尼手機為什麼不能用安卓10 發布:2025-05-16 05:18:46 瀏覽:784
蔚來es6選擇哪些配置實用 發布:2025-05-16 05:18:05 瀏覽:130
小米如何掃碼wifi密碼 發布:2025-05-16 05:13:38 瀏覽:807
樓層密碼是什麼意思 發布:2025-05-16 05:13:37 瀏覽:13
創建文件夾失敗 發布:2025-05-16 05:12:59 瀏覽:397