“初始化”的脚本程序如下:
RoomID = 1
“查询1 号控制室温/湿度”的脚本程序如下:
RoomID1 = RoomID
RoomID = RoomID + 1
if (roomtemp = 0) or (roomhum = 0) then
room1st = 1
ErrorTemp = roomtemp
ErrorHum = roomhum
!SaveData(ErrorSave) ‘ 记录通信错误
exit
endif
room1temp = roomtemp
room1hum = roomhum
if room1temp 》 room1tempsv then
room1st = 1
ErrorTemp = room1temp
ErrorHum = room1hum
!SaveData(exception) ‘ 记录温度异常
exit
else
room1st = 0
endif
其它策略行脚本程序与上类似。
所有的“策略调用”均调用GetRoomTHV 策略。
3. 在运行策略中新建一个名为“GetRoomSV” 的用户策略,其他步骤同1。
“查询房间温/湿度SV 值”脚本如下:
‘ 发送控制室温/湿度SV 查询命令
Out_Extern = 0
Out_Remote = 0
Out_ID = !BitLShift(RoomID, 3) + 0 ‘ 控制室ID + 单帧(点对点)
Out_DataLen = 8
Out_Data0 = 0
Out_Data1 = 0
Out_Data2 = 0
Out_Data3 = 1
Out_Data4 = 0
Out_Data5 = 0
Out_Data6 = 0
Out_Data7 = 0
!setstgy(ObjectToString)
‘ 发出命令
Out_CANData = Out_CANData2
‘ 等待命令发出
!TimerReset(1, 0)
!TimerRun(1)
!TimerWaitFor(1, Delay)
!TimerStop(1)
‘ 接收控制室温/湿度
!setstgy(StringToObject)
if (In_Extern 《》 0) or (In_Remote 《》 0) _
or ((!BitAnd(In_ID, 1024)《》1024) _
and (!BitAnd(In_ID, 7)《》0)) then
In_ID = 0
exit
endif
roomtemp = roomhum = 0[page]
“计算控制室的温度SV” 的执行条件是!BitAnd(!BitRShift(In_ID, 3), 127) = RoomID 表达式的值为非0, 脚本程序如下:
Byte0 = In_Data0
Byte1 = In_Data1
Byte2 = In_Data2
Byte3 = In_Data3
!setstgy(UniteFloat)
roomtempsv = float
“计算控制室的湿度SV” 的执行条件是!BitAnd(!BitRShift(In_ID, 3), 127) = RoomID 表达式的值为非0, 脚本程序如下:
Byte0 = In_Data4
Byte1 = In_Data5