The leader in industrial automation and control solutions

Overview & Concepts

cMT Diagnoser is a diagnostic utility used with EasyBuilder Pro and cMT-series HMIs to monitor system activity and troubleshoot communication or runtime issues. It provides visibility into the internal operation of the HMI by displaying communication status, device activity, and system messages in real time. This allows engineers and technicians to identify problems with device connections, drivers, or project behavior during development and operation.

cMT Diagnoser collects and displays diagnostic information generated by the HMI while the project is running. This information helps users observe how the HMI is interacting with connected devices and how the project is executing.

Key diagnostic areas include:

  • Communication activity – Displays polling activity and communication status between the HMI and connected devices.
  • Device status monitoring – Shows the condition and connection state of configured devices.
  • System and macro messages – Provides output messages that can help identify errors or operational events.

This tool is commonly used during project development, commissioning, and maintenance to verify communication, investigate abnormal behavior, or monitor system performance.

Implementation

How to Start cMT Diagnoser

cMT Diagnoser can be used in simulation mode or on HMI. When it is used on HMI, it can be opened from within cMT Viewer, or run an independent program named as cMT Diagnoser be directly opened on HMI.

  • In on-line/off-line simulation, cMT Diagnoser can be opened by clicking the right mouse button in cMT Viewer simulation screen and then click Diagnoser.
cMT Viewer simulation screen after being right-clicked, popup menu has "Diagnoser" as option.  This is one method to open the cMT Diagnoser.
  • To permit connection to HMI from cMT Diagnoser, enable the Diagnoser option which is found in the [System Parameters] » [Remote] tab in EasyBuilder Pro.
EBPro System Parameters Settings, Remote tab has a section for "Diagnoser" to be enabled, and for a password to be set.
  • After downloading the project to HMI, cMT Viewer can open cMT Diagnoser. If [Password free] is not selected in Remote tab in previous step, a password is required for running cMT Diagnoser. Default password is 111111.
cMT Diagnoser main screen, showing password requirement.  If [Password free] is not selected in Remote tab in previous step, a password is required for running cMT Diagnoser. Default password is 111111.
  • Execute cMTDiagnoser.exe, which can be run independently, in EasyBuilder Pro installation directory, and find an HMI to connect to.
cMT Diagnoser screen, "Search" tab showing the cMT units that are in the same network neighborhood as the PC running the cMT Diagnoser program.

cMT Diagnoser User Interface

Object Settings

In the Object tab in cMT Diagnoser user interface, the objects used in the current window and their addresses, properties, and statuses are shown in a table.

In the Object tab in cMT Diagnoser user interface, the objects used in the current window and their addresses, properties, and statuses are shown in a table.

Selecting a window from the drop-down list can quickly change to another window.

cMT Diagnoser Object Tab: Selecting a window from the drop-down list allows you to change to another window.

The object selected in the cMT Diagnoser window will be highlighted as shown below.

Selecting an object in cMT Diagnoser window will highlight the  corresponding object in the cMT Viewer Window.

Double-click an object within the cMT Diagnoser window to change its value

Double-click an object within the cMT Diagnoser window to change its value, and you can see the value change in the cMT Viewer window

In cMT Diagnoser, watch addresses can be added or deleted. Click +  to add a new address, or select an address and then click the trash can icon to delete it

In cMT Diagnoser, watch addresses can be added or deleted. Click +  to add a new address, or select an address and then click the trash can icon to delete it

Device Settings

The state and property of the device communicating with HMI is shown in the Device tab.

cMT Diagnoser, Device tab. The state and property of the device communicating with HMI is shown here.

Packet Settings

In the Packet tab, select the ranges and then click the graph icon (circled below) to observe communication status between HMI and PLC.

cMT Diagnoser, Packet tab.  In the Packet tab, select the ranges and then click the graph icon (circled below) to observe communication status between HMI and PLC.
ItemDescription
Packet TypeAll
Displays all packets in Activity area.
Read
Displays only Read packets in Activity area.
Write
Displays only Write packets in Activity area.
Polling
Displays only Polling packets in Activity area.
DeviceAll
Displays the information of Local HMI and PLC.
Local HMI
Displays the information of Local HMI.
PLC
Displays the information of PLC.
StationSelects the PLC station number to be displayed.
(This function is disabled when selecting [All] in [Device].)
Address TypeSelects all or a preferred address type to be displayed.
(This function is disabled when selecting [All] in [Device].)
KeywordDisplays information that contains the keyword entered.

If a communication error occurs, information relating to the error will be highlighted in red in the Activity page, and the cause of error is shown in the Result column.

If a communication error occurs, information relating to the error will be highlighted in red in the Activity page, and the cause of error is shown in the Result column.

The Polling page shows the information of the polling packets periodically sent from HMI, including the start address, length…etc.

The Polling page shows the information of the polling packets periodically sent from HMI, including the start address, length…etc.
ItemDescription
Packet IDUse the Packet ID to find the invalid object.
DeviceDisplays HMI and PLC type.
StationDisplays PLC station number.
Address/LengthDisplays the device type and the size of the packet.
IndexDisplays the index register number of the object.

Macro Settings

Execute and test macros.

cMT Diagnoser, Macro Tab allows you to execute and test/debug macros.  You must have a macro created in the EBPro project in order to execute or test/debug a macro from this page.

Macro Debugger Tool

cMT Diagnoser, Macro Tab has a debugger tool  allows you to test/debug macros.  You must have a macro created in the EBPro project in order to execute or test/debug a macro from this page.
ItemDescription
Load macro debug fileMacro Debug File can be generated when compiling a project file in EasyBuilder Pro, and it is placed in the same directory as the compilation file.
Macro Debug File has a file name extension of “.debug”. When an unmatched debug file is loaded, the error message window shows.
Start debuggingStart debugging or execute macro from a breakpoint.
Stop debuggingStop debugging.
BreakPause macro debugging manually. A Breakpoint can be set at a statement by clicking the grey margin on the left-hand side of the statement. When a macro is launched, it will run until the Breakpoint, and wait for the next command.
Restart simulationAfter running on-line / off-line simulation in macro work space, the macro can be revised directly in the Diagnoser window. After revising the macro, the simulation can be restarted by clicking Restart Simulation, and then the confirmation window pops up.
Step IntoRun the macro line by line. If the line contains a function, the diagnoser will enter the called function and continue line-by-line debugging from there.
Step OutReturn to the line where the current function was called.
Step OverRun the macro line by line. If the line contains a function, the function will be executed and the result is returned without debugging each line.
SearchSearch for a macro by entering keywords.
WatchWhen debugging, variables can be added here for watching the change of data.
OutputShows system information or TRACE output.

Macro Debug in cMT Diagnoser can be opened in the following ways, each with different privilege requirements and operation steps.

Method 1: [On-line Debug] or [Off-line Debug] within macro editing work space

Within the macro editing workspace, the online or offline debug buttons will allow you to debug the macro in offline simulation or online simulation mode

Click [On-line Debug] or [Off-line Debug].

Software will generate a Macro Debug File. Also, macro editing work space window will close and be replaced by cMT Viewer simulation and cMT Diagnoser, the latter of which loads the Macro Debug File automatically. When the macro is being debugged in cMT Diagnoser’s, the macro codes can actually be modified.

Upon completing macro debugging, close the cMT Viewer simulation. The macro editing work space should appear again, and it will ask whether you want to update the macro with the changes made in cMT Diagnoser.

Method 2: On-line simulation / Off-line simulation in EasyBuilder Pro.

The Macro Debug File is automatically generated after compiling the project file. When cMT Viewer simulation window is shown by running simulation in EasyBuilder Pro, open cMT Diagnoser from the right-click menu. The system imports the debug file automatically when it detects one. In simulation mode, macro can only be debugged but not changed.

Note:

  • There must be at least one macro in the project for the Macro Debug File to be generated during compilation.

Debugging Example

Here is a debugging example using the “Start Debugging” tool within the cMT Diagnoser Macro tab.

Instructions: Debugging Example
  1. Start Debugging

    Click [Start Debugging]
    Click the Start Debugging button (play icon) to begin the debugging of your selected macro.
  2. Set breakpoints

    Set Breakpoints in the grey margin on the left-hand side of the lines. The Breakpoints are represented by red dots.
    cMT Diagnoser, Macro debugging: Set Breakpoints in the grey margin on the left-hand side of the lines. The Breakpoints are represented by red dots.
  3. Macro runs, stops @ break points

    After debugging is started, it will stop at the first breakpoint, now marked by a yellow arrow
    After debugging is started, it will stop at the first breakpoint, now marked by a yellow arrow
  4. Monitor Variables

    At this moment, variables can be added monitored in the Watch table as shown below. Contents of arrays can be monitored as well
    At this moment, variables can be added monitored in the Watch table as shown below. Contents of arrays can be monitored as well
  5. click “Start Debugging” again to continue

    After the Start Debugging button is clicked once again, macro will run and stop at the next breakpoint. The changes of values are shown in the Watch list
    After the Start Debugging button is clicked once again, macro will run and stop at the next breakpoint. The changes of values are shown in the Watch list
  6. “Step Into” button for line by line debugging (including functions)

    Click the Step Into button to run macro debugging line by line. If the line contains a function, cMT Diagnoser will enter the called function and continue line-by-line debugging from there. Changes of values can be observed in the Watch table
    Click the Step Into button to run macro debugging line by line. If the line contains a function, cMT Diagnoser will enter the called function and continue line-by-line debugging from there. Changes of values can be observed in the Watch table
  7. “Step Over” button for line by line debugging (excluding functions)

    Click the Step Over button to run the macro line by line. Now, if the line contains a function, the result will be returned without debugging each line within the function call. When debugging meets a Breakpoint within the function call though, it stops there
    Click the Step Over button to run the macro line by line. Now, if the line contains a function, the result will be returned without debugging each line within the function call. When debugging meets a Breakpoint within the function call though, it stops there
  8. Stop Debugging

    Click Stop Debugging button to stop
    When debugging is finished, Click Stop Debugging button to stop

MQTT Settings

In Server tab the type and state of MQTT server is shown. Supported cloud services include: Generic / Azure IoT Hub / Sparkplug. Please note that AWS IoT is not supported.

cMT Diagnoser, MQTT/Server tab. In Server tab the type and state of MQTT server is shown. Supported cloud services include: Generic / Azure IoT Hub / Sparkplug. Please note that AWS IoT is not supported.

In Address tab the Topics published and subscribed by the HMI are shown. Selecting the checkbox of a topic in this tab can make cMT Diagnoser receive all MQTT messages published and subscribed, allowing cMT Diagnoser to change address data for easier MQTT debugging. Only generic servers are supported.

cMT Diagnoser, MQTT/Address tab. In Address tab the Topics published and subscribed by the HMI are shown

Note:

  • If a non-generic server is used, the following screen will appear.:
cMT Diagnoser, MQTT/Address tab, Only generic servers are supported. Image shown is what appears if a non-generic server is used.

In Published tab the message published from HMI is shown. When Raw Data is used as content format, data will be shown in hexadecimal. Only generic servers are supported.

cMT Diagnoser, MQTT/Published tab. In Published tab the message published from HMI is shown. When Raw Data is used as content format, data will be shown in hexadecimal. Only generic servers are supported.

In Subscribe tab the message subscribed by HMI is shown. When Raw Data is used as content format, data will be shown in hexadecimal. Only generic servers are supported.

cMT Diagnoser, MQTT/Subscribed tab. In Subscribed tab the message subscribed by HMI is shown. When Raw Data is used as content format, data will be shown in hexadecimal. Only generic servers are supported.

OPC UA Settings

Users can log in by entering the credentials to monitor values of OPC UA nodes.

cMT Diagnoser, OPCUA Tab. Users can log in by entering the credentials to monitor values of OPC UA nodes.

JS / JavaScript Settings

In this tab users can view console messages of JS objects

cMT Diagnoser, JS tab. In this tab users can view console messages of JS objects

Notes:

  • cMT Diagnoser supports the monitoring all PLC addresses that HMI can access, including Tag PLC addresses.
  • Address values can be displayed in Decimal/HEX/Binary formats. Right-click anywhere on a monitor page to bring the menu up for the change.
  • When closing cMT Viewer with cMT Diagnoser opened, cMT Diagnoser will resume last state and pops up when cMT Viewer simulation window opens again. If Diagnoser is closed before closing cMT Viewer, users should manually open Diagnoser in next simulation.
  • When monitoring cMT-SVR/cMT-SVRX models, connecting directly with cMT Diagnoser displays only global object information. To view information for objects within the current window, connect through cMT Viewer and access Diagnoser with a right-click.
  • When [Password Protect] is enabled in Macro Manager, the Macro Debug File cannot be generated after compilation.
  • Password Protect can be enabled for an individual macro, and two modes are available: Encrypted and Read Only. To debug a password protected macro, a password is required to unlock the macro in cMT Diagnoser. If the macro is protected in Read Only mode, it can only be viewed but not changed when debugging. If the macro is protected in Encrypted mode, it cannot be viewed at all.
  • When a macro is not successfully compiled, it will be put into the Macro Under Development list and will not be contained in the Macro Debug File.
  • cMT Diagnoser can only debug one macro at a time. When debugging a macro, executing another macro will not be effective.
  • When the breakpoint is placed on irrelevant lines, such as beside an empty line , variable declaration without initial value assignment, the breakpoint will be represented by a hollow red dot as line 7 below shows:
Macro debugging: Breakpoint placement. When the breakpoint is placed on irrelevant lines, such as beside an empty line , variable declaration without initial value assignment, the breakpoint will be represented by a hollow red do