Sample: Client trap
This sample describes a simple Trap send from a PLC to a SNMP management server. Traps can be used to alert thresholds. On every hundred increment of the counter a trap will be send.
Download: PLC Project
Variable Declaration
PROGRAM MAIN
VAR
SendTrap: FB_SendTrap;
iState: INT := 0;
iCounter: UDINT:= 0;
stVarBind: ST_SNMP_VariableBinding;
END_VAR
PLC Program
CASE iState OF
0: (* send trap on every hundred cycle *)
iCounter := iCounter + 1;
IF ((iCounter MOD 100) = 0) THEN
iState := 10;
END_IF
10: (* enable FB *)
SendTrap.bEnable := TRUE;
IF SendTrap.bEnabled THEN
iState := 20;
END_IF
20: (* set SNMP trap parameter *)
stVarBind.iType := E_SNMP_INTEGER;
stVarBind.iLength := SIZEOF(iCounter);
stVarBind.pArrValue := ADR(iCounter);
(* TODO: assign object ID of management information base (MIB) *)
SendTrap.sObjectID := '1.3.6.1.2.1.1.5.0';
(* TODO: check default community string *)
SendTrap.sCommunity:= 'public';
SendTrap.iGenericTrapNumber:= E_SNMP_WarmStart;
SendTrap.bExecute := TRUE;
iState := 30;
30: (* reset *)
SendTrap.bExecute := FALSE;
SendTrap.bEnable := FALSE;
IF NOT SendTrap.bBusy THEN
iState := 0;
END_IF
IF SendTrap.bError THEN
SendTrap.bEnable := FALSE;
iState := 99;
END_IF
99:(* Error case *)
;
END_CASE
SendTrap(
(* TODO: add device IP of TwinCAT device *)
sLocalHostIp := '',
(* TODO: add SNMP Manager IP *)
sManagerIP := ''
);
Requirements
Development environment | Target system type | PLC libraries to be linked |
---|---|---|
TwinCAT version 2.8.0 or higher | PC or CX (x86) | TcSnmp.lib ( TcpIp.Lib; Standard.Lib; TcBase.Lib; TcSystem.Lib are included automatically ) |
TwinCAT v2.10.0 Build >= 1301 | CX (ARM) |