提高系统稳定性的一些组态策略

由于允许组态（二次开发），除了软件本身的因素，不恰当的组态策略也会增加软件甚至系统崩溃的危险。

[软件系统的不稳定性存在几个特征]

l 系统可用内存资源的持续下降，其特征曲线是一抛物线。

l 系统的CPU占用率居高不下，平均CPU占用率高于50%是一个危险信号。

[对于一个稳定性要求较高的系统，必须达到下列指标]

l 平均CPU占用率低于50%。

l 某一进程的CPU平均占用率低于10%。

l 超过80%的高CPU占用率持续时间不要超过10秒钟。

l 在整个运行周期内，可用物理内存保持在系统总物理内存的20%以上。

[在进行系统开发前后，采用如下策略]

l 选用高稳定性、高性能的硬件系统，增加内存。

l 尽量避免使用特定的硬件系统。

l 采用高稳定性的软件平台：Windows2000

l 尽可能在到现场前调试观察各稳定性指标是否达到要求。

l 通讯线和动力线不要平行走线，如必须平行走线，需要套钢管屏蔽。

l 计算机的机箱要可靠连接大地。

l 计算机要远离变频器等大干扰源。

l 将扫描脚本程序集中在图页变量的扫描事件中编写。

l 扫描脚本程序集中在一个自动装载图页中。

l 扫描脚本程序中要严格限制IO变量的输出。必须输出前要增加限制条件。

l 除特殊情况外，图页变量的步长设定20或20以上。

l 除特殊情况外，在环境中将图页扫描周期设定为500毫秒或500毫秒以上。

l 除特殊情况外，标签的扫描周期设定为1秒或1秒以上。

l 除特殊情况外，标签的记录扫描周期设定为5秒或5秒以上。

l 不要在扫描时间中执行查询历史数据或报警，如功能需要，循环周期建议在10秒以上。

l 执行ODBC数据库写入时，循环写入周期满足实际需求即可。对使用ODBC驱动方式周期建议大于5秒；对使用“数据联结”方式周期建议大于2秒。

l 限制在同一图页中流动图元的使用的个数，尽量使用慢速，可以有效降低CPU占用率。


3.3.8版

3.3版（内部版本3.3.8.16）

【新增功能】

[网络]

项目符号

iCORE中添加了一个参数, 增加网络合并包功能。确保在网络条件恶劣的情况下网络功能的稳定可靠。

用法：

/PACK:XXXX. 其中XXXX代表多少毫秒发送一次合并数据. 此值可以根据用户的网络状况设置.

具体设置方法如下:

1、进入开物目录 Controx2000/bin.

2、右键单击ICORE.EXE文件, 选择'创建快捷方式', 则在当前目录会多出一个指向ICORE的快捷方式.

3、右键单击这个创建的快捷方式, 选择'属性', 弹出属性对话框.

4、在属性对话框的目标中会出现类似"C:\program file\huafu\controx2000\bin\icore.exe" 的文本(如果路径中没有空格或其它非法字符, 此文本就不会有双引号), 在文本的后面加上参数. 文本将变为 "C:\program file\huafu\controx2000\bin\icore.exe" /pack:3000

5、以后运行开物时, 需要直接运行此快捷方式即可.

注意:

1、快捷方式的名称可以随意修改, 也可以将其拷贝到其它目录中,如桌面上.

2、此功能为高级配置功能, 只有在网络工程中网络带宽不够的情况下才需要配置, 单机情况下或网络带宽很高时不需要.

3、如果没有加参数, 或加了参数 但没有直接运行此快捷方式, 则仍与以前没有此参数时一样.

4、由于有了网络合并, 因此在网络中客户端会有数据丢失情况.

5、由于有数据丢失, 因此会造成因为数据丢失而产生的其它情况, 如实时曲线与历史曲线显示不一致等.

6、此功能只会造成标签值数据丢失, 不会造成其它数据, 如报警等数据的丢失.

7、此功能属于高级配置功能, 请谨慎使用.

[硬件通讯]
项目符号

增加标签通讯错误颜色显示，支持的图元包括：实时曲线、文本、按钮、数码灯2。

用法：详细内容参见标签通讯状态使用说明

1、在环境中设定‘设置标签通讯状态颜色’

2、在新添加标签时，设定‘高级’选项页中内容。在修改标签时，可在‘对象窗口’的‘属性’页中修改这些高级选项。

3、运行期，在图页的实时曲线、文本、按钮和数码灯2上可观察到显示颜色随标签的通讯状态变化。

4、运行期，在iCore(数据采集)窗口‘数据’页‘标签状态’栏中显示标签的通讯状态变化。

注意:

此功能需要新版本的驱动程序配合，只有4.8.0.0以上版本的驱动程序才支持此功能。

【性能增强】

[系统稳定性]

项目符号

系统的稳定可靠性大大增强，平均无故障运行时间增加到3.2.2版本的2倍。

【纠正错误】

[Web浏览]

项目符号 在ie中浏览历史报警经过刷新后查询到的历史报警数据中没有开关量，并且不是所有的模拟量都能够查询到！

项目符号 WebView浏览工程，工程中的实时报警图元的“有无标题栏”一项为“否”，用IE浏览器打开该图页的时,用鼠标点击实时报警图元，会产生报错。或者直接打开该图页的时候也会产生报错如图：

[实时报警]
项目符号

纠正：双击实时报警窗口中非报警信息条处有确认报警的功能，只确认唯一的标签的报警信息。此标签是存在时间最长的。

项目符号

纠正：GetAlarmState报警函数不能显示出开关量的值。


标签通讯状态使用说明

一、I/O标签的错误分成两类：

（1） 超量程错误：

产生条件：当标签的值超过设定的工程值范围时产生

（2） 通讯错误

a. 数据采集错误

产生条件：当标签的通讯连续发生三次以下之一时产生。

项目符号

错误校验错

项目符号

超时错

项目符号

空报文错误

项目符号

异常错误

b. 初始状态

产生条件：标签没有刷新之前，即和设备通讯之前的状态。一般为标签的初始值或保持值。

c. 标签配置错误

产生条件：标签设备或主地址配置错误时。

d. 设备错误

产生条件：设备通讯断路或始终为故障状态时产生。

二、I/O标签的错误处理方式

1、 超量程错误（针对模拟量），用户可设定的处理方式如下：

（1） 实际值

当标签值超过工程值范围时，显示真正的采集值。

（2） 最大值或最小值

当标签值大于工程值最大值时，显示工程值的最大值。

当标签值小于工程值最小值时，显示工程值的最小值。

（3） 替换值

当标签值超过工程值范围时，显示用户的设定值。

2、 通讯错误

当通讯错误四种产生中，任何一个满足时，用户可设定的方式如下：

（1） 模拟量

a. 最大值

显示标签工程值的最大值

b. 最小值

显示标签工程值的最小值

c. 替换值

显示标签用户的设定值

（2） 开关量

a. 开

显示 True 接通（1）

b. 关

显示 False 断开（0）

（3） 字符串

显示用户的设定字符串。

三、标签的配置说明

当新建I/O标签时，标签的属性页框中，会增加一个高级选项。

1、对于模拟量，通讯错误时的默认处理方式是显示最小值；超量程错误时，显示实际值。可以根据工程需要进行更改

2、对于开关量，通讯错误的默认选项是‘关’

3、对于字符串量，通讯错误的默认选项是‘替换值’

四、标签状态的显示

目前，开物中支持标签状态显示的有文字图元、数码灯2插件和对应于开关量的按键。

1、 文字图元：

如果文字图元的动画属性（标签值显示）联接了I/O模拟量标签值显示，那么在‘环境’中可以设置标签状态的显示方式。

2、 数码灯2

数码灯2的设置如下图所示：

注：如果如果工程中不准备让用户看到标签的状态，可以将相应的

颜色设置成和底色相同即可。

3、 按键状态显示的配置方法同文字图元。

五、 对标签状态的分类：

1、 设备状态： 描述 PC 机与所连设备的联接状态，包含通讯线路断开、在联接设 备前无法正确地初始化设备。

2、 标签配置状态：描述标签地址的配置正确与否；

3、 初始化状态： 描述标签是否处于第一次通讯状态中；

4、 正常状态： 描述标签能正确地采集数据；

5、 数据采集错误：

5．1、空报文： 在允许的时间内没有接收到任何信息，说明发送的报文有错；

5．2、超时错： 在允许的时间内没有完全接收（已部分接收到）到报文；

5．3、校验错： 报文已完整地接收完毕，但没有通过校验；

5．4、异常 ： 报文完整地接收，并正确地通过校验，但报文中包含设备返回的异常、或错误状态标志位；

六、 标签状态的位定义：

错误状态双字（ErrStatus ： DWord）的高字各位代表的状态定义如下：

标签处于某种状态时，相应的标志位置‘1’，否则置‘0’；

31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16
 |  |  |  |  |  |  | 数据采集错误 | 异常 | 校验错 | 超时错 | 空报文 | 初始状态 | 标签配置状态 | 设备状态 |

ErrStatus 第 31 位为‘0’时表示正常状态，为“1”表示有某种错误发生，具体的错误信息查看相应的状态位。


3.4.1版

3.4版（内部版本3.4.1.42）

【新增功能】

[脚本函数]

项目符号 增加SavePageToJPG函数，该函数作用是可把当前图页保存到用户设定的jpg文件中

[历史曲线]

项目符号 | 增加历史曲线的最大值和最小值脚本属性(max, min),并可在运行时进行动态改变
项目符号 | 增加历史曲线可将当前查询内容存储为时控曲线可调用的文件

[内嵌报表]

项目符号 开放四个属性：

StartTime : 开始时间 String

EndTime : 结束时间: String

TimeSpan : 时间间隔： Integer

StartRefresh:刷新动作： Bool

应用示例：

StartTime := 时间1；

EndTime := 时间2；

TimeSpane := 1(秒)

StartRefresh := True;

项目符号 | 可设定数据精度，在标签连接窗口中对模拟量可设置数据小数位数。
项目符号 | 界面增加数据Import 和Export按扭功能。
项目符号 | 增加标题和数据精度
项目符号 | 增加数据导入导出功能
项目符号 | 修改标题可增加回车功能,中间增加字符$CR做为回车标记

应用示例：

如Name1$CRname2 显示为

Name1

Name2

【性能增强】

[系统稳定性]

项目符号

系统的稳定可靠性大大增强，平均无故障运行时间增加到3.3.8版本的3倍。

[系统性能]

项目符号

启动大点数工程速度提高。
项目符号 提高历史报警图元的查询速度。

[开发环境]

项目符号 | 增加工程另存时对工程名称合法性进行校验的功能
项目符号 | 增强脚本编译时标识符的有效性检查功能。

【纠正错误】

[报警图元]

项目符号 修改了报警图元滑块在反复移动过程中出错的问题

[开发环境]

项目符号 修正：在Studio中拷贝报警图元的时候,有无标题的属性丢失

[历史曲线]

项目符号 修正历史曲线最大值和最小值的设定，最小值必须小于最大值。


3.4.1版中发现的问题

3.4.1版（内部版本3.4.1.42）

[报警窗口]

项目符号

报警窗口所在图页采用PopPage函数弹出时，有时漏报报警信息的问题

[内嵌报表]

项目符号

采用查询全部数据时，返回结果是按时间间隔查询的结果。

[脚本]

项目符号 | 编译检查时，无法识别部分图元及属性。
项目符号 | 编译检查时，如果发现编译错误，不允许保存。


3.5版

3.5版（内部版本3.5.3.73）

【新增功能】

[脚本函数]

项目符号

增加两个临时存储数据函数：DataBatchStoreAtOnce、BatchStoreValue

项目符号

增加存储用户动作记录的函数WriteUserLog，事件查看器可以查询记录的结果。

用法：

WriteUserLog(PageName,ObjName,LogStr:String);

参数说明：

PageName: 图页名称，（长度64个字符）

ObjName: 对象名称;（长度64个字符）

LogStr: 详细记录内容（长度256个字符）

[基本图元]

项目符号

历史查询图元。只限对模拟量的查询 。

输入属性：

连接标签。

时间1 ：Time1，日期时间类型。

时间2 ：Time2，日期时间类型。

最大时间偏移：当设定的时间点的数据不存在时，向前偏移，如超过该设定值，返回状态输出值。

运算方式：目前只提供减法。

输出属性：

时间 1 数据值：Value1，模拟量类型。

时间 2数据值：Value2，模拟量类型。

运算结果 ：mResult，模拟量类型。两个时间点都存在时，按运算方式将时间 1 和时间 2 的数据值进行运算。如只有一个时间点时，该结果值为上面的某一个值。

状态输出数据值 : IsValid，整数类型(-1 异常 0 正常)，如所查询的时间点不存在，向前搜索。

[标签]

项目符号 增加节点LocalMemory局部内存标签，以降低网络负荷。

[图页]

项目符号 运行时修改图页颜色。

【性能增强】

[系统性能]

项目符号 对系统CPU占用率降低30%。

[历史曲线]

项目符号 部分计算机上，历史曲线的查询速度提高3倍。

[外挂报表]

项目符号 报表服务器修改为启动时窗口可隐藏（选中最小化）。

[脚本编辑]

项目符号 | 编译检查时，正确定位错误位置，提供了明确提示。
项目符号 | 实现了编译调用接口，方便按工程进行编译，并集中输出编译信息。
项目符号 | 修改GetFrameSetInfo函数，增加一个变量。

[内嵌报表]

内嵌报表针对全部数据查询改进改动包括：

项目符号 | 1： 界面显示
项目符号 | 2： 过滤条件（行、列）
项目符号 | 3： 统计处理
项目符号 | 4： 打印显示
项目符号 | 5： 导入和导出数据

【纠正错误】

[报警图元]

项目符号 报警图元滚动条在数据没有及时到达的情况下进行滑块移动的操作可能出错

[脚本编辑]

项目符号 | 脚本错误与否，允许用户保存退出。
项目符号 | 修改事件和快捷键模块进行脚本编辑时导致编辑环境出错的问题。
项目符号 | 修改事件和快捷键模块进行脚本编辑时代码无法检查错误的问题。
项目符号 | 图页的图元添加脚本后报错或自动退出开发环境。

[内嵌报表]

项目符号 | 内嵌报表不能按标签设定超量程的替换值显示超量程数据。
项目符号 | 内嵌报表在一个标签列没有值或都是错误值时后面标签没有统计值。
项目符号 | 内嵌报表在全部数据查询时，条件过滤在没有数据时序号列还在显示序号。

[历史曲线]

项目符号 查询无数据时间段时，历史曲线的等待提示一直不消失。


3.5版中发现的问题

3.5版（内部版本3.5.3.73）

[标签编辑]

项目符号

删除设备后，进入标签编辑窗口进行操作，出现异常，导致开发环境错误。（3.5.0和3.5.1版本中正常，在3.5.2和3.5.3版本中出现）


4.0版

【新增功能】

[安装]

  • 允许选择‘压缩’类型，以只安装运行系统和必要的组件。

  • 增加部分实用工具：串口监视工具、数据库浏览工具、运行资源监视工具等，安装在开物的Tools目录下。

[事件]

  • 增加启动事件、退出事件、条件事件、改变事件。

  • 原来的事件自动转换成周期事件，目前该事件需要重新存储方能正确执行。

[内嵌报表]

  • 公布部分属性：导入文件（ImportFileName）、是否显示按钮（ShowButton）等。

[配方]

  • 增加配方编辑器的显示控制。

[仿真设备]

  • 提供Cycle(周期)、Max(最大值)、Min(最小值)、Origin(基准值)、Volume(幅度值)、Evsf(占空比)等六个设备标签，支持动态修改仿真波形参数。

[报警]

  • 增加对语音猫的支持，通过脚本程序可以将报警语音播打到指定的电话上。

【纠正错误】

[标签编辑]

  • 删除设备后，进入标签编辑窗口进行操作，出现异常，导致开发环境错误。（3.5版本）

[报警窗口]

  • 报警窗口所在图页采用PopPage函数弹出时，有时漏报报警信息的问题。

[内嵌报表]

  • 采用查询全部数据时，返回结果是按时间间隔查询的结果。

  • 修改内嵌报表在全部数据查询时：在只有一条数据时报表不显示。

[脚本]

  • 编译检查时，无法识别部分图元及属性。（3.4版本）

  • 编译检查时，如果发现编译错误，不允许保存。（3.4版本）


4.0版

4.1版

【新增功能】

[加密锁]

  • 同一版本支持多种加密锁

[插件]

  • ‘面板’插件连接标签后可以显示字符串.

  • 插件中支持GetComputer; 或 DateTimeToStr(now) 或 now 表达式的计算.添加功能：报警限值修改之后对外挂报表起作用

[报表]

  • 报警限值修改之后对外挂报表起作用。

[开发环境]

  • 工程浏览窗口鼠标右键菜单风格统一。

【纠正错误】

[运行环境]

  • 使用PoppageEx 函数,VIEW会报错!
    弹出'Invalid class typecast'

  • 符号图元的top,left等属性在运行期修改无效。

[内嵌报表]

  • 修改内嵌报表针对全部数据查询: 数据个数受时间间隔的限制.

  • 内嵌报表连接标签在取消操作时：
    小窗口还弹出精度值。

  • 内嵌报表的在全部数据查询时:在设置小时为单位,cpu占用比较高.

  • 修改了查询全部数据，有的时候查询不出来的问题

[工程浏览]

  • 修改工程浏览:没有指定查询范围出错.

[脚本服务器]

  • 修改了ScriptSvr退出时的216错误.

  • 周期时间一天执行多次和其他的情况都用了基准时间和间隔时间。