In the field of industrial automation, accurate pulse counting, position detection, and frequency, period, and pulse width measurement are the basis for achieving closed-loop control and data acquisition. The PCD2.H110 universal counting and measurement module launched by SAIA Burgess Electronics provides a high-performance and low-cost peripheral expansion solution for the PCD1 and PCD2 series programmable controllers. This module adopts modern FPGA technology and integrates a 24 bit high-speed counter, multi-mode measurement unit, and flexible I/O configuration. It can be widely used in scenarios such as automatic assembly machines, picking and placing equipment, pallet stackers, axis angle control, and conveyor belt object size detection. This article will provide a systematic and professional technical interpretation of the module from the aspects of hardware architecture, technical specifications, core functions, programming methods, and typical applications.
Product positioning and design background
PCD2.H110 is a universal module that can be inserted into any I/O slot of PCD1 or PCD2. The SAIA standard PCD controller itself provides 1600 31 bit counting registers, but can only capture signals of about 20 Hz; Even with interrupt input, the maximum can only reach 1 kHz, while the previous generation H100 counting module can support 20 kHz. The new H110 module not only extends the counting frequency range to 100 kHz, but also accurately measures frequencies up to 100 kHz and periods or pulse widths up to 1 hour. Its two counting inputs A and B can recognize the rotation direction of the incremental shaft encoder, so this module is also suitable for non adjustable shaft control tasks (if servo motor control with acceleration and deceleration ramp is required, the PCD2.H3 series motion control module should be selected). The module uses Field Programmable Gate Arrays (FPGAs) internally and can customize functions for specific OEM tasks through plug-in PROMs. It provides 4 inputs, 2 outputs, and 2 × 4 LED indicator lights externally. Users can use standard functions through pre programmed function blocks (FB) and comprehensive manuals.
Main technical characteristics
PCD2.H110 supports counting and measuring functions on the same module, and both can be used in parallel. A maximum of 16 H110 modules can be inserted in parallel into a PCD2 system, and a maximum of 4 modules can be inserted into a PCD1 system.
2.1 As a counting module
Maximum counting frequency: 100 kHz
Counting range: 0... 16777215 (24 digits)
Preset value range: 0... 16777215 (24 digits)
Counting addition and subtraction, supporting output when preset values are reached
Two digits input A and B, with directional recognition
1 direct counter output CCO
Optional counting modes: x1, x2, x4 (for incremental encoders)
2.2 Frequency measurement
Frequency range: 500 Hz... 100 kHz
Measurement range: 0... 65535 (16 bits)
Accuracy: ≥ 1% (depending on the measurement window time)
At the end of the measurement, an interrupt can be triggered through a fast TCO output
2.3 Cycle or pulse length measurement
Frequency range: 0.27 mHz... 500 Hz (corresponding to a maximum period of 1 hour)
Cycle or pulse length: 2 ms... 1 h
Also possessing TCO output
2.4 Hardware specifications
Digital input: 4-channel (E0~E3), rated 24 V DC, low level -30...+5 V, high level+15...+30 V, source logic, typical input current 6.5 mA, input filtering 150 kHz, no photoelectric isolation (directly connected)
Digital output: 2 channels (A0, A1), 5... 500 mA, short circuit protection, maximum frequency of 100 kHz, voltage range of 5... 32 V, external power supply, saturation voltage drop<0.5 V @ 500 mA, output delay<1 µ s
Internal power supply:+5V maximum 90 mA (from PCD bus)
External power supply: 10... 32 V DC, maximum 2 A, residual ripple<10%, with TVS diode (39 V ± 10%), no polarity reverse protection
Working temperature: 0... 70 ° C (inside the module)
Anti interference: Complies with standards such as EN 61000-6-2
Wiring terminals: 10 pin pluggable terminals (0... 9), where terminals 0=A input, 1=B input, 2=Enable C, 3=Enable M, 4=CCO output, 5=TCO output, 8=+24 V, 9=GND
LED indicator lights: 6, indicating the status of A, B, Enabling C, Enabling M, CCO, TCO respectively

Detailed explanation of counter mode
3.1 Counter Core Structure
There is a 24 bit counter inside the module that can load initial values from the preset counter. The user program writes a 24 bit value into the preset counter through the PCD register, and then loads the preset value into the work counter and starts counting through the command StartCt. There is also an independent 24 bit register for comparing with the counter value; When the two are equal, the output behavior is determined based on the CCO configuration.
3.2 Enable C Input Configuration (Parameter 5)
Static/Positive Logic (0): Allow counting when Enabling C=H, stop when L.
Static/Inverse (1): Allow counting when Enabling C=L, stop when H.
Dynamic/Positive Logic (2): Initially set to L, the first rising edge counts, the next rising edge closes, and switches accordingly.
Dynamic/Inverse (3): Initially set to H, the first falling edge is open and the next falling edge is closed.
3.3 CCO Output Configuration (Parameter 6)
Static/Positive Logic (0): The user program activates CCO to become H; when the counter value equals the register value, CCO becomes H and remains until a new activation command is received.
Static/Inverse (1): When activated, CCO=H, and when equal, CCO=L and maintain.
Dynamic/Positive Logic (2): CCO=L when activated; When equal, CCO generates positive pulses of 25... 100 µ s, which are repeated every time they are equal.
Dynamic/Reverse Phase (3): When activated, CCO=H; When equal, CCO generates negative pulses of 25... 100 µ s.
The short pulse output in dynamic mode can trigger XOB 20/25 through the interrupt input of PCD (such as INB1) to achieve real-time response.
3.4 Configuration of Input A and B
A and B can be independently inverted (parameters 7 and 8). For counting mode, inverting input is equivalent to physically reversing the direction of the motor. Parameter 7 also affects the polarity of input A in measurement mode.
3.5 Counting Mode (Parameter 2)
X1 mode (0 or 1): Only evaluates the rising edge of signal A, and the B level determines the direction (counting up when B=H, counting down when B=L, or taking the opposite). Suitable for simple counting tasks, not recommended for incremental encoders.
X2 mode (2): Evaluate the rising and falling edges of signal A, and determine the direction of phase B (90 ° offset). Double the number of pulses per cycle.
X4 mode (4): Evaluate the rising and falling edges of A and B, with the direction still determined by the phase. Provide the highest resolution (4x).
X3 mode (3): No practical use, not discussed.
Measurement mode
PCD2.H110 supports three measurement modes: frequency measurement, cycle length measurement, and pulse length measurement. All measurements are performed using two 16 bit counters, one as a time base counter (1 MHz or 1 kHz clock) and the other as a measurement counter. The measurement can be configured as single or automatic continuous.
4.1 Frequency measurement (500 Hz... 100 kHz)
The measurement window is defined by the user (set in milliseconds through parameter 10), and counts the pulses input by A during the window opening period. The result is read in the form of pulse count or converted Hz. In automatic mode, the measurement is continuously cycled, and a TCO pulse is generated at the end of each window. The result is latched and a new measurement begins immediately. The TCO pulse width is approximately 1.6 µ s. The resolution depends on the number of pulses captured within the window: to achieve 1% accuracy, at least 1000 pulses are required. For example, a 100 kHz signal requires a 10 ms window, while a 500 Hz signal requires a 2 s window. For signals below 100 Hz, it is recommended to use periodic measurement.
4.2 Cycle length measurement (corresponding to frequencies of 0.27 mHz... 500 Hz)
Measure the time between two consecutive rising edges. The time base is 1 MHz (1 µ s resolution). The user sets the time base frequency division value n (0... 65535) through parameter 10, and the actual measured value is equal to the measured counter value multiplied by (n+1) µ s. Formula: n=(T × 10 ^ 6/clk) -1, where T is the expected period (seconds) and clk is the expected number of clock pulses (used to adjust resolution). For example, if T=10 s and clk=10000, then n=999. The measurement results are read out in pulses or converted seconds.
4.3 Pulse length measurement
Measure the duration of input A being high (or low) level. Similarly, use a time base of 1 MHz and a user-defined frequency division value n. Parameter 7 can invert the input A to achieve negative pulse measurement. Configure parameter 9=0 (single) or 1 (automatic continuous).
4.4 Measurement Control and TCO Output
The Enable M input (terminal 3) can enable measurement statically or dynamically, and the logic can be reversed.
The TCO output (terminal 5) can generate static level changes or dynamic pulses at the end of each measurement to trigger CPU interrupts or external devices.

