guanying14
級(jí)別: *
精華主題: * 篇
發(fā)帖數(shù)量: * 個(gè)
工控威望: * 點(diǎn)
下載積分: * 分
在線時(shí)間: (小時(shí))
注冊(cè)時(shí)間: *
最后登錄: *
查看guanying14的 主題 / 回貼
樓主  發(fā)表于: 2010-10-21 10:02
有沒(méi)哪位高手用過(guò)S7224XPCN的自由端口與用VB編寫(xiě)的軟件通訊咯?,以前我們編寫(xiě)的VB軟件和三菱的FX2N系列通訊的話(huà),只需將端口的通訊參數(shù)寫(xiě)入D8120和設(shè)置站號(hào),而軟件只需設(shè)定一樣的端口參數(shù)即可通訊。不知道西門(mén)子的通訊口這樣做行不行,看過(guò)實(shí)例,都是需要經(jīng)過(guò)初始化端口,編寫(xiě)接受、發(fā)送子程序、還用了不少的中斷。。挺復(fù)雜的。。而且當(dāng)端口設(shè)置為自由端口通訊后。。。上位機(jī)與PLC之間的通訊線是否是用普通的RS485通訊線呢還是用PPI的專(zhuān)用通訊電纜呢?,有沒(méi)哪位高手指點(diǎn)下。。。急啊。。。
jxh668
jxh668
級(jí)別: 工控俠客
精華主題: 0
發(fā)帖數(shù)量: 1429 個(gè)
工控威望: 2169 點(diǎn)
下載積分: 4006 分
在線時(shí)間: 829(小時(shí))
注冊(cè)時(shí)間: 2009-12-21
最后登錄: 2024-12-23
查看jxh668的 主題 / 回貼
1樓  發(fā)表于: 2010-11-01 09:11
OPC解決了什么?
  OPC誕生以前,硬件的驅(qū)動(dòng)器和與其連接的應(yīng)用程序之間的接口并沒(méi)有統(tǒng)一的標(biāo)準(zhǔn)。例如,在FA(FactoryAutomation)——工廠自動(dòng)化領(lǐng)域,連接PLC(Programmable Logic Controller)等控制設(shè)備和SCADA/HMI軟件,需要不同的FA網(wǎng)絡(luò)系統(tǒng)構(gòu)成。根據(jù)某調(diào)查結(jié)果,在控制系統(tǒng)軟件開(kāi)發(fā)的所需費(fèi)用中,各種各樣機(jī)器的應(yīng)用程序設(shè)計(jì)占費(fèi)用的7成,而開(kāi)發(fā)機(jī)器設(shè)備間的連接接口則占了3成。此外,在PA(Process Automation)——過(guò)程自動(dòng)化領(lǐng)域,當(dāng)希望把分布式控制系統(tǒng)(DCS——Distributed Control System)中所有的過(guò)程數(shù)據(jù)傳送到生產(chǎn)管理系統(tǒng)時(shí),必須按照各個(gè)供應(yīng)廠商的各個(gè)機(jī)種開(kāi)發(fā)特定的接口,例如,利用C語(yǔ)言DLL(動(dòng)態(tài)鏈路數(shù)據(jù)庫(kù))連接的DDE(動(dòng)態(tài)數(shù)據(jù)交換)服務(wù)器或者利用FTP(文件傳送協(xié)定)的文本等設(shè)計(jì)應(yīng)用程序。如由4種控制設(shè)備和與其連接的監(jiān)視、趨勢(shì)圖以及表報(bào)3種應(yīng)用程序所構(gòu)成的系統(tǒng)時(shí),必須花費(fèi)大量時(shí)間去開(kāi)發(fā)分別對(duì)應(yīng)設(shè)備A,B,C,D的監(jiān)視,趨勢(shì)圖以及表報(bào)應(yīng)用程序的接口軟件共計(jì)要用12種驅(qū)動(dòng)器。同時(shí)由于系統(tǒng)中共存各種各樣的驅(qū)動(dòng)器,也使維護(hù)運(yùn)轉(zhuǎn)環(huán)境的穩(wěn)定性和信賴(lài)性更加困難。
  而OPC是為了不同供應(yīng)廠商的設(shè)備和應(yīng)用程序之間的軟件接口標(biāo)準(zhǔn)化,使其間的數(shù)據(jù)交換更加簡(jiǎn)單化的目的而提出的。作為結(jié)果,從而可以向用戶(hù)提供不依靠于特定開(kāi)發(fā)語(yǔ)言和開(kāi)發(fā)環(huán)境的可以自由組合使用的過(guò)程控制軟件組件產(chǎn)品。
  利用OPC的系統(tǒng),是由按照應(yīng)用程序(客戶(hù)程序)的要求提供數(shù)據(jù)采集服務(wù)的OPC服務(wù)器,使用OPC服務(wù)器所必需的OPC接口,以及接受服務(wù)的OPC應(yīng)用程序所構(gòu)成。OPC服務(wù)器是按照各個(gè)供應(yīng)廠商的硬件所開(kāi)發(fā)的,使之可以吸收各個(gè)供應(yīng)廠商硬件和系統(tǒng)的差異,從而實(shí)現(xiàn)不依存于硬件的系統(tǒng)構(gòu)成。同時(shí)利用一種叫做Variant的數(shù)據(jù)類(lèi)型,可以不依存于硬件中固有數(shù)據(jù)類(lèi)型,按照應(yīng)用程序的要求提供數(shù)據(jù)格式。
  利用OPC使接口標(biāo)準(zhǔn)化可以不依存于各設(shè)備的內(nèi)部結(jié)構(gòu)及它的供應(yīng)廠商來(lái)選用監(jiān)視,趨勢(shì)圖以及表報(bào)應(yīng)用程序。
