久久久91-久久久91精品国产一区二区-久久久91精品国产一区二区三区-久久久999国产精品-久久久999久久久精品

ABB
關(guān)注中國自動化產(chǎn)業(yè)發(fā)展的先行者!
橫河電機(jī)25年9月
工業(yè)智能邊緣計算2025年會
2025工業(yè)安全大會
CAIAC 2025
OICT公益講堂
當(dāng)前位置:首頁 >> 案例 >> 案例首頁

案例頻道

基于Visual C++6.0的PLC與計算機(jī)之間通信的設(shè)計
  • 企業(yè):控制網(wǎng)     領(lǐng)域:PLC /PAC/PCC/RTU    
  • 點(diǎn)擊數(shù):3875     發(fā)布時間:2008-03-03 23:12:15
  • 分享到:



    王  蕓(1982-)
女,湖北人 ,助教,碩士研究生,(安徽師范大學(xué)物電學(xué)院,安徽  蕪湖  241000),研究方向?yàn)橛嬎銠C(jī)應(yīng)用。

基金項目:安徽省教育廳2006年自然科學(xué)基金(NO.2006kj077B)

摘要:研究了在Visual C++6.0環(huán)境下利用MSComm控件實(shí)現(xiàn)系列PLC與上位計算機(jī)通信的問題,并給出了基于Visual C++6.0的通信程序設(shè)計方法。該通信程序能讀寫PLC內(nèi)部各種軟設(shè)備。實(shí)踐證明,在Visual C++6.0下實(shí)現(xiàn)系列PLC與計算機(jī)通信簡單使用,具有很強(qiáng)的推廣應(yīng)用價值。

關(guān)鍵詞:PLC;Visual C++6.0;MSComm控件;通信

Abstract: In this paper, the issue of implementing communication between  PLC and computer is studied base on Visual C++6.0 developing environment. A method for designing communication program by Visual C++6.0 is given. The communication program can read or write various kinds of soft devices inside  PLC. The practice proved that the communication between  PLC and computer under Visual C++6.0 is simple and applicable. It is worth to be promoted.

Key words: PLC;Visual C++6.0;MSComm control box;Communication

1 引言

    可編程控制器PLC(Programmable Logic Controller),由于其安全可靠、功能齊全、應(yīng)用靈活、操作維修容易和穩(wěn)定可靠等特點(diǎn)而得到廣泛應(yīng)用。但它也存在一些缺點(diǎn),如不能給用戶提供良好的人機(jī)控制和管理界面。隨著工廠自動化程序要求的不斷提高,生產(chǎn)過程中,要監(jiān)視、控制PLC內(nèi)部的數(shù)據(jù)與運(yùn)行狀況。對于中小型控制系統(tǒng),如采用廠家提供的通信模塊則成本高、投資較大、靈活性差。因此用戶自己開發(fā)計算機(jī)與PLC的通信模塊程序不僅可以滿足不同情況下數(shù)據(jù)傳輸速率與穩(wěn)定性的要求而且對節(jié)約外資、靈活應(yīng)用具有重要意義。本文以三菱PLC為例,介紹一種通過Visual C++編程實(shí)現(xiàn)計算機(jī)作為上位機(jī)與PLC的通信,該通信程序能讀寫PLC內(nèi)部各種軟設(shè)備。

2 通信原理

    系統(tǒng)采用RS-232C總線實(shí)現(xiàn),直接與計算機(jī)的Host-Link單元構(gòu)成1:1點(diǎn)對點(diǎn)通信系統(tǒng)。設(shè)定計算機(jī)即上位機(jī)具有高的優(yōu)先級,通信以“幀”為單位進(jìn)行,計算機(jī)首先向PLC發(fā)出命令幀,發(fā)送查詢數(shù)據(jù)的指令,目的是查詢PLC中端子的狀態(tài)和DM區(qū)的值等。PLC接收了指令后,進(jìn)行校驗(yàn),檢查數(shù)據(jù)是否正確,如果正確,則向上位機(jī)發(fā)送響應(yīng)幀,傳送數(shù)據(jù)(包含首尾校驗(yàn)字節(jié))。否則,PLC拒絕向上位機(jī)傳送數(shù)據(jù)。上位機(jī)接收到PLC傳送的數(shù)據(jù),也要判斷正確與否,如果正確,則接收;否則,拒絕接收。

    要使計算機(jī)與PLC聯(lián)接單元之間正確交換數(shù)據(jù),必須確保以下條件成立:(1)上下位機(jī)之間波特率以及數(shù)據(jù)格式一致;(2)在通信程序中,只使用協(xié)議規(guī)定的命令級中的命令;(3)當(dāng)上位機(jī)向PLC發(fā)送數(shù)據(jù)或讀取數(shù)據(jù)均由上位機(jī)主動以命令幀形式發(fā)出;(4)對上位機(jī)發(fā)來的命令幀,PLC用響應(yīng)幀應(yīng)答,若命令較長時,可分為若干幀發(fā)送。只要能順利實(shí)現(xiàn)命令幀和響應(yīng)幀的應(yīng)答,就能使要交換的數(shù)據(jù)順利達(dá)到對方。對于PLC發(fā)回的響應(yīng)幀用戶必須按其格式進(jìn)行拆裝識別,才能正確分離出交換數(shù)據(jù)及有用狀態(tài)信息。

