×

紫金桥组态软件新的功能_运行时组态

消耗积分:0 | 格式:rar | 大小:0.06 MB | 2017-10-13

分享资料个

  运行时组态是组态软件新近提出的新的概念。运行时组态是在运行环境下对已有工程进行修改,添加新的功能。它不同于在线组态,在线组态是在工程运行的同时,进入组态环境,在组态环境中对工程进行修改。而运行时组态是在运行环境中直接修改工程。运行时组态改变了已往必须进入复杂的组态环境修改工程应用的历史,给组态软件带来了新的活力,并预示着组态软件新的发展方向。

  为了说明什么是运行时组态让我们先打个比方。我们可以将工程组态比作是建造房屋。房屋在建造前先设计好图纸,然后按照图纸进行施工,工程验收后房屋的大小、结构就固定下来了。交付住户使用后,住户自己是不能轻易改变房屋的结构(除非他本人就是建筑师且有合法手续),更不能扩展房屋的大小。如果对房屋进行改造,必须请建筑师设计,由建筑工人来施工。

  传统的组态与之类似,工程组态好并交付用户使用后,工程中包括的功能就固定不变了。如果要扩充、修改工程的功能,就必须请熟悉该工程的组态工程师进入组态环境进行修改。

  如果房屋建好后,用户能够根据自己的需要方便的改变房间的内部结构,或者扩大房屋的空间,那将是多么惬意的事。假如建造师将房间的墙壁做成可移动、可拉伸的,并且预留了制作墙壁、门窗等构造房屋所需的机器,你就自己就可以将平房变成楼房,将楼房加高。当然建筑师很难为你制作出这样的设备,但是组态软件却可以做到这些。

  组态工程师可以在构建工程后,有预见的设计出该工程的扩展工具。扩展工具用来生成扩展工程时所需的画面、画面中的构件、连接的硬件设备、新的测点等。扩展工具完全是跟该工程或该应用领域相关,工具一般只包含针对该应用的有限的几种部件,但是却能够满足该工程以后扩展。因为让技术人员(非组态工程师)掌握这些工具比掌握包罗万象的开发环境要容易得多,因此用户自己稍加指导就很容易完成工程的后期维护工作了。另外由于扩展工具只提供有限的功能,让用户犯错误的机会也就小多了。

  缩短工期。对于一具体工程项目,如果能将项目中用到的模式归纳出来,做成模板(该模板可以通过前面提到的扩展工具运行时生成),那么我们无须等到整个工程做完就可以将其投入运行了。即只要工程中需要的制作工具完成后,你就可以让最终用户在运行时自己增加功能了。让用户在运行环境中修改和完善,直至整个工程完成。该工作模式充分发挥了组态工程师和技术工人自身的优势,快速完成工程项目。因为组态工程师对组态软件熟悉,而技术工人对其应用熟悉,让他们分工做自己熟悉的事情,项目进度当然就快了。

  解决了设备、画面不确定问题。有些工程本来就存在这样的需求。如在煤矿安全监测中,作业现场具有流动性,其监测的设备是经常变化的。这就要求组态软件中的测点和监视画面根据情况不断调整。我们不可能用常规的办法将各种情况事先穷举出来,也不可能每次改变都要求现场的技术人员进入复杂的开发环境进行修改。而现场应用模式比较稳定,这样我们就易于建造其运行时扩展工具。运行时组态对此是非常适用的。

  动态生成、精简画面。已往动态场景的实现需要在组态环境中必须一一罗列,然后在画面元素中加入隐藏、显现动画,制作维护非常繁琐。在运行时这些元素不管用到与否都要为其分配空间,造成一定浪费。动态生成技术可以在需要时创建,不但使画面简化,同时也减小了系统开销。

  精简组态环境。动态生成点、画面所使用的构件都是与当前应用相关的,无关的构件不会出现在运行时的“组态”环境中。运行时的“组态”是为具体应用量身制作的。相对于开发环境中的组态要单一得多,工厂的技术人员也很容易掌握。这即保证了最终应用程序的可扩展性,又保证了运行“组态”的简单性、方便性。

  维护方便。传统意义的组态是在工程组态完成后,应用程序的功能已经固化好了。如果需要修改或增加新功能,还必须进入开发环境重新配置。这一般需要精通开发环境,并且熟悉该工程的工程师来完成。如果工程不是本单位完成的,还要涉及到升级改造,甚至另立项目的费用。动态生成可以保证系统有一定程度的扩展性,并且可以由工厂的一般技术人员来完成。

紫金桥组态软件新的功能_运行时组态

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !

'+ '

'+ '

'+ ''+ '
'+ ''+ ''+ '
'+ ''+ '' ); $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code ==5){ $(pop_this).attr('href',"/login/index.html"); return false } if(data.code == 2){ //跳转到VIP升级页面 window.location.href="//m.obk20.com/vip/index?aid=" + webid return false } //是会员 if (data.code > 0) { $('body').append(htmlSetNormalDownload); var getWidth=$("#poplayer").width(); $("#poplayer").css("margin-left","-"+getWidth/2+"px"); $('#tips').html(data.msg) $('.download_confirm').click(function(){ $('#dialog').remove(); }) } else { var down_url = $('#vipdownload').attr('data-url'); isBindAnalysisForm(pop_this, down_url, 1) } }); }); //是否开通VIP $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code == 2 || data.code ==5){ //跳转到VIP升级页面 $('#vipdownload>span').text("开通VIP 免费下载") return false }else{ // 待续费 if(data.code == 3) { vipExpiredInfo.ifVipExpired = true vipExpiredInfo.vipExpiredDate = data.data.endoftime } $('#vipdownload .icon-vip-tips').remove() $('#vipdownload>span').text("VIP免积分下载") } }); }).on("click",".download_cancel",function(){ $('#dialog').remove(); }) var setWeixinShare={};//定义默认的微信分享信息,页面如果要自定义分享,直接更改此变量即可 if(window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == 'micromessenger'){ var d={ title:'紫金桥组态软件新的功能_运行时组态',//标题 desc:$('[name=description]').attr("content"), //描述 imgUrl:'https://'+location.host+'/static/images/ele-logo.png',// 分享图标,默认是logo link:'',//链接 type:'',// 分享类型,music、video或link,不填默认为link dataUrl:'',//如果type是music或video,则要提供数据链接,默认为空 success:'', // 用户确认分享后执行的回调函数 cancel:''// 用户取消分享后执行的回调函数 } setWeixinShare=$.extend(d,setWeixinShare); $.ajax({ url:"//www.obk20.com/app/wechat/index.php?s=Home/ShareConfig/index", data:"share_url="+encodeURIComponent(location.href)+"&format=jsonp&domain=m", type:'get', dataType:'jsonp', success:function(res){ if(res.status!="successed"){ return false; } $.getScript('https://res.wx.qq.com/open/js/jweixin-1.0.0.js',function(result,status){ if(status!="success"){ return false; } var getWxCfg=res.data; wx.config({ //debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId:getWxCfg.appId, // 必填,公众号的唯一标识 timestamp:getWxCfg.timestamp, // 必填,生成签名的时间戳 nonceStr:getWxCfg.nonceStr, // 必填,生成签名的随机串 signature:getWxCfg.signature,// 必填,签名,见附录1 jsApiList:['onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); wx.ready(function(){ //获取“分享到朋友圈”按钮点击状态及自定义分享内容接口 wx.onMenuShareTimeline({ title: setWeixinShare.title, // 分享标题 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享给朋友”按钮点击状态及自定义分享内容接口 wx.onMenuShareAppMessage({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 type: setWeixinShare.type, // 分享类型,music、video或link,不填默认为link dataUrl: setWeixinShare.dataUrl, // 如果type是music或video,则要提供数据链接,默认为空 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ”按钮点击状态及自定义分享内容接口 wx.onMenuShareQQ({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口 wx.onMenuShareWeibo({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ空间”按钮点击状态及自定义分享内容接口 wx.onMenuShareQZone({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); }); }); } }); } function openX_ad(posterid, htmlid, width, height) { if ($(htmlid).length > 0) { var randomnumber = Math.random(); var now_url = encodeURIComponent(window.location.href); var ga = document.createElement('iframe'); ga.src = 'https://www1.elecfans.com/www/delivery/myafr.php?target=_blank&cb=' + randomnumber + '&zoneid=' + posterid+'&prefer='+now_url; ga.width = width; ga.height = height; ga.frameBorder = 0; ga.scrolling = 'no'; var s = $(htmlid).append(ga); } } openX_ad(828, '#berry-300', 300, 250);