HaiGrang.Package.OpcNetApiChs.NET 客户端例程 点击:6238 | 回复:12



haigrang

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:16帖 | 59回
  • 年度积分:0
  • 历史总积分:175
  • 注册:2005年12月20日
发表于:2006-05-20 17:54:00
楼主
@@@@@@@@@@@                      Opc Connect Server                        private void bOpcServerConnect_Click(object sender, System.EventArgs e)
{
OpcServerConnect() ;
}

private string tMachineString = "" ;
private string tKEPServerExUrlString = "KEPware.KEPServerEx.V4" ;

OpcServer tOpcServer = new OpcServer() ;

private void OpcServerConnect()
{
tOpcServer.Connect( tMachineString, tKEPServerExUrlString );
bOpcServerName.Text = tOpcServer.ServerName.ToString() ;
OpcServerRemove.Text = tOpcServer.HostInfo.ToString() ;
}




haigrang

  • 精华:0帖
  • 求助:0帖
  • 帖子:16帖 | 59回
  • 年度积分:0
  • 历史总积分:175
  • 注册:2005年12月20日
发表于:2006-05-20 17:55:00
1楼
@@@@@@@@@@@@@                    Opc DisConnect Server                       private void OpcServerDisConnect_Click(object sender, System.EventArgs e)
{
tOpcServer.Disconnect() ;
OpcServerRemove.Text = "Opc Server Disconnect" ;
}

haigrang

  • 精华:0帖
  • 求助:0帖
  • 帖子:16帖 | 59回
  • 年度积分:0
  • 历史总积分:175
  • 注册:2005年12月20日
发表于:2006-05-20 17:56:00
2楼
@@@@@@@@@@@@@                           Add Opc Group                       
private void AddOpcGroup_Click(object sender, System.EventArgs e)
{
OpcAddGroup() ;
}

private OpcGroup tOpcGroup ;
private string tGroupName = "thisGroup" ;
private bool tActive = true ;
private int tEquestedUpdateRate = 1000;
private float tDeadBand = 0.0F ;
private string tReturnGroupName ;

private void OpcAddGroup()
{
tOpcGroup = tOpcServer.AddGroup(tGroupName, tActive, tEquestedUpdateRate, ref tDeadBand, 0, 0);
tReturnGroupName = tOpcGroup.Name.ToString() ;
OpcGroupName.Text = tReturnGroupName ;

tOpcGroup.DataChanged += new DataChangeEventHandler( DataChangedHandler );
tOpcGroup.ReadCompleted += new ReadCompleteEventHandler( ReadCompleteHandler );
tOpcGroup.WriteCompleted += new WriteCompleteEventHandler( WriteCompleteHandler );
tOpcGroup.AdviseIOPCDataCallback();
}

haigrang

  • 精华:0帖
  • 求助:0帖
  • 帖子:16帖 | 59回
  • 年度积分:0
  • 历史总积分:175
  • 注册:2005年12月20日
发表于:2006-05-20 17:57:00
3楼
@@@@@@@@@@@@@                           Add Opc Item                        
private void AddOpcItem_Click(object sender, System.EventArgs e)
{
OpcAddItem() ;
}

private System.Array tOPCItemsValueReturn = Array.CreateInstance( typeof(String), 5 ) ;
private OPCItemDef[] tOPCItems ;
private string tOPCItemsPath0 = "WaterMotorControl.Group02" ; 
private string tOPCItemsName0 = "WaterMotorpictureBox1" ; 
private string tOPCItemsPath1 = "WaterMotorControl.Group02" ; 
private string tOPCItemsName1 = "WaterMotorpictureBox2" ; 
private string tOPCItemsPath2 = "WaterMotorControl.Group02" ; 
private string tOPCItemsName2 = "WaterMotorpictureBox3" ; 
private string tOPCItemsPath3 = "WaterMotorControl.Group02" ; 
private string tOPCItemsName3 = "WaterMotorpictureBox4" ; 
private string tOPCItemsPath4 = "WaterMotorControl.Group02" ; 
private string tOPCItemsName4 = "WaterMotorpictureBox5" ; 

private System.Int32 tOpcAddItems ;
private OPCItemResult[] tOPCItemResult ;

private void OpcAddItem()
{
  tOPCItems = new OPCItemDef[5];
   tOPCItems[0] = new OPCItemDef();
   tOPCItems[0].HandleClient = 1001;
   tOPCItems[0].AccessPath = tOPCItemsPath0 ; 
   tOPCItems[0].ItemID = tOPCItemsName0; 
tOPCItems[0].Active = true ;
tOPCItems[0].RequestedDataType = VarEnum.VT_R8 ;

   tOPCItems[1] = new OPCItemDef();
   tOPCItems[1].HandleClient = 1002;
   tOPCItems[1].AccessPath = tOPCItemsPath1 ; 
   tOPCItems[1].ItemID = tOPCItemsName1; 
tOPCItems[1].Active = true ;
tOPCItems[1].RequestedDataType = VarEnum.VT_R8 ;

tOPCItems[2] = new OPCItemDef();
   tOPCItems[2].HandleClient = 1003;
   tOPCItems[2].AccessPath = tOPCItemsPath2 ; 
   tOPCItems[2].ItemID = tOPCItemsName2; 
tOPCItems[2].Active = true ;
tOPCItems[2].RequestedDataType = VarEnum.VT_R8 ;

   tOPCItems[3] = new OPCItemDef();
   tOPCItems[3].HandleClient = 1004;
   tOPCItems[3].AccessPath = tOPCItemsPath3 ; 
   tOPCItems[3].ItemID = tOPCItemsName3; 
tOPCItems[3].Active = true ;
tOPCItems[3].RequestedDataType = VarEnum.VT_R8 ;

   tOPCItems[4] = new OPCItemDef();
   tOPCItems[4].HandleClient = 1005;
   tOPCItems[4].AccessPath = tOPCItemsPath4 ; 
   tOPCItems[4].ItemID = tOPCItemsName4; 
tOPCItems[4].Active = true ;
tOPCItems[4].RequestedDataType = VarEnum.VT_R8 ;

tOPCItemResult = new OPCItemResult[1];
   tOPCItemResult[0] = new OPCItemResult();

tOpcAddItems = tOpcGroup.AddItems(tOPCItems,out tOPCItemResult) ;
}

haigrang

  • 精华:0帖
  • 求助:0帖
  • 帖子:16帖 | 59回
  • 年度积分:0
  • 历史总积分:175
  • 注册:2005年12月20日
发表于:2006-05-20 17:57:00
4楼
@@@@@@@@@@@@@                        Remove Opc Group                       
private void RemoveOpcGroup_Click(object sender, System.EventArgs e)
{
tOpcGroup.Remove(true) ;
OpcGroupName.Text = "Opc Group already Remove" ;
}

haigrang

  • 精华:0帖
  • 求助:0帖
  • 帖子:16帖 | 59回
  • 年度积分:0
  • 历史总积分:175
  • 注册:2005年12月20日
发表于:2006-05-20 17:58:00
5楼
@@@@@@@@@@@@@                        Remove Opc Item                        
private int[] tArrayHandleServer  ;
private int[] tArrayRemoveOpcItemError  ;
private System.Int32 tArrayRemoveOpcItemReturn ;

private void RemoveOpcItem_Click(object sender, System.EventArgs e)
{
  tArrayHandleServer = new int[5];
   tArrayHandleServer[0] = tOPCItemResult[0].HandleServer;
   tArrayHandleServer[1] = tOPCItemResult[1].HandleServer;
   tArrayHandleServer[2] = tOPCItemResult[2].HandleServer;
   tArrayHandleServer[3] = tOPCItemResult[3].HandleServer;
   tArrayHandleServer[4] = tOPCItemResult[4].HandleServer;

tArrayRemoveOpcItemReturn = tOpcGroup.RemoveItems(tArrayHandleServer,out tArrayRemoveOpcItemError) ;
OpcRemoveItemName.Text = tArrayRemoveOpcItemReturn.ToString() ; 
}

haigrang

  • 精华:0帖
  • 求助:0帖
  • 帖子:16帖 | 59回
  • 年度积分:0
  • 历史总积分:175
  • 注册:2005年12月20日
发表于:2006-05-20 17:59:00
6楼
@@@@@@@@@@@@@                          Read Opc Item                        
private void ReadOpcItem_Click(object sender, System.EventArgs e)
{
OpcReadOpcItem() ;
}

private int tCancelID ;
private int[] tArrayError ;
private int tRtc ;
private int[] tItemSrvHnd = new int[5];

private void OpcReadOpcItem()
{
tItemSrvHnd[0] = tOPCItemResult[0].HandleServer;
tItemSrvHnd[1] = tOPCItemResult[1].HandleServer;
tItemSrvHnd[2] = tOPCItemResult[2].HandleServer;
tItemSrvHnd[3] = tOPCItemResult[3].HandleServer;
tItemSrvHnd[4] = tOPCItemResult[4].HandleServer;
tRtc = tOpcGroup.Read(tItemSrvHnd, 1, out tCancelID, out tArrayError ) ;  // async read
}

private void ReadCompleteHandler( object sender, ReadCompleteEventArgs e )
{
OpcItemValue1.Text = e.sts[0].DataValue.ToString();
OpcItemValue2.Text = e.sts[1].DataValue.ToString();
OpcItemValue3.Text = e.sts[2].DataValue.ToString();
OpcItemValue4.Text = e.sts[3].DataValue.ToString();
OpcItemValue5.Text = e.sts[4].DataValue.ToString();
}

haigrang

  • 精华:0帖
  • 求助:0帖
  • 帖子:16帖 | 59回
  • 年度积分:0
  • 历史总积分:175
  • 注册:2005年12月20日
发表于:2006-05-20 17:59:00
7楼
@@@@@@@@@@@@@                      Write Opc Item                           @@@@@@@@@@@@@@@@@@
// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

private int[] tWriteItemSrvHnd = new int[1];
private object[] tWriteArrayValue = new object[1];
private int tWtc ;

private void WriteOpcItem_Click(object sender, System.EventArgs e)
{
OpcWriteOpcItem() ;
}

private void OpcWriteOpcItem()
{
  tWriteArrayValue = new object[1];
   tWriteArrayValue[0] = new object();
tWriteArrayValue[0] = textWriteOpcItem.Text ;
tWriteItemSrvHnd[0] = tOPCItemResult[0].HandleServer;
tWtc = tOpcGroup.Write(tWriteItemSrvHnd,tWriteArrayValue, 1, out tCancelID, out tArrayError ) ;  // async read
}

private void WriteCompleteHandler( object sender, WriteCompleteEventArgs e )
{
OpcItemWriteValue.Text = e.res[0].Error.ToString() ;
}

haigrang

  • 精华:0帖
  • 求助:0帖
  • 帖子:16帖 | 59回
  • 年度积分:0
  • 历史总积分:175
  • 注册:2005年12月20日
发表于:2006-05-20 18:00:00
8楼
@@@@@@@@@@@@@                      Item Data Change                         
private void DataChangedHandler( object sender, DataChangeEventArgs e )
{
OpcItemLength.Text = e.sts.Length.ToString() ;
for( int i = 0 ; i < e.sts.Length ; i++ )
{
switch(e.sts[i].HandleClient)       
{         
case 1001:   
OpcItemValue1.Text = e.sts[i].DataValue.ToString();
break;                  
case 1002:            
OpcItemValue2.Text = e.sts[i].DataValue.ToString();
break;                  
case 1003:            
OpcItemValue3.Text = e.sts[i].DataValue.ToString();
break;                  
case 1004:            
OpcItemValue4.Text = e.sts[i].DataValue.ToString();
break;                  
case 1005:            
OpcItemValue5.Text = e.sts[i].DataValue.ToString();
break;                  
default:            
break;      
}
}
}



shibaoyou

  • 精华:1帖
  • 求助:0帖
  • 帖子:97帖 | 346回
  • 年度积分:0
  • 历史总积分:633
  • 注册:2005年11月27日
发表于:2006-06-05 20:00:00
9楼
不懂,太厉害了

citygrass

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 33回
  • 年度积分:0
  • 历史总积分:56
  • 注册:2002年1月18日
发表于:2006-06-06 10:54:00
10楼
那个开发包有点数及时间限制吗 ?

有开发Server的开发包吗 ?

haigrang

  • 精华:0帖
  • 求助:0帖
  • 帖子:16帖 | 59回
  • 年度积分:0
  • 历史总积分:175
  • 注册:2005年12月20日
发表于:2006-06-06 10:58:00
11楼
没有点数及时间限制

rjc

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 14回
  • 年度积分:0
  • 历史总积分:109
  • 注册:2001年12月04日
发表于:2006-11-17 10:52:00
12楼
能否发送源码学习学习,谢谢,email:jiachengruan@163.com

热门招聘
相关主题

官方公众号

智造工程师