關 閉

        新聞中心

        EEPW首頁 > 工控自動化 > 設計應用 > 基于GSM的中央空調末端控制器研究

        基于GSM的中央空調末端控制器研究

        作者: 時間:2009-12-17 來源:網絡 收藏
        短消息的接收與發送由處理器和SIM300模塊通過16C550芯片串行通信完成,處理器向SIM300模塊發送AT指令讀取或發送短消息。發送中文短信息時,發送的是漢字的UCS2編碼,所以在初始化SIM300模塊時須發送指令“AT+CMGF=0”,把模塊的短消息工作模式設置為PDU模式,以UCS2編碼方式發送短消息。同樣,SIM300模塊收到的短消息也是PDU編碼方式,要讀取出用戶發送的中文指令就必須將消息內容解碼成ASCII字符。根據實際應用情況(發送漢字信息較少且固定),從節約系統資源的角度考慮,直接查找漢字的UCS2編碼表,查出要發送漢字的UCS2碼并發送。
          發送短消息首先要向SIM300模塊發送整個短消息代碼位數的16進制數,之后是短信頭代碼“001100D”、中國區號“+86”的編碼“9168”和發送的目的手機號碼。此處的目的手機號碼必須是每兩位互換得來,由于手機號碼是11位,最后一位用“N”補齊,而短消息內容是用UCS2碼編寫,所以繼續發送編碼方式代碼“0008A7”,最后才是短消息正文的UCS2碼。
          當有新消息到達時,收到的數據包內封裝了消息發送時間、來自的手機號碼和消息正文。如果來自的手機號碼與預先設置的用戶號碼不一致則直接將短消息刪除;一致則繼續判斷短消息正文。由于接收到的短消息也是由UCS2編碼處理過的中文,所以把消息正文內容與預先約定好的“設定溫度”和“當前狀態”兩種UCS2編碼相比較后分別轉到相應的處理函數,若與約定的兩種編碼都不一致,則視為錯誤消息刪除。
          本文全部程序代碼由C語言編寫,短消息發送部分代碼如下:
        void gprs_msg(char*number,char*msgr)//短信發送函數
        {
          char ctl[]={26,0};
          char head[]=″0011000D9168″;//短信頭代碼及中國區號
          char headmsg[]=″0008A7″;//短信編碼方式代碼
          unsigned int count;
          char sum[2];

        本文引用地址:http://www.104case.com/article/163402.htm

          tty_writecmd(″at″,strlen(″at″));
          tty_writecmd(″at″,strlen(″at″));
          tty_write(″at+cmgs=″,strlen(″at+cmgs=″));

          count=strlen(msgr)/2+14;//計算短信長度

          sum[0]=(char)(count/10+48);
          sum[1]=(char)(count%10+48);//將短信長度
                        //解碼為16進制

          tty_writecmd(sum,2);
          tty_write(head,strlen(head));
          tty_write(number,strlen(number));
          tty_write(headmsg,strlen(headmsg));//發送短信頭
          tty_write(msgr,strlen(msgr));//發送短信正文

          tty_write(ctl,1);
          tty_write(″r″,strlen(″r″));//發送短信結束代碼
          usleep(300000);//進程休眠
          printf(″Message sent.n″);
        }
          上述函數封裝了PDU模式發送短消息的頭信息和正文字符長度等,參數僅為目的手機號碼的PDU編碼和短消息正文的UCS2編碼。這樣做避免了大量的重復代碼,也提高了程序的運行效率。
        1.3 增量式PID控制策略
          PID是一種線性,它根據給定值r(t)與實際輸出y(t)構成控制偏差:
         

          式中:KP為比例系數;TI為積分時間常數;TD為微分時間常數。
          由于計算機處理的是數字量,的驅動對象是風閥執行器,所以控制系統中使用的控制策略是數字增量式PID。
          u(k)=Ae(k)-Be(k-1)+Ce(k-2)
          以下是增量式PID控制策略的實現函數:
        double PID(double feedback)
        {
          double Err,pErr,dErr,dU;
          Err=Command-feedback;//當前誤差
          pErr=Err-ppreErr;//比例項增量式誤差
          dErr=Err-2*preErr+pre2Err;//微分項增量式誤差
          dU=Proportion*pErr+pDerivative*dErr+ Integral*Err;
        //控制量增量
          pre2Err=preErr;
          preErr=Err;
          return dU;
        }
        2 實驗
          本實驗對象以1.3噸的系統的實物模型為例,該系統可以模擬多種運行模式,并可以通過對執行風閥輸入模擬信號來調節風閥的具體開度,以此來調整送入房間的送風量,達到控制模擬房間制冷量的目的。本實驗對象有2個模擬房間,其中裝置的驅動閥為TANG TECH TM04~24,溫濕度傳感器為VECTOR ADS-H1T1。嵌入式的D/A輸出的0~4.096 V信號經放大至0~10 V后,直接驅動風閥驅動器。模擬房間的的溫濕度傳感器輸出范圍為1~5 V,直接輸入處理器內部A/D的AIN[0]腳。
          系統提供了兩種用戶短消息內容的識別,分別是“設定溫度XX”和“查詢狀態”。如用戶發送“查詢狀態”,而當前室內狀態為23℃,則系統自動向用戶返回短消息“溫度:23;狀態:正常”。如果室內是異常溫度,則系統發送短消息自動報警“溫度60;狀態警告”。如果用戶發送“設定溫度23”,則系統將當前室內設定溫度改為23℃,并回復“已設定溫度23”。此時本地的控制器以PID進行溫度控制。
          為了使用戶可以方便關閉室內控制器,而又不需要增加其他的短消息內容,本文設置了最高溫度限制50℃。當用戶發送“設定溫度”大于49℃時,系統認為用戶要求關閉控制器,繼而把溫度設定點改為OFF,風閥完全關閉,同時返回短消息“已關閉”。采用這種方法,既保證了系統有關閉風閥的功能,又不需要添加新的短消息命令。控制器關閉后,如果用戶再次發送短消息設置室內溫度為正常范圍內的溫度,則控制器重新開啟。
          短消息命令詳情見表1。

          為了測試系統節能實際效果,在室外溫度9℃的條件下開啟2個模擬房間的控制器,并設置預期室內溫度23℃。假定2個房間中,模擬房間一8:00有人,模擬房間二9:00開始有人;通過計算表明,9:00開啟模擬房間二的室內控制器要比8:00同時開啟2個模擬房間的室內控制器節約全天所耗能量的7%左右。
          本文實現了遠程控制方法,通過手機短信方式,對系統裝置進行控制及對室內溫度進行實時監控和管理。實驗結果表明,系統可以方便、靈活、快捷、按需調節房間的溫度,實現節能。并且,系統可擴充性強,在軟件升級后還可實現如末端能量計量等更多功能。

        pid控制器相關文章:pid控制器原理



        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 文安县| 富蕴县| 怀仁县| 尉犁县| 山丹县| 弋阳县| 隆子县| 夹江县| 甘南县| 宝丰县| 黄大仙区| 永善县| 新乐市| 永新县| 炎陵县| 洛扎县| 麟游县| 凤山市| 肥乡县| 荔波县| 綦江县| 监利县| 鱼台县| 溧阳市| 北安市| 乌兰县| 大竹县| 文登市| 洛川县| 永州市| 疏勒县| 社旗县| 镇原县| 牡丹江市| 和静县| 天镇县| 奉新县| 金沙县| 青河县| 墨江| 军事|