国产精品久久久久久久久,四季AV一区二区夜夜嗨,日韩精品无码中文字幕电影,www.五月婷婷.com

資訊詳情
西門子變頻器6SL3211OAB125UB1
發(fā)布者:黃工  發(fā)布時(shí)間:2016-04-09 00:10:40
西門子變頻器6SL3211OAB125UB1,西門子變頻器6SL3211OAB125UB1

                           {心中有空間,夢(mèng)想就有可能}

                 {西門子與客戶攜手,讓關(guān)鍵所在,逐一實(shí)現(xiàn)}

聯(lián)   系   人: 黃勇《黃工》   24小時(shí)聯(lián)系手機(jī):  13701633515
直線銷售 電 話: 021-31660605    在 線 商 務(wù) QQ:  77956468 
單位:臺(tái)                                                                                  產(chǎn)品單價(jià):電議

供貨數(shù)量:不限                                                                      最小定量:1

包裝說(shuō)明:齊全                                                                      產(chǎn)品規(guī)格:全新原裝

步進(jìn)可調(diào)的穩(wěn)壓開關(guān)電源
{開關(guān)電源行業(yè)門戶網(wǎng)}:開關(guān)電源是利用現(xiàn)代電力電子技術(shù),控制開關(guān)管開通和關(guān)斷的時(shí)間比率,維持穩(wěn)定輸出電壓的一種電源。由于擁有較高的效率和較高的功率密度,開關(guān)電源在現(xiàn)代電子系統(tǒng)中的使用越來(lái)越普及。開關(guān)電源高頻化、模塊化和智能化是其發(fā)展方向。其中,步進(jìn)可調(diào)、實(shí)時(shí)顯示是開關(guān)電源智能化研究方向之一。現(xiàn)設(shè)計(jì)開關(guān)電源,技術(shù)指標(biāo)為:輸出電壓30V至36V可調(diào),最大輸出電流2A,有過(guò)流保護(hù)功能,能對(duì)輸出電壓進(jìn)行鍵盤設(shè)定和步進(jìn)調(diào)整、步進(jìn)值1V,并能實(shí)時(shí)顯示輸出電壓和電流的開關(guān)穩(wěn)壓電源。
 
1 總體設(shè)計(jì)方案
    采用AT89S52單片機(jī)為控制核心,對(duì)普通的開關(guān)電源控制部分進(jìn)行優(yōu)化設(shè)計(jì),并通過(guò)軟件編程實(shí)現(xiàn)了對(duì)開關(guān)電源的智能控制。設(shè)計(jì)中采用隔離變壓器將市電變壓后通過(guò)整流濾波送至DC-DC升壓變換器,經(jīng)過(guò)一系列的控制整合電路之后可實(shí)現(xiàn)設(shè)計(jì)要求。系統(tǒng)總體框圖如圖1.1所示。

1.1 DC-DC主回路拓?fù)?br />    采用UC3842和MAX4080構(gòu)成DC-DC轉(zhuǎn)換電路。UC3842是一塊功能齊全、較為典型的單端電流型PWM控制集成電路,內(nèi)包含誤差放大器、電流檢測(cè)比較器、PWM鎖存器、振蕩器、內(nèi)部基準(zhǔn)電源和欠壓鎖定等單元。電流控制型升壓DC-DC轉(zhuǎn)換電路,外接元器件少、控制靈活、成本低,輸出功率容易做到100W以上。當(dāng)然,DC-DC轉(zhuǎn)換電路也可以采用成品模塊,若用PI公司生產(chǎn)的DPA-Switch設(shè)計(jì)開關(guān)電源具有集成度高、外圍電路簡(jiǎn)單、發(fā)熱量少、性能指標(biāo)優(yōu)良。
   
    由UC3842設(shè)計(jì)的DC-DC升壓電路直接用誤差信號(hào)控制電感峰值電流,間接地控制PWM脈沖寬度,達(dá)到控制輸出端電壓的目的。開關(guān)管以UC3842設(shè)定的頻率周期開閉,使電感L儲(chǔ)存能量并釋放能量。當(dāng)開關(guān)管導(dǎo)通時(shí),電感充電,把能量?jī)?chǔ)存在L中。當(dāng)開關(guān)截止時(shí),L產(chǎn)生反向感應(yīng)電壓,通過(guò)二極管把儲(chǔ)存的電能釋放到輸出電容器中。輸出電壓由傳遞的能量多少來(lái)控制,而傳遞能量的多少由通過(guò)電感電流的峰值來(lái)控制。具體設(shè)計(jì)電路如圖1.2所示。

