技術(shù)頻道

      Delphi的MSCOMM實(shí)現(xiàn)上位機(jī)與PLC間的串行通信(附源程序)

      隨著現(xiàn)代信息技術(shù)的發(fā)展以及計(jì)算機(jī)網(wǎng)絡(luò)的廣泛應(yīng)用,計(jì)算機(jī)通信技術(shù)已經(jīng)日趨成熟。作為傳統(tǒng)的計(jì)算機(jī)通信方式的串行通信,由于具有線路簡單、應(yīng)用靈活、可靠性高等一系列優(yōu)點(diǎn)長期以來獲得了廣泛的應(yīng)用。計(jì)算機(jī)串行通信在數(shù)據(jù)財(cái)經(jīng)、數(shù)據(jù)通信、故障檢測、計(jì)算機(jī)遠(yuǎn)程監(jiān)控等方面有廣泛的實(shí)用價值,特別在Windows下的串口通信可以充分利用Windows下的軟件資源優(yōu)勢,實(shí)現(xiàn)多任務(wù)條件下對外部的數(shù)據(jù)傳輸、信息收集和處理。在本系統(tǒng)中,我們采用了性能/價格比較高的計(jì)算機(jī)構(gòu)成廠級的監(jiān)控工作站。在PLC與上位計(jì)算機(jī)之間采用RS-485RS-232C標(biāo)準(zhǔn)通信接口進(jìn)行通信。

      在兩級計(jì)算機(jī)控制系統(tǒng)中,最不穩(wěn)定的環(huán)節(jié)就是上位機(jī)。為了保證系統(tǒng)的穩(wěn)定性,避免因上位機(jī)的故障導(dǎo)致系統(tǒng)控制失靈,所有采集到的信號都反饋到PLC當(dāng)中。上位機(jī)需要通過串行通信取得所需的數(shù)據(jù)信息,并通過串行通信將必要的控制信息和參數(shù)設(shè)置信息寫入PLC的數(shù)據(jù)存儲區(qū)。因此,串行通信作為上位機(jī)和下位機(jī)聯(lián)系的唯一方式,在整個系統(tǒng)中具有非常重要的作用。

      1.1上位機(jī)與PLC間的串行通信

      計(jì)算機(jī)與計(jì)算機(jī)或計(jì)算機(jī)與外部設(shè)備之間的數(shù)據(jù)傳輸和交換的方式主要有串行通信和并行通信兩種方式,其中串行通信指的是數(shù)據(jù)逐位傳輸?shù)姆绞健S捎诖型ㄐ欧绞骄哂惺褂镁€路少、成本低,特別是在遠(yuǎn)程傳輸時,避免了多條線路特性的不一致而被廣泛采用。

      1.1.1串行通信

      串行通信方式又可分為兩種:同步串行通信方式和異步串行通信方式。

      1.同步串行通信方式:同步串行通信是以數(shù)據(jù)塊(字符塊)為信息單位傳送,每幀信息可以包含很多字符。同步通信要求通信雙方以相同的速率進(jìn)行,而且要準(zhǔn)證確協(xié)調(diào),通常通過共享一個時鐘或定時脈沖源保發(fā)送方和接收方準(zhǔn)確同步。這種通信方式的效率較高,但是對時鐘同步要求非常嚴(yán)格,成本較高。

      2.異步串行通信方式:異步串行通信以字符為信息單位傳送。雙方需要遵守異步通信協(xié)議,以字符為數(shù)據(jù)單位,發(fā)送方傳送字符的時間間隔不確定。每個字符傳輸都以起始位開始,以停止位結(jié)束。通信雙方所指定的字符的數(shù)據(jù)位數(shù),奇偶校驗(yàn)方法和停止位數(shù)必須相同。其傳輸效率比同步通信方式低,但是成本較低。

      異步通信是在以起始位開始、停止位結(jié)束的一個字符內(nèi)按約定的頻率進(jìn)行同步接收。各個字符之間允許有間隙,而且兩個字符之間的間隔是不固定的。在同步通信方式中,不僅同一字符中的相鄰兩位間的時間間隔要相等,而且相鄰字符間的時間間隔也要求相等,這也是同步通信和異步通信方式的主要差別所在。

      因此,異步串行通信一般用在數(shù)據(jù)傳送時間不能確知,發(fā)送數(shù)據(jù)不連續(xù),數(shù)據(jù)量較少和數(shù)據(jù)傳輸速率較低的場合;而同步串行通信則用在要求快速、連續(xù)傳輸大批量數(shù)據(jù)的場合。

      1.1.2串行通信接口標(biāo)準(zhǔn)

      在串行通信時,要求通信雙方都采用一個標(biāo)準(zhǔn)接口,使不同的設(shè)備可以方便地連接起來進(jìn)行通信。在設(shè)計(jì)通信接口時,一般都采用標(biāo)準(zhǔn)接口以提高其通用性。本系統(tǒng)中,上、下位機(jī)進(jìn)行通信首先面臨的問題就是通信標(biāo)準(zhǔn)的選擇問題。

      1RS-232C接口標(biāo)準(zhǔn)

      RS-232C接口標(biāo)準(zhǔn)(全稱EIA-RS-232C標(biāo)準(zhǔn))是在1969年由美國電子工業(yè)聯(lián)合會(EIAElectronic Industrial Associate-Recommended Standard-232C)與Bell公司、調(diào)制解調(diào)器廠家及計(jì)算機(jī)終端生產(chǎn)廠家共同開發(fā)的用于串行接口的通信協(xié)議。它最初是為遠(yuǎn)程通信連接數(shù)據(jù)終端設(shè)備DTEData Terminal Equipment)和數(shù)據(jù)通信設(shè)備DCEData Communication Equipment)而制定的[46]。雖然這個標(biāo)準(zhǔn)的制定沒有考慮計(jì)算機(jī)系統(tǒng)的應(yīng)用要求,但是廣泛的用于計(jì)算機(jī)與終端或外設(shè)之間的連接。

      RS-232C標(biāo)準(zhǔn)規(guī)定了在串行通信時,數(shù)據(jù)終端設(shè)備和數(shù)據(jù)通信設(shè)備之間的接口信號。其中常用信號的名稱、引腳號以及功能如表4-1所示。

      4-1 RS-232C常用信號定義

      引腳號

      信號名稱

      簡稱

      信號功能說明

      2

      發(fā)送數(shù)據(jù)

      TxD

      DTEDCE發(fā)送串行數(shù)據(jù)

      3

      接收數(shù)據(jù)

      RxD

      DTEDCE接收串行數(shù)據(jù)

      4

      請求發(fā)送

      RTS

      請求通信設(shè)備切換到發(fā)送方向

      5

      清除發(fā)送

      CTS

      響應(yīng)DTE請求,提示DCE開始發(fā)送

      6

      數(shù)據(jù)設(shè)備就緒

      DSR

      DCE通信設(shè)備就緒

      7

      信號地

      SG

      整個電路的公共信號地

      8

      數(shù)據(jù)載波檢測

      DCD

      DCE收到載波

      20

      數(shù)據(jù)終端就緒

      DTR

      DTE終端設(shè)備就緒

      22

      振鈴

      RI

      通信線路上有振鈴

      RS-232C的電氣特性:RS-232C采用的是負(fù)邏輯工作,即邏輯“1”用負(fù)電壓(-3~-15V)表示,邏輯“0”用正電壓(+3~+15V)表示。介于-3V+3V之間以及低于-15V或高于+15V的電壓沒有意義。實(shí)際工作時,應(yīng)保證電平在±(5~15)V之間。由于RS232C是用正負(fù)電壓來表示邏輯狀態(tài),與以高低電平表示邏輯狀態(tài)的TTL不同。為了能夠同計(jì)算機(jī)接口或終端的TTL器件連接,必須進(jìn)行電平和邏輯關(guān)系的轉(zhuǎn)換。目前使用較為廣泛的是集成電路轉(zhuǎn)換器件,如MC1488MC1489

      RS-232C的機(jī)械特性:雖然RS-232標(biāo)準(zhǔn)定義了25個信號,但進(jìn)行異步通信時實(shí)際只用到了9個信號:2個數(shù)據(jù)信號、6個控制信號和1個信號地線。因此RS-232的連接器主要有DB25DB9兩種類型。現(xiàn)在微型計(jì)算機(jī)上均采用DB9型連接器作為主板上COM1COM2兩個串行口的連接器,其引腳及信號分配如圖4-2所示。

      3RS-485接口標(biāo)準(zhǔn)

      RS-485標(biāo)準(zhǔn)也是一種平衡傳輸方式的串行接口標(biāo)準(zhǔn),它和RS-422A兼容并且擴(kuò)展了RS-422A的功能。

      RS-485的電氣特性:邏輯“1”以兩線間的電壓差為+(26)V表示;邏輯“0”以兩線間的電壓差為-(2-6)V表示。接口信號電平比RS-232C降低了,就不易損壞接口電路的芯片,且該電平與TTL電平兼容,可方便與TTL電路連接。數(shù)據(jù)最高傳輸速率為10MbpsRS-485接口是采用平衡驅(qū)動器和差分接收器的組合,抗共模干擾能力增強(qiáng),即抗干擾性好。RS-485接口的最大傳輸距離標(biāo)準(zhǔn)值為4000英尺,實(shí)際上可達(dá)3000米。RS-485接口在總線上是允許連接多達(dá)128個收發(fā)器,具有多站能力,用戶可以利用它建立起設(shè)備網(wǎng)絡(luò)。RS-485接口由于具有良好的抗干擾性、傳輸距離長和多站能力等優(yōu)點(diǎn)使其成為首選的串行接口。

      本系統(tǒng)中,上位機(jī)和下位機(jī)的通信運(yùn)用了以上標(biāo)準(zhǔn)中的RS485RS232C兩種通信標(biāo)準(zhǔn)。計(jì)算機(jī)具有標(biāo)準(zhǔn)RS232C接口,而PLC具有標(biāo)準(zhǔn)RS485接口,兩者通過電纜和RS485/RS232C轉(zhuǎn)換模塊連接(如圖所示4-3)。

      1.2通訊參數(shù)設(shè)置和通訊測試界面

      在供水自動化監(jiān)控系統(tǒng)中,信息管理及監(jiān)控軟件作為處理、顯示和存儲數(shù)據(jù)的核心,主要負(fù)責(zé)對各個電動機(jī)的轉(zhuǎn)速和各處管道壓力的查詢、監(jiān)控以及報警的處理。運(yùn)行信息管理及監(jiān)控軟件的計(jì)算機(jī)與PLC之間的通訊主要是通過RS-232C串行接口(PC機(jī)一般提供了COM1COM2兩個串行口)進(jìn)行通訊,實(shí)現(xiàn)系統(tǒng)的監(jiān)測控制和信息管理功能。

      本系統(tǒng)中上位機(jī)的信息管理及監(jiān)控軟件運(yùn)行在Windows2000/NT操作系統(tǒng)下,串行通訊程序運(yùn)用Inprise公司推出的快速開發(fā)工具Delphi 6.0開發(fā)。PPI通信協(xié)議是西門子專為S7-200系列PLC開發(fā)的一個通信協(xié)議,物理上采用RS485信號電平,PLC默認(rèn)處于該方式。使用PPI方式對PLC編程及調(diào)試監(jiān)控,其硬件連接只需通過編程(PC/PPI)電纜即可實(shí)現(xiàn)。軟件編程采用中文環(huán)境、內(nèi)部系統(tǒng)協(xié)議,設(shè)計(jì)人員只需通過軟件設(shè)置一下參數(shù),數(shù)據(jù)如交換不需要考慮,用NETRNETW兩條語句即可進(jìn)行數(shù)據(jù)的傳遞。

      1.2.1通訊參數(shù)設(shè)置

      為了進(jìn)行串口通信,實(shí)現(xiàn)系統(tǒng)的監(jiān)測控制和信息管理功能,必須對通訊參數(shù)加以設(shè)置。

      通信設(shè)置:

      串口:COM1COM2

      波特率:3006001200...

      校驗(yàn)方法:NEMOS

      數(shù)據(jù)位數(shù)

      停止位數(shù):

      Setting

      緩沖區(qū)設(shè)置

      接收緩沖區(qū):字節(jié)

      發(fā)送緩沖區(qū):字節(jié)

      數(shù)據(jù)傳送方式

      文本形式和二進(jìn)制形式

      流控制

      不握手(默認(rèn))、XON/XOFF方式、

      RTS/CTS方式、 XON/XOFF AND RTS/CTS方式

      1.2.2通訊測試界面

      通信測試界面如圖4-5所示。

      通訊設(shè)置

      Setting屬性值

      commport屬性值

      通訊狀態(tài)

      串口狀態(tài)

      發(fā)送字節(jié)數(shù)

      接收字節(jié)數(shù)

      數(shù)據(jù)顯示

      接收數(shù)據(jù)顯示

      發(fā)送數(shù)據(jù)顯示

      1.3 PLC通信程序設(shè)計(jì)

      1.3.1 PLC網(wǎng)絡(luò)通信協(xié)議[19]

      本系統(tǒng)采用的PLC是德國SIEMENS公司生產(chǎn)的S7-200系列,主模塊采用CPU226,擴(kuò)展模塊采用數(shù)字量擴(kuò)展模塊EM222和模擬量擴(kuò)展模塊EM235

      S7-200系列CPU具有強(qiáng)大的通信能力。主要支持以下幾種協(xié)議:

      1PI(Point-to-Point)協(xié)議,即點(diǎn)到點(diǎn)接口協(xié)議。PPI是一個主/從協(xié)議,主站(其它CPUSIMATIC編程器)給從站發(fā)送申請,從站進(jìn)行響應(yīng)。從站不初始化信息,只響應(yīng)主站的申請或查詢。如果在用戶程序中允許PPI主站模式,S7-200 CPURUN模式下可以作為主站,還可以利用網(wǎng)絡(luò)讀(NETR)和網(wǎng)絡(luò)寫(NETW)指令讀寫其他CPU,同時也能夠作為從站響應(yīng)來自其它主站的申請。采用PPI協(xié)議的網(wǎng)絡(luò)中最多只能有32個主站。該協(xié)議主要是用來編程、PPI組網(wǎng)等

      2MPI(Multi-Point)協(xié)議,即多點(diǎn)接口協(xié)議。MPI可以是主/主協(xié)議或主/從協(xié)議,協(xié)議如何操作依賴于設(shè)備類型(設(shè)備是S7-200系列CPU時建立主/從連接)。MPI總在兩個相互通信的設(shè)備之間建立連接,其它主站不能干涉兩個設(shè)備之間已建立的連接。由于S7-200的連接是非公用的,并且需要CPU中的資源,每個S7-200 CPU只能支持4個連接,每個EM277模塊支持6個連接。在使用時,每個S7-200 CPUEM277模塊保留兩個連接,分別用于連接SIMATIC編程器(或計(jì)算機(jī))以及操作面板。這些保留連接不能被其它類型的主站使用。

      3ROFIBUS協(xié)議。PROFIBUS協(xié)議設(shè)計(jì)用于分布式I/O設(shè)備(遠(yuǎn)程I/O)的高速通信。PROFIBUS網(wǎng)絡(luò)通常有一個主站和幾個I/O從站,主站配置成知道所連接的I/O從站的型號和地址。主站初始化網(wǎng)絡(luò)并核對網(wǎng)絡(luò)上的從站設(shè)備和配置中的是否匹配。主站連續(xù)的把輸出數(shù)據(jù)寫到從站并從它們讀取輸入數(shù)據(jù)。

      4.戶自定義協(xié)議(自由口協(xié)議)。自由口協(xié)議可以由用戶定義通訊協(xié)議,通過用戶程序控制S7-200通信口的操作模式,將CPU與任意通訊協(xié)議公開的設(shè)備聯(lián)網(wǎng),如上位計(jì)算機(jī)、打印機(jī)、變頻器等。用戶程序通過使用接收中斷、發(fā)送中斷、發(fā)送指令(XMT)和接收指令(RCV)來控制通信口的操作。在自由口模式下,通信協(xié)議完全由用戶程序控制。用戶程序通過設(shè)置SMB30(0)允許自由口模式,而且只有在CPU處于RUN模式時才能允許。當(dāng)CPU處于STOP模式時,自由口通信停止,通信口轉(zhuǎn)換成正常的PPI協(xié)議操作。

      可以利用PC/PPI電纜和自由口通信功能把S7-200 CPU連接到許多和RS-232標(biāo)準(zhǔn)兼容的設(shè)備。PC/PPI電纜支持波特率設(shè)置,利用PC/PPI電纜盒上的DIP開關(guān)可以配置所需的波特率。波特率和開關(guān)位置的對應(yīng)關(guān)系如表4-6所示:

      4-6波特率和開關(guān)位置對應(yīng)表

      波特率

      38400

      19200

      9600

      4800

      2400

      1200

      600

      300

      開關(guān)(1=)

      000

      001

      010

      011

      100

      101

      110

      111

      當(dāng)數(shù)據(jù)從RS-232傳送到RS-485口時,PC/PPI電纜是發(fā)送模式。當(dāng)數(shù)據(jù)從RS-485傳送到RS-232口時,PC/PPI電纜是接收模式。當(dāng)檢測到RS-232的發(fā)送線有字符時,電纜立即從接收模式轉(zhuǎn)換到發(fā)送模式。當(dāng)RS-232發(fā)送線處于閑置的時間超過電纜切換時間時,電纜又切換到接收模式。這個時間與電纜上的DIP開關(guān)設(shè)定的波特率選擇有關(guān),如表4-7所示:

      4-7 PC/PPI電纜轉(zhuǎn)換時間(發(fā)送模式到接收模式)

      38400

      19200

      9600

      4800

      2400

      1200

      600

      轉(zhuǎn)換時間(ms)

      0.5

      1

      2

      4

      7

      14

      28

      在使用自由口的系統(tǒng)中使用PC/PPI電纜時,必須在S7-200 CPU的用戶程序中包含轉(zhuǎn)換時間。S7-200 CPU在接收到RS-232設(shè)備的申請信息后,S7-200 CPU的發(fā)送信息響應(yīng)必須延遲超過或等于電纜的切換時間。RS-232設(shè)備在接收到RS-232設(shè)備的申請信息后,S7-200 CPU的下一次申請信息的發(fā)出必須延遲超過或等于電纜的切換時間。在以上兩種情況中,需要通過延遲使PC/PPI電纜有足夠的時間從發(fā)送模式切換到接收模式,以便于數(shù)據(jù)從RS-485口傳送到RS-232口。

      1.3.2 PLC通信程序設(shè)計(jì)

      PLC作為控制系統(tǒng)中的下位機(jī),不主動發(fā)送數(shù)據(jù)而是被動的響應(yīng)上位機(jī)的命令,根據(jù)上位機(jī)的指令進(jìn)行數(shù)據(jù)發(fā)送和接收。PLC中的通信程序由主程序、三個子程序和三個中斷組成,通信程序的流程如圖4-4所示。

      1、主程序

      PLC在第一次掃描時執(zhí)行初始化子程序,對端口及RCV指令進(jìn)行初始化。初始化完成后,使端口處于接收狀態(tài)。RCV指令將接收到的數(shù)據(jù)保存到接收緩沖區(qū),同時產(chǎn)生接收完成中斷。PLC每接收到一條指令后都會發(fā)送一條反饋信息,發(fā)送完成后產(chǎn)生發(fā)送完成中斷。程序中使用的標(biāo)志位含義約定如下:

      M0.0BCC校驗(yàn)正確則置位;

      M0.1Verify子程序的觸發(fā)條件,被置位表示進(jìn)行BCC校驗(yàn)。

      //主程序

      LD SM0.1

      CALL Init

      LDB= VB117, VB150 //接收數(shù)據(jù)

      AB= VB103, 16#05

      A M0.0

      CALL Recv

      LDB= VB117, VB150 //發(fā)送數(shù)據(jù)

      AB= VB103, 16#06

      A M0.0

      CALL Send

      LD M0.1 //校驗(yàn)

      CALL Verify

      LD SM4.5

      RCV VB100, 0

      2、通信初始化子程序(Init

      本系統(tǒng)采用自由口通信,通信協(xié)議為自定義的。用戶可以通過設(shè)置PLC中相應(yīng)的特殊寄存器SMB30等的參數(shù)改變485口的波特率、數(shù)據(jù)格式(數(shù)據(jù)位數(shù)、停止位、校驗(yàn)),以適應(yīng)不同的通訊協(xié)議。PLC采用了特殊存儲器(SM)標(biāo)志位,提供大量的狀態(tài)和控制功能,并且能夠使CPU和用戶程序之間交換信息。

      SMB30SMB130是自由端口控制寄存器。SMB30控制自由端口0的通信方式,SMB130控制自由端口1的通信方式。這兩個寄存器是用來設(shè)置自由端口通信的操作方式,并提供自由端口或者系統(tǒng)所支持的協(xié)議之間的選擇。Pp用于校驗(yàn)選擇,0010表示不校驗(yàn),01表示奇校驗(yàn),11表示偶校驗(yàn)。d用于指定每個字符的數(shù)據(jù)位,0表示8位字符,1表示7位字符。bbb用于選擇自由口通信的波特率,其含義同表4-2mm用于協(xié)議選擇,00表示PPI/從站模式,01表示自由口協(xié)議,10表示PPI/主站模式,11保留不用。

      SMB87SMB187用于控制接收信息的標(biāo)志;SMB88SMB188用于指定開始的信息字符;SMB88SMB188用于指定

      文章版權(quán)歸西部工控xbgk所有,未經(jīng)許可不得轉(zhuǎn)載。

      主站蜘蛛池模板: 国产麻豆精品一区二区三区| 亚洲av午夜福利精品一区| 国偷自产av一区二区三区| 日韩电影一区二区| 日本福利一区二区| 久久精品亚洲一区二区三区浴池| 一区二区3区免费视频| 国产精品久久亚洲一区二区| 伊人久久大香线蕉AV一区二区| 亚洲一区中文字幕久久| 日本精品高清一区二区| 久久综合一区二区无码| 一区二区国产在线播放| 国产一区二区三区精品久久呦| 久久青青草原一区二区| 亚洲日韩AV一区二区三区四区 | 亚洲狠狠久久综合一区77777| 国产亚洲一区二区三区在线不卡 | 精品人妻少妇一区二区| 多人伦精品一区二区三区视频| 麻豆AV无码精品一区二区| 精品亚洲AV无码一区二区三区| 久久精品免费一区二区| 国产91精品一区二区麻豆网站| 亚洲国产日韩在线一区| 亚洲国产欧美国产综合一区| 亚洲国产AV无码一区二区三区| 久久久久人妻精品一区三寸| 无码人妻一区二区三区av| 国产伦精品一区二区三区免费下载 | 日韩精品一区二区三区国语自制 | 熟妇人妻系列av无码一区二区| 中文字幕永久一区二区三区在线观看 | 久久一区二区三区精品| 国产精品制服丝袜一区| 国精产品一区一区三区MBA下载| 国产一区二区精品久久91| 久久精品无码一区二区日韩AV| 亚洲AV无码一区东京热久久| 国产精品合集一区二区三区| 精品国产天堂综合一区在线|