搜索
bottom↓
回复: 12

pic30做的plc,定位指令源码

[复制链接]

出0入0汤圆

发表于 2009-10-10 14:11:19 | 显示全部楼层 |阅读模式
void PWMX()
{
if(STLbiao==0)
{  asm("DISI #2000");
   if(ma1[k]==0x84)   //PWM
    {if(mp1.b.a0==1)
       {np=k+3;
        pf_r();
        np=k+7;
        pf1_r();
      

    if(ma1[k+10]==0x00)
    {
    if(OC2CON!=0X2006)  OC2CON=0X2006;
    if(T2CON!=0XA010)   T2CON=0XA010;
    PR2=*pf;
    if(PR2<0XEFF0)
    asm("nop");  
    OC2RS=*pf1;
    if(OC2RS>101)
    asm("nop");
    }

   else if(ma1[k+10]==0x01)
    {
    if(OC3CON!=0X200E) OC3CON=0X200E;
     if(T3CON!=0XA010) T3CON=0XA010;
     PR3=*pf;
     OC3RS=*pf1;
    }

       }

  else if(mp1.b.a0==0)
     {if(ma1[k+10]==0x00)
          {OC2CON=0X0;
           T2CON=0X0;
          }
      if(ma1[k+10]==0x01)
          {OC3CON=0X0;
           T3CON=0X0;
          }

     }
     mpn=0;
    k=k+12;
    }
asm("DISI #0");
}

}

void PLSY()
{
if(STLbiao==0)
{  
   maicong();       //脉冲数传递
      if(ma1[k]==0x83)   //DPLSY
       {
        np=k+3;
        pf2_r();
        np=k+11;
        pf3_r();
       d32a=*pf2;
       d32b=*pf3;
       x=18;
       }
      if(ma1[k]==0x82)  //PLSY
      {
        np=k+3;
        pf_r();
        np=k+7;
        pf1_r();
       d32a=*pf;
       d32b=*pf1;
       x=10;
      }
if(mp1.b.a0==1)
    {

    if(ma1[k+x]==0x00)
    {
   if(d8[288]==0x0)
   {
    if(OC2CON!=0X2006)  OC2CON=0X2006;
    if(T2CON!=0Xe010)   T2CON=0Xe010;
    if(T1CON!=0Xe002)   T1CON=0Xe002;

     pf2=&d8[208];     //执行时的最高速度2低位
    *pf2=d32a;         //写频率到执行时的最高速度2低位
     pf2=&d8[200];    //Y0总脉冲   d8[200]
    *pf2=d32b;        //写脉冲数到 Y0总脉冲   d8[200]
    /////运算参数
      pf3=&d8[208];     //执行时的最高速度2低位
       d32c=*pf3;
    dingwei2();  //传递速度y0
     pf2=&d8[200];    //Y0总脉冲   d8[200]
     if(*pf2>0xffff)
        {
              PR1=0xfffc;
              TMR1_D=0xffff;
              *pf2=*pf2-0xffff;
             }
          else
          {
      PR1=*pf2-3;
      TMR1_D=*pf2;
      *pf2=0;
      }  
     _T1IF=0;
     _T1IE=1;
     _T1IP=3;
   
    d8[288]=0x55;
    b[483]=b[483]&0xdf;   //M8029 =0;
    b[498]=b[498]|0x8;   //M8147   Y00脉冲输出中1
   }
  else
   asm("nop");

    }

   else if(ma1[k+x]==0x01)
    {
      if(d8[289]==0x0)
   {
     if(OC3CON!=0X200E) OC3CON=0X200E;
     if(T3CON!=0Xe010) T3CON=0Xe010;
     if(T4CON!=0XE002)   T4CON=0XE002;
     pf2=&d8[196];     //Y1执行时的最高速度2低位
    *pf2=d32a;         //写频率到Y1执行时的最高速度2低位
     pf2=&d8[204];    //Y1总脉冲   d8[204]
     *pf2=d32b;        //写脉冲数到 Y0总脉冲   d8[200]
     /////运算参数

     pf3=&d8[196];     //Y1执行时的最高速度2低位
     d32c=*pf3;
     dingwei3();  //传递速度y1
   
     pf2=&d8[204];    //Y1总脉冲   d8[200]
      if(*pf2>0xffff)
        {
              PR4=0xfffd;
              TMR4_D=0xffff;
              *pf2=*pf2-0xffff;
             }
          else
          {
      PR4=*pf2-2;
      TMR4_D=*pf2;
      *pf2=0;
      }  
     _T4IF=0;
     _T4IE=1;
     _T4IP=3;
   
    d8[289]=0x55;
    b[483]=b[483]&0xdf;   //M8029 =0;
    b[498]=b[498]|0x10;   //M8147   Y01脉冲输出中1
  
   }
  else
   asm("nop");
    }
     }
   else   if(mp1.b.a0==0)
     {
             if(ma1[k+x]==0x00)
          {
               pf2=&d8[176];     //Y0脉冲数低位
          *pf2=*pf2+TMR1;
           TMR1_D=0;                                  
           T1CON=0;
          _T1IE=0;       
          _T2IE=0;                             
               OC2CON=0X0;
           T2CON=0X0;
           T1CON=0;
           TMR1=0;
          d8[288]=0X0;
          }
      if(ma1[k+x]==0x01)
          {
               pf2=&d8[180];     //Y1脉冲数低位
         *pf2=*pf2+TMR4;
          TMR4_D=0;
   
              TMR4=0;
         OC3CON=0X0;
          T3CON=0X0;
         T4CON=0;
          _T4IE=0;
          _T3IE=0;         
           d8[289]=0X0;
          }
     }

     mpn=0;
}
tingji();
  
if(ma1[k]==0x83)   //DPLSY
    k=k+24;
    else
    k=k+12;
}
void PLSR()
{
if(STLbiao==0)
{   

maicong();       //脉冲数传递
   
      if(ma1[k]==0x87)   //DPLSR
       {
        np=k+3;
        pf2_r();
        np=k+11;
        pf3_r();
       d32a=*pf2;
       d32b=*pf3;
       np=k+19;
       pf3_r();
      d32c=*pf3;
       x=26;
       }
      if(ma1[k]==0x86)  //PLSR
      {
        np=k+3;
        pf_r();
        np=k+7;
        pf1_r();
       d32a=*pf;
       d32b=*pf1;
       np=k+11;
       pf1_r();
      d32c=*pf1;
       x=14;
      }
if(mp1.b.a0==1)
    {

    if(ma1[k+x]==0x00)
    {
   if(d8[288]==0x0)   //D8[288]=Y0RUN标志D8[289]=Y1RUN标志
   {
    if(OC2CON!=0X6006)  OC2CON=0X6006;      //PLSR
    if(T2CON!=0Xe010)   T2CON=0Xe010;
    if(T1CON!=0Xe002)   T1CON=0Xe002;

     pf2=&d8[208];     //执行时的最高速度2低位
    *pf2=d32a;         //写频率到执行时的最高速度2低位
     pf2=&d8[200];    //Y0总脉冲   d8[200]
    *pf2=d32b;        //写脉冲数到 Y0总脉冲   d8[200]
     pf1=&d8[236];     //执行时的加减速时间  
    *pf1=d32c;
    /////运算参数
   
      pf2=&d8[200];    //Y0总脉冲   d8[200]
      pf3=&d8[228];
     *pf3=*pf2;
     
  pf2=&d8[228];  // y0 脉冲总数
  s=*pf2;
  pf=&d8[236];   
  t1=*pf;
  pf=&d8[290];
  vl=*pf;
  pf2=&d8[208];
  vh=*pf2;

  if(s<vh*t1/1000)
    {pf2=&d8[200];    //Y0总脉冲   d8[200]         
      PR1=*pf2>>1;
       TMR1_D=PR1;
      PR1=PR1-2;
      sy0=*pf2-(*pf2>>1);
     *pf2=0;
     }
     else
     {
     pf2=&d8[200];    //Y0总脉冲   d8[200]
     sy0=vh+vl;
     sy0=sy0*t1/2000;
     *pf2=*pf2-sy0;
     if(*pf2>0xffff)
        {
              PR1=0xfffd;
              TMR1_D=0xffff;
              *pf2=*pf2-0xffff;
             }
          else
          {
      PR1=*pf2-2;
      TMR1_D=*pf2;
      *pf2=0;
      }  
      }
      
    pf1=&d8[290];     //执行时的偏执速度
    d32c=*pf1;
    dingwei2();  //传递速度y0
     
     
     _T1IF=0;
     _T1IE=1;
     _T1IP=3;
      d8[192]=0; //Y0减速标志
      d8[226]=0xa5;//y0加减速标志
    d8[224]=0;   //减速定时器10MS
    pf2=&d8[260];  //y0脉冲运行时间
    *pf2=0;
    d8[288]=0x55;
    b[483]=b[483]&0xdf;   //M8029 =0;
    b[498]=b[498]|0x8;   //M8147   Y00脉冲输出中1
              d8[186]=0;      //Y0脉冲结束标志
   }
  else
   asm("nop");

    }

   else if(ma1[k+x]==0x01)
    {
      if(d8[289]==0x0)    //D8[288]=Y0RUN标志D8[289]=Y1RUN标志
   {
     if(OC3CON!=0X600E) OC3CON=0X600E;     //PLSR
     if(T3CON!=0Xe010) T3CON=0Xe010;
     if(T4CON!=0Xe006)   T4CON=0Xe006;
     pf2=&d8[196];     //Y1执行时的最高速度2低位
    *pf2=d32a;         //写频率到Y1执行时的最高速度2低位
     pf2=&d8[204];    //Y1总脉冲   d8[204]
     *pf2=d32b;        //写脉冲数到 Y0总脉冲   d8[200]
     pf1=&d8[238];      //执行时的加减速时间
    *pf1=d32c;
     /////运算参数  
   pf2=&d8[204];    //Y1总脉冲   d8[204]
   pf3=&d8[232];
   *pf3=*pf2;
  pf2=&d8[232];
  s=*pf2;
  pf=&d8[238];
  t1=*pf;
  pf=&d8[290];
  vl=*pf;
  pf2=&d8[196];
  vh=*pf2;
  
if(s<vh*t1/1000)
    {pf2=&d8[204];    //Y1总脉冲   d8[204]         
      PR4=*pf2>>1;
      TMR4_D=PR4;
      PR4=PR4-1;
      sy1=*pf2-(*pf2>>1);
     *pf2=0;
     }
     else
     {
     pf2=&d8[204];    //Y1总脉冲   d8[204]
     sy1=vh+vl;
     sy1=sy1*t1/2000;
     *pf2=*pf2-sy1;
     if(*pf2>0xffff)
        {
              PR4=0xfffE;
              TMR4_D=0xffff;
              *pf2=*pf2-0xffff;
             }
          else
          {
      PR4=*pf2-1;
      TMR4_D=*pf2;
      *pf2=0;
      }  
      }      
     pf1=&d8[290];     //执行时的偏执速度
     d32c=*pf1;
     dingwei3();  //传递速度y1
     
     _T4IF=0;
     _T4IE=1;
     _T4IP=3;
      d8[193]=0; //Y1减速标志
    d8[227]=0xa5;//y1加减速标志
    d8[225]=0;   //y1减速定时器10MS
    pf2=&d8[188];  //y1脉冲运行时间
    *pf2=0;
    d8[289]=0x55;
    b[483]=b[483]&0xdf;   //M8029 =0;
    b[498]=b[498]|0x10;   //M8147   Y01脉冲输出中1
    d8[187]=0;      //Y1脉冲结束标志
  
   }
    else
   asm("nop");
    }
     }

   else   if(mp1.b.a0==0)
     {if(ma1[k+x]==0x00)
           {
             if(T1CON<0X8000)                 
              {  sy0=0;
                   OC2CON=0X0;
           T2CON=0X0;
           T1CON=0;
           TMR1=0;
          d8[288]=0x0;  
          d8[226]=0;
          d8[194]=0;
          }
          else if(d8[186]==0)      //Y0脉冲结束标志
          {  d8[186]=0X55;
                pf2=&d8[200];    //Y0总脉冲   d8[200]
                *pf2=0;
                      d8[192]=0x57;   //减速开始
                 pf=&d8[236];   
            pf2=&d8[260];  //y0脉冲运行时间
             asm("DISI #300");
           if(*pf2>*pf)
             {
             *pf2=*pf;
               ka=sy0;   
                                   
              }
           else
           {
                 ka=TMR1;         
                }
                 T1CON=0;
                 TMR1=0;
                 sy0=0;
                 T1CON=0xe006;
                 PR1=ka;
                 TMR1_D=ka;   
                 _T1IF=0;
                
                asm("DISI #0");                         
              }  
          }
      if(ma1[k+x]==0x01)
          {
            if(T4CON<0X8000)                         
              {  sy1=0;
               OC3CON=0X0;
           T3CON=0X0;
           T4CON=0;
           TMR4=0;
           d8[289]=0x0;  
           d8[227]=0;
           d8[195]=0;
           }
           
          else  if(d8[187]==0)      //Y1脉冲结束标志
          {  d8[187]=0X55;
                pf2=&d8[204];    //Y1总脉冲   d8[204]
                *pf2=0;
                      d8[193]=0x57;   //Y1减速开始
                 pf=&d8[238];   
            pf2=&d8[188];  //y0脉冲运行时间
             asm("DISI #300");
           if(*pf2>*pf)
             {
             *pf2=*pf;
              ka=sy1;
                              
              }
           else
            {
                 ka=TMR4;
                
                }
                
                  PR4=ka;
                 TMR4_D=ka;
                  TMR4=0;
                 _T4IF=0;
                  sy1=0;
                asm("DISI #0");                         
              }   

          }

     }

     mpn=0;
}
  
tingji();


if(ma1[k]==0x87)   //DPLSR
    k=k+32;
    else
    k=k+16;
   
}
void dingweiy0()
{if(d8[226]==0xa5)//y0减速标志
{ d8[224]=d8[224]++;   //减速定时器10MS
  pf2=&d8[260];  //y0脉冲运行时间
  if(d8[192]==0)
  *pf2=*pf2+1;
  else
  *pf2=*pf2-1;
if(d8[224]==10)
{ d8[224]=0;
  pf2=&d8[260];  //y0脉冲运行时间
  t4=*pf2;
  pf2=&d8[228];  // y0 脉冲总数
  s=*pf2;
  pf=&d8[236];   
  t1=*pf;
  t3=*pf;
  pf=&d8[290];
  vl=*pf;
  pf2=&d8[208];
  vh=*pf2;
  d32a=vh+vl;
  d32a=d32a*t1/1000;
  d32a=s-d32a;
  if(d32a<=0)
  t2=0;
  else
  t2=d32a*1000/vh;
  dwyunsan();
  pf2=&d8[196];
  *pf2=vh;
  dingwei2();  //传递速度y0
  }
}
}
void dingweiy1()
{if(d8[227]==0xa5)//y1减速标志
{
  d8[225]=d8[225]++;   //减速定时器10MS
  pf2=&d8[188];  //y1脉冲运行时间
if(d8[193]==0)
  *pf2=*pf2+1;
  else
  *pf2=*pf2-1;
if(d8[225]==10)
{d8[225]=0;
  pf2=&d8[188];  //y1脉冲运行时间
  t4=*pf2;
  pf2=&d8[232];
  s=*pf2;
  pf=&d8[238];
  t1=*pf;
  t3=*pf;
  pf=&d8[290];
  vl=*pf;
  pf2=&d8[196];
  vh=*pf2;
  d32a=vh+vl;
  d32a=d32a*t1/1000;
  d32a=s-d32a;
  if(d32a<=0)
  t2=0;
  else
  t2=d32a*1000/vh;
  dwyunsan();
  pf2=&d8[208];
  *pf2=vh;
  dingwei3();  //传递速度y1
  }
}
}

void dingwei2()  //传递速度y0
{
     pf2=&d8[264];     ///y0 要发的脉冲周期
     d32b=2500000;
     *pf2=d32b/d32c;  //写脉冲周期到 y0 要发的脉冲周期
      pf2=&d8[272];      //y0要发的脉冲宽度
      d32b=1000000;
     *pf2=d32b/d32c;   //写脉冲宽度到 y0 要发的脉冲宽度
     *pf2=*pf2-1;
      pf2=&d8[264];     ///y0 要发的脉冲周期
     
     if(*pf2<=65535)
     {
         if((d8[194]==0x0)||(PR2==0)||(PR2==0xffff))   //      T2中断执行标志
         PR2=*pf2;
         d8[194]=0xa5;
     PR2_D=*pf2;         //写脉冲周期到PWM 周期
     pf3=&d8[272];
     OC2RS=*pf3;
     }
     else
     { if((d8[194]==0x0)||(PR2==0)||(PR2==0xffff))    //      T2中断执行标志
          PR2=0xfffe;
          d8[194]=0xa5;
      PR2_D=0xfffe;   
      OC2RS=0x8000;
     }
     _T2IP=4;
     _T2IF=0;
     _T2IE=1;

}
void dingwei3()  //传递速度y1
{
     pf2=&d8[268];     ///y1 要发的脉冲周期
     d32b=2500000;
     *pf2=d32b/d32c;  //写脉冲周期到 y0 要发的脉冲周期
     pf2=&d8[276];      //y1要发的脉冲宽度
     d32b=1000000;
     *pf2=d32b/d32c;   //写脉冲宽度到 y0 要发的脉冲宽度
      *pf2=*pf2-1;   //写脉冲宽度到 y0 要发的脉冲宽度
      pf2=&d8[268];     ///y1 要发的脉冲周期
     if(*pf2<=65535)
     {
         if((d8[195]==0x0)||(PR2==0)||(PR3==0xffff))   //      T3中断执行标志
         PR3=*pf2;
          d8[195]=0xa5;
     PR3_D=*pf2;         //写脉冲周期到PWM 周期
     pf3=&d8[276];
     OC3RS=*pf3;
   
     }
     else
     { if((d8[195]==0x0)||(PR2==0)||(PR3==0xffff))    //      T3中断执行标志
           PR3=0xfffe;
           d8[195]=0xa5;   
      PR3_D=0xfffe;   
      OC3RS=0x8000;
     }
     _T3IP=4;
     _T3IF=0;
     _T3IE=1;
}
//t1=加速时间,t2=第2段运行时间,t3=减加速时间,s=总脉冲数,s1=第一段脉冲,S2=第2段脉冲,S3=第3段脉冲,vl=基底速度,vh=最高速度,t4=运行时间,d32=当前速度
void dwyunsan()
{
  

          if(t4<t1)
   {
   d32a=vh-vl;
   d32b=t4*(d32a);
   d32b=d32b/t1;
   d32c=d32b+vl;
   }
  else if(t4>=t1)
   {d32c=vh;}
  
if(d32c<vl)
  d32c=vl;

}

void tingji()
{
x=b[498]&0x02;
y=b[498]&0x04;
if(x==2)
  {pf2=&d8[176];     //Y0脉冲数低位
         if(d8[184]==0x55)      //Y0方向标志
     *pf2=*pf2-TMR1;
     else  
   *pf2=*pf2+TMR1;
   TMR1_D=0;                       
   TMR1=0;
   sy0=0;          
   OC2CON=0X0;
   T2CON=0X0;
   T1CON=0;
   _T1IE=0;       
   _T2IE=0;       
     
  }
  
  if(y==4)
  {pf2=&d8[180];     //Y1脉冲数低位
    if(d8[185]==0x55)      //Y1方向标志
    *pf2=*pf2-TMR4;
     else   
   *pf2=*pf2+TMR4;
   TMR4_D=0;
   sy1=0;
        TMR4=0;
   OC3CON=0X0;
   T3CON=0X0;
   T4CON=0;
   _T4IE=0;
   _T3IE=0;       
             
  }
  }
  
void maicong()       //脉冲数传递
{
  pf2=&d8[176];      //Y0脉冲数低位缓冲
           pf3=&d8[280];      //Y0脉冲数低位
           if(*pf3==0)
           {
           *pf2=0;
        }
        if(d8[184]==0x55)      //Y0方向标志
    *pf3=*pf2-TMR1;
           else
        *pf3=*pf2+TMR1;
       
        pf2=&d8[180];      //Y1脉冲数低位缓冲
        pf3=&d8[284];      //Y1脉冲数低位
        if(*pf3==0)
           *pf2=0;
           if(d8[185]==0x55)      //Y1方向标志
    *pf3=*pf2-TMR4;
      else
        *pf3=*pf2+TMR4;        
        }

