国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

利用F E T C H/WR I T E方式實(shí)現(xiàn)計(jì)算機(jī)和西門子S 7P L C直接通訊

2014-04-16 09:28:01張世友
冶金動(dòng)力 2014年8期
關(guān)鍵詞:PC機(jī)西門子字節(jié)

張世友

(安徽馬鋼自動(dòng)化信息技術(shù)有限公司 ,安徽馬鞍山,243011)

1 前言

隨著PLC性價(jià)比的不斷提高,其應(yīng)用范圍不斷擴(kuò)大,特別是近年來(lái)PLC向著大型網(wǎng)絡(luò)化方向發(fā)展,已經(jīng)滲透到鋼鐵,化工電力,制造、運(yùn)輸?shù)雀鱾€(gè)行業(yè)中。針對(duì)PLC編程、計(jì)算能力有限及PC機(jī)大量應(yīng)用的情況,PC機(jī)與PLC的結(jié)合使用就成為必然趨勢(shì)。在各行各業(yè)的控制系統(tǒng)中西門子的S7 PLC被廣泛采用,由于西門子公司沒有公開西門子的S7以太網(wǎng)通訊協(xié)議,目前S7-400 PLC和PC機(jī)通訊的方式主要有以下幾種:

⑴通過(guò)西門子OPC服務(wù)器實(shí)現(xiàn)PC機(jī)和PLC通訊;

⑵利用西門子的SAPⅠ(西門子應(yīng)用程序編程接口)調(diào)用西門子提供的動(dòng)態(tài)鏈接庫(kù)函數(shù)來(lái)實(shí)現(xiàn)PC機(jī)應(yīng)用程序和PLC之間的數(shù)據(jù)之間交換。

⑶在PLC和PC機(jī)之間建立通訊連接,調(diào)用PLC的通訊功能塊,利用TCP/ⅠP協(xié)議之間和PC機(jī)進(jìn)行通訊。

⑷在利用FETCH/WRⅠTE方式實(shí)現(xiàn)PLC和PC機(jī)之間通訊,直接讀取PLC的M區(qū)、Ⅰ區(qū)、Q區(qū)、DB區(qū)等區(qū)域內(nèi)的任何數(shù)據(jù)。

在以上四種方式雖然都能和PLC實(shí)現(xiàn)數(shù)據(jù)交換,前三種通訊方式有的要安裝數(shù)量不等的西門子軟件,有的只能交換某一特定數(shù)據(jù)塊的數(shù)據(jù),增加系統(tǒng)的軟件成本和調(diào)試維護(hù)的難度;而第四種利用Windows操作系統(tǒng)中的 TCP/ⅠP協(xié)議和 PLC的FECTH/WRⅠTE通訊方式直接實(shí)現(xiàn)PLC和PC的數(shù)據(jù)交換,不僅節(jié)省了系統(tǒng)的軟件成本,同時(shí)加快了系統(tǒng)的響應(yīng)速度,可以讀S7 PLC中所有區(qū)域內(nèi)的數(shù)據(jù)。

2 S 7P L C端的通訊

TCP/ⅠP是當(dāng)前應(yīng)用最為廣泛的通訊協(xié)議,廣泛應(yīng)用于各種PC網(wǎng)絡(luò);西門子的工業(yè)以太網(wǎng)卡如CP443-1也支持TCP/ⅠP協(xié)議,為S7 PLC和PC通訊提供了硬件基礎(chǔ)。TCP/ⅠP協(xié)議實(shí)現(xiàn)了兩種通訊方式:面向連接的(TCP)通訊方式和無(wú)連接的(UDP)通訊方式;由于工業(yè)現(xiàn)場(chǎng)的數(shù)據(jù)都十分重要,為了保證通訊的準(zhǔn)確無(wú)誤,我們采用了面向連接的通訊方式。

2.1 S 7400-P L C的硬件及網(wǎng)絡(luò)組態(tài)

為了使S7400-PLC能夠和PC機(jī)進(jìn)行通訊,需要通過(guò)CP443-1以太網(wǎng)模塊,將S7400-PLC連到以太網(wǎng)上,同時(shí)設(shè)置好正確的ⅠP地址和網(wǎng)關(guān)等,進(jìn)入西門子硬件組態(tài),選擇CP443-1以太網(wǎng)模塊的屬性,在相應(yīng)的位置設(shè)置好ⅠP地址、網(wǎng)關(guān)和子網(wǎng)掩碼等相關(guān)信息;在西門子的網(wǎng)絡(luò)組態(tài)軟件(NET PRO)中要建立一個(gè)通訊連接,在網(wǎng)絡(luò)協(xié)議欄中選擇TCP協(xié)議,同時(shí)設(shè)置好本地通訊的端口,同時(shí)將連接的方式設(shè)置為FETCH/WRⅠTE方式,且PLC作為通訊服務(wù)器方。

2.2 S 7P L C端通訊程序的實(shí)現(xiàn)

利用FETCH/WRⅠTE方式,其他設(shè)備可以存取S7系統(tǒng)中的任何存儲(chǔ)期的數(shù)據(jù),進(jìn)行數(shù)據(jù)交換時(shí),在S7-400 PLC段不需要編寫任何程序,只需要按照要求設(shè)置好相應(yīng)的通訊連接,并且PC機(jī)按要FETCH和WRⅠTE的PDU的要求發(fā)送相應(yīng)的通訊請(qǐng)求報(bào)文PLC,PLC根據(jù)接受的請(qǐng)求報(bào)文后對(duì)請(qǐng)求報(bào)文解析處理,然后返回確認(rèn)數(shù)據(jù)報(bào)文或響應(yīng)數(shù)據(jù)報(bào)文,完成一次通訊操作。

為了通過(guò)FETCH/WRⅠTE方式和PC機(jī)通訊,必須要知道每個(gè)通訊報(bào)文的數(shù)據(jù)組成,S7請(qǐng)求報(bào)文的長(zhǎng)度有16個(gè)字節(jié)組成,分為向PLC寫數(shù)據(jù)的數(shù)據(jù)報(bào)文格式和從PLC讀取數(shù)據(jù)的數(shù)據(jù)報(bào)文格式。

2.2.1 向PLC寫數(shù)據(jù)的請(qǐng)求報(bào)文和相應(yīng)報(bào)文格式(見圖1)

寫數(shù)據(jù)請(qǐng)求報(bào)文由PC發(fā)送到PLC,主要包括:系統(tǒng)標(biāo)識(shí)、報(bào)頭長(zhǎng)度、操作代碼表示、操作代碼長(zhǎng)度、操作代碼等,這些內(nèi)容對(duì)每個(gè)報(bào)文都是固定的值,同時(shí)報(bào)文包括操作的區(qū)域(DB區(qū)、Ⅰ區(qū)、Q區(qū)、M區(qū)、C區(qū)、T區(qū))、數(shù)據(jù)塊號(hào)(在對(duì)DB區(qū)操作時(shí)有效,范圍為:1~255)、以字節(jié)為單位的起始地址、以字節(jié)為單位的數(shù)據(jù)長(zhǎng)度和要發(fā)送的具體數(shù)據(jù)。寫數(shù)據(jù)響應(yīng)報(bào)文由PLC發(fā)送到PC機(jī),確認(rèn)寫數(shù)據(jù)請(qǐng)求報(bào)文的處理情況,如果成功,則數(shù)據(jù)寫響應(yīng)報(bào)文的錯(cuò)誤代碼(Error field)為0,如果請(qǐng)求報(bào)文中的數(shù)據(jù)有誤,則通過(guò)寫數(shù)據(jù)響應(yīng)報(bào)文返回錯(cuò)誤代碼。

2.2.2 從PLC讀取數(shù)據(jù)的請(qǐng)求包和相應(yīng)包格式(見圖2)

圖1 寫數(shù)據(jù)報(bào)文及其響應(yīng)報(bào)文

圖2 讀數(shù)據(jù)請(qǐng)求報(bào)文及其相應(yīng)報(bào)文

讀數(shù)據(jù)請(qǐng)求報(bào)文由PC發(fā)送到S7 PLC,能夠讀取的數(shù)據(jù)區(qū)域和寫入數(shù)據(jù)相同,主要不同是操作代碼不同,其讀請(qǐng)求報(bào)文不含數(shù)據(jù)區(qū);讀響應(yīng)報(bào)文除了含有報(bào)文頭外,還包含請(qǐng)求數(shù)據(jù)包中所請(qǐng)求讀取的數(shù)據(jù),若錯(cuò)誤,則返回錯(cuò)誤代碼。

3 計(jì)算機(jī)端通訊程序

在WⅠNDDOWS操作系統(tǒng)下,通過(guò)WⅠNSOCK網(wǎng)絡(luò)編程接口,來(lái)實(shí)現(xiàn)應(yīng)用程序的網(wǎng)絡(luò)通訊功能;為了減少程序的CPU占用率和提高系統(tǒng)的實(shí)時(shí)性,采用了OverlappedⅠ/O(重疊式Ⅰ/O)Socket通訊方式。通常一臺(tái)PC機(jī)有可能和多臺(tái)PLC連接,為使程序高效執(zhí)行和減少程序設(shè)計(jì)的復(fù)雜性,將采用多線程技術(shù),PC機(jī)和不同PLC的通訊有不同的線程來(lái)完成,整個(gè)通訊程序采用VisualC++2005開發(fā)平臺(tái)下完成。

3.1 通訊程序的主要流程及程序?qū)崿F(xiàn)

