技術(shù)頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國傳動網(wǎng) > 技術(shù)頻道 > 應(yīng)用方案 > 永宏基于調(diào)制解調(diào)器與VB的PLC遠(yuǎn)程通訊系統(tǒng)設(shè)計(jì)

永宏基于調(diào)制解調(diào)器與VB的PLC遠(yuǎn)程通訊系統(tǒng)設(shè)計(jì)

時(shí)間:2009-09-04 13:34:54來源:ronggang

導(dǎo)語:?永宏基于調(diào)制解調(diào)器與VB的PLC遠(yuǎn)程通訊系統(tǒng)設(shè)計(jì)
1引言   隨著計(jì)算機(jī)和通訊技術(shù)的發(fā)展,在工業(yè)測量和控制中廣泛需要遠(yuǎn)程通訊。遠(yuǎn)端PLC等下位機(jī)做生產(chǎn)控制,本地計(jì)算機(jī)需要實(shí)時(shí)監(jiān)測或參與控制生產(chǎn)現(xiàn)場的參數(shù)。實(shí)現(xiàn)以上要求的一個(gè)簡便的途徑是利用覆蓋面廣泛的公用電話網(wǎng),使PLC等下位機(jī)利用調(diào)制解調(diào)器(MODEM)和計(jì)算機(jī)的調(diào)制解調(diào)器連接通訊,即可完成硬件上的連接。如圖1所示。在軟件方面,由遠(yuǎn)端下位機(jī)軟件控制和遠(yuǎn)程監(jiān)控站軟件兩部分組成。考慮到本地監(jiān)控站軟件只做數(shù)據(jù)監(jiān)測或少許控制且編程相對簡單,所以本地監(jiān)控站的編程軟件可以直接用高級語言。 2系統(tǒng)概述   本文以一個(gè)實(shí)際的小水電站的瀉水閘門程控工程為例,著重?cái)⑹鲇篮關(guān)LC和PC做遠(yuǎn)程通訊的實(shí)現(xiàn)細(xì)節(jié)。系統(tǒng)的下位機(jī)控制采用永宏公司的FBs系列PLC對水庫瀉水閘門進(jìn)行開度檢測和開度控制,監(jiān)控站的界面編程采用VB6.0編寫。   硬件配置:遠(yuǎn)端FBs-CB25+ FBs-10MAU+ECOM外置MODEM+PWS1711    本地PC(含普通內(nèi)置MODEM)   該系統(tǒng)主要控制要求,通過FBs-10MA外接一個(gè)旋轉(zhuǎn)編碼器檢測閘門所在位置,然后跟據(jù)現(xiàn)場人機(jī)界面或者PC端(下游5Km處)的設(shè)定位置來控制牽引閘門的馬達(dá)正反轉(zhuǎn),從而使閘門上升或下降到指定的位置。FBs-CB25所擴(kuò)展得到的通訊口2(RS485)用于PWS1711的通訊,通訊口1(RS232)用于連接MODEM,另外,主機(jī)上的可USB口用于連接調(diào)試用的筆記本電腦。
3調(diào)制解調(diào)器工作方式和設(shè)定   3.1 調(diào)制解調(diào)器工作原理   調(diào)制解調(diào)器分成兩種模式,命令模式和聯(lián)機(jī)模式。當(dāng)調(diào)制解調(diào)器沒有和其它設(shè)備連接時(shí),其處于命令模式,這時(shí)下達(dá)給調(diào)制解調(diào)器的指令時(shí)作調(diào)制解調(diào)器本身設(shè)定或者動作用的。當(dāng)調(diào)制解調(diào)器已經(jīng)和其它的設(shè)備連接上時(shí),此時(shí)調(diào)制解調(diào)就是處于聯(lián)機(jī)模式,所有在此時(shí)由計(jì)算機(jī)送到調(diào)制解調(diào)器的訊息都將由經(jīng)電話線傳送到其它設(shè)備上。   用于控制調(diào)制解調(diào)器的特定指令集被稱為“AT指令集”,通過該指令集,從最基本的音量控制到內(nèi)建參數(shù)設(shè)置的改變,都可以由VB經(jīng)過串行端口而對調(diào)制解調(diào)器下達(dá)控制指令。AT命令集是調(diào)制解調(diào)器通訊接口的工業(yè)標(biāo)準(zhǔn)。所有的AT命令都以字符AT開始,作為前綴。前綴AT用以引起調(diào)制解調(diào)器的注意(Attention)檢測計(jì)算機(jī)串行通訊口發(fā)送信號的速率,識別字符格式,包括字符長度和奇偶設(shè)定等。   調(diào)制解調(diào)器撥號之后,等待對方調(diào)制解調(diào)器送來的載波信號。如果在一給定時(shí)間內(nèi)沒有檢測到載波, 調(diào)制解調(diào)器自動釋放線路并送回結(jié)果碼NOCARRIER,如果檢測到載波信號, 調(diào)制解調(diào)器即送結(jié)果碼CONNECT + 波特率,就進(jìn)入聯(lián)機(jī)狀態(tài),即可與遠(yuǎn)方系統(tǒng)進(jìn)行通訊。   3.2 PLC連接調(diào)制解調(diào)器原理及其設(shè)置   在該系統(tǒng)中, PC做為主站,必須控制調(diào)制解調(diào)器主動撥號,另外,在確認(rèn)調(diào)制解調(diào)器和PLC的調(diào)制解調(diào)器聯(lián)機(jī)成功后控制它進(jìn)入聯(lián)機(jī)模式,開始存取PLC數(shù)據(jù)。主站控制調(diào)制解調(diào)器撥號連接細(xì)節(jié)見下節(jié),這里詳述PLC端對調(diào)制解調(diào)器的設(shè)置方法。   PLC端PLC上電后必須初始化調(diào)制解調(diào)器,設(shè)置成自動應(yīng)答來電狀態(tài)。在這里把PLC初始化調(diào)制解調(diào)器的AT指令組合稱為“MODEM驅(qū)動程序”。永宏P(guān)LC通過Port1來控制調(diào)制解調(diào)器,并把這種軟件界面稱為調(diào)制解調(diào)器專用界面。如圖2設(shè)定或者設(shè)定特殊暫存器R4149的高八位為55H就可以把Port1設(shè)置為調(diào)制解調(diào)器專用界面,在該界面下PLC會啟用“MODEM驅(qū)動程序”,此時(shí),雖CPU仍然使用永宏〝標(biāo)準(zhǔn)通訊驅(qū)動程序〞來管理Port1的通訊,但必須通過調(diào)制解調(diào)器來聯(lián)機(jī),在通訊進(jìn)行前,Por t1主控權(quán)是交由〝MODEM驅(qū)動程序〞管理,此時(shí)無法對PLC作任何存取動作?!癕ODEM驅(qū)動程序”即將調(diào)制解調(diào)器設(shè)為接收模式,并等待遠(yuǎn)方調(diào)制解調(diào)器撥號進(jìn)來,一旦收發(fā)雙方調(diào)制解調(diào)器聯(lián)機(jī)成功,則PLC立即脫離接收模式,而進(jìn)入聯(lián)機(jī)狀態(tài),Port1控制權(quán)交由永宏〝標(biāo)準(zhǔn)通訊驅(qū)動程序〞管理。此時(shí)遠(yuǎn)方調(diào)制解調(diào)器便可任意存取或控制此PLC主機(jī)了。   
   調(diào)制解調(diào)器設(shè)置如圖2所示,在PLC聯(lián)機(jī)狀態(tài)下,選取菜單中的“PLC”→“設(shè)定”→“Port1設(shè)定”來到圖2,選擇單選框的第二項(xiàng)“透過MODEM作遠(yuǎn)程CPU_Link”,該P(yáng)LC一上電就通過自帶的“MODEM驅(qū)動程序”把Port1設(shè)置為調(diào)制解調(diào)器專用界面。另外,通訊格式設(shè)置為同調(diào)制解調(diào)器相同的N,8,1,為提高通訊效率可以把通訊速率設(shè)置為38400bps,或者更高(最高為115200bps)。 4 PC端程序設(shè)計(jì)   4.1 撥號程序設(shè)計(jì)   PC端將以VB6.0所帶的通信控件MSCOMM進(jìn)行通信軟件的開發(fā),利用該控件控制串口實(shí)現(xiàn)對MODEM的控制??刂撇襟E如下:   一.通信參數(shù)設(shè)置   設(shè)置串口端口號,波特率,數(shù)據(jù)位,停止位,奇偶校驗(yàn)位及設(shè)置硬件握手協(xié)議,然后向MODEM發(fā)出DTR(已準(zhǔn)備好)信號一便接管MODEM,程序如下:   If MSComm1.PortOpen Then   MSComm1.DTREnable = True   Else   MSComm1.DTREnable = False   End If   二.對MODEM初始化   發(fā)出一些命令來設(shè)置參數(shù),其中S0=n(n>=1)自動應(yīng)答.n為響鈴次數(shù);E0/E1關(guān)閉/打開命令字符回應(yīng);Q0/Q1設(shè)置MODEM返回/不返回結(jié)果碼;M0/M1關(guān)閉/打開MODEM揚(yáng)聲器;Ln(n>=0)設(shè)置MODEM揚(yáng)聲器音量;P/T設(shè)置MODEM脈沖/音頻撥號;程序如下:   If MSComm1.PortOpen Then   Do While Not MSComm1.CTSHolding: Loop   TXD= ATS0=1E1Q0M1L2T + Chr(13)   MSComm1.Output = TXD   End If   三.進(jìn)行撥號   向MODEM發(fā)出ATD命令,程序如下:   MSComm1.Output=ATD & 05925998499+Chr(13)   當(dāng)發(fā)送“ATD”+ 電話號碼 + Chr(13)時(shí),MODEM就開始撥號,撥號需要一定的時(shí)間,在撥號的過程中可以不斷讀取MODEM的CD指示燈的狀態(tài),當(dāng)電話撥通后CD指示燈會點(diǎn)亮。并返回“CONNECT + 波特率”的信息。如果MODEM向PC的回應(yīng)字符串中含有Connect或CDHolding屬性值變?yōu)門rue(檢測出載波),則表示已與遠(yuǎn)方MODEM連機(jī)了,此時(shí)可以傳輸數(shù)據(jù)。   當(dāng)電話撥通后,MODEM不再接收AT指令,要使其回到命令狀態(tài),則必須發(fā)送“+++”信息,使MODEM回到命令狀態(tài),然后發(fā)送“ATH”+ Chr(13)則可以掛斷電話,程序如下:   MSComm1.Output=ATH +Chr(13)   4.2 通訊程序設(shè)計(jì)   一.永宏P(guān)LC通訊協(xié)議   永宏P(guān)LC 通訊訊息格式可概分為6個(gè)數(shù)據(jù)域位, 如下圖3所示,具體解釋如下:
 ?、牛_頭字符(STX):ASCI I碼之開始字符STX。   ⑵.從站號碼:為兩位數(shù)之16進(jìn)制數(shù)值。   ⑶.命令號碼:為兩位數(shù)之16 進(jìn)制數(shù)值,為由主系統(tǒng)要求從系統(tǒng)所執(zhí)行之動作類別。  ?、龋疚馁Y料:本文數(shù)據(jù)可為0(無本文數(shù)據(jù))~500個(gè)ASCII字符。  ?、桑畟烧`值(CHECKSUM): 偵誤值系將前述~將各ASCII字符之16進(jìn)制數(shù)碼值(8位長度)從頭至尾依序相加,但不考慮進(jìn)位,因此最終結(jié)果為偵誤值。  ?、剩Y(jié)尾字符(ETX):ASCI I碼之結(jié)尾字符ETX之16進(jìn)制數(shù)碼為03H。。   二.讀數(shù)寫數(shù)   本系統(tǒng)操作PLC的關(guān)鍵數(shù)據(jù)主要是水位的設(shè)定值PV=R0和當(dāng)前值CV=R1,即要對暫存器R0進(jìn)行寫操作,R1進(jìn)行讀操作;   依照協(xié)議VB設(shè)計(jì)的通訊程序必須指定一個(gè)命令碼,向PLC請求數(shù)據(jù)讀取,查的該命令碼為“46”,解釋為:連續(xù)多個(gè)緩存器之?dāng)?shù)據(jù)讀取。讀取R1的PC命令的ASCII碼寫法為:   “STX+ 01(站號)+46(命令碼)+01(連續(xù)數(shù)據(jù)個(gè)數(shù))+R00001(數(shù)據(jù)開始地址)+LRC(偵誤值)+ETX”   依照協(xié)議VB設(shè)計(jì)的通訊程序必須指定一個(gè)命令碼,對PLC緩存器數(shù)據(jù)寫入,查的該命令碼為“47”,解釋為:連續(xù)多個(gè)緩存器之?dāng)?shù)據(jù)寫入。寫入R0的PC命令的ASCII碼寫法為:   “STX+ 01(站號)+47(命令碼)+01(連續(xù)數(shù)據(jù)個(gè)數(shù))+R00000(數(shù)據(jù)開始地址)+XXXX(寫入的數(shù)據(jù)資料,16進(jìn)制)+LRC(偵誤值)+ETX”    讀取當(dāng)前值CV=R1,程序如下   Private Sub Timer1_Timer()   MSComm1.Output= Chr(2)+ “014601R00001”+ Lrc(“014601R00001”)+Chr(3)   Delay (10) //延時(shí)    CV = Val(&H + Mid(MSComm1.Input, 7, 4)) //數(shù)據(jù)處理,R0放于CV    CV.Text = CV   End Sub    寫入設(shè)定值PV=R0,程序如下   Private Sub Command1_Click()    If Len(Hex(PV.Text)) = 4 Then PV = Hex(PV.Text)    If Len(Hex(PV.Text)) = 3 Then PV = 0 + Hex(PV.Text    If Len(Hex(PV.Text)) = 2 Then PV = 00 + Hex(PV.Text)    If Len(Hex(PV.Text)) = 1 Then PV = 000 + Hex(PV.Text) //10進(jìn)制轉(zhuǎn)換16進(jìn)制   MSComm1.Output=Chr(2)+ “014701R00000”+ PV + +Lrc(“014701R00000” & PV)+Chr(3)   End Sub   三.偵誤值(CHECKSUM)計(jì)算   為VB的編程方便,把該計(jì)算做成單獨(dú)一個(gè)子程序,依所有數(shù)據(jù)累加,舍棄進(jìn)位的規(guī)則VB的LRC編程如下:   Private Function Lrc(Dats) As String    Dim i    Dim Sum    Sum =2    For i = 1 To Len(Dats)    Sum = Sum + Asc(Mid(Dats, i, 1))    Next i    Lrc = Right(0 + Hex(Sum + 2), 2)   End Function 5結(jié)束語   采用基于MODEM通訊的設(shè)計(jì)極方便地實(shí)現(xiàn)該小電站生廠調(diào)度,在這種只需短時(shí)間連接控制的系統(tǒng)應(yīng)用上可以大幅度地減小通訊成本,具有一定的推廣價(jià)值。另外,通過MODEM的連接,利用永宏編程軟件可以實(shí)現(xiàn)該設(shè)備的遠(yuǎn)程程序調(diào)試修改,通過兩個(gè)MODEM還可以實(shí)現(xiàn)兩臺遠(yuǎn)程PLC的CPU連接通訊等。

標(biāo)簽:

點(diǎn)贊

分享到:

上一篇:灘海鉆井裝備與設(shè)施信息管理...

下一篇:微能WIN-V63矢量控制變頻器在...

中國傳動網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來源:中國傳動網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國傳動網(wǎng)(m.u63ivq3.com)獨(dú)家所有。如需轉(zhuǎn)載請與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個(gè)人轉(zhuǎn)載使用時(shí)須注明來源“中國傳動網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請保留稿件來源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。

網(wǎng)站簡介|會員服務(wù)|聯(lián)系方式|幫助信息|版權(quán)信息|網(wǎng)站地圖|友情鏈接|法律支持|意見反饋|sitemap

傳動網(wǎng)-工業(yè)自動化與智能制造的全媒體“互聯(lián)網(wǎng)+”創(chuàng)新服務(wù)平臺

網(wǎng)站客服服務(wù)咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2024 ,All Rights Reserved 深圳市奧美大唐廣告有限公司 版權(quán)所有
粵ICP備 14004826號 | 營業(yè)執(zhí)照證書 | 不良信息舉報(bào)中心 | 粵公網(wǎng)安備 44030402000946號