2GCS241012A0070 - ESI-Manager User Application On USB Key
2GCS241012A0070 - ESI-Manager User Application On USB Key
INSTRUCTION MANUAL
To be able to access data of the ESI-Manager and ESI inverters consistently, a basic
knowledge of these products is needed. Functionality of the ESI-Manager, meaning of
various measurements and parameters are some particular aspects that should be
familiar. Look in the ESI-Manager and ESI operating manuals to know more about that.
To be able to program a new application that will run on the ESI, the knowledge of C/C++,
compilation techniques, debugging tools is required.
Chapter 3 describes the user application menu of the ESI-Manager where the data will
be available and how to build it.
Chapter 5 describes the request commands needed to get data in a user specific
application (stored in a USB key) or through the communication (through USB mini or
Ethernet connectors).
Modbus RTU and Modbus TCP and PQ-Link protocol implementing specific request
commands.
The table below resumes the availability of communication protocols depending on the
connection provided.
Available connection
RS485 Modbus USB mini Ethernet-RJ45 USB host
Communication Adapter (option)
protocol Modbus RTU PQ-Link PQ-Link and User specific USB key
Modbus TCP application
These requests can be transmitted to the ESI-Manager through Ethernet / RJ45, USB or
handled directly from the USB key application.
The server will allow local and distant access to the ESI-Manager. Different access levels
will be implemented to restrict certain functionality to given users. A login and password
will therefore be required.
The format of the messages transferred via those two medium will be the same.
This layer is taking care of receiving the frames. The byte stream is
Framing Layer
decoded and frames generated are passed to the layers above.
This is the upper layer taking care of the commands.
Command Layer It will also take care of the authentication of the client during the
connection via some specific commands.
Framing
Layer
TCP/IP
USB
Those two layers will use the same format regardless of the actual “transmission
medium” used.
The user application is present on a USB key that is inserted in the ESI-Manager. This
user application will be launched automatically at boot.
When the USB key is not plugged into the ESI-Manager, the interface is empty.
When a USB key is plugged into the ESI-Manager, the interface will be displayed as
defined into the USB key’s application.
Below are listed the information needed to program the tables. It is possible to
preconfigure
Application example:
- Minimum P in kW,
- The menus information are stored into a specific 160 bytes structure :
/*****************************************************************/
/** Set Peak Shaving Menu **/
/*****************************************************************/
void SetPeakShavingMenu(unsigned char Screen)
{
unsigned char Index1;
Index1 = 0;
bAppMenuString[Index1] = 4; // Texts definition
bAppMenuString[++Index1] = 'M'; // give offset and ascii
bAppMenuString[++Index1] = 'o';
bAppMenuString[++Index1] = 'd';
bAppMenuString[++Index1] = 'e';
bAppMenuString[++Index1] = 3;
bAppMenuString[++Index1] = '-';
bAppMenuString[++Index1] = '-';
bAppMenuString[++Index1] = '-';
bAppMenuString[++Index1] = 10;
bAppMenuString[++Index1] = 'P';
bAppMenuString[++Index1] = 'k';
bAppMenuString[++Index1] = ' ';
bAppMenuString[++Index1] = 'S';
bAppMenuString[++Index1] = 'h';
bAppMenuString[++Index1] = 'a';
14 User application menu ç ESI-Manager communication
bAppMenuString[++Index1] = 'v';
bAppMenuString[++Index1] = 'i';
bAppMenuString[++Index1] = 'n';
bAppMenuString[++Index1] = 'g';
bAppMenuString[++Index1] = 3;
bAppMenuString[++Index1] = 'S';
bAppMenuString[++Index1] = 'e';
bAppMenuString[++Index1] = 't';
bAppMenuString[++Index1] = 4;
bAppMenuString[++Index1] = 'S';
bAppMenuString[++Index1] = 'e';
bAppMenuString[++Index1] = 't';
bAppMenuString[++Index1] = '1';
bAppMenuString[++Index1] = 4;
bAppMenuString[++Index1] = 'S';
bAppMenuString[++Index1] = 'e';
bAppMenuString[++Index1] = 't';
bAppMenuString[++Index1] = '2';
bAppMenuString[++Index1] = 5;
bAppMenuString[++Index1] = 'M';
bAppMenuString[++Index1] = 'a';
bAppMenuString[++Index1] = 'x';
bAppMenuString[++Index1] = ' ';
bAppMenuString[++Index1] = 'P';
bAppMenuString[++Index1] = 5;
bAppMenuString[++Index1] = 'M';
bAppMenuString[++Index1] = 'i';
bAppMenuString[++Index1] = 'n';
bAppMenuString[++Index1] = ' ';
bAppMenuString[++Index1] = 'P';
bAppMenuString[++Index1] = 8;
bAppMenuString[++Index1] = 'R';
bAppMenuString[++Index1] = 'e';
bAppMenuString[++Index1] = 'g';
bAppMenuString[++Index1] = ' ';
bAppMenuString[++Index1] = 'T';
bAppMenuString[++Index1] = 'i';
bAppMenuString[++Index1] = 'm';
bAppMenuString[++Index1] = 'e';
bAppMenuString[++Index1] = 2;
bAppMenuString[++Index1] = 'k';
bAppMenuString[++Index1] = 'W';
bAppMenuString[++Index1] = 3;
bAppMenuString[++Index1] = 'M';
bAppMenuString[++Index1] = 'i';
bAppMenuString[++Index1] = 'n';
bAppMenuString[++Index1] = 3;
bAppMenuString[++Index1] = 'S';
bAppMenuString[++Index1] = 'e';
bAppMenuString[++Index1] = 'c';
bAppMenuString[++Index1] = 10;
bAppMenuString[++Index1] = 'A';
bAppMenuString[++Index1] = 'u';
bAppMenuString[++Index1] = 't';
bAppMenuString[++Index1] = 'o';
bAppMenuString[++Index1] = ' ';
bAppMenuString[++Index1] = 'a';
bAppMenuString[++Index1] = 'd';
bAppMenuString[++Index1] = 'a';
bAppMenuString[++Index1] = 'p';
bAppMenuString[++Index1] = 't';
bAppMenuString[++Index1] = 3;
bAppMenuString[++Index1] = 'Y';
bAppMenuString[++Index1] = '/';
bAppMenuString[++Index1] = 'N';
- User Window.xlsx
- PRJ-ThirdPartyApp
- PRJ-ThirdPartyApp/src/main.c
Please refer to the following documentation to get full information on the data to
handle:
This application should be placed in the root file system of the USB key.
The « extapp » application connects to the ESI data server through the IP address
127.0.0.2.
Type « make »
Rename it as « extapp »
Store it into the USB key and plug the USB key into the ESI-Manager
- gcc-core
- gcc-g++
- make
- libiconv
- wget
- unzip
- zip
- openssh
- openssl
Type « make »
Rename it as « extapp »
Store it into the USB key and plug the USB key into the ESI-Manager
5.2 Interface
5.2.1 Opening and Closing
5.2.1.1 CommandClient_Init
This function opens the connection to the ESI-Manager.
void (*Callback_ConnectionReset)(void));
If one does not wish to use the callback mechanism, this parameter can be set to NULL.
Unwanted disconnections can then be detected when any of the DLL function call
returns the “RVT_SYS_SOCKET_DISCONNECTED” error code.
When a disconnection is happening, it is necessary to call the clean function to free the
PC resources used and try to connect to the ESI-Manager again.
5.2.1.2 CommandClient_Clean
This function closes the connection to the ESI-Manager.
5.2.2 Authentication
The local administrator user is automatically detected based on its local connection to
the server.
5.2.2.1 CommandClient_Authenticate
This function allows authenticating as a given user on the ESI-Manager.
DT_UINT8 *AccessLevel);
The Login and Password parameters are used to authenticate oneself and the
AccessLevel is returned to indicate the associated access level.
Access levels
5.2.2.2 CommandClient_CreateUser
This function allows creating a new user account on the ESI-Manager.
DT_CHAR *Password,
DT_UINT8 AccessLevel);
The AccessLevel parameter specifies what access level to associate with the new user
account.
5.2.2.3 CommandClient_DeleteUser
This function allows deleting a user account on the ESI-Manager.
5.2.3.1 CommandClient_GetParameter
This function allows getting a parameter group from the ESI-Manager.
Note that the parameters that have been set in the shadow memory but not yet applied
are not returned when a “Get Parameter” command is issued.
DT_UINT8 **Value,
DT_UINT *Size);
The Value and Size parameters are pointers to the buffer where the parameter group
values will be stored and to the actual size of this parameter group.
5.2.3.2 CommandClient_SetParameter
This function allows setting a parameter group in the ESI-Manager.
One must have at least Configurator rights to set application specific parameters and
at least administrator rights to set universal parameters.
DT_UINT8 *Value,
DT_UINT Size);
The Value parameter is a pointer to the buffer where the data to write is stored and the
Size is specifying the amount of data to be written.
5.2.3.3 CommandClient_ApplyParameterChanges
This function applies the shadowed parameter changes in the parameter memory of the
ESI-Manager.
5.2.4.1 CommandClient_RequestCurve
It has the following prototype:
E_Error RVT_command_client_RequestCurve(
DT_UINT16 SourceID,
T_CurveCharacteristics *Characteristics);
5.2.4.2 CommandClient_ReleaseCurve
This function is telling the ESI-Manager to stop getting data for the given curve.
If the curve was requested by a single client, the curve is not made available anymore for
the client and the slot is freed.
If the curve was requested by multiple clients, the freeing is only made when the last
client releases the curve.
5.2.4.3 CommandClient_GetCurve
This function is getting curve data from the ESI-Manager.
DT_UINT8 *CurveSetIndex,
DT_UINT16 ChunkIndex,
DT_UNT8 *Value,
DT_UINT *Size);
The Value is a buffer where the curve will be stored and the Size is the actual size of the
curve returned. One should make sure that the buffer is big enough to contain the curve.
This function is taking care of downloading the number of chunks required to get the
complete curve. It is also taking care that all chunks returned do belong to the same
curve set.
5.2.4.4 CommandClient_GetCurveIDs
This function is getting all the SourceIDs currently in use by the DLL.
DT_UINT *Size);
The Size is specifying how many SourceIDs have been returned and copied to the
location pointed by the SourceIDs pointer. One must ensure that the location is big
enough to contain the maximum number of curves allowed by the system.
5.2.4.5 CommandClient_GetCurveCharacteristics
This function is getting the characteristics of a given curve.
DT_UINT16 SourceID,
T_CurveCharacteristics *Characteristics);
This function can be seen as a way to get back the parameters that were passed at the
moment of requesting the curve.
This function along with the GetCurveIDs function allow for an easy re-populating of the
user interface. The interface does not have to store the characteristics of all the curves
it currently manages; it can just ask it back to the ESI-Manager.
After calling this command, the connection should be closed using the
CommandClient_Clean function and should be re-established again.
- User Window.xlsx
· PRJ-ThirdPartyApp
· PRJ-ThirdPartyApp/src/main.c
ABB Ltd and its affiliates are not liable for damages and/or losses related to such
security breaches, any unauthorized access, interference, intrusion, leakage and/or theft
of data or information.
Please note that an ssh account exists for maintenance & development purposes.
http://new.abb.com/high-voltage/capacitors/lv
2GCS241012A0070 – Rev B December 2017