用VC++開(kāi)發(fā)微機(jī)與OMRON PLC間的通訊程序

發(fā)布時(shí)間:2023-12-18
1、前言
可編程控制器是一種數(shù)字運(yùn)算操作的電子系統(tǒng),專(zhuān)為在工業(yè)環(huán)境下應(yīng)用而設(shè)計(jì)。它采用了可編程序的存儲(chǔ)器,用于其內(nèi)部存儲(chǔ)程序,執(zhí)行邏輯運(yùn)算、順序控制、定時(shí)、計(jì)數(shù)和算術(shù)操作等面向用戶(hù)的指令,并通過(guò)數(shù)字式或模擬式輸入輸出控制各種類(lèi)型的機(jī)械的生產(chǎn)過(guò)程??删幊炭刂破骷捌溆嘘P(guān)外部設(shè)備,都按易于與工業(yè)控制系統(tǒng)聯(lián)成一個(gè)整體、易于擴(kuò)充其功能的原則設(shè)計(jì)。早期的plc以數(shù)字量的順序控制為主,提供了簡(jiǎn)單的慢速的通信功能(只支持rs232、rs485、多采用modbus協(xié)議),現(xiàn)在的plc不僅具有邏輯運(yùn)算、順序控制、定時(shí)、計(jì)數(shù)和算術(shù)操作,而且還具有a/d、d/a轉(zhuǎn)換,數(shù)值計(jì)算和數(shù)據(jù)處理等功能。它既可以對(duì)開(kāi)關(guān)量進(jìn)行控制,也可以對(duì)模擬量進(jìn)行控制,隨著plc功能不斷擴(kuò)充,它還有通訊聯(lián)網(wǎng)功能,舉例c200hx/hg/he的omronplc的cpu內(nèi)的rs-232c端口和外設(shè)端口支持通信功能就有與編程設(shè)備(如編程器,lss,或sss(中文版))進(jìn)行通信、與個(gè)人計(jì)算機(jī)和其它外設(shè)進(jìn)行上位機(jī)鏈接通信、與個(gè)人計(jì)算機(jī)和其它外設(shè)進(jìn)行rs-232c、與其它pc進(jìn)行1:1、再有是與裝有nt鏈接接口的可編程終端(pt)進(jìn)行nt鏈接通信(1:1、1:n),本課題就是基于omronplc的鏈接通信(有通信協(xié)議),用vc++開(kāi)發(fā)的上位機(jī)與plc間的通信。
2、omronplc的通信協(xié)議
目前,隨著plc的快速發(fā)展,越來(lái)越多的plc生產(chǎn)廠商開(kāi)發(fā)了它與計(jì)算機(jī)的通信功能(主要是利用計(jì)算機(jī)串口進(jìn)行通信),本文是以c200heplc為例,作詳細(xì)闡述,本文的通信協(xié)議采用的是上位機(jī)鏈接通信。上位機(jī)鏈接通信通過(guò)在上位機(jī)與plc之間交換命令和應(yīng)答實(shí)現(xiàn)的。在一次交換中傳輸?shù)拿詈蛻?yīng)答數(shù)據(jù)稱(chēng)為一幀,一個(gè)幀最多可包含131個(gè)數(shù)據(jù)字符。
命令幀格式
從上位機(jī)發(fā)送一個(gè)命令時(shí),按下示的格式排列命令數(shù)據(jù)
@符號(hào)必須置于每個(gè)命令的開(kāi)頭,節(jié)點(diǎn)號(hào)是用來(lái)辨識(shí)每一臺(tái)plc的節(jié)點(diǎn),在本文中,它設(shè)置plc的dm6558單元中,識(shí)別碼設(shè)置兩字符的命令代碼,設(shè)置通信是讀寫(xiě)plc的哪個(gè)寄存器單元,例讀寫(xiě)ir/sr區(qū)時(shí)它的識(shí)別碼設(shè)置分別為rr和wr,讀寫(xiě)dm區(qū)分別為rd和wd。正文設(shè)置命令參數(shù),包括所要讀寫(xiě)plc寄存器單元的起始地址和字?jǐn)?shù)。fcs是設(shè)置兩字符的幀檢查順序碼,是一個(gè)轉(zhuǎn)換成2個(gè)ascii字符的8位數(shù)據(jù),這8位數(shù)據(jù)為從幀開(kāi)始到正文結(jié)束(即fcs之前)所有數(shù)據(jù)執(zhí)行“異或”操作的結(jié)果。終止符設(shè)置“*”和回車(chē)(ch r$(13))兩字符,表示命令結(jié)束。命令幀可以有最多131個(gè)字符長(zhǎng)。一個(gè)等于或大于132字符的命令必須分成若干幀。命令分段,使用回車(chē)定界符(ch r$(13))。
應(yīng)答幀格式
識(shí)別碼和正文取決于接收到的上位機(jī)聯(lián)結(jié)命令,結(jié)束碼表示命令完成的狀態(tài)(即是否有錯(cuò)誤發(fā)生),當(dāng)應(yīng)答超過(guò)132字符,它必須分成若干幀。結(jié)束碼是應(yīng)答幀中表示plc應(yīng)答的信息。例結(jié)束代碼為00表示正常結(jié)束,13表示fcs錯(cuò)誤,14表示格式錯(cuò)誤,15表示入口碼數(shù)據(jù)錯(cuò)誤,18表示幀長(zhǎng)度錯(cuò)誤,a3表示傳輸數(shù)據(jù)時(shí)因fcs錯(cuò)誤引起終止,a8表示傳輸數(shù)據(jù)時(shí)因幀長(zhǎng)度錯(cuò)誤引起終止。
本文的上位機(jī)命令幀包括讀寫(xiě)plc單元中的數(shù)據(jù)的命令。讀命令幀為:@01rr0100000141*+ch r$(13),意思是上位機(jī)讀取節(jié)點(diǎn)為1的plc中的ir0100單元中的內(nèi)容。寫(xiě)命令幀為:@01wr0100000171*+ch r$(13),意思是寫(xiě)一個(gè)數(shù)到節(jié)點(diǎn)為1的plc的ir0100單元中。
3、系統(tǒng)結(jié)構(gòu)圖
下圖是計(jì)算機(jī)與plc通信的組成系統(tǒng)圖
上位計(jì)算機(jī)與多個(gè)plc進(jìn)行通信,必須連接一個(gè)rs232/422電平轉(zhuǎn)換器,rs422采用平衡發(fā)送接收方式,它具有傳輸距離長(zhǎng)、抗干擾能力強(qiáng)和多點(diǎn)通信能力,最多可以接32臺(tái)plc,如圖1所示,每一臺(tái)plc都必須掛一個(gè)com06單元進(jìn)行rs422方式連接,所有的plc與計(jì)算機(jī)間的通訊采用的是plc上位機(jī)鏈接通信協(xié)議。
3.1硬件設(shè)置
rs232/422轉(zhuǎn)換器的設(shè)置開(kāi)關(guān)撥到422方式,omronplc上的com06通信板單元同樣設(shè)置為422方式和四線制。
3.2參數(shù)設(shè)置
上下位機(jī)的通信波特率設(shè)置為9600,數(shù)據(jù)格式設(shè)置為e,7,2。
3.3節(jié)點(diǎn)設(shè)置
在plc的dc6558單元中設(shè)置節(jié)點(diǎn)號(hào)00(初始值)~31(號(hào)機(jī))。
4、用visualc++6.0編寫(xiě)串行通信程序
本文的上位機(jī)鏈接通信程序是用visualc++6.0編寫(xiě)的,主要是利用vc++中的一個(gè)通信控件來(lái)實(shí)現(xiàn)的。
首先利用mfcappwizard(exe)建立一個(gè)基于對(duì)話框,支持activex控件,命名為transcomn的應(yīng)用程序。然后在對(duì)話框中加入一些控件,其中那個(gè)電話形狀的控件必須是在系統(tǒng)中注冊(cè)過(guò)的microsoftcommunicationscontrol,由它進(jìn)行通訊時(shí)首先得設(shè)置它的一些屬性如下。
屬性設(shè)定值說(shuō)明
commport1通訊協(xié)議為plc上位機(jī)鏈接
通信,利用微機(jī)的串口1
inputmode0接收數(shù)據(jù)類(lèi)型為文本形式
rthreshold1每接收一個(gè)字符就產(chǎn)生一個(gè)事件
settings9600,e,7,2參數(shù)依次為波特率、
奇偶檢驗(yàn)數(shù)據(jù)位數(shù)、停止位數(shù)
5、程序編寫(xiě)
在程序中需添加的代碼如下:
//transcommdlg.cpp:implementationfile
boolctranscommdlg::oninitdialog()
{
最后要在classwizard中添加變量和響應(yīng)函數(shù)如下。
控制名稱(chēng)控制id對(duì)應(yīng)變量或函數(shù)
通訊地址文本框id-addressm_address
dm區(qū)文本框id-dmm_dmbox
lr區(qū)文本框id-lrm_lrbox
hr區(qū)文本框id-hrm_hrbox
ir區(qū)文本框id-irm_irbox
應(yīng)答幀文本框id-responsem_response
通訊控件id-mscommm-comm.
發(fā)送命令按鈕id-sendonsend()
//todo:addextrainitializationhere
//打開(kāi)通信端口1
m_comm..setcommport&n
上一個(gè):mx3喇叭怎么更換,mx3外放喇叭怎么拆
下一個(gè):服務(wù)器、域名地址和IP地址之間有什么關(guān)系?

三星怎么設(shè)置來(lái)電短信,三星來(lái)電拒接短信如何關(guān)閉
飯前飯后該如何飲茶
戴爾電腦裝機(jī)教程,戴爾筆記本重裝系統(tǒng)的具體步驟
普洱茶寄存需遵照四個(gè)方法及四個(gè)留意事項(xiàng)
怎么獲取win11(win10獲取win11)
淺談RF電路設(shè)計(jì)
雁來(lái)紅是什么花 雁來(lái)紅圖片
微信點(diǎn)文件沒(méi)有反應(yīng)怎么辦(微信點(diǎn)文件沒(méi)有反應(yīng)了)
臺(tái)式機(jī)的硬盤(pán)長(zhǎng)什么樣子圖片,電腦硬盤(pán)什么樣
cad鼠標(biāo)反應(yīng)慢如何解決(cad鼠標(biāo)設(shè)置移動(dòng)太慢)
十八禁 网站在线观看免费视频_2020av天堂网_一 级 黄 色 片免费网站_绝顶高潮合集Videos