粗大浓稠硕大噗嗤噗嗤h,精品人妻码一区二区三区,国产av无码专区亚洲精品,日韩a片无码毛片免费看小说

PLC企業(yè)資訊
    西門子變頻器6SL3211OAB125UB1
    發(fā)布者:黃工  發(fā)布時間:2016-04-09 00:10:40
    西門子變頻器6SL3211OAB125UB1,西門子變頻器6SL3211OAB125UB1

                               {心中有空間,夢想就有可能}

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    機械特點

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

    設(shè)備功能

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

    SIMATIC S7-1200 配備不同的通訊機制:

    • 集成的 PROFINET 接口
    • 通過通訊模板實現(xiàn)點對點連接

    PROFINET 接口

    集成的 PROFINET 接口允許進行下列通訊:

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

    支持以下協(xié)議:

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

    運用VC#編程通過OPC方式實現(xiàn)PC機與西門子PLC通訊

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


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

    error="";bool success=true;
    int dwLCID = 0x407; //本地語言為英語 
    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)建時,組是否被激活
    updateRate, //組的刷新頻率,以ms為單位
    hClientGroup, //客戶號
    pTimeBias, //這里不使用
    (IntPtr)hDeadband,
    dwLCID, //本地語言
    out nSvrGroupID, //移去組時,用到的組ID號
    out pRevUpdateRate, //返回組中的變量改變時的最短通知時間間隔
    ref iidRequiredInterface,
    out pobjGroup1); //指向要求的接口
    hClientGroup=hClientGroup+1; 
    groupStru grp=new groupStru();
    grp.groupID=nSvrGroupID;grp.groupObj=pobjGroup1;
    this.hashGroup.Add(groupName,grp);//儲存組信息
    // 對異步操作設(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="錯誤信息:"+err.Message;success=false;
    }
    finally
    {
    if (hDeadband.IsAllocated) hDeadband.Free();
    }
    return success;
    }

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

    在同步編程中對于組的激活或者取消激活沒有實質(zhì)的意義,但在異步通訊編程中卻異常重要,這是因為OPC服務(wù)器只對當前處于活動狀態(tài)的組中的變量進行監(jiān)控,同時這也是很有必要的,因為我們可以把不同界面中的變量編程不同的組,即同一界面中的變量規(guī)成一個組,而在某一時刻提供給用戶的只有一個界面,讓該界面中用到的組處于活動狀態(tài),這樣執(zhí)行委托調(diào)用時只會執(zhí)行于該界面中有關(guān)的變量檢測,而如果讓所有的組處于活動狀態(tài),則當前沒有顯示給用戶的界面用到的變量若發(fā)生變化也會觸發(fā)對委托函數(shù)的調(diào)用,這根本是沒有必要的,同時會大大降低程序的性能,請嚴格控制組的激活。
    ///
    /// 激活或者取消激活組
    /// 
    /// 指定組名
    /// true為激活,false為取消激活
    /// 若有錯誤,返回錯誤信息
    /// 若為true,添加成功,否則添加失敗
    public bool AciveGroup(string groupName,bool toActive,out string error)
    {
    error="";bool success=true;
    //通過名稱獲取組
    object grp=((groupStru)hashGroup[groupName]).groupObj;
    IOPCGroupStateMgt groupStateMgt=(IOPCGroupStateMgt)grp;
    //初始化傳遞參數(shù)
    IntPtr pRequestedUpdateRate = IntPtr.Zero; //由客戶指定的Item更新間隔時間
    int nRevUpdateRate = 0; //由服務(wù)器返回的能夠更新的最短時間間隔
    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="錯誤信息:"+err.Message;success=false;
    }
    finally
    {
    hActive.Free(); 
    }
    return success;
    }

    7、 向指定的組中添加變量的函數(shù)
    ///
    /// 向指定的組添加一系列項
    /// 
    /// 指定組名
    /// 完整的item名數(shù)組
    /// 由服務(wù)器返回讀寫數(shù)據(jù)時需要使用的item號
    /// 無錯誤,返回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; //客戶項自動加1
    ItemDefArray[i].szAccessPath = ""; // 可選的通道路徑,對于Simatiic Net不需要。
    ItemDefArray[i].szItemID = itemsName[i]; // ItemID, see above
    ItemDefArray[i].bActive = 1; // item is active
    ItemDefArray[i].hClient = hClientItem; // client handle ,在OnDataChange中會用到
    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 
    {
    // 添加項到組
    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); //要求始終只有一個組被激活,才不會引起沖突。
    }
    catch (System.Exception err) // catch for error in adding items.
    {
    success=false;
    //error="錯誤信息:"+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;
    }

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