Programming and Configuration
The programming of PCD2.H110 is carried out in SAIA PG4 programming software (Windows platform), which supports instruction lists (IL) and function blocks (FB), as well as GRAFTEC (Sequential Function Diagram). The support for FUPLA (functional block diagram) is currently in preparation. The user needs to install the library files from the floppy disk (order number PCD9.H11E), including D2H110_SRC, D2H110_SQU, help files, and module base address template file D2H110_S.MBA.
5.1 Module Base Address File (. MBA)
The user must edit the file, specifying the actual number of H110 modules (NbrModules, 0... 16) used and the hardware base address for each module. The base address corresponds to the I/O slot address on the PCD backplane (such as 32, 64, 112, 208, etc.). This file needs to be manually copied to the project directory.
5.2 Initialization Function Block Initiat
Initiat accepts 12 parameters for configuring all operating modes of the module. Call example:
text
CFB init
k 1 ; Module Number 1
0 Counting mode x1
r 999 ; Starting value of counter
r 998 ; Register preset value
1 ; Enable C static inversion
1 ; CCO static inversion
0 Input A is normal (counting)
0 Input B is normal
5 ; Measurement mode: Automatic frequency
100 ; Measurement window of 100 ms
0 Enable M static positive logic
2 ; TCO dynamic positive pulse
All parameters must be within the allowed range, otherwise the error flag fPar_Srr is set and the diagnostic register rDiag records the error code.
5.3 Execute Function Block EXEC
EXEC is used to send commands such as starting counters, reading count values, loading preset values, starting/stopping measurements, etc. Three parameters: module number, command code, and destination/source registers. The supported commands include:
LdCtPress: Load counter preset value
LdReppres: Load comparison register value
ModMsConf: Change measurement configuration (runtime)
LdMsVal: Set measurement window/time base
RdCt: Read the current count value (24 bits)
RdMsImp: Read and measure the original pulse count (16 bits)
RdMsUnit: Read the converted value (floating point number, Hz or s)
StartCt / StartMs / StopMs
RdIdent: Read module identifier (verify if the module is working properly, return value 17xx)
5.4 GRAFTEC Programming Example
The manual provides three complete GRAFTEC application routines, demonstrating the programming structure in practical engineering.
Example 1: Simple counter (frequency divider)
Task: Counter preset value 500, compare register 900, Enable C static inversion, CCO static positive logic. When the counter reaches 900, the CCO outputs a high level. The user program detects this and flips a digital output, reloading the counter to 500 to continue counting. The program calls INIT in the initialization step (IST), polls the CCO status in the subsequent steps, and executes overloading.
Example 2: Motion Control with Incremental Encoder
Task: The workbench is driven by a DC motor and equipped with a 500 pulse/rev incremental encoder (screw pitch 1 mm). It needs to move from the starting point A to B, pause and then return to A. During operation, it accelerates quickly and switches to slow speed when approaching the target, ultimately achieving precise positioning. This example uses x2 counting mode to directly control the fast/slow and direction of the motor through CCO output, and software polls the CCO status to achieve GRAFTEC step switching. The program also handles negative position display (by subtracting an offset to avoid negative display). This application demonstrates the capability of the H110 module as an axis positioning controller.
Example 3: Measuring object size with a photoelectric grid
Task: When an object on the conveyor belt obstructs the photoelectric grid, count the pulses proportional to the speed of the conveyor belt to measure the length of the object for sorting. Connect the photoelectric grid signal to the Enable C input (static inversion), connect the counting pulse to the A input, and connect the B input to a fixed high level (or GND after inversion). When the photoelectric grid is obstructed, the Enable C is activated and the counter starts counting; When the obstruction ends, the counter stops and the read count value is the length of the object. The program polls the CStart status in GRAFTEC and stores the results in a continuous register queue after each measurement. This scheme has been used for sorting melons and apricots in the south of France.
Error handling and diagnosis
The module will detect parameter errors during runtime. If a parameter in Initiat exceeds the range, the module will automatically set it to the minimum value and set the global error flag fPar-Err. At the same time, the diagnostic register rDiag will be encoded in bytes: FB number (1=Initiat, 2=EXEC), parameter number, and module number. For example, 00 01 06 02 indicates that parameter 6 (CCO configuration) of module 2 is incorrect. Users can clear this flag in XOB 16 or initialization step. In addition, EXEC command code errors will report "Symbol not defined" during assembly. Hardware failure can be verified by reading the identification code through RdIdent. The normal value should be 17xx (specific versions such as 2759, 1761, etc.). If it reads back 0, it indicates module failure or address error.
Parallel use of counting and measurement
The manual clearly points out that counting and frequency measurement can run in parallel on the same module. For example, in motion control examples, the frequency of the encoder signal can be measured while positioning to obtain real-time speed. Just configure the counting parameters and measuring parameters (parameter 9=5, parameter 10=window time) in INIT at the same time, call StartMs to start the measurement after initialization, and then read the measurement results in the main loop. Due to having only one display module, usually only one quantity is displayed, but PCD registers can store two values simultaneously.
Electrical connection and installation precautions
The external 24V power supply must be smoothly filtered with ripple<10%, and attention should be paid to polarity reversal protection (TVS tube only suppresses overvoltage).
The output is a source type (high side switch), with one end of the load connected to the output and the other end connected to GND. Inductive loads require parallel freewheeling diodes.
The input is source type (positive logic), and the sensor needs to provide a 24V high-level signal; If NPN output is used, a conversion circuit needs to be added.
The maximum counting signal is 100 kHz. It is recommended to use shielded twisted pair cables with the shielding layer grounded at one end.
The module must be powered off before inserting into any I/O slot, otherwise it may damage the FPGA.
Typical application areas
Automatic assembly and picking equipment: using high-speed counting and encoder direction recognition to achieve position tracking.
Angle control: such as cameras, car lights, antenna gimbal, set angles through encoder feedback.
Conveyor line object sorting: Combining photoelectric sensors and conveyor belt encoders to measure object size.
Static axis setting: used for manual adjustment or position teaching in maintenance mode.
Frequency monitoring: Monitor fan speed, vibration frequency, etc., and continuously output measurement values in automatic mode.
Pulse width analysis: Analyzing the duty cycle of sensor signals for diagnosis or process control.
