Standards • Individuals • Proprietaries

What are templates?

Protocol templates are Lua scripts specifying how the continuous data stream is divided into single telegrams and how they are displayed to the user. This makes them widely adaptable to very special and uncommon protocols.

How do they work?

Every incoming data is passed to the template in real-time by an extrem fast Lua engine. Various functions help you to test every start/end condition. A mighty box mechanism let you display telegram fields as you like.

Can I write my own one?

Yes of course - that's the intention! The analyzer software provides you with all you need to create your very one template. Or you modify one of the many provided templates for your purpose. Read more

Mastering your protocol in more than one way

with features you don't want to miss when analyzing telegrams

Interactive Lua

Perfect for education

Play around with the Lua protocol definition and see your modi­fi­ca­tions immediately in the display and without any affection to the recorded data.
Advanced output

Readable telegrams

Display the telegram content as it fit you best. Convert numbers, assign names, use colors. Imagine telegram fields changing their colors depending on their value.
Telegram filter

Individual filtering

Focus your analysis to the important parts. You decide which tele­gram you want to see.
Own checksums

Validate your checksum

Calculate, verify and handle even individual checksums. Use the integrated functions for CRC, LRC or write your own checksum algorithm with Lua.
Various exports

Many ways to export data

Document your results in text applications or process your data in Excel ®, Open Office Calc and similars. Share your results with others.
Helpful modules

BASE16 Decorder

Hex ASCII sequences (e.g. Modbus ASCII) to binary

Number Converter

Little/Big Endian data bytes to integer, floating point values

Checksum Validator

CRC16 for Modbus, DNP3, CCiTT Kermit, BACnet, CRC8 BACnet, LRC

Date & Time Formater

Absolute, local and relative time and date display

Various Lua extensions

help you to convert telegram data from different coding formats like Base16, transform number se­quen­ces (little Endian, big Endian), output date/time and more...

Available templates

The following templates are already part of the analyzer software. Future templates will be listed here for free download.


A standardized serial Point-To-Point protocol, commonly used between two PLC (SPS). It is a Master-Master protocol and comes in two variants: 3964 without checksum and 3964R using a CRC checksum. The analyzer supports both.



A full-duplex protocol for building automation and control networks, standardized by ASHRAE, ANSI and ISO 16484-5. The analyzer supports PTP (Point-To-Point) over RS-232 and MS/TP (Master-Slave/Token-Passing over RS-485).


Common 9-Bit

A general template for protocols with a 9-Bit start (address) field. It can be used as a start for typical Multi-Drop protocols.



The Allen-Bradley DF1 protocol is a major industrial serial protocol supported by a large number of devices, both those built by Allen-Bradley and other companies. It supports full-duplex peer-to-peer as well as half-duplex master-slave communications and consists of link layer and application layer formats.



DNP3 (Distributed Network Protocol) is used between components in the process automation field, especially electric and water companies. Telegrams are defined as a fixed length header block followed by optional data blocks. Each block ends with a 16-bit CRC.



MDB is a serial bus protocol for electronically controlled vending machines. The interface is a 9600 baud Master-Slave arrangement where all peripherals are Slaves to a Master controller.



IEC 60870-5 refers to a collection of standards produced by the International Electrotechnical Commission, or IEC, to provide an open standard for the transmission of SCADA telemetry control and information. The protocol internal settings specify a varying information object address (IOA), different length of the common address (ASDU) and an optional originator field (COT). The analyzer supports all variants.



Modbus is a multidrop network based communication protocol for master/client architecture. Originally published by Modicon (now Schneider electric) in 1979 is has become a de facto standard for its simplicity and robustness. Serial Modbus connections can use two basic transmission modes: ASCII and RTU. In RTU telegrams are separated by a specifiy time gap of 3.5 characters. The analyzer supports both.

Modbus-ASCII Modbus-RTU


Profibus is a fieldbus communication standard first promoted in 1989 by the German department of education and research (BMBF) and then used by Siemens. A Profibus system uses a bus master to cyclically poll slave devices distributed in multi-drop fashion on a RS485 serial bus. Slaves are not allowed to send data without request by the master. As like in Modbus telegrams are separated by a specified time gap (sending or sync pause) of 33 bits.



SAE-J1587 is an automotive diagnostic protocol standard developed by the Society of Automotive Engineers (SAE) for heavy-duty and most medium-duty vehicles built after 1985.



The SAE-J1922 protocol is a standard for Powertrain Control Interface for Electronic Controls Used in Medium- and Heavy-Duty Diesel On-Highway Vehicle Applications.

This template was designed to help reverse engineer the communication between the EM2000 and the EMDEC on a SD70 locomotive. The hardware is likely J1708 which is based on RS485 but without any terminating resistors. It is far from perfection!



The SMA-Net is a proprietary protocol developed by SMA, one of the largest manufacturers of photovoltaic inverters in the world. It is compatible inter alia with TCP/IP, PPP and HDLC. Telegrams starts and ends with hex 7E which has to escaped when occuring in the data payload.



The USS protocol (Universal Serial Interface Protocol) defines an access technique according to the master-slave principle for communications via a serial bus. One master and a maximum of 31 slaves can be connected to the bus. The individual slaves are selected by the master via an address character in the telegram.


Not listed? - write your own one!

What's necessary

Every template has to provide at least the two functions split() and out()

The first one divides the incoming data stream into single telegrams.

The second function controls the appearance of the splitted telegrams.

Split the telegrams

is easy. Every receiving byte is passed to the split() function with all information you need to evaluate the start or end of a telegram. Depending on the result you just have to return STARTED, MODIFIED or COMPLETED. Show/Hide example!

-- split Modbus RTU telegrams
function split( byte, intval )
  -- check for a transmission pause of
  -- 3.5 chars (passed by intval)
  if intval > protocol.bytepause(3.5)
    return STARTED
  -- the received byte will be attached
  -- to the current telegram
  return MODIFIED

Display the telegrams

is handled by the second function. Designed for maximum speed, out() is called every time a telegram must be rendered by the program for display. In it you can access all telegram data, process it according to your ideas and order the result in colored boxes with any content. Show/Hide example!

function out()
  -- the current telegram
  local tg = telegrams.this()
  -- the second last byte
  -- the last byte
And here is the result:

Further information

Learn more

The comprehensive manual explains all aspects of writing templates, including how to export and filter individual protocols.

Download the manual ›

Try it out

Download the analyzer software and play with the provided protocol templates. It's free and works without a connected device.

Get the Software ›

Ask for support

We like to add new protocols. Do you have a standard protocol not listen here? Just let us know and we may be able to write it for you.

Email us ›

Recommended tools

We are often asked how to simulate telegrams. Here are some free tools which may already provide you a solution.

Show me ›