1.2 保護(hù)電路
    在大電流的情況下容易損壞芯片,所以需要對(duì)大電流的情況給予電路保護(hù)。設(shè)計(jì)中采用單片機(jī)控制繼電器的通斷來(lái)控制電路中的電流,對(duì)輸出電路電流采樣,采樣值與額定值比較,反饋比較電路如圖1.3所示,當(dāng)電流大于2.5A時(shí),則產(chǎn)生信號(hào)使單片機(jī)進(jìn)入中斷處理程序,使繼電器起動(dòng),實(shí)現(xiàn)DC-DC電路的斷電,從而達(dá)到保護(hù)電路的作用。單片機(jī)控制電路如圖1.4所示。該方案中單片機(jī)控制繼電器的吸合時(shí)間短,而且易于實(shí)現(xiàn)。


1.3 數(shù)字設(shè)定及顯示電路
    采用AT89S52單片機(jī)和集成芯片CD4051實(shí)現(xiàn)程控和步進(jìn),用單片機(jī)控制鍵盤實(shí)現(xiàn)輸出電壓的初始設(shè)定,可以實(shí)現(xiàn)電壓的步進(jìn)1V,步減1V。使用液晶顯示輸出電壓和電流,可撥動(dòng)轉(zhuǎn)換開關(guān)來(lái)選擇顯示電壓/電流模式。
1.4 程序設(shè)計(jì)
    在設(shè)計(jì)好相關(guān)電路的基礎(chǔ)上,通過(guò)編程由單片機(jī)對(duì)開關(guān)電源進(jìn)行智能控制。系統(tǒng)由單片機(jī)AT89S52控制,電源系統(tǒng)具有"+‰"和"-"步進(jìn)功能,步進(jìn)幅度為1V。同時(shí)AT89S52結(jié)合繼電器等電路實(shí)現(xiàn)了電路過(guò)流保護(hù)功能,并且能實(shí)時(shí)顯示開關(guān)電源的輸出電壓和電流。程序總流程圖和中斷流程圖如圖1(5,6)所示。

2 提高效率
    如何提高開關(guān)電源的效率顯得尤為重要。在提高開關(guān)電源的效率上采取了如下措施。
2.1 DC-DC轉(zhuǎn)換電路中電感在很大程度上影響系統(tǒng)的效率。市場(chǎng)上很難買到符合要求的電感,在繞制時(shí)對(duì)電感磁芯和漆包線的要求非常高,應(yīng)將輸出電壓紋波降到最小。
2.2 DC-DC轉(zhuǎn)換電路中開關(guān)管采用MOS管取代雙極性晶體管,串聯(lián)柵極電阻將衰減由MOS輸入電容、柵一源電路引線電感所產(chǎn)生的高頻寄生振蕩??捎行岣咿D(zhuǎn)換效率,若選用幾個(gè)MOS管IRF530并聯(lián),可進(jìn)一步提高效率。
2.3續(xù)流二極管選擇肖特基二極管,其開啟時(shí)間短、管壓降小,可使電感存儲(chǔ)能量大,有利于提高電源轉(zhuǎn)換效率。
2.4二極管、電感和MOS管的柵極最好盡可能地靠近焊接,這樣可以減少損耗,有利于提高系統(tǒng)的效率。
 
3 測(cè)試數(shù)據(jù)和分析
3.1 電壓調(diào)整率SU
    電壓調(diào)整率SU指U2在指定范圍內(nèi)變化時(shí),輸出電壓U0的變化率。用自耦調(diào)壓器調(diào)節(jié)U2從15V到21V之間變化,在輸出電流為2A時(shí)候,測(cè)量出輸出電壓,從而得到電壓調(diào)整率SU。

 
3.2 負(fù)載調(diào)整率SI
    負(fù)載調(diào)整率SI指I0在指定范圍內(nèi)變化時(shí),輸出電壓U0的變化率。改變負(fù)載電阻,使輸出電流在0~2A以內(nèi)變化時(shí),得到負(fù)載調(diào)整率數(shù)據(jù)如下。

3.3 DC-DC變換器效率
    效率η=P0/PIN,其中P0=U0I0,PIN=UINIIN。用毫伏表在DC-DC模塊端口直接讀出輸入和輸出電壓電流各值,可得變換器效率。

3.4 紋波電流
    在開關(guān)電源設(shè)計(jì)中,MOS管源極接上1kΩ的電阻,電源濾波處加無(wú)極性電容,濾除高頻紋波。電流紋波實(shí)測(cè)數(shù)據(jù)如下

 
    基于AT89S52的開關(guān)穩(wěn)壓電源具有良好智能控制和步進(jìn)功能,測(cè)試數(shù)據(jù)表明電源系統(tǒng)具有較高的電壓調(diào)整率和負(fù)載調(diào)整率,并具有很高的效率,電源在最大輸出功率下能連續(xù)安全工作足夠長(zhǎng)的時(shí)間。當(dāng)然可通過(guò)對(duì)MOS管及相關(guān)元器件選擇、電路優(yōu)化設(shè)計(jì),或選擇DC-DC成品模塊可進(jìn)一步提高電源性能。

西門子S7-200編程電纜制作

西門子S7-200編程電纜100%能用,絕對(duì)無(wú)損壞電腦和PLC,安全可靠。(注:681是電阻,它的阻值是680歐姆;682是電阻,它的阻值是6.8K) 

6ES7211-0AA23-0XB0 SIMATIC S7-200 CPU211,DC/DC/DC,6輸入/4輸出
6ES7211-0BA23-0XB0 SIMATIC S7-200 CPU211,AC/DC/Rly,6輸入/4輸出
6ES7212-1AB23-0XB0 SIMATIC S7-200 CPU222,DC/DC/DC,8輸入/6輸出
6ES7212-1BB23-0XB0 SIMATIC S7-200 CPU222,AC/DC/Rly,8輸入/6輸出
6ES7214-1AD23-0XB0 SIMATIC S7-200 CPU224,DC/DC/DC,14輸入/10輸出
6ES7214-1BD23-0XB0 SIMATIC S7-200 CPU224,AC/DC/Rly,14輸入/10輸出
6ES7214-2AD23-0XB0 SIMATIC S7-200 CPU224XP,DC/DC/DC,14輸入/10輸出,集成2AI/1AO
6ES7214-2AS23-0XB0 SIMATIC S7-200 CPU224XPsi,DC/DC/DC,14輸入/10輸出,集成2AI/1AO
6ES7214-2BD23-0XB0 SIMATIC S7-200 CPU224XP,AC/DC/Rly,14輸入/10輸出(NPN輸出),集成2AI/1AO
6ES7216-2AD23-0XB0 SIMATIC S7-200 CPU226,DC/DC/DC,24輸入/16輸出
6ES7216-2BD23-0XB0 SIMATIC S7-200 CPU226,AC/DC/Rly,24輸入/16輸出
6ES7212-1AB23-0XB8 S7-200CN CPU222,DC/DC/DC,8輸入/6輸出
6ES7212-1BB23-0XB8 S7-200CN CPU222,AC/DC/Rly,8輸入/6輸出
6ES7214-1AD23-0XB8 S7-200CN CPU224,DC/DC/DC,14輸入/10輸出
6ES7214-1BD23-0XB8 S7-200CN CPU224,AC/DC/Rly,14輸入/10輸出
6ES7214-2AD23-0XB8 S7-200CN CPU224XP,DC/DC/DC,14輸入/10輸出,集成2AI/1AO
6ES7214-2AS23-0XB8 S7-200CN CPU224XPsi,DC/DC/DC,14輸入/10輸出,集成2AI/1AO
6ES7214-2BD23-0XB8 S7-200CN CPU224XP,AC/DC/Rly,14輸入/10輸出(NPN輸出),集成2AI/1AO
6ES7216-2AD23-0XB8 S7-200CN CPU226,DC/DC/DC,24輸入/16輸出
6ES7216-2BD23-0XB8 S7-200CN CPU226,AC/DC/Rly,24輸入/16輸出
6ES7221-1BF22-0XA0 SIMATIC S7-200, EM221 數(shù)字量輸入模塊, 8輸入24V DC
6ES7221-1BH22-0XA0 SIMATIC S7-200, EM221 數(shù)字量輸入模塊, 16輸入24V DC
6ES7221-1EF22-0XA0 SIMATIC S7-200, EM221 數(shù)字量輸入模塊, 8輸入 交流120/230V AC
6ES7222-1BD22-0XA0 SIMATIC S7-200, EM222 數(shù)字量輸出模塊,4輸出24V DC 5A
6ES7222-1BF22-0XA0 SIMATIC S7-200, EM222 數(shù)字量輸出模塊,8輸出24V DC
6ES7222-1EF22-0XA0 SIMATIC S7-200, EM222 數(shù)字量輸出模塊,8輸出 交流120/230V AC
6ES7222-1HD22-0XA0 SIMATIC S7-200, EM222 數(shù)字量輸出模塊,4輸出繼電器 10A
6ES7222-1HF22-0XA0 SIMATIC S7-200, EM222 數(shù)字量輸出模塊,8輸出繼電器
6ES7223-1BF22-0XA0 SIMATIC S7-200, EM223 數(shù)字量輸入/輸出模塊,4輸入 24V DC/4輸出 24V DC
6ES7223-1BH22-0XA0 SIMATIC S7-200, EM223 數(shù)字量輸入/輸出模塊,8輸入 24V DC/8輸出 24V DC
6ES7223-1BL22-0XA0 SIMATIC S7-200, EM223 數(shù)字量輸入/輸出模塊,16輸入 24V DC/16輸出 24V DC
6ES7223-1BM22-0XA0 SIMATIC S7-200, EM223 數(shù)字量輸入/輸出模塊,32輸入 24V DC/32輸出 24V DC
6ES7223-1HF22-0XA0 SIMATIC S7-200, EM223 數(shù)字量輸入/輸出模塊,4輸入 24V DC/4輸出繼電器
6ES7223-1PH22-0XA0 SIMATIC S7-200, EM223 數(shù)字量輸入/輸出模塊,8輸入 24V DC/8輸出繼電器
6ES7223-1PL22-0XA0 SIMATIC S7-200, EM223 數(shù)字量輸入/輸出模塊,16輸入 24V DC/16輸出繼電器
6ES7223-1PM22-0XA0 SIMATIC S7-200, EM223 數(shù)字量輸入/輸出模塊,32輸入 24V DC/32輸出繼電器
6ES7231-0HC22-0XA0 SIMATIC S7-200, EM231 模擬量輸入模塊,4輸入
6ES7231-0HF22-0XA0 SIMATIC S7-200, EM231 模擬量輸入模塊,8輸入
6ES7231-7PB22-0XA0 SIMATIC S7-200, EM231 熱電阻模塊,2輸入
6ES7231-7PC22-0XA0 SIMATIC S7-200, EM231 熱電阻模塊,4輸入
6ES7231-7PD22-0XA0 SIMATIC S7-200, EM231 熱電偶模塊,4輸入
6ES7231-7PF22-0XA0 SIMATIC S7-200, EM231 熱電偶模塊,8輸入
6ES7232-0HB22-0XA0 SIMATIC S7-200, EM232 模擬量輸出模塊,2輸出
6ES7232-0HD22-0XA0 SIMATIC S7-200, EM232 模擬量輸出模塊,4輸出
6ES7235-0KD22-0XA0 SIMATIC S7-200, EM235 模擬量輸入輸出模塊,4輸入/1輸出
6ES7253-1AA22-0XA0 SIMATIC S7-200, EM253 定位模塊
6ES7277-0AA22-0XA0 SIMATIC S7-200, EM277 Profibus-DP 從站模塊

  • SIMATIC S7 系列的新型模塊化微型控制器
  • 包括:
    • 控制器配備集成的 PROFINET IO 控制器接口,用于SIMATIC 控制器、人機(jī)界面、編程設(shè)備或其他自動(dòng)化組件之間的通訊
    • 帶 PROFIBUS DP 主站接口的通訊模板
    • 通訊模塊 PROFIBUS DP 從站接口
    • 用于連接到 GSM/G 移動(dòng)電話網(wǎng)絡(luò)的 GPRS 模塊
    • 集成的 web 服務(wù)器,帶有標(biāo)準(zhǔn)和用戶特定的網(wǎng)頁(yè)
    • 數(shù)據(jù)記錄功能,用于在運(yùn)行時(shí)從用戶程序歸檔數(shù)據(jù)
    • 強(qiáng)大的集成技術(shù)功能,如計(jì)數(shù)、測(cè)量、閉環(huán)控制和運(yùn)動(dòng)控制
    • 集成數(shù)字量和模擬量 I/O
    • 直接在控制器中使用的信號(hào)板
    • 用于通過(guò)輸入/輸出通道擴(kuò)展控制器的信號(hào)模塊
    • 用于通過(guò)附加通訊接口擴(kuò)展控制器的通訊模塊
    • 附件,例如,電源、開關(guān)模塊或 SIMATIC 存儲(chǔ)卡
  • 以最低的成本提供最大自動(dòng)化性能的微型控制器。
  • 安裝、編程和操作都非常簡(jiǎn)單。
  • 大規(guī)模集成,節(jié)省空間,功能強(qiáng)大。
  • 適用于小型到中型的自動(dòng)化工程應(yīng)用。
  • 既可用于簡(jiǎn)單的控制任務(wù),也可以用于復(fù)雜的自動(dòng)化任務(wù)。
  • 所有 CPU 都可在獨(dú)立模式、網(wǎng)絡(luò)和分布式結(jié)構(gòu)內(nèi)使用。
  • 適用于可編程控制器過(guò)去在經(jīng)濟(jì)上不可行的應(yīng)用。
  • 具有出色的實(shí)時(shí)性能和功能強(qiáng)大的通訊選件

