包含opcvb.net的词条

关于VB.NET 的AddressOf 问题你好 , EnableDisconnectNotification、 EnableWriteNotification这两个是外部函数吧,是委托吗opcvb.net?
建议使用委托可以看看下面opcvb.net的例子
此示例演示如何使用委托将过程传递给另一个过程 。
委托是一种类型,与任何其opcvb.net他类型一样可在 Visual Basic 中使用 。AddressOf 运算符如果应用到一个过程名,则返回一个委托对象 。
此示例有一个具有委托参数的过程,该委托参数可接受对另一个过程的引用 , 而引用则是通过 AddressOf 运算符获得的 。
创建委托和匹配过程
创建一个名为 MathOperator 的委托 。
Visual Basic
复制代码
Delegate Function MathOperator( _
ByVal x As Double, _
ByVal y As Double _
) As Double
创建一个名为 AddNumbers 的过程,其参数和返回值与 MathOperator 的参数和返回值匹配 , 以使签名匹配 。
Visual Basic
复制代码
Function AddNumbers( _
ByVal x As Double, _
ByVal y As Double _
) As Double
Return xy
End Function
创建名为 SubtractNumbers 的过程 , 其签名与 MathOperator 匹配 。
Visual Basic
复制代码
Function SubtractNumbers( _
ByVal x As Double, _
ByVal y As Double _
) As Double
Return x - y
End Function
创建一个名为 DelegateTest 的过程,它接受一个委托作为参数 。
此过程可接受对 AddNumbers 或 SubtactNumbers 的引用,这是因为它们的签名与 MathOperator 签名匹配 。
Visual Basic
复制代码
Sub DelegateTest( _
ByVal x As Double, _
ByVal op As MathOperator, _
【包含opcvb.net的词条】ByVal y As Double _
)
Dim ret As Double
ret = op.Invoke(x, y) ' Call the method.
MsgBox(ret)
End Sub
创建一个名为 Test 的过程 , 它使用 AddNumbers 的委托作为参数调用 DelegateTest 一次,然后使用 SubtractNumbers 的委托作为参数再次调用 。
Visual Basic
复制代码
Protected Sub Test()
DelegateTest(5, AddressOf AddNumbers, 3)
DelegateTest(9, AddressOf SubtractNumbers, 3)
End Sub
调用 Test 时,它首先显示 AddNumbers 对 5 和 3 的操作结果,也就是 8 。然后显示 SubtractNumbers 对 9 和 3 的操作结果,也就是 6 。
创建一个名为 MySubDelegate 的委托 。
Delegate Sub MySubDelegate(ByVal x As Integer)
声明一个类 , 该类包含与该委托具有相同签名的方法 。
Class class1Sub Sub1(ByVal x As Integer)MsgBox("The value of x is: "CStr(x))End SubEnd Class
定义一个方法,该方法创建该委托的实例并通过调用内置的 Invoke 方法调用与该委托关联的方法 。
Protected Sub DelegateTest()Dim c1 As New class1' Create an instance of the delegate.Dim msd As MySubDelegate = AddressOf c1.Sub1' Call the method.msd.Invoke(10)End Sub
VB.NET的OPC读取西门子PLC数值转换12601, 转换成16进制是3139,16进制 ASC吗31对应字符1 , 39对应9 。后面的用这个思路去转换就对上了 。
0001 2569这两个应该是和格式相关的字符 。0001一般就是开始的意思 。
一个变量包含两个字符,转换算法如下 。
1 。取高位字符,除以H100 , H是VB中16进制表示法 。除以H100效果是右移8位 。位了保险起见,再和H00FF做与运算,保证取得的ASC码是合法的 。
2 。取低位字符 , 与H00FF做与运算,去掉高位数据,剩下的就是低位ASC码 。
3 。将ASC码转换为字符,用CHR函数即可,然后连接所有的字符即可得String
西门子PLC1200数据如何直接存储到SQL数据库中?网上搜到的:\x0d\x0apc从西门子plc读取数据的方法有两类:\x0d\x0a\x0d\x0a1是通过wincc这类组态软件\x0d\x0a\x0d\x0a2是自己用高级语言(vb、vc等等),方法主要有:\x0d\x0aopc(西门子simaticnet opc、第三方kepware opc)\x0d\x0aprodave(西门子的一个软件包 , 提高vb和c的通讯函数库)\x0d\x0asimticnet软件提供了几个通讯dll(此法是一般的第三方scada所采用)\x0d\x0a\x0d\x0a可以用其他组态软件,比如组态王 。也可以用vb编写一程序然后从plc读取数据再写入数据库 。如果不需要监控画面,我觉得vb好些 。
vb怎么读取或修改opc变量值首先申明OPC对象:
Option Base 1
Dim WithEvents ServerObj As OPCServer'OPC Server对象 , 连接OPC服务器
Dim GroupsObj As OPCGroups'OPC Groups对象,添加OPC组
Dim WithEvents GroupObj As OPCGroup'OPC Group对象
Dim ItemsObj As OPCItems'OPC Item集合
Dim ServerHandles() As Long'服务器端OPC Item的句柄
Dim ClientHandles() as Long'客户端OPC Item的句柄
Dim ItemId(2) As String
Dim Errors() As Long
接下来,生成各个对象:
If ServerObj Is Nothing Then Set ServerObj = New OPCServer
'连接OPC服务器
If ServerObj.ServerState = OPCDisconnected Then
ServerObj.Connect ("OPC.SimaticNET") '假设OPC服务器运行在本机
End If
If GroupsObj Is Nothing Then Set GroupsObj = ServerObj.OPCGroups
If GroupObj Is Nothing Then Set GroupObj = GroupsObj.Add
If ItemsObj Is Nothing Then Set ItemsObj = GroupObj.OPCItems
GroupObj.IsActive = True'设置组为活动状态
'假设有两个数据源,一个是8位开关量输入,一个是8位开关量输出
ItemId(1) = "S7:[S7 connection_1]IB0"
ItemId(2) = "S7:[S7 connection_1]QB0"
ClientHandles(1) = 1
ClientHandles(2) = 2
'添加组项目,ServerHandles数组的值为各个OPC Item的服务器句柄,
' ClientHandles数组的值为各个OPC Item的客户端句柄,由应用程序设定
Call ItemsObj.AddItems(2, ItemId, ClientHandles, ServerHandles, Errors)
此opc不支持浏览器接口 winccOPC的各种标准软件接口由OPC基金会定义 。WinCC的OPC服务器支持下列规范 。
(1)OPC DA 1.0A和2.0
OPC数据访问(OPC DA)是管理过程数据的规范 。WinCC OPC DA服务器负荷此规范
(2)OPC HDA 1.1
OPC历史数据访问(OPC HDA)是管理归档数据的规范 。该规范是对OPC数据访问规范的扩充,WinCC OPC HDA服务器符合此规则
(3)OPC AE 1.0
OPC报警和事件是发送过程报警和事件的规范,
opcvb.net的介绍就聊到这里吧 , 感谢你花时间阅读本站内容,更多关于、opcvb.net的信息别忘了在本站进行查找喔 。

    推荐阅读