微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于CAN-bus 总线的模拟空调温/湿度控制系统

基于CAN-bus 总线的模拟空调温/湿度控制系统

时间:07-11 来源:互联网 点击:

“计算控制室的温度”的执行条件是!BitAnd(!BitRShift(In_ID,3),127)=RoomID表达式的值为非0,脚本程序如下:

Byte0=In_Data0
Byte1=In_Data1
Byte2=In_Data2
Byte3=In_Data3
!setstgy(UniteFloat)
roomtemp=float

“计算控制室的湿度”的执行条件是!BitAnd(!BitRShift(In_ID,3),127)=RoomID表达式的值为非0,脚本程序如下:

Byte0=In_Data4
Byte1=In_Data5
Byte2=In_Data6
Byte3=In_Data7
!setstgy(UniteFloat)
roomhum=float

2.在运行策略中新建名为“查询各控制室温/湿度”的循环策略,循环时间为2000ms。添加如下图所示的策略行。


图8查询各控制室温/湿度策略

“初始化”的脚本程序如下:

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
ifroom1temp>room1tempsvthen
room1st=1
ErrorTemp=room1temp
ErrorHum=room1hum
!SaveData(exception)‘记录温度异常
exit
else
room1st=0
endif

其它策略行脚本程序与上类似。

所有的“策略调用”均调用GetRoomTHV策略。

3.在运行策略中新建一个名为“GetRoomSV”的用户策略,其他步骤同1。


图9GetRoomSV策略

“查询房间温/湿度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

“计算控制室的温度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
Byte2=In_Data6
Byte3=In_Data7
!setstgy(UniteFloat)
roomhumsv=float

4.在运行策略中新建名为“查询房间1SV值”的用户策略,添加如下图所示的3个策略行。


图10查询房间1SV值策略

“before”策略行脚本程序如下:

!EnableStgy(查询各控制室温/湿度策略,0)
RoomID=1

“策略调用”调用GetRoomSV策略。
“after”策略行脚本程序如下:

room1tempsv=roomtempsv
!EnableStgy(查询各控制室温/湿度策略,1)

5.重复步骤4。添加“查询房间2~6SV值”和“查询风道温/湿度表1~2sv值”策略,并由菜单“修改1~6号房间SV值”调用对应的策略。

6.双击主控窗口中名为“修改一号房间SV值”的菜单项,在菜单属性设置对话框的“菜单操作”页中添加执行运行策略块“查询房间1SV值”。

7.重复步骤6,添加其它房间的运行策略。

8.在运行策略中建立一个名为“SetRoomTSV”的用户策略,添加以下脚本程序:

float=roomtempsv
!setstgy(SplitFloat)
‘发送控制室温/湿度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=2
Out_Data4=Byte0
Out_Data5=Byte1
Out_Data6=Byte2
Out_Data7=Byte3
!setstgy(ObjectToString)
‘发出命令
Out_CANData=Out_CANData2
‘等待命令发出
!TimerReset(1,0)
!TimerRun(1)
!TimerWaitFor(1,Delay)
!TimerStop(1)

9.在运行策略中建立一个名为“调整房间1SV值”的用户策略,并添加以下程序:

!EnableStgy(查询各控制室温/湿度策略,0)
RoomID=1
roomtempsv=room1tempsv
float=roomtempsv
!setstgy(SetRoomTSV)
!EnableStgy(查询各控制室温/湿度策略,1)

10.重复步骤9,添加其它5个控制室及风道的脚本程序。

11.给“修改控制室1SV值”窗口的“确认”按钮添加如下脚本:

ifroom1tempsv1-10orroom1tempsv1>100then
!setwindow(修改SV值消息窗口,1)
else
room1tempsv=room1tempsv1
!setwindow(修改控制室1SV值,3)
room1tempsv1=0
!setstgy(调整房间1SV值)
endif

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top