音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊(cè) 首頁(yè) | 行業(yè)黑名單 | 幫助
維庫(kù)電子市場(chǎng)網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

通訊問題

作者:gygabc 欄目:通信技術(shù)
通訊問題
請(qǐng)教一下各位,通訊問題 我有四臺(tái)設(shè)備要通訊 都是485口的,四臺(tái)設(shè)備并在一起,其他三臺(tái)可以通上,只有單片機(jī)的通不上??????   (單片機(jī)) 單通可以和西門子的PLC通上, 但和令兩臺(tái)設(shè)備通不上,西門子的PLC單通可以和令兩臺(tái)設(shè)備就能通上,這是為什么??????????那為大蝦幫幫我十分感謝。


2樓: >>參與討論
chunyang
最大的可能是波特率不準(zhǔn)的原因
也可能是程序流程問題。

3樓: >>參與討論
gygabc
通訊問題
 
4樓: >>參與討論
gygabc
通訊問題
都是9600的,如果程序流程有問題,單片機(jī)為什么可以和西門子的PLC通上??????

5樓: >>參與討論
chunyang
不同產(chǎn)品的誤差容限不同
波特率是一方面,其它如485數(shù)據(jù)建立時(shí)間等等,不同設(shè)計(jì)的容限都不同,除硬指標(biāo)如波特率、電壓等外,其它的不配合都可用軟件解決或因軟件造成,如果是這方面的問題,不是“流程”是什么?

6樓: >>參與討論
gygabc
樓上的哥哥幫幫小弟吧

chunyang你好:
          /* MODBUS通訊規(guī)約中CRC校驗(yàn)碼地計(jì)算 */
#include "AT89X51.H"
#include "INTRINS.H"
#define uCHAR unsigned CHAR
uCHAR in_command=0;
uCHAR sbuf_count=0;
CHAR getsbuf[8];/*接受字符緩沖區(qū)*/
CHAR return_xy[17]={0x01,0x01,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
CHAR *pint3;
CHAR outcount=0;
CHAR m=17;/*返回?cái)?shù)據(jù)字節(jié)數(shù)*/
void XyToCrc(CHAR mm,CHAR *pint);
void Init_SerialComm(void);
void Init_CpuIO(void);
void DelayX1ms(uCHAR count);
void outCHAR(CHAR i);
void get_digital(void);
void main(void)
{

CHAR *pint1;
CHAR CHARx,CHARy;

Init_SerialComm();  /*初始化串口*/
  Init_CpuIO();   /*初始化IO口*/
  
for(;;)
{    
  get_digital();  /*采集數(shù)字量*/
  pint1=return_xy;
  return_xy[1]=0x01;
  return_xy[2]=0x0c;  
     XyToCrc(m-2,pint1); /*計(jì)算返回?cái)?shù)據(jù)的校驗(yàn)碼*/
     CHARx=return_xy[0];
  CHARy=return_xy[1];
     CHARx=return_xy[2];
  CHARy=return_xy[3];
  CHARx=return_xy[4];
  CHARy=return_xy[5];
  CHARx=return_xy[6];
  CHARy=return_xy[7];
  CHARx=return_xy[8];
  CHARy=return_xy[9];
  CHARx=return_xy[10];
  CHARy=return_xy[11];
  CHARx=return_xy[12];
  CHARy=return_xy[13];
  CHARy=return_xy[14];
  CHARx=return_xy[15];
  CHARy=return_xy[16];
  if (outcount>=m)
  {TI=0;RI=0;outcount=0;}
  if(in_command==1)
  {
   in_command=0;
   pint3=return_xy;
   outcount=0;
   XyToCrc(m-2,pint1); /*計(jì)算返回?cái)?shù)據(jù)的校驗(yàn)碼*/
   TI=1;  /*數(shù)據(jù)返回*/
   
  }
  
}
}
void Init_SerialComm(void)   /*初始化串口*/
{
SCON=0x50;   /*SCON: serail mode 1, 8-bit UART, enable receive*/
TMOD=0x20;   /*TMOD: timer 1, mode 2, 8-bit reload*/
TH1=0xfd;    /*baud rate 9600b/s  TH1=0xfd;    */
/*TL1=0xfd;*/
PCON=0x00;    /* SMOD=0*/
IE=0x90;      /*IE.7=EA=1;IE.4=ES=1,IE.3=ET1=0, IE.2=EX1=0,IE.1=ET0=0,IE.0=EX0=0,Enable GLOBAL interrupt and serial interrupt*/
TR1=1;        /*start timer 1*/
}
void Init_CpuIO(void)         /*初始化IO口*/
{
P1=0xff;/*關(guān)閉采集口*/
P2=0xff;/*關(guān)閉采集口*/

/*p3_0=RXD,p3_1=TXD,p3_2=/INT0,p3_3=/INT1   P3口的第二定義在IE中設(shè)置起用*/
/*p3_4=T0,p3_5=T1,p3_6=/WR,p3_7=/RD      */
}
void DelayX1ms(uCHAR count)        /*延時(shí)1ms*/
{
uCHAR k;
while(count!=0)
{count--;
for(k=0;k<72;k++)    
{}
}
}
/*串口接收中斷處理函數(shù)*/
void Serial(void)  interrupt 4
{
CHAR *pint2;
CHAR i,crcl=0,crch=0;
        if(RI)
        {
         RI=0;/* sbuf_count getsbuf[3] */
         getsbuf[sbuf_count++]=SBUF;
         SWITCH(sbuf_count)    /*接收一個(gè)數(shù)據(jù)就判斷一次是否是發(fā)給自己的命令*/
          {
            case 0x01:
                 if(getsbuf[0]!=return_xy[0])
                 sbuf_count=0x00;
                 break;     
            case 0x02:
                 if(getsbuf[1]!=0x01)
                 sbuf_count=0x00;
                 break;
            case 0x03:
                 if(getsbuf[2]!=0x00)
                 sbuf_count=0x00;
                 break;
            case 0x04:
                 if(getsbuf[3]!=0x00)
                 sbuf_count=0x00;
                 break;
            case 0x05:
                 if(getsbuf[4]!=0x00)
                 sbuf_count=0x00;
                 break;
            case 0x06:
                 if(getsbuf[5]!=0x60)
                 sbuf_count=0x00;
                 break;
            case 0x07:
                 break;     
            case 0x08:
             crcl=getsbuf[6];
             crch=getsbuf[7];
             pint2=getsbuf;            
   XyToCrc(6,pint2);    /*計(jì)算接受數(shù)據(jù)地校驗(yàn)碼 */
   if(crcl==getsbuf[6] && crch==getsbuf[7]) /*接受地校驗(yàn)碼和計(jì)算的校驗(yàn)碼相同 */
   {
    in_command=1;    /*產(chǎn)生有效命令 */
   }
   else
   {
    in_command=0;
   }
   for(i=0;i<8;i++)
   {
    getsbuf[i]=0x00;   /*清接受緩沖區(qū) */
 
7樓: >>參與討論
gygabc
樓上的哥哥幫幫小弟吧.
這是控制開關(guān)觸電程序,小弟對(duì)這一點(diǎn)都不懂,能幫幫我嗎?幫我改改可以嗎?不勝感謝.

8樓: >>參與討論
chunyang
抱歉,我可沒有時(shí)間幫你看程序!
    而且你可能來本壇的時(shí)間未久,如此尋求“幫助”的方式是本壇一向不提倡的。方法和方向性的指點(diǎn)俺老漢向來不吝,但如此直接給結(jié)果的還從未有過。過去、現(xiàn)在和未來,均此。

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
請(qǐng)教電源模塊的應(yīng)用問題
求救
運(yùn)放
請(qǐng)教各位高手一堆問題,謝謝,初來乍到
請(qǐng)各位看看,這個(gè)紅外傳輸數(shù)據(jù)的原理圖有毛病么?
免費(fèi)注冊(cè)為維庫(kù)電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào)