发表于:2015/5/7 9:44:34
#0楼
测试人:刘畅
测试时间:2014年3月-2015年1月
测试工具:Indusoft Web Studio v7.1
测试项目:**公司5w机组换热项目
**公司如皋自来水项目
一、 测试背景
本测试报告是基于本人在2014年在亲身工作中的使用体会。
本人在工控行业工作时间为一年,indusoft是我接触比较早的组态及PLC程序控制软件之一,除了本款软件外,还同时有在使用西门子公司的博途v12及力控(ForceControl)进行其他工控项目的开发工作,故在报告中会有少许横向比较的成分。
Indusoft从开始接触到目前也有进一年的时间,参与过两个实体项目的开发,包括组态形式的是采集、发布项目,也有针对下位的监控,控制项目。对于indusoft各项基本性能的体验应该是比较全面的。
这篇测试报告会本着客观、真实的基本角度来indusoft软件的具体功能来进行描述。可能由于我解除这个领域时间不长,对软件了解程度也一般,所以更多的是站在一个初学乍练的人在应用indusoft软件进行项目开发的角度来进行介绍。如果有不全面和存疑的地方还望能予以斧正。
二、 开发环境和平台信息
Indusoft主要是针对window架构下操作环境进行开发,在硬件平台上我主要使用的是自己win7 64位的PC机、win7 64位的笔记本 、台湾鸿格公司生产的XP-8741 PLC控制器。
PLC控制器主要安装在机组设备上,执行数据采集和执行控制功能,主要的开发是在PC上完成的。在开发环境变换,整个程序项目的运行状态都很稳定。XP上应用的为window Embedded 操作系统,两套系统之间,程序可以自由打包移动。
本次开发使用的是版本较新的indusoft web studio v7.1,整体界面风格简介明了。
左上角为indusoft的logo,点开后为打开、保存、发布等文件方面相关操作。最上面一条也基本是打开、新建等功能,将运行(F5)、停止(shift+f5)和帮助(F1)放在最上面对于程序编辑工作来说可以说是提供了一些便利,但是,由于在前段界面开发时很多时候都是全屏状态下的,并不能使用这个功能的。略显鸡肋。
下面的功能区,包括Home主要包含一些主要功能,如Task:操作
一些主要的副应用,例如数据库(database spy),网络连接(TCP/ip server)等,管理他们的启动方式;验证(verify):检测项目文件的完整性;以及程序的run、stop和debug等诸如此类的功能。
View区主要针对开发界面的规划和设置。设置每个部分的相对比例和组合模式。
Insert区包含各种相关模块的天赋,例如:tag、screen、trend、recipe等。也包含了一些通讯方式的添加,包括OPC、TCP/IP、DDE等。
Project区主要包含了设置项目架构的相关功能。包括项目模块之间的通讯、安全信息及web发布等。
Help区则主要提供了一些相关介绍和帮助信息。以便于初学者更快的理解和熟悉这款软件。
左侧为项目视图,包括了global、graphics、task、comm四个选项卡。
Global选项卡主要是显示了项目包含的主要文件。Graphics选项卡则主要显示了项目所包含的界面(包括Graphics Script脚本)及thin clients发布模式的相关信息。Task选项卡主要是伴随项目运行的一些任务,包括警报、趋势图、配方、报告、数据库、公式、脚本等。而Comm则涵盖了和通信有关的全部信息。
个人认为左侧边栏的设计比较到位,根据开发阶段进行划分,比较简单、易用。所有的配置文件、脚本文件、报表、配方、报警、通信驱动都以文件的方式显示在左侧,编辑起来很方便。但是上方的功能区就显得不是很合理,虽然用大图标的方式突出了主要功能,但是对于不熟悉软件使用的人来说,会因为大图标还不好理解软件的功能架构,且功能分区不够合理,经常会出现需要什么小功能但却不知道他在哪个分区的情况。还有就是辅助进程在编辑调用的时候,没有提示这个辅助进程的开启方式是选择自动还是手动,偶尔会出现,需要打开的时候只能手动打开的情况,这个提示应该在添加的时候就予以提示。
除此之外,在测试的时候发现,如果程序用到了类似ODBC、TCP/IP等辅助进程,那么在测试结束之后,这些进程图标还是会残留显示在状态来,只有鼠标移动到上面的时候,才会消失,不知道这样会不会影响运行速度,但是整体效果有点欠缺。
软件的优势在于把很多功能都写成了模块封装的形式,比如数据库的挂接,PLC上可变模块的数据接口,PDF导出等等。这样其实相较于protal系列软件,大部分的FC和FB都需要自己来写的情况显然是便利了很多。然而在设置时,系统加入了很多参数设置的选项。 这些参数几乎涵盖了功能的所有方面,但是也造成了一个问题,由于基本都是显示在一个页面里面,很没有层次,参数有种堆在一起的感觉,很杂乱的感觉。 以下图的grid的advance设置为例。把所有的参数笼统在全部堆砌在一个advance选项卡里面,我认为是不太科学的。
除此之外condition这个选项的设置,写的是一些触发条件,但是我测试的时候发现,这个condition的功能不够强大,对程序语言的识别能力有限,导致很多想实现的功能,通过这个字段无法做到,然后就会导致这个模块的功能都无法完成,以至于都可以舍弃这个模块。举个例子,用grid挂接access数据库来做报表显示的时候,如果想通过condition实现一个让grid显示的数据,日期范围在date_min和date_max之间的功能就会有点小麻烦,condition内无法识别系统的tag,导致这个工作无法通过这个控件来实现。这个是让我很困扰的一点。可能我写这个语句的方式有问题,但是程序中并有告诉我具体的写法。教材里面讲的也很笼统,举的例子数量并不能满足实际的项目需求。这个是存在问题的地方,这个condition如果可以做的更加详细,能便于开发人员更好的利用这个功能来进行开发,可能会更好的展现indusoft软件开发者的初衷。
有一点要说的就是,indusoft的开发很便利,不依赖设备,虽然涉及到具体的硬件测试时必须程序转移到PLC设备上测试,平时类似界面开发,软件时序调整,通讯测试的工作都可以放在PC上完成,这样整个平台的工作可以分为,硬件挂接和后台程序编写两部分,提高的开发的效率和进度。程序放在一个文件夹内,打开并无平台限制。不依赖设备进行开发工作。这是相对比较方便的地方。
三、 开发阶段功能体验情况
3.1界面设计
产品的展示形式往往很重要,用户的直观感受就是来自于界面。由于我不是设计出身,但是这次项目的界面开发也是我负责的,所以,我也以一个不太专业的角度来谈谈indusoft的界面设计部分。
首先,在界面基本设置方面:
橙色框内为基本的长宽,位置和背景图片设置;绿色框内为基本标题栏,右上功能键,界面风格、边框、显示形式等的设置;蓝色框内为一些简单页面逻辑和安全设置。这些功能相对来说还是比较实用的,基本可以设置好页面的基本框架。页面的背景基本通过载入背景来实现,这也存在一些问题,首先页面背景的像素都是固定,并不是填充或者拉伸的模式,所以在调整页面大小的时候,需要同时调整背景图片的大小,这里有一些不便。其次,外接图片其实并不是储存在程序内,而是采取的文件路径引用的方式,也就是说如果更换平台,虽然其他组件不用重新设置,但是图片地址需要一一核对,或者说修改。来重新对图片文件进行引用设置,这也是不合理的地方之一。
在控件方面:
图形工具比较实用,active object的设计已经很成熟了,基本涵盖的参数不多不少,虽然button的样式除了os模式,其余的会显得有点老气。严格来说,其实combo box,list box实用的都是老式window的控件,所以整体来说难免显得有些古旧。对于界面整体的体系感是会构成影响的,
功能上没有太多的问题。Data object的部分Alarm,trend,grid的功能都比较完善,gird是其中我应用较多,也感受比较好的功能之一,用来挂接数据库做数据发布和数据录入和备份比较便利。显示效果也比较好,还整合了查询,排序等功能。
Symbols是很有特色的功能。
这个模块把所有的你想实现的控件都实现整合好,图片、条块、数值。整体性不错,包括表、泵、阀门、电机等都涵盖在内,这里也有一些按键做的也很美观。但是,控件库因为做的比较复杂就决定了他涵盖的范畴不会太大,虽然每个控件都做的很精致,但是具体起来,能用得上的并不多,而且每个控件的风格并不是相同意,整体看起来有点拼凑的感觉,一体感不是很好。如果一定要用其中的某个控件,可能会破坏整体的感觉。还有就是不能设置透明,比如
在这个电调阀的设计上,我想做成点一下这个电调阀就可以弹出一个设置页面的效果,但是由于不能把右上的按钮设置为无色的,所以只能给这个按钮一个这个电调阀的截图,这个截图的大小等各个方面想调整到看不出来花了很长时间。
Animation添加的是一些控件的可选项,为控件增加一些动态功能,这里也是比较不错的一点,command可以设置一些鼠标动作,写一些简单的动作脚本,或者直接执行一些内置的如:打开一个界面,关闭一个界面诸如此类的功能。不过,在command选项卡里面:
有按下、双击、弹起等状态,但就是没有鼠标移动在其上的时候触发的选项,比较遗憾。虽说这个功能似乎可以通过ActiveX控件的模式来实现,但是如果可以做在基本界面就比较好了。
虽然,控件做了很多,针对不同的工程门类,但是动画部分,基本只是基于数值变化,做的形状,色标,并没有例如转动、渐变、闪烁、流动的效果,这也是可以改善的地方。
3.2 脚本编写
Indusoft的脚本编写功能还是比较好用的,可以实现很多的界面和程序控制功能,主要是基于visual Basic的脚本程序,我并没有系统的学习过VB,以前做的基本都是基于C++和汇编的程序设计。包括单片机和嵌入式。但是这个VB的门槛并不是很高,且F1提供了很丰富的函数介绍,在逻辑上,较于梯形图的程序开发,这种脚本开发方式要便利很多。通过校本方式开发,程序整体显得比较紧凑,利用function封装操作,可以极大的精简程序体积。虽然,Protal的程序块封装的封装方式要更胜一筹,不过这种方式已经满足开发具体情况了。
主要的脚本编写分为:Graphics Script、Startup Script和Screen Script这三块,Graphics Script基本可以理解为主运行逻辑。Screen Script只在界面被打开的时候执行,Startup Script则为开始的时候执行一遍的逻辑。这种程序分区方式,应用起来比较实用,虽然要注意变量的应用范围。
系统中也有一些内建函数和变量,方便了脚本的编写。但是,对比VBscript的程序体(上)和博途v13中 SCL语言程序体(下)就可以发现:
Indusoft的程序题没有变量提示,且函数、系统变量、逻辑关系词的提示也没有区分开。而且,偶尔会出现字体格式不一样的情况。注释为绿色,关键字为蓝色,其余都是黑色,这种看上去并不像是正统程序体的显示模式。语句要是长了的话,很容易理不清逻辑。字串格式没有自动规范化,这也是可以添加的功能。
错误提示的部分也不够具体,导致有时候查错挺痛苦的,因为有时候提示有错的那行其实是没有错的,而错的是前面几行。然后影响到了这一行的执行,所以报错了。这种情况就给找bug带来了一些难度。
控件里可以有一部分vb脚本编写的逻辑,click触发为主。这个是比较好的一点,减少主程序的函数编写量,只是要注意控件逻辑与主程序之间的顺序关系。
除此之外,程序里有很多的内建语言:
像上图的这种形式,主要就是按照顺序把expression的值赋给前面的tag。这种纯赋值语句的瀑布式函数,我还没有发现其应用性,虽然如果只是要做一个赋值的话,这个还是挺好用的。
整体来说,VB的脚本的应用性还是可以的,不过因为基本没有什么自动规范化,对齐之类的,所以写代码的时候很像是在用TXT写程序。因此,要特别小心,因为基本不会提示错误或者帮助修改,只有在debug甚至执行的时候才能发现不对。脚本几乎应用在了程序开发的各个角落,不管是界面的部分,还是逻辑控制部分,驱动部分,modbus通讯,都可以用脚本来写。所以,在整个程序的角度上来看,用vb脚本有其优势,就是应用性强。所以,有其优势,也相应有他的短板。
3.3 驱动挂接及数据库
Indusoft的数据库功能其实是相对既存的database独立开来的,准确说应该是indusoft首先把数据库里某张表的数据读到软件内存,用作查询、录入、计算等。最后在结束的时候,把软件内存释放掉,把数据传输回数据库。这种方式在程序内数据操作的时候回很快,但是也存在一个问题,那就是数据量如果很大的话,这种方式是有问题的。而且,例如gird调用数据库数据。都是以一个模块的形式来设置。这个模块整合了很多内建函数,比如连接数据库,调用数据等,每次同时只能对一个数据库进行操作,这是程序设定好的。软件数据库的使用和释放的时序安排是个很头疼的过程。我之前做过70多个表的数据录入,由于控制不好这个时序,最后只能强制数据按照一定的时间节点来进行录入和读出操作。程序经常会有一些内部一直在跑的后台函数,和外部的展示触发函数,如果两个函数都要调用同一个table的数据,那么就会出现冲突。我的解决办法是,复制表单。这种方式比较繁琐,但是这是我这个数据库菜鸟能做到最好的了。最后勉强实现了功能,但是数据录入的过程加长了一倍。这与我使用的是access数据库可能也有关系,用SQL数据库的那种调用方式,相对要好一点。
在数据库模块的使用方面,
因为调用冲突的关系,一个70个设备的采集、发布程序,我写了200多个控件模块,因为data source name和table这两个量不能连接变量给我的工作带来了很多不便。
驱动的部分,在非标准协议的通讯方面,可以用内置通讯模块+VB脚本的方式处理,比如从设备通过GPRS方式发送到指定IP的数据串。在了解了数据串的格式之后,确定好本地服务器的对外ip和内网ip,通过内置的DRIVER下的TXRX通讯功能模块:
接收到数据传输到str1 string型变量,在Graphics srcipt中对str1进行处理。
以上为str1的处理函数,把其中的数据信息,导入到s开头的各个具体的数据变量再写入数据库。这种方式虽然繁琐,但是可以应对很多非标的通讯情况。Indusoft的模块主要针对通讯方式,在具体的情况中可以具体分析对待,在工控行业,通讯协议一直都很混乱,各个硬件设备厂商使用的通讯协议和方式都不尽相同,适应性强是indusoft在这个方面的一个优势。
四、总结
综上,我作为一个工控新人对indusoft的体验感受是:这是一款拥有无限潜力的工控软件。他的延展性和适应性很强,能够应对很多小型项目和硬件情况复杂的项目,对于大型项目的开发能力不如西门子,因为他的适应性,所以他的针对性不足,没有自己的成熟,硬、软件连接体系。系统功能不鲜明,控件风格不统一,程序开发规范性不强,部分功能冗余,而且关键点没有考虑到,造成的重复劳动是其存在的问题。但是,总体来说,问题都是可以克服啊,而其优势是相对稳定。在应对复杂的工控现场实际情况包括(硬件设备情况、网络通讯情况和现场工况),indusoft的表现一定会优于其他工控软件,他的功能比forcecontrol这类老式工控软件强大,又比protal有更强的适应性,一定会在未来中国的工控领域拥有广阔的市场!
测试时间:2014年3月-2015年1月
测试工具:Indusoft Web Studio v7.1
测试项目:**公司5w机组换热项目
**公司如皋自来水项目
一、 测试背景
本测试报告是基于本人在2014年在亲身工作中的使用体会。
本人在工控行业工作时间为一年,indusoft是我接触比较早的组态及PLC程序控制软件之一,除了本款软件外,还同时有在使用西门子公司的博途v12及力控(ForceControl)进行其他工控项目的开发工作,故在报告中会有少许横向比较的成分。
Indusoft从开始接触到目前也有进一年的时间,参与过两个实体项目的开发,包括组态形式的是采集、发布项目,也有针对下位的监控,控制项目。对于indusoft各项基本性能的体验应该是比较全面的。
这篇测试报告会本着客观、真实的基本角度来indusoft软件的具体功能来进行描述。可能由于我解除这个领域时间不长,对软件了解程度也一般,所以更多的是站在一个初学乍练的人在应用indusoft软件进行项目开发的角度来进行介绍。如果有不全面和存疑的地方还望能予以斧正。
二、 开发环境和平台信息
Indusoft主要是针对window架构下操作环境进行开发,在硬件平台上我主要使用的是自己win7 64位的PC机、win7 64位的笔记本 、台湾鸿格公司生产的XP-8741 PLC控制器。
PLC控制器主要安装在机组设备上,执行数据采集和执行控制功能,主要的开发是在PC上完成的。在开发环境变换,整个程序项目的运行状态都很稳定。XP上应用的为window Embedded 操作系统,两套系统之间,程序可以自由打包移动。
本次开发使用的是版本较新的indusoft web studio v7.1,整体界面风格简介明了。
左上角为indusoft的logo,点开后为打开、保存、发布等文件方面相关操作。最上面一条也基本是打开、新建等功能,将运行(F5)、停止(shift+f5)和帮助(F1)放在最上面对于程序编辑工作来说可以说是提供了一些便利,但是,由于在前段界面开发时很多时候都是全屏状态下的,并不能使用这个功能的。略显鸡肋。
下面的功能区,包括Home主要包含一些主要功能,如Task:操作
一些主要的副应用,例如数据库(database spy),网络连接(TCP/ip server)等,管理他们的启动方式;验证(verify):检测项目文件的完整性;以及程序的run、stop和debug等诸如此类的功能。
View区主要针对开发界面的规划和设置。设置每个部分的相对比例和组合模式。
Insert区包含各种相关模块的天赋,例如:tag、screen、trend、recipe等。也包含了一些通讯方式的添加,包括OPC、TCP/IP、DDE等。
Project区主要包含了设置项目架构的相关功能。包括项目模块之间的通讯、安全信息及web发布等。
Help区则主要提供了一些相关介绍和帮助信息。以便于初学者更快的理解和熟悉这款软件。
左侧为项目视图,包括了global、graphics、task、comm四个选项卡。
Global选项卡主要是显示了项目包含的主要文件。Graphics选项卡则主要显示了项目所包含的界面(包括Graphics Script脚本)及thin clients发布模式的相关信息。Task选项卡主要是伴随项目运行的一些任务,包括警报、趋势图、配方、报告、数据库、公式、脚本等。而Comm则涵盖了和通信有关的全部信息。
个人认为左侧边栏的设计比较到位,根据开发阶段进行划分,比较简单、易用。所有的配置文件、脚本文件、报表、配方、报警、通信驱动都以文件的方式显示在左侧,编辑起来很方便。但是上方的功能区就显得不是很合理,虽然用大图标的方式突出了主要功能,但是对于不熟悉软件使用的人来说,会因为大图标还不好理解软件的功能架构,且功能分区不够合理,经常会出现需要什么小功能但却不知道他在哪个分区的情况。还有就是辅助进程在编辑调用的时候,没有提示这个辅助进程的开启方式是选择自动还是手动,偶尔会出现,需要打开的时候只能手动打开的情况,这个提示应该在添加的时候就予以提示。
除此之外,在测试的时候发现,如果程序用到了类似ODBC、TCP/IP等辅助进程,那么在测试结束之后,这些进程图标还是会残留显示在状态来,只有鼠标移动到上面的时候,才会消失,不知道这样会不会影响运行速度,但是整体效果有点欠缺。
软件的优势在于把很多功能都写成了模块封装的形式,比如数据库的挂接,PLC上可变模块的数据接口,PDF导出等等。这样其实相较于protal系列软件,大部分的FC和FB都需要自己来写的情况显然是便利了很多。然而在设置时,系统加入了很多参数设置的选项。 这些参数几乎涵盖了功能的所有方面,但是也造成了一个问题,由于基本都是显示在一个页面里面,很没有层次,参数有种堆在一起的感觉,很杂乱的感觉。 以下图的grid的advance设置为例。把所有的参数笼统在全部堆砌在一个advance选项卡里面,我认为是不太科学的。
除此之外condition这个选项的设置,写的是一些触发条件,但是我测试的时候发现,这个condition的功能不够强大,对程序语言的识别能力有限,导致很多想实现的功能,通过这个字段无法做到,然后就会导致这个模块的功能都无法完成,以至于都可以舍弃这个模块。举个例子,用grid挂接access数据库来做报表显示的时候,如果想通过condition实现一个让grid显示的数据,日期范围在date_min和date_max之间的功能就会有点小麻烦,condition内无法识别系统的tag,导致这个工作无法通过这个控件来实现。这个是让我很困扰的一点。可能我写这个语句的方式有问题,但是程序中并有告诉我具体的写法。教材里面讲的也很笼统,举的例子数量并不能满足实际的项目需求。这个是存在问题的地方,这个condition如果可以做的更加详细,能便于开发人员更好的利用这个功能来进行开发,可能会更好的展现indusoft软件开发者的初衷。
有一点要说的就是,indusoft的开发很便利,不依赖设备,虽然涉及到具体的硬件测试时必须程序转移到PLC设备上测试,平时类似界面开发,软件时序调整,通讯测试的工作都可以放在PC上完成,这样整个平台的工作可以分为,硬件挂接和后台程序编写两部分,提高的开发的效率和进度。程序放在一个文件夹内,打开并无平台限制。不依赖设备进行开发工作。这是相对比较方便的地方。
三、 开发阶段功能体验情况
3.1界面设计
产品的展示形式往往很重要,用户的直观感受就是来自于界面。由于我不是设计出身,但是这次项目的界面开发也是我负责的,所以,我也以一个不太专业的角度来谈谈indusoft的界面设计部分。
首先,在界面基本设置方面:
橙色框内为基本的长宽,位置和背景图片设置;绿色框内为基本标题栏,右上功能键,界面风格、边框、显示形式等的设置;蓝色框内为一些简单页面逻辑和安全设置。这些功能相对来说还是比较实用的,基本可以设置好页面的基本框架。页面的背景基本通过载入背景来实现,这也存在一些问题,首先页面背景的像素都是固定,并不是填充或者拉伸的模式,所以在调整页面大小的时候,需要同时调整背景图片的大小,这里有一些不便。其次,外接图片其实并不是储存在程序内,而是采取的文件路径引用的方式,也就是说如果更换平台,虽然其他组件不用重新设置,但是图片地址需要一一核对,或者说修改。来重新对图片文件进行引用设置,这也是不合理的地方之一。
在控件方面:
图形工具比较实用,active object的设计已经很成熟了,基本涵盖的参数不多不少,虽然button的样式除了os模式,其余的会显得有点老气。严格来说,其实combo box,list box实用的都是老式window的控件,所以整体来说难免显得有些古旧。对于界面整体的体系感是会构成影响的,
功能上没有太多的问题。Data object的部分Alarm,trend,grid的功能都比较完善,gird是其中我应用较多,也感受比较好的功能之一,用来挂接数据库做数据发布和数据录入和备份比较便利。显示效果也比较好,还整合了查询,排序等功能。
Symbols是很有特色的功能。
这个模块把所有的你想实现的控件都实现整合好,图片、条块、数值。整体性不错,包括表、泵、阀门、电机等都涵盖在内,这里也有一些按键做的也很美观。但是,控件库因为做的比较复杂就决定了他涵盖的范畴不会太大,虽然每个控件都做的很精致,但是具体起来,能用得上的并不多,而且每个控件的风格并不是相同意,整体看起来有点拼凑的感觉,一体感不是很好。如果一定要用其中的某个控件,可能会破坏整体的感觉。还有就是不能设置透明,比如
在这个电调阀的设计上,我想做成点一下这个电调阀就可以弹出一个设置页面的效果,但是由于不能把右上的按钮设置为无色的,所以只能给这个按钮一个这个电调阀的截图,这个截图的大小等各个方面想调整到看不出来花了很长时间。
Animation添加的是一些控件的可选项,为控件增加一些动态功能,这里也是比较不错的一点,command可以设置一些鼠标动作,写一些简单的动作脚本,或者直接执行一些内置的如:打开一个界面,关闭一个界面诸如此类的功能。不过,在command选项卡里面:
有按下、双击、弹起等状态,但就是没有鼠标移动在其上的时候触发的选项,比较遗憾。虽说这个功能似乎可以通过ActiveX控件的模式来实现,但是如果可以做在基本界面就比较好了。
虽然,控件做了很多,针对不同的工程门类,但是动画部分,基本只是基于数值变化,做的形状,色标,并没有例如转动、渐变、闪烁、流动的效果,这也是可以改善的地方。
3.2 脚本编写
Indusoft的脚本编写功能还是比较好用的,可以实现很多的界面和程序控制功能,主要是基于visual Basic的脚本程序,我并没有系统的学习过VB,以前做的基本都是基于C++和汇编的程序设计。包括单片机和嵌入式。但是这个VB的门槛并不是很高,且F1提供了很丰富的函数介绍,在逻辑上,较于梯形图的程序开发,这种脚本开发方式要便利很多。通过校本方式开发,程序整体显得比较紧凑,利用function封装操作,可以极大的精简程序体积。虽然,Protal的程序块封装的封装方式要更胜一筹,不过这种方式已经满足开发具体情况了。
主要的脚本编写分为:Graphics Script、Startup Script和Screen Script这三块,Graphics Script基本可以理解为主运行逻辑。Screen Script只在界面被打开的时候执行,Startup Script则为开始的时候执行一遍的逻辑。这种程序分区方式,应用起来比较实用,虽然要注意变量的应用范围。
系统中也有一些内建函数和变量,方便了脚本的编写。但是,对比VBscript的程序体(上)和博途v13中 SCL语言程序体(下)就可以发现:
Indusoft的程序题没有变量提示,且函数、系统变量、逻辑关系词的提示也没有区分开。而且,偶尔会出现字体格式不一样的情况。注释为绿色,关键字为蓝色,其余都是黑色,这种看上去并不像是正统程序体的显示模式。语句要是长了的话,很容易理不清逻辑。字串格式没有自动规范化,这也是可以添加的功能。
错误提示的部分也不够具体,导致有时候查错挺痛苦的,因为有时候提示有错的那行其实是没有错的,而错的是前面几行。然后影响到了这一行的执行,所以报错了。这种情况就给找bug带来了一些难度。
控件里可以有一部分vb脚本编写的逻辑,click触发为主。这个是比较好的一点,减少主程序的函数编写量,只是要注意控件逻辑与主程序之间的顺序关系。
除此之外,程序里有很多的内建语言:
像上图的这种形式,主要就是按照顺序把expression的值赋给前面的tag。这种纯赋值语句的瀑布式函数,我还没有发现其应用性,虽然如果只是要做一个赋值的话,这个还是挺好用的。
整体来说,VB的脚本的应用性还是可以的,不过因为基本没有什么自动规范化,对齐之类的,所以写代码的时候很像是在用TXT写程序。因此,要特别小心,因为基本不会提示错误或者帮助修改,只有在debug甚至执行的时候才能发现不对。脚本几乎应用在了程序开发的各个角落,不管是界面的部分,还是逻辑控制部分,驱动部分,modbus通讯,都可以用脚本来写。所以,在整个程序的角度上来看,用vb脚本有其优势,就是应用性强。所以,有其优势,也相应有他的短板。
3.3 驱动挂接及数据库
Indusoft的数据库功能其实是相对既存的database独立开来的,准确说应该是indusoft首先把数据库里某张表的数据读到软件内存,用作查询、录入、计算等。最后在结束的时候,把软件内存释放掉,把数据传输回数据库。这种方式在程序内数据操作的时候回很快,但是也存在一个问题,那就是数据量如果很大的话,这种方式是有问题的。而且,例如gird调用数据库数据。都是以一个模块的形式来设置。这个模块整合了很多内建函数,比如连接数据库,调用数据等,每次同时只能对一个数据库进行操作,这是程序设定好的。软件数据库的使用和释放的时序安排是个很头疼的过程。我之前做过70多个表的数据录入,由于控制不好这个时序,最后只能强制数据按照一定的时间节点来进行录入和读出操作。程序经常会有一些内部一直在跑的后台函数,和外部的展示触发函数,如果两个函数都要调用同一个table的数据,那么就会出现冲突。我的解决办法是,复制表单。这种方式比较繁琐,但是这是我这个数据库菜鸟能做到最好的了。最后勉强实现了功能,但是数据录入的过程加长了一倍。这与我使用的是access数据库可能也有关系,用SQL数据库的那种调用方式,相对要好一点。
在数据库模块的使用方面,
因为调用冲突的关系,一个70个设备的采集、发布程序,我写了200多个控件模块,因为data source name和table这两个量不能连接变量给我的工作带来了很多不便。
驱动的部分,在非标准协议的通讯方面,可以用内置通讯模块+VB脚本的方式处理,比如从设备通过GPRS方式发送到指定IP的数据串。在了解了数据串的格式之后,确定好本地服务器的对外ip和内网ip,通过内置的DRIVER下的TXRX通讯功能模块:
接收到数据传输到str1 string型变量,在Graphics srcipt中对str1进行处理。
以上为str1的处理函数,把其中的数据信息,导入到s开头的各个具体的数据变量再写入数据库。这种方式虽然繁琐,但是可以应对很多非标的通讯情况。Indusoft的模块主要针对通讯方式,在具体的情况中可以具体分析对待,在工控行业,通讯协议一直都很混乱,各个硬件设备厂商使用的通讯协议和方式都不尽相同,适应性强是indusoft在这个方面的一个优势。
四、总结
综上,我作为一个工控新人对indusoft的体验感受是:这是一款拥有无限潜力的工控软件。他的延展性和适应性很强,能够应对很多小型项目和硬件情况复杂的项目,对于大型项目的开发能力不如西门子,因为他的适应性,所以他的针对性不足,没有自己的成熟,硬、软件连接体系。系统功能不鲜明,控件风格不统一,程序开发规范性不强,部分功能冗余,而且关键点没有考虑到,造成的重复劳动是其存在的问题。但是,总体来说,问题都是可以克服啊,而其优势是相对稳定。在应对复杂的工控现场实际情况包括(硬件设备情况、网络通讯情况和现场工况),indusoft的表现一定会优于其他工控软件,他的功能比forcecontrol这类老式工控软件强大,又比protal有更强的适应性,一定会在未来中国的工控领域拥有广阔的市场!