Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CIM support #5

Closed
stv0g opened this issue Aug 7, 2017 · 12 comments
Closed

CIM support #5

stv0g opened this issue Aug 7, 2017 · 12 comments

Comments

@stv0g
Copy link

stv0g commented Aug 7, 2017

Dear San,

are there currently any plans to add support for CIM?

Thank you

@SanPen
Copy link
Owner

SanPen commented Aug 7, 2017

Hi,

You may know that CIM is not strictly a standard, hence everyone implements it as they prefer.

Besides CIM "standard" contains classes for absolutely every tiny object in the grid and its implementation is mayhem. I know this because we support it at work.

So in short, I have no CIM import planned because CIM is not a real standard, is a good will template.

For transmission I consider instead to support PSS\E, which is kind of fixed and everyone uses it.

So, if you have the strength and heart to try to implement CIM for GridCal, then I can help you ;)

@stv0g
Copy link
Author

stv0g commented Aug 7, 2017

Hi @SanPen,

Thank you for the response :)

I know. This magnitude of classes within the ENTSO-E CIM profiles is mind boggling.
To cope with the number of classes, we use automatic code generation tools to transform the UML model into C++ / Python code.

But still, I think CIM (including all its profiles) is a family of standards which precisely specifiy how a CIM file should look like.

We are currently trying to do load flow analysis on CIM models.

@SanPen
Copy link
Owner

SanPen commented Aug 7, 2017

Hi,

Indeed we have this Enterprise Architect project to generate C++ to implement CIM, but still the amount of classes inheritance and dynamic casting is just too much.

To deal with it you need to have some sort of mapping. If you'd like to use GridCal as engine, a sufficient hello world example is this.

Once the MultiCircuit object is populated, you can access to all there is inside GridCal.

@SanPen SanPen closed this as completed Oct 20, 2017
@SanPen
Copy link
Owner

SanPen commented Aug 4, 2018

CIM Export included. I'll try to deal with import some time soon.

@aselviar
Copy link

Hi

Any update regarding CIM import?

@SanPen
Copy link
Owner

SanPen commented Mar 14, 2019

Done

But this would be my interpretation of CIM, which as you may know is way less standard than say PSS/e.

I tested with Power Factory CIM export. If you have more cases it'll be worth testing.

@SanPen SanPen reopened this Mar 14, 2019
@miek770
Copy link
Contributor

miek770 commented Mar 17, 2019

In case someone's interested, I asked OTI to support CIM imports in ETAP (they'll think about it...) and to fix their broken PSS/E import. I also asked EasyPower to support CIM. I don't have huge expectations, but I'll test it (CIM) if either makes it available.

@SanPen
Copy link
Owner

SanPen commented Mar 17, 2019

I can imagine that CIM import could be a nightmare for a software company. Unlike a normal standard that sets the "recommended" way of doing something, in CIM there are a trillion ways to do the same thing. And the objects structure is incredibly convoluted. So if ETAP implements it, they'll get many tickets claiming that the CIM import doesn't work, just because the user is trying to import a CIM file from another company who interpreted CIM they way they though it was best.

Furthermore, from version to version they break the retrocompatibility. From v14 to v16 the transformers were completely redesigned to be specified by winding (which kind of makes sense)

Lately in the IT world, the idea of CIM is taking traction because the management layers in utilities are fond of the idea of an IT design that can absorb anything. But again every utility will implement CIM in its own way. It is like the XKCD comic strip on standards (https://xkcd.com/927/).

So, when I implemented CIM in GridCal, it was my interpretation of it. I guess the key is to set an implementation guideline. For GridCal I used the way that Digsilent implemented it by reverse engineering their CIM export files.

@miek770
Copy link
Contributor

miek770 commented Mar 18, 2019

Hehe XKCD is gold.

I didn't realize CIM was so loose as a standard. BTW, I asked some questions about an open, common data format on the Openmod forum, see here: https://forum.openmod-initiative.org/t/standard-open-common-data-format-cdf-for-power-systems/1169. Based on your responses @SanPen, I'd say a truly open CDF for easy power system model exchange between softwares remains a simple (or not so simple) wish for now.

PSS/E's format's probably the next best thing.

@SanPen
Copy link
Owner

SanPen commented Mar 21, 2019

@stv0g , @aselviar Any feedback? Otherwise I'll close this issue.

@aselviar
Copy link

Hi SanPen

Thanks a lot for your comments and for re-opening the issue.

I have a CIM export from a small IT company that have their own interpretation of CIM that I wanted to import to GridCal, but I unfortunately cannot share any more information at the moment, since the model is one of a real grid.

I did not know that there were so many different interpretations of CIM.

I am sorry that I cannot help any further at the moment and would come back to you if I have anything new.

@SanPen
Copy link
Owner

SanPen commented Mar 21, 2019

Then I suspect that you are already aware of the problem of CIM not being a real standard.

I suggest that you modify my implementation to read you files. If it does not break, the GridCal CIM importer will create a CIMCircuit object with all the objects inside. There you may parse those as you consider it suits the format. The file is this

Good luck!

@SanPen SanPen closed this as completed Mar 21, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants