我如何从SCADA CIMPLICITY软件的DAT和IDX文件中提取数据?
我的任务是从旧软件的数据文件中提取数据 - CIMplicity HMI Plant Edition 6.0版。 它是2002年的SCADA软件。我有一个包含大量* .DAT和* .IDX文件的数据文件目录的副本。 我需要将这些数据提取到CSV或SQL数据库。 某些DAT文件只是纯文本格式,但其他格式则采用二进制格式,在PSPad中打开时,会以HEX视图模式显示。
我可以使用哪些工具可靠地读取和提取这些文件中的数据?
TIA。
更新:我已经添加了数据文件目录的目录列表:
Directory of C:tmpxxxxxxIIdata
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的屏幕截图:
我的哀悼,你被赋予了几乎不可能完成的任务。
好吧,我不太了解CIMPLICITY HMI Plant Edition,保存了我能从外部看到的东西。 但是,也许我可以给你一些有用的建议,因为我也在开发工业HMI和工程软件。 (WinCC&PCS7)
首先,格式的确定性为99%,为专有格式。 GE希望得到的唯一真正帮助就是GE。 问题是,他们会把它给你,并以什么代价。 (由于您正在尝试提取数据,因此您可能正在迁移;那么为什么他们应该提供帮助。)
所以一些逆向工程可能是有序的。 您需要创建该项目的软件。 这是工程包,而不是HMI运行时软件。 (可能是一个软件。)您的公司仍应该拥有原始项目的许可证。
从那里你要么创建一个新的项目,看看会发生什么,或者加载现有的项目,然后玩弄,看看数据中的变化。 了解系统中的数据以及可以在哪里找到它是很重要的。
需要注意的是,数据有两种形式,即项目配置和运行时数据。
项目配置实际上不是数据,这只是“配置”运行系统应该显示/反应的内容。 项目数据是诸如用户,视图/屏幕,PLC变量绑定或控制脚本之类的东西。 我真的不知道你想如何有效地将大部分内容放入CVS或数据库中。 但有可能WinCC使用MSSQL。 (带有默认密码,谢谢stuxnet)
运行时数据更简单。 这是事件日志,记录操作员命令,警报和警告或记录值等内容。 这些数据应该很容易提取,因为它是严格格式的。 要了解记录的内容和位置,您应该在工程软件中打开该项目,在那里您应该找到关于记录和趋势的线索。
不过要得到自己的时间了良好的十六进制编辑器和大量 。
附录:
在您添加列表和屏幕截图后,这些文件会让我感觉到3/4。
例如,alarm_class。*包含运行时可能引发的警报分类,alarm_type警报的数据类型,alarm_field包含配置的警报字段alaram,即构成PLC,alarm_rounting是路由或网络错误,alm_user是可能是用户报警,即来自HMI运行时的脚本。
所有与名称有关的点都可能是一个“测量点”,即现场设备; 传感器或执行器的反馈。
所有与用户,可能是配置的用户和他们的权限。
redundant_addrs是PLC或设备地址的映射,它们是主值的冗余兄弟。
与端口有关的所有内容可能都是关于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年可用的数据库技术。然后,也许你可以“转储”数据。
Nova Gladson是正确的,但只适用于安装了Cimpicity的系统。
Cimplicity仍在积极开发和销售。 最新版本能够打开第6版。
Cimplicity HMI&Scada
:: EXPORT ::如果在主目录中打开命令提示符为event.idx文件键入“idtpop event”它将创建一个文件event.idt
该文件可以在记事本或其他编辑器中编辑。
Cimplicity的任何.DAT&.IDX文件都可以用相同的方式访问。
:: IMPORT:如果希望导入所需的更改,请在命令提示符下键入scpop事件
这将重新生成事件文件。 另外做其他文件。
上一篇: How can I extract data from DAT and IDX files of SCADA CIMPLICITY software?
下一篇: CQRS and synchronous operations (such as user registration)