技术文章
- 楼宇自控(BA系统)施工要诀及看图纸要诀2018-08-16
楼宇自控(BA系统)施工要诀及看图纸要诀
前言:
楼宇自控系统是对大楼内所有设备进行智能化管理的一个平台,楼宇自控系统施工需要很多专业配合,难度比较大,楼宇自控系统施工如何才能做好呢?需要掌握什么知识呢?下面详解楼宇自控(BA系统)施工要诀及施工中看图纸的要诀,让你更全面的掌握BA系统施工知识。
楼宇自控(BA)系统能干什么?
楼宇自控(BA)系统能让我们在电脑(中央站)前随时查看任一设备的运行状态,并根据需要对设备进行远程起停控制。也可以预设值设备的启停时间,或根据预设值条件对设备进行自动启停控制。当某一台设备出现故障时,它会以报警方式提醒管理人员对该设备进行应急处理。
楼宇自控(BA)系统在施工中看图纸的要诀
BA系统施工在进场前,必须要有的几份图纸:风系统图、水系统图,电气图。这些图纸都需要跟甲方的电气工程师索要,不懂的地方联系现场空调、水、电气等施工方管理人员,寻求帮助!但是我们作为弱电工作者对于空调、水、电图稍微看懂一些才行!下面就根据在实际施工中说明下怎么看图纸中的核心内容。
(1)水:给排水比较简单,系统图就可以,看清出集水坑的位置,给水管的位置,大小就可以。
(2)电:电气、冷电,包括,低压电器配电图,这个图纸要吃透,每一路的控制回路,控制那方面的,是公共照明还是插座要分清。二次回路图要碰好,因为要设计到控制问题,是有源信号控制还是无源信号控制,一定要分清。
(3)风:空调,包括空调风系统图,水系统图,这两张图纸是你一定要吃透的。里面有风机的数量,类型,以及水系统里面的各个阀门,传感器的安装,简单的说下,风系统里面主要有,风机,送风机、排风机,风柜,新风机,空调风柜,盘管机,这几种。
安装在风机上的传感器主要有,压差开关,温度传感器,压差开关走的是开关量信号,可以用RVV的线进行辐射,温度传感器走的是模拟量的信号,所以要用RVVP 的线进行敷设,水系统,进水管,回水管,要分清冷冻水管跟冷却水管,不过正常来说现场很好分,带有保温层的就是冷冻水,不带的直接是裸管的就是冷却水。
水管的直径,要看清水管的大小DN400-DN100是比较常见的。要知道具体管径大小,方便定制设备。安装在水管上的传感器,水流开关,流量计,压力传感器,温度传感器。
(4)火:消防,一般在国内消防系统的风,水、电系统与弱电系统有界面分离(消防与弱电很多时候是两家公司在做)。所以消防问题基本不用考虑,但是施工要协调好,因为一台风机也许平时是排风,但是消防时要排烟,所以要2套控制思路,即;平时由BA控制,但是消防时一定要切断BA信号,由消防单独控制。
总的说来,电气二次回路图一定要明确控制思路,BA所有的控制都是与电气二次回路离不开的,所以现场经验是,跟电气的老大搞好关系,你的事情就好办的很,要不然,电找你麻烦,二次回路给你搞的乱七八糟,空调找你麻烦,不配合调试,你这个系统就是完完全全的失败。
楼宇自控(BA)系统施工要诀:
楼宇自动化管理分系统监控着大厦内所有机电设备,如冷热源机组、空调机组、新风机组、变风量末端装置、给排水、送排风、变配电、照明、电梯等设备。
(1)冷热源机组:现代的冷热源一般以冷冻机、热泵为主,配之以多种水泵、冷却塔、蝶阀、水位开关、温度计、流量计等,冷热源系统是楼宇内暖通空调系统的心脏,也是耗能大户,控制要求也高。
(2)机组运行参数:包括机组的启停状态、故障报警、供回水温度、流量、各水泵的启停状态、故障报警。供回水总管压差遥测及控制。按给定时间程序开关机组、水泵、冷却塔、蝶阀等。根据冷/热负荷来确定所需要的启动的机组数量,实行机组群控。
(3)空调机组:机组运行参数:包括回/送风温度、湿度、过滤器堵塞状态、风机运行状态和过载报警。按给定时间程序启停风机。根据温度调节空调机水阀开度。水阀与风机联锁动作。
(4)新风机组:机组运行参数:包括进出口温度、过滤器堵塞状态、风机运行状态和过载报警。按给定时间程序启停风机。根据温度调节新风机水阀开度。
(5)变风量末端装置:监视末端装置的温度和风量。按给定时间程序启停风机。控制末端装置的风门挡板角度。
(6)给排水监控:监视各种水箱的高、低液位和报警。监视各种水泵的运行状态和过载报警。按参数要求控制水泵启停。
(7)送/排风机监控:监视送/排风机的运行状态和过载报警。按时间程序控制风机启停。
(8)变配电监视:监视高/低压电气参数,包括电压、电流、频率、有功功率、无功功率、功率因数等。监视开关柜内接触器运行状态及故障报警。监视变压器温度及故障报警。
(9)照明监控:监视各照明回路的运行状态。按时间程序控制选定回路主接触器分合。
(10)电梯监视:监视各电梯运行状态及故障报警。
楼宇自控(BA)系统施工要点:
(1)空调风系统:包括空调风系统图,水系统图,这两张图纸是你一定要吃透的。里面有风机的数量,类型,以及水系统里面的各个阀门,传感器的安装。简单的说下,风系统里面主要有,风机,送风机、排风机,风柜,新风机,空调风柜,盘管机,这几种。
安装在风机上的传感器主要有,压差开关,温度传感器,压差开关走的是开关量信号,可以用RVV的线进行辐射,温度传感器走的是模拟量的信号,所以要用RVVP 的线进行敷设,空调水系统,进水管,回水管,要分清冷冻水管跟冷却水管,不过正常来说现场很好分,带有保温层的就是冷冻水,不带的直接是裸管的就是冷却水。
水管的直径,要看清水管的大小DN400-DN100是比较常见的。要知道具体管径大小,方便定制设备。安装在水管上的传感器,水流开关,流量计,压力传感器,温度传感器。电动调节阀的尺寸一定要和做水的施工管理人员沟通确定尺寸,其电动调节水阀也一般由做水管的来施工!
(2)配电:电气、冷电,包括,低压电器配电图,这个图纸要吃透,每一路的控制回路,控制那方面的,是公共照明还是插座要分清。二次回路图要碰好,因为要设计到控制问题,是有源信号控制还是无源信号控制,一定要分清。
水:给排水比较简单,系统图就可以,看清出集水坑的位置,给水管的位置,大小就可以。
火:消防,一般在国内消防系统的风,水、电系统与弱电系统有界面分离(消防与弱电很多时候是两家公司在做)。所以消防问题基本不用考虑,但是施工要协调好,因为一台风机也许平时是排风,但是消防时要排烟,所以要2套控制思路,即;平时由BA控制,但是消防时一定要切断BA信号,由消防单独控制。
总的说来,电气二次回路图一定要明确控制思路,BA所有的控制都是与电气二次回路离不开的,楼宇自控的施工秘诀就是多沟通多协调,与具有施工面的单位多交流,对你的工作进行具有极大的帮助!
总结:
楼宇自控系统施工方法一般需要完整做完一个项目的时候才会深有感触,光看理论可能一头雾水,做完一个项目后,再回头看理论,就是柳暗花明了!
文章来源:机房百科
- 楼宇自控系统硬件运行维护经验2018-08-15
楼宇自控系统硬件运行维护经验
楼宇自控硬件维护主要包括控制箱、传感器及执行器的维护。 楼宇自控系统是借助智能操作来代替人工操作的一种系统。在运行中,可能会出现画面不稳定,数据显示突变等现象。本楼宇自控系统采用某公司开放式Andover系统(参考),系统本身的稳定性已达工业标准,远远高于现场仪表、接线、变送器等。因此问题的出现主要是因为现场仪表或变送器等受到干扰或配电、工艺等方面出现故障时产生的。本节主要讲述现场设备的维护。
一、DDC控制柜内器件及接线
DDC控制器是现场设备与上位管理机之间的枢纽,起着举足轻重的作用,现场设备的维护须从控制柜入手,首先要了解控制柜分布及各控制器所控设备。其分布及控制设备详见BAS竣工图。了解DDC控制柜内器件及接线对维护至关重要:
1、接线端子:用来连接现场设备与控制器的接线。接线端子接线为去现场设备接线和去控制器接线。这是检测现场设备信号的着手处,如果发现上位机画面某信号显示不正常可在此处检测其信号是正常。DI点可通过现场设备的开与关,在此处检测过来的是信号是否为短路与断路,如开对应短路,关对应断路,则信号正常;DO点可通过上位发送开关信号,在此处检测发出的信号是否为短路与断路,如开对应短路,关对应断路,则信号正常;AI点在此处可检测现场过来的信号是否为0-10V直流电压或电阻值为1K欧姆左右(只有温度信号是电阻值),若在此范围内,均属正常;AO点可通过上位画面发出指令,在此处检测是否有0-10V的直流电压。
2、空气开关:控制现场传感器、执行器、控制器的电源。
3、继电器:协助DO点完成启停控制,有与强电隔离作用。当DO模块发出开的指令,使继电器线包得电,通过触点控制现场设备的起停。用上位控制DO点输出,相应继电器应吸合并发出“啪”的声音。如果没有反应,应先检查DO点是否输出电压,如果输出正常,则应检查继电器是否损坏。
4、电源:为控制器、继电器、现场传感器、执行器供电,具体供电方式可参看BAS竣工图。
本系统现场执行器主要为风阀执行器和水阀执行器。水阀执行器使用24V(空调机为220V)交流电源供电,控制信号为10V直流电源。正常情况下,当控制信号从0V变到10V时,阀的开度也应该从0%变到100%。如果系统运行时,执行器不动作,则应首先检查是否有24V交流电源,如果没有,到柜子里相应位置检查,模块是否送出命令或者保险丝是否烧断。若无以上问题,检查线路是否正常。如果执行器动作,但动作方向相反,应调节执行器上的正反向旋钮,使其旋到另一方向。如果此时执行器动作方向仍无改变,则应检查是否有控制信号送出。到柜子里用万用表</a>实际测量,如果实际测不到,可能通道损坏。如果模块正常,可能是线路问题,检查线路。 风阀执行器使用24V交流电源,控制信号10V直流。检验方式同水阀执行器。
二、四种类型点的检测方法
AI点本系统涉及的AI点包括:温度、湿度、二氧化碳、一氧化碳、新风流量等。
温度检测:当某一温度偏离正常情况下如:-46℃或121℃时则表示此温度处于故障状态。传感器使用的是10KT的热敏电阻。正常阻值小于500Ω,发生故障时,在对应的DDC控制的接线端子上测量其阻值是否在正常范围内,若为负数则表示现场短路;为无穷大则表示现场开路,检查端子至传感器的线,即可恢复正常。
湿度检测:当某一湿度与其它湿度值出现较大偏差,或长期为88%左右,则表示此湿度处于故障状态。湿度传感器的反馈信号为0-10VDC电压,通过在对应端子处电压的测量,可判断线路或湿度传感器是否正常,针对维护,即可恢复正常。
AO点:本系统的AO点主要包括阀位控制。水阀控制输出指令均为0-10V电压。当阀位开度与上位人机界面的显示有较大出入时,可通过在端子上测量电压,看上位界面设置为50%时,电压是否为5V,顺线检测执行器端电压是否一致。如果端子电压与执行器端电压不一致,检查线路并更换。
DI点:本系统DI点主要包括各种状态、手/自动、及故障点。DI点为无源触点,当受控设备处于闭合状态时,如果正常情况下,状态点不能返回,则应该用万用表测量二次回路控制柜对应端子是否闭合,如果端子未闭合,则为二次回路控制柜问题,由相关方调整。
DO点:本系统DO点主要是对设备的控制。发出控制指令会使相应的继电器吸合,使受控端线路闭合。用上位发出控制指令,是否有继电器吸合声,若无,则检查受控设备端线路。
三、维护实例
1.如何检查网络控制器离线
当操作站电脑显示某台网络控制器离线(Offline)时,可按以下方法检查:
1)检查中控室至网络控制器之间的连线是否正常。
2)检查网络控制器的电源是否正常。
检查网络控制器E的灯关闪烁是否有红灯,及通讯等闪烁是否在交替闪烁。
4)如果以上三项均为正常,有可能是设备本身出现故障,请与XX联系。
2.如何检查DDC离线
当操作站电脑显示某个DDC离线(Offline)时,可按以下方法检查:
1)检查网络控制器至DDC之间的连线是否正常。
2)检查DDC是否供电正常,是否保险丝烧了(控制器的电源保险丝及控制器的保险丝,DDC的保险丝须打开面板才能见到)。
3)如果以上两项均为正常,有可能是设备本身出现故障,请与XX联系。
3.如何检查温度传感器是否正常
本工程所用温度传感器为 知名品牌(参考)提供的传感器,为RTD电阻式的。其返回的电阻值与温度的对应表可在所附的产品说明书中查到。当在操作站电脑上发现有现场温度值不正常时,则可按照下列方式检查:
A.在现场控制箱中找到相应端子,将返回信号线除下并测量其电阻值,检查相应的温度值是否正确;如正确,则见(B)项,如不正确,则见(C)项。
B.按照控制箱图纸的接线检查有关接线是否有问题,如查不出问题,则可能控制器出现问题,请与我司联系。
C.在现场的温度传感器的安装位置检查有关温度探头返回电阻值是否正确,如仍有问题,则此传感器有问题,需更换;如返回的电阻值是正确的,则是温度传感器至控制箱的接线有问题,请找有关人员解决。
4.如何检查CO2浓度传感器是否正常
本工程所用有CO2浓度传感器,为0-10V电压式的。其返回的电压值与CO2浓度的对应为0-2000PPM。当在操作站电脑上发现有现场CO2浓度值不正常时,则可按照下列方式检查:
A.在现场控制箱中找到相应端子,将返回信号线除下并测量其电压值,检查相应的CO2浓度值是否正确;如正确,则见(B)项,如不正确,则见(C)项。
B.按照控制箱图纸的接线检查有关接线是否有问题,如查不出问题,则可能控制器出现问题,请与XX联系。
C.在现场的CO2浓度传感器的安装位置检查有关温度探头返回电压值是否正确,如仍有问题,则此传感器有问题,需更换;如返回的电压值是正确的,则是CO2浓度传感器至控制箱的接线有问题,请找有关人员解决。
5.如何检查温湿度传感器是否正常
本工程所用有温湿度传感器为 知名品牌(参考)提供的系列产品,其中温度为RTD电阻式的。其返回的电阻值与温度的对应表可在所附的产品说明书中查到。当在操作站电脑上发现有现场温度值不正常时,则可参照上面3方式检查。其中湿度为0-10V电压式的。其返回的电压值与湿度的对应为0-100%。当在操作站电脑上发现有现场湿度值不正常时,则可按照上面4方式检查。
6.如何检查空调机组风阀是否正常
本工程所用的风阀执行器采用*(参考)的产品,它采用24VAC电源对调节阀进行驱动,0-10VDC返回电压信号显示阀门的开度。接线方式可在所附的产品说明书中查到。
当操作人员发现阀门开度与控制信号有很大差别时,可按下列方式检查:
A)在现场切断相应控制箱的电源,然后打开相应的阀门驱动器外壳,手动转动驱动器上的齿轮,检看阀门是否淤塞。
B)检查控制箱外部和内部的接线,查看是否有问题。
C)检查控制器的输出电压是否正常,如不正常,则可能是控制器出现问题。请与我司联系。
D)如以上三项均正常,则可能是驱动器有问题,请与相应厂商联系便于更换另一个新的驱动器。
7.如何检查压差开关是否正常
压差开关为一个开关量信号,接至压差开关的信号线共有二条。当发现现场的信号与实际状态不符时,可按照下列方式检查:
A)检查控制箱外部和内部的接线,查看是否有问题。
B)试吹其中的一根“+”管,如果有状态改变,则为正常。
C)如B项不正常,则可能是传感器有问题,请与相应厂商联系便于更换另一个新的驱动器。
8.如何检查液位开关是否正常
液位开关为一个开关量信号,接至液位开关的信号线共有二条。当发现现场的信号与实际状态不符时,可按照下列方式检查:
1)检查控制箱外部和内部的接线,查看是否有问题。
2)查看液位浮球朝向是否放反。
四、硬件维护细则
1、定期清理系统控制柜,粉尘长期滞留可能会导致系统硬件设备内部的短路或断路,引起设备故障。
2、保持控制室内空气流通,地面干净;保持室内温度在20~25℃。
3、无论设备是否通电,非经授权者都不得插拔系统部件,不得对系统通讯电缆和电源电缆等乱拔乱动。在系统通电时,严禁随意移动机器。
4、严禁在电脑主机上做任何与工作无关的事情,禁止外界的电脑软盘进入本控制系统,禁止在电脑上玩游戏,以免感染计算机病毒。
5、在系统正常工作后,不得随意退出图形监控画面,不得随意关闭系统。
6、定期检查控制器各模块的工作状态,发现问题应及时处理。
五、软件维护细则
这里所说的软件维护,主要是指如何解决系统的一些问题,并使之更好地运行。
1、在没有完全掌握软件或没有充分把握的情况下,请勿随意修改软件
2、禁止在计算机上玩游戏和运行其它不相关的软件
3、在不是十分清楚的情况下,禁止修改系统和应用软件的配置。发现软件有问题,及时报告有关部门。
4、定期备份数据,以免造成不必要的损失
六、应急措施
1、在各种问题出现时,您首先要做的是把一切系统回路控制切换到手动,然后再进行其它问题的处理。
2、在控制柜内出现烟雾或有特殊气味(比如糊味)散出时,若来自控制器请快速关断控制器电源,然后再着手问题的检查和解决。
本文来源:智能化弱电工程设计与施工。
版权归原作者所有,如有侵权,请联系删除。
- 背依物联网:物业公司正坐在一座金山上2015-09-15
背依物联网:物业公司正坐在一座金山上
现在不少物业公司觉得生存困难,但是杭州汤米智能科技有限公司CEO徐超龙却语出惊人,他认为,物业公司正坐在一座金山上,但至于你能不能挖到金子,就看你能不能充分的拥抱物联网了:在物联网的时代,社区将更加注重安全,快递公司进进出出并不适合,那时的智慧社区出于安全的需要,快递最后一公里将由物业接管,而且所有的水电费、物业费等将由微信、支付宝等支付。智慧城市是深化物联网应用的最佳载体,虽然与移动物联网相比,它发展缓慢,但毋庸置疑的是,智慧城市将颠覆我们的生活方式。
“早上起来对着镜子刷牙,这时显示器已根据时间、地点和路线,为你选择好最佳的上班路线……”在新华网与宁波市经济与信息化委员会、中国通信工业协会物联网应用分会、中国物联网(工信部电子科学技术情报研究所)联合举办的中国(宁波)智慧城市高峰论坛——物联网智能化应用与服务高层论坛上,杭州汤米智能科技有限公司CEO徐超龙的演讲获得了阵阵掌声。
语出惊人:“物业公司其实正坐在一座金山上”
“现在的物业公司生存都有困难,物业费收不上来。而其实呢,物业公司正坐在一座金山上,未来除了所有的水电费、物业费等将由微信、支付宝等支付外,快件将由物业完成最后一公里,而顺丰、圆通、中通等所有的快件最后一公里,将由物业公司配送上门,由物业集中统一发放。”演讲开始,徐超龙就围绕当前物业公司生存困难进行了分析。语出惊人,让不少人大开眼界。
“物联网时代,社区将更加注重安全,快递公司进进出出并不适合那时的智慧社区安全的需要,快递最后一公里将由物业接管。”徐超龙的言下之意,物联网时代随着智慧社区的全面推开,散在的东西都将整合为智能系统,物业公司将大有作为。
“智慧城市由智慧社区、智慧家庭、智慧交通和智慧医院组成,智能家电将颠覆你的生活方式。”徐超龙把自己比喻为十年前的马云,他认为“未来没有智能家居生活肯定不行”。
大开眼界:智慧魔镜,帮你安排最佳出行路线
“早上起来对着镜子刷牙,这时显示器已根据时间、地点和路线,根据A、B、C等路线,根据路线实时情况,为你选择好最佳的上班路线,比如A线路发生交通事故了,B线路堵塞了,而C线路目前通行较通畅……”徐超龙说,智能家庭应用的项目很多,比如智能升降衣柜、智慧感应灯、智能搭配等等,这些将完全颠覆你现在的生活方式。
早上太阳出来了,窗帘自动打开了。然后,电视自动打开播放早间新闻。走进卫生间,洗脸刷牙之间,最佳交通路线已选好。今天天气有变化,穿什么衣服?智能衣柜已告诉你选什么衣服、放在第几层。今天要参加宴会,怎样搭配出彩呢?智能搭配已告诉你如何整装出门。离开家,智能安保能让你实时掌握家内安全动态……也许很多人认为,这还是设想。那么你错了。
记者了解到,已有杭州企业提供智能家居的设计安装服务,价格需要5万元;而智能衣柜等将于明年4月上线。
专家观点:智慧城市是深化物联网应用的最佳载体
新华网副总编辑兼移动互联网事业群总经理申江婴在论坛上表示,智慧城市是深化物联网应用的最佳载体。目前我国的物联网应用发展已经进入实质性推进阶段,但与移动互联网相比,发展还十分缓慢。究其原因,一是因为物联网产业链条长且分散;二是由于很多信息技术领域的应用在国内行业往往是分割的,导致行业壁垒,严重制约着应用的发展。当前,智慧城市无疑为物联网等新一代信息技术产业提供了重要的发展契机和应用的载体。新华网联合国家相关权威机构提出的“千家互联网小镇”行动计划将实现基础设施、政务、民生、旅游、农业、教育等与互联网的泛在连接与充分融合,为全面提升社会治理水平、政务服务能力、经济发展活力、居民生活品质,为大众创业、万众创新提供有力支撑。
库评:提到物业,我们首先会联想到水电费、人情纠纷等各种杂七杂八的生活琐事;提到智能家居,我们会想到家用机器人、智能电视等各种高大上的东西。殊不知,两者一结合,就已经走在迈向智慧社区的道路上了。徐超龙的这段金山论断给传统行业创造价值提供了很好的思路,那就是传统服务业与物联网的“联姻”。这种趋势是势不可挡的,因为我们的家居一定会走向智能化,而生活水平的提高又让我们对服务质量的要求不断提高。但是结合的点究竟在哪里,是一个值得思考的问题,比如说文中的物业公司就可以从快递入手:最近几年,新兴了许多解决快递最后一公里的公司,尤其在高校和一些非常大的居民区里,一旦智慧社区建成,快递公司不再能进出小区,这一大块的利益将会被物业公司拿走。典型的传统服务业还有餐饮和旅游,那么库客认为,将物联网与之结合,将会创造更大的利益:厨房和可视结合,可以打造出看得过瘾、吃的放心的“健康厨房”;旅游从酒店入手,给游客高科技智能化的居住体验。总之,物联网就在那里,金山就在那里,关键看你怎么去挖金了! - 工业互联网时代,智能硬件和软件中间件在制造业迅速崛起2015-09-14
工业互联网时代,智能硬件和软件中间件在制造业迅速崛起
2015-09-13 物联网智库制造业两大痛点,劳动力成本攀升、管理效率的制约,正在被逐一攻克。
针对劳动力成本的问题,“机器换人”成为愈演愈烈的风潮。昨天笔者读到一篇新闻,东莞长安镇诞生了东莞地区的首个无人工厂,每天60台机械手臂没日没夜的打磨一个个手机结构件,只有3名工人负责看线和检查,节省了90%的人力,近600人不需要在工厂上班了。
多地政府相继出台补贴鼓励企业“机器换人”,仅东莞一地不足一年受理相关项目530个,将减少用工约3.6万人,加上白电企业美的、格力、海尔等高调进入工业机器人制造领域。一时间工业机器人成为新型蓝领,代替传统劳动力,在制造业生产线上呼风唤雨。
由于机器人的引入,工厂操作现场的装备水平获得大幅提升,使得管理效率的制约成为了更为突出的制造业痛点。
这个痛点解决起来并没有那么容易,能否突破IT与OT之间的断层,将操作现场中传感器与执行器的数据直接上传到信息层,成为突破管理效率制约的有效手段之一。
工业互联网时代,稳定可靠的智能硬件和软件中间件在IT与OT断层的衔接中起到了决定性作用,然而在这方面具备深厚行业积累并且做过成功实施的公司少之又少…还好最近笔者听闻了智能制造圈里正在盛传几个经典案例,而主导这些项目的人物正是笔者的微信好友,杨鹏宇。
为了进一步了解突破管理效率制约的方案,于是便有了下面的对话。
彭昭:把工厂操作现场层面的传感器和执行器的数据直接上传到IT系统,将信息系统和传统工控系统彻底融合,是怎么做到的?
鹏宇:现在有两种不同的做法,都代表大的趋势。
❶我们现在的做法是采用分布式控制结构,通过成熟的中间件,衔接IT系统和传统的传感器和控制设备。
❷另一种做法是直接将传感器数据接入云端,据我了解IBM正在做相关的方案。现在联网的成本已经降到足够低,无论是WiFi模块还是通讯技术,都在持续发展,促进了物联网在制造业的落地。
这两种做法都可以进行尝试。工业系统和商业系统的融合,强调安全性和可靠性,我们的实施方案已经有了大量的安装实例,软件架构,数据管理和安全加密对于IT人来说非常容易理解。
互联网能够如此易于扩展,如此强大,很重要的一点就是开放和模块化。无论是云平台还是各种应用软件,都有完善的API接口。不管你开发任何东西,一定要有比较完整的开放接口支持,准备好跟第三方去打交道,才能形成生态圈,快速实现各种功能,解决痛点需求,但是很不幸,传统的工业自动化系统这种概念并不普遍,大都比较封闭。
解决这个问题需要一个过渡过程,从原来的完全封闭状态,到现在逐步在某些行业有了通信标准。但是这种通信标准也不能保证完全互联互通,不能解决统一设备模型之类的问题,还是属于局部的互联状态。我们所提供的中间件起到了一个过渡作用,向上有比较完善的API供各种IT系统调用,向下支持开放驱动框架,拥有众多标准和非标准的通信协议,能够跟传统设备直接打交道。这套方案已经有了十几年的历史,从大量的实践经验中总结提炼得来。
彭昭:如果采用第一种做法,所有的商业系统都能实现和工业系统无缝对接吗?
鹏宇:是的。比如MES管理系统,本身是信息系统,对接的是事件和流程,关键需要的就是数据。但是传统的工业数据存在于传感器和执行器那些封闭的盒子里面,而信息系统是没办法拿到这些数据的,或者获取数据的代价比较高昂。所以就需要成熟的中间环节去破解这些数据,而且是使用相对低的成本破解数据,否则没有意义。
我们的定位就是要解决中间这个环节,让工厂底层所有的数据都能汇总到IT系统进行处理。我们正在做一些独特的项目,顶层采用IBM等提供的设施管理信息平台,中间层使用我们从工厂到信息系统的采集和传输平台,底层采用传统的控制系统。
以我们在福特汽车实施的项目为例,直接从各种机械设备上面提取数据,采集之后把所有的数据变成福特规定的数据模型,汇总到全球统一的数据中心。比如工厂里的空压机如何规范,有多少个监控点,命名规则,运行参数和报警,以及数据记录都在我们提供的智能硬件中完成并接入IT网络传输。这个项目是IT部门发起的,因此要求所有传输数据和联网设备可以被IT理解和管理,不允许使用原有的自动化协议,这就需要建立整套的规范。
这个过程并不容易,工厂设备中的变量是很难直接翻译成IT语言的。福特项目的核心是建立数据的企业标准,福特采用了强大的顾问团队的建议,在各个国家的各个工厂,推进信息的全球化集中管理。如何跟不同的设备通信,如何还原通信对象,如何在网络中配置通信对象,福特都做出了明确的标准要求。
彭昭:福特项目最终实现了什么价值?
鹏宇:收益包含十几个方面,比如能源节省25%左右,操作成本节约5%而且可持续等等,非常多。这个项目主要解决的就是管理效率问题,原来很多封闭的系统根本没法管理,没法提取数据,现在这些难点都被攻克了。企业建立了统一的标准,以前全球各地的现场自控体系比较复杂,不同的工厂所使用的设备系统大相径庭,而且对于报表等有不同的要求,甚至还有很多报表依靠手工制作,效率很低,现在全部实现了通过IT系统进行实时管理。
彭昭:直接把现场层的数据接入信息系统,不怕影响现场控制系统的可靠性吗?
鹏宇:福特在这方面进行了充分的论证,他们根据可靠性把系统划分为4种方案。第1种是把现场所有设备直接联网接入云端,这种当然可靠性最低。第2种是就地接入我们提供的服务器,然后再接入云端,第3种和第4种是利用我们提供的分布式智能硬件——JACE,把数据采集处理逐步移到操作现场的更前端,从管理层,到控制层,再到现场层,使用可靠稳定的智能硬件替代现有的管理监控器件、现场控制器件,乃至直接连入现场执行层面的输入输出信号,系统方案越来越完善,系统架构越来越简单。
从方案2到方案4,经过福特的论证,系统的可靠性事实上随着方案的推进而逐步提升,初始投入和系统生命周期的逐年投入越来越均衡,最终福特选择的是第3种和第4种方案的混搭。
我们提供技术,可以把传统设备的数据转化成可以被IT理解的数据,然后上传到互联网,这就是我们的角色定位。我们把所有的方法公开出来,以便不同行业的系统集成商使用。
彭昭:福特的项目,如果在其他的制造业企业中推广,具备工业化大批量复制性吗?
鹏宇:这要看企业是否下定决心解决痛点问题。福特做全球大范围工厂联网的重点是要建立整个企业的中央管理系统,要第一时间拿到所有工厂的数据进行分析和评测,提升管理效率。如果没有大范围联网,全球的报表汇总起来需要很长的时间,时间成本很高,而且报表的质量、精度和规范性都是问题。通过中央管理系统,使用成熟的IT方案极大的压缩了时间成本,报表的质量也大幅上升。汽车厂虽然大批量的采用机械手臂进行生产,生产线很先进,但是在辅助系统、能源管理系统和信息管理系统方面,提升的空间仍旧很大。
国内企业如果也能下定决心,就能复制这套做法,这其中最大的难度在于企业标准。国外的企业往往先建立标准,再决定具体投资和实施。一旦进入具体的实施流程,目标已经非常明确。第一步是把所有的数据采样先做好,存储下来作为标准模型,至于这些数据怎么挖掘和分析,慢慢再跟IT公司探讨,这是第二步、第三步的事情。前期有个周密的计划,对于国内企业来说非常重要。
编制企业标准这个事情,国外是靠专业的顾问咨询公司,国内更多时候是靠企业自己的部门或者相关供应商。
彭昭:所以国内如果想打通商业系统和工业系统,最大的难度在于找不到顾问咨询公司,只能依靠企业自己?
鹏宇:专业顾问咨询公司缺乏是事实,但也并不完全是找不到的问题,如果找到的话,制造企业愿意为这个事情买单吗?因为咨询公司提供的是专业服务,是无形的东西,国内企业仅仅只为看得见摸不着的服务买单还没有形成一种成熟环境。
顾问咨询公司的角色在国内往往被分化在系统集成商、设计院和企业内部的I工程师团队身上,很少有专业的公司承担这个任务,这是在提工业互联网的时候,国内和国外差别最大的一点。
另外补充一点,其实在工业互联网的推进阶段,我们应该意识到每个公司只需要聚焦在自己擅长的一段,比如有些公司擅长云端技术,有些擅长传输技术,有些擅长传感技术,有些擅长芯片技术,把每个公司的长项组合起来,形成生态圈,才是适合工业互联网发展的思路。
####
采访者:物联网智库 创始合伙人 彭昭
欢迎与笔者直连,愿意聆听你在智能制造领域的建议和方案。
对话者:Tridium中国区市场总监 杨鹏宇
Tridium是全球性的软件和技术服务公司,致力于开发通用软件框架来解决设备设施管理相关的各种问题。Niagara Framework是基于JAVA为用户提供的一种开放的软件架构,可以集成各种设备和信息系统形成统一平台,通过Internet使用标准Web浏览器进行实时控制和管理。Tridium是霍尼韦尔(Honeywell Int.)旗下全资企业。
- Sedona 技术手册2015-06-03
Sedona 技术手册
欢迎来到Sedona的世界!本章一开始将会告诉你Sedona是什么并说明它与其他的程序语言有哪些不同的功能;接着就会概述一下本书的结构,特别会强调最新版Sedona中有些什么功能;最后,我们还会提供一个简单的Sedona程序范例,你可以将它输入计算机,然后编译并运行它。
什么是Sedona?
在讨论Sedona时,将Sedona程序语言,Sedona虚拟机(Sedona virtual machine,SVM)以及Sedona平台加以区别是很重要的一件事。Sedona程序语言是用来编写Sedona应用程序、Sedona组件等的语言。当Sedona程序被编译时,它会被转换成字节码(byte code),字节码是CPU架构(即SVM)的具有可移植性(portable)的机器语言。SVM可直接以硬件方式来实现,但通常都是以软件程序的形式来表现,而字节码便是由SVM来解释与运行的。
Sedona平台是不同于Sedona程序语言和SVM的,它是存在于每个Sedona安装系统(Sedona installation)中的预定义Sedona类(class)集合,而这些class可以被所有的Sedona程序所使用。Sedona平台有时候被称为Sedona运行环境或是核心Sedona API(Application programming interfaces)。Sedona平台可以使用其他额外的标准扩展功能(standard extensions),而这些扩展API仅存在于某些Sedona安装系统中,并不保证存在于所有的安装系统中。
综上所述,Sedona平台是一套与硬件平台和操作系统无关的,用于构建以网络为中心的嵌入式智能设备的软件平台架构技术。
Sedona程序语言
Sedona程序语言是目前最先进的用于嵌入式应用程序开发的面向组件编程语言,它的语法和Java、C# 相当类似。Sedona的设计者致力于让Sedona语言更为强大,同时他们也尝试避免其他面向对象编程语言(C++,Java)所有的过分复杂的特点。设计者通过让Sedona语言更为简易好用,使得程序员能写出更强大且无错误(bug-free)的代码。也正因为Sedona的精良设计与完全具备下一代嵌入式应用程序语言所具备的所有特点,Sedona自面试之初就已受到程序员的欢迎,尤其是在他们使用过其他不易于使用且功能更小的程序语言之后,他们更深深地认为能使用Sedona语言是一件非常幸福的事。
Sedona虚拟机
Sedona虚拟机,或称Sedona解释器(interpreter),是Sedona安装系统(installation)最重要的一部分。Sedona程序被设计成具有可移植性,但也只能在安装了Sedona解释器的平台上运行。SVM不只用于桌面系统,它还被移植到DDC、机顶盒、无线收发器等任何安装了具有Sedona解释器的嵌入式操作系统中。
虽然解释器在一般的概念中被认为是个不具备高性能的系统,但是SVM的性能却表现得非常优异,同时还在不断的进步当中。值得特别注意的是,凭借SVM技术编译的应用程序非常小,非常适用于嵌入式硬件平台,同时,Sedona byte code 还可以被转换为本地平台使用的机器语言,从而加快了需要重复运行的程序代码的运行效率。
Sedona平台
Sedona平台和Sedona程序语言及Sedona虚拟机一样重要。所有使用Sedona语言编写的程序都必须依赖构成Sedona平台的预定义集合才能顺利运行。Sedona类被分为多个不同的元件(Kit),Sedona平台的元件依功能来定义,如输入/输出、网络、创建、安全性以及其他许许多多的功能。
使用Sedona的好处
为什么要使用Sedona呢?学习这样的一个新语言与新平台是有价值的吗?这个章节将会告诉你使用Sedona到底有哪些好处。
一次编写,到处运行
Tridium认为“一次编写,到处运行”是Sedona平台最主要的核心价值。以商业术语来说,这句代表Sedona技术最重要的承诺是你只要写一次程序(即可被编译为字节码在Sedona平台上运行),便能在任何地方运行该应用程序。
可在任何地方运行你的应用程序!这就是Sedona平台所提供的最重要的功能。很幸运地,对Sedona的支持将会越来越普及。我们期待,它不仅会被集成于工业控制设备,也将被集成于消费电子产品内,如电视机顶盒,PDA及移动电话等。
以网络为中心的程序设计
Tridium一直致力于设计以为网络为中心的应用程序平台,Sedona平台的设计者更深信其重要性,同时把Sedona平台设计为以网络为中心的模式。从程序员的角度来说,Sedona提供了不同网络拓朴结构的通信协议、编程模型。从集成使用者的角度来说,Sedona可以让操作者通过网络在线升级嵌入式固件程序(Firmware),甚至实时删除、增加、修改应用程序的组件。
动态及可扩充的程序
Sedona既是动态的(dynamic)也是可扩充的(extensible)。Sedona程序代码是由面向对象的模块组件构成的,以这种形式所构成的单位称作类(class)。类又分散存储在不同的Kit中,同时只有在需要的时候才会被加载到SVM解释器中。这表示应用程序可以在运行的时候决定哪些是需要的类,然后在需要的时候才加载它们。这也表示了程序可以凭借加载它所需要的类来动态扩充它所具备的功能。
Sedona平台以网络为中心的设计方式,意味着Sedona应用程序可以动态地凭借网络加载新的设备中的功能,也可以重用需要的Kit元件。使用这些功能的应用程序将不再只是一个个的程序代码而已,而是成为了一个相互作用且独立的集合。Sedona开启了强大的嵌入式应用程序设计与开发的新纪元。
性能
正如前面所说的,Sedona程序被编译成具有可移植性的中间形式,即所谓的字节码,而不是某种机器的专属机器指令,SVM就是解释这些具有可移植性的程序代码来运行Sedona程序的。这个结构意味着Sedona程序的运行效率快过使用纯解释式语言所写成的程序或脚本(script)但一般来说,Sedona程序的运行速度会比编译成某个特定机器码的C或C++程序的运行速度慢。然而,要特别记得,虽然Sedona程序被转换为字节码,但并非所有的Sedona程序都是使用字节码来实现的。为了要提高效率,Sedona平台在计算的部分具相当的复杂度,如字符串运作的方法都是使用机器码来实现的。
Sedona平台运行的目标平台是小型的嵌入式智能设备,因此,编译后的Sedona程序是一个轻量级的快捷应用程序,甚至可以在小于100KB内存的平台上运行。使得使用性能已不再是个问题了。
程序员效率和节省时间最后,也是最重要的,程序员都非常喜欢使用Sedona的原因是Sedona是个非常优美的编程语言,由许多强大的而设计良好的API组成。程序员们都非常喜欢使用Sedona来设计嵌入式程序,同时对程序运行出结果所需的时间感到惊讶。就是因为Sedona是个简单且设计优美的语言,并拥有设计精巧的API,所以程序员可以写出更好的程序,同时减少程序错误的数目。
Sedona程序范例例1-1是一个计算阶乘的Sedona程序。注意,每一行最前面的数字并不是程序的一部分,那只是用来方便我们逐行解释。
例1-1:Factorial.sedona:一个用来计算阶乘的程序
Sedona开发环境安装
在我们详看程序如何运行之前,首先我们必须先讨论一下如何去编译程序。为了能编译(compile)与运行程序,你需要有一个Sedona安装系统。Tridium在创造Sedona语言的同时,也为它的平台制作了一系列的编译工具、解释工具以及APIs。你可以从http://www.sedonadev.org/download/build/下载Sedona SDK最新版本。
Sedona SDK并不是你唯一可以使用的Sedona开发环境,目前,Tridium公司提供了Sedona workbench 的集成开发环境,这可以方便地让你从事Sedona 程序开发的工作。本书假设你是使用Sedona SDK与其附加的命令行工具。如果你使用其他集成开发环境,请详细阅读产品的说明文件,以便学会如何编译与运行如例1-1 的程序。
在本书中,我们把你的安装根目录用{Sedona_home}表示,其中有以下标准的子目录:
- Adm:构建和测试脚本
- Apps:应用程序 (.sab and .sax files)
- Bin:win32 二进制文件和 Unix shell 脚本文件
- Doc:帮助文档
- Kits:Kit文件
- Lib:Java jar 文件和properties 文件
- Manifests:manifest文件
- Platforms:Sedona platforms文件,包含platform 数据库.
- Scode: scode images文件
- Src:Java, C, 和 Sedona 源程序
当你安装完,接下来就要确保它的安装正确了。在此之前,请先确保你的计算机上安装有JRE1.4或更高版本的Java Runtime。
Sedonac
Windows
Sedona开发环境的核心支撑组件是“{Sedona_home}/bin/sedonac.exe”可执行文件,你可以使用命令行工具来验证安装是否正确。
D:\Niagara\Niagara-3.4.53\sedona\bin>sedonac–ver
Sedona Compiler 1.0.40
Copyright (c) 2007-2009 Tridium, Inc.
sedona.version = 1.0.40
sedona.home
=D:\Niagara\Niagara-3.4.53\sedonajava.home
=C:\Program Files\Java\jre6java.version
=1.6.0_10Unix
在“{Sedona_home}/adm/unix”中有一个init.sh脚本文件,你可以使用这个文件来修改或初始化你的Sedona开发环境。在此之前,你必须:
1.
导出 JAVA_HOME 至你的 login script。2.
在你的home目录创建一个名为“sedonadev”的链接并将其链接到{Sedona_home}
目录。
例如:
~/sedonadev-> ~/repos/sedona-1.0/pub更详细设置请参见Sedona开发文档中的Setup章节。
当你安装好Sedona程序开发环境后,接下来的第一件事就是必须将程序输入。请使用你最拿手的文本编辑器将例1-1的程序输入,同时请不要输入行号,因为它们只是方便解说之用。
编写Sedona程序时,你必须使用能够存储文本格式的文本编辑器(text editor),而不是使用能提供特殊字形与格式且把文件存储为某些特定格式的文字处理器(word processor)。我在Unix系统上最喜欢使用的是Emacs。如果你是使用的是Windows系统,同时又没有其他特别喜好使用的程序编辑器,你可以使用记事本或wordpad。如果你使用IDE,它可能会有一个相当不错的文本编辑器,也说详细阅读产品说明文件。在输入完程序后,请将它存储并命名为Factorial.sedona。这一点非常重要,如果你将它存储为其他的名称,该程序将会无法正常运行。
解析例1-1代码
现在我们来好好的逐行解析它,同时来看看Sedona程序的运行原理。
注释
程序的前三行是注释,Sedona会自动地忽略掉它们,但它们可以给程序员提供有关该程序的一些信息。注释是以/*字符开头,并以*/字符做结尾。任何数量的文字,包括多行文字,都可以出现在这两组字符之间。Sedona也支持另一种形式的注释,在第4 行至第23行程序中你可以看到。如果Sedona程序中出现//字符,Sedona会忽略掉它们以及该行中//字符之后的其他字符。
定义类
第5行是Sedona程序的开始,它定义了一个名为Factorial的类,这也正解释了为什么文件名要取为Factorial.sedona。文件名指出了该文件包含一个名为Factorial类的Sedona源代码。Public是个修饰符(modifier),它表示该类是公开的且可以给任何人使用。左大括号{ 标明了该类的主体的开头,该类的主体由此处开始至第23行,同时我们也可以在第23行发现右大括号 }。该程序包含了许多成对的大括号,在这些成对括号内的程序代码形成了一种嵌套式的结构。
类(class)是Sedona程序结构的基本单位,因此在程序的第一行便声明类的这一点都不令人感到惊讶。所有的Sedona程序皆为类,有些程序甚至使用了一个以上的类。Sedona是个面向组件的类对象程序语言,而类正是面向对象的最基本的结构,每一个类都定义了独一无二的对象。例1-1并不真正是一个面向对象的程序,所以我们并不打算在这里对对象与类做太深入的讨论,在后面我们会再进行仔细的探讨。现在,你必须了解的是类定义了一组交互作用的成员(member),这些成员有可能是字段(field)、方法(method)甚至是其他的类。Factorial类包含了两个成员,它们都是method,我们将在后面的章节对它们做详细的讨论。
定义method
第9行和第13行定义了Factorial类的两个方法(method)。method在Sedona程序代码中占了相当大的分量。Sedona程序可以请求或调用(invoke)一个method,如果你有编写其他程序语言的经验,你一定会曾经接触过method,但是它们通常都被称作函数(function)、程序(procedure)或子程序(subroutine)。method有参数及返回值,当你调用method时,你可以将你所要操作的数据传递给它,同时它也会将结果返回给你。Method相当类似于代数中常用的函数:
y = f(x)在这里,数学函数f会对x所代表的值做某种运算,同时会将结果返回给y。
回到例1-1的第5行。override,void 这两个关键字是修饰符(modifier),因为execute()方法是从父类component继承(inherit)而来的,关于继承将在后面章节讨论。所以,这里我们使用override来重写父类的execute()方法;而void关键字则用来表示方法返回值的形式,在这个范例中,它表示method 并没有返回值。
正如我所说的,execute()方法是相当特殊的,Sedona做为一种面向组件的类对象编程语言,Sedona的每一个对象以类的形式表现,但又是Sedona平台中的一个组件,在Sedona中,所有组件必须作为component类的子类。当Sedona解释器运行到Sedona类(程序)时,解释器会首先调用execute() method。也就是说,这是一个组件类的程序入口。
声明属性
在例1-1程序代码中的第6行和第7行,声明了一个out属性和一个in属性。Property关键字声明了out, in是一个组件的属性。紧接着的double,int关键字则声明了属性的类型。Sedona可以使用许多种变量类型,包括整数(int),浮点数(float),ASCII字符(Str)等。Sedona是一个强制类型检查的语言,也就是说所有的变量都必须具有一个指定的类型。
计算结果
当程序运行execute()方法,并执行out=factorial(in)语句时,就说明了将factorial方法的执行结果赋给属性out。在这里不难看出,out属性与factorial()方法的类型都是double(双精度浮点型),而传给factorial()的自变量是int类型。
显示输出
当程序执行完成后,将会在组件的out属性上显示计算结果。
检查输入的有效性
在factorial()方法中,我们看到了局部变量的声明、赋值与调用。在程序代码中的第14行,其语句有点不同,它是一个if语句,会执行另一个条件语句。If语句是一种流程控制(flow-control)语句,它会影响解释器运行程序的方式。
在if关键字之后的是由一对小括号()括起来的表达式(expression)与一个语句。Sedona解释器会先求出表达式的值,如果所得的值是真,解释器会执行这个语句;如果所得的值为假,则解释器会跳过该语句直接执行下一个语句。
在我们要继续下一行之前,应该要来讨论一下为什么将第14行和第15行放在最前面。如果你尝试着去对一个负的整数计算其阶乘,这将是不正确的,所以这几行是用来确保输入的x值是合法的。如果该值不合法,那么factorial()将会返回一个无效的结果0.0。
一个重要的变量
第17行是另一个变量的声明,它声明了double类型且名称为fact的变量,同时赋给它一个1.0的初始值,此变量的值在我们计算阶乘时将会用到。在Sedona里,变量可以在任何地方被声明,并没有限制为一定要在method或某段程序的开头处声明。
循环与计算阶乘
第18行使用了另外一种类型的语句:while循环。跟if语句一样,while语句是由一对小括号所括起来的表达式与一个语句构成的。当Sedona解释器看到了while语句,它会先求出表达式的值,如果表达式所求出的值为真,则解释器就会去执行后面的语句。解释器会一直重复进行这样的过程,计算表达式里的值,如果表达式的值为真就会执行该语句,直到表达式的值为假为止。
- Niagara程序员的初始教程2015-06-03
Niagara程序员的初始教程
献给和几个月前的我一样的对Niagra模块编程不知如何着手的同学们。
首先,说明一下要编制的模块的功能,很简单,假设一个设备有3个错误干结点,将其在一个字符点输出该设备的错误原因,例如干结点1为真则输出“断电”,干结点2错误输出“保险丝融毁”,干结点3为真错误点输出“缺相保护”。
第二,预备条件,NiagaraAX,Eclipse,Eclipse_Niagara_Plugin即Niagara的Eclipse插件要安装好。设置好Eclipse插件中NiagaraAX的地址。
下面开始:
1.New AX Module,填写模块名等信息,例如
2.添加依赖包,例如
3.添加工程包,例如
4.完成向导。
特别提醒:如果是使用AX插件完成上述4步,应该在build.xml中自动有这句<package name="com.sh.eb" /> ,感谢shnaicpker兄的提醒和验证
5.右键单机刚建立工程里com.sh.eb包,选new->new class,填写类名并设定依赖包,例如
此步要注意的是,类名首字母必须是大写B,第二个字母必须大写,否则Niagara插件的Slotomatic工具可能不过滤你的类文件。
建立好类后,应显示类,并自动添加形如 以“/*”- 开头 “-*/” 结尾结尾的Slotomatic注释区域,该区域用起来很方便。
6.使用Niagara插件的Slotomatic工具,过滤你的文件,如条件符合,你会发现类文件中多了类型返回语句,点击Ctrl+shift+o,添加javax.baja.sys.TYPE类型的import。
还有,module-include.xml文件中添加了如下语句
<type name="ErroBand" class="com.sh.eb.BErroBand"/>
7.添加输入属性和输出属性,将例子中BErroBand类中的Slotomatic注释区域编辑为如下语句
/*-
//不好意思了各位,此处代码拷混了,原文class BYcBoolBandString是错的,应该是新建的类名
class BErroBand
{
properties
{
InBool_1:BStatusBoolean
default{[ new BStatusBoolean(false) ]}
flags{ summary,executeOnChange }
InBool_2:BStatusBoolean
default{[ new BStatusBoolean(false) ]}
flags{ summary,executeOnChange }
InBool_3:BStatusBoolean
default{[ new BStatusBoolean(false) ]}
flags{ summary,executeOnChange }
InBool_1_BindingString:BStatusString
default{[ new BStatusString("Bool_1 band Message") ]}
flags{ summary }
InBool_2_BindingString:BStatusString
default{[ new BStatusString("Bool_2 band Message") ]}
flags{ summary }
InBool_3_BindingString:BStatusString
default{[ new BStatusString("Bool_2 band Message") ]}
flags{ summary }
OutMessage : BStatusString
default{[new BStatusString("")]}
flags{summary}
}
actions
{
}
topics
{
}
}
-*/
其中InBool_1、2、3为输入的3个设备故障干结点,有任何变化都会触发事件。
InBool_1_BindingString、 InBool_2_BindingString 、InBool_3_BindingString分别为3个故障干结点所对应的设备故障信息字符串。
OutMessage为设备的总的故障信息输出点。
其格式对应含义为
InBool_1:BStatusBoolean //属性名及类型
default{[ new BStatusBoolean(false) ]} //默认值及构造函数
flags{ summary,executeOnChange } //属性标签函数,executeOnChange标识该属性一有变化就会触发OnChange事件。
8.运行Slotomatic工具,会发现函数内自动增加了上述属性的语句。点击Ctrl+shift+o,添加引用类,如下图
9.手工添加模块的OnChange事件函数,在自动代码后添加如下代码,含义见注释
////////////////////////////////////////////////////////////////
//OnChange Event
////////////////////////////////////////////////////////////////
//覆盖BComponent类中的changed事件,意即只要flags里包含executeOnChange 属性的任意一个属性值有变化,都会
//调用该函数,发生变化的属性作为property参数传入。
public void changed(Property property , Context context)
{
super.changed(property, context); //基类事件调用
if(!isRunning()) //模块没在运行则跳过
return;
else if(Flags.isExecuteOnChange(this, property))
{
if(property.getName().equals(InBool_1.getName())) //如果发生变化的属性的名称是InBool_1的名称
getOutMessage().setValue(getInBool_1_BindingString().getValue().toString()); //就将InBool_1_BindingString()的字符串值赋值给
//OutMessage属性。下同
else if(property.getName().equals(InBool_2.getName()))
getOutMessage().setValue(getInBool_2_BindingString().getValue().toString());
else if(property.getName().equals(InBool_3.getName()))
getOutMessage().setValue(getInBool_3_BindingString().getValue().toString());
}
}
10.打开module.palette文件,在其中<p m="b=baja" t="h:Folder">语句下添加如下语句
<p n="erroBandTool" m="eb=erroBand" t="eb:ErroBand"/>
具体含义为:
n="erroBandTool" 是 AX里palette工具下的名称
m="eb=erroBand" 模块名,不是类名
t="eb:ErroBand" 模块下的类名
此文件将使我们的模块在AX中的Palette工具窗口中出现可拖动的工具图标。
11.运行Slotomatic工具,再运行Niagara工具里的Build FUll工具,编译为erroBand.jar模块发布到NiageraAX安装目录下的Module目录中。
12.运行AX,建立站点,用Palette工具栏打开erroBand.jar模块,将erroBandTool拖入连线视图,实验功能是否实现。如下图
关于工程中几个文件的作用:
1.build.xml文件,主管模块的依赖信息等编译链接信息,上例中的1、2、3步都在此文件中有体现,可手工添加,Slotomatic工具不在此文件中自动添加。
2.module-include.xml 文件,主管模块中类型对应、管理,如上例中工程建立的实际类名为BErroBand,在此文件中被映射为ErroBand,并且在module.palette文件中使用的是ErroBand这个名称。Slotomatic工具会在此文件中添加必要的语句,但一些高级功能就要手工添加了。