SIMATIC S7-1200 是一款適用于機(jī)械設(shè)備制造以及工廠構(gòu)建中開環(huán)和閉環(huán)控制任務(wù)的控制器。它可實(shí)現(xiàn)最大的自動(dòng)化性能以及最為經(jīng)濟(jì)的成本。

由于同時(shí)采用了高性能的緊湊型模塊化設(shè)計(jì),SIMATIC S7-1200 適用于各種自動(dòng)化應(yīng)用。其使用范圍從更換繼電器和接觸器一直到網(wǎng)絡(luò)和分布式結(jié)構(gòu)中復(fù)雜的自動(dòng)化任務(wù)。

S7-1200 還不斷開辟了以前由于經(jīng)濟(jì)原因而開發(fā)的特殊電子元件領(lǐng)域。

應(yīng)用示例包括,例如:

  • 布局系統(tǒng)
  • 輸送系統(tǒng)
  • 電梯和自動(dòng)扶梯
  • 材料運(yùn)輸設(shè)備
  • 金屬加工機(jī)械
  • 包裝機(jī)械
  • 印刷機(jī)器
  • 紡織機(jī)械
  • 混合系統(tǒng)
  • 淡水處理廠
  • 污水處理廠
  • 外部顯示屏
  • 配電站
  • 室溫控制
  • 加熱/冷卻系統(tǒng)控制
  • 能量管理
  • 消防系統(tǒng)
  • 空調(diào)系統(tǒng)
  • 照明控制
  • 泵的控制
  • 安防/門禁系統(tǒng)

SIMATIC S7-1200 系列由以下模塊組成:

  • 3 個(gè)控制器,具有不同類型的分級(jí)性能,可作為寬范圍的交流或直流控制器
  • 2 個(gè)信號(hào)板(模擬和數(shù)字),用于直接在 CPU 上進(jìn)行的低成本模塊化控制器擴(kuò)展,安裝空間保持不變
  • 13 個(gè)不同的數(shù)字和模擬信號(hào)模塊
  • 2 個(gè)通訊模塊 (RS232/RS485),用于通過(guò)點(diǎn)對(duì)點(diǎn)連接進(jìn)行的通訊
  • 帶有 4 個(gè)端口的以太網(wǎng)開關(guān),用于執(zhí)行許多不同的網(wǎng)絡(luò)拓?fù)?
  • PS 1207 穩(wěn)定電源裝置,115/230 V 交流線路電壓,24 V 直流額定電壓

機(jī)械特點(diǎn)

  • 堅(jiān)固耐用的緊湊型塑料外殼
  • 易于接觸的連接和控制元件,用前擋板保護(hù)
  • 可拆卸連接端子,也適用于模擬或數(shù)字?jǐn)U展模板

設(shè)備功能

  • 符合國(guó)際標(biāo)準(zhǔn):
    SIMATIC S7-1200 符合 VDE、UL,、CSA 和 FM 等標(biāo)準(zhǔn)(Class I、Cat 2;危險(xiǎn)區(qū)組別 A、B、C 和 D,T4A)。生產(chǎn)中采用的質(zhì)量管理體系已通過(guò) ISO 9001 認(rèn)證
通訊

SIMATIC S7-1200 配備不同的通訊機(jī)制:

  • 集成的 PROFINET 接口
  • 通過(guò)通訊模板實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)連接

PROFINET 接口

集成的 PROFINET 接口允許進(jìn)行下列通訊:

  • 編程器
  • 人機(jī)接口(HMI)設(shè)備
  • 其他 SIMATIC 控制器

支持以下協(xié)議:

  • TCP/IP
  • ISO-on-TCP
  • S7 通訊

運(yùn)用VC#編程通過(guò)OPC方式實(shí)現(xiàn)PC機(jī)與西門子PLC通訊

1、 配置OPC服務(wù)器
對(duì)于服務(wù)器的配置與同步通訊的配置一樣,這里不需再講解,若有不清楚的,可以參閱之前發(fā)布的<運(yùn)用VC#編程通過(guò)OPC方式實(shí)現(xiàn)PC機(jī)與西門子PLC通訊>
2、 OPC編程
變量組、項(xiàng)的命名規(guī)則與同步通訊的一樣,這里不再描敘,下面主要就開發(fā)一個(gè)異步通訊類 AsynServer來(lái)講解如何編程。
<1>、引用
在VC#開發(fā)環(huán)境中添加對(duì)OpcRcw.Da庫(kù)以及OpcRcw.Comn庫(kù)的引用,該庫(kù)屬于.NET庫(kù),不屬于COM庫(kù),西門子雖然編寫了類庫(kù),以提供對(duì).NET平臺(tái)的支持,但這些類庫(kù)仍然難于編程,里面包含了大量的在托管和非托管區(qū)傳輸數(shù)據(jù),因此我們需要在它的基礎(chǔ)上再開發(fā)一個(gè)類庫(kù),以簡(jiǎn)化以后的編程,首先在類的開頭使用命名空間:
using OpcRcw.Comn;
using OpcRcw.Da;
using System.Runtime.InteropServices;
using System.Collections;
<2>、編程
異步編程的原理就是在OPC服務(wù)器那邊檢測(cè)當(dāng)前活動(dòng)的變量組,一但檢測(cè)到某一個(gè)變量,譬如變量Q0.0從1變成0,就會(huì)執(zhí)行一個(gè)回調(diào)函數(shù),以實(shí)現(xiàn)針對(duì)變量發(fā)生變化時(shí)需要實(shí)現(xiàn)的動(dòng)作,在這里可以采用委托來(lái)實(shí)現(xiàn)該功能。
1、 在命名空間的內(nèi)部、類 AsynServer聲明之前添加委托的申明:
// 定義用于返回發(fā)生變化的項(xiàng)的值和其對(duì)應(yīng)的客戶句柄
public delegate void DataChange(object[] values,int[] itemsID);
2、 該類繼承于西門子提供的庫(kù)接口IOPCDataCallback
public class AsynServer:IOPCDataCallback
在類的開頭部分聲明變量:
struct groupStru
{
public int groupID;
public object groupObj;
}
internal const int LOCALE_ID = 0x407; //本地語(yǔ)言
private Guid iidRequiredInterface;
private string serverType="";
private int hClientGroup = 0; //客戶組號(hào)
private int nSvrGroupID; // server group handle for the added group 
private Hashtable hashGroup; //用于把組收集到一起
private int hClientItem=0; //Item號(hào)
3、編寫構(gòu)造函數(shù),接收委托參數(shù)已確定當(dāng)數(shù)據(jù)發(fā)生變化時(shí)需要執(zhí)行的方法入口點(diǎn):
//創(chuàng)建服務(wù)器
//svrType 服務(wù)器類型的枚舉
//dataChange 提供用于在數(shù)據(jù)發(fā)生變化時(shí)需要執(zhí)行的函數(shù)入口
public AsynServer(ServerType svrType,DataChange dataChange)
{
switch(svrType)
{
case ServerType.OPC_SimaticHMI_PTPR
serverType="OPC.SimaticHMI.PTPro";break;
case ServerType.OPC_SimaticNET:
serverType="OPC.SimaticNET";break;
case ServerType.OPC_SimaticNET_DP:
serverType="OPC.SimaticNET.DP";break;
case ServerType.OPC_SimaticNET_PD:
serverType="OPC.SimaticNET.PD";break;
case ServerType.OPCServer_WinCC:
serverType="OPCServer.WinCC";break;
}
hashGroup=new Hashtable(11);
dtChange=dataChange;
}

4、創(chuàng)建服務(wù)器
// 創(chuàng)建一個(gè)OPC Server接口
//error 返回錯(cuò)誤信息
//若為true,創(chuàng)建成功,否則創(chuàng)建失敗
public bool Open(out string error)
{
error="";bool success=true;
Type svrComponenttyp ;
//獲取 OPC Server COM 接口
iidRequiredInterface = typeof(IOPCItemMgt).GUID;
svrComponenttyp = System.Type.GetTypeFromProgID(serverType);
try
{
//創(chuàng)建接口
pIOPCServer =(IOPCServer)System.Activator.CreateInstance(svrComponenttyp);
error="";
}
catch (System.Exception err) //捕捉失敗信息
{
error="錯(cuò)誤信息:"+err.Message;success=false;
}
return success;
}
5、 編寫添加Group的函數(shù)
///


/// 添加組
/// 
/// 組名
/// /創(chuàng)建時(shí),組是否被激活
/// //組的刷新頻率,以ms為單位
/// 返回錯(cuò)誤信息
/// 若為true,添加成功,否則添加失敗
public bool AddGroup(string groupName,int bActive,int updateRate,out string error)

error="";bool success=true;
int dwLCID = 0x407; //本地語(yǔ)言為英語(yǔ) 
int pRevUpdateRate;
float deadband = 0;
// 處理非托管COM內(nèi)存
GCHandle hDeadband;
IntPtr pTimeBias = IntPtr.Zero;
hDeadband = GCHandle.Alloc(deadband,GCHandleType.Pinned);
try
{
pIOPCServer.AddGroup(groupName, //組名
bActive, //創(chuàng)建時(shí),組是否被激活
updateRate, //組的刷新頻率,以ms為單位
hClientGroup, //客戶號(hào)
pTimeBias, //這里不使用
(IntPtr)hDeadband,
dwLCID, //本地語(yǔ)言
out nSvrGroupID, //移去組時(shí),用到的組ID號(hào)
out pRevUpdateRate, //返回組中的變量改變時(shí)的最短通知時(shí)間間隔
ref iidRequiredInterface,
out pobjGroup1); //指向要求的接口
hClientGroup=hClientGroup+1; 
groupStru grp=new groupStru();
grp.groupID=nSvrGroupID;grp.groupObj=pobjGroup1;
this.hashGroup.Add(groupName,grp);//儲(chǔ)存組信息
// 對(duì)異步操作設(shè)置回調(diào),初始化接口
pIConnectionPointContainer = (IConnectionPointContainer)pobjGroup1;
Guid iid = typeof(IOPCDataCallback).GUID;
pIConnectionPointContainer.FindConnectionPoint(ref iid,out pIConnectionPoint);
pIConnectionPoint.Advise(this,out dwCookie);
}
catch (System.Exception err) //捕捉失敗信息
{
error="錯(cuò)誤信息:"+err.Message;success=false;
}
finally
{
if (hDeadband.IsAllocated) hDeadband.Free();
}
return success;
}

6、 編寫激活、或者取消激活組的函數(shù)

在同步編程中對(duì)于組的激活或者取消激活沒(méi)有實(shí)質(zhì)的意義,但在異步通訊編程中卻異常重要,這是因?yàn)镺PC服務(wù)器只對(duì)當(dāng)前處于活動(dòng)狀態(tài)的組中的變量進(jìn)行監(jiān)控,同時(shí)這也是很有必要的,因?yàn)槲覀兛梢园巡煌缑嬷械淖兞烤幊滩煌慕M,即同一界面中的變量規(guī)成一個(gè)組,而在某一時(shí)刻提供給用戶的只有一個(gè)界面,讓該界面中用到的組處于活動(dòng)狀態(tài),這樣執(zhí)行委托調(diào)用時(shí)只會(huì)執(zhí)行于該界面中有關(guān)的變量檢測(cè),而如果讓所有的組處于活動(dòng)狀態(tài),則當(dāng)前沒(méi)有顯示給用戶的界面用到的變量若發(fā)生變化也會(huì)觸發(fā)對(duì)委托函數(shù)的調(diào)用,這根本是沒(méi)有必要的,同時(shí)會(huì)大大降低程序的性能,請(qǐng)嚴(yán)格控制組的激活。
///
/// 激活或者取消激活組
/// 
/// 指定組名
/// true為激活,false為取消激活
/// 若有錯(cuò)誤,返回錯(cuò)誤信息
/// 若為true,添加成功,否則添加失敗
public bool AciveGroup(string groupName,bool toActive,out string error)
{
error="";bool success=true;
//通過(guò)名稱獲取組
object grp=((groupStru)hashGroup[groupName]).groupObj;
IOPCGroupStateMgt groupStateMgt=(IOPCGroupStateMgt)grp;
//初始化傳遞參數(shù)
IntPtr pRequestedUpdateRate = IntPtr.Zero; //由客戶指定的Item更新間隔時(shí)間
int nRevUpdateRate = 0; //由服務(wù)器返回的能夠更新的最短時(shí)間間隔
IntPtr hClientGroup = IntPtr.Zero; //客戶組
IntPtr pTimeBias = IntPtr.Zero;
IntPtr pDeadband = IntPtr.Zero;
IntPtr pLCID = IntPtr.Zero; 

// 激活或者取消激活組
int nActive = 0; 
GCHandle hActive = GCHandle.Alloc(nActive,GCHandleType.Pinned);
if(toActive)
hActive.Target = 1;
else
hActive.Target = 0;
try 
{
groupStateMgt.SetState(pRequestedUpdateRate,out nRevUpdateRate,hActive.AddrOfPinnedObject(),pTimeBias,pDeadband,pLCID,hClientGroup); 
}
catch(System.Exception err)
{
error="錯(cuò)誤信息:"+err.Message;success=false;
}
finally
{
hActive.Free(); 
}
return success;
}

7、 向指定的組中添加變量的函數(shù)
///
/// 向指定的組添加一系列項(xiàng)
/// 
/// 指定組名
/// 完整的item名數(shù)組
/// 由服務(wù)器返回讀寫數(shù)據(jù)時(shí)需要使用的item號(hào)
/// 無(wú)錯(cuò)誤,返回true,否則返回false
public bool AddItems(string groupName,string[] itemsName,int[] itemsID)
{
bool success=true;
OPCITEMDEF[] ItemDefArray=new OPCITEMDEF[itemsName.Length];
for(int i=0;i {
hClientItem=hClientItem+1; //客戶項(xiàng)自動(dòng)加1
ItemDefArray[i].szAccessPath = ""; // 可選的通道路徑,對(duì)于Simatiic Net不需要。
ItemDefArray[i].szItemID = itemsName[i]; // ItemID, see above
ItemDefArray[i].bActive = 1; // item is active
ItemDefArray[i].hClient = hClientItem; // client handle ,在OnDataChange中會(huì)用到
ItemDefArray[i].dwBlobSize = 0; // blob size
ItemDefArray[i].pBlob = IntPtr.Zero; // pointer to blob 
ItemDefArray[i].vtRequestedDataType = 4; //DWord數(shù)據(jù)類型
}
//初始化輸出參數(shù)
IntPtr pResults = IntPtr.Zero;
IntPtr pErrors = IntPtr.Zero;
try 
{
// 添加項(xiàng)到組
object grp=((groupStru)hashGroup[groupName]).groupObj;
((IOPCItemMgt)grp).AddItems(itemsName.Length,ItemDefArray,out pResults,out pErrors);

int[] errors = new int[itemsName.Length]; 
IntPtr pos = pResults;
Marshal.Copy(pErrors, errors, 0,itemsName.Length);
for(int i=0;i {
if (errors[i] == 0)
{
OPCITEMRESULT result = (OPCITEMRESULT)Marshal.PtrToStructure(pos, typeof(OPCITEMRESULT));
itemsID[i] = result.hServer; 
pos = new IntPtr(pos.ToInt32() + Marshal.SizeOf(typeof(OPCITEMRESULT)));
}
else
{
String pstrError;
pIOPCServer.GetErrorString(errors[0],0x407,out pstrError); 
success=false;
break;
}
}
SetItenClient(groupName,itemsID,itemsID); //要求始終只有一個(gè)組被激活,才不會(huì)引起沖突。
}
catch (System.Exception err) // catch for error in adding items.
{
success=false;
//error="錯(cuò)誤信息:"+error+err.Message;
}
finally
{
// 釋放非托管內(nèi)存
if(pResults != IntPtr.Zero)
{
Marshal.FreeCoTaskMem(pResults);
pResults = IntPtr.Zero;
}
if(pErrors != IntPtr.Zero)
{
Marshal.FreeCoTaskMem(pErrors);
pErrors = IntPtr.Zero; 
}
}
return success;
}

來(lái)源:上海贊國(guó)
版權(quán)聲明:工控網(wǎng)轉(zhuǎn)載作品均注明出處,本網(wǎng)未注明出處和轉(zhuǎn)載的,是出于傳遞更多信息之目的,并不意味 著贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性。如轉(zhuǎn)載作品侵犯作者署名權(quán),或有其他諸如版權(quán)、肖像權(quán)、知識(shí)產(chǎn)權(quán)等方面的傷害,并非本網(wǎng)故意為之,在接到相關(guān)權(quán)利人通知后將立即加以更正。聯(lián)系電話:0571-87774297。
今日最新資訊
熱門資訊
0571-87774297