3 MSComm控件特點(diǎn)

    利用VC的MSComm控件,實(shí)際上是一些Windows API函數(shù)的有機(jī)集成,它以屬性和事件的形式提供了對Windows通訊驅(qū)動程序API函數(shù)接口,為應(yīng)用程序提供了通過串行接口收發(fā)數(shù)據(jù)的簡便方法。因此,程序員只需在程序中設(shè)置和監(jiān)視MSComm控件的屬性和事件即可完成對串口的編程。

    MSComm控件提供了一種有效的處理串口交互作用的方法:事件驅(qū)動法,該方法利用OnComm事件捕獲并處理通信及其錯誤,當(dāng)CommEvent屬性發(fā)生變化時,就產(chǎn)生事件并等待相應(yīng)處理。每個MSComm控件都有一個串口相對應(yīng)。

    MSComm控件基本屬性如下:

    CommPort:設(shè)置并返回通信端口號。Windows系統(tǒng)將會利用該端口與外界通信。

    Setings:設(shè)置并返回初始化參數(shù)。其組成格式為“BBBB.P.D.S”。BBBB為數(shù)據(jù)速率,P為奇偶校驗(yàn),D為數(shù)據(jù)位數(shù),S為停止位數(shù)。

    PortOpen:設(shè)置并返回通信端口的狀態(tài)。也可以打開和關(guān)閉端口。

    OutPut:向傳輸緩沖區(qū)寫IB的數(shù)據(jù)。

    InPut:將傳送到輸入緩沖區(qū)的字符讀到程序里。

    RThreshold:設(shè)置在產(chǎn)生OnComm之前要接受的字符數(shù)。

    InputLen:設(shè)置并返回Input屬性從接收緩沖區(qū)讀取的字符數(shù)。

    InBuffersize:設(shè)置或返回輸入緩沖區(qū)的大小。

    InBufferCount:返回輸入緩沖區(qū)內(nèi)等待讀取的字節(jié)個數(shù);可通過設(shè)置該屬性值為0來清除接收緩沖區(qū)。

    InputMode:設(shè)置或返回傳輸數(shù)據(jù)的類型。

    CommEvent:傳回OnComm事件發(fā)生時的數(shù)值碼。

4 通信程序設(shè)計

    在應(yīng)用程序中,主要采用MSComm控件與PLC進(jìn)行通信,加載窗體時初始化通信參數(shù),讀數(shù)據(jù)時由上位機(jī)通過串行口向PLC發(fā)出讀數(shù)據(jù)命令幀,PLC發(fā)出響應(yīng)幀并將數(shù)據(jù)準(zhǔn)備好,這時上位機(jī)讀串行口就可讀取需要的數(shù)據(jù);寫數(shù)據(jù)時上位機(jī)通過串行口向PLC發(fā)出寫數(shù)據(jù)命令幀,PLC接受命令,并發(fā)送響應(yīng)幀。

    (1)在進(jìn)行通信之前首先要對PLC端進(jìn)行編程初始化,初始化程序如下:

LD M8002
MOV K0  D8121
MOV H4881  D8120

    M8002為特殊功能寄存器,只在PLC轉(zhuǎn)為運(yùn)行時接通一次。D8121設(shè)定PLC站號寄存器,在這里設(shè)定PLC的站號為0號。通信控制寄存器D8120中移入16進(jìn)制數(shù)4881,對照參數(shù)表,PLC端的設(shè)定為通信速率9600b/s,無校驗(yàn),8位數(shù)據(jù)位,1位停止位。采用RS232接口,數(shù)據(jù)幀中不添加校驗(yàn)位。上位機(jī)端要與之相匹配。

    (2)裝載窗體時初始化并打開串口

m_Com.SetCommPort(1);   //選擇COM1
m_Com.SetInBufferSize(1024);  //設(shè)置輸入緩沖區(qū)大小
m_Com.SetOutBufferSize(512);  //設(shè)置輸出緩沖區(qū)大小
if(!m_Com.GetPortOpen())        //打開串口
m_Com.SetPortOpen(TRUE);    //打開通信端口,準(zhǔn)備通信
 m_Com.Settings(9600,n,8,1);    //通信速率9600b/s,無校驗(yàn),8位數(shù)據(jù)位,1位停止位
m_Com.SetRThreashold();
m_Com.SetInputLen(1);
m_Com.SetInputMode(0);
(3)發(fā)送主程序(串口讀寫)
由GetInput()和SetOutput()函數(shù)完成串口讀寫。相應(yīng)的部分程序?yàn)椋?BR>Void CMainFramme::OnCommSend()
{
 //準(zhǔn)備要發(fā)送的數(shù)據(jù)存放在數(shù)組SXData[]中
         CByteArray Send;
         Send.RemoveAll();
         Send.SetSize(m);
         For(i=0;i<m;i++)
         Array.SetAt(i;SxData[i]);
         m_Com.SetOutput(ColeVariant(Send));
}
Void CMainFramme::OnCommMscomm()
{
         VARIANT vResponse;
         int  k;
         k=m_Com.GetInBuffetCount();  //接收到的字符數(shù)目
         if(k>0)
         {vResponse=m_Com.GetInput();    //read
         }

    在實(shí)際應(yīng)用中,從站被動的接收上位機(jī)發(fā)出的指令后做出的響應(yīng),然后將信息傳回上位機(jī),由于上位機(jī)在整個通信的過程中不能被中斷,因此上位機(jī)在接收與發(fā)送數(shù)據(jù)過程中采用了不可中斷的方法。

5 結(jié)束語

    本系統(tǒng)根據(jù)計算機(jī)和PLC的特點(diǎn),通過利用PLC的自由口通信協(xié)議,利用VC++6.0開發(fā)工具,開發(fā)出PC與PLC通信的應(yīng)用軟件,實(shí)踐證明這種方法結(jié)構(gòu)簡單,開發(fā)周期短,節(jié)約投資,對小規(guī)模的控制系統(tǒng)有極大的現(xiàn)實(shí)意義。

作者信息:

    王  蕓,高菲菲  (安徽師范大學(xué)物電學(xué)院,安徽  蕪湖  241000)

參考文獻(xiàn)

    [1] 徐世許.可編程序控制器原理·應(yīng)用·網(wǎng)絡(luò)[M].合肥:中國科學(xué)技術(shù)大學(xué)出版社,2005:244-247.

    [2] MITSUBISHI公司. MITSUBISHI FX-232AW接口單元通信手冊[M].上海:三菱公司,2000:25-33.

    [3] 陳興,張禮全,史旺旺.用VC++實(shí)現(xiàn)PC與多PLC之間串行通信的方法[J].微計算機(jī)信息,2004(20):6-7.

熱點(diǎn)新聞

推薦產(chǎn)品

x
  • 在線反饋
1.我有以下需求:



2.詳細(xì)的需求:
姓名:
單位:
電話:
郵件:
主站蜘蛛池模板: 一级片成人| 中文乱码一二三四有限公司| 国产成人精品高清不卡在线| 亚洲国产精品成人综合久久久| 成人欧美一区二区三区视频不卡| 国产欧美日韩免费| 黄色香蕉视频| 日韩久草| 51毛片| 在线看黄网| 欧美精品a毛片免费观看| 国产精品天天看特色大片不卡| 99九九成人免费视频精品| 国产一区系列在线观看| 欧美亚洲尤物久久精品| 亚洲精品在线观看91| 97综合久久| 一级黄a| 在线播放成人高清免费视频| 欧美成a人片免费看久久| 国产成人精品日本亚洲语音| 国产精品推荐| 久久久全国免费视频| 拍拍拍美女黄色1000视频| 一级韩国aa毛片免费观看| 日韩中文字幕精品免费一区| 亚洲国产精品v在线播放| 成年偏黄网站站免费| 国产成人毛片精品不卡在线| 美国黄色a级片| 黄色片大全在线观看| 精品久久不卡| 麻豆视频免费看| 亚洲天天在线日亚洲洲精| 91短视频版在线观看www| 一级h片| 一级三级黄色片| 一级片在线观看视频| 九九在线精品视频xxx| 一级黄色片免费的| 三级毛片大全|