void fangxian()
{
       if(ma1[k+x]==0x00)
      {
        if(d32a<d32b)
        {d8[184]=0x55;      //Y0方向标志
                ka1=0;
             }
            else
            {
        d8[184]=0x0;      //Y0方向标志
           ka1=1;
        }
       }
        else  if(ma1[k+x]==0x01)
         {
        if(d32a<d32b)
        {
        d8[185]=0x55;      //Y1方向标志
         ka1=0;
         }
        else
        {
        d8[185]=0x0;      //Y1方向标志
         ka1=1;
        }
        }
        
        

           pf=&b[0];
         kd.b.h=ma1[k+ka+2];
         kd.b.l=ma1[k+ka];
         kd.f=(kd.f&0xff0)>>4;
         pf=pf+kd.f;

         w1=*pf;
        w2=ma1[k+ka]&0Xf;
        asm("mov.w _w1,w7");   
        asm("mov.w w7,w4");
        asm("mov.w _w2,w7");   
        asm("mov.w w7,w3");
        _C=ka1;
        asm("bsw.c w4,w3");   
        asm("mov.w w4,_w4");
        *pf=w4;
        
        
     
}

void PLSV()
{
if(STLbiao==0)
{  
   maicong();       //脉冲数传递
      if(ma1[k]==0x4b)   //DPLSv
       {
        np=k+3;
        pf2_r();
        d32a=*pf2;
        x=10;
        ka=18;
        d32b=0;
        fangxian();
       }
      if(ma1[k]==0x4a)  //PLSv
      {
        np=k+3;
        pf_r();
       d32a=*pf;
        d32b=0;
       x=6;
       ka=10;
       fangxian();
      }
if(mp1.b.a0==1)
    {

    if(ma1[k+x]==0x00)
    {

     pf2=&d8[208];     //执行时的最高速度2低位
     *pf2=d32a;         //写频率到执行时的最高速度2低位
     if(*pf2<0)
     *pf2=~*pf2;
    /////运算参数
      pf3=&d8[208];     //执行时的最高速度2低位
     d32c=*pf3;
     dingwei2();  //传递速度y0
     pf2=&d8[200];    //Y0总脉冲   d8[200]
     *pf2=0x0fffffff;
    if(d8[288]==0x0)
   { if(OC2CON!=0X2006)  OC2CON=0X2006;
    if(T2CON!=0Xe010)   T2CON=0Xe010;
    if(T1CON!=0Xe002)   T1CON=0Xe002;

         PR1=0xfffc;
         TMR1_D=0xffff;
          TMR1=0;
     _T1IF=0;
     _T1IE=1;
     _T1IP=3;
   
    d8[288]=0x55;
    b[483]=b[483]&0xdf;   //M8029 =0;
    b[498]=b[498]|0x8;   //M8147   Y00脉冲输出中1
   }
  else
   asm("nop");
    }

   else if(ma1[k+x]==0x01)
    {
            
          
     
     
     
     pf2=&d8[196];     //Y1执行时的最高速度2低位
    *pf2=d32a;         //写频率到Y1执行时的最高速度2低位
     if(*pf2<0)
     *pf2=~*pf2;
     /////运算参数
     pf3=&d8[196];     //Y1执行时的最高速度2低位
     d32c=*pf3;
     dingwei3();  //传递速度y1
      pf2=&d8[204];    //Y1总脉冲   d8[200]
      *pf2=0x0fffffff;
    if(d8[289]==0x0)
         {                 
          if(OC3CON!=0X200E) OC3CON=0X200E;
     if(T3CON!=0Xe010) T3CON=0Xe010;
     if(T4CON!=0XE002)   T4CON=0XE002;     
              PR4=0xfffd;
              TMR4_D=0xffff;
              TMR4=0;
     _T4IF=0;
     _T4IE=1;
     _T4IP=3;
     
   
   
    d8[289]=0x55;
    b[483]=b[483]&0xdf;   //M8029 =0;
    b[498]=b[498]|0x10;   //M8147   Y01脉冲输出中1
  
   }
  else
   asm("nop");
    }
     }
   else   if(mp1.b.a0==0)
     {
             if(ma1[k+x]==0x00)
          {
               pf2=&d8[176];     //Y0脉冲数低位
                if(d8[184]==0x55)      //Y0方向标志
           *pf2=*pf2-TMR1;
           else
          *pf2=*pf2+TMR1;
           TMR1_D=0;                                  
           T1CON=0;
          _T1IE=0;       
          _T2IE=0;                             
               OC2CON=0X0;
           T2CON=0X0;
           T1CON=0;
           TMR1=0;
          d8[288]=0X0;
          }
      if(ma1[k+x]==0x01)
          {
               pf2=&d8[180];     //Y1脉冲数低位
                if(d8[185]==0x55)      //Y1方向标志
           *pf2=*pf2-TMR4;
           else
           *pf2=*pf2+TMR4;
          TMR4_D=0;
   
              TMR4=0;
         OC3CON=0X0;
          T3CON=0X0;
         T4CON=0;
          _T4IE=0;
          _T3IE=0;         
           d8[289]=0X0;
          }
     }

     mpn=0;
}
tingji();
  
if(ma1[k]==0x83)   //DPLSv
    k=k+24;
    else
    k=k+12;
}

出0入0汤圆

 楼主| 发表于 2009-10-10 14:19:39 | 显示全部楼层
上面的程序已完成三菱定位指令,并进行了测试,38HZ-400KHz,2轴带加减速,10ms运算一次,脉冲硬件控制

出0入0汤圆

 楼主| 发表于 2009-10-10 14:26:00 | 显示全部楼层
以上程序的图片

(原文件名:plc.JPG)


gx8.52编程,监控,4路AB相计数器,200k+3路10K,2路400k脉冲输出

出0入0汤圆

 楼主| 发表于 2009-10-10 14:32:14 | 显示全部楼层
想出来做plc,最难的定位指令也都做好了,下一步业务是我的短处,工程师出来创业大多会失败,如果不行我可能还要进厂打工

出0入0汤圆

 楼主| 发表于 2009-10-10 14:43:47 | 显示全部楼层

(原文件名:IMG_0831.JPG)

出0入0汤圆

发表于 2009-10-10 16:14:07 | 显示全部楼层
做得出难卖

出0入0汤圆

 楼主| 发表于 2009-10-10 17:57:47 | 显示全部楼层
前期的可靠性测试已经完成,正在考虑外壳问题

出0入0汤圆

发表于 2009-10-10 17:59:52 | 显示全部楼层
哈哈,刚下班。
电影《东邪西毒》有一段讲 欧阳峰 推销 洪七公 的对白。哈哈,讲包装的重要性
---------------------------------------------------
西毒:这个人名字叫洪七,他的刀很快,但是他不喜欢穿鞋,我知道他可以帮我赚很多钱,但是我一直都不喜欢这个人,因为我命书里有一句话“尤忌七数,是以命终”。我第一次见到他的时候,他刚从乡下出来。

