![c通過opc連接plc讀寫功能案例_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/10/7a3cee3d-f8d6-4bc9-be93-0a22bf45988d/7a3cee3d-f8d6-4bc9-be93-0a22bf45988d1.gif)
![c通過opc連接plc讀寫功能案例_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/10/7a3cee3d-f8d6-4bc9-be93-0a22bf45988d/7a3cee3d-f8d6-4bc9-be93-0a22bf45988d2.gif)
![c通過opc連接plc讀寫功能案例_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/10/7a3cee3d-f8d6-4bc9-be93-0a22bf45988d/7a3cee3d-f8d6-4bc9-be93-0a22bf45988d3.gif)
![c通過opc連接plc讀寫功能案例_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/10/7a3cee3d-f8d6-4bc9-be93-0a22bf45988d/7a3cee3d-f8d6-4bc9-be93-0a22bf45988d4.gif)
![c通過opc連接plc讀寫功能案例_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/10/7a3cee3d-f8d6-4bc9-be93-0a22bf45988d/7a3cee3d-f8d6-4bc9-be93-0a22bf45988d5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、For pers onal use only in study and research; not for commercial useFor pers onal use only in study and research; not for commercial use最簡單、最有效的PLC1接程序,里面包含了各種類型的讀寫功 能,絕對是拷貝過去,直接把地址替換就可以使用。功能簡介:本程序主要是針對PLC發(fā)送請求信號,收到信號執(zhí)行調(diào)用,例如:由PLC發(fā)送請求信號1,程序自動去調(diào)用,當(dāng)調(diào)用結(jié)束, 信號恢復(fù)為0,直到下一次變?yōu)?,再次進(jìn)行調(diào)用;1、手工下載一個 Interop.OPCAutoma
2、tion.dll2、手工創(chuàng)建一個類 PublicOPC_PLC3、直接調(diào)用即可,調(diào)用方法:PublicOPC_PLCPlc = new PublicOPC_PLC);Plc.I ni tCo nn ect();Plc.CH160CreateGroup("PLC 地址");/此處的PLC地址必須為PLC中DB塊 對應(yīng)的BOOL型的地址 例如:C1.S7.DB35.DBX544.0using System;using System.Collections.Generic;using System.Linq;using System.Text;using OPCAutomatio
3、n;using System.Net;using System.Threading;n amespaceOPCServicepublic class PublicOPC_PLC#regi on私有變量/ <summary>III OPCServer Object/ </summary>public static OPCServer MyServer;/ <summary>/ OPCGroups Object/ </summary>public static OPCGroupsMyGroups;/ <summary>/ OPCGroup
4、 Object/ </summary>public staticOPCGroupMyGroupM 代public staticOPCGroupMyGroupMA2;/ <summary>/ OPCItems Object/ </summary>OPCItems MyltemsMA;/ <summary>/ OPCItem Object/ </summary>OPCIten MyltemMA;/ <summary>/ 主機(jī)IP/ </summary>public staticstring strHostIP =&
5、quot;"/ <summary>/主機(jī)名稱/ </summary>public staticstring strHostName =""/ <summary>/ 連接狀態(tài)/ </summary>public static bool opc_connected = false/ <summary>/ 客戶端句柄/ </summary>int itmHandleClient = 0;/ <summary>Ill服務(wù)端句柄III </summary>int itmHandl
6、eServer = 0;public OPCGroupGroupMAget return MyGroupM代#en dregi on/ <summary>/初始化連接對應(yīng)的狀態(tài),包括連接服務(wù)器,需要讀取的初始值/ </summary>public void InitConnect()/初始化OP服務(wù)配置GetLocalServer();ConnectRemoteServer();/ 連接 OP服務(wù)器MyGroups = MyServer.OPCGroups;/枚舉本地OP服務(wù)器public void GetLocalServer() |/獲取本地計算機(jī)IP,計算機(jī)名稱s
7、trHostName =Dn sGetHostName();/或者通過局域網(wǎng)內(nèi)計算機(jī)名稱/獲取本地計算機(jī)IP,計算機(jī)名稱IPHostE ntry IPHost = Dn sResolve( En viro nmen t .Mach in eName); if (IPHost.AddressList.Length > 0) I:_IPHostEntry ipHostEntry =Dn sGetHostByAddress(IPHost.AddressListO.ToStri ng();strHostName = ipHostE ntry.HostName.ToStri ng(); I/獲取本
8、地計算機(jī)上的 OPCServerNametryMyServer =new OPCServeiQ;object serverList = MyServer.GetOPCServers(strHostName); foreach ( string server in ( Array )serverList)/cmbServerName .I tems.Add(tur n);Console.WriteLine("本地 OP服務(wù)器:0" , server);catch ( Exception err)Console.WriteLine("枚舉本地 OP服務(wù)器岀錯:0&qu
9、ot; , err.Message);/連接OP服務(wù)器/ vparam name="remoteServerlP"> OPCServerlP</param> |/ vparam n ame="remoteServerName">OPCServe 名稱 </param>public bool ConnectRemoteServer()trystring remoteServerIP ="" , remoteServerName = "KEPware.KEPServerEx.V4"M
10、yServer.Connect(remoteServerName, remoteServerIP);/ 連接本地服務(wù)器:服務(wù)器名+主機(jī)名或IPif (MyServer.ServerState = ( int ) OPCServerState .OPCRunning) 亠/MessageBox.Show("已連接到:0", MyServer.ServerName);/WriteLog_Station(" 網(wǎng)絡(luò)連接成功");else/這里你可以根據(jù)返回的狀態(tài)來自定義顯示信息,請查看自動化接口API文檔/MessageBox.Show("狀態(tài):0&q
11、uot;, MyServer.ServerState.ToString();/WriteLog_Station(" 網(wǎng)絡(luò)連接失敗"); MyServer.ServerShutDown += ServerShutDown;/ 服務(wù)器斷開事件catch ( Exception err)/MessageBox.Show("連接遠(yuǎn)程服務(wù)器岀現(xiàn)錯誤:0" + err.Message);return false ;return true ;public void ServerShutDown( string Reason) / 服務(wù)器先行斷開/WriteLog_St
12、atio n("服務(wù)器已經(jīng)先行斷開!");MyServer.Disc onn ect();public void RemoveGroup(string Name)MyServer.OPCGroups.Remove(Name); Ivoid GroupAsyncWriteComplete( int TransactionID,int NumItems, ref Array ClientHandles,ref Array Errors)Con sole.WriteLi ne( "%As yn cWriteComplete%" /*for (int i = 1
13、; i <= 1; i+)Co nsole.WriteLi ne("Tra n0 ClientHandles: 1 Error : 2",Tran sactio nID.ToStri ng(), Clie ntHa ndles.GetValue(i).ToStri ng(),Errors.GetValue(i).ToStr in g();*/void GroupAsyncReadComplete( int TransactionID,int NumItems, ref System. ArrayClientHandles,ref System. Array ItemV
14、alues, ref System. Array Qualities, ref System. ArrayTimeStamps, ref System. Array Errors)Con sole .WriteLi ne( ”*GroupAs yn cReadComplete*");for ( int i = 1; i <= 1; i+)/Console.WriteLine("Tran: 0 ClientHandles: 1 Error : 2",TransactionID.ToString(), ClientHandles.GetValue(i).ToSt
15、ring(),Errors.GetValue(i).ToStrin g();Console.WriteLine( "Vaule : 0" , Convert .ToString(ItemValues.GetValue(i);#regio n讀取功能public void AddGroupItems( string Address) / 添加組MyItemMA =n ewOPCItenfl;int i = 0;/i用于標(biāo)記Item中的索引/itmHan dleServer;|MyItemsMA = MyGroupMA.OPCItems;/MyItems2 = MyGroup2
16、.OPCItems;MyItemMA0 = MyItemsMA.AddItem(Address, i);/ <summary>/ 讀取byte轉(zhuǎn)ASCII值/ </summary>public string ReadData( string Add) string result =""try/初始化item數(shù)組AddGroupItems(Add);Thread.Sleep(200);/GetLocalServer();/暫停線程以讓DataChange反映,否則下面的同步讀可能讀不到/以下同步讀object ItemValues;object Qua
17、lities; object TimeStamps; / 同步讀的臨時變量:值、質(zhì)量、時間戳MyltemMA0.Read(1,out ItemValues, out Qualities, out TimeStamps);/ 同步讀,第一個參數(shù)只能為1或2/int qO = Convert.Tolnt32(ltemValues);轉(zhuǎn)換后獲取 item 值Byte bytTemp = ItemValues as Byte ;/將byte數(shù)組轉(zhuǎn)為字符串+result = System.Text.ASCIIEncoding .ASCII.GetString(bytTemp); /OK/MessageB
18、ox.Show(result," 結(jié)果");return result; / <summary>/ 讀取boolean值,需要先創(chuàng)建group/ </summary>/ <param n ame="Add"></param>/ <retur nsx/retur ns>public Boolean ReadData_Boolean( string Add) _Boolean result = false ;try/初始化item數(shù)組AddGroupItems(Add);Thread.Sleep(2
19、00);/GetLocalServer();/暫停線程以讓DataChange反映,否則下面的同步讀可能讀不到/以下同步讀object ItemValues; object Qualities; object TimeStamps; / 同步讀的臨時變量: 值、質(zhì)量、時間戳MyItemMA0.Read(1,out ItemValues, out Qualities, out TimeStamps); / 同步讀,第一個參數(shù)只能為1或2/int q0 = Convert.Tolnt32(ltemValues);轉(zhuǎn)換后獲取 item 值Boolea n result1 = ( Boolea n)
20、ItemValues;result = result1;return result;catch ( Exception ex)/異常處理return result;/ <summary>III 讀取Object值,需要先創(chuàng)建group/ </summary>/ vparam n ame="Add"></param>/ <retur ns></retur ns>public object ReadData_Object( string Add) _tryAddGroupItems(Add);Thread.Sle
21、ep(200);/暫停線程以讓DataChange反映,否則下面的同步讀可能讀不到/以下同步讀object ItemValues; object Qualities; object TimeStamps; / 同步讀的臨時變量: 值、質(zhì)量、時間戳MyltemMA0.Read(1,out ItemValues, out Qualities, out TimeStamps); / 同步讀,第一個參數(shù)只能為1或2/int qO = Convert.Tolnt32(ltemValues);轉(zhuǎn)換后獲取 item 值result = ItemValues;if (result != null )resul
22、t = result.ToString().Replace("0","");result = result.ToString().Replace("n","");result = result.ToString().Replace("r","");result = result.ToString().Replace("t","");return result;tryMyGroupMA = MyServer.OPCGroups.Add(A
23、ddress);/ 添加組/以下設(shè)置組屬性 MyServer.OPCGroups.DefaultGrouplsActive =true ;/ 激活組。MyServer.OPCGroups.DefaultGroupDeadband = 0;/ 死區(qū)值,設(shè)為 0時,服務(wù)器端該組內(nèi)任何數(shù)據(jù)變化都通知組。MyServer.OPCGroups.DefaultGroupUpdateRate = 200;/ 默認(rèn)組群的刷新頻率為200msMyGroupMA.UpdateRate = 100;/ 刷新頻率為 1 秒。MyGroupMA.IsSubscribed =true ; /使用訂閱功能,即可以異步,默認(rèn)
24、 false "|/MyGroupMA.DataCha nge += newDIOPCGroupEve nt_DataCha ngeEve ntHa ndler(GroupDataCha nge_Heart);MyGroupMA.As yn cWriteComplete +=newDIOPCGroupEvent_AsyncWriteCompleteEventHandler (GroupAsyncWriteComplete);MyGroupMA.Asy ncReadComplete +=newDIOPCGroupEve nt_As yn cReadCompleteEve ntHa nd
25、ler(GroupAs yn cReadComplete); Icatch ( Exception err)this.WriteLog_Statio n("過點創(chuàng)建組岀現(xiàn)錯誤:"+ err.Message);return false ;return true ;#en dregi on#regio n寫入功能/ <summary>Ill 寫入方法asciiIII <lsummary>Ill vparam n ame="Value"></param>public void WriteFa( string Value
26、)int temp;temp =new int 0, MyltemMAO.ServerHandle ; II 機(jī)型stri ng typecode = Value;byte arrValue = System.Text.Encoding .Default.GetBytes(typecode); II 將string 轉(zhuǎn)為 byteArray serverHandles = ( Array )temp; |object valueTemp = new object 2 "”,arrValue ; llitem 數(shù)量為 2Array values = ( Array )valueTemp
27、;Array Errors;int cancelID;MyGroupMA.AsyncWrite(1,ref serverHandles,ref values, out Errors, 1, outcancelID); II 第一參數(shù)為 item 數(shù)量Ill <summary>Ill 寫入 objectIll <lsummary>Ill vparam n ame="Value"><Iparam>public void WritecharFa( string Value)int temp = new int 0, MyitemMA0.S
28、erverHandle ; II 寫入數(shù)據(jù) Item 數(shù)量 2Array serverHandles = ( Array )temp;object valueTemp = new object 2 "" , Value ; llitem 數(shù)量為 2Array values = ( Array )valueTemp;Array Errors;int cancelID;MyGroupMA.AsyncWrite(1,ref serverHandles, ref values, out Errors, 1, outcancelID); II第一參數(shù)為item數(shù)量 private v
29、oid WriteByteFa( byte Value)int temp = new int 0, MyltemMAO.ServerHandle ;II 寫入數(shù)據(jù) Item 數(shù)量 2Array serverHandles = ( Array )temp;object valueTemp = new object 2 "" , Value ; llitem 數(shù)量為 2Array values = ( Array )valueTemp;Array Errors;int cancelID;MyGroupMA.AsyncWrite(1,ref serverHandles,ref v
30、alues, out Errors, 1, outcancelID); II第一參數(shù)為item數(shù)量#en dregi on#regi onCH160/<summary>/創(chuàng)建組/</summary>/<param n ame="List Info" ></param>/<param n ame="cou nt"></param>/<retur nsx/retur ns>OPCGroupsMyGroupsStatio nCH160;/<summary>/OPCG
31、roup Object/</summary>OPCGroupMyGroupStatio nCH160;/<summary>/OPCItems Object/</summary>OPCItems MyItemsStatio nCH160;/<summary>/OPCItem Object/</summary>OPCIten MyItemStatio nCH160;public OPCGroupGroupStatio nCH160 1get return MyGroupStationCH160; public bool CH160Crea
32、teGroup( string Address) MyGroupStationCH160 = MyServer.OPCGroups.Add(Address);/ 添加組/以下設(shè)置組屬性 MyServer.OPCGroups.DefaultGrouplsActive =true ;/ 激活組。MyServer.OPCGroups.DefaultGroupDeadband = 0;/ 死區(qū)值,設(shè)為 0時,服務(wù)器端該組內(nèi)任何數(shù)據(jù)變化都通知組。MyServer.OPCGroups.DefaultGroupUpdateRate = 200;/ 默認(rèn)組群的刷新頻率為200msMyGroupStationC
33、H160.UpdateRate = 100;/ 刷新頻率為 1 秒。MyGroupStationCH160.lsSubscribed =true ; / 使用訂閱功能,即可以異步,默認(rèn) falseMyGroupStatio nCH160.DataCha nge +=newDIOPCGroupEve nt_DataCha ngeEve ntHa ndler(GroupDataCha nge_CH160Heart);MyGroupStatio nCH160.Asy ncWriteComplete +=newDIOPCGroupEvent_AsyncWriteCompleteEventHandler
34、 (GroupAsyncWriteComplete);MyGroupStatio nCH160.Asy ncReadComplete +=newDIOPCGroupEve nt_As yn cReadCompleteEve ntHa ndler(GroupAs yn cReadComplete); AddGroupItemsCH160(Address);catch ( Exception err)return false ;return true ;void GroupDataChange_CH160Heart(int TransactionID,int Numitems, ref Array
35、ClientHandles,ref Array ItemValues, ref Array Qualities, ref Array TimeStamps) |tryfor ( int i = 1; i <= 1; i+)if (ItemValues.GetValue(i) != null )object bb = ItemValues.GetValue(i);stri ng s = bb.ToStri ng();string EngineNo =""if (s = "True")string Finish ="" ; /反饋讀取結(jié)束標(biāo)記/ "OPC 對應(yīng)的地址,例如:M1.S7.DB10,STRING12,50" En gi neNo =this .ReadData_Object( "M1.S7.DB10,STRING12,50" ).ToString();/讀取數(shù)據(jù)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 買房車購車合同范例
- 代發(fā)快遞服務(wù)合同范本
- 2025年度環(huán)保技術(shù)研發(fā)與應(yīng)用合作合同
- 2025年度國際物流信息平臺進(jìn)口與實施合同
- 兄弟合伙生意合同范本
- 城市中等裝修房屋出租合同范本
- 入股代理合同范本
- 關(guān)于砂石購買標(biāo)準(zhǔn)合同范本
- 出版社教材出版合同范本
- 2025年食品級甘氨酸鈉項目投資可行性研究分析報告
- 政府資金項目(榮譽(yù))申報獎勵辦法
- JJF 1069-2012 法定計量檢定機(jī)構(gòu)考核規(guī)范(培訓(xùn)講稿)
- 最新如何進(jìn)行隔代教育專業(yè)知識講座課件
- 當(dāng)前警察職務(wù)犯罪的特征、原因及防范,司法制度論文
- 計算機(jī)文化基礎(chǔ)單元設(shè)計-windows
- 創(chuàng)建動物保護(hù)家園-完整精講版課件
- 廣東省保安服務(wù)監(jiān)管信息系統(tǒng)用戶手冊(操作手冊)
- DNA 親子鑒定手冊 模板
- DB33T 1233-2021 基坑工程地下連續(xù)墻技術(shù)規(guī)程
- 天津 建設(shè)工程委托監(jiān)理合同(示范文本)
- 部編一年級語文下冊教材分析
評論
0/150
提交評論