About me, License, Version History, Testimonial

About the Author

Am, currently contracting, but may take whatever the marketplace and situation deem wize (I hope), you may check out my web 2.0 CV . So firstly, I share a little bit about the meaning of life, why life exists here, and the relationship of this tool with life.

I started programing 20 years ago, I grew up in a South African coastal town, then on a small farm. While finishing my school career; after not being able to afford my own ZX81, I taught myself some modula2 over the Christmas break.  I started on a track learning assembly after reverse-engineering my dads VGA bios in 1987 to write a screen-saver in x86 instructions. I fell into x86 directly mainly to write tinier and hugely faster code.  My first TSR program was one that hacked the program memory control block to store executable code to save RAM, resulting in the tiniest screen-saver I ever saw.

I'm now a proper Computer programmer by day, and electronics hobbyist by night as you can see from the photos on the site. I grew up in a cosy white suburb in the coastal town of East London, South Africa in the what was then the Cape Province. At the time I was too young to realize that the white man had invaded South Africa and would soon be sent packing. My home province now has a new name, so you'll not find it on the map, Airports, holidays and institutions got renamed. But before all this really got under-way, I finished school, learned to program in x86 assembly language and went to the army. I then discovered that my life was a lie before, so this website is currently a extension of that reality, an attempt to give back to the community I now live in.
Modbus support requests can be e-mailed to me using the address in the graphic.

To learn about my take on life, for zaphodikus blog. I also tweet @zaphodikus, and bookmark zaphodikus zaphodikus with Delicious .

DSCF1072 DSC00126 DSC00118 DSC00162


This software program is released under the GPL version 3 license, the preamble follows.

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
GNU General Public License for more details.

If you wish to publish any portions of this work, in any form, you need to study the license, copyleft mechanism, and mostly be willing to share any modifications you make to the software program. All for the benefit of the ecosystem.

About the Simulator (Version History)

Mostly this project is my profile, or CV if you like; that, and I'm an altruist so that's why it's free. The simulator was born over a few weekends, and brought into the office on a Monday morning for a trial-run. I was writing communications drivers for Adroit Technologies (www.adroit.co.za) back then, and used a lot of code from multiple resources in the simulator to get going fast, by using some code that was already familiar to me. The code in this project that comes out ofr Adroit Technologies is actually published elsewhere in a driver SDK. Over time it has become my own although it still owes a lot to it's initial reason for existing. Right now and unless I find any work in a related line, this simulator is just a weekend project, and gets updated only when I have time or users report bugs.

If you think my coding on this project sux and could not possibly offer me a job to write more of the same for you, you are right. This code is nasty, but it's mine, and it does fulfill the design requirements quite well. However I am always looking for work opportunities in the UK.


  • 2.3b xx/xx/xx CDB Initial rev submitted to site

  • 2.4 22/07/02 CDB Fixed and support Fn 10h and 15h (Write multiple register/extended registers)

  • 2.5 28/07/02 CDB conditional compilation macros _COMMS_DEBUGGING and _UI_DEBUGGING added, specify in build options to enable more debugg'n messages. Display of data and addresses format is selectable now.

  • 2.6 29/07/02 CDB Reading digital I/O showed me a bug where the CMODCommsProcessor was reading the wrong address, see UnPackField()

  • 2.8 07/08/02 CDB Web-link to modicon.com. Tooltips added. Also allow 64K registers instead of 9999 (10K) uses more RAM now. Window "stay-on-top" added.

  • 2.9 14/08/02 CDB Tooltips work in all dialogs except value edit dialog. This dialog still has some bugs in it.

  • 3.1 27/10/02 CDB Devices can all start "off", regsiters can load at start-up. EasterEgg added to "About" box.

  • 3.2 02/11/02 HF : (Hirofumi Fudoudou) Hirofumi Fudoudou's changes added CDB : Easter-credits updated

  • 3.3 08/11/02 submitted by HF : Integrated transparency index bitmap fixes. PLC write address returned in telegram corrected too.

  • 3.4 11/11/02 CDB : Function 05 (write single coil) is now supported and tested.

  • 3.4a 12/11/02 CDB : remember the register area type between load-ups

  • 3.4b 21/11/02 CDB : Can now set upper limit to # registers.

  • 3.4c 25/11/02 CDB : Write multiple coils 0F is supported now, # registers per req. is settable too.

  • 3.4d 27/11/02 CDB : RTS can now be set for enable/dis/h-shake/toggle.

  • 3.5 18/12/02 CDB +AP : Renamed the MODCommsProcessor class to CMODCommsProcessor (Álvaro Palma) Fixed the read-ahead length calculation. 20/01/03 CDB focus rectangle for the tick-boxes added, tab order here fixed too.

  • 3.6 23/01/03 CDB Keyboard only friendly hotkeys added to get to the other dialogs. [duplicate toolbar]

  • 4.0 22/03/03 CDB station activity indicators all accessible now, comms analyser screen added. CMicroTick over-painting of parent Wnd by 1 pixel fixed. Class headder files tidied up. Registers list redraw &CPU load when doing writes reduced.

  • 4.1 24/03/03 CDB Option so that coils modify before the response is sent- see eMulation dialog

  • 4.2 02/04/03 CDB Emulations settings 'tick boxes' update the comms class, new tick for disallowing writes to PLC memory.

  • 4.3 04/04/03 CDB If scrolling thru stations, the comms engine was fetching the wrong station enabled tickbox to see if it was enabled.

  • 4.4 11/04/03 CDB dialog can now be re-sized, thanks to CResizer class by Dmitry Kochin 

  • 5.0 02/05/03 CDB Merged Ethernet TCP functions into the sim/ Added training simulation.

  • 5.1 05/05/03 CDB Splash screen- Training sim bugs sorted out.

  • 5.2 XX/XX/XX CDB Added tooltips support for diabled controls to trainer dialog Ray Almog from - http://www.codeguru.com/controls/tooltip_for_disabled_control.shtml

  • 5.3 15/05/03 CDB Icon for application changes from Modbus Ethernet to Serial. <ENTER> key trapped in main dialog.

  • 6.0 20/05/03 CDB Allen-Bradley DF1 protocol added

  • 6.1 09/06/03 CDB BCC and CRC option on Allen-Bradley added

  • 6.2 24/06/03 CDB Modbus RS232 disabled station stations no longer respond as it should be.

  • 6.3 06/07/03 CDB debugger screen data was not hex coded correctly, Eth. message frame trans # bytes are handled correctly too. fault reported by BMG

  • 6.4 28/08/03 CDB When funny chars come in on serial, we sometimes had crashes, if port settings are invalid, there is now a warning messagebox!

  • 6.5 08/09/03 Time license + : Patrick SOFORCADA fixed length calc. for force multiple coils - / calculate

  • 6.6 08/10/03 CDB Help updated, Joy protocol seriously tweaked, new setup dialog for joy

  • 6.7 16/10/03 CDB Modbus Ethernet - COMMS screen error message if station ID not active.

  • 6.7 Submitted to codeguru.com on 21/10/03

  • 6.8 26/10/03 CDB Splash is now "programmed" in text-format, About text changed a bit+ mouse cursor over links fixed.

  • 6.9 06/12/03 CDB still need to check out write multiple coils when writting 16. modem status + lights added, HTML help text updated.

  • 7.0 14/12/03 CDB cleaned up include statements; multiple stations have seperate modbus RTU registers. write multiple coils fixed; Ctrl-J injects random char.

  • 7.1 06/08/04 CDB Digital items now display with a darker background when "on" '1' to make them easier to spot. requested by Canada customer

  • 7.2 30/10/04 CDB you can now specify a # of bits that is not a multiple of 16 for modbus coils and relays (in fact any bit-area)

  • 7.3     29/10/06   CDB toolbar bn to open/close port

  • 7.4     22/01/07   CDB Write multiple coils wrote one too many, fixed. (reported by Nils Finner)                                

  • 7.4b Write single coil was dividing the returned coil address by 2, fixed now too     

    __TEST_INJECTMSG macro added to allow testing of any message                                                       


  • 7.3     30/09/05   CDB Creep fix: Script engine/parser was persisting the script text all of the time                                 

  • 7.4     16/02/06   CDB ASCII/text display mode to allow string debugging; e-mail address changed                                      

  • 7.5     25/03/06   CDB When TCP/IP requests Queue up too quickly, the simulator now processes them all instead of just the first one,

     comments tidied a little; modbus TCP/IP can also simulate some errors now.                                         

  • 7.6     11/04/06   CDB script run interval is more intuitive now.                                                                     


  • 7.7     22/07/07   CDB merged branched code, added HTML output GUI feature; disabled the ERROR-simulation function for now. Nag-screen no longer 'spams' and locks the UI.                                                                     

  • 7.8     09/09/07   CDB - floating-point editing values in the table "never really worked", was displaying 0 and putting 0 in. telegram Data to have spaces between bytes 00 00 00 = (seems to be in now)          

  • 7.9     03/02/08   Baud Rate is 57600 not 64800 (Ken Robbins)                                                                          

  • 8.010/2/08 - started CSV importer for Vinay Kumar                                                                                

  • 8.1     28/3/08 - improved debugging msgs for VB script scriptlet errors

  • 8.2 05/05/08 - CDB : Added RS232 Modbus support for function 16 Write mask holding register

  • 8.3 CDB , ExistFile() moved from csvreader.cpp into mylib.lib

  • 8.4 15/06/08 - CDB __TEST_INJECTMSG macro removed now that I have a integration-test app. Adding commandline support
    for Leendert in't Veld . Demo interval increased from 30 to 45 minutes.

  • 8.5 17/06/08 - CDB Toggling channel closed then opening a dialog raised an exception, reported by Steve Bardsley. fixed.
    Help text updated to show command-line stuff from rev 8.04

  • 8.6 26/06/08 - CDB released a debug build by mistake. Fixed ASSERTion in the animation dialog. Fixed Easter-egg scroller only
    showling first 11 lines of text.

  • 8.7 30/06/08 - CDB Added RTS indication on serial modbus protocol title-bar text R-en/R-tg...

  • 8.8     14/08/08 - CDB Removed SCRIPTTEXT_ISPERSISTENT flag from scripting site since it caused creep (it now has a CPU load hit)
  • 8.9
  • 8.10
  • 8.11 Sourceforge hosted release of a VS2008 project
  • 8.12 Removed my old Company email address and domain from most of the code
  • 8.13 Fixed a small intermittent stack corruption, and tidied the CRT warnings a little bit.


I have helped users to test their applications and systems from various companies in the past most users help me by reporting any bugs, and in these cases I have found users in companies such as Honeywell, Schnieder, Matrikon and even Siemens. This simulator is the type of tool that finds a lot of use in the validation phase of a project, and then disappears on your hard-drive somewhere. But while you do use it, please give me any feedback, good or bad. Below is a list of new users starting Q4-2009.

http://www.sweetwilliamsl.com/ - Sweet William Automation, a charming Apple app using WiFi on the iPhone for monitor and control.

http://www.reussis.euIndustrial IT Integration - Freddy Mare.

http://www.schlagel.com - A distributor drive controller product that used the simulator to verify modbus and DF1 interfaces during development.

I have always enjoyed digital electronics, after leaving school I wanted to be an electronic engineer, so I started at a Technicon/University/Polytechnic, but ended of deciding software was my big game. I now play with 8-bit AVR microcontrollers, see more on my Hobbies page.

Users can e-mail me using the address in the graphic

DSC00059 100_2818 100_1256 100_0581


Allen-Bradley is a trademark of Rockwell Corporation USA; MODBUS of Modicon USA; JOY is a trademark of Joy Mining Machinery UK; Windows is a trademark of Microsoft Corporation USA.