來(lái)看看 ,有用的就下了。深圳的可找我呵
jxh668
jxh668
級(jí)別: 工控俠客
精華主題: 0
發(fā)帖數(shù)量: 1429 個(gè)
工控威望: 2169 點(diǎn)
下載積分: 4006 分
在線時(shí)間: 829(小時(shí))
注冊(cè)時(shí)間: 2009-12-21
最后登錄: 2024-12-23
查看jxh668的 主題 / 回貼
2樓  發(fā)表于: 2010-11-01 09:20
也可參考:

在實(shí)際應(yīng)用過(guò)程中,某些時(shí)候可能會(huì)采用VB/DELPHI/VC等高級(jí)語(yǔ)言,自主編程與西門(mén)子PLC進(jìn)行通訊,這類(lèi)帖子、論文在網(wǎng)上都可以找到,在此總結(jié)一下。

1、Prodave通訊

Prodave是西門(mén)子提供的一個(gè)軟件包,為高級(jí)語(yǔ)言編程和plc通訊提供接口

通訊接口:MPI因 為MPI口是每塊cpu的編程口,所以plc不需要另外添加通訊模 塊,這個(gè)方案就比較經(jīng)濟(jì),而且prodave軟件包里面附帶了example和詳細(xì)的說(shuō)明,用起來(lái)應(yīng)該比較簡(jiǎn)單和方便(本人只匆匆看過(guò)文檔,沒(méi)有實(shí)驗(yàn) 過(guò))。這方面的資料在百度上很多。當(dāng)然,mpi的速度是有限的,如果采用普通的pc adapter連接pc和plc,最高速度也就38.4kbps,我不知道prodave能否支持mpi卡(5611之類(lèi)的話(huà)),如果可以的話(huà)速度可以達(dá) 到187.5kbps。

2、串行通訊

看到過(guò)一些論文,采用串行通訊的方法實(shí)現(xiàn)pc和plc通訊。這種情況存在幾點(diǎn)要求:

a、需要為plc添加一塊串行通訊模塊,比如300的話(huà)就需要cp340或者cp341(前者便宜些);

b、plc里面需要對(duì)串行通訊進(jìn)行編程,其實(shí)也就是接收?qǐng)?bào)文和發(fā)送報(bào)文,調(diào)用fb2/fb3(cp340的話(huà))。

c、串行通訊的速度是有目共睹的,而且cp340或者cp341的數(shù)據(jù)吞吐量也是有限的,即報(bào)文長(zhǎng)度是有限制的,因此個(gè)人認(rèn)為通訊數(shù)據(jù)量大的話(huà)采用串行通訊就不合適了。

