如何从SCADA CIMPLICITY软件的DAT和IDX文件中提取数据?

7
我被委托从旧软件CIMplicity HMI Plant Edition 6.0的数据文件中提取数据。这是一款2002年的SCADA软件。我有一个包含许多*.DAT和*.IDX文件的数据文件目录副本。我需要将这些数据提取到CSV或SQL数据库中。一些DAT文件只是普通文本,但其他文件具有类似二进制的格式,当在PSPad中打开时,以HEX视图模式显示。

有哪些工具可以可靠地读取和提取这些文件中的数据?

TIA。

更新:我已添加了一个包含数据文件的目录列表:

 Directory of C:\tmp\xxxxxxII\data

04/30/2013  01:53 PM    <DIR>          .
04/30/2013  01:53 PM    <DIR>          ..
09/02/2008  10:46 AM            17,260 1220323606.clz
09/02/2008  10:46 AM            60,490 1220323607.clz
09/10/2008  06:36 PM           288,554 1220323608.clz
09/02/2008  10:46 AM            66,977 1220323609.clz
09/10/2008  06:37 PM            23,900 1220323610.clz
09/10/2008  06:37 PM            19,162 1220323611.clz
09/10/2008  06:48 PM            37,596 1220323612.clz
09/10/2008  06:49 PM            27,882 1220323613.clz
09/10/2008  06:49 PM            47,850 1220323614.clz
09/10/2008  06:50 PM            47,816 1220323615.clz
09/10/2008  06:52 PM         3,427,511 1220323616.clz
09/02/2008  10:46 AM            31,169 1220323617.clz
09/10/2008  06:53 PM            30,353 1220323618.clz
09/02/2008  10:46 AM           122,159 1220323619.clz
09/02/2008  10:50 AM         3,539,414 1220323828.clz
09/10/2008  06:02 PM               208 action.dat
09/10/2008  06:02 PM             3,072 action.idx
02/19/2002  11:58 PM             5,636 alarm_class.dat
02/19/2002  11:58 PM             3,072 alarm_class.idx
09/23/2008  04:26 PM           137,128 alarm_def.dat
09/23/2008  04:26 PM            49,152 alarm_def.idx
02/19/2002  11:58 PM             2,929 alarm_field.dat
02/19/2002  11:58 PM             4,096 alarm_field.idx
02/19/2002  11:58 PM                 0 alarm_intproc.dat
02/19/2002  11:58 PM             4,096 alarm_intproc.idx
02/19/2002  11:58 PM               135 alarm_mgr.dat
02/19/2002  11:58 PM             3,072 alarm_mgr.idx
09/23/2008  04:26 PM            69,531 alarm_routing.dat
09/23/2008  04:26 PM           387,072 alarm_routing.idx
02/19/2002  11:58 PM               912 alarm_type.dat
02/19/2002  11:58 PM             3,072 alarm_type.idx
02/19/2002  11:58 PM                 0 alm_setup.dat
02/19/2002  11:58 PM             4,096 alm_setup.idx
02/19/2002  11:58 PM                 0 alm_setup_cl.dat
02/19/2002  11:58 PM             3,072 alm_setup_cl.idx
02/19/2002  11:58 PM                 0 alm_setup_fr.dat
02/19/2002  11:58 PM             3,072 alm_setup_fr.idx
02/19/2002  11:58 PM                 0 alm_user.dat
02/19/2002  11:58 PM             3,072 alm_user.idx
02/19/2002  11:58 PM                 0 alrm_blk_alarm.dat
02/19/2002  11:58 PM             4,096 alrm_blk_alarm.idx
02/19/2002  11:58 PM                 0 alrm_blk_group.dat
02/19/2002  11:58 PM             3,072 alrm_blk_group.idx
02/11/1998  04:05 PM               602 amlp.cfg
09/10/2008  06:53 PM             2,415 class.dat
09/10/2008  06:53 PM             3,072 class.idx
02/11/1998  04:06 PM                 5 client.cfg
09/10/2008  02:14 PM               393 comm_exe.dat
09/10/2008  02:14 PM             4,096 comm_exe.idx
09/23/2008  03:40 PM             9,893 datalog.dat
09/23/2008  03:40 PM             5,120 datalog.idx
02/19/2002  11:58 PM             1,272 data_field.dat
02/19/2002  11:58 PM             3,072 data_field.idx
09/04/2008  03:10 PM             1,218 dbms_def.dat
09/04/2008  03:10 PM             3,072 dbms_def.idx
09/16/2008  10:45 AM            37,820 derived_point.dat
09/16/2008  10:45 AM            16,384 derived_point.idx
09/10/2008  02:14 PM               256 devcom_proc.dat
09/10/2008  02:14 PM             4,096 devcom_proc.idx
09/10/2008  02:16 PM             1,305 device.dat
09/10/2008  02:16 PM             5,120 device.idx
09/23/2008  04:26 PM         2,243,024 device_point.dat
09/23/2008  04:26 PM         1,745,920 device_point.idx
09/23/2008  04:04 PM                 6 dyn_cfg.cfg
02/19/2002  11:58 PM                 0 em_alu.dat
02/19/2002  11:58 PM             3,072 em_alu.idx
02/19/2002  11:58 PM                 0 es_eu_conv.dat
02/19/2002  11:58 PM             3,072 es_eu_conv.idx
02/19/2002  11:58 PM                 0 es_point_info.dat
02/19/2002  11:58 PM             4,096 es_point_info.idx
09/23/2008  04:26 PM           719,712 eu_conv.dat
09/23/2008  04:26 PM            78,848 eu_conv.idx
09/10/2008  06:02 PM               166 event.dat
09/10/2008  06:02 PM             3,072 event.idx
09/10/2008  06:03 PM               121 event_action.dat
09/10/2008  06:03 PM             3,072 event_action.idx
04/30/2013  01:53 PM                 0 f.txt
02/19/2002  09:49 PM           199,302 field_def.dat
02/19/2002  09:49 PM            87,040 field_def.idx
09/10/2008  02:15 PM             1,608 fr.dat
09/10/2008  02:15 PM             5,120 fr.idx
07/15/2010  03:41 PM               262 gef_cfg.ini
09/23/2008  03:39 PM             6,435 glb_parms.dat
09/23/2008  03:39 PM             6,144 glb_parms.idx
12/15/1999  11:16 AM               899 ie_deflds.cfg
11/14/2001  11:06 AM             1,101 ie_formats.cfg
02/19/2002  09:49 PM             7,548 keyconst.dat
02/19/2002  09:49 PM            18,432 keyconst.idx
02/19/2002  09:49 PM            16,984 key_field.dat
02/19/2002  09:49 PM            13,312 key_field.idx
02/19/2002  09:49 PM             9,546 lenconst.dat
02/19/2002  09:49 PM            17,408 lenconst.idx
09/10/2008  02:14 PM               990 logproc.dat
09/10/2008  02:14 PM             3,072 logproc.idx
09/23/2008  03:54 PM            47,952 log_attrib.dat
09/23/2008  03:54 PM            77,824 log_attrib.idx
09/23/2008  03:40 PM             1,848 log_event.dat
09/23/2008  03:40 PM             4,096 log_event.idx
08/05/1998  09:04 AM             1,671 log_names.cfg
09/10/2008  02:14 PM               121 master.mcp
07/18/2008  06:32 PM                32 master_mcp.app
09/10/2008  02:14 PM                29 master_mcp.dc
07/18/2008  06:32 PM                52 master_mcp.rp
09/28/2001  02:22 PM            17,449 master_opc_0.ini
02/19/2002  11:58 PM            11,312 meas_assoc.dat
02/19/2002  11:58 PM             8,192 meas_assoc.idx
02/19/2002  11:58 PM               276 meas_system.dat
02/19/2002  11:58 PM             3,072 meas_system.idx
02/19/2002  11:58 PM             1,096 meas_unit.dat
02/19/2002  11:58 PM             3,072 meas_unit.idx
09/10/2008  02:14 PM               365 model.dat
09/10/2008  02:14 PM             4,096 model.idx
07/18/2008  06:32 PM                86 node.dat
07/18/2008  06:32 PM             3,072 node.idx
09/10/2008  02:14 PM             2,167 node_logproc.dat
09/10/2008  02:14 PM             5,120 node_logproc.idx
09/23/2008  04:26 PM            32,890 object.dat
09/23/2008  04:26 PM            28,672 object.idx
09/23/2008  04:26 PM           310,464 object_attrib.dat
09/23/2008  04:26 PM           293,888 object_attrib.idx
09/23/2008  04:26 PM            22,080 object_routing.dat
09/23/2008  04:26 PM            30,720 object_routing.idx
09/10/2008  02:14 PM               715 physproc.dat
09/10/2008  02:14 PM             5,120 physproc.idx
04/26/2010  12:27 PM         2,527,608 point.dat
04/26/2010  12:27 PM           637,952 point.idx
02/19/2002  11:58 PM                95 point_alstr.dat
02/19/2002  11:58 PM             3,072 point_alstr.idx
02/19/2002  11:58 PM                 0 point_disp.dat
02/19/2002  11:58 PM             3,072 point_disp.idx
02/19/2002  11:58 PM               194 point_enum.dat
02/19/2002  11:58 PM             3,072 point_enum.idx
02/19/2002  11:58 PM               216 point_enum_fld.dat
02/19/2002  11:58 PM             4,096 point_enum_fld.idx
02/19/2002  11:58 PM               609 point_type.dat
02/19/2002  11:58 PM             3,072 point_type.idx
09/10/2008  02:14 PM               129 port_comm.dat
09/10/2008  02:14 PM             4,096 port_comm.idx
09/10/2008  02:14 PM                42 port_list.dat
09/10/2008  02:14 PM             4,096 port_list.idx
09/10/2008  02:14 PM               294 port_type.dat
09/10/2008  02:14 PM             3,072 port_type.idx
02/11/1998  04:05 PM                 5 projects.cfg
09/10/2008  02:14 PM               123 protocol.dat
09/10/2008  02:14 PM             3,072 protocol.idx
02/19/2002  11:58 PM                37 ptmgmt.dat
02/19/2002  11:58 PM             3,072 ptmgmt.idx
04/27/2010  03:25 PM            19,343 ptx_points.cfg
02/19/2002  11:58 PM                 0 pt_uf_assoc.dat
02/19/2002  11:58 PM             4,096 pt_uf_assoc.idx
02/19/2002  11:58 PM                93 pt_uf_sets.dat
02/19/2002  11:58 PM             3,072 pt_uf_sets.idx
02/19/2002  11:58 PM             1,568 pt_user_fields.dat
02/19/2002  11:58 PM             4,096 pt_user_fields.idx
02/19/2002  09:49 PM             9,856 record_def.dat
02/19/2002  09:49 PM            13,312 record_def.idx
02/19/2002  11:58 PM                 0 redund_addrs.dat
02/19/2002  11:58 PM             4,096 redund_addrs.idx
02/19/2002  11:58 PM               111 role.dat
02/19/2002  11:58 PM             3,072 role.idx
02/19/2002  11:58 PM               159 role_subsys.dat
02/19/2002  11:58 PM             4,096 role_subsys.idx
09/10/2008  02:14 PM             1,067 service.dat
09/10/2008  02:14 PM             5,120 service.idx
02/19/2002  11:58 PM               181 service_use.dat
02/19/2002  11:58 PM             3,072 service_use.idx
09/23/2008  03:57 PM               711 TCPIP0.ini
02/19/2002  11:58 PM                 0 trend_pt.dat
02/19/2002  11:58 PM             3,072 trend_pt.idx
09/02/2008  09:29 AM               434 user.dat
09/02/2008  09:29 AM             4,096 user.idx
09/10/2008  02:15 PM               784 user_fr.dat
09/10/2008  02:15 PM             6,144 user_fr.idx
07/15/2010  03:40 PM                15 warmdata.sav
             174 File(s)     17,990,662 bytes

更新: 点数据(point.dat)的截图如下: enter image description here


1
没有看到文件的样本,我不确定你期望什么样的帮助? - Burhan Khalid
3
能否提供文件本身的样本?目录列表并没有帮助。通常,idx 是指一个 .dat(数据)文件的“索引”。根据你提供的信息,这就是我所能提供的全部帮助了。 - Burhan Khalid
@Beta:理想情况下,我需要使用现有的工具提取数据。如果没有可用的工具,则需要知道如何使用Delphi或任何其他方法提取数据。 - Steve F
2
由已经绝迹的软件编写的遗留数据文件,采用可能是专有的二进制格式。这似乎开始变成一项密码分析的练习。我会四处寻找更现代化的Cimplicity版本,使用BeyondCompare解析其文件,反向工程格式,然后扫描旧文件,假设旧格式类似且可能更简单。 - Beta
@Beta 2002对于SCADA来说是最近的版本,有可能你仍然可以让它运行。这个工具的数据在80年代被使用和部署,现在在SCADA领域开始被称为遗留系统。不过,一款“现代化”的工具可能需要花费约10,000美元,所以可能不太切实际。 - rioki
显示剩余5条评论
3个回答

5

我向您表示慰问,因为您被交付了一项几乎不可能完成的任务。

好的,我对CIMPLICITY HMI Plant Edition并不了解太多,只能从外部看到一些信息。但是,由于我也在开发工业HMI和工程软件(WinCC&PCS7),也许我可以给您一些有用的提示。

首先,这种格式有99%的确定性是专有格式。您唯一可以期望得到的真正帮助来自GE公司。问题是,他们会以什么代价帮助您呢?(由于您正在尝试提取数据,您可能正在迁移;那么为什么他们应该帮助呢?)

因此,可能需要进行一些逆向工程。您需要找到创建项目的软件,这是工程软件而不是HMI运行时软件。(可能是一个软件包)。您的公司应该仍然拥有原始项目的许可证。

从那里开始,您可以创建一个新项目并查看发生了什么,或者加载现有项目,然后进行操作并查看数据发生了哪些变化。重要的是,您了解系统中存在哪些数据以及可以在哪里找到它们。

请注意,数据有两种形式:项目配置和运行时数据。

项目配置实际上不是数据,而是配置运行时系统应该显示/响应的内容。项目数据包括用户、视图/屏幕、PLC变量绑定或控制脚本等。我实在不知道您如何将大部分数据有效地放入CVS或数据库中,但WinCC可能使用MSSQL。(感谢stuxnet的默认密码)

运行时数据更简单。这些数据要么是事件记录,记录诸如操作员命令、警报和警告的内容,要么是记录的值。由于其格式严格,因此应该很容易提取这些数据。要找出记录了什么以及在哪里记录,您应该在工程软件中打开项目,从中了解有关日志记录和趋势的线索。

然而,您需要一款好的十六进制编辑器和大量的时间。

补充:

在您添加清单和截图后,文件对我来说已经有了3/4意义。

例如,alarm_class.*包含运行时可能引发的警报类别,alarm_type包含警报的数据类型,alarm_field包含PLC字段警报的配置,即来自PLC,alarm_rounting是路由或网络错误,alm_user可能是用户警报,即来自HMI运行时中的脚本。

所有名称中带有point的内容可能是“测量点”,即现场设备;或传感器或从执行器获得的反馈。

所有名称中带有user的内容可能是配置的用户及其权限。

redund_addrs是映射PLC或设备地址的冗余兄弟值的地图。

所有名称中带有port的内容可能与SCADA服务器或PLC上的“端口”有关,例如FF,PROFIBUS或PROFINET。

与对象相关的一切都可能是结构体。这是将单个变量(也称为标签)绑定在一起以形成分层值时发生的情况。例如,传感器的值及其所有状态值被绑定到一个结构中,这可能被视为一个测量点。

此外,当查看您提供的十六进制转储时,它似乎是一种结构化的固定长度格式。

在这种情况下:

struct Point
{
    char name[16] = "$ALARM.ACKED";
    char type[32] = "UDINT";
    char comment[128] = "...";
};

这些值会被填充为"0x20"空格。

附录2:

你可能正在查看一个平面文件数据库,比如dBase,每个*.dat都是数据,*.idx是表索引。只是一个想法。可能值得投资一些时间了解2000年左右可用的数据库技术。然后也许你就可以"转储"数据了。


感谢您的长篇回复。这不是Dbase格式,我尝试使用几个DBF查看器打开文件,但它们都出现了错误。许多文件都是纯文本格式,其中文本根据列位置进行分隔。 - Steve F
也许是codebase。在一个项目中看到了*.dat和*.idx文件。但是不能保证。 - rioki

0
Nova Gladson是正确的,但这仅适用于安装了Cimplicity的系统。
Cimplicity仍在积极开发和推广中。最新版本非常能够打开版本6。 Cimplicity HMI&Scada

0

::导出:: 如果您在主目录中打开命令提示符 键入 "idtpop event" 以获取 event.idx 文件 它将创建一个名为 event.idt 的文件
此文件可以在记事本或其他编辑器中进行编辑。

任何 Cimplicity 的 .DAT 和 .IDX 文件都可以通过相同的方式访问。

::导入:: 如果您想要导入所需的更改,请在命令提示符中键入 键入 scpop event
这将重新生成事件文件。同时也要处理其他文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接