CN105677303B - 一种组态软件画面编辑工具的设计方法 - Google Patents
一种组态软件画面编辑工具的设计方法 Download PDFInfo
- Publication number
- CN105677303B CN105677303B CN201410653385.1A CN201410653385A CN105677303B CN 105677303 B CN105677303 B CN 105677303B CN 201410653385 A CN201410653385 A CN 201410653385A CN 105677303 B CN105677303 B CN 105677303B
- Authority
- CN
- China
- Prior art keywords
- class
- design
- different
- component
- picture
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Stored Programmes (AREA)
Abstract
本发明属于工控人机界面领域,具体说是一种组态软件画面编辑工具的设计方法,采用MVC框架模型将画面编辑工具设计分离为三部分:功能组件设计、画面编辑设计、兼容性设计。功能组件设计,用于根据用户的当前需求,自适应定制画面,封装具有不同显示状态的组件;画面编辑设计根据不同的产品规格制作不同的画面;兼容性设计实现对PLC不同规格产品的匹配;独立开发功能组件方便用户二次开发。本发明为框架设计,可以满足多样化的用户需求、实现可加载的功能组件用于画面编辑,根据不同的PLC生产规格制定不同的画面展示,提供实现更好用户当前及未来需求的画面编辑工具,使画面编辑的开发易复用、可维护、低耦合;扩展性更好,兼容性更高且开发成本更低。
Description
技术领域
本发明属于工控人机界面领域,具体说是一种组态软件画面编辑工具的设计方法。
背景技术
组态软件又称组态监控软件是工控领域数据采集与过程控制的专用软件。组态软件大约在80年代中期出现在国外,之后传入国内也渐渐发展了20多年。国外的组态技术相对成熟,但种种原因导致组态软件在中国并不受欢迎:初始,多数企业对组态软件并不充分了解,也很少有项目跟进,都宁愿投入人力物力针对具体项目做长周期的编程开发而不采用组态式编程;况且,从国外引进的组态软件价格相对较高,对中小企业是个不小的风险;尤其在工控领域的工控软件常需要很高的可靠性,而组态软件技术相对不成熟,尚无法检测经长期使用是否自主可控,所以多数中小企业还在观望中;最重要的原因是工控软件一般功能专一,需求的变更不是很频繁。近年来,随着工控软件的快速发展,投入的资源越来越多,传统的工业控制人机界面已经无法满足用户不断增长的需求,而且不少中小企业还处在人机界面发展的保守阶段。虽然国内也在陆续开发组态软件,然而,国内现有的组态软件并没有有效的推广,开发技术还不成熟并存在以下问题:
国内现存的组态软件主要服务于各自生产人机界面厂家的标准,使用软件的代价过高,必须购买全套产品,而且技术垄断不方便中小型企业的自主研发且开发维护成本高。
现有的组态软件画面编辑工具对功能组件的设计可以满足大部分用户的当前需求,但这些功能组件往往嵌入组态软件中很难再有更好的扩展性,一旦用户需求变更,维护则异常困难。
现有的组态软件往往注入特定的PLC厂家产品规格,不易扩展,兼容性很差。
发明内容
针对现有技术中存在的上述不足之处,本发明要解决的技术问题是提供一种扩展性更好,兼容性更高且开发成本更低的设计方法,能够实现可加载的功能组件用于画面编辑,根据不同的PLC生产规格制定不同的画面展示,提供实现更好用户当前及未来需求的画面编辑工具。
本发明为实现上述目的所采用的技术方案是:一种组态软件画面编辑工具的设计方法,采用MVC框架模型将画面编辑工具设计分离为三部分:功能组件设计、画面编辑设计、兼容性设计。
所述功能组件设计,用于根据用户的当前需求,封装具有不同显示状态的组件,以自适应定制画面,并根据不同的PLC产品规格显示不同的组件属性,将设置的影响组件显示状态的属性参数传递给功能组件设计模块进而更新组件的显示状态。
所述画面编辑设计,用于加载相应的组件制作不同的画面,保存画面的信息,绑定画面、组件及其各自参数,并设置PLC产品的不同规格从而输出不同的界面外观。
所述兼容性设计,用于封装不同产品规格的PLC产品之间的差异属性。
所述的一种组态软件画面编辑工具的设计方法,其特征在于,所述功能组件设计采用策略模式与工厂模式结合的方式,将具有不同显示状态的组件封装成不同的策略类。
所述的一种组态软件画面编辑工具的设计方法,其特征在于,所述策略模式与工厂模式包括策略类、具体策略类、策略工厂类、上下文类;
所述策略类将组件的不同显示状态封装成统一的抽象接口;
所述具体策略类有多个,每个具体策略类封装有组件的不同显示状态;
所述策略工厂类为将上下文类传导过来的代表具体策略类的字符串用于构建不同的具体策略类对象;
所述上下文类用于将代表具体策略类的字符串作为参数传导给策略工厂类实现新策略的添加。
将获取的组件属性信息传给上下文类,由上下文类根据这些信息通过策略类动态选择具体策略类从而选择不同显示状态的组件;在需求变更时需更改策略工厂类和具体策略类;上下文类根据策略类对象类别调用策略工厂类,策略工厂类调用具体策略类,具体策略类覆写策略类。
所述的一种组态软件画面编辑工具的设计方法,其特征在于,所述画面编辑设计采用tag属性绑定技术绑定组件及其参数,tag绑定技术用于将画面和组件的唯一标识分别与画面属性和组件属性的唯一标识关联起来。
所述的一种组态软件画面编辑工具的设计方法,其特征在于,所述兼容性设计采用工厂模式与反射技术结合的方式,将其与不同PLC产品规格结合起来,并将他们的差异属性封装成不同的接口。
所述的一种组态软件画面编辑工具的设计方法,其特征在于,所述工厂模式与反射技术结合的方式设计PLCFactory类和多个IComponent接口;所述PLCFactory类用于动态选择调用某个IComponent接口;IComponent为封装不同PLC产品的差异属性。
所述的一种组态软件画面编辑工具的设计方法,其特征在于,当需要增加新的PLC产品的差异属性时,增加新的IComponent接口,同时更改PLCFactory类中的对应的PLCName属性值与该IComponent接口的字符串拼接;所述PLCName属性值就是代表具体PLC产品的名字字符串。
所述的一种组态软件画面编辑工具的设计方法,其特征在于,所述差异属性包括指示灯线圈类型、寄存器地址位数、寄存器类型。
本发明具有以下优点及有益效果:
1.模块化设计。本发明方法将组态软件画面编辑工具的设计划分为三个模块,组件功能的设计、画面编辑、兼容性设计。由于模块功能的独立性和接口的一致性,使编辑工具的各个模块可以相对独立的设计和扩展,而不会影响到其他模块。
2.可以满足多样化的用户需求。本发明方法不仅可以满足当前用户的需求,一旦需求变更,可以用最少的代价进行功能扩展,可定制的功能组件供没有编辑技能的用户很容易的完成二次开发。
3.面向对象和设计模式。本发明方法通过面向对象和设计模式的技术规划使组态软件画面编辑工具有更好的扩展性,更好的兼容性及可维护性。
附图说明
图1为本发明方法MVC框架设计图;
图2为功能组件设计模式图;
图3为兼容性设计模式图;
图4为实施例流程图。
具体实施方式
下面结合附图及实施例对本发明做进一步的详细说明。
如图1所示,本发明为一种组态软件画面编辑工具的设计方法,其特征在于,采用MVC框架模型将画面编辑工具设计分离为三部分:功能组件设计、画面编辑设计、兼容性设计;所述功能组件设计,用于根据用户的当前需求,封装具有不同显示状态的组件,以自适应定制画面,并根据不同的PLC产品规格显示不同的组件属性,将设置的影响组件显示状态的属性参数传递给功能组件设计模块进而更新组件的显示状态;所述画面编辑设计,用于加载相应的组件制作不同的画面,保存画面的信息,绑定画面、组件及其各自参数,并设置PLC产品的不同规格从而输出不同的界面外观;所述兼容性设计,用于封装不同产品规格的PLC产品之间的差异属性:指示灯线圈类型、寄存器地址位数、寄存器类型。
功能组件的定制技术是最为核心的,主要用于用户实现二次开发的基本对象,而这些对象又受用户编辑画面时对这些组件参数的修改,从而需要显示不同的形态,因此画面编辑模块主要实现对用户操作的响应方式,这些响应方式作用于不同的画面输出。
每一个由用户定制的组件往往有多种显示方式,如功能键就有如下显示状态:ESC键、ALM键、四个方向键、SET键、ENT键、0-9数字键,除此,还有倍角、反相、手形、隐形四种状态,组合起来大概有近百种可能状态。如果直接绘制不同的状态将使代码变得杂乱且难以维护。
如图2所示,策略类为Strategy、具体策略类为ConcreteStrategy、策略工厂类为StrategyFactory、上下文类为Context。功能组件设计(Model)采用策略模式与工厂模式结合所述策略模式与工厂模式包括策略类、具体策略类、策略工厂类、上下文类;所述策略类将组件的不同显示状态封装成统一的抽象接口;所述具体策略类有多个,每个具体策略类封装有组件的不同显示状态;所述策略工厂类为将上下文类传导过来的代表具体策略类的字符串用于构建不同的具体策略类对象;所述上下文类用于将代表具体策略类的字符串作为参数传导给策略工厂类实现新策略的添加;将获取的组件属性信息传给上下文类,由上下文类根据这些信息通过策略类动态选择具体策略类从而选择不同显示状态的组件;在需求变更时需更改策略工厂类和具体策略类;上下文类根据策略类对象类别调用策略工厂类,策略工厂类调用具体策略类,具体策略类覆写策略类。并在工厂中添加一个Case判断即可能够实现新策略的添加,而在主窗体程序中代码无需更改。不仅如此,这两种模式结合的运用简化了测试,可针对每个具体策略进行单独测试,修正其中的一个策略不影响其他的策略。使代码容易扩展维护。
画面编辑设计(Controller)难点在于tag属性绑定技术,即如何将画面、组件与其各自参数关联起来。首先,需要通过链表的形式分别存储画面、画面属性、组件属性;然后,由于组件属性与组件在其各自存储链表的顺序并不完全一致,因此为了快速索引到组件属性,每当新加入一个组件需要设置该组件的Tag属性(该属性记录组件属性的唯一标识),使其与在组件属性链表中的该组件属性相关联,这样组件与组件属性就关联在一起了,Tag属性在.net里面控件自带,其他开发环境则自定义Tag属性器。因此,在设置参数时只需要单击相应的组件即可完成设置;否则,无法找到相应的属性。这样做的好处是:组件的外观总是与其部分属性有直接关系,一旦这些属性变化,组件的显示外观就要改变,这时只需要通过Tag属性值找到原组件的属性记录下来,然后将外观改变后产生的新组件与其绑定即可。
由于人机界面主要与各类PLC配合使用文字或指示灯等形式监视、修改PLC内部寄存器或继电器的数值及状态,而生产PLC的厂家采用的标准不同,因此组态式人机界面的开发需要兼容各PLC厂家的产品。人机界面中用户定制的功能组件属性除了与PLC相关的寄存器地址、位数等不太一致外,其他的参数基本相同,因此只需要封装不同厂家PLC有差异的部分,系统运行时做出合适的选择即可,即采用工厂模式与反射技术结合。
如图3所示,兼容性设计(View)采用工厂模式与反射技术结合的方式,将其与不同PLC产品规格结合起来,并将他们的差异部分封装成不同的接口。需要设计PLCFactory类、IComponent接口,PLCFactory类定义为动态选择调用哪个IComponent接口;IComponent定义为封装不同厂家PLC产品的差异。采用反射技术后,如果要增加新的策略工厂类,在主体程序中只需要修改策略工厂名属性(PLCName)为新的工厂名字符串即可,若增加新的组件,只需增加与其相关的类并修改PLCFactory类,在PLCFactory类中增加CreateComponentn()方法返回新创建的接口对象就能实现对不同PLC产品差异的封装和调用。采用反射技术是在主体程序中通过用户选择的PLCName属性值与具体的接口类别串接后的字符串实现对具体IComponent接口对象的唯一构建,这种由一条公共接口语句代替繁杂的switch或if语句,从而消除分支判断带来的耦合,因此在功能组件定制的模式应用中也可以加入反射技术以消除分支判断。
用户安装该组态软件,然后运行编辑工具。之后就运用该编辑工具制作画面:首先,创建工程或打开已有工程,根据不同的PLC厂家制作不同的画面;接着,点击新建画面,即可开始制作画面,可以设置画面号及画面属性;然后,根据定制的功能组件,产生一副副画面,对每副画面上的组件分别设置其属性,并设置报警信息等工程参数;最后,将制作好的一副副画面转变为数据流,一方面用于仿真、下载,另一方面用于工程保存。具体的流程图如图4所示。
Claims (6)
1.一种组态软件画面编辑工具的设计方法,其特征在于,采用MVC框架模型将画面编辑工具设计分离为三部分:功能组件设计、画面编辑设计、兼容性设计;
所述功能组件设计,用于根据用户的当前需求,封装具有不同显示状态的组件,以自适应定制画面,并根据不同的PLC产品规格显示不同的组件属性,将设置的影响组件显示状态的属性参数传递给功能组件设计模块进而更新组件的显示状态;
所述画面编辑设计,用于加载相应的组件制作不同的画面,保存画面的信息,绑定画面、组件及其各自参数,并设置PLC产品的不同规格从而输出不同的界面外观;
所述兼容性设计,用于封装不同产品规格的PLC产品之间的差异属性;
所述功能组件设计采用策略模式与工厂模式结合的方式,将具有不同显示状态的组件封装成不同的策略类;
所述策略模式与工厂模式包括策略类、具体策略类、策略工厂类、上下文类;
所述策略类将组件的不同显示状态封装成统一的抽象接口;
所述具体策略类有多个,每个具体策略类封装有组件的不同显示状态;
所述策略工厂类为将上下文类传导过来的代表具体策略类的字符串用于构建不同的具体策略类对象;
所述上下文类用于将代表具体策略类的字符串作为参数传导给策略工厂类实现新策略的添加;
将获取的组件属性信息传给上下文类,由上下文类根据这些信息通过策略类动态选择具体策略类从而选择不同显示状态的组件;在需求变更时需更改策略工厂类和具体策略类;上下文类根据策略类对象类别调用策略工厂类,策略工厂类调用具体策略类,具体策略类覆写策略类。
2.根据权利要求1所述的一种组态软件画面编辑工具的设计方法,其特征在于,所述画面编辑设计采用tag属性绑定技术绑定组件及其参数,tag绑定技术用于将画面和组件的唯一标识分别与画面属性和组件属性的唯一标识关联起来。
3.根据权利要求1所述的一种组态软件画面编辑工具的设计方法,其特征在于,所述兼容性设计采用工厂模式与反射技术结合的方式,将其与不同PLC产品规格结合起来,并将他们的差异属性封装成不同的接口。
4.根据权利要求3所述的一种组态软件画面编辑工具的设计方法,其特征在于,所述工厂模式与反射技术结合的方式设计PLCFactory类和多个IComponent接口;所述PLCFactory类用于动态选择调用某个IComponent接口;IComponent为封装不同PLC产品的差异属性。
5.根据权利要求4所述的一种组态软件画面编辑工具的设计方法,其特征在于,当需要增加新的PLC产品的差异属性时,增加新的IComponent接口,同时更改PLCFactory类中的对应的PLCName属性值与该IComponent接口的字符串拼接;所述PLCName属性值就是代表具体PLC产品的名字字符串。
6.根据权利要求1所述的一种组态软件画面编辑工具的设计方法,其特征在于,所述差异属性包括指示灯线圈类型、寄存器地址位数、寄存器类型。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410653385.1A CN105677303B (zh) | 2014-11-17 | 2014-11-17 | 一种组态软件画面编辑工具的设计方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410653385.1A CN105677303B (zh) | 2014-11-17 | 2014-11-17 | 一种组态软件画面编辑工具的设计方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105677303A CN105677303A (zh) | 2016-06-15 |
CN105677303B true CN105677303B (zh) | 2018-08-24 |
Family
ID=56944444
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410653385.1A Active CN105677303B (zh) | 2014-11-17 | 2014-11-17 | 一种组态软件画面编辑工具的设计方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105677303B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108279890B (zh) * | 2017-01-06 | 2021-12-24 | 阿里巴巴集团控股有限公司 | 组件发布方法、组件构建方法及图形化机器学习算法平台 |
CN107608666B (zh) * | 2017-09-25 | 2021-11-05 | 珠海格力电器股份有限公司 | 元件编辑方法及装置 |
CN107861459A (zh) * | 2017-11-09 | 2018-03-30 | 山东省计算中心(国家超级计算济南中心) | 一种可配置显控一体化的plc控制系统及其控制方法 |
CN108038144B (zh) * | 2017-11-29 | 2020-07-10 | 爱普(福建)科技有限公司 | 一种复杂系统人机交互工程信息的快速修改方法及工具 |
CN110347471B (zh) * | 2019-07-15 | 2020-10-23 | 珠海格力电器股份有限公司 | 层级式显示组件系统、显示组件调用方法和装置 |
CN112133150A (zh) * | 2020-09-28 | 2020-12-25 | 中孚安全技术有限公司 | 一种服务于安全管理培训的仿真教学系统 |
CN112631699A (zh) * | 2020-12-21 | 2021-04-09 | 平安普惠企业管理有限公司 | 应用程序显示方法、装置、设备及计算机存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101882071A (zh) * | 2009-05-07 | 2010-11-10 | 北京四方继保自动化股份有限公司 | 一种组态软件的画面设计方法 |
EP2416242A1 (en) * | 2009-03-31 | 2012-02-08 | Hitachi Automotive Systems, Ltd. | In-vehicle electronic control device, control software and development tool for control software |
-
2014
- 2014-11-17 CN CN201410653385.1A patent/CN105677303B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2416242A1 (en) * | 2009-03-31 | 2012-02-08 | Hitachi Automotive Systems, Ltd. | In-vehicle electronic control device, control software and development tool for control software |
CN101882071A (zh) * | 2009-05-07 | 2010-11-10 | 北京四方继保自动化股份有限公司 | 一种组态软件的画面设计方法 |
Non-Patent Citations (8)
Title |
---|
VB编程中控件Tag 属性的特殊应用;陈亚爱等;《北京教育学院学报(自然科学版)》;20061031;第1卷(第5期);第7-10,45页 * |
内嵌脚本的组态软件策略模块设计与实现;方正等;《控制工程》;20100731;第17卷(第4期);第532-536页 * |
反射机制下类工厂模式的实现与研究;吴东庆等;《计算机应用》;20060331;第26卷(第3期);第705-707页 * |
基于C#的监控组态软件开发;王光;《中国优秀硕士学位论文全文数据库 信息科技辑》;20140415(第4期);摘要,第1-92页 * |
基于C#的监控组态软件开发;王光;《中国优秀硕士学位论文全文数据库 信息科级辑》;20140415(第4期);摘要,第1-92页 * |
基于插件的组态软件设计与实现;陈云云等;《计算机测量与控制》;20130228;第21卷(第2期);第436-438页 * |
组态软件的设计方法研究;王安等;《机电一体化》;20090831;第82-84页 * |
面向PLC的组态软件图形界面的设计与实现;马文艳等;《计算机测量与控制》;20070930;第15卷(第9期);第1235-1237页 * |
Also Published As
Publication number | Publication date |
---|---|
CN105677303A (zh) | 2016-06-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105677303B (zh) | 一种组态软件画面编辑工具的设计方法 | |
CN107220064B (zh) | 一种数控系统界面组态开发方法 | |
CN106371825B (zh) | 一种移动端应用界面表单动态生成方法及装置 | |
CN109597376A (zh) | 过程控制工厂中用于支持多语言显示视图能力的系统和方法 | |
CN101673236B (zh) | 一种全覆盖的微处理器测试用例包自动生成方法 | |
CN113703749A (zh) | 一种基于可视化编程技术的信息系统及其构建方法 | |
CN103885782A (zh) | 一种可视化编程页面程序库函数封装重用方法 | |
US20040012632A1 (en) | Disabling and conditionally compiling graphical code in a graphical program | |
CN108597014B (zh) | 一种基于可视化编程的跨平台渲染效果的编辑系统 | |
CN105068927A (zh) | 基于关键字驱动的城轨传动控制单元自动化测试方法 | |
US20120304148A1 (en) | Visual comparison display of software | |
US8074177B2 (en) | User defined wire appearance indicating data type in a graphical programming environment | |
CN105955888A (zh) | 一种页面调试预览方法及系统 | |
JP4302146B2 (ja) | プログラム作成支援装置 | |
CN107861716A (zh) | 软件定义型控制系统及控制方法 | |
CN103324541B (zh) | 软件之间数据自动传输的方法 | |
CN107423054A (zh) | 基于fpga的自定义图形化算法组态装置、系统和方法 | |
CN106815015A (zh) | 一种ios中视图组织方法及系统 | |
CN104063231B (zh) | 一种基于hit‑tena的试验资源快速接入方法 | |
CN104391731A (zh) | 一种基于c#的与数据类型无关的编辑方法 | |
CN110147226A (zh) | 一种根据功能块图自动生成程序的系统、方法及装置 | |
CN105446747B (zh) | 一种可视化立体码触屏编译器与编程技术 | |
CN105117404B (zh) | 基于图表类型和数据特征场景下的图表显示缺陷优化方法 | |
CN106681727A (zh) | Modelica外部函数图形化编辑系统及其实现方法 | |
CN110161944A (zh) | 一种plc编程软件的编程方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |