當(dāng)前位置:機(jī)電之家首頁 >> PLC技術(shù)>> PLC文案資料 >> PLC試題庫 >> Neza PLC實(shí)現(xiàn)與上位機(jī)通訊
Neza PLC實(shí)現(xiàn)與上位機(jī)通訊

1  引言
    PLC以其高可靠性、適應(yīng)工業(yè)過程現(xiàn)場(chǎng)、強(qiáng)大的聯(lián)網(wǎng)功能等特點(diǎn)被廣泛使用,是機(jī)電一體化的發(fā)展方向。bbbbbbs以圖形化界面給用戶提供了良好的人機(jī)界面,并且被很多人所掌握,所以我們考慮使用PLC作為工業(yè)控制下位機(jī),使用PC作為上位機(jī)進(jìn)行人機(jī)交互界面。這就涉及了使用PC如何控制PLC,PC如何與PLC進(jìn)行通訊的問題。

    以Schneider公司的TSX Neza系列PLC為例,上位PC機(jī)與PLC通訊進(jìn)行一些探討。

2  計(jì)算機(jī)與Neza PLC通訊方式。
    Neza系列PLC提供了三種通訊方式,分別為:Modbus方式、ASCII方式、Unibbbway方式。
(1) Modbus方式
    MODBUS是Schneider公司為該公司生產(chǎn)的PLC設(shè)計(jì)的一種通信協(xié)議,通過24種總線命令實(shí)現(xiàn)PLC與外界的信息交換。具有Modbus協(xié)議的PLC可以方便的進(jìn)行組態(tài)。
使用Modbus進(jìn)行PLC通訊時(shí)需要使用PLC的擴(kuò)展口,而多個(gè)PLC進(jìn)行通訊時(shí)也要使用這唯一的擴(kuò)展口,也就是如果使用Modbus進(jìn)行通訊時(shí)PLC無法與其他PLC進(jìn)行通訊。Schneider公司早期產(chǎn)品不支持該協(xié)議。

(2) Unibbbway方式
    Unibbbway是基于Schneider公司的Xway通訊協(xié)議的,經(jīng)過發(fā)展現(xiàn)在Neza使用的是Unibbbway V2,它與UnibbbwayV1.1基本兼容。通過Unibbbway提供的各項(xiàng)命令我們可以方便的訪問PLC的各項(xiàng)資源,對(duì)PLC進(jìn)行各項(xiàng)操作。在Modicon公司NAZA系列PLC中編好的程序就是使用Unibbbway下載入PLC。Unibbbway使用編程口并不占用擴(kuò)展口。在通訊方式中Unibbbway是最為理想的方式,但是Unibbbway協(xié)議并沒有完全公開,一般用戶無法使用。

(3) ASCII方式
    ASCII碼方式在很多PLC上都可以使用名稱也不一而足:ASCII方式、自由口模式等等。在自由口模式下,通信協(xié)議是由用戶定義的。用戶要根據(jù)自己的需要確定自己和PLC的通訊協(xié)議。自由碼也是使用編程口與上位機(jī)進(jìn)行通訊,并不占用擴(kuò)展口。但是它的通訊協(xié)議需要自己確定,需要在PLC編程和上位機(jī)中確定唯一的通訊方法。

3  通訊過程
每一次PC機(jī)和PLC數(shù)據(jù)交換有3個(gè)步驟,說明如下:
(1) 通訊是由在PLC中確定的時(shí)間觸發(fā), 發(fā)送一組字符給PC機(jī)
    在Neza系列PLC使用ASCII通訊時(shí),通訊是由在PLC中確定的時(shí)間觸發(fā)的。在確定的時(shí)間到達(dá)后,PLC要求數(shù)據(jù)發(fā)送時(shí),PLC會(huì)發(fā)送一組字符過去。通常該字符第一個(gè)字符就是前導(dǎo)碼,PC機(jī)根據(jù)前導(dǎo)碼確定是否應(yīng)該讀取該字符串、該字符屬于哪一個(gè)命令集合,以及用什么格式去讀取字符串等。前導(dǎo)碼不會(huì)是一般的符號(hào)字符,通常是一些不可見的字符(位于ASCII碼表的前30個(gè))或極少被使用的符號(hào)字符,這是因?yàn)楸苊鈹?shù)據(jù)字符與前導(dǎo)碼一樣而發(fā)生錯(cuò)誤判斷。在前導(dǎo)碼之后是站號(hào),通常是以兩個(gè)字符代表,單純以RS232連接的單一設(shè)備也許不需要站號(hào)的設(shè)置,但是如果以RS485進(jìn)行網(wǎng)絡(luò)連接,就需要用站號(hào)來辨認(rèn)命令是屬于那一個(gè)設(shè)備。站號(hào)后面就是設(shè)備解讀的命令或者數(shù)據(jù)。(本例為單機(jī)不需要站號(hào))一般的通訊都需要進(jìn)行數(shù)據(jù)的校驗(yàn),在Neza系列PLC使用ASCII通訊中,PLC沒有對(duì)數(shù)據(jù)的處理能力,所以沒有設(shè)置校驗(yàn)位。為了保證通訊的正確,可以在PC中對(duì)數(shù)據(jù)進(jìn)行一定處理。在數(shù)據(jù)后一般為這個(gè)幀的結(jié)束碼,來保證數(shù)據(jù)幀的完整性。

(2) PC收到要求的字符串,并判讀
    當(dāng)PC收到要求的字符串,并經(jīng)過判讀確定后,同樣按照相同的協(xié)議,按照用戶需要對(duì)PLC進(jìn)行的操作送出數(shù)據(jù),數(shù)據(jù)被送出時(shí)會(huì)在數(shù)據(jù)之前加上前導(dǎo)碼和站號(hào)。數(shù)據(jù)中攜帶了PC機(jī)對(duì)PLC要求的操作。

(3) PLC將數(shù)據(jù)發(fā)給PC
    在 PLC收到PC發(fā)來的數(shù)據(jù)包后經(jīng)過判讀確定后,進(jìn)行一定的操作然后在觸發(fā)時(shí)間到達(dá)后將PLC的狀態(tài)寫入數(shù)據(jù)發(fā)給PC,這樣就完成了一次數(shù)據(jù)交換。

4  應(yīng)用實(shí)例
    下面介紹所開發(fā)的系統(tǒng)是由下位機(jī)(PLC)—上位機(jī)(PC)組成,系統(tǒng)框圖如圖1所示。程序使用VB6,整個(gè)程序設(shè)計(jì)分為四部分:上位機(jī)程序設(shè)計(jì);下位機(jī)程序設(shè)計(jì);通訊硬件設(shè)計(jì);通訊協(xié)議。


圖1    系統(tǒng)框圖


(1) 通訊格式的確定
作者使用的通訊參數(shù):9600波特率,8位數(shù)據(jù)位、1位停止位,奇校驗(yàn)。本實(shí)例中定義整個(gè)幀長(zhǎng)22個(gè)字節(jié)。
幀格式:

[NextPage]

(2) 上位機(jī)程序設(shè)計(jì)
    上位機(jī)程序設(shè)計(jì)包括兩個(gè)模塊:用戶應(yīng)用程序和串行通訊程序.用戶應(yīng)用程序是圖形化的供用戶操作的界面。串行通訊程序是底層運(yùn)行的程序,它負(fù)責(zé)與下位機(jī)的通訊。
上位機(jī)通訊程序:
Sub bbbb_Load() ‘窗體加載打開串口
MSComm1.PortOpen = True
Mscomm1.settings="9600,o,8,1"
End Sub
Sub MSComm1_OnComm() ‘有數(shù)據(jù)輸入
If MSComm1.CommEvent = comEvReceive Then
If MSComm1.InBufferCount = 22 Then
     buffer = MSComm1.bbbbb
  If buffer(0) = &HFF And buffer(1) = &HFF And buffer(21) = &HCC Then
  Call StateToBuffer‘將讀入的數(shù)據(jù)讀入應(yīng)
      ‘用程序處理
  Call IniState     ‘初始化狀態(tài)
  Call StateToBuffer‘確定發(fā)送給PLC的
      ‘?dāng)?shù)據(jù)
  MSComm1.Output =Buffer‘發(fā)出數(shù)據(jù)
     Else
   MSComm1.InBufferCount = 0
     End If 
Else
MSComm1.InBufferCount = 0
MSComm1.PortOpen = False‘通訊失敗關(guān)閉串口
‘然后重新打開
MSComm1.PortOpen = True
End If
End Sub

(3) 下位機(jī)程序設(shè)計(jì)
    下位機(jī)程序設(shè)計(jì)指使用PLC編程軟件對(duì)PLC進(jìn)行編程,實(shí)現(xiàn)對(duì)電機(jī)的控制。
當(dāng)TSX Neza處于ASCII模式時(shí),狀態(tài)位%S100置為“1”。發(fā)送與接受由%MSG模塊與EXCH指令組成。%MSG模塊用來控制數(shù)據(jù)交換,EXCH指令用來控制數(shù)據(jù)交換。發(fā)送或接收幀的最大為128字節(jié)。
EXCH指令由控制區(qū)、發(fā)送區(qū)、接收區(qū)組成,如表1所示。EXCH指令有3個(gè)用途:發(fā)送;發(fā)送/接收;接收。
表1   EXCH指令

[NextPage] 
    控制區(qū)高位字節(jié)為命令,低位字節(jié)為發(fā)長(zhǎng)度LgT/LgR,長(zhǎng)度字節(jié)表示發(fā)送字符的長(zhǎng)度(LgT),在接收的結(jié)尾被改寫為接收字符的長(zhǎng)度(LgR)。當(dāng)接收到幀的末尾字節(jié)后結(jié)束接收。結(jié)束碼可以為用戶修改(系統(tǒng)字%SW68的低位字節(jié))。該字節(jié)默認(rèn)值為H0D。

    在使用EXCH指令的發(fā)送模式,僅需要有控制區(qū)與發(fā)送區(qū),TSX Neza僅傳送發(fā)送區(qū)的數(shù)據(jù)。
在使用EXCH指令的發(fā)送/接收模式時(shí),先發(fā)送,在發(fā)送結(jié)束時(shí)TSX Neza切換為等待接收的狀態(tài)。如果接收狀態(tài)正常且詢問長(zhǎng)度(LgT)和響應(yīng)(LgR)的長(zhǎng)度都小于%Mwi保留區(qū)(長(zhǎng)度L),那么等接收到響應(yīng)后,把它復(fù)制到與發(fā)送表相關(guān)的%Mwi區(qū)。如果不是這種情況,則位%MSG.E變?yōu)?。當(dāng)檢測(cè)到結(jié)束碼或接收區(qū)滿了時(shí),接收結(jié)束。

    在使用EXCH指令的接收模式,僅需要有控制區(qū)和接收區(qū),TSX Neza僅接收數(shù)據(jù)。等接收到響應(yīng)后,把它復(fù)制到與發(fā)送表相關(guān)的%Mwi區(qū)。如果不是這種情況,則位%MSG.E變?yōu)?。當(dāng)檢測(cè)到結(jié)束碼或接收區(qū)滿了時(shí),接收結(jié)束。

    我們使用內(nèi)部字MW1作為控制區(qū),MW2至MW11作為發(fā)送區(qū),其中MW2、MW3作為前導(dǎo)碼。MW12至MW17作為接受區(qū)。在PLC程序中讀取內(nèi)部字作為工作的判定條件。

    本實(shí)例PLC每450ms與PC機(jī)通訊一次。

(4) 硬件部分
硬件包括RS232與RS485轉(zhuǎn)換,如果上位機(jī)與下位機(jī)距離遠(yuǎn)的話,還要考慮485總線上的干擾問題。
硬件設(shè)置:
TER端口可以在PLC配置對(duì)話框中修改;
類型:半雙工;
速率:9600bps;
格式:1個(gè)起始位,8個(gè)數(shù)據(jù)位、1個(gè)停止位。
校驗(yàn):ODD。

5  結(jié)束語
    本實(shí)例已經(jīng)在上海久事復(fù)興大廈、興業(yè)大廈污水處理系統(tǒng)中使用,效果良好。業(yè)主單位對(duì)上位機(jī)軟件良好的人機(jī)界面和穩(wěn)定的通訊功能表示非常滿意。

作者:未知 點(diǎn)擊:1435次 [打印] [關(guān)閉] [返回頂部]
本文標(biāo)簽:Neza PLC實(shí)現(xiàn)與上位機(jī)通訊
* 由于無法獲得聯(lián)系方式等原因,本網(wǎng)使用的文字及圖片的作品報(bào)酬未能及時(shí)支付,在此深表歉意,請(qǐng)《Neza PLC實(shí)現(xiàn)與上位機(jī)通訊》相關(guān)權(quán)利人與機(jī)電之家網(wǎng)取得聯(lián)系。
電子樣本

SN系列樣冊(cè)
:鞏經(jīng)理
:13915946763
:南京塞姆泵業(yè)有限公司
個(gè)人求購(gòu)

孫晉文 【求購(gòu)】  排氣閥  2025-12-30
馬經(jīng)理 【求購(gòu)】  信號(hào)集成端...  2025-12-30
李總 【求購(gòu)】  電動(dòng)升降車  2025-12-30
于蓬 【求購(gòu)】  HPV-S...  2025-12-29
張俊杰 【求購(gòu)】  縫紉線自動(dòng)...  2025-12-25
易賽群 【求購(gòu)】  NANOC...  2025-12-25
張經(jīng)理 【求購(gòu)】  浪涌保護(hù)器  2025-12-25
陳蓮 【求購(gòu)】  日本住友閥  2025-12-24
VIP公司推薦