组态软件_组态软件排名 - CSDN
精华内容
参与话题
  • 组态软件介绍

    千次阅读 2019-11-21 14:02:10
    组态软件 什么是组态  首先,’‘组态’'是一个约定成俗的概念,并没有明确的定义。不过它常出现在工业自动化领域,所以我们可以认为组态软件是一种面向工业自动化的通用数据采集和监控软件。不过组态本身不是监控...

    组态软件

    什么是组态

     首先,’‘组态’'是一个约定成俗的概念,并没有明确的定义。不过它常出现在工业自动化领域,所以我们可以认为组态软件是一种面向工业自动化的通用数据采集和监控软件。不过组态本身不是监控系统,是用来设计监控系统的软件,它将监控系统中通用的内容封装起来,以各种直观的方式提供给用户使用。
     这边摘取度娘的一段话介绍组态。

    “组态(Configure)”的含义是“配置”、“设定”、“设置”等意思,是指用户通过类似“搭积木”的简单方式来完成自己所需要的软件功能,而不需要编写计算机程序,也就是所谓的“组态”。它有时候也称为“二次开发”,组态软件就称为“二次开发平台”。

    特点&优势

     提供了丰富的用于工业自动化监控的功能,它能从设备中采集各种信息,将信息以图形化等更易于理解的方式呈现出来,对信息进行必要的分析处理和存储,发出控制指令等。
     用户根据自己的需要进行配置组合,完成自己的系统。用户通过组态软件可以轻松实现各种监控系统。这个意义上讲,组态是个半成品,但是将复杂的底层操作封装起来,使用户在此基础之上,进一步组织,从而实现可用的监控系统。
     这点非常重要,对于非计算机专业的人来说,用一种高级语言(Java/C++)去编写一个复杂监控系统是很困难的,而组态出现场景时常是工业自动化领域,组态软件开发的便捷性使得它在该领域备受青睐。
     开发便捷,周期短,易于扩展,门槛较低,成熟的通用组件。

    不足

     明显的不足其实没有,不过网上普遍反应画面比较丑。组态的方式灵活度会比普通上位机软件差。

    目的

     轻松实现对自动化过程和设备的监视和控制。

    组态产品

     比较知名的组态产品,国内有组态王(亚控科技),ForceControl(力控)等,国外许多知名的企业如西门子、艾默生都有自己的组态软件。

    组态售价、实例

     成型的监控系统是基于硬件之上的。部署一个系统,分软、硬件配置方案,硬件组装在配置柜内(控制器、I/O卡、通讯模块、电源模块等),包括电缆等成套附件。之后,厂家提供软件平台,通过控制逻辑、过程I/O数据表、工艺流程图等,对被控对象的应用软件进行编制,于上位机的显示画面做出动态流程图,并通过对控制器的控制策略的软件编制,完成整套工艺的控制。
     下面几个网址,有部分商家的组态软件售价参考。
    iFIX 4.5
    Intouch 10.1
    iFIX组态软件工程项目开发及技术服务价格
     此外,我还咨询过几家公司的组态软件报价,了解下来,国内的几家价格明显低于国外的。数据交换点数在百级的通用组态软件,价格普遍在万元以内(128点的通用组态大概在5000以内),价格还是不错的。购买后,通常以(加密锁,用户手册,光盘,质保书)的形式到手。
     下面网址有一些组态的应用实例:
    应用实例

    展开全文
  • 组态软件的开发(C#)

    万次阅读 多人点赞 2018-09-06 10:28:36
    在工控领域,我们用到的组态软件有组态王、Cimplicity等,一方面这些软件是收费的,另一方面无论这些软件做得多好,都没办法把自己的品牌打出去,没办法满足各种自定义的需求。于是,我花了两个星期时间,开发了一款...

    在工控领域,我们用到的组态软件有组态王、Cimplicity等,一方面这些软件是收费的,另一方面无论这些软件做得多好,都没办法把自己的品牌打出去,没办法满足各种自定义的需求。于是,我花了两个星期时间,开发了一款简易版的。这是流程图界面:

    其实组态软件并没有我们想像的那么难。我们需要的功能无非就是有一张可以灵活编辑的图,这个图里面的元素会根据系统的状态去变化。

    一、图片的呈现

    我是使用WPF去开发的,首先整个画面是一个Canvas,然后里面放一些Image元素。我们知道,在组态里面,每一个元件有几种状态。例如一个阀,有半闭的状态和打开的状态,一条水管,有静止和向左向右流动的状态。我们设计的方法是,根据系统的数据,判断应该呈现哪一张图,然后把那张图添加在Canvas里面。当系统数据改变时,Canvas去掉旧图,添加新图。

    静态的图可以用png、jpg这些格式,动态的图只能使用gif了。WPF默认是不能显示动态图的,我使用了一个第三方库去完成这项任务。有兴趣的朋友可以搜索一下WpfAnimatedGif,这是目前发现显示gif性能最好的一个第三方库。

    二、元件的结构

    其实在组态图中,有两种元件,一是图片,二是文字。而且,图片有三种拉伸方法,一是随意拉伸,二是只能横向拉伸(例如水平的管路),三是只能竖向位伸。我们把元件类结构定义如下:

    其中,Component类完成了所有移动、放缩、旋转的功能,而下面继承的类只是指明了一些额外的属性。

    三、图片的编辑

    图片的编辑是最为复杂的一项功能。编辑界面如下图所示:

    我实现了一些基本的功能,例如选中元件之后,进行拉伸拖拉、放大缩小、旋转等,还有上下移动一层、对齐等功能。在这里面,旋转之后的放缩是最为复杂的。

    在WPF里面,元素的旋转都是使用RotateTransform完成的。旋转之后,元素在我们眼中,其Left和Top属性都变了,但其实在代码里,Left和Top并没有变化。这就产生了两个坐标系。我们看到的元件坐标系跟元件在代码里的坐标系是不一样的。而我们用鼠标去拖动元件的时候,鼠标的坐标其实是我们眼中的坐标系,对元件产生作用前,需要先转成元件真实的坐标系。当元件动了以后,它在自己坐标系里的位置需转换成我们眼中的坐标系。这里面需要用到一些微分的概念。具体怎么算的,在这里不赘述,文字很难表达。这是坐标转换的函数:

    public void Translate(Point _OriginPoint/*斜旧点*/, Point _p/*斜新点*/, CursorX CurrentCursor, bool PressShift)
    {
        if ((int)CurrentCursor < 0x100)
        {
            Point center = new Point() { X = OriginX + OriginWidth / 2, Y = OriginY + OriginHeight / 2 };//中心
    
            Point p = PointRotate(_p, 0 - RotateAngle, center);//正新点
            Point OriginPoint = PointRotate(_OriginPoint, 0 - RotateAngle, center);//正旧点
    
            double ChangeX = p.X - OriginPoint.X;//正X变化
            double ChangeY = p.Y - OriginPoint.Y;//正Y变化            
    
            double NewWidth = OriginWidth;
            double NewHeight = OriginHeight;
            double NewX = OriginX;
            double NewY = OriginY;
    
            bool do_it = false;
            switch (CurrentCursor)
            {
                case CursorX.WNES:
                    NewWidth = OriginWidth - ChangeX;
                    NewHeight = OriginHeight - ChangeY;
                    if (PressShift)
                    {
                        NewHeight = NewWidth * OriginHeight / OriginWidth;
                        ChangeY = OriginHeight - NewHeight;
                    }
                    if (NewWidth >= 10 && NewHeight >= 10)
                    {
                        NewX = OriginX + ChangeX;
                        NewY = OriginY + ChangeY;
                        do_it = true;
                    }
                    break;
                case CursorX.ESWN:
                    NewWidth = OriginWidth + ChangeX;
                    NewHeight = OriginHeight + ChangeY;
                    if (PressShift)
                    {
                        NewHeight = NewWidth * OriginHeight / OriginWidth;
                    }
                    if (NewWidth >= 10 && NewHeight >= 10)
                    {
                        do_it = true;
                    }
                    break;
                case CursorX.ENWS:
                    NewWidth = OriginWidth + ChangeX;
                    NewHeight = OriginHeight - ChangeY;
                    if (PressShift)
                    {
                        NewHeight = NewWidth * OriginHeight / OriginWidth;
                        ChangeY = OriginHeight - NewHeight;
                    }
                    if (NewWidth >= 10 && NewHeight >= 10)
                    {
                        NewY = OriginY + ChangeY;
                        do_it = true;
                    }
                    break;
                case CursorX.WSEN:
                    NewWidth = OriginWidth - ChangeX;
                    NewHeight = OriginHeight + ChangeY;
                    if (PressShift)
                    {
                        NewHeight = NewWidth * OriginHeight / OriginWidth;
                    }
                    if (NewWidth >= 10 && NewHeight >= 10)
                    {
                        NewX = OriginX + ChangeX;
                        do_it = true;
                    }
                    break;
    
                case CursorX.WE:
                    NewWidth = OriginWidth - ChangeX;
                    NewHeight = OriginHeight;
                    ChangeY = 0;
                    if (PressShift && ((int)componentType & 0x80) != 0)
                    {
                        NewHeight = NewWidth * OriginHeight / OriginWidth;
                        ChangeY = (OriginHeight - NewHeight) / 2;
                    }
                    if (NewWidth >= 10 && NewHeight >= 10)
                    {
                        NewX = OriginX + ChangeX;
                        NewY = OriginY + ChangeY;
                        do_it = true;
                    }
                    break;
                case CursorX.EW:
                    NewWidth = OriginWidth + ChangeX;
                    NewHeight = OriginHeight;
                    ChangeY = 0;
                    if (PressShift && ((int)componentType & 0x80) != 0)
                    {
                        NewHeight = NewWidth * OriginHeight / OriginWidth;
                        ChangeY = (OriginHeight - NewHeight) / 2;
                    }
                    if (NewWidth >= 10 && NewHeight >= 10)
                    {
                        NewY = OriginY + ChangeY;
                        do_it = true;
                    }
                    break;
                case CursorX.NS:
                    NewWidth = OriginWidth;
                    NewHeight = OriginHeight - ChangeY;
                    ChangeX = 0;
                    if (PressShift && ((int)componentType & 0x20) != 0)
                    {
                        NewWidth = NewHeight * OriginWidth / OriginHeight;
                        ChangeX = (OriginWidth - NewWidth) / 2;
                    }
                    if (NewWidth >= 10 && NewHeight >= 10)
                    {
                        NewX = OriginX + ChangeX;
                        NewY = OriginY + ChangeY;
                        do_it = true;
                    }
                    break;
                case CursorX.SN:
                    NewWidth = OriginWidth;
                    NewHeight = OriginHeight + ChangeY;
                    ChangeX = 0;
                    if (PressShift && ((int)componentType & 0x20) != 0)
                    {
                        NewWidth = NewHeight * OriginWidth / OriginHeight;
                        ChangeX = (OriginWidth - NewWidth) / 2;
                    }
                    if (NewWidth >= 10 && NewHeight >= 10)
                    {
                        NewX = OriginX + ChangeX;
                        do_it = true;
                    }
                    break;
            }
    
            if (do_it)
            {
                Point center1 = new Point() { X = NewX + NewWidth / 2, Y = NewY + NewHeight / 2 };
                Point center2 = PointRotate(center1, RotateAngle, center);
    
                Point LeftTop2 = PointRotate(new Point() { X = NewX, Y = NewY }, RotateAngle, center);
                Point LeftTop3 = PointRotate(LeftTop2, 0 - RotateAngle, center2);
    
                this.X = LeftTop3.X;
                this.Y = LeftTop3.Y;
                this.Width = NewWidth;
                this.Height = NewHeight;
    
                this.RenderTransform = new RotateTransform(RotateAngle, NewWidth / 2, NewHeight / 2);
            }
        }
        else if ((int)CurrentCursor == 0x100)
        {
            this.X = OriginX + _p.X - _OriginPoint.X;
            this.Y = OriginY + _p.Y - _OriginPoint.Y;
        }
        else
        {
            Point center = new Point() { X = OriginX + OriginWidth / 2, Y = OriginY + OriginHeight / 2 };
            double PlusAngle = TriPointAngle(center, _p, _OriginPoint);
            double NewAngle = OriginAngle + PlusAngle;
            if (PressShift)
            {
                NewAngle = (int)(NewAngle + 22.5) / 45 * 45;
            }
            this.RotateAngle = NewAngle;
        }
    }

    四、数据的交互

    对于组态图,除了呈现图形外,我们还希望:

    (1)图形根据系统状态变化而变化。

    (2)点击图形时,组态图能向主程序发送一些内容。

    关于这两点,我们定义了两个概念,一是显示条件,二是点击事件。

    在一个元件里面,包含了多个图片,而每张图片,都有自己的显示条件和点击事件。显示条件和点击事件都是一些表达式,如上图所示,当“1号采样阀状态”为1的时候,绿色的图案就会显示,而当用户点击了这个绿色图案时,主程序就会向“1号采样阀”发送一个0的信号。

    组态图控件是通过三个列表跟主程序交互的,分别是显示条件列表、显示条件值列表、点击事件列表。

    显示条件列表就是List<string>,例如是{“1号采样阀状态”,"2号采样泵状态","清洗阀状态"}。控件在显示条件输入框里提示用。

    显示条件值列表是Dictionary<string,string>,例如是{“1号采样阀状态”=1,"2号采样泵状态"=0,"清洗阀状态"=0}。主程序每隔一段时间向组态控件发送这个列表,组态控件解析每个组件的显示条件,判断显示哪一张图。

    点击事件列表也是List<string>,在点击事件框里提示用。点击图片之后,控件调用一个声明好的回调函数,向主程序发送消息。

    //初始化显示条件列表和点击事件列表
    List<string> list1 = new List<string>();
    List<string> list2 = new List<string>();
    if (dt1 != null && dt1.Rows.Count != 0)
    {
        for (int i = 0; i < dt1.Rows.Count; i++)
        {
            string DeviceName = Convert.ToString(dt1.Rows[i]["DeviceName"]);
            string FactorName = Convert.ToString(dt1.Rows[i]["FactorName"]);
            int DeviceType = Convert.ToInt32(dt1.Rows[i]["DeviceType"]);
            int FactorType = Convert.ToInt32(dt1.Rows[i]["FactorType"]);
    
            if (FactorType != 4)
            {
                list1.Add(DeviceName + "." + FactorName);
                list1.Add(FactorName);
            }
            else if (FactorType == 4 && DeviceType == 3)
            {
                list2.Add(FactorName);
            }
        }
    }
    
    Global.StateList = list1;
    Global.CommandList = list2;
    
    
    
    //定时更新组态图状态
    private void Timer_Elapsed(object sender, ElapsedEventArgs e)
    {
        this.Dispatcher.Invoke(new Action(() =>
        {
            FlowChartCtrl page = Container.Children[0] as FlowChartCtrl;
    
            Random rand = new Random();
    
            Dictionary<string, string> dict = new Dictionary<string, string>();
            dict.Add("PLC.1号采样阀", rand.Next(100) > 50 ? "1" : "0");
            dict.Add("PLC.2号采样阀", rand.Next(100) > 50 ? "1" : "0");
            dict.Add("PLC.1号采样泵", DateTime.Now.Second % 10 > 5 ? "1" : "0");
            dict.Add("PLC.2号采样泵", rand.Next(100) > 50 ? "1" : "0");
            dict.Add("高锰酸盐指数分析仪.实时时间", DateTime.Now.ToString());
    
            page.UpdateData(dict);
        }));
    }

     

    展开全文
  • 几种组态软件的比较

    万次阅读 2008-11-21 09:22:00
    随着工业自动化水平的迅速提高,计算机在工业领域的广泛应用,人们对工业自动化的要求越来越高,种类繁多的控制设备和过程监控装置在工业领域的应用,使得传统的工业控制软件已无法满足用户的各种需求。在开发传统的...
    
    

     

     

    随着工业自动化水平的迅速提高,计算机在工业领域的广泛应用,人们对工业自动化的要求越来越高,种类繁多的控制设备和过程监控装置在工业领域的应用,使得传统的工业控制软件已无法满足用户的各种需求。在开发传统的工业控制软件时,当工业被控对象一旦有变动,就必须修改其控制系统的源程序,导致其开发周期长;已开发成功的工控软件又由于每个控制项目的不同而使其重复使用率很低,导致它的价格非常昂贵;在修改工控软件的源程序时,倘若原来的编程人员因工作变动而离去时,则必须同其他人员或新手进行源程序的修改,因而更是相当困难。通用工业自动化组态软件的出现为解决上述实际工程问题提供了一种崭新的方法,因为它能够很好地解决传统工业控制软件存在的种种问题,使用户能根据自己的控制对象和控制目的的任意组态,完成最终的自动化控制工程。





      
    组态软件简介
    21_51802_9d37fbeb4327f14.gif   组态(Configuration)为模块化任意组合。通用组态软件主要特点有(1)延续性和可扩充性。用通用组态软件开发的应用程序,当现场(包括硬件设备或系统结构)或用户需求发生改变时,不需作很多修改而方便地完成软件的更新和升级;(2)封装性(易学易用),通用组态软件所能完成的功能都用一种方便用户使用的方法包装起来,对于用户,不需掌握太多的编程语言技术(甚至不需要编程技术),就能很好地完成一个复杂工程所要求的所有功能;(3)通用性,每个用户根据工程实际情况,利用通用组态软件提供的底层设备(PLC、智能仪表、智能模块、板卡、变频器等)的I/O Driver、开放式的数据库和画面制作工具,就能完成一个具有动画效果、实时数据处理、历史数据和曲线并存、具有多媒体功能和网络功能的工程,不受行业限制。

      目前看到的所有组态软件都能完成类似的功能:比如,几乎所有运行于32位Windows平台的组态软件都采用类似资源浏览器的窗口结构,并且对工业控制系统中的各种资源(设备、标签量、画面等)进行配置和编辑;都提供多种数据驱动程序;都使用脚本语言提供二次开发的功能,等等。但是,从技术上说,各种组态软件提供实现这些功能的方法却各不相同。从这些不同之处,以及PC技术发展的趋势,可以看出组态软件未来发展的方向。
     

      最早开发的通用组态软件是DOS环境下的组态软件,其特点是具有简单的人机界面(MMI)、图库、绘图工具箱等基本功能。随着Windows的广泛应用,Windows环境下的组态软件成为主流。与DOS环境下的组态软件成为主流。与DOS环境下的组态软件相比,其最突出的特点是图形功能有了很大的增强。国外许多优秀通用组态软件是在英文状态下开发的,它具有应用时间长、用户界面不理想、不支持或不免费支持国内普遍使用的硬件设备、组态软件本身费用和组态软件培训费用高昂等因素,这些也正是国内通用组态软件在国内不能广泛应用的原因。随着国内计算机水平和工业自动化程度的不断提高,通用组态软件的市场需求日益增大。近年来,一些技术力量雄厚的高科技公司相继开发出了适合国内使用的通用组态软件。  
    几种常用组态软件介绍
    21_51802_32c6782eb7a61f1.gif    InTouch HMI 为用户提供了今天的HMI 和监控应用所需的能力和通用性。 Wonderware 在研究与开发中进行了大量投入,保证为用户提供新型的、强大的、创新的产品。 其结果是:各种公司可以把他们的精力集中于业务的运转方面,而工程师可以利用最新的软件技术。
      InTouch 软件适合于部署在独立机械中、在分布式的服务器/ 客户机体系结构中、在利用FactorySuite 工业应用服务器的应用中,也可以作为使用终端业务的瘦客户机应用。 InTouch 还是实现了微软公司的"支持WindowsXP" 认证的第一个HMI 产品,可以从工作站、个人数字助理(PDA)和浏览器观看显示内容。[intouch软件介绍]  [intouch 9.5 ]
    21_51802_f80e20a3352913f.jpg   MCGS(Monitor and Control Generated System)是由北京昆仑通态自动化软件公司开发的一套基于Windows平台,用于快速构造和生成上位机监控系统的组态软件系统。  MCGS5.5通用版是北京昆仑通态数十位软件开发精英,历时整整一年时间,辛勤耕耘的结晶,MCGS5.5通用版无论在界面的友好性、内部功能的强大性、系统的可扩充性、用户的使用性以及设计理念上都有一个质的飞跃,是国内组态软件行业划时代的产品,必将带领国内的组态软件上一个新的台阶。MCGS能够完成现场数据采集、实时和历史数据处理、报警和安全机制、流程控制、动画显示、趋势曲线和报表输出以及企业监控网络等功能。
    [MCGS5.5通用版简介]   [MCGS组态软件]
    21_51802_6d967bfabe4d8db.jpg   GE Fanuc的iFIX软件来全面监控和分布管理全厂范围的生产数据。在包括冶金、电力、石油化工、制药、生物技术、包装、食品饮料、石油天然气等各种工业应用当中,iFIX 独树一帜地集强大功能、安全性、通用性和易用性于一身,使之成为任何生产环境下全面的HMI/SCADA解决方案。 利用iFIX各种领先的专利技术,可以帮助企业制定出更快、更有效的商业及生产决策,以使企业具有更强的竞争力。FIX和IFIX是GE Fanuc先后推出的两个组态软件,技术纯熟,应用广泛。 [FIX软件介绍]  [IFIX软件介绍]
    21_51802_ccda0232af07582.jpg   WinCC运行于个人计算机环境,可以与多种自动化设备及控制软件集成,具有丰富的设置项目、可视窗口和菜单选项,使用方式灵活,功能齐全。用户在其友好的界面下进行组态、编程和数据管理,可形成所需的操作画面、监视画面、控制画面、报警画面、实时趋势曲线、历史趋势曲线和打印报表等。它为操作者提供了图文并茂、形象直观的操作环境,不仅缩短了软件设计周期,而且提高了工作效率。WinCC,这一运行于Microsoft Windows 2000和XP下的Windows控制中心,已发展成为欧洲市场中的领导者,乃至业界遵循的标准。如果你想使设备和机器最优化运行,如果你想最大程度地提高工厂的可用性和生产效率,WinCC当是上乘之选。 [WinCC]  [西门子WinCC足态软件]  
    21_51802_d82be2ff03da0e2.jpg   EcHmi(Easy Control Human-Machine Interaction )是一个通用的工控软件人机介面组态软件。作者十多年从事工控行业软件的开发。EcHmi从HMI入手,从2001年的1.0版开始,到目前的9.5版,历经6年时间,通过不断的应用、改进,逐渐完善为一个全功能的工控组态软件,和国内外的同类软件相比有着独有的特点,比如动态模板,子图同步更新。EcHmi包含:EcMake开发环境、EcView运行系统、实时库、历史库、WEB系统5部分 。[EcHmi工控组态软件]    

    21_51802_86aca4d6e056e56.gif   力控监控组态软件是北京三维力控科技根据当前的自动化技术的发展趋势,总结多年的开发、实践经验和大量的用户需求而设计开发的高端产品,是三维力控全体研发工程师集体智慧的结晶,该产品主要定位于国内高端自动化市场及应用,是企业信息化的有力数据处理平台 。力控6.0在秉承力控5.0成熟技术的基础上,对历史数据库、人机界面、I/O驱动调度等主要核心部分进行了大幅提升与改进,重新设计了其中的核心构件,力控6.0面向. NET开发技术,开发过程采用了先进软件工程方法:“测试驱动开发”,产品品质将得到充分保证。 [力控6.0组态软件介绍]
    21_51802_ca65413a00f056c.jpg   组态王软件经过七年开发,五年的各种突发环境的真实考验,九千例工程(钢铁,化工,电力,国属粮库,邮电通讯,环保,水处理,冶金等各行业)的现场运行(包括"中华世纪坛"国家标志性工程),现已成为国内组态软件的客户首选,并且作为首家国内组态软件应用于国防,航空航天等重大领。 [组态王组态软件简介]
    组态软件的应用
      组态一词来源于英文单词Configuration,“组态软件”作为一个专业术语,到目前为止,并没有一个统一的定义。从组态软件的内涵上说组态软件是指在软件领域内,操作人员根据应用对象及控制任务的要求,配置(包括对象的定义、制作和编辑,对象状态特征属性参数的设定等)用户应用软件的过程,也就是把组态软件视为“应用程序生成器”。从应用角度讲组态软件是完成系统硬件与软件沟通、建立现场与监控层沟通的人机界面的软件平台,它的应用领域不仅仅局限于工业自动化领域。而工业控制领域是组态软件应用的重要阵地,伴随着集散型控制系统DCS (Distributed Control System)的出现组态软件已引入工业控制系统。在工业过程控制系统中存在着两大类可变因素:一是操作人员需求的变化;二是被控对象状态的变化及被控对象所用硬件的变化。而组态软件正是在保持软件平台执行代码不变的基础上通过改变软件配置信息(包括图形文件、硬件配置文件、实时数据库等),适应两大不同系统对两大因素的要求,构建新的监控系统的平台软件。以这种方式构建系统既提高了系统的成套速度,又保证了系统软件的成熟性和可靠性,使用起来方便灵活,而且便于修改和维护。

    [易控组态软件在特种热压烧结炉控制系统中的应用]

    [易控组态软件应用于磁控溅射镀膜生产线的计算机监控系统] 

    [易控组态软件在轿车胎一次法成型机中的应用]

    [易控组态软件在窑炉:玻璃钢化机组系统上的应用]

    [世纪星组态软件在冶金锻烧自动化方面的应用]

    [ 力控®组态软件用于自动灌装控制系统]

    [MCGS组态软件在钢铁厂铁水处理系统中的应用]

    [iFIX组态软件在浙江某电厂辅控系统的应用]

    [组态软件在炼油厂生产过程中的应用]

     
    组态软件的发展趋势
      很多新的技术将不断地被应用到组态软件当中,组态软件装机总量的提高会促进在某些专业领域专用版软件的诞生,市场被自动地细分了。为此,一种称为“软总线”的技术将被广泛采用。在这种体系结构下,应用软件以中间件或插件的方式被“安装”在总线上,并支持热插拔和即插即用。这样做的优点是:所有插件遵从统一标准,插件的专用性强,每个插件开发人员之间不需要协调,一个插件出现故障不会影响其他插件的运行。XML技术将被组态软件厂商善加利用,来改变现有的体系结构,它的推广也将改变现有组态软件的某些使用模式,满足更为灵活的应用需求。[全文:组态软件的发展趋势]    组态软件行一般称为通用组态软件。“通用”一词表示它可以适合各种应用领域。不同的应用领域虽然存在许多共性的东西,但是行业的差异是客观存在的。差异表现在画面的组织形式,组成部件,构建逻辑。如果让组态软件能够包罗万象来适应各行各业,那么呈现给用户的软件将过于复杂,最终会使得组态软件本身的友好性太差,失去其存在的意义。如前所述,运行时动态生成的元素是在组态环境下生成的。行业工程师可以在组态环境下构建其应用领域所需模件,然后让专业技术人员运用自己熟知的构件在运行时搭建自己的应用。这样就使组态软件形成三级应用模式:软件工程师-行业工程师-专业技术人员。软件工程师注重的是给行业工程师提供灵活的手段,行业工程师构件行业模件,专业技术人员构件最终的应用。这才会使组态软件深入到行业,这也正式组态软件未来发展之道。[组态软件新的发展趋势-运行时组态]
    组态软件的开发步骤
      如何就具体的工程应用在组态软件中进行完整、严密的开发,使组态软件能够正常工作。下面列出了典型的组态步骤:
     1、将所有I/O点的参数收集齐全,并填写表格,以备在监控组态软件和PLC上组态时使用。
    2、搞清楚所使用的I/O设备的生产商、种类、型号、使用的通信接口类型,采用的通信协议,以便在定义I/O设备时做出准确选择。
     3、将所有I/O点的I/O标识收集齐全,并填写表格,I/O标识是唯一地确定一个I/O点的关键字,组态软件通过向I/O设备发出I/O标识来请求其对应的数据。在大多数情况下I/O标识是I/O点的地址或位号名称。
     4、根据工艺过程绘制、设计画面结构和画面草图。
     5、按照第一步统计出的表格,建立实时数据库,正确组态各种变量参数。
     6、根据第一步和第二步的统计结果,在实时数据库中建立实时数据库变量与I/O点的一一对应关系,即定义数据连接。
     7、根据第四步的画面结构和画面草图,组态每一幅静态的操作画面(主要是绘图)。
     8、将操作画面中的图形对象与实时数据库变量建立动画连接关系,规定动画属性和幅度。
     9、视用户需求,制作历史趋势,报警显示,以及开发报表系统。之后,还需加上安全权限设置。
     10、对组态内容进行分段和总体调试,视调试情况对软件进行相应修改。
     11、将全部内容调试完成以后,对上位软件进行最后完善(如:加上开机自动打开监控画面,禁止从监控画面推出等),让系统投入正式(或试)运行。

    结束语:

      目前的组态软件均产生于过程工业自动化,很多功能没有考虑其他应用领域的需求。例如:化验分析(色谱仪、红外仪等,包括在线分析)、虚拟仪器(例如LabView的口号是The Software is the Instrument)、测试(如测井、机械性能试验、碰撞试验等的数据记录与回放等)、信号处理(如记录和显示轮船的航行数据:雷达信号、GPS数据、舵角、风速等)。这些领域大量地使用实时数据处理软件,而且需要人机界面,但是由于现有组态软件为这些应用领域考虑得太少,不能充分满足系统的要求,因而目前这些领域仍然是专用软件占统治地位。随着计算机技术的飞速发展,组态软件应该更多地总结这些领域的需求,设计出符合应用要求的开发工具,更好地满足这些行业对软件的需求,进一步减少这些行业在自动测试、数据分析方面的软件成本,提高系统的开放程度。 

     

     

     

    本文转自

    http://blog.cechinamag.com/weinaqu/149300/message.aspx

     

    展开全文
  • 有详细教程的组态软件,自带5个案例。由工程管理,工程绘制和工程运行三个平台组成。
  • 组态软件源码合集

    2020-07-29 14:21:47
    很多的组态软件源码合集,当然不是全部源码,只是主体框架,需要自己填写开发内容。
  • 组态软件

    2012-03-05 17:01:18
    想做一个wpf开发的程序,这个程序可是动态的添加按钮,标签等,这些按钮,标签我可以定义他们的属性,事件等。等添加完成之后,希望程序可以继续运行,而且我把程序关掉再打开,添加的哪些组件仍然在上面。...
    想做一个wpf开发的程序,这个程序可是动态的添加按钮,标签等,这些按钮,标签我可以定义他们的属性,事件等。等添加完成之后,希望程序可以继续运行,而且我把程序关掉再打开,添加的哪些组件仍然在上面。就是一个可以进行二次开发的平台。或者类似一个简单的编译器的功能。
       这个想法改如何实现呢?我现在的想法是,添加一个按钮等,我可以再更改原来界面的源码。但是这么改要借助vs的编译才能看出效果。 通过代码的动态添加等方法,又不能保证下一次打开的时候这些东西还在。
       如果我界面生成的时候全部用动态加载,感觉效率问题也是不能接受的?
       实际上,我就是想开发一个组态软件,如果不是做工控,应当不知道。
        请问有好的思路么?
    展开全文
  • 什么是组态软件

    千次阅读 2007-05-07 21:40:00
    (转)组态软件:一般英文简称有三种分别为HMI/MMI/SCADA,对应全称为Human and Machine Interface/Man and Machine Interface /Supervisory Control and Data Acquisition,中文翻译为:人机界面/监视控制...
  • 三维组态软件

    2020-07-29 14:18:35
     3D组态软件,全称3D组态监控软件系统软件。英文简写3DSCADA(3D Supervisory Control and Data Acquisition(三维数据采集与监视控制),它处于自动化控制系统的最高一级平台。3D组态能够以灵活的组态方式,为用户...
  • 嵌入式组态软件HMImaker(绿色版人机界面组态软件),是一款人机界面软件,基于ARM架构的嵌入式工控机控制系统开发的嵌入式软件,嵌入式系统具有单片机协议,modbus通讯协议,I2C通讯协议,西门子,三菱,台达,...
  • 最火前端Web组态软件(可视化)

    万次阅读 多人点赞 2020-10-27 08:46:13
    随着物联网、大数据等技术高速发展,我们逐步向数字化、可视化的人工智能(AI)时代的方向不断迈进。本文将介绍mxgraph,le5le-topology,HT-2D/3D等当前流行的前端组态软件,以及发展的趋势。
  • 支持 三菱 FX 系列PLC,免费组态软件,无时间和点数显示,新的UI样式,更加美观,采用先进的设计思想,在多台PLC联机表现尤为优秀。
  • 组态软件现在的应用已经相当广泛,无论是功能和易用性上都已经达到了一个相当的高度。但对于很多行业用户来说,尤其是对中小自动化集成商来说,很多时候使用的功能并不是特别多,往往就是基本的监控功能。在这种情况...
  • 手机组态软件

    2020-07-30 23:32:02
    鲲航物联网云平台,在云平台中组态工程,可以连接任何厂家PLC、DCS、触摸屏、组态软件等。组态完成后,直接登录手机APP就可以监视控制PLC及设备,APP无需编程。只需5分钟就可以搭建属于自己的WEB平台及手机APP监控...
  • WebAccess 组态软件

    2020-07-30 23:32:31
    监控组态软件日益成为自动化硬件厂商争夺的重点,然而国外组态软件贵,国内组态软件功能等方面还待有提高。但都是传统的c/s架构,现物联网IOT兴起时,网络,云形式的分布式架构下,以补丁形式推出所谓网络版,毕竞...
  • 真正免费的组态软件 --《快控通用组态软件
  • 世纪星组态软件

    2020-04-17 23:31:54
    免费的嵌入式组态软件,大家可以放心使用,组态软件是很好用的人机交互界面
  • 组态王是由亚控科技公司推出的一款监控系统软件,它被用于新型的工业自动控制系统,与其他传统的工业自动控制系统不同的是,组态王采用了基于标准的工业计算机软件系统的开发模式,有别于传统的封闭式系统,因此在...
  • 组态软件对比分析

    2020-07-21 09:57:45
    组态软件对比分析
  • Qt开发的组态软件(未完成版)

    热门讨论 2020-07-30 23:32:27
    这个是自己开发的一个组态软件,目前还没有完成,只开发出了其中一部分功能。还有很多功能没有完成,也没有完全测试过。
1 2 3 4 5 ... 20
收藏数 10,133
精华内容 4,053
关键字:

组态软件