VB.NET的OPC读取西门子PLC数值转换

VB.NET的OPC读取西门子PLC数值转换,第1张

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

首先申明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)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12382049.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存