OPC实现自动化读写过程

采用自动化接口实现过程
对于自动化接口,程序相应简单些。
建立项目:Automation_RW
OPC实现自动化读写过程_第1张图片
测试中,对 db10.dbw0 db10.dbw2 读写操作,在 Form 窗口做如下设计:
Control name Text
Button: Btn_Conn Conn
Button: Btn_Read_S Read_S
Button: Btn_Read_A Read_A
Button: Btn_Write_S Write_S
Button: Btn_Write_A Write_A
Button: Btn_DisConn disConn
TextBox: Txt_R1_Value
TextBox: Txt_R1_Quality
TextBox: Txt_R1_TimeStamp
TextBox: Txt_R2_Value
TextBox: Txt_R2_Quality
TextBox: Txt_R2_TimeStamp
TextBox: Txt_W1
TextBox: Txt_W2
TextBox: Txt_ Txt_WriteStatus2
CheckBox: CHK_Btn
OPC实现自动化读写过程_第2张图片
第一步,添加下列命名空间(首先在 COM 组件中添加相应组件)
using OPCSiemensDAAutomation;
第二步,定义 OPC 相关变量
OPCServer MyOpcServer; //定义OPCServer
OPCGroup MyOpcGroup; //定义组
OPCItem MyOpcItem1; //Item
OPCItem MyOpcItem2; //值
long [] ServerHandle = new long [2]; //Item 的句柄
第三步,建立连接及对象
MyOpcServer = new OPCServer ();
MyOpcServer.Connect( "OPC.SimaticNet" , "192.168.0.102" );
MyOpcGroup = MyOpcServer.OPCGroups.Add( "MyGroup1" );
MyOpcItem1 = MyOpcGroup.OPCItems.AddItem( "S7:[S7 connection_1]DB10,INT0" ,1);
MyOpcItem2 = MyOpcGroup.OPCItems.AddItem( "S7:[S7 connection_1]DB10,INT2" , 2);
ServerHandle[0] = MyOpcItem1.ServerHandle;
ServerHandle[1] = MyOpcItem2.ServerHandle;
第四步,同步读数据,
private void Btn_Read_S_Click( object sender, EventArgs e) //同步读数据
{
……
MyOpcItem1.Read(1, out ItemValues, out Qualities, out TimeStamps);
//ItemValues,Qualities,TimeStamps分别是值,质量码及时间
//也可以通过调用SyncRead函数,参数可参考异步读函数
……
}
第四步,同步写数据
private void Btn_Write_S_Click( object sender, EventArgs e)
{
……
MyOpcItem1.Write(Txt_W1.Text);
//也可以通过调用SyncWrite函数,参数可参考异步写函数
……
}
第五步,异步事件定义,
在异步操作情况下,需要定义相应的异步事件
MyOpcGroup.DataChange += new
DIOPCGroupEvent_DataChangeEventHandler (MyOpcGroup_DataChange); //
//订阅方式下数据改变
iteComplete += new
DIOPCGroupEvent_AsyncWriteCompleteEventHandler (MyOpcGroup_WriteComplete);
//写完成事件
MyOpcGroup.AsyncReadComplete += new
DIOPCGroupEvent_AsyncReadCompleteEventHandler (MyOpcGroup_ReadComplete);
//读完成事件
MyOpcGroup.AsyncCancelComplete += new
DIOPCGroupEvent_AsyncCancelCompleteEventHandler (MyOpcGroup_CancelComplete);
//取消操作事件
在使用中注意,其事件函数要按照特定接口:
void MyOpcGroup_DataChange( int TransactionID, int NumItems, ref Array ClientHandles,
ref Array ItemValues, ref Array Qualities, ref Array TimeStamps)
void MyOpcGroup_WriteComplete( int TransactionID, int NumItems, ref Array ClientHandles,
ref Array Errors)
void MyOpcGroup_ReadComplete( int TransactionID, int NumItems, ref System. Array
ClientHandles, ref System. Array ItemValues, ref System. Array Qualities,
ref System. Array TimeStamps, ref System. Array Errors)
void MyOpcGroup_CancelComplete( int CancelID)
第六步订阅方式读
void MyOpcGroup_DataChange( int TransactionID, int NumItems, ref Array ClientHandles,
ref Array

你可能感兴趣的:(c#,OPC实现自动化读写过程)