d、報(bào)文格式的話(huà)就比較自由,但是也應(yīng)當(dāng)合理,我雖然沒(méi)有具體實(shí)驗(yàn)過(guò),但是個(gè)人認(rèn)為可以參考modbus的報(bào)文結(jié)構(gòu)來(lái)編程,甚至就采用modbus的規(guī)范,不過(guò)這樣的話(huà)要求編程者對(duì)pc和plc側(cè)的modbus編程都要熟悉。

3、OPC

Opc是這些年來(lái)很流行的東西,其實(shí)我很討厭opc的安全認(rèn)證的設(shè)定。不過(guò)采用opc編程來(lái)訪問(wèn)plc真的是一件非常輕松愜意的事情。你需要做的就是了解opc的結(jié)構(gòu)和編程,尤其是采用vb來(lái)編寫(xiě)opc簡(jiǎn)直是件傻瓜化的工作當(dāng)然也犧牲了很多。

前面我實(shí)驗(yàn)了用vb通過(guò)opc(以太網(wǎng))來(lái)訪問(wèn)300,包括用西門(mén)子的simaticnet提供的opc接口和第三方的kepserver

采用opc接口編程的優(yōu)點(diǎn):通訊速度快,編程簡(jiǎn)單。

4、以太網(wǎng)編程

采用以太網(wǎng)編程訪問(wèn)plc,其實(shí)又可以分為兩種:

一種是socket接口,需要在plc里面編程進(jìn)行收/發(fā),大概是fc5/fc6吧,印象不深了,當(dāng)然plc里面要定義一個(gè)connection, 填好地址、端口號(hào)之類(lèi)的信息,這個(gè)對(duì)于熟悉西門(mén)子工業(yè)通訊的人是很easy的事情。Pc側(cè)采用socket接口編程,最簡(jiǎn)單的就是vb里面的wisock 控件,當(dāng)然這掩蓋了很多細(xì)節(jié)。Socket編程本來(lái)就是一門(mén)藝術(shù),講究說(shuō)學(xué)逗唱:)

這個(gè)方法的優(yōu)點(diǎn)應(yīng)該是pc側(cè)編程稍微簡(jiǎn)單點(diǎn)(相對(duì)于后一種),而且可以不局限于windows平臺(tái),因?yàn)閟ocket接口被諸如unix支持的更好。

第二種是采用西門(mén)子的 sapi接口函數(shù),這樣plc里面不需要過(guò)多的編程了,當(dāng)然pc側(cè)的編程難度就比較高了,ms只能用c來(lái)寫(xiě),所以我望而卻步鳥(niǎo)?催^(guò)相關(guān)帖子和論文,有高 人在項(xiàng)目里面就這么干的,而且數(shù)據(jù)量很大,看來(lái)高人很多很多啊,向他們致敬!關(guān)于sapi的資料其實(shí)都在simaticnet軟件光盤(pán)里面,有興趣的可以 去找來(lái)看看。

為了允許PC機(jī)和工作站上的應(yīng)用程序與西門(mén)子S7系列產(chǎn)品進(jìn)行S7通訊西門(mén)子公司提供了一個(gè)SAPI-S7應(yīng)用程序接口通過(guò)它可以靈活而方便地跟西 門(mén)子S7系列產(chǎn)品進(jìn)行通信。安裝SIMATIC Ner軟件后會(huì)在系統(tǒng)system32目錄下生成一個(gè)S732.dll文件該動(dòng)態(tài)鏈接庫(kù)提供了大量基于WindowsNT、Window95/98、 Windows3.11和MS-DOS的函數(shù)這樣就使得用戶(hù)解決PLC和PC機(jī)的數(shù)據(jù)交換和數(shù)據(jù)處理問(wèn)題變?yōu)榭赡。通信編程包括兩個(gè)部分:(1)CP連接 組態(tài)(2)PLC與上位機(jī)通信編程。 4.1 CP連接組態(tài) 可采用STEP7軟件或STEP7軟件中用于工業(yè)以太網(wǎng)的NCMS7軟件對(duì)CP進(jìn)行網(wǎng)絡(luò)組態(tài)。通訊處理器CP可連接PCPC/PG上一般裝網(wǎng)卡 CP1613。在Windows控制面板下的“set PC/PG”下安裝所用網(wǎng)卡驅(qū)動(dòng)程序并設(shè)協(xié)議、站號(hào)、波特率、是否為主站完成對(duì)VFDs(Virtual Field Device)和S7 connections的配置[4]。 4.2 PLC和上位機(jī)的通訊編程 S7-300/400PLC有以下各類(lèi)資源:①輸入點(diǎn)I:接收外部開(kāi)關(guān)量信號(hào) ②輸出點(diǎn)Q:輸出給外部的開(kāi)關(guān)量信號(hào) ③內(nèi)部輔助點(diǎn)M:存放所需中間結(jié)果 ④時(shí)間繼電器T ⑤計(jì)數(shù)器 ⑥數(shù)據(jù)塊DB:存放程序數(shù)據(jù)的存儲(chǔ)區(qū)域 ⑦外設(shè)輸入PI:主要接收模擬量輸入信號(hào)經(jīng)A/D轉(zhuǎn)換⑧外設(shè)輸出PQ:給出模擬兩輸出值[5]。要讀/寫(xiě)這些資源首先要建立PLC和PC機(jī)的連接。 4.2.1 初始化與PLC的連接 SAPI-S7應(yīng)用程序接口提供的管理服務(wù)模塊(Administrative Services)提供了一些可供讀出配置信息和登錄/退出通訊系統(tǒng)的函數(shù)下面作一些簡(jiǎn)要介紹[6]:
S7_get_device() :通過(guò)此函數(shù)用戶(hù)程序可以查詢(xún)所有已安裝的CP的CP名。
S7_get_vfd() :通過(guò)此函數(shù)用戶(hù)程序可以查詢(xún)?nèi)我恢付–P的所有已配置的VFD。

S7_init():通過(guò)此函數(shù)用戶(hù)程序可登錄通訊系統(tǒng)。


S7_get_cref() :此函數(shù)提供了一個(gè)指向所選S7 connection名的指針。


S7_get_conn():此函數(shù)返回已登錄VFD的所有S7connection名和指向他們的指針。


S7_shut():通過(guò)此函數(shù)用戶(hù)程序可退出通訊系 統(tǒng)。 一個(gè)應(yīng)用程序可以登錄一個(gè)或多個(gè)CP的若干個(gè)VFD只有當(dāng)應(yīng)用程序登錄CP及其所選的VFD在配置期間指定給該VFD的所有連接才是有效的。 4.2.2讀/寫(xiě)PLC內(nèi)部資源 初始化與PLC的連接成功后就可以對(duì)PLC進(jìn)行讀寫(xiě)操作。對(duì)PLC存儲(chǔ)區(qū)即數(shù)據(jù)塊DB的讀寫(xiě)是實(shí)現(xiàn)監(jiān)控的最基本操作。SAPI-S7應(yīng)用程序接口提供的變 量服務(wù)模塊(Variable Services)提供了一些讀寫(xiě)函數(shù)由于篇幅有限現(xiàn)選一些經(jīng)常用到的函數(shù)作一些簡(jiǎn)單介紹。


S7_cycl_read():此函數(shù)通知服務(wù)方準(zhǔn)備對(duì)單存儲(chǔ)單元循環(huán)讀一個(gè)變量。


S7_get_cycl_read_ind():此函數(shù)接收來(lái)自服務(wù)方發(fā)送的數(shù)據(jù)。


S7_multiple_read_req():此函數(shù)通知服務(wù)方準(zhǔn)備對(duì)多存儲(chǔ)單元讀一個(gè)或多個(gè)變量。


S7_get_multiple_read_cnf():此函數(shù)接收來(lái)自服務(wù)方的一個(gè)或多個(gè)變量的值。


S7_multiple_write_req():此函數(shù)通知服務(wù)方準(zhǔn)備對(duì)多存儲(chǔ)單元寫(xiě)一個(gè)或多個(gè)變量。


S7_get_multiple_write_cnf():此函數(shù)接收來(lái)來(lái)自服務(wù)方的執(zhí)行上述寫(xiě)請(qǐng)求的結(jié)果。 需要特別注意的是:S7- 300/400PLC遵循“高地址、低字節(jié)”的規(guī)律這與某些習(xí)慣用法不同。例如在C++Builder6中變量類(lèi)型為word的變量它的數(shù)據(jù)存放順序是“ 低地址低字節(jié)”的規(guī)律。因此在對(duì)所讀取的數(shù)據(jù)進(jìn)行操作或給PLC數(shù)據(jù)塊中寫(xiě)數(shù)據(jù)字時(shí)要進(jìn)行相應(yīng)的處理。 為解決上位機(jī)不能因前臺(tái)的信息處理而中斷后臺(tái)的監(jiān)聽(tīng)等問(wèn)題可采用多線程編程技術(shù)將對(duì)PLC內(nèi)部資源的讀/寫(xiě)功能模塊交給一個(gè)后臺(tái)線程來(lái)完成。多線程編程技 術(shù)能提高CPU利用率加快信息處理提高系統(tǒng)的實(shí)時(shí)性在由多臺(tái)計(jì)算機(jī)組成的分布式實(shí)時(shí)控制系統(tǒng)中應(yīng)用多線程技術(shù)是完全必要的。 4.2.3 后臺(tái)讀/寫(xiě)線程模塊部分代碼 ····· do { ret = S7_receive(cp_descr&cref&orderid); switch(ret) { case S7_NO_MSG: break; case S7_INITIATE_CNF: Synchronize(my_get_initiate_cnf); Synchronize(my_multiple_read_req); break; case S7_MULTIPLE_READ_CNF: Synchronize(my_get_multiple_read_cnf); Synchronize(my_multiple_read_req); break; · · case S7_ABORT_IND: Synchronize(my_get_abort_ind); break; case S7_VFD_STATE_CNF: Synchronize(my_get_vfd_state_cnf); Synchronize(my_abort); break; case S7_VFD_USTATE_IND: Synchronize(my_get_vfd_ustate_ind); break; default : ····· } }while(ret != last_event_expected) 5 總結(jié) 運(yùn)用C++Builder6.0編寫(xiě)的PLC控制調(diào)試程序具有用戶(hù)界面友好人機(jī)交互方便數(shù)據(jù)庫(kù)功能強(qiáng)大靈活的特點(diǎn)具有較強(qiáng)的通用性和實(shí)用性。通過(guò)調(diào)用S7 通訊提供的SAPI-S7應(yīng)用程序接口實(shí)現(xiàn)PC機(jī)與S7300/400PLC基于工業(yè)以太網(wǎng)的數(shù)據(jù)通訊不僅數(shù)據(jù)傳輸率快而且數(shù)據(jù)傳輸正確率高。在對(duì)PLC 控制系統(tǒng)的調(diào)試過(guò)程中大大縮短了調(diào)試周期提高了工作效率。此通訊技術(shù)的實(shí)現(xiàn)對(duì)西門(mén)子工控產(chǎn)品的應(yīng)用以及工業(yè)以太網(wǎng)的推廣應(yīng)用有著廣泛普遍的重要意義。


我們知道要訪問(wèn)西門(mén)子的300/400 系列PLC中的I/O點(diǎn),M和DB區(qū)內(nèi)的數(shù)據(jù)有若干種方法可供選擇。最常用的是使用組態(tài)軟件WINCC來(lái)讀取。另外,西門(mén)子還提供了SAPI-S7接口和 Send/Receive接口。SAPI-S7位于網(wǎng)絡(luò)七層協(xié)議的5-7層,是專(zhuān)門(mén)為S7連接優(yōu)化的,可以方便訪問(wèn)PLC內(nèi)任意存儲(chǔ)區(qū)。就我使用過(guò)的其他 組態(tài)軟件如intouch(I/O server )和iFix的連接驅(qū)動(dòng),都是在SAPI-S7接口上開(kāi)發(fā)的(從組態(tài)驅(qū)動(dòng)時(shí)的配置過(guò)程可以看出)。Send/Receive屬于較低的層次,一方面可以使 用西門(mén)子的接口函數(shù)編寫(xiě),另一方面還可以直接用Socket接口編程。這時(shí),在PLC方面要用專(zhuān)用的功能塊編寫(xiě)發(fā)送接收程序來(lái)配合。常適用于報(bào)文的傳送 (報(bào)文結(jié)構(gòu)通常存儲(chǔ)于DB塊)。關(guān)于Socket編程我曾專(zhuān)門(mén)發(fā)帖討論過(guò)其中若干細(xì)節(jié)。


還有一種就是新興的OPC接口,但個(gè)人認(rèn)為這種接口不適于較快數(shù)據(jù)的傳輸,即采樣時(shí)間間隔不能太短。
來(lái)看看 ,有用的就下了。深圳的可找我呵