新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于CAN-bus 总线的模拟空调温/湿度控制系统

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

作者: 时间:2012-07-11 来源:网络 收藏

“计算控制室的温度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个策略行。

查询房间1SV值策略
图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

12.重复步骤11,添加其它窗口的脚本。

六模拟控制室

本系统可用DP-668实验仪模拟产生控制室数据。DP-668实验仪具有模拟控制室温/湿度变化、自修改温/湿度SV值以及报警等功能。其模拟温/湿度变化算法如下:

externunsignedcharcodeRoomID=1;/*房间ID*/
externfloatRoomTemp=0;/*房间温度*/
externfloatRoomHumi=0;/*房间湿度*/
...

floatcodeRoomTempTab[]={
19.0,19.2,19.4,19.6,19.8,
20.0,20.2,20.4,20.6,20.8,
21.0,21.2,21.4,21.6,21.8,
21.8,21.6,21.4,21.2,21.0,
20.8,20.6,20.4,20.2,20.0,
19.8,19.6,19.4,19.2,19.0
};
floatcodeRoomHumiTab[]={
55.0,55.5,56.0,56.5,
57.0,57.5,58.0,58.5,
59.0,59.5,60.0,60.5,
61.0,61.5,62.0,62.5,
63.0,63.5,64.0,64.5
};
voidmain(void)

unsignedintidatai,j;
...

while(1)

/*模拟温/湿度变化*/
RoomTemp=RoomTempTab[j%(sizeof(RoomTempTab)/sizeof(RoomTempTab[0]))];
RoomHumi=RoomHumiTab[j++%(sizeof(RoomHumiTab)/sizeof(RoomHumiTab[0]))];
...


本系统也可用任一款ZLGCAN接口卡和PC组成的系统来模拟产生控制室数据,基于ZLGCAN通用函数接口编程,同样具有模拟控制室温/湿度变化、自修改温/湿度SV值以及报警等功能。其模拟温/湿度变化算法(VC示范)如下:

floatm_dwTemp[8];//房间16及风道12的温度
floatm_dwHumi[8];//房间16及风道12的湿度
...

staticdoublei;
i+=0.1;
m_dwTemp[0]=(float)sin(i+0.0)+20;
m_dwTemp[1]=(float)sin(i+0.1)+20;
m_dwTemp[2]=(float)sin(i+0.2)+20;
m_dwTemp[3]=(float)sin(i+0.3)+20;
m_dwTemp[4]=(float)sin(i+0.4)+20;
m_dwTemp[5]=(float)sin(i+0.5)+20;
m_dwTemp[6]=(float)sin(i+0.6)+20;
m_dwTemp[7]=(float)sin(i+0.7)+20;

m_dwHumi[0]=(float)cos(i+0.0)+60;
m_dwHumi[1]=(float)cos(i+0.1)+60;
m_dwHumi[2]=(float)cos(i+0.2)+60;
m_dwHumi[3]=(float)cos(i+0.3)+60;
m_dwHumi[4]=(float)cos(i+0.4)+60;
m_dwHumi[5]=(float)cos(i+0.5)+60;
m_dwHumi[6]=(float)cos(i+0.6)+60;
m_dwHumi[7]=(float)cos(i+0.7)+60;
...


上一页 1 2 3 4 下一页

评论


相关推荐

技术专区

关闭