“知道我为什么请你吃饭吗?”

洪七:“不知道。”

西毒:“因为我知道你肚子饿,其实我留意你很久了,我看见你蹲在那堵破墙下半天也没动过,看你又不像是病了,你这种年青人我见得多了,懂一点武功就以为可以横行天下,其实走江湖是件很痛苦的事,会武功很多事就不能做,你不想种地吧?又不屑去打劫,更不想抛头露面在街头卖艺。那你怎么生活?武功高强也得吃饭。有种职业很适合你,既可以去帮你赚点银两,又可以行侠仗义,你有兴趣吗?你呀,考虑一下吧,要快一点,你知道,肚子很快又饿了。”

洪七来了没多久,上次那帮马贼又回来了,在我带他去见村民之前,我替他买了一双鞋。因为穿鞋的和不穿鞋的刀客,价钱是相差很远的。

“你们觉得十两银子这个价钱很贵吗?那你们可以找几个便宜点的。那边有几个,不穿鞋的,你们给他几两银子他就很开心了。那些连鞋都没有的刀客,你对他们有信心吗?万一他们失手了,让那些马贼知道是由你们指使的,你们想那些马贼会怎么样?我不敢说我这个朋友的武功比他们都好,但是我现在跟你们说的,是你们一家大小二十几口人命的安全。至少在这方面,你们应该相信一个穿鞋的人吧?”
---------------------------------------------------

所以 包装的和不包装的,价钱是相差很远的。
那些包装都没有的,你对他们有信心吗?万一他们失手了。。。。。。
---------------------------------------------------

出0入0汤圆

 楼主| 发表于 2009-10-10 18:08:17 | 显示全部楼层
楼上高人

出0入0汤圆

发表于 2010-1-14 11:56:19 | 显示全部楼层
一直期待参与PLC的项目,有机会一定得做做看!

出0入0汤圆

发表于 2010-1-23 19:39:06 | 显示全部楼层
才发现,我想做的都被楼主做好了,楼主还有空板吗?

出0入0汤圆

发表于 2010-2-2 11:51:41 | 显示全部楼层
建议楼主将此项目完全开源,这样还可以穿条酷子呢!!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-3 07:21

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表