You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
libiec61850/pyiec61850/tutorial.md

1.9 KiB

Building

Before building you should install swig and python. To build python bindings you have to turn on the BUILD_PYTHON_BINDINGS flag in CMake from cmake-gui or in command line:

$ mkdir build && cd build
$ cmake -DBUILD_PYTHON_BINDINGS=ON ..

Then compile the library and install it:

$ make
$ sudo make install

CMake and swig will automatically detect your python version and install the python library in python library directories.

For running the integrated tests:

$ make test

pyiec61850 library is to be imported calling

import pyiec61850 as iec61850

Client tutorial

The python bindings works similarly to the basic C library. However there are some differences:

  • a specific function is to be called to cast variables from one type to another
  • arguments passed by pointer are to be removed from arguments and append to the return list

For example to create a connection, call:

	con = iec61850.IedConnection_create()
	error = iec61850.IedConnection_connect(con, "localhost", 102)
	if (error == iec61850.IED_ERROR_OK):
		# Do some work
		iec61850.IedConnection_close(con)
	iec61850.IedConnection_destroy(con)

To iterate over a list of logical devices, the code becomes:

[deviceList, error] = iec61850.IedConnection_getLogicalDeviceList(con)
device = iec61850.LinkedList_getNext(deviceList)
 
while device:
	print("LD: %s" % iec61850.toCharP(device.data))
	[logicalNodes, error] = iec61850.IedConnection_getLogicalDeviceDirectory(
				con, iec61850.toCharP(device.data))
	device = iec61850.LinkedList_getNext(device)
iec61850.LinkedList_destroy(deviceList)

Reading and writing operations can be performed using this syntax:

[floatValue, error] = iec61850.IedConnection_readFloatValue(con,
	"simpleIOGenericIO/GGIO1.AnIn1.mag.f", iec61850.IEC61850_FC_MX)
err = iec61850.IedConnection_writeFloatValue(con, 
	"simpleIOGenericIO/GGIO1.AnIn1.mag.f", iec61850.IEC61850_FC_MX, 10.0)