⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 write_s7_300_real.bas

📁 可以读些S7-300PLC中的变量数据
💻 BAS
字号:
Attribute VB_Name = "Module3"
Public Function Write_S7_300_Real(ByVal Input_Real As Single) As Byte()
Dim Exponent As Integer
Dim Return_Array_real(10) As Byte

While (Input_Real > 1)
Input_Real = Input_Real / 2
Temp_Exponent = Temp_Exponent + 1
Wend
Mantissa = Input_Real * 2 '尾数
Exponent = Temp_Exponent - 1 + 127 '指数
Binary_Exponent = DecimalConvertBinary(Exponent)

Mantissa_String = Trim(Mantissa)

Digitis = Len(Mantissa_String) - 2 '长度减去小数点和小数点前面的数

ppp = Right(Mantissa_String, Digitis) '将小数点后的数取出

Real_Convert_Binary = ppp / 10 ^ Digitis

'-------------------------------------------------------------------------------
s = ""
Index = 1

For Index = 1 To 23

Real_Convert_Binary = Real_Convert_Binary * 2

If Real_Convert_Binary > 1 Then

s = s + "1"

Real_Convert_Binary = Real_Convert_Binary - 1

Else
s = s + "0"
End If
Next Index
Temp_Real_Convert_Binary_String = s

Real_Convert_Binary_String = Binary_Exponent + Temp_Real_Convert_Binary_String
'--------------------------------------------------------------------------------
Binary_String = Trim(Real_Convert_Binary_String)

BinaryStrLength = Len(Binary_String)

Third_EightBit = Right(Binary_String, 8) '第三个八位

Temp1 = Right(Binary_String, 16)

Second_EightBit = Left(Temp1, 8) '第二个八位

Temp2 = Right(Binary_String, 24)

First_EightBit = Left(Temp2, 8) '第一个八位

HighEightBit_Length = BinaryStrLength - 24

Zero_EightBit = Left(Binary_String, HighEightBit_Length) '第零个八位
'--------------------------------------------------------------------------------------
Return_Array_real(0) = BinaryConvertDecimal(Zero_EightBit)

Return_Array_real(1) = BinaryConvertDecimal(First_EightBit)

Return_Array_real(2) = BinaryConvertDecimal(Second_EightBit)

Return_Array_real(3) = BinaryConvertDecimal(Third_EightBit)

Write_S7_300_Real = Return_Array_real


End Function

Public Function DecimalConvertBinary(DecimalInput As Integer) As String
'------------------十进制转二进制------------------------------------------------
Dim HighBit As Long '转换成二进制的最高位数
Dim AndResult As Long  '相与后的结果

Dim BinaryString As String

BinaryString = ""
HighBit = 256
            While (HighBit > 0.5) '
                AndResult = HighBit And DecimalInput
                If (AndResult <> 0) Then
                    BinaryString = BinaryString + "1"
                    Else
                    BinaryString = BinaryString + "0"
                End If
                HighBit = HighBit / 2 '每次右移一位
            Wend
        DecimalConvertBinary = BinaryString '存储的是二进制数的字符串
'******************************************************************************************
End Function
Public Function BinaryConvertDecimal(ByVal varString As String) As Long
          Dim Slen     As Long
          Dim i     As Long
          Dim returnNum     As Long
          Slen = Len(varString)
          For i = 0 To Slen - 1
                  returnNum = returnNum + Val(Mid(varString, i + 1, 1)) * (2 ^ (Slen - i - 1))
          Next
          BinaryConvertDecimal = returnNum
  End Function


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -