@kjgalr/node-red-plc-next-connector v1.0.7
node-red-contrib-plc-next-connectorrr
Table of contents
Description
A NodeRED package that enables the user to communicate with the PLCnext controller via the REST api.\ This package implements the core functions from the REST interface in a more user-friendly manner than manually creating http queries.
Plc-Connector Node
The Plc-Connector node is the node that not only authenticates and authorizes the connection with the controller but also keeps the connection alive and attempts to reconnect when the connection is lost.\ All other nodes implement this node as a parameter that can be configured in the editor.\ One connector node can be used by multiple other nodes but a node can only implement one connector node.
Configuration
Parameters: Parameter | Description ------------- | ------------- Host IP | IP of the controller that you want to connect to Authentication Required | Flag if the controller requires a username and password Username | Username (admin by default) Password | Password (on the back of the controller) Station Name | Determines the identifier of the session (can be freely chosen) Session Timeout | Time in milliseconds before the session needs to be renewed Api Version | Api version that you want to use
Implemented Nodes
Read Variables
Returns a list of variables and their values. Reads one or multiple variables from the controller.
Parameters: Parameter | Description | Required ------------- | ------------- | --- Plc-Connector | Instance of the Plc-Connector that you configured | True Search | Searchbar with autocomplete feature for adding variables to the selector below | False Variables | list of variables to be read | False
Details\ The variables defined in the input can be used in conjunction with the variables set in the editor. The list of variables will internally be converted to a set, as to prevent variables being read more than once.
Input
msg: {
payload:{
variables:[
{path:<Variable 1>},
{path:<Variable 2>},
...
{path:<Variable N>}
]
}
}
Output:
msg:{
_msgid:<Id of the message>,
payload:{
variables:[
{path:<Variable 1>, value:<Value of variable 1>},
{path:<Variable 2>, value:<Value of variable 2>},
...
{path:<Variable N>, value:<Value of variable N>}
]
}
}
Browse Items
Returns the currently used public variables and their types from the controller.
Parameters: Parameter | Description | Required ------------- | ------------- | --- Plc-Connector | Instance of the Plc-Connector that you configured | True Get Variables | Check for a list of publicly available variables | False Get Types | Check for a list of all used types | False
Details\
The values set by the input message take priority over the values set in the editor of the node. So if get_dicts
is set to false
in the editor but the input messages supplies the value true
, then it will send the dictionary because the input message is prioritized.
Input
msg:{
payload:{
get_dicts:<boolean>
get_types:<boolean>
}
}
Output:
msg:{
_msgid:<Id of the message>,
payload:{
dict:{
<Variable 1>:{Type:<Type of Variable 1>, InitValue:<...>, ReadOnly:<...>},
<Variable 2>:{Type:<Type of Variable 2>, InitValue:<...>, ReadOnly:<...>},
...
<Variable N>:{Type:<Type of Variable N>, InitValue:<...>, ReadOnly:<...>}
},
types:[
{Name: <Variable Type 1>,...},
{Name: <Variable Type 2>,...},
...
{Name: <Variable Type N>,...}
]
}
}
Report Sessions
Returns a list of all currently active sessions.
Parameters: Parameter | Description | Required ------------- | ------------- | --- Plc-Connector | Instance of the Plc-Connector that you configured | True
Details This node will trigger on any input, i.e. that regardless of what is supplied this node will list the active sessions from the connector that is selected in the editor.
Input\ None
Output:
msg:{
_msgid:<Id of the message>,
payload:{
sessions:[
{id:<Id of session 1>, stationID:<Name of session 1>, ipAddress:<Ip of controller>, ...},
{id:<Id of session 2>, stationID:<Name of session 2>, ipAddress:<Ip of controller>, ...},
...
{id:<Id of session N>, stationID:<Name of session N>, ipAddress:<Ip of controller>, ...}
]
}
}
Report Groups
Returns a list of all currently active groups.
Parameters: Parameter | Description | Required ------------- | ------------- | --- Plc-Connector | Instance of the Plc-Connector that you configured | True
Details This node will trigger on any input, i.e. that regardless of what is supplied this node will list the active groups from the connector that is selected in the editor.
Input\ None
Output:
msg:{
_msgid:<Id of the message>,
payload:{
groups:[
{id:<Id of group 1>, variableCount:<Amount of vars in group 1>, ...},
{id:<Id of group 2>, variableCount:<Amount of vars in group 2>, ...},
...
{id:<Id of group N>, variableCount:<Amount of vars in group N>, ...}
]
}
}
Create Groups
Returns a groupID\ Groups variables together so that they can be read from or written to by only using a groupID.\ Simplifies requests because only the groupID is needed to request all variables within a group.\
Parameters: Parameter | Description | Required ------------- | ------------- | --- Plc-Connector | Instance of the Plc-Connector that you configured | True Search | Searchbar with autocomplete feature for adding variables to the selector below | False Variables | list of variables to be read | False
Details\ The variables defined in the input can be used in conjunction with the variables set in the editor. The list of variables will internally be converted to a set, as to prevent variables being read more than once.
Input
msg: {
payload:{
variables:[
{path:<Variable 1>},
{path:<Variable 2>},
...
{path:<Variable N>}
]
}
}
Output:
msg:{
_msgid:<Id of the message>,
payload:{
group_id":<Id of the group>
}
}
Read Group Variables
Reads all variables that have been assigned to a particular group using the groupID.
Parameters: Parameter | Description | Required ------------- | ------------- | --- Plc-Connector | Instance of the Plc-Connector that you configured | True Group ID | ID of the group | False
Details\ The value set by the input message takes priority over the value set in the editor of the node. That means that even if a group_id is set in the editor, as long as the input contains a group_id, it will be used.
Input
msg:{
payload:{
group_id:<Id of the group>
}
}
Output:
msg:{
_msgid:<Id of the message>,
payload:{
variables:[
{path:<Variable 1>, value:<Value of variable 1>},
{path:<Variable 2>, value:<Value of variable 2>},
...
{path:<Variable N>, value:<Value of variable N>}
]
}
}
Write Variables
Returns a list of variables and their new values.\ Changes the values of the selected variables.\ The variables are a comma-separated-list where whitespace is ignored.
Parameters: Parameter | Description | Required ------------- | ------------- | --- Plc-Connector | Instance of the Plc-Connector that you configured | True Path Prefix | Prefix that will be appended to the vaiable name if the prefix field is being left empty in the table | True Editable list | list that contains the prefix, variable-name, new value and valueType of the variable that will be changed | True
Editable list Parameter | Description | Required ------------- | ------------- | --- Prefix | The prefix of this particular variable (Will use the value from the Path Prefix field if left empty) | False Variable | The variable to be changed | True Value | The new value of the variable or the name of another variable | True ValueType | The type of the value ('Constant' refers to a constant value like 'true' or 'false' while 'Variable' assignes the value of another variable to this variable) | True
Details\ The variables defined in the input can be used in conjunction with the variables set in the editor. The list of variables will internally be converted to a set, so that only one value will be written to a variable. The values set in the input take priority over the values set in the editor.
Input
msg: {
payload:{
variables:[
{path:<Variable 1>, value:<Value of the variable 1>, valueType<Constant or Variable>},
{path:<Variable 2>, value:<Value of the variable 2>, valueType<Constant or Variable>},
...
{path:<Variable N>, value:<Value of the variable N>, valueType<Constant or Variable>},
]
}
}
Output:
msg:{
_msgid:<Id of the message>,
payload: {
variables:[
{path:<Variable 1>, value:<New value of variable 1>, ...},
{path:<Variable 2>, value:<New value of variable 2>, ...},
...
{path:<Variable N>, value:<New value of variable N>, ...}
]
}
}
Change Connection Parameters Dynamically
Changes the connection parameters based on the configuration of the incomming message.
Parameters: Parameter | Description | Required ------------- | ------------- | --- Plc-Connector | Instance of the Plc-Connector that you configured | True Parameters | JSON encoded parameters for the PLC-Connector | False
Details\ Only host (ip address), username and password can be configured in the configuration node. Please fill the reamining parameters in the PLC-Connector configuration area.
Input
msg:{
_msgid:<Id of the message>,
config: {
host: 192.168.0.10
username: admin
password: 2350c83d
}
}
Installation
Via the node-red palette manager
Navigate to the node-red instance running on the controller by visiting https://\<controller ip>/cockpit and selecting NODE-RED.\ Then open the palette manager and search for @kjgalr/node-red-plc-next-connector and install it.
Via the terminal on a desktop pc
!!The NodeRED package is required for this installation to work!!
npm install -g --unsafe-perm node-red
Manual installation
- Clone the repository
git clone https://gitlab.phoenixcontact.com/kjgalr/node-red-contrib-plc-next-connector
- Navigate into the folder
cd node-red-contrib-plc-next-connector
- Install the needed packages
npm install axios https
- Navigate to the .node-red folder (using one of the following commands):
cd ~/.node-red cd $HOME/.node-red cd %HOME%/.node-red
- Install the node-red-contrib-plc-connector package
npm install <Path were you cloned the repository to>
- Start NodeRED
node-red