重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
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
我做梯形图开始的,对于VB不太懂,是不是可以换个思路,不直接读PLC,而是通过wincc的OPC映射?这样只要找到数据在wincc中的符号名,就能通过OPC获取
您好,我用过的是S7-200 PLC与WINCC通讯,两者通讯必须使用西门子提供的软件PC_ACCESS。在PC_ACCESS中建立变量,地址要与PLC变量地址对应。然后通过wincc的OPC服务器添加PC_ACCESS里面的变量即可。这样WINCC就和PLC变量链接上了!
首先申明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)