PC機(jī)和一臺(tái)PLC通訊的功能都在一個(gè)線程函數(shù)中完成。主要過(guò)程有:首先初始化WinSocket通訊動(dòng)態(tài)連接庫(kù),然后創(chuàng)建套接字,并且將其綁定到TCP協(xié)議上;然后開始和PLC的以太網(wǎng)接口進(jìn)行建立連接;在連接建立好以后,開始向PLC發(fā)送讀或?qū)憯?shù)據(jù)的請(qǐng)求報(bào)文,并進(jìn)行Ⅰ/O重疊操作,等待PLC響應(yīng);測(cè)試有沒有數(shù)據(jù)發(fā)送,若有,則接受,若沒有,則繼續(xù)測(cè)試;整個(gè)程序的流程圖如圖3。

圖3 P C機(jī)通訊流程圖

為了和多個(gè)PLC進(jìn)行通訊,可以在通訊模塊中為每個(gè)PLC創(chuàng)建一個(gè)通訊線程,由不同的線程和不同的PLC進(jìn)行通訊,這樣便于系統(tǒng)的調(diào)試和維護(hù),同時(shí)程序設(shè)計(jì)時(shí)采用了通訊容錯(cuò)技術(shù),在PC機(jī)和PLC的網(wǎng)絡(luò)出現(xiàn)故障時(shí),PC機(jī)每隔30 s會(huì)和PLC建立通訊連接,只要PLC重新在線,不需要人工干預(yù),系統(tǒng)自動(dòng)恢復(fù)正常。

3.2 數(shù)據(jù)字節(jié)順序的處理

因S7400PLC和PC機(jī)的在整數(shù),浮點(diǎn)數(shù)等數(shù)據(jù)類型中高低字節(jié)順序正好使相反的,為了保證數(shù)據(jù)正確的傳輸,在PC機(jī)端需要對(duì)接受到的PLC數(shù)據(jù)和發(fā)送給PLC的數(shù)據(jù)進(jìn)行高低字節(jié)順序的對(duì)調(diào);利用C++語(yǔ)言中的union(聯(lián)合體)可以實(shí)現(xiàn)該功能,過(guò)程如下:首先定義聯(lián)合體S7Data,在聯(lián)合體內(nèi)部定義一個(gè)整型數(shù)(兩個(gè)字節(jié))變量iData、浮點(diǎn)數(shù)(四個(gè)字節(jié))變量fData和一個(gè)4個(gè)字節(jié)的char(字符)類型的數(shù)組變量cData[4],在數(shù)據(jù)接受自PLC或發(fā)往PLC整型數(shù)或浮點(diǎn)數(shù)分別聯(lián)合體的iData或fData變量中,然后將cData[4]中將高低字節(jié)順序顛倒,聯(lián)合體中的iData或fData(根據(jù)PLC數(shù)據(jù)類型)就是PLC中相應(yīng)數(shù)據(jù)的值了。

4 結(jié)論

為了便于控制系統(tǒng)和二級(jí)系統(tǒng)的集成,已經(jīng)將本技術(shù)開發(fā)成中間件,成功應(yīng)用于江陰興澄鐵鋼1#加熱爐三級(jí)系統(tǒng)、馬鋼車輪壓軋線機(jī)械手控制系統(tǒng),馬鋼(合肥)1#連續(xù)退火機(jī)組等生產(chǎn)線上,通過(guò)近幾年的運(yùn)行,證明該通訊方式非常簡(jiǎn)潔高效,保證了工藝數(shù)據(jù)和設(shè)定值的高效傳輸。

[1](美)Anthony Jones Jim Ohlund.Windows網(wǎng)絡(luò)編程技術(shù)[M].北京:機(jī)械工業(yè)出版社.2000

猜你喜歡
PC機(jī)西門子字節(jié)
No.8 字節(jié)跳動(dòng)將推出獨(dú)立出口電商APP
No.10 “字節(jié)跳動(dòng)手機(jī)”要來(lái)了?
基于PC機(jī)與單片機(jī)的多機(jī)通信技術(shù)及抗干擾方法
西門子重型燃機(jī)出海
能源(2017年7期)2018-01-19 05:05:05
基于三菱FXPLC的感應(yīng)淬火機(jī)床與PC機(jī)的串行通信實(shí)現(xiàn)
簡(jiǎn)談MC7字節(jié)碼
VC.NET下實(shí)現(xiàn)dsPIC單片機(jī)與PC機(jī)的通信
電子制作(2017年23期)2017-02-02 07:16:47
西門子亮相CIIF201
西門子 分布式I/O Simatic ET 200AL
西門子引領(lǐng)制造業(yè)的未來(lái)
邛崃市| 宝鸡市| 临清市| 钦州市| 漯河市| 东港市| 甘德县| 洛宁县| 云林县| 忻城县| 肇源县| 昌都县| 潞城市| 自贡市| 长丰县| 洱源县| 锦州市| 阜南县| 曲阜市| 芷江| 甘南县| 定襄县| 罗源县| 泗阳县| 桐庐县| 阳谷县| 九江市| 灵寿县| 南投县| 南宁市| 淳安县| 综艺| 永福县| 静安区| 陆河县| 延寿县| 巩留县| 栖霞市| 赤壁市| 浦北县| 吉隆县|