Bachmann M1

Navigation:  Targets >

Bachmann M1

Previous pageReturn to chapter overviewNext page

The Bachmann M1 controller perfectly combines the openness of a PC-based controller with the reliability of industrial hardware platforms. Designed to withstand the toughest ambient conditions it guarantees error-free use over long periods of time, at subzero temperatures and without fans. A modern system architecture designed for consistent network-capability permits the easy integration of the M1 into the environment of the controller and system peripherals. Real-time ethernet permits the real-time networking of the controllers, and the support of all standard Fieldbus systems permits the connection of standard external components.


Bachmann M1 Controller with I/O modules.

Supported Controllers and I/O modules

Bachmann provides a broad range of powerful CPU's with a broad selection of I/O modules. The following I/O modules are currently supported :

oCNT204 - Counter Module

oACR222/2 - Stepper Motor Module

oISI222/8 - Positioning Module (encoder + analog out)

oPWM202 - Pulse Width Modulation Module

oAI204 - Analog Input Module

oAIO288 - Analog Input/Output Module

oAO202 - Analog Output Module

oAO208 - Analog Output Module

oDIO216 - Digital Input/Output Module

oDIO232 - Digital Input/Output Module

oDI216 - Digital Input Module

oDI232 - Digital Input Module

oDO216 - Digital Output Module

oDO232 - Digital Output Module


If your module is unsupported please contact Controllab Products B.V. for more information.


The Bachmann M1 Controller is a product of Bachmann Electronic GmbH. More information can be found on the website:

Configuration for 20-sim

In order to use the Bachmann target from 20-sim, choose the 20-sim 4C C-Code target.



20-sim 4C C-Code target

If the "20-sim 4C 2.1" target is not listed, the target needs to be added.

Open 20-sim and go to the following menu: Tools \ Options \ Folder \ C-Code Folders

Add the C-Code generation template path to the C-code Folders.


Default location Windows (32-bit):


 C:\Program Files\20-sim 4C 2.1\source\20-sim


Default location Windows (64-bit):


 C:\Program Files (x86)\20-sim 4C 2.1\source\20-sim


Adding 20-sim 4C target

Time base

In order to set the time base for your application take note of the following guidelines.

Set the desired step size in the Run Properties dialog of 20-sim for simulation.

The step size can be changed in the Configure Run settings in 20-sim 4C.

Set the System Time Base in the Bachmann SolutionCenter

oTicks / second : Set at least as high as the frequency of your application preferably higher. e.g. application frequency is 500 Hz, set the "Ticks / second" to 2000 and "Ticks / Timeslice" to 2, this will amount to 1000Hz per operating system task.

oSync - Signal : Set both times to the same value. The value needs to be an exact multiple of the step size. During application initialization (on the M1 target) the time base is initialized of no extract multiple can be found, the application will be terminated!

 As example consider a step size of 0.002 s. This is 2000 us and this is exact multiplier of 4          times 500 us.


 If the Sync Signal times are set to 500 us, the following step sizes are possible:

 0.0005 s, 2 kHz (sync count = 1)

 0.001 s, 1 kHz (sync count = 2)

 0.0015 s, 666.667 Hz (sync count = 3)

 0.002 s, 500 Hz (sync count = 4)

 0.0025 s, 400 Hz (sync count = 5)

 and so on...


The following example shows the 20-sim Run Properties dialog configuration for an application that runs at 500Hz.




The corresponding System Time Base settings in the Bachmann Solution Center:




If the step size does not match an exact multiple of the Sync - Signal the application will be terminated.


The following message will appear in 20-sim 4C.



The following message will show in the Diagnostics log of the Solution Center



Run application at boot

In order to run the application at boot time on the Bachmann M1 controller add the following lines to mconfig.ini

In this case the application/module name is testio.


Note: the ModuleName is case-sensitive and must match exactly




    Partition = 2

    DebugMode = 0x0

    Priority = 130

    ModuleIndex = 0

    ModulePath = /cfc0/app/xxsim/

    ModuleName = testio.m


Q) Error that a SVI variable exceeds 63 characters.

A) Set the system compatibility in the mconfig.ini to  "Compatibility = 320"


Q) My output is not reset when the model is stopped.

A) Make sure that your Bachmann configuration (tcf) contains a <CLOSE> and <DESTRUCT> tag for proper closing of the component.