一种数字控制器转让专利

申请号 : CN201310038546.1

文献号 : CN103176448B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 温涌文

申请人 : 北京恒业世纪科技股份有限公司

摘要 :

本发明公开了一种数字控制器,包括:本地控制器、前端控制器和前端测控点,其中本地控制器采用PID算法,内建语言解析器和代码执行器,实现对系统的闭环控制。本发明的数字控制器结构简单、控制精确、可靠性高。

权利要求 :

1.一种数字控制器,其特征在于,包括:

本地控制器,采用母板+子板的方式,结合配电柜构成,上通过以太网连接中央控制计算机,下连接前端控制器和前端测控点;本地控制器最多连接4个前端控制器,8个前端测控点;采用PID算法,内建语言解析器和代码执行器,实现对系统的闭环控制;本地控制器有内置的语言解析器,负责把字符码翻译成执行的机器码;代码执行器负责执行由语言解析器完成的机器码,按照单步运行的过程,完成代码任务;代码执行器包括:例程执行模块,执行具体的单步代码;

例程挂起模块,负责把暂时不需要运行的任务例程挂起,给其他例程的运行留出空间;

例程恢复模块,根据系统需要,恢复被挂起的例程运行;

例程关联模块,处理例程之间的调用与被调用关系;

例程超时模块,放弃超过时间限制的例程;

历程间通讯模块,处理各个例程之间的通讯协作;

前端控制器,经CAN网络与本地控制器相连接;前端控制器包括通用控制器和专用控制器,通用控制器每个均为16个输入输出点,与本地控制板端口方式保持一致;专用控制器包括16点端口或者8点端口;

前端测控点,经485网络与本地控制器连接,前端测控点为传感器或执行器;每个前端测控点最多支持4个物理端口。

说明书 :

一种数字控制器

技术领域

[0001] 本发明涉及楼宇控制技术领域,特别是涉及一种数字控制器。

背景技术

[0002] 目前,在楼宇控制领域中,数字控制器是主要针对楼宇自控系统的现场DDC控制器,适用于中央空调,制冷站,换热,给排水,送排风,照明等系统的控制。但目前的数字控制器,存在结构复杂、可靠性低等缺陷。

发明内容

[0003] 本发明的目的是提供一种结构简单、控制精确、可靠性高的数字控制器。
[0004] 为达到上述目的,本发明的技术方案提供一种数字控制器,包括:
[0005] 本地控制器、前端控制器和前端测控点,其中本地控制器采用PID算法,内建语言解析器和代码执行器,实现对系统的闭环控制。
[0006] 进一步,本地控制器采用母板+子板的方式,结合配电柜构成,上通过以太网连接中央控制计算机,下连接前端控制器和前端测控点。
[0007] 进一步,前端控制器经CAN网络与本地控制器相连接。
[0008] 进一步,前端控制器包括通用控制器和专用控制器。
[0009] 进一步,通用控制器每个均为16个输入输出点,与本地控制板端口方式保持一致;专用控制器包括16点端口或者8点端口。
[0010] 进一步,前端测控点经485网络与本地控制器连接。
[0011] 进一步,前端测控点主要设计为传感器或执行器;每个前端测控点最多支持4个物理端口。
[0012] 进一步,本地控制器最多连接4个前端控制器,8个前端测控点。
[0013] 进一步,本地控制器有内置的语言解析器,负责把字符码翻译成执行的机器码;代码执行器负责执行由语言解析器完成的机器码,按照单步运行的过程,完成代码任务。
[0014] 进一步,代码执行器包括:
[0015] 例程执行模块,执行具体的单步代码;
[0016] 例程挂起模块,负责把暂时不需要运行的任务例程挂起,给其他例程的运行留出空间;
[0017] 例程恢复模块,根据系统需要,恢复被挂起的例程运行;
[0018] 例程关联模块,处理例程之间的调用与被调用关系;
[0019] 例程超时模块,放弃超过时间限制的例程;
[0020] 历程间通讯模块,处理各个例程之间的通讯协作。
[0021] 上述技术方案具有如下优点:
[0022] 本发明的数字控制器结构简单、控制精确、可靠性高。

附图说明

[0023] 图1是本发明实施例的一种数字控制器的结构示意图。

具体实施方式

[0024] 下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
[0025] 如图1所示,本发明实施例涉及一种数字控制器,包括三个部分:本地控制器、前端控制器和前端测控点,其中本地控制器采用PID(Proportion Integration Differentiation,比例积分微分)算法,内建语言解析器和代码执行器,实现对系统的闭环控制。
[0026] 1、本地控制器
[0027] 通过以太网连接中央控制计算机,以致通过远程网络与区域运行中心连接,可以通过CAN网络连接最多4个前端控制器;可以通过485网络连接8个前端测控点。每块本地控制器均支持16个输入输出点(端口的输入输出可以有多重组合模式),本地控制器逻辑上最大支持128个物理点(本地控制器+前端控制器+前端测控点)。本地控制器是系统的主控制器,采用母板+子板的方式,结合配电柜构成,上连接以太网,下连接前端控制器和前端测控点。
[0028] 2、前端控制器
[0029] 经CAN(Controller Area Network,控制器局域网)网络与本地控制器相连接。前端控制器包括通用控制器和专用控制器;通用控制器(传统的现场控制器)着眼于对本地控制器的端口扩充的便捷性,通用控制器每个均为16个输入输出点,与本地控制板端口方式保持一致。专用控制器着眼于对系统更专业的控制,从而进一步降低控制成本,加强控制的推广性。专用控制器可包括16点端口或者8点端口,根据具体需求决定。前端控制器是本地控制器的补充,功能相当于本地控制器中的子板,但可以根据需要经CAN 网络拉到远处,从而实现就近布线的需要。
[0030] 3、前端测控点
[0031] 经485网络与本地控制器连接。前端测控点主要设计为传感器或执行器;比如温湿度传感器,开关控制点,阀门执行器等。每个前端测控点最多支持4个物理端口。从而支持系统实现低成本的便捷扩充。前端控制点是本地控制器的补充,经485总线连接,一是可以实现就近布线,二是成本低廉。
[0032] 本地控制器有内置的语言解析器,负责把字符码翻译成可以执行的机器码(其过程雷同于JAVE服务器对字符码的翻译解析过程),机器码可交由代码执行器来执行,从而完成组态程序预期的控制目标。
[0033] 代码执行器负责执行由语言解析器完成的解析代码,按照单步运行的过程,完成代码任务。
[0034] 代码执行器包括:例程执行模块、例程挂起模块、例程恢复模块、例程关联模块、例程超时处理模块、例程间通讯模块。
[0035] 本地控制器最大可支持1024个任务例程。
[0036] 例程执行模块执行具体的单步代码;
[0037] 例程挂起模块负责把暂时不需要运行的任务例程挂起,给其他例程的运行留出空间;
[0038] 例程恢复模块根据系统需要,恢复被挂起的例程运行;
[0039] 例程关联模块处理例程之间的调用与被调用关系;
[0040] 例程超时模块放弃超过时间限制的例程;
[0041] 历程间通讯模块处理各个例程之间的通讯协作。
[0042] 代码执行器具体包括以下内容:
[0043] 一、基础类型:
[0044] 1)、二进制监控点DI、DO端口、虚拟布尔:Boolean;
[0045] 00..01: 1字节。00为off,False,关机,停止等;01为on,True,开机,启动等;
[0046] 2)、模拟量监控点AI、AO端口、虚拟浮点:Single,浮点数4字节,有符号;
[0047] 3)、数字量:Integer,整型,1字节Byte无符号,2字节WORD无符号,4字节Integer有符号(本系统采用4字节整形);
[0048] 4)、日程时间:时钟类型+日期时间;系统调用例程中使用,最小单位时间1秒;
[0049] 日期时间:8字节,其中第1..2字节为年,后续字节分别为月、日、周、时、分、秒;
[0050] 时钟类型:1字节。00:无效,01:一次定时(准确时间),02:分钟周期(指定秒);
[0051] 03:时周期(指定分秒),04:日周期(指定时分秒),05:周周期(指定周时分秒);
[0052] 06:月周期(指定日时分秒),07:年周期(指定月日时分秒),08:用户自定义循环周期,未指定的数字无效;
[0053] 当时钟类型为08时,用户自定义控制周期,以秒为单位,日期时间最后4字节有符号整型值为周期数,低位在前。
[0054] 二、概念分类:
[0055] 1、系统类型
[0056] 0 ): 未知;
[0057] 1 ): 冷冻站系统;
[0058] 2 ): 热交换站系统;
[0059] 3 ): 定风量空调机组;
[0060] 4 ): 变风量空调机组;
[0061] 5 ): 新风机组;
[0062] 6 ): 送排风机组;
[0063] 7 ): 给水系统;
[0064] 8 ): 排水系统;
[0065] 9 ): 公共照明系统;
[0066] 2、产品类型
[0067] 0 ): 未知;
[0068] 1 ): 控制器;
[0069] 2 ): 传感器;
[0070] 3 ): 执行器;
[0071] 3、参数类型
[0072] 0 ): 未知;
[0073] 1 ): 布尔型;
[0074] 2 ): 整型;
[0075] 3 ): 浮点型;
[0076] 4、图形类型
[0077] 0 ): 静态图形(.bmp);
[0078] 1 ): 动画图形(.gif);
[0079] 2 ): 双态图形(.gif前两帧);
[0080] 5:端口类型
[0081] 0 ): XX(未知);
[0082] 1 ): DI(数字输入);
[0083] 2 ): DO(数字输出);
[0084] 3 ): AI(模拟输入);
[0085] 4 ): AO(模拟输出);
[0086] 5 ): VD(虚拟布尔);
[0087] 6 ): VA(虚拟浮点);
[0088] 7 ): DD(双DO端口);
[0089] 8 ): VN(整型端口);
[0090] 6;数值单位
[0091] 0 ): 未知;
[0092] 1 ): 温度:℃;
[0093] 2 ): 比例:%;
[0094] 3 ): 压力:Pa;
[0095] 4 ): 流量:M/h;
[0096] 5 ): 频率:Hz;
[0097] 6 ): 照度:lm;
[0098] 7 ): 焦尔:J;
[0099] 8 ): 电压:V;
[0100] 9 ): 电流:A;
[0101] 10 ): 电度:KW/h;
[0102] 11 ): 时间:H;
[0103] 12 ): 次数:T;
[0104] 7:端口信号类型
[0105] DI: 0未知,1直接输入,2继电器,3光耦,4三极管;
[0106] DO:0未知,2继电器,3可控硅,4三极管;
[0107] AI: 0未知,1电压0-10V,2电压0-5V,3电流0-20mA,4电阻PT1000;
[0108] AO:0未知,1电压0-10V,2电流0-20mA;
[0109] 8:例程类型
[0110] 0 ): 未知;
[0111] 1 ): 常规例程;
[0112] 2 ): 普通例程;
[0113] 3 ): 日程例程;
[0114] 9:报警等级
[0115] 0 ): 无须上报;
[0116] 1 ): 正常通报;
[0117] 2 ): 普通报警;
[0118] 3 ): 严重报警;
[0119] 三、代码语法:
[0120] 逻辑运算符:逻辑与(&&),逻辑或(||);
[0121] 算术运算符:加(+),减(-),乘(*),除(/);
[0122] 比较运算符:等于(==),不等于(!=),小于(<),大于(>),小于等于(<=),大于等于(>=);以上都为双目运算符。
[0123] 优先运算符:小括号(),中括号[]。优先级有四级:(),*/,+-,[]。
[0124] 逻辑非用恒等于00代替。如:非a,用a==00代替。a等于非b,用a=(b==00)代替。
[0125] 控制对象类型指示符:
[0126] 形式相当于数组变量,指示符为大写。如下:
[0127] 1:端口参数:4字节。
[0128] 格式:PT[X]。
[0129] PT表示端口类型指示符,端口类型:
[0130] 1:DI/2:DO/3:AI/4:AO/5:VD虚拟布尔/6:VA虚拟浮点/7:DD双DO虚拟为AO/8:VN虚拟整型端口。
[0131] X为下标(1..255),端口序号,整型值。整个的意思是端口当前状态或数值。
[0132] 如:执行代码VA[13]=12345.60[0]#,表示给序号为13的虚拟浮点端口赋值为12345.60;
[0133] 执行代码AO[3]=VA[13][50]#,将AO[3]的当前数值改写为VA[13]的当前数值12345.60,延时50单位时间;
[0134] 执行代码DO[10]=DI[5]&&DI[8][30]#,将DI[5]&&DI[8]运算结果赋给DO[10],延时30单位时间。
[0135] 如果直接用PT指示字,比如PT[12],则特指为第12端口的设定值或目标值,常用于随动设置。
[0136] 如:执行代码PT[15]=21.00[0]#,表示给第15端口的设定值赋值为21.00。
[0137] 赋值前,DDC应自行查询端口类型再转换相应类型进行赋值。
[0138] 而对于物理[PT]的读,相当于读当前端口的运行时间或者运行次数(开关量是运行时间,模拟量是运行时间)。
[0139] 比如:VA[129]=PT[12],如果此端口是开关量,读到的就是运行时间(秒),是模拟量则是运行次数。
[0140] 2:工况参数:1字节。Byte型
[0141] 格式:HP[X]。
[0142] 机组工况(00正常01供冷02供热03过渡);X为下标,表示系统或机组序号,范围是一个DDC所辖机组数量(1..4);
[0143] 3:用户参数:4字节。
[0144] 格式:UP[X,T]。
[0145] X为下标,整型值,用户参数序号范围(1..128)。
[0146] T表示数值类型(1..3):1布尔型,2整型,3浮点型。4字节,整型和浮点型有符号。
[0147] 布尔值取最低位(第1字节)1字节。
[0148] 如:执行代码UP[12,2]=12032[20]#,将第12个用户参数的4个字节赋值为12032的整型数值。
[0149] 执行代码AO[12]=UP[100,3][20]#,将AO[12]当前数值赋值为第100个用户参数的4字节浮点数。
[0150] 4:例程参数:1字节。Bool型
[0151] 格式:EP[X],FP[X],PP[X]。X为例程序号(1..1023),是整型表达式;
[0152] EP:激活命令,如EP[X]=00[0]#,取消激活;EP[X]=01[0]#,将第X个例程激活。
[0153] FP,PP:执行命令。区别是,FP为有返回断点的执行(相当于调用函数)的执行,相当于抛出一个执行线程。
[0154] 如 FP[X]=DI[5]&&DI[6][0]#, 或 PP[X]=DI[5]&&DI[6][0]#, 若 表 达 式DI[5]&&DI[6]结果为00则不执行,为01则执行。
[0155] 如: 执行代码EP[12]=00[10]#,将12号例程激活状态设置为off;
[0156] 执行代码EP[12]=01[20]#,将12号例程激活状态设置为on,将此例程激活;
[0157] 执行代码FP[12]=DI[5][20]#,若DI[5]为真则执行第12号例程,并在执行完后才开始执行后续代码;
[0158] 执行代码PP[12]=DO[4][60]#,若DO[4]为真则执行12号例程。
[0159] 注:这四种对象,既可以作为表达式中的一个元素值,也可以为对象本身赋值。可视为一个变量。
[0160] 下标X不允许层层嵌套。比如端口表达式AO[AI[3]]等不合法。
[0161] 5:算法过程:4字节。
[0162] 格式:PID(PT[X],X1,X2)[T]。
[0163] 所有算法都用此格式。共可支持5种算法,第1种为PID算法。
[0164] 式中PT[X]为输入端口,可能是AI或VA端口,算法的目标设定值为输入端口的目标设定值。
[0165] X1,X2是整型值,X1为算法序号(1..5),X2为该算法参数组号(1..12)。[T]为延时,算法过程中T恒为0无效。
[0166] 算法过程一般放在常规例程中执行,可视为给输出端口策略性数值调节的带参过程。
[0167] 如:执行代码AO[10]=PID(AI[5],1,5)[0]#,表示对输出端口AO[10]执行PID算法,引用第5组PID参数。
[0168] 6:预定义函数:4字节。
[0169] 格式:FUNC(T,X1..Xn)。
[0170] 预定义运算函数:T为函数代号(0..255,系统理论上最多支持255个内建函数,在于控制器内的支持),X1—XN是具体参数,参数个数不超过8个。
[0171] T=1,计算平均值(AVE),X1..Xn都为4字节浮点数值,最多5个数值,返回4字节浮点值。
[0172] 如:FUNC(1,AI[5],AI[6]+3.25),计算AI[5]和AI[6]+3.25的平均值,返回浮点数。以下 T=2..4表达式参数类型相同。
[0173] T=2,计算和值(SUM);
[0174] T=3,计算最小值(MIN);
[0175] T=4,计算最大值(MAX);
[0176] T=5,计算绝对值(ABS),带1个浮点表达式参数,返回浮点数。如:FUNC(5,AI[3]+20.50),表示将AI[3]+20.50取绝对值。
[0177] 赋值/执行表达式:
[0178] 格式:Y= 运算表达式+[T]#。Y为输出端口或可赋值参数,T为延时。
[0179] 赋值/执行表达式例子。
[0180] 1、DO/VD/用户参数:
[0181] 直接赋值例子:DO[X]=01[20]#;
[0182] 赋表达式例子:VD[X]=(DI[X1]!=DI[X2])||(DI[X3]==01)[50]#;
[0183] 2、AO/VA/DD/用户参数:
[0184] 直接赋值例子:AO[X]=12.65[100]#;
[0185] 赋表达式例子:VA[X]=AI[X1]+AI[X2]-AI[X3]/AI[X5]+FUNC(2,AI[X3],AI[X4],VA[X5])+6.35[20]#;
[0186] 赋表达式例子:DD[X]=AI[X1]+AI[X2]+UP[X3,3]+3.56[60]#;
[0187] 算法代码例子:AO[X]=PID[AI[X1],X2,X3][0]#,执行算法,一般时间无效。算法过程的代码必占一行。
[0188] 例程激活例子:EP[X]=HP[X1]&&VD[X2]||DI[X3][0]#,激活例程,一般时间无效。
[0189] 用户参数赋表达式例子:UP[5,3]=(AI[X1]+AI[X2])/2[0]#。
[0190] 执行表达式,是指对输出端口的赋值或控制输出,输出端口包括物理输出端口和虚拟端口。
[0191] 按表达式结果进行控制输出。
[0192] 因为其操作过程可能需要一段时间,所以一行执行代码行末有指定延时时间的格式[T],单位时间秒。
[0193] 比如将阀门开度调到某个百分比需要一段时间。每行代码尾部以'#'号分隔。一个算法过程视为一行执行代码。
[0194] 一些常用代码例子:
[0195] 供冷工况时第2个机组激活第3个例程:EP[3]=HP[2]==01[0]#;
[0196] 供冷工况时第2个机组将第4个例程消除激活状态:EP[4]=HP[2]!=01[0]#;
[0197] 供热工况时第1个机组激活第20个例程:EP[20]=HP[1]==02[0]#;
[0198] 按条件有返回执行第3个例程:FP[3]=DI[2]&&DI[4]&&(AI[25]>32.00)[0]#;
[0199] 按条件无返回执行第3个例程:PP[3]=DI[2]&&DI[4]&&(AI[25]>32.00)[0]#;
[0200] 给第35个用户参数赋浮点值:UP[35,3]=AI[50]+AI[63][0]#;
[0201] 给第45个AO端口赋浮点值:AO[45]=AI[32]+UP[35,3][50]#;
[0202] 四、端口触发事件
[0203] DI/DO/VD: 由off变为on时(执行例程序号01),
[0204] 由on变为off时(执行例程序号02),
[0205] 恒为off时(执行例程序号03),
[0206] 恒为on时(执行例程序号04);
[0207] AI/AO/VA/DD:精度敏感变化(执行例程序号01),
[0208] 跃出报警上限(执行例程序号02),
[0209] 回归报警上限(执行例程序号03),
[0210] 跃出约束(偏差)上限(执行例程序号04),
[0211] 回归约束(偏差)上限(执行例程序号05),
[0212] 回归约束(偏差)下限(执行例程序号06),
[0213] 跃出约束(偏差)下限(执行例程序号07),
[0214] 回归报警下限(执行例程序号08),
[0215] 跃出报警下限(执行例程序号09);
[0216] VN:数值变化时 (执行例程序号01),
[0217] 变为数值1时 (执行例程序号02),
[0218] 变为数值2时 (执行例程序号03),
[0219] 变为数值3时 (执行例程序号04),
[0220] 变为数值4时 (执行例程序号05),
[0221] 变为数值5时 (执行例程序号06),
[0222] 变为数值6时 (执行例程序号07),
[0223] 变为数值7时 (执行例程序号08),
[0224] 序数为0表示无执行例程。
[0225] 由上述实施例可以看出,本发明的数字控制器结构简单、控制精确、可靠性高。
[0226] 以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。