【正文】
等封裝命令,發(fā)送 CIP 消息即可:Service:Get_Attribute_Single(0x0E)Path:Identity Object(class 0x01,instance 1),Product Name()作為回復(fù),接口送回如下信息:Service:Get_Attribute_SingleReply(0x8E)Response:length=12, “1756ENET/A”CIP 對(duì)象模型同樣包括“模擬輸入點(diǎn)”(0x0A)和“離散輸入組”(0x1D)對(duì)象,但是到目前為止,我們一切試圖使用它們來(lái)訪問(wèn) ControlLogix 模擬或數(shù)字輸入模塊的行為都失敗了。原因是沒(méi)有一個(gè)標(biāo)準(zhǔn)的 CIP 對(duì)象可以用來(lái)訪問(wèn) PLC 的標(biāo)簽名稱。與此同時(shí),AB 公司針對(duì) ControlLogix 推出了新的 CIP 服務(wù)編碼,包括使用 CIP 路徑來(lái)命名梯形圖邏輯標(biāo)簽、單獨(dú)使用讀寫的服務(wù)代碼以及結(jié)合了傳輸二進(jìn)制數(shù)據(jù)格式而使用的一些傳輸協(xié)議。使用 SendRRData 封裝命令來(lái)發(fā)送 CIP 數(shù)據(jù)到 PLC,必須通過(guò)連接管理器對(duì)象 1756ENET 模塊來(lái)尋址,見(jiàn)下例:Service:CM_Unconnected_Send(0x52)Path:Connection Manager(class 0x06,instance 1)encoded timeout,embedded messagePath:Port1(back plane),Link (slot of PLC)。這則消息是讀取一個(gè)標(biāo)簽‘TEST’:Service:CIP_Read_Data(0x4C)Path:‘TEST’(ANSI extended symbol segment)Elements:UINT1當(dāng)從 PLC 的回復(fù)顯示端口連接成功則連接管理器開(kāi)始傳輸:Service:CIP_Read_DataReply(0xCC)Response:CA 00 00 80 38 3B=REAL CIP_Write_Data 服務(wù)(0x53) 允許在 PLC 上通過(guò)相似嵌入修改標(biāo)簽。與其它通信協(xié)議相比,它對(duì)梯形邏輯圖的要求并沒(méi)有改變!CIP 讀寫服務(wù)能夠訪問(wèn)所有控制器標(biāo)簽而不需要預(yù)先在 PLC 編程的軟件標(biāo)記他們?yōu)椤吧a(chǎn)”或“消費(fèi)”類型,這包括對(duì) I/O 模塊的接入:模擬輸入模塊可利用在槽 1 上的第一通道,即“Local:1:”。這種類型的傳輸稱為明確無(wú)關(guān)聯(lián)傳輸,因?yàn)闃?biāo)簽名被明確地提出,各個(gè)協(xié)議包是單獨(dú)尋址。對(duì)于連接信息, 在 PLC 上的消息路由器被要求打開(kāi)連接:Service:CM_Forward_Open(0x54)Path:Connection Manager(class 0x06,instance 1)timeout,connection ID,update interval,…Connection Path: Port1,Link0(back plane,PLC slot), Message Router(class 0x02,instance 1)回復(fù)信息中提供一個(gè)號(hào)碼。CIP_Read_Data 請(qǐng)求能夠按照 SendUnitData 封裝命令的連接消息立即發(fā)送, 同時(shí)在信息前加上一個(gè)順序編號(hào),發(fā)送 CM_Unconnected_Send 消息則并不需要嵌入這些。4 設(shè)計(jì)的方案因?yàn)?ControlNet 連接信息的優(yōu)勢(shì)不能在 EtherNet/IP 上體現(xiàn),這時(shí)就可以使用無(wú)關(guān)聯(lián)信息:以太網(wǎng)不預(yù)留帶寬;通過(guò) TCP 協(xié)議來(lái)保證傳輸。對(duì)于 CIP_Read_Data 請(qǐng)求,比起關(guān)聯(lián)信息,無(wú)關(guān)聯(lián)信息有效地壓縮了信息,并且在傳輸中提高了 3%的速率。而缺點(diǎn)是,客戶端應(yīng)用程序必須在建立更新連接時(shí)發(fā)送請(qǐng)求,或者更快。以太網(wǎng)的延遲將導(dǎo)致 PLC斷開(kāi)連接。ControlLogix 多請(qǐng)求服務(wù)(0x0A)是用作合并 CIP_Read/Write_Data 請(qǐng)求,即當(dāng)總請(qǐng)求或期望的請(qǐng)求值的大小到達(dá) PLC 的緩沖極限(大約 500 字節(jié))的時(shí)候使用。5 EPICS 技術(shù)支持的實(shí)施根據(jù)請(qǐng)求的更新率,vxWorks 驅(qū)動(dòng)代碼針對(duì)各個(gè) PLC 在掃瞄列表中都安排了標(biāo)簽名。一周期內(nèi)每個(gè) PLC 將處理所有讀寫請(qǐng)求。EPICS 設(shè)備的輸入和輸出驅(qū)動(dòng)支持:模擬量、二進(jìn)制數(shù)和多位記錄類型。當(dāng)使用單個(gè)數(shù)組元素或結(jié)構(gòu)體元素,以及并非數(shù)組或結(jié)構(gòu)體的全部時(shí),標(biāo)簽名就必須使用標(biāo)量值。可以處理的 PLC 數(shù)據(jù)類型包括 BOOL、SINT、INT、DINT 和 REAL。也可以在運(yùn)行時(shí)改變記錄的配置,這些是不需要重新起動(dòng)輸入輸出控制器(IOC)的,即所涉及的標(biāo)簽名記錄能實(shí)時(shí)替換。當(dāng)發(fā)生通信錯(cuò)誤或超時(shí),驅(qū)動(dòng)將默認(rèn)斷開(kāi) PLC 連接并嘗試再連接。數(shù)組元素進(jìn)入數(shù)組時(shí),驅(qū)動(dòng)默認(rèn)要求傳輸順序是從第一個(gè)元素到請(qǐng)求最高的元素。這樣就決定了傳送時(shí)間會(huì)大量減少,但可能會(huì)產(chǎn)生其他作用:每當(dāng)輸出改變的記錄超過(guò)一個(gè)元素時(shí),輸入輸出控制器(IOC)總將重寫整個(gè)數(shù)組。因?yàn)槌掷m(xù)傳輸,同樣的 PLC 數(shù)組被其它數(shù)據(jù)來(lái)源也修改了(由 PanelView 顯示),輸入輸出控制器(IOC)對(duì)這些變動(dòng)忽略而重寫他們。數(shù)組傳輸同樣是受到上述 PLC 緩沖極限和大小限制的。針對(duì)這些情況,記錄配置允許個(gè)別的數(shù)組元素傳輸?shù)焦ぷ鲄^(qū)。對(duì)于輸出記錄, 每當(dāng)記錄被處理時(shí),驅(qū)動(dòng)都將發(fā)送一個(gè) CIP_Write_Data 消息。否則它將周期性地從 PLC 上讀取標(biāo)簽,并且當(dāng)記錄內(nèi)容不同時(shí),在 PLC 上將不斷更新輸出記錄值。驅(qū)動(dòng)為各掃瞄列表保留統(tǒng)計(jì)信息(錯(cuò)誤計(jì)數(shù),最新/最小/最大傳送時(shí)間)。模擬輸入記錄能夠得到這些值。這樣會(huì)出現(xiàn)一個(gè)問(wèn)題,以 BOOL 數(shù)組為例,他們會(huì)被作為 DINT 值傳輸。對(duì)于一個(gè)模擬值記錄,標(biāo)簽“TEST[5]”會(huì)被作為第 5 個(gè)元素標(biāo)記“TEST” 。同樣地當(dāng)在 BOOL 數(shù)組中,結(jié)果會(huì)是標(biāo)記第 5 個(gè) DINT,160191 位。所以對(duì)于二進(jìn)制記錄,所有數(shù)組被作為BOOL 數(shù)組進(jìn)行連通,并且“TEST[5]”會(huì)在對(duì) DINT[0](第 5 位)請(qǐng)求時(shí)傳輸。以上情況在 PPC 和奔騰輸入輸出控制器(IOC)68K 上都作了測(cè)試。更底層的驅(qū)動(dòng)層會(huì)依次處理其他的字節(jié)。另外,一條簡(jiǎn)單的命令行編程是可以在 Unix 和 Win32 上使用的,它允許作為一種對(duì) PLC 標(biāo)簽讀寫的調(diào)試工具。6 成果請(qǐng)看下面,使用 MVME2100 CPU 與 100baseT 網(wǎng)絡(luò)接口通過(guò)一個(gè)雙倍速集線器連接到一個(gè) 10baseT PLC。其它辦公室個(gè)人計(jì)算機(jī)和 Linux 文件服務(wù)器連接到同樣的集線器上。網(wǎng)絡(luò)使用率一般在 2%以下。若是傳輸標(biāo)量 REAL、BOOL 或 DINT,以及一組 15 個(gè) REAL 或352 個(gè) BOOL 值,速度是平均 11 毫秒傳輸一個(gè)單個(gè)的標(biāo)簽。從 EPICS 驅(qū)動(dòng)合并多個(gè)請(qǐng)求是由 PLC 決定并受緩沖極限限制的,大約 15 個(gè)標(biāo)簽,每個(gè)以 15 個(gè)字符命名,當(dāng)單獨(dú)的傳輸要求超過(guò) 160ms 時(shí),合并后可能只需大約 20ms。而當(dāng)使用普通設(shè)置時(shí),輸入輸出控制器(IOC)配置了 352 個(gè)二進(jìn)制的輸入記錄,以10Hz 掃描一個(gè) BOOL 數(shù)組的元素。而 120 個(gè)模擬輸入記錄,以 2Hz 掃描的三個(gè)元素為 40個(gè) REAL 的數(shù)組。因?yàn)橐蕴W(wǎng)的不確定性,由于網(wǎng)絡(luò)擁擠這些傳輸?shù)谋壤龝?huì)隨時(shí)間而變化,造成的傳送時(shí)間如下面直方圖。圖 1:3 天內(nèi)的傳送時(shí)間。整個(gè) BOOL 數(shù)組傳輸時(shí)間平均是在 15ms 內(nèi),所有 REAL 的數(shù)組傳輸了 25ms,以便于記錄能更容易地在選定的掃瞄速率上更新。對(duì)于這些測(cè)量值,PLC 的“系統(tǒng)上限的時(shí)間”設(shè)置到了 10%。在增加到 50%以后同時(shí)連接 CPU 和 PLC 到網(wǎng)絡(luò)交換器,單個(gè)標(biāo)簽的平均時(shí)間減少到了 7ms。7 結(jié)論在使用開(kāi)放的 AB 公司產(chǎn)品進(jìn)行讀寫標(biāo)簽等操作時(shí),遵循 EtherNet/IP 協(xié)議是十分重要的。EPICS 使用起來(lái)很方便。在系統(tǒng)運(yùn)行時(shí)也可以隨意改變記錄配置;傳輸中由 PLC 緩沖極限的限制從而自動(dòng)地決定是否合并。對(duì)比其它協(xié)議,沒(méi)有必要定義標(biāo)簽名為“生產(chǎn)者”或“消費(fèi)者” ,亦不要求為 ControlNet 傳輸預(yù)定一個(gè)網(wǎng)絡(luò)帶寬值。根據(jù)以太網(wǎng)的本身特性,傳送速率會(huì)隨時(shí)間自動(dòng)變化。交換網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)也使網(wǎng)絡(luò)的不確定性減到了最小。為了達(dá)到所需的輸出值,也可以將值放在數(shù)組里。這樣保證了梯形邏輯圖的可讀性,傳輸數(shù)組元素時(shí),標(biāo)簽名字盡量使用可理解的而非無(wú)意義的名稱。CIP 服務(wù)代碼不允許讀取 PLC 標(biāo)簽名字及類型等信息,但它可以使用更為友好的EPICS 驅(qū)動(dòng)。各明確信息的標(biāo)簽傳輸信息是雙向的請(qǐng)求。測(cè)試的 1756ENET 模塊版本不支持隱性信息。理想的輸入輸出控制器(IOC)能讀取標(biāo)簽并且能接受隨時(shí)變動(dòng)的異步通知或周期性更新,沒(méi)有不確定性。對(duì)于目前的實(shí)施水平,已經(jīng)可以在 EPICS 環(huán)境下成功的使用 ControlLogix 綜合系統(tǒng)。附錄 2INTERFACING THE CONTROLLOGIX PLC OVER ETHERNET/IP. Kasemir, . Dalesio, LANL, Los Alamos, NM 87545, USAAbstract The AllenBradley ControlLogix [1] line of programmable logic controllers (PLCs) offers several interfaces: Ether, ControlNet, DeviceNet, RS232 and others. The ControlLogix Ether interface module 1756ENET uses EtherNet/IP, the ControlNet protocol [2], encapsulated in Ether packages, with specific service codes [3]. A driver for the Experimental Physics and Industrial Control System (EPICS) has been developed that utilizes this EtherNet/IP protocol for controllers running the vxWorks RTOS as well as a Win32 and Unix/Linux test program. Features, performance and limitations of this interface are presented. 1 INTRODUCTION Several subsystems of the Spallation Neutron Source project (SNS) employ AllenBradley ControlLogix PLCs [4]. To integrate these into the EPICSbased accelerator control system, the EPICS input/output controllers (IOCs) need read and write access to the PLC data. Since the IOCs, their Unix or Win32 boot hosts as well as almost every PC which is used to program the PLC is already equipped with an Ether interface, it is desirable to use the same technology for transferring the PLC data. Existing support and knowledge for cabling, work hardware, configuration and maintenance can thus be utilized. 2 ETHERNET/IP ControlNet is a deterministic serial munication system, its specification extends from the physical to the application layer of the seven layer ISO OSI model[5]. ControlNet Release [2] introduced the TCP/IP encapsulation of data packages, replacing the Physical and Data Link layer with Ether respectively IP/UDP/TCP. The result was known as “ControlNet over Ether” and is now called EtherNet/IP [6]. After connecting to an EtherNet/IP target, by default on TCP/IP port 0xAF12, and establishing a session ID via the encapsulation protocol, messages can be exchanged. They are defined in the object oriented Control and Information Protocol (CIP), part of the ControlN