如果控制中心要修改房间的SV 值,首先发出查询房间温/湿度SV 值的命令,在收到房间温/湿度SV值后,在“修改控制室SV 值”窗口中显示SV 值(或在“修改风道温度/湿度表SV 值”窗口中显示),然后发出带有参数的修改房间温度SV 值命令报文,参数的内容就是要修改的SV 值。

下位机的验收码设置成ID10 为0,ID9~ID3 为房间ID,后3 位屏蔽。当总线上有发给该房间的报文时,并根据命令进行相应的操作。如果收到的是查询命令,下位机立即将房间的温/湿度数据发送到CAN 总线上。数据报文的ID 也是该房间的ID,以表示报文中的数据是该控制室的。如果是修改房间温/湿度SV 值命令,下位机就从命令参数取出SV 值并替换旧的SV 值。

上位机控制流程编写的具体步骤:

1. 在运行策略中新建一个名为“GetRoomTHV ”的用户策略,并添加3 个脚本程序,1 个退出策略行,如图:

通过CAN-bus总线对室内空调的温/湿度模拟系统进行控制

其中,“查询房间温/湿度值”脚本如下:

‘ 发送控制室温/湿度查询命令

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 = 0

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)

roomtemp = roomhum = 0

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

“计算控制室的温度”的执行条件是!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。 添加如下图所示的策略行。

  • UC3846控制芯片工作原理控制图 逆变焊机原理与用途
  • 数字万用表电阻档测试二极管正反向没有阻值(使用万用表测量二极管的正向电阻,为什么各档)
  • 学单片机需要学数电模电吗(学单片机要先学数电模电吗)
  • 电工怎么选择适合自己用的万用表(电工初学者买什么样的万用表好)
  • 单片机需要同时运行多个任务怎么办(单片机怎么同时执行多个任务)
  • 电机保护的方案取决于负载的机械特性
  • 绝缘电阻表正负搭接不复零位是怎么回事
  • 短路怎么用万用表查