基于CAN-bus 总线的模拟空调温/湿度控制系统
“计算控制室的温度”的执行条件是!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
- CAN-bus 现场总线系统实际应用方案(12-19)
- 通过现场总线CAN-bus网络对多台PLC进行联网控制(12-19)
- RS232透传CAN-bus|rs232can(12-14)
- CAN-bus器件是什么意思(12-13)
- CAN-BUS,CAN-BUS是什么意思(12-13)
- 现场总线CAN-bus在现代化的智能楼宇中应用(08-17)