11c197bb729752e1cdc87e0033af248f.ppt
- Количество слайдов: 41
GCL+编程 3/15/2018
GCL+ l l GCL+(General Control Language Plus)是 Delta的通用控制语言。它提供基于英语的逐 行编程模式,集标准程序语言的优点与自身特 性为一体,使它成为最有效的自控编程语言之 一。 GCL+程序在控制器中以对象(Object)形式 存在,并与其它对象创建方法一样。
特点: l l 动态数据――在察看一个控制器的程序时,用鼠标指 向对象的描述符即可显示出动态数据。这种功能在程 序代码纠错时相当有用。操作员可以用鼠标查看每一 行代码来知道确切的过程值进而考证程序的运算结果。 激活程序的修正――如果操作员希望改变程序代码, 即可双击导航器右侧窗口中指定的程序被控对象来轻 松打开程序,进而进行修改,修改完毕后点击“应用” 或“确定”按钮确认,此时,控制器里的程序就会改变。 在此过程中无需停止软件的运行。
特点: l l 分色编码功能――操作员查看和编辑程序时其 语句内容可按不同的颜色显示。被控对象的描 述符与GCL的函数是不同的颜色,用以区分数 值和操作符。这些颜色可以根据操作者的习惯 进行设置。 程序追踪――每条程序代码的左侧都有一个小 绿点,它显示该条程序是否运行。你可以清除 这些追踪记录,并通过单击得到一个更新的踪 迹模式。
特点: l l 特殊的语法帮助――在GCL+中有内容相关帮助功能, 这样操作员可在任何时候将指针放在问题区域,然后 按F 1键就可以得到帮助。帮助屏幕将在标题处打开。 例如:如果操作员将鼠标指针放在IF语句上,并按下 F 1键,那么帮助屏幕将打开到IF…THEN语句的内容, 提供它的用法说明。 GCL+的赋值能力――操作员可在GCL程序的编辑状 态下对被控对象赋值,鼠标放在选定被控对象上,单 击右键然后选择命令并输入所需数值。该功能对纠正 和诊断系统问题是相当有用的 具。
GCL+的使用 l l l 一个程序不能超过999行,DCU为 23. 7 k字节,DAC 为 5. 5 k字节,建议不要超过1 k,每行不能超过255个 字符。 变量和常数只能用于被定义的程序中。 可以使用子程序。一个完整的GCL+程序可以做为子 程序,被CALL语句调用。 可以控制一个或多个输出。 程序计算采用 32位浮点数和整数。 程序可读写当地或远程BACnet对象。(选用读方式, 即将带地址的对象写在等号右侧。)
GCL+的使用 l l PG 1从建立后,就会被一直执行,而其它的程序則不 会被执行,除非在PG 1中有调用其它程序语句CALL, 可用对象名称或参考名进行调用。 程序的执行:从上至下,一次一行(输出对象只有在 进行一次完整的程序扫描的时候,才会被赋新值,也 就是说,如果进行了多次赋值,起作用的只有最后一 个)。 程序中应适当的加些空行,空格,和描述,以利于读 程序和调试。 程序中如果要引用较长或含有空格的对象名称时,可 在名字两侧各加一个单引号。
GCL+的使用 l l l 对于程序中的注释行,应该以“ // ”符号开始 建议不要在程序中给AO赋值时应用数学运算 符号,应该在程序中对本地变量或控制器中的 AV对象通过数学运算符赋值,然后再把本地 变量或AV对象值赋给AO 应该尽量避免在程序中给远程对象赋值时进行 数学运算
GCL+的使用 l 对于整数值应该在– 2147483647和2147483647 之间;实数值应该在-1*1038 and 1*1038之间 l 对于逻辑值: 1. 0=TRUE; 0. 0=FALSE l 点的手动和自动状态: 手动时该点的Out. Of. Service=1 自动时该点的Out. Of. Service=0
示例:
Statement: l Constant(常数), Variable(变量), Assignment (赋值,“=”) l Example: l l Dampers = 50 Chiller = On l Constant Size = 10 Constant Maximum = 88. 5 l Variable Count As Integer l
Statement: l CALL(调用子程序或另一个程序) l Example: l l COMMENT(注释) l Example: l l CALL UNOCCUPIED CALL SAMPLE_PROGRAM CALL PG 6 // Call the subroutine to compute a value Command Statement---Reset、Start、Stop、Relinquish l Example: l l Reset timer 1,TL 1,Counter Start BO 1, BO 2 Stop fan, pump Relinquish AO 1, BO 2 ---清除GCL+控制程序的赋值
Statement: l DOEVERY, END DO(在一个给定的时间间隔后执行一组语句) l Example: l l l l Do. Every 10 M Setpoint = Setpoint+ 1 End Do a = 12 Do. Every a: S Valve = Valve+1 End Do FOR, END FOR(执行指定次数的一组语句,Step值默认时 1,负 数时表示减小) l Example: l l l FOR Count = 1 To 10 Step 1 number = number*2 End For
Statement: l IF, THEN, ELSE , END IF l Example: l If Oat > 30 Then Fan = On End If l If Oat > 30 Then FAN=On Else Fan=Off End If l l l IFONCE, ELSE, ENDIF(满足条件执行一次) l Example: l l l If. Once OAT > 30 Then Setpoint = 0 End If
Status Operator: l BETWEEN l l CHANGED l l If bv 1 Changed Then Start Fan End If OFF, ON l l If Room_Temp Between 22 24 Then Stop Fan End If If FAN Off Then Start PUMP End If OFFFOR, ONFOR l l l IF CHILLER Off. For 30 M Then Stop PUMP End If
Logic Operator : l AND, NOT, OR, XOR l Example: l l l l If PUMP On And WEEKLY_SCHEDULE On Then Start FAN End If IF (SCHEDULE Off) Or (TEMP < 18) Then Stop FAN End If XOR:只有当两个条件一个TRUE, 另一个为FALSE时 返回值才为TRUE
Comparision Operator: l = , >= , <= , <> l Example: l l l If Room_Temp >= 23 Then Start Cooling End If
Mathematical Operator: l ^, -, *, /, +, -, MOD l Example: l l l HEATING_VALVE = (TEMP + 5 ) / 2 AV 1=2 ^ 2 //AV 1=4(求幂) AV 1=4 MOD 2 //AV 1=0(取模)
Bitwise Operator : l !(位非) , &&(位与) , ||(位或) , ^^(位 异或) l Example: l l l Variable Fan. Status As Integer // 10=1010, 8=1000 Fan. Status = 10&& 8,则 fanstatus =8 Fan. Status = !8,则 fanstatus =-7 Fan. Status = 10 || 8,则 fanstatus =10 Fan. Status = 10 ^^ 8,则 fanstatus =2
String Concatenation Opetator: l & l Example: l l Outstring = "system " & "printer " //result is outstring=”system printer”
Opeartor Precedence: l l l 1 2 3 4 5 (. . . )-优先级最高,以下逐步次之 NOT, -, !, ^ *, /, MOD +, >, <, >=, <=, =, <> BETWEEN, CHANGED ON, OFF, ONFOR, OFFFOR 6 AND, OR, XOR, &&, ||, ^^, &
Function: l ABS(绝对值) l l ARCCOS, ARCSIN, ARCTAN, COS, SIN, TAN l l l A = Average(Room_1, Room_2, Room_3) Max. Val = Max(30, 40, 50, 10) DAYON(如果日历中的指定day是on,则为TRUE) l l My. Number = ARCCOS (0. 866) AVERAGE, MIN, MAX l l DIFFERENCE = ABS (OTEMP - SETPOINT) If Day. On( CAL 5, 21 -May ) Then…. . DECIMAL(取一个Value的小数部分) l Result = Decimal(30. 75) // Returns 0. 75
Function: l DEWPOINT(露点---通过湿度和温度计算) , ENTHALPY(焓---能量单位, 与温度和湿度有关) l l l LASTOFF, LASTON, NEXTOFF, NEXTON(取时间表的数值) l l Out=LEFT(name, 7) ROUND, TRUNCATE l l Time. Value = Last. Off( SCH 5 ) LEFT, RIGHT, MID, LENGTH l l Dewpoint_Temp = Dewpoint (Oah, Oat, F) Rm 12_Enthalpy = Enthalpy(Oah, Oat, F) My. Number = Round(123. 5) // Returns 124 My. Number=Round(123. 432, 1) //Returns 123. 4 My. Number = Truncate(30. 92) // Returns 30 POWERUP(上电后第一次扫描时) l l l If POWERUP Then Print “hello” End if
System Variable: l DAY(1 -366), DATE(23 -NOV-05), DECIMALTIME(12: 42=1270), HOURS(0 -24), MINUTES(0 -59), MONTH(1 -12), MONTHDAY(1 -31), SECONDS(0 -59), TIME(7: 30 or 730), WEEKDAY(1 -7), YEAR(2005) 星期一:WEEKDAY=1 星期日:WEEKDAY=7
程序的输入: l 系统变量: l l 对象: l l l DAY, DATE, DECIMALTIME, HOURS, 等。 Object. Reference Or Objectname Example: l 对象参考名:AI 2=60 调用本地对象( 作站或控制器) 336. AI 2=60 调用其它设备上的对象 l 对象名字:Temp=60 对象特性值: l l Objectname. Properties Example:AI 1. value=60 l //给AI 1的值赋值为 60
编辑GCL+程序 有语法错误 有未定义的 符号 执行错误 语句不完整
编辑GCL+程序 注意观察程序的“数值”: Running---正常运行 Idle---程序被手动停止 Waiting---程序没有在PG 1中被Call
编辑GCL+程序 注意观察程序的“状态”: 程序正常运行时,该列不显示文字;当程序有错误发生时,显 示Fault。
编辑GCL+程序 在程序中可以命名程序 行的名称,通过GOTO 在行间进行跳转。 程序行名称以“ :”结 束
编辑GCL+程序 当程序中一行中的语句太长时可以通过连接符号“ + ” 将两行连接在一起。 正确写法:AV 1=AV 1+ 2 错误写法:AV 1=AV 1 +2
编辑GCL+程序 避免以下程序问题的出现: 1、If SCH 1 = On Then If. Once BO 1 On. For 5 M Then BO 2 = On Endif 2、If. Once SCH 1 = On Then Do. Every 5 M AV 1 = AV 1 + 1 Enddo Endif
小练习 1: l l l 建立对象AV 1、AV 2、AV 3。 其中AV 1的名字是a;AV 2的名字是b;AV 3的 名字是c。 AV 1值任意指定(0 -100)。 AV 3值任意指定(0 -100)。 若AV 3<AV 1,则AV 2=0;若AV 3>AV 1,则 AV 2=1;若AV 3=AV 1, 则AV 2=100。
小练习 2: l l l 建立对象BV 1、BV 2、BV 3、BV 4、BV 5。 其中BV 1的名字是BBVV 1;BV 2的名字是 BBVV 2;BV 3的名字是BBVV 3; BV 4的名字 是BBVV 4;BV 5的名字是BBVV 5 。 条件:BV 1 -BV 4中至少有两个或以上BV为On 时,BV 5值为On,其它时间BV 5为Off。
小练习 3 l 3月两台风机的启停时间安排如下: l l 正常 作日(周一至周五)时,风机 1与2均为早 8 点至晚 6点运行。 3月12号这一天为特殊时间表: l 风机 1的启动时间为早上8点到中午12点,风机 2的启 动时间为下午2点到下午6点。
GCL练习(污水泵的控制) 1)监控点: 3个液位点,2个泵的控制点 2) 控制要求: 当液位第(奇数)次由低->高 时,泵 1运行; 当液位第(偶数)次由低->高 时,泵 2运行; 当液位由高->超高时,泵 1、2 同时运行; 当泵液位为低时,泵 1、2停止运 行; 其他过程水泵无变化。
GCL编程练习:
GCL+编程练习: DAC 633: l 输入点: l AI 1 -送风温度监测 l AI 2 -送风湿度监测 l BI 3 -送风机运行状态 l BI 4 -送风机故障报警 l BI 5 -防冻报警 l BI 6 -过滤器堵塞报警 l 输出点: l BO 1 -送风机启停控制 l BO 2 -新风阀控制 l BO 3 -加湿控制 l AO 4 -盘管水阀调节
GCL编程练习: l 控制策略: l l l 送风机按时间表启停,新风阀与送风机启停联锁。 送风温度与送风温度设定值的偏差进行PID运算, 调节盘管水阀的开度。 当送风湿度小于送风湿度设定值,打开加湿阀。 监测过滤器状态,过滤器堵塞产生报警。 监测防冻状态,当产生防冻报警时,关闭新风阀、 送风机,盘管水阀开度最大。 累计风机运行时间,超过10000小时,生成报警, 进行检修。
GCL编程练习: l l l l l AIC 1 -配置温度值输入。 AIC 2 -配置湿度值输入。 BDC 1 -配置“运行”/“停止”汉字显示。 BDC 2 -配置“故障”/“正常”汉字显示。 BDC 3 -配置“已脏”/“清洁”汉字显示。 BDC 4 -配置“打开”/“关闭”汉字显示。 AOC 1 -配置 2 -10 V阀门输出。 CO 1 -夏季PID控制 CO 2 -冬季PID控制 SCH 1 -日时间表 9: 00-18: 00 l l l l l BT 1 -风机的运行时间 TL 1 -送风温度趋势记录 EV 1 -过滤器报警 EV 2 -防冻报警 EV 3 -风机运行时间超时报警 AV 1 -夏季送风温度设定值 AV 2 -冬季送风温度设定值 AV 3 -送风湿度设定值 BV 1 -当前季节,1为夏季,0 为冬季。 PG 1 -主程序
GCL编程练习: l l l l l //Fan control BO 1 = SCH 1*(Not BI 5)*(Not BI 4) BO 2=BO 1 // ra temp control //summer If BV 1 = On And BI 3 = On Then AO 4 = CO 1 End If //winter If BV 1 = Off And BI 3 = On Then AO 4 = CO 2 End If If BI 5 = On Then AO 4 = 100 End If //humidity control BO 3=BI 3*(AI 2<AV 3 onfor 10 m)
注意事项 l l 控制器A地址为 101,控制器B的地址为 102, 在控制器A上有温度输入点AI 1,赋值给B控制 器上的AV 1。 程序如下: l l 102. AV 1=AI 1(在A控制器上写程序) AV 1=101. AI 1(在B控制器上写程序)
11c197bb729752e1cdc87e0033af248f.ppt