999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于C++builder的PLC通信程序研究與設計

2015-04-29 00:00:00李玉石
品牌與標準化 2015年4期

【摘 要】 為了實現(xiàn)PC與西門子S7-200 PLC的實時遠程監(jiān)控,應用C++ builder 6.0開發(fā)了一個上位機程序,通過發(fā)送接收數(shù)據(jù)報文實現(xiàn)了PLC輸入輸出端口的狀態(tài)控制。經(jīng)過測試,軟件達到了調(diào)試效果,為工業(yè)現(xiàn)場PLC的靈活應用提供了一個新方法。

【關鍵詞】 C++ Builder PLC 報文 串口 MSComm

【DOI編碼】 10.3969/j.issn.1674-4977.2015.04.013

可編程邏輯控制器(PLC)主要用于工業(yè)現(xiàn)場的實時控制,系統(tǒng)相關的人機界面主要是開關、按鈕、指示燈等部件。由于其穩(wěn)定可靠且具有良好的適應性和易于拓展能力,在工程中得到了越來越多的應用。雖然PLC易于控制、設計靈活、能模擬現(xiàn)場調(diào)試、編程簡單、具有良好的抗干擾性,但是PLC也有不易顯示各種實時圖表、曲線、趨勢圖和漢子,用戶界面不夠良好,不便于監(jiān)控等缺點。現(xiàn)在工業(yè)現(xiàn)場的PLC都配備了串行接口,可以通過232、485、422與其它設備或PC相連接。而基于PC的上位機軟件一般都具有良好的人機界面,修改靈活,便于實現(xiàn)系統(tǒng)的監(jiān)控和管理,進行程序的編制、參數(shù)設定、參數(shù)修改、數(shù)據(jù)采集等,既能保證系統(tǒng)性能,又能使系統(tǒng)操作簡單,便于在工業(yè)生產(chǎn)過程中有效地實時監(jiān)管控制。將PC的上位機與PLC的下位機系統(tǒng)集成是目前大多數(shù)自動控制系統(tǒng)的實現(xiàn)方式[1]。本文將設計一種可以與PLC實現(xiàn)穩(wěn)定、可靠數(shù)據(jù)通信的上位機軟件程序。

1 初始化

上位機開發(fā)以西門子S7-200(CPU224)為例,通過DC24V電源給PLC供電。集成在S7-200中的點對點PPI可以實現(xiàn)485接口的高速數(shù)據(jù)通信,應用銀杏USB-485轉(zhuǎn)換器將PC與PLC連接起來組成PC/PPI網(wǎng)絡,實現(xiàn)點對點實時通信。設計軟件功能包括IO輸入輸出兩部分:開關量輸入,利用繼電器改變某個輸入端口的狀態(tài),程序讀取這個端口的輸入狀態(tài)(開啟或關閉),并在程序中實時顯示;開關量輸出,上位機程序界面中指定端口的地址,單擊置位復位按鈕,即指定地址的端口狀態(tài)為開啟或關閉,使線路中指示燈點亮或熄滅。

下位機西門子S7-200PLC需要在PLC中運行一段程序,與上位機之間的通信方式采用主從方式,PC為主機,PLC為從機。待PC向PLC發(fā)出報文,后者收到報文后,進行異或校驗處理,若校驗正確則返回收到的報文內(nèi)容。

1 PLC調(diào)試軟件界面圖

在C++ builder 6.0中新建plc.bpr工程,設置Form1的標題為“PLC(S7-200)調(diào)試程序”。創(chuàng)建3個GroupBox控件分別用于顯示輸入狀態(tài)、輸出控制和報文監(jiān)控[2]。此外用Shape控件來顯示輸入狀態(tài)和輸出狀態(tài)指示燈(綠色和紅色),用CheckBox控制輸出點復選框。選用MSComm組件進行串口通信開發(fā)。

if(MSComm1->PortOpen!=true)

{

MSComm1->CommPort=1; //設置通信端口

MSComm1->InputMode=1; //數(shù)據(jù)為二進制

MSComm1->Settings = \"9600,n,8,1\";

MSComm1->InBufferSize=512;

MSComm1->OutBufferSize=1024;

MSComm1->RThreshold=1;

MSComm1->PortOpen=true; //打開端口1

Shape1->Brush->Color=clLime;

……

}else

{

ShowMessage(\"串口已經(jīng)打開\");

return;

}

程序首先進行串口初始化,設置通信端口號、波特率、數(shù)據(jù)位、停止位、輸入輸出緩存區(qū)大小、接收觸發(fā)字符數(shù)等基本信息,同時將輸出狀態(tài)的Shape控件初始化為綠色。當PC與PLC調(diào)試完畢時,則需要關閉上位機程序[3]。

MSComm1->PortOpen=1;

Close();

2 輸入顯示

首先聲明一個存儲接收數(shù)據(jù)的緩沖區(qū)BYTE rcv[8],針對下位機PLC的數(shù)據(jù)報文內(nèi)容為:rcv(0)起始00,rcv(1)字節(jié)數(shù),rcv(2)Q0狀態(tài),rcv(3)Q1狀態(tài)<>255,rcv(4)I0狀態(tài),rcv(5)I1狀態(tài),rcv(6)校驗,rcv(7)結(jié)束255.在MSComm的接收觸發(fā)事件中,通過RxBuff獲取MSComm1->Input所獲得的報文數(shù)據(jù),然后依次的存入rcv[8]數(shù)組中,第一個for循環(huán)用于數(shù)組賦值,第二個for循環(huán)用于顯示接收到的報文信息,便于程序調(diào)試。

int ByteNum;//收到的字節(jié)數(shù)

OleVariant RxBuff;

RxBuff=MSComm1->Input;

ByteNum=RxBuff.ArrayHighBound();

for(int i=0;i<=ByteNum;i++)

rcv[i]=RxBuff.GetElement(i);

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

Edit1->Text=Edit1->Text+IntToStr(rcv[i]);

應用C語言中的itoa函數(shù)將整型的接收報文數(shù)據(jù)轉(zhuǎn)換成二進制的字符,便于轉(zhuǎn)換成8個字節(jié)長的字符,便于后續(xù)的輸入狀態(tài)判斷。以Shape15為例,判斷str[8]字符內(nèi)容,由此決定控件的顏色為紅色或者綠色。

char p[8];

String str;

itoa(rcv[2],p,2); //整型轉(zhuǎn)換成二進制字符str.sprintf(\"%8s\",p);

if(str[8]=='1')

Shape15->Brush->Color=clRed;

else

Shape15->Brush->Color=clLime;

3 輸出控制

程序涉及了多個端口控制輸出,為了便于上位機操作控制,應用CheckBox控件對應每一個輸出端口。類似上述轉(zhuǎn)換,將每個端口的狀態(tài)轉(zhuǎn)換為字符形式保存。

check[0]=CheckBox1->State;

check[1]=(CheckBox2->State)*2;

check[2]=(CheckBox3->State)*4;

……

check[7]=(CheckBox8->State)*128;

控制報文發(fā)送需要創(chuàng)建OleVariant Txbuff,同樣創(chuàng)建一個字符型數(shù)組temp[8],將待發(fā)送的輸出端口信息check[i]累加成給變量q1。因為PC與PLC直接的通信涉及到異或校驗,將異字節(jié)內(nèi)容存在fcs變量,以待報文后續(xù)發(fā)送,同時報文以0xFF做報文尾標識,最后應用MSComm1->Output=Txbuff將預置好的數(shù)據(jù)發(fā)送出去[4]。

BYTE temp[8];//報文長度

BYTE fcs;

int q1=0;

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

q1=q1+check[i];

temp[0]=0;//起始字符

temp[1]=4;

fcs=temp[1];//fcs表異或校驗碼

for(i=2;i<6;i++)

{

temp[i]=sdata[i-2];

fcs=fcs^temp[i];//算異或校驗碼

}

temp[i]=fcs;

temp[i+1]=0xFF;//結(jié)束字符Txbuff=VarArrayCreate(OPENARRAY(int,(0,7)),varByte);

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

Txbuff.PutElement(temp[i],i);

MSComm1->Output=Txbuff;//發(fā)送

4 結(jié)論

上位機軟件設計、調(diào)試完畢后,執(zhí)行發(fā)送或定時器發(fā)送。單擊界面中代表端口號的選擇按鈕,給S7-200PLC對應的端口置位,則PLC上相應的指示燈亮或滅;界面中輸出控制指示燈圖像改變顏色。而當PLC的輸入端口接收到信號時,界面中的輸入狀態(tài)指示燈改變顏色。經(jīng)過測試上位機的功能達到了預期的設計目的,實現(xiàn)了PC與PLC的遠程實時控制。

參考文獻

[1] 曹衛(wèi)彬.《C/C++串口通信典型應用實例編程實踐》[M].北京:電子工業(yè)出版社,2007:177-187

[2 陳成勇.《軟PLC技術研究與開發(fā)》[D].碩士論文.2008.05

[3] 李劍.《西門子PLC與監(jiān)控計算機通信問題的研究[D]》.碩士論文2007.01

[4] 陳卓.《PLC與上位計算機通訊監(jiān)控系統(tǒng)的研究與應用》[D].碩士論文2004.04

作者簡介

李玉石,工程師,主要從事計量檢定、儀器儀表的研究工作。

(責任編輯:張曉明)

主站蜘蛛池模板: 国产精品极品美女自在线| 精品国产网站| 色综合热无码热国产| 99久久亚洲综合精品TS| 国产欧美日韩视频怡春院| 911亚洲精品| 国产噜噜在线视频观看| 亚洲无码37.| 试看120秒男女啪啪免费| 又黄又湿又爽的视频| 亚洲色图欧美激情| 国国产a国产片免费麻豆| 亚洲色成人www在线观看| 91 九色视频丝袜| 国产白浆视频| 欧美激情视频一区| 夜夜操狠狠操| 亚洲欧美日本国产综合在线| 久久这里只有精品免费| 黄色网页在线播放| 国产一区二区福利| 高清久久精品亚洲日韩Av| 日本精品一在线观看视频| 五月综合色婷婷| 日本免费福利视频| 免费xxxxx在线观看网站| 不卡无码h在线观看| 自慰网址在线观看| 日本午夜在线视频| 午夜精品久久久久久久无码软件| 久久精品女人天堂aaa| 久热中文字幕在线| 国产精品福利一区二区久久| 五月天久久综合| 国产专区综合另类日韩一区 | 91麻豆国产视频| 午夜日b视频| 国产丝袜91| 国产一二三区视频| 青青极品在线| 全色黄大色大片免费久久老太| 粉嫩国产白浆在线观看| 77777亚洲午夜久久多人| 5555国产在线观看| 无码网站免费观看| jijzzizz老师出水喷水喷出| 日韩高清一区 | 亚洲愉拍一区二区精品| 色婷婷在线影院| 天堂成人在线| 香蕉综合在线视频91| 国产成人综合亚洲欧洲色就色| 久久亚洲美女精品国产精品| 亚洲国产成熟视频在线多多| 呦女亚洲一区精品| 激情午夜婷婷| 免费一级毛片完整版在线看| 亚洲精品桃花岛av在线| 亚洲一区第一页| 老司机精品一区在线视频| 国产爽爽视频| 国产成人夜色91| 国产精品熟女亚洲AV麻豆| 国产小视频a在线观看| 无码中文字幕乱码免费2| 久久免费看片| 欧美午夜视频在线| 欧美区一区二区三| 91久久偷偷做嫩草影院电| 日韩黄色在线| 精品视频一区二区观看| 蜜桃臀无码内射一区二区三区| 精品国产免费第一区二区三区日韩| 57pao国产成视频免费播放| 精品国产污污免费网站| 国产女人喷水视频| 欧美国产在线看| 亚洲美女一区二区三区| 色婷婷狠狠干| 67194在线午夜亚洲| 亚洲国产av无码综合原创国产| 精品91视频|