Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>My condolences, you have been tasked with an almost impossible task.</p> <p>Ok, I don't know much about CIMPLICITY HMI Plant Edition, save what I can see from the outside. But maybe I can give you some helpful pointers, since I am also developing industrial HMI and Engineering software. (WinCC &amp; PCS7) </p> <p>First off, the format is, with a certainty of 99%, a proprietary format. The only real help you can expect to get is from GE. The question is, will they give it to you and at what cost. (Since you are trying to extract data, you are probably migrating away; then why should they help.)</p> <p>So some reverse engineering is probably in order. You want the software that created the project. That is the engineering package and not the HMI run-time software. (May be one piece of software.) Your company should still have licenses for that from the original project.</p> <p>From there you either create a new project and see what happens and or load the existing project and then play around and see what changes in the data. It is important that you understand what data is in the system and where you can find it.</p> <p>It is important to note that the data comes in two forms, project configuration and run-time data. </p> <p>The project configuration is actually not data, this is "just" configuration what the run-time system should display/react. The project data are things like users, views/screens, PLC variable bindings or control scripts. I honestly don't know how you want to put most of this efficiently into CVS or a database. But it is possible WinCC uses MSSQL. (with a default password, thank you stuxnet) </p> <p>The run-time data is simpler. This are either event logs, that record things like operator commands, alarms and warnings or recorded values. This data should be easily extracted, since it is strictly formatted. To find out what and where was recorded you should open the project in the engineering software, there you should find clues about logging and trends.</p> <p>Nevertheless you want to get yourself a good hex editor and <strong>LOTS</strong> of time. </p> <p>Addendum:</p> <p>After you added the listing and screenshot, the files make 3/4 sense to me. </p> <p>For example, alarm_class.* contains the clases of alarms that the run-time may raise, the alarm_type the data types of alarms, alarm_field contains the configured alarms for field alaram, i.e. form the PLC, alarm_rounting are routing or network errors, alm_user are probably user alarms, i.e. from scripts in the HMI runtime. </p> <p>Everything with point in the name is probably a "measurement point", that is a field device; either a sensor or a feedback from an actuator.</p> <p>Everything with user, is probably the configured users and their permissions. </p> <p>redund_addrs is a map of PLC or device addresses that are redundant siblings of primary values. </p> <p>Everything with port is probably about the "ports" on the SCADA server or PLC, for example FF, PROFIBUS or PROFINET.</p> <p>Everything with object is probably structures. That is when single variables (aka tags) are bound together for form hierarchical values. For example the value of a sensor and all values about it's status are bound into one structure, this is maybe then treated as one measurement point.</p> <p>Also when looking at the hex dump you provided, it seams like a structured constant length format. </p> <p>In this case:</p> <pre><code>struct Point { char name[16] = "$ALARM.ACKED"; char type[32] = "UDINT"; char comment[128] = "..."; }; </code></pre> <p>The values are then padded with space "0x20". </p> <p>Addendum 2: </p> <p>You may actually looking at a flat file database, such like dBase and each *.dat is the data and *.idx the table index. Just an idea. It may pay to invest some time into DB technology available circa 2000. Then maybe you can just "dump" the data.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload