wincc的OPC通讯接收到的数据怎么转换成double型和single型

我通过OPC通讯接收到一组字节数组,我想把他变成double型和single型的数据来进行处理,该如何来实现,我知道vb里可以用
for i = 0 to 10
CopyMemory a(i), b(i * 4), 4
next i
的方式来把字节数组b变成single型a,但wincc的vbs脚本里好像没有CopyMemory函数

最佳答案

示例代码:

Function mHexToDecimal(varHexArray)
    mHexToDecimal = varHexArray(0)*2^24+varHexArray(1)*2^16+varHexArray(2)*2^8+varHexArray(3)  
End Function


Function mHexToBin(varHexArray)
    Dim lngDec
    Dim strHexToBin
    lngDec = CLng(mHexToDecimal(varHexArray)) 
    Do While lngDec > 0
        strHexToBin = CStr(lngDec Mod 2) & Trim(strHexToBin)
        lngDec = lngDec \ 2
    Loop
    mHexToBin = strHexToBin
End Function


Function mHexToSingle(varHexArray)
    Dim i
    Dim BinLen
    Dim SngBin
    Dim Sign
    Dim Exp
    Dim Frac
    
    If varHexArray(0) > &H7F Then
      Sign = -1
      varHexArray(0)=varHexArray(0)-&H80
    Else
      Sign = +1
    End If
         
    SngBin=mHexToBin(varHexArray)
    BinLen=Len(SngBin)
    
    For i=1 To 32-BinLen
     SngBin="0" & SngBin
    Next    
    
    For i=1 To 8
     Exp=Mid(SngBin, i+1, 1)*2^(8-i)+Exp
    Next
    Exp=2^(Exp-127)
        
    For i=1 To 23
     Frac=Mid(SngBin, i+9, 1)*2^(-i)+Frac
    Next    
    Frac=1+Frac
    
    mHexToSingle=Sign*Exp*Frac
    
End Function

提问者对于答案的评价:
谢谢,我想问一下double型的话是不是把for循环分别改成1 to 64-BinLen,1 to 8,1 to 56就可以了

最佳答案作者回复:
是的,但mHexToBin,mHexToDecimal可能要有改动,你可以自己试试

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc316903.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月1日 下午4:27
下一篇 2020年11月1日 下午4:27

相关推荐

  • wincc flexible application遇到问题需要关闭

    每次一编译就出这个报警然后flexibie自动关闭,我想可能程序中的画面地址有问题,不过怎么查找呢?有没有什么错误记录? 最佳答案 先新建一个项目看看能否编译,如果没有问题,首先可…

    SIMATIC WinCC 2019年6月11日
  • wincc报警导入导出

    (1)wincc报警导出,导出的内容比wincc,alarm logging中多出的部分是什么(2)将导出的内容修改后再导入会对原系统带来影响吗?(3)导出时,有个选择框…

    SIMATIC WinCC 2019年6月11日
  • WINCC与400通讯

    现在有个项目:WINCC通过CP443-1对416F-2 监控 问题1:要在416F-2上编写通讯程序吗,还是直接在WINCC组态好就行了?问题2:组态的时候,…

    SIMATIC WinCC 2019年6月11日
  • 求教WINCC的全局脚本

    各位高人,我用了一个已有全局C脚本的项目,学习做VBS的全局脚本,发现C脚本的动作有服务器的名称,但是VBS的脚本新建动作后没有服务器,也不会运行。另外C脚本中有标准函数,但VBS…

    2021年7月5日
  • K-TP178触摸屏编程电缆

    我有一根S7200使的6ES7901-3DB30-OXAO能下载K-TP178触摸屏吗 最佳答案 USB接口的PC/PPI电缆可以用于K-TP178的下载,但要E-Stand05及…

    SIMATIC WinCC 2019年6月11日
  • WINCC7.4 打不开项目,求大神帮忙解决 我要用V7.4版本打开

    V7.0的项目  用V7.3移植成功  用V7.3打开成功,再用V7.4打开失败。  直接用V7.4移植7.0项目,移植…

    2021年7月5日
  • 有关WINCC脚本

    给点有关WINCC脚本的参考资料吧,入门的就好,我现在对WINCC脚本基本没有什么概念,想学习下,谢谢。 最佳答案 已发到你的邮箱huatec_qxx@126.com,注意查收。 …

    SIMATIC WinCC 2019年6月11日
  • wincc位图背景透明功能?

    在intouch中有一个可以让导入的位图中的一种颜色变成透明的工具。。这样可以省去在PS中编辑的过程。很方便!不知道wincc是否也有这样的功能呢? 问题补充:看来确实没有 最佳答…

    SIMATIC WinCC 2019年6月11日
  • 关于数据桥

    指定OLE DB Provider,即数据库驱动时,数据库是在另一台机子上,IP为192.0.0.6,Oracle 9i数据库。 请问我在S…

    SIMATIC WinCC 2019年6月11日
  • wincc 趋势控件上统计计算功能

    wincc 7.3 趋势视图上的统计计算功能按钮怎么是暗的,标尺和设置统计范围都调出了。求大神用图解答 最佳答案 需要关联组态WinCC RulerC…

    SIMATIC WinCC 2017年6月10日