通过CAN-bus总线对室内空调的温/湿度模拟系统进行控制

然后,在运行策略中新建一个名为StringToObject 的用户策略,新增一策略行并添加以下脚本程序,用于将In_CANData 转换到数值型对象:

In_Flag = !Hex2I(!mid(In_CANData, 1, 2))

In_Extern = !Hex2I(!mid(In_CANData, 3, 1))

In_Remote = !Hex2I(!mid(In_CANData, 4, 1))

In_ID = !Hex2I(!mid(In_CANData, 5, 8))

In_DataLen = !Hex2I(!mid(In_CANData, 13 , 2))

In_Data0 = !Hex2I(!mid(In_CANData, 15, 2))

In_Data1 = !Hex2I(!mid(In_CANData, 17, 2))

In_Data2 = !Hex2I(!mid(In_CANData, 19, 2))

In_Data3 = !Hex2I(!mid(In_CANData, 21, 2))

In_Data4 = !Hex2I(!mid(In_CANData, 23, 2))

In_Data5 = !Hex2I(!mid(In_CANData, 25, 2))

In_Data6 = !Hex2I(!mid(In_CANData, 27, 2))

In_Data7 = !Hex2I(!mid(In_CANData, 29, 2))

同样,在运行策略中新建一个名为ObjectToString 的用户策略,新增一策略行并添加下面的脚本程序,用于将数值型对象转换到Out_CANData 。在下面的程序中,Out_SendID 进行自加是因为ZOPC_Server 要判断写入的Out_SendID 和上一次写入的Out_SendID 是否相同,如果不同才将报文发出。

‘ 转换 Out_SendID 到字符型

if Out_SendID 《= 255 then

Out_SendID = Out_SendID + 1

else

Out_SendID = 0

endif

Out_CANData1 = !I2Hex(Out_SendID)

if !Len(Out_CANData1) 《》 2 then Out_CANData1 = “0” + Out_CANData1

Out_CANData2 = Out_CANData1

‘ 转换 Out_Extern 和 Out_Remote 到字符型

Out_CANData1 = !I2Hex(Out_Extern) + !I2Hex(Out_Remote)

Out_CANData2 = Out_CANData2 + Out_CANData1

‘ 转换 Out_ID 到字符型

Out_CANData1 = !I2Hex(Out_ID)

Lenght = !Len(Out_CANData1)

while Lenght 《 8

Out_CANData1 = “0” + Out_CANData1

Lenght = !Len(Out_CANData1)

endwhile

Out_CANData2 = Out_CANData2 + Out_CANData1

‘ 转换 Out_DataLen 到字符型

Out_CANData1 = !I2Hex(Out_DataLen)

if !Len(Out_CANData1) 《》 2 then Out_CANData1 = “0” + Out_CANData1

Out_CANData2 = Out_CANData2 + Out_CANData1

‘ 转换 Out_Data0 7 到字符型

Out_CANData1 = !I2Hex(Out_Data0)

if !Len(Out_CANData1) 《》 2 then Out_CANData1 = “0” + Out_CANData1

Out_CANData2 = Out_CANData2 + Out_CANData1

Out_CANData1 = !I2Hex(Out_Data1)

if !Len(Out_CANData1) 《》 2 then Out_CANData1 = “0” + Out_CANData1