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.
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: http://www.bachmann.info
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
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

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
[TESTIO]
(BaseParms)
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.