zhaocongxue
級(jí)別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 390 個(gè)
工控威望: 489 點(diǎn)
下載積分: 1204 分
在線時(shí)間: 177(小時(shí))
注冊(cè)時(shí)間: 2007-10-27
最后登錄: 2024-12-25
查看zhaocongxue的 主題 / 回貼
樓主  發(fā)表于: 2012-08-18 09:43
系統(tǒng)程序:
#include <c8051f000.h>
typedef unsigned char uchar;
typedef unsigned int uint;
typedef unsigned long ulong;
sbit P1_0=P1^0;
sbit P1_2=P1^2;
sbit P0_6=P0^6;
sbit P0_4=P0^4;
sbit P0_7=P0^7;
sbit P1_3=P1^3;
sbit P1_4=P1^4;
#define CON 28585756
uint t[4]={0,0,0,0};
uint i=0,a=0,t1=0,t2=0,e=0,tt=0;
char d=1,n=1,jj=0,j=0,m=0;

union tcfint16{
      uint myword0;
      struct{uchar hi;uchar low;}bytes0;
      }myint16;
union tcfint116{
      uint myword1;
      struct{uchar hi;uchar low;}bytes1;
      }myint116;
void pca1()                            //設(shè)置脈沖捕捉
{    
EIE1=0x00;                          //禁止脈沖捕捉中斷
PCA0MD=0x00;                      //系統(tǒng)時(shí)鐘12分頻,禁止pca中斷
PCA0CN=0x00;                       //CR=0
PCA0CPM0=0x20;
PCA0CPM1=0x20;                      //正沿捕捉
}
void DAC0(uint DAChl)
{
myint16.myword0=DAChl;
DAC0L=myint16.bytes0.low;
DAC0H=myint16.bytes0.hi;
}
void delay()
{
uint xxxx,xxx=999,xx,x;
for(x=0;x<400;x++)
   for(xx=0;xx<x;xx++)
   {
     xxxx=xxx/1000;
    }
}
main()                              //主函數(shù)
{
uint t0;
uint dk1=0,dk2=0;
WDTCN=0xde;
WDTCN=0xad;            //關(guān)看門狗
XBR0=0x12;
XBR2=0x40;               //交叉開關(guān)設(shè)置,外部中斷無(wú)引腳
XBR1=0x00;
OSCICN=0x95;             //內(nèi)部時(shí)鐘4MHz
DAC1CN=0;               //DCA1無(wú)效
PRT0CF=0xc0;
PRT1CF=0x18;
CKCON=0xe7;            //系統(tǒng)時(shí)鐘12分頻
TMOD=0x11;
TCON=0x00;               //外部中斷請(qǐng)求及標(biāo)志位0
TH0=0x00;
TL0=0x00;
TH1=0x00;
TL1=0x00;
pca1();                   //pca初始化  
REF0CN=0x03;
DAC0CN=0x84;             //DCA0使能,左對(duì)齊
  P1_0=0;
  P1_2=1;
  P0_6=0;
  P0_7=0;
  P1_3=0;
  P1_4=0;
   EA=1;                          //中斷設(shè)置
   ET0=1;
   PT0=1;
   ET1=1;
   PT1=1;
   a=0x91A0;
   //a=0xF2A0;
     DAC0(a);
    delay();    
//****************************測(cè)頻*****************************//
  while(1){
   for(i=1;i<4;i++){
    CCF0=0;                         //變頻上升沿標(biāo)志
   while(CCF0==0)
   {}
   TR1=1;
   CCF0=0;                          //變頻上升沿標(biāo)志
   while(CCF0==0)
   {}
   TR1=0;
myint116.bytes1.low=TL1;
myint116.bytes1.hi=TH1;
TH1=0;
TL1=0;
if(myint116.myword1>6000&&myint116.myword1<30000)  //剔除粗大誤差值
{m++;
t[m]=myint116.myword1;
}
else
i--;}
    for(i=1;i<=2;i++)                //中值濾波
     for(jj=1;jj<=3-i;jj++)
       if(t[jj]>t[jj+1])
         {t[0]=t[jj];
         t[jj]=t[jj+1];
         t[jj+1]=t[0];
         }  
    dk1=t[2];                        
    for(i=0;i<4;i++)
    t=0;
    n=1;                           //進(jìn)入鑒頻鑒相
//***************************鑒頻*****************************//
while(d==1){                        //測(cè)量變頻周期
   for(i=1;i<4;i++){
    CCF1=0;                       //變頻上升沿標(biāo)志
   while(CCF1==0)
   {}
   TR1=1;
   CCF1=0;                         //變頻上升沿標(biāo)志
   while(CCF1==0)
   {}
   TR1=0;
myint116.bytes1.low=TL1;
myint116.bytes1.hi=TH1;
TH1=0;
TL1=0;
if(myint116.myword1>6000&&myint116.myword1<30000)
{m++;
t[m]=myint116.myword1;
}
else
i--;                   }
    for(i=1;i<=2;i++)                  //中值濾波
     for(jj=1;jj<=3-i;jj++)
       if(t[jj]>t[jj+1])
         {t[0]=t[jj];
         t[jj]=t[jj+1];
         t[jj+1]=t[0];
         }  
    dk2=t[2];
    for(i=0;i<4;i++)
    t=0;
    if(dk2>dk1+2)                       //鑒頻
     {a=a+192;
      DAC0(a);}
     else
      d=0;
     }
    a=0xF2A0;
    DAC0(a);
//****************************鑒相*****************************//     TR0=1;
    while(n==1)
    {
    CCF1=0;
    while(CCF1==0)
    {}
    TR1=1;
    CCF0=0;
    while(CCF0==0)
    {}
    TR1=0;
    myint116.bytes1.low=TL1;
    myint116.bytes1.hi=TH1;
      TH1=0;
      TL1=0;
      t1=myint116.myword1;//假設(shè)變頻超前測(cè)t1
      if(t1>=(dk1-700))
      t1=t1-(dk1-700);
      else
      t1=700+t1;             //補(bǔ)償
    CCF0=0;
    while(CCF0==0)
    {}
    TR1=1;
    CCF1=0;
    while(CCF1==0)
    {}
    TR1=0;
    myint116.bytes1.low=TL1;
    myint116.bytes1.hi=TH1;
      TH1=0;
      TL1=0;
      t2=myint116.myword1;      //假設(shè)工頻超前測(cè)t2
    f(t2>=700)
    t2=t2-700;
    else
    t2=dk1-(700-t2);           //補(bǔ)償
      if(t1<=t2)               //變頻超前工頻
      {if(t1<250)
       {a=CON/dk1*16-t1;
       DAC0(a);}
       else{
       a=CON/dk1*16-250;
       DAC0(a);}
       n=0;                   //轉(zhuǎn)入測(cè)頻
       }
      else                      //工頻超前變頻
      {if(t2<250)
       {a=CON/dk1*16+t2;
       DAC0(a);}
        else{
       a=CON/dk1*16+250;
       DAC0(a);}
       n=0;                    //轉(zhuǎn)入測(cè)頻
      }
    }
  }
}
void t0_ISR()interrupt 1     //中斷服務(wù)程序
{TH0=0x00;
TL0=0x00;
TF0=0;
j++;
if(j==80)
{j=0;
P0_7=1;}
}
void t1_ISR()interrupt 3   //中斷服務(wù)程序
{TH1=0x00;
TL1=0x00;
TF1=0;
}


附件: 變頻工頻鎖相程序.doc (40 K) 下載次數(shù):19
網(wǎng)站提示: 請(qǐng)不要用迅雷下載附件,容易出錯(cuò)
yamqq
雅馬哈,愛(ài)普生,電裝機(jī)器人。
級(jí)別: 網(wǎng)絡(luò)英雄

精華主題: 0
發(fā)帖數(shù)量: 1717 個(gè)
工控威望: 5539 點(diǎn)
下載積分: 24618 分
在線時(shí)間: 300(小時(shí))
注冊(cè)時(shí)間: 2008-05-05
最后登錄: 2024-12-24
查看yamqq的 主題 / 回貼
1樓  發(fā)表于: 2012-08-18 09:51
請(qǐng)問(wèn),有誰(shuí)能給我一百萬(wàn)塊錢嗎?
這個(gè)人很懶,什么也沒(méi)有留下!
二手工控電器
且行且珍惜
級(jí)別: 工控俠客
精華主題: 0
發(fā)帖數(shù)量: 2829 個(gè)
工控威望: 4457 點(diǎn)
下載積分: 215142 分
在線時(shí)間: 3185(小時(shí))
注冊(cè)時(shí)間: 2008-02-22
最后登錄: 2024-12-25
查看二手工控電器的 主題 / 回貼
2樓  發(fā)表于: 2012-08-18 10:10
這可不是一小時(shí)二小時(shí)一天二天可解決問(wèn)題了。。](méi)酬勞估計(jì)沒(méi)人會(huì)幫忙!
歡迎捧場(chǎng)光臨工控自動(dòng)化小店!供應(yīng)二手拆機(jī)PLC 、伺服、步進(jìn)、變頻器、3相固態(tài)調(diào)壓調(diào)功模塊、接線端子等等
http://shop115113109.taobao.com/?spm=a1z10.5-c.0.0.L6cazp&v=1
twt97
級(jí)別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 182 個(gè)
工控威望: 345 點(diǎn)
下載積分: 906 分
在線時(shí)間: 133(小時(shí))
注冊(cè)時(shí)間: 2009-04-03
最后登錄: 2021-01-21
查看twt97的 主題 / 回貼
3樓  發(fā)表于: 2012-08-18 10:24
這是C程序,要譯成梯形圖光是看程度很難譯,加上工作原理要求和電路原理圖就好點(diǎn)
dptyl
如果愛(ài),請(qǐng)深愛(ài),不愛(ài)請(qǐng)離開!
級(jí)別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 118 個(gè)
工控威望: 229 點(diǎn)
下載積分: 14630 分
在線時(shí)間: 107(小時(shí))
注冊(cè)時(shí)間: 2012-05-19
最后登錄: 2021-01-22
查看dptyl的 主題 / 回貼
4樓  發(fā)表于: 2012-08-18 10:33
哇嘿,難怪我一點(diǎn)都看不明白。
andy_gao
級(jí)別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 283 個(gè)
工控威望: 448 點(diǎn)
下載積分: 2186 分
在線時(shí)間: 226(小時(shí))
注冊(cè)時(shí)間: 2012-08-02
最后登錄: 2024-11-15
查看andy_gao的 主題 / 回貼
5樓  發(fā)表于: 2012-08-18 11:39
把單片機(jī)的C程序轉(zhuǎn)化為PLC程序,還不如按照控制要求,自己從新編寫來(lái)的快
富陽(yáng)工控
燈泡電工
級(jí)別: 家園?
精華主題: 0
發(fā)帖數(shù)量: 337 個(gè)
工控威望: 536 點(diǎn)
下載積分: 23633 分
在線時(shí)間: 157(小時(shí))
注冊(cè)時(shí)間: 2012-07-06
最后登錄: 2024-12-24
查看富陽(yáng)工控的 主題 / 回貼
6樓  發(fā)表于: 2012-08-18 11:55
各位用C語(yǔ)言編程序難嗎?
tkggtdkjpl
工欲善其事,必先利其器!
級(jí)別: 網(wǎng)絡(luò)英雄

精華主題: 1 篇
發(fā)帖數(shù)量: 3443 個(gè)
工控威望: 20982 點(diǎn)
下載積分: 28595 分
在線時(shí)間: 1765(小時(shí))
注冊(cè)時(shí)間: 2010-01-03
最后登錄: 2024-12-24
查看tkggtdkjpl的 主題 / 回貼
7樓  發(fā)表于: 2012-08-18 12:33
見過(guò)把PLC程序轉(zhuǎn)成單片機(jī)程序的,把單片機(jī)程序轉(zhuǎn)成PLC程序還是第一次看到
C語(yǔ)言你能編,PLC你不能編我覺(jué)得很好奇!
自動(dòng)化單機(jī),生產(chǎn)線,項(xiàng)目編程調(diào)試!
songzuolei
中達(dá)電通
級(jí)別: 網(wǎng)絡(luò)英雄
精華主題: 0
發(fā)帖數(shù)量: 381 個(gè)
工控威望: 6656 點(diǎn)
下載積分: 4198 分
在線時(shí)間: 363(小時(shí))
注冊(cè)時(shí)間: 2010-05-03
最后登錄: 2024-10-05
查看songzuolei的 主題 / 回貼
8樓  發(fā)表于: 2012-08-18 15:29
樓主在做夢(mèng)沒(méi)有啊
代理臺(tái)達(dá)變頻器,PLC,觸摸屏,設(shè)備維修,控制柜制作      QQ;171986645  手機(jī)13921226012
陳大圍
工控新人,還請(qǐng)多多指教
級(jí)別: 論壇先鋒

精華主題: 0
發(fā)帖數(shù)量: 878 個(gè)
工控威望: 1161 點(diǎn)
下載積分: 8915 分
在線時(shí)間: 1830(小時(shí))
注冊(cè)時(shí)間: 2011-04-17
最后登錄: 2024-12-24
查看陳大圍的 主題 / 回貼
9樓  發(fā)表于: 2012-08-19 10:13
看懂c的控制要求,在依要求編PLC程序
專心學(xué)工控技術(shù),請(qǐng)各位幫忙指教
langman
級(jí)別: 家園?
精華主題: 0
發(fā)帖數(shù)量: 576 個(gè)
工控威望: 606 點(diǎn)
下載積分: 1500 分
在線時(shí)間: 227(小時(shí))
注冊(cè)時(shí)間: 2008-06-23
最后登錄: 2021-04-09
查看langman的 主題 / 回貼
10樓  發(fā)表于: 2012-08-19 14:05
不能在百度或者狗狗上在線翻譯么?
朗工自動(dòng)化,承接自動(dòng)化改造工程:PLC控制系統(tǒng)、伺服系統(tǒng)、氣動(dòng)、步進(jìn)、節(jié)能燈設(shè)備、機(jī)械手、集成電路測(cè)試設(shè)備、變頻器、人機(jī)界面,歡迎洽談,