然后,在运行策略中新建一个名为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