OPC实现自动化读写过程

采用自动化接口实现过程
对于自动化接口,程序相应简单些。
建立项目:Automation_RW
测试中,对 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
第一步,添加下列命名空间(首先在 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 ItemValues, <
  • 28
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

A_nanda

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值