Multi-jet synchronous printing system based on a distributed architecture

CN122331848BActive Publication Date: 2026-08-21WEINAN ZHENCHENG TECH CO LTD
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
CN202610786826.8
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2026-06-03
Publication Date
2026-08-21
Estimated Expiration
2046-06-03

AI Technical Summary

Technical Problem

[0007]针对现有技术的不足,本发明提供了基于分布式架构的多喷头同步印刷系统,具备分布式解析扩展性强、多喷头协同效果佳等优点,解决了传统多喷头同步印刷系统多喷头同步性和扩展性差的问题

Benefits of technology

[0060] 1. This invention separates non-real-time large-scale computing from real-time high-precision control through a distributed architecture of workstations, FPGA processing boards, and printhead modules. It fully leverages the respective performance strengths of computers and FPGAs. When increasing the number of printheads, only corresponding computing tasks need to be added to the workstation, and logic units and I/O interfaces need to be expanded on the FPGA. There is no need to modify the core system architecture and synchronization principle, which facilitates product series upgrades and customization. The workstation parses the image data of each print job, completes dynamic load segmentation, establishes a corresponding segmentation index table, and then packages the data and embeds timestamps. This ensures that the FPGA processing board has sufficient time to complete data decompression and caching, and also ensures that the FPGA processing board accurately starts the printing operation at the specified time. The distributed parsing has strong scalability.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN122331848B_ABST
    Figure CN122331848B_ABST
Patent Text Reader

Abstract

The application relates to the field of high-precision industrial printing technology, and discloses a multi-nozzle synchronous printing system based on a distributed architecture, which comprises a workstation, an FPGA processing board and a printing nozzle module. The system separates non-real-time large-scale computing from real-time high-precision control through the distributed architecture. When the number of nozzles is increased, only the calculation task needs to be added in the workstation, and the logic unit and the I / O interface are expanded on the FPGA. The workstation analyzes the image data of each printing job, establishes a block index table after completing dynamic load blocking, packs the data and embeds a time stamp, ensures that the FPGA processing board has sufficient time to complete decompression and caching, and can also ensure that the printing operation is accurately started at a specified time point. The distributed analysis has strong expansibility, the FPGA processing board constructs a global synchronization mechanism to ensure the accurate alignment of data in different channels in the time dimension, the waveform of the data packet is inquired, the personalized driving waveform suitable for each piezoelectric nozzle is generated, and the multi-nozzle cooperation effect is good.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This invention relates to the field of high-precision industrial printing technology, specifically to a multi-printer synchronous printing system based on a distributed architecture. Background Technology

[0002] Traditional multi-head synchronous printing systems based on distributed architecture are core equipment in large-scale, high-speed, and high-precision industrial printing scenarios such as PCB printing, textile printing, and 3D printing. The collaborative work of multiple printheads is a key technological path to improve printing efficiency. Existing solutions typically employ a vertically segmented bitmap approach, dividing the complete image data and distributing it to each printhead for independent printing tasks. However, this approach has significant bottlenecks, specifically as follows:

[0003] Data processing bottleneck: The system relies on a single industrial computer to complete the rasterization (RIP) of the entire image and the generation of printhead drive data. When the printing resolution increases and the printing area expands, the amount of data grows exponentially, which can easily cause system processing delays and cannot meet the real-time requirements of high-speed industrial printing.

[0004] Synchronous control bottleneck: Insufficient precision in the coordinated control between printheads can easily lead to defects such as misalignment and stripes in the printed pattern, which seriously affects the stability of the finished product quality.

[0005] System expansion bottleneck: Rigid architecture limits scalability. When the number of nozzles is increased to improve the area or efficiency, the central processing unit needs to be upgraded simultaneously, which greatly increases the system iteration cost and complexity.

[0006] Existing technologies have not yet formed a solution that can organically integrate the three core capabilities of ultra-large-scale data parallel processing, high-precision hardware synchronous control, and flexible system expansion. Summary of the Invention

[0007] To address the shortcomings of existing technologies, this invention provides a multi-printer synchronous printing system based on a distributed architecture, which has advantages such as strong distributed resolution scalability and excellent multi-printer collaboration, thus solving the problems of poor multi-printer synchronization and scalability in traditional multi-printer synchronous printing systems.

[0008] To achieve the above objectives, the present invention provides the following technical solution: a multi-printer synchronous printing system based on a distributed architecture, comprising a workstation, an FPGA processing board, and a print head module;

[0009] The workstation acquires image data and printer configuration data for all print jobs by connecting to a big data platform, and classifies them into job datasets and configuration datasets. Based on the job datasets and configuration datasets, the workstation parses the image data of each print job, performs dynamic load slicing, establishes a corresponding slicing index table, packages the data, and embeds timestamps. The workstation is equipped with a PCIe interface for electrical connection to the FPGA processing board. The workstation transmits the data packets corresponding to each print job to the FPGA processing board through the PCIe interface.

[0010] The FPGA processing board performs data caching and synchronization processing based on data packets, determines whether the global synchronization trigger condition is met, and outputs the corresponding global synchronization pulse. The FPGA processing board is equipped with a nozzle waveform generation module and a digital-to-analog converter. The nozzle waveform generation module performs waveform query on the data packets, generates personalized drive waveforms adapted to each piezoelectric nozzle, and transmits them to the digital-to-analog converter. The digital-to-analog converter outputs the corresponding analog voltage signal based on the personalized drive waveform to complete the printing job. The FPGA processing board integrates several drive circuits.

[0011] The printhead module includes Each piezoelectric nozzle is connected to the drive circuit on the FPGA board via a flexible cable.

[0012] Preferably, the job dataset includes the image type, byte sequence, expected number of bytes, transmission checksum, actual number of bytes, actual checksum, print width, print height, print range, original resolution, original pixel density, and original color space for each print job, wherein the image type includes PDF, vector graphics, and bitmap.

[0013] Preferably, the configuration dataset includes the printer's physical resolution, standard color space, ICC file, pixel data input format, printhead grayscale range, preset grid size, printhead movement speed, printing line spacing, absolute time reference after calibration of the workstation and FPGA processing board, and workstation latency.

[0014] Preferably, the image data parsing process for the print job is as follows:

[0015] S11. Based on the job dataset, obtain the first... Image data for the first print job, and for the first The integrity of the image data for each print job is verified, and the verification process is as follows:

[0016] The workstation stores PDF standard headers, vector graphics standard headers, and bitmap standard headers. (The last part, "reading the first," appears to be an error and is left untranslated.) The first 16 bytes of the print job byte sequence are then compared with the standard headers of PDF, vector graphics, and bitmap graphics. If the first 16 bytes are... The first 16 bytes of the print job byte sequence match the standard header of any image type, indicating that the first print job... If the header of the first print job is correct, continue the verification process. If the first 16 bytes of the print job's byte sequence do not match the standard header for all image types, then it indicates that the first print job... If the header of a print job is invalid and the verification fails, the administrator should be notified immediately and the parsing should be terminated.

[0017] If the first The expected number of bytes for the first print job matches the actual number of bytes, and the transmission checksum matches the actual checksum, indicating that the first print job... If the print job is successfully transmitted, continue the verification process. If the expected number of bytes in a print job does not match the actual number of bytes, or if the transmitted checksum does not match the actual checksum, it indicates that the first print job is not working. If a print job is not transmitted completely, the file is corrupted, or the verification fails, the administrator should be notified immediately and the parsing should be terminated.

[0018] If the first The first print job does not contain password protection, dynamic interactive elements, unembedded resources, or unembedded fonts, indicating that the first print job does not contain password protection, dynamic interactive elements, unembedded resources, or unembedded fonts. The print job does not contain an unsupported element, so the validation is successful. Continue to S12. If the first print job does not contain an unsupported element, the validation is successful. The print job contains password protection, dynamic interactive elements, and no embedded resources or fonts, indicating that the first print job contains password protection, dynamic interactive elements, and no embedded resources or fonts. If a print job contains an unsupported element and the validation fails, the administrator should be notified immediately and the parsing should be terminated.

[0019] S12. Based on the job dataset, the first... The print width of each print job is denoted as... , will the The print height of each print job is denoted as... Based on the configuration dataset, the printer's physical resolution is recorded as... Then calculate the printer's pixel density. Target width in pixels of the internal bitmap and target height in pixels ;

[0020] S13. Parse the image according to its type. The process for each print job is as follows:

[0021] If the first The image type of each print job is PDF. The PDF rendering engine loads the PDF file and parses the page structure, extracts text, vector graphics and embedded images, renders the target page according to the printing range, and converts vector paths and text outlines into pixel information while preserving the original color data.

[0022] If the first The image type for each print job is a vector graphic. Image processing software is used to parse the path, fill color, and stroke attributes, and then a vector rasterization algorithm is used to convert the vector graphic into the target width in pixels. and target height in pixels Convert to bitmap;

[0023] If the first The image type for each print job is a bitmap. Image processing software is used to analyze the original resolution, original pixel density, and original color space. If the original resolution of the bitmap differs from the printer's physical resolution... If the matching is inconsistent, a bilinear interpolation algorithm is used for scaling until the original pixel density matches the printer's pixel density. Matching is consistent;

[0024] S14, Standardization Conversion The color space for a print job is determined as follows:

[0025] Use image processing software to... The original color space of the first print job is converted to the printer's standard color space, and then, according to the printer's ICC profile, the color space of the second print job is adjusted. The color value of each pixel in each print job is calibrated and mapped;

[0026] S15, Standardization Conversion The process for obtaining pixel data for a print job is as follows:

[0027] According to the printer's pixel data input format, for the first... The pixel data of the first print job is formatted, and then the first print job is formatted. The pixel color range of each print job is mapped to the grayscale range of the printer head;

[0028] S16. Based on S11-S15, combine to generate the first... The internal bitmap corresponding to each print job is stored in the workstation's memory buffer.

[0029] Preferably, the dynamic load balancing process is as follows:

[0030] S21. Based on the configuration dataset, record the printer's preset grid size as... And grid division of the first Each print job's internal bitmap generates the corresponding number of horizontal grids. and vertical grid number ;

[0031] S22, the first Each grid coordinate of the bitmap inside a print job is: , , Using image processing software and the Sobel operator, the image entropy of the grid is obtained. and average color gradient Then calculate the first Grid complexity weighting factor for each print job ;

[0032] S23. Create according to the number of piezoelectric nozzles. An empty nozzle data block ,in, Indicates the nozzle number, Calculate the data block for each nozzle. Current total complexity weights ;

[0033] S24. Following the grid order, assign each grid to the nozzle data block with the smallest sum of current total complexity weights. ;

[0034] S25. Based on S21-S24, compile the data blocks for each nozzle. Includes a list of grids, the corresponding bitmap pixel regions, and the total complexity weights. , establish the first A block index table for each print job.

[0035] Preferably, the data packaging and timestamp embedding process is as follows:

[0036] S31, based on the first A block index table for each print job is used to extract data blocks for each printhead from the workstation. All corresponding grid pixel data are concatenated into a continuous data stream according to the grid arrangement order;

[0037] S32. A lossless compression algorithm is used to compress the continuous color region, and a compression identifier and original length information are added to the header of the compressed data stream to form a data packet;

[0038] S33. Based on the configured dataset, record the nozzle movement speed as... The line spacing of the inkjet printing is denoted as Then calculate the time interval for each line of printing. ;

[0039] S34, according to the nozzle data block The splicing order, combining each nozzle data block The starting line number of the inkjet print is recorded as Then calculate the nozzle data block. Reference time corresponding to the first line of printing ;

[0040] S35. Record the absolute time reference after calibration between the workstation and the FPGA processing board as... Record the current latency of the workstation as Then calculate the expected printing timestamp. ;

[0041] S36. Based on S31-S35, the expected printing timestamp The data packet header is embedded and then transmitted to the FPGA processing board via the workstation.

[0042] Preferably, the FPGA processing board data caching and synchronization process is as follows:

[0043] S41, Analysis of the first The data packet for each print job is recorded, and the piezoelectric nozzle channel corresponding to the data packet is denoted as... The FPGA processing board is equipped with block memory to build an independent virtual ring buffer for each piezoelectric nozzle channel, according to the... Print head data block for each print job The data packets are written to the corresponding circular buffer according to the splicing order, and the expected printing timestamp is recorded. ;

[0044] The S42 FPGA processing board is equipped with a global hardware timer that generates a continuously increasing absolute time base based on a 100MHz high-frequency clock. ;

[0045] S43, the FPGA processing board is equipped with a central synchronization controller, which is used to execute the following loop process:

[0046] I. Simultaneously check all The head-of-line data packet of each channel's circular buffer;

[0047] II. Read the expected printing timestamp of each queue head data packet. , ;

[0048] III. Calculate the current absolute time base across all channels. With their respective expected printing timestamps The absolute difference, with a focus on tracking the largest absolute difference;

[0049] IV. Set a fixed-duration synchronization tolerance window This is used to determine whether the global synchronization triggering conditions are met. The global synchronization triggering conditions are as follows:

[0050]

[0051] If the global synchronization trigger condition is not currently met, repeat steps I-IV until the global synchronization trigger condition is met. If the global synchronization trigger condition is currently met, a global synchronization pulse is generated. At the rising edge of the global synchronization pulse, all circular buffers simultaneously pop the head data packet.

[0052] Preferably, the waveform query process is as follows:

[0053] S51, the nozzle waveform generation module stores several basic drive waveforms, each driven waveform consisting of a set of standard parameter vectors. Define, where, Indicates peak voltage. Indicates the rise time. Indicates the time of the falling edge. Indicates pulse width;

[0054] The S52 FPGA processing board stores a unique calibration coefficient vector for each piezoelectric nozzle. , ,in, This indicates the voltage calibration coefficient of the piezoelectric nozzle. This represents the rise time calibration factor of the piezoelectric nozzle. This represents the fall-edge time calibration factor for the piezoelectric nozzle. This represents the pulse width calibration coefficient of the piezoelectric nozzle.

[0055] Preferably, the personalized driving waveform generation process is as follows:

[0056] S61. Based on the data packets synchronously distributed by the FPGA processing board, extract the switching information of the piezoelectric printhead. The switching information includes inkjet instructions and non-inkjet instructions.

[0057] S62, the printhead waveform generation module generates personalized drive waveforms for piezoelectric printhead switches with inkjet commands through vector element-wise multiplication. .

[0058] Preferably, the analog voltage signal is amplified by the driving circuit and applied to the piezoelectric crystal corresponding to the piezoelectric printhead. This generates a pressure pulse through the inverse piezoelectric effect, propelling the ink droplet out of the piezoelectric printhead until the first... One print job.

[0059] Compared with existing technologies, the present invention provides a multi-printer synchronous printing system based on a distributed architecture, which has the following advantages:

[0060] 1. This invention separates non-real-time large-scale computing from real-time high-precision control through a distributed architecture of workstations, FPGA processing boards, and printhead modules. It fully leverages the respective performance strengths of computers and FPGAs. When increasing the number of printheads, only corresponding computing tasks need to be added to the workstation, and logic units and I / O interfaces need to be expanded on the FPGA. There is no need to modify the core system architecture and synchronization principle, which facilitates product series upgrades and customization. The workstation parses the image data of each print job, completes dynamic load segmentation, establishes a corresponding segmentation index table, and then packages the data and embeds timestamps. This ensures that the FPGA processing board has sufficient time to complete data decompression and caching, and also ensures that the FPGA processing board accurately starts the printing operation at the specified time. The distributed parsing has strong scalability.

[0061] 2. This invention constructs a global synchronization mechanism through an FPGA processing board, improving the synchronization accuracy from milliseconds of software scheduling to nanoseconds of hardware clocks. This ensures precise alignment of data from different channels in the time dimension, rather than traditional data-ready alignment, avoiding printing defects such as misalignment and stripes caused by inaccurate synchronization. The FPGA processing board performs waveform queries on data packets to generate personalized drive waveforms adapted to each piezoelectric printhead, compensating for printhead physical differences at the hardware level. This enables high-speed preprocessing and precise synchronous transmission of massive printing data, resulting in excellent multi-printhead collaborative performance. Attached Figure Description

[0062] Figure 1 This is a system flowchart of the present invention. Detailed Implementation

[0063] The technical solutions of the embodiments of the present invention will be clearly and completely described below with reference to the accompanying drawings. Obviously, the described embodiments are only some embodiments of the present invention, and not all embodiments. Based on the embodiments of the present invention, all other embodiments obtained by those skilled in the art without creative effort are within the scope of protection of the present invention.

[0064] Example

[0065] Please see Figure 1 Table 1 shows the experimental data for verifying the integrity of the print job; Table 2 shows the experimental data for the weighting factor of the grid complexity of the print job; Table 3 shows the experimental data for the expected printing timestamp of the print job; and Table 4 shows the experimental data for the personalized driving waveform of the print job. This invention provides a multi-printer synchronous printing system based on a distributed architecture, including a workstation, an FPGA processing board, and a print head module.

[0066] Workstations are typically high-performance industrial computers running Windows or Linux operating systems, equipped with multi-core CPUs to perform complex image data processing tasks, and have a high-speed PCIe x16 external bus interface. Workstations acquire image data and printer configuration data for all print jobs by connecting to a big data platform, and classify them into job datasets and configuration datasets.

[0067] The job dataset includes the image type, byte sequence, expected number of bytes, transmission checksum, actual number of bytes, actual checksum, print width, print height, print range, original resolution, original pixel density, and original color space for each print job. The image types include PDF, vector graphics, and bitmap.

[0068] The configuration dataset includes the printer's physical resolution, standard color space, ICC file, pixel data input format, printhead grayscale range, preset grid size, printhead movement speed, print line spacing, absolute time base after workstation and FPGA processing board calibration, and workstation latency.

[0069] The workstation parses the image data of each print job based on the job dataset and configuration dataset, creates a corresponding block index table after dynamic load slicing, and then packages the data and embeds timestamps.

[0070] The process for parsing image data in a print job is as follows:

[0071] S11. Based on the job dataset, obtain the first... Image data for the first print job, and for the first The integrity of the image data for each print job is verified, and the verification process is as follows:

[0072] The workstation stores PDF standard headers, vector graphics standard headers, and bitmap standard headers. (The last part, "reading the first," appears to be an error and is left untranslated.) The first 16 bytes of the print job byte sequence are then compared with the standard headers of PDF, vector graphics, and bitmap graphics. If the first 16 bytes are... The first 16 bytes of the print job byte sequence match the standard header of any image type, indicating that the first print job... If the header of the first print job is correct, continue the verification process. If the first 16 bytes of the print job's byte sequence do not match the standard header for all image types, then it indicates that the first print job... If the header of a print job is invalid and the verification fails, the administrator should be notified immediately and the parsing should be terminated.

[0073] If the first The expected byte count of a print job matches the actual byte count, and the transfer check value matches the actual check value, indicating that the nd print job is transferred completely, and the verification process continues. If the expected byte count of the rd print job does not match the actual byte count, or the transfer check value does not match the actual check value, it indicates that the th print job is not transferred completely, the file is damaged, the verification fails, and the administrator should be notified in time and the parsing should be terminated;

[0074] If the th print job does not contain password protection, dynamic interactive elements, unembedded resources, and unembedded fonts, it indicates that the th print job has no unsupported elements, the verification is successful, and S12 continues. If the th print job contains password protection, dynamic interactive elements, unembedded resources, or unembedded fonts, it indicates that the th print job has unsupported elements, the verification fails, and the administrator should be notified in time and the parsing should be terminated;

[0075] In the actual application process, the file integrity verification includes three core links: First, check the legality of the file header format. Among them, PDF fixedly reads the first 5 bytes, there is no unified reading length for vector graphics, and 3, 4, 5, or . 8 bytes need to be read according to the specific format. SVG needs to be read as text until the <svg tag, and bitmaps need to be read according to the format for 2, 3, 4, 6, or 8 bytes. The shortest of BMP is 2 bytes, and the longest of PNG is 8 bytes. Usually, reading the first 16 bytes can cover the file header lengths of most formats, avoiding misjudgment due to insufficient reading; Second, verify whether the file size matches the transfer check value; Third, detect whether there are damaged or unsupported special elements. Specifically, PDF does not support encrypted files, dynamic interactive elements, and unembedded resources. Vector graphics such as AI / CDR do not support unembedded fonts, high-version special effects, and external dependent resources. Bitmaps such as BMP / JPG / PNG do not support tampered formats and non-standard extension blocks;

[0076] The following are the experimental data of the print job integrity verification, as shown in Table 1: Table 1: Experimental data of the print job integrity verification type PDF Vector graphics Bitmap Expected number of bytes (MB) 2 1.5 3 Actual number of bytes (MB) 2 1.5 2 Does the transmitted checksum match the actual checksum? yes yes yes Are there any elements that are not supported? no yes no Verification results success fail fail

[0077] In the experimental data of the print job integrity verification in Table 1, images A, B, and C are selected as the experimental targets, and the first 16 bytes of images A, B, and C are compared with the PDF standard header, vector graphic standard header, and bitmap standard header to determine the corresponding image types. After judgment, only image A can further continue with S12;

[0078] S12. According to the job dataset, the The print width of each print job is denoted as... , will the The print height of each print job is denoted as... Based on the configuration dataset, the printer's physical resolution is recorded as... Then calculate the printer's pixel density. Target width in pixels of the internal bitmap and target height in pixels Its expression is as follows:

[0079] ;

[0080] In the formula, This represents a conversion constant that converts the number of pixels per inch of a printer to the number of pixels per millimeter.

[0081] ;

[0082] ;

[0083] S13. Parse the image according to its type. The process for each print job is as follows:

[0084] If the first The image type of each print job is PDF. A PDF rendering engine (such as Poppler or MuPDF) is used to load the PDF file and parse the page structure, extract text, vector graphics and embedded images, render the target page according to the printing range, convert vector paths and text outlines into pixel information, and preserve the original color data.

[0085] If the first The image type for each print job is a vector graphic. Image processing software is used to parse the path (Bezier curve, line segment), fill color, and stroke attributes. Then, a vector rasterization algorithm is used to convert the vector graphic into the target width in pixels. and target height in pixels Convert to bitmap to ensure no jagged edges or distortion after scaling;

[0086] If the first The image type for each print job is a bitmap. Image processing software is used to analyze the original resolution, original pixel density, and original color space. If the original resolution of the bitmap differs from the printer's physical resolution... If the matching is inconsistent, a bilinear interpolation algorithm is used for scaling until the original pixel density matches the printer's pixel density. Matching is consistent;

[0087] S14, Standardization Conversion The color space for a print job is determined as follows:

[0088] Use image processing software to... The original color space of each print job is converted to the printer's standard color space, such as the device's native CMYK or a custom RGB, and then adjusted according to the printer's ICC profile. Each pixel's color value in each print job is calibrated and mapped. Through standardized color conversion rules, it is accurately mapped to the color space that the printer can reproduce, ultimately solving the color deviation problem of "what you see on the screen ≠ what you get in print" and ensuring the accuracy and consistency of printed colors.

[0089] S15, Standardization Conversion The process for obtaining pixel data for a print job is as follows:

[0090] According to the printer's pixel data input format, for the first... The pixel data of the first print job is formatted, and then the first print job is formatted. The pixel color range of each print job is mapped to the grayscale range of the printer head;

[0091] Specifically, the printer's pixel data input format, such as 32-bit RGBA, 24-bit RGB, 48-bit high-precision RGB, etc., is used to represent transparency (the default value is set to the maximum value when there is no transparency requirement). The pixel color range of the print job is mapped to the grayscale level range of the printer's printhead, such as 0-255 corresponding to the printhead ink volume from 0 to the maximum ink volume.

[0092] S16. Based on S11-S15, combine to generate the first... The internal bitmap corresponding to each print job is stored in the workstation;

[0093] Specifically, the parsing process converts external heterogeneous print jobs into a unified and standardized internal bitmap format, ensuring that the resolution is strictly consistent with the physical print resolution, and providing a unified data foundation for subsequent segmentation and transmission;

[0094] The dynamic load balancing process is as follows:

[0095] S21. Based on the configuration dataset, record the printer's preset grid size as... And grid division of the first Each print job's internal bitmap generates the corresponding number of horizontal grids. and vertical grid number Its expression is as follows:

[0096] ;

[0097] ;

[0098] Specifically, when dividing the pixel size of the internal bitmap into grids, if the last row or last column is smaller than the preset grid size... The grid automatically expands to the preset grid size. The default edge padding does not affect the actual printed content;

[0099] S22, the first Each grid coordinate of the bitmap inside a print job is: , , Using image processing software and the Sobel operator, the image entropy of the grid is obtained. and average color gradient Then calculate the first Grid complexity weighting factor for each print job Its expression is as follows:

[0100] ;

[0101] In the formula, and All are constants, and Weighting coefficient and It is flexibly configurable to adjust the importance of entropy and color gradient in load assessment;

[0102] Specifically, image processing software is used to statistically analyze the color value distribution frequency of all pixels within each grid, such as the frequency of occurrence of RGB color combinations. Then, image entropy is calculated based on the information theory entropy formula. The higher the entropy value, the more complex the color distribution of the grid, the greater the amount of information, and the greater the data processing volume. Using the Sobel operator, the color change rate of each pixel in the grid coordinate system is calculated. The square root of the sum of the squares of the horizontal and vertical color change rates of all pixels within the grid is taken to obtain the color gradient of each pixel. Finally, the average color gradient of all pixels is taken as the average color gradient of the grid. The larger the gradient value, the more dramatic the color transition in that area, and the lower the data compression and transmission efficiency.

[0103] The following is the experimental data for the printing job grid complexity weighting factor, as shown in Table 2: Table 2: Experimental Data for Printing Job Grid Complexity Weighting Factor

[0104] Image entropy 3.8 2.1 Average color gradient 2.2 4.5 Complexity weighting factor 3.16 3.06

[0105] Table 2 shows the experimental data for the weighting factors of the grid complexity in the printing job. After dividing image A into grids, grid 1 and grid 2 were selected as the experimental targets, and their weights were... , Based on the analysis, the complexity of grid 1 is higher than that of grid 2.

[0106] S23. Create according to the number of piezoelectric nozzles. An empty nozzle data block ,in, Indicates the nozzle number, Calculate the data block for each nozzle. Current total complexity weights Its expression is as follows:

[0107] ;

[0108] In the formula, Indicates being assigned to the first A single grid of nozzle data blocks;

[0109] S24. Following the grid order, assign each grid to the nozzle data block with the smallest sum of current total complexity weights. To minimize the standard deviation of total complexity With the goal of achieving initial load balancing and minimizing the standard deviation of total complexity, we can achieve this. The calculation formula is as follows:

[0110] ;

[0111] In the formula, Indicates average complexity;

[0112] Specifically, the goal of dynamic tiling is to find a way to assign adjacent grid combinations to... The method of using piezoelectric nozzles aims to balance the total complexity allocated to each nozzle as much as possible. This combinatorial optimization problem is solved using a greedy algorithm combined with dynamic programming. It requires traversing all nozzle data blocks, attempting to swap adjacent grids within each data block, and calculating the standard deviation after the swap. If the value is less than the standard deviation before the exchange If the result of this exchange is not found, the iteration is repeated in this manner until the standard deviation is reached. Convergence is determined by the standard deviation in consecutive iterations. If the change is less than the preset threshold, such as 0.01, it can effectively prevent a single nozzle from becoming a system bottleneck due to being assigned to too many high detail areas, thus achieving load balancing.

[0113] S25. Based on S21-S24, compile the data blocks for each nozzle. Includes a list of grids, the corresponding bitmap pixel regions, and the total complexity weights. , establish the first A block index table for each print job facilitates quick location during subsequent data packaging;

[0114] The data packaging and timestamp embedding process is as follows:

[0115] S31, based on the first A block index table for each print job is used to extract data blocks for each printhead from the workstation. All corresponding grid pixel data are concatenated into a continuous data stream according to the grid arrangement order;

[0116] S32. A lossless compression algorithm is used to compress the continuous color region, and a compression identifier and original length information are added to the header of the compressed data stream. The data stream is then combined into a data packet. The compression process reduces the amount of data transmitted and also facilitates decompression on the FPGA side.

[0117] S33. Based on the configured dataset, record the nozzle movement speed as... The line spacing of the inkjet printing is denoted as Then calculate the time interval for each line of printing. Its expression is as follows:

[0118] ;

[0119] S34, according to the nozzle data block The splicing order, combining each nozzle data block The starting line number of the inkjet print is recorded as Then calculate the nozzle data block. Reference time corresponding to the first line of printing Its expression is as follows:

[0120] ;

[0121] S35. Record the absolute time reference after calibration between the workstation and the FPGA processing board as... Record the current latency of the workstation as Then calculate the expected printing timestamp. Its expression is as follows:

[0122] ;

[0123] S36. Based on S31-S35, the expected printing timestamp The data packet header is embedded, and then the optimized data packet for each print job is transmitted to the FPGA processing board via the workstation;

[0124] Specifically, the core purpose of the data packaging and timestamp embedding process is to convert the segmented grid data into a data stream recognizable by the FPGA processing board and embed precise timestamps to ensure the timing synchronization of data transmission and printing operations. After the workstation and FPGA processing board complete calibration, they use the number of microseconds counted from the moment of power-on as the absolute time reference to ensure that the time synchronization error between the two parties does not exceed 1 microsecond. The embedded expected printing timestamp is then used. This ensures that the FPGA processing board has sufficient time to decompress and cache the data, and also ensures that it can accurately start the printing operation at the specified time.

[0125] The following are the experimental data for the expected printing timestamps of print jobs, as shown in Table 3: Table 3: Experimental Data for Expected Print Timestamps of Print Jobs

[0126] Printing line spacing (mm) 2 Time interval for each line of printing (ms) 40 Printing start line number (row) 10 Reference time (ms) corresponding to the first line of printing. 360 Absolute time base (ms) after workstation and FPGA processing board calibration 1000 Current latency of the workstation (ms) 12 Expected printing timestamp (ms) 1372

[0127] In Table 3, the experimental data of expected printing timestamps for printing jobs are selected. Printhead data block a is selected as the experimental target. Printhead data block a contains grid 1 and grid 2.

[0128] The FPGA processing board has sufficient programmable logic resources, block memory (BRAM) and high-speed I / O pins. After receiving a precise data stream with timestamps, it performs data buffering and synchronization processing, determines whether the global synchronization trigger condition is met, and outputs the corresponding global synchronization pulse.

[0129] The FPGA processing board data caching and synchronization process is as follows:

[0130] S41, Analysis of the first The data packet for each print job is recorded, and the piezoelectric nozzle channel corresponding to the data packet is denoted as... The FPGA processing board is equipped with block RAM (BRAM) to build an independent virtual circular buffer (FIFO) for each piezoelectric nozzle channel, according to the... Print head data block for each print job The data packets are written to the corresponding circular buffer according to the splicing order, and the expected printing timestamp is recorded. ;

[0131] The S42 FPGA processing board is equipped with a global hardware timer (Sync Timer) that generates a continuously increasing absolute time base based on a 100MHz high-frequency clock. The clock period is set to 10ns, and the time value is counted from the moment of power-on and presented in microseconds, with a time accuracy of up to 10ns.

[0132] Specifically, the FPGA processing board sends the absolute time base to the workstation via the PCIe interface. The workstation will use an absolute time base. Compare with its own time base and calculate the synchronization error. If the error exceeds 1 microsecond, send a calibration command to the FPGA processing board to fine-tune the timer count offset and ensure the consistency of the time bases of both parties.

[0133] S43, the FPGA processing board is equipped with a central synchronization controller (Sync Controller) to execute the following loop process:

[0134] I. Simultaneously check all The head-of-line data packet of each channel's circular buffer;

[0135] II. Read the expected printing timestamp of each queue head data packet. , ;

[0136] III. Calculate the current absolute time base across all channels. With their respective expected printing timestamps The absolute difference, with a focus on tracking the largest absolute difference;

[0137] IV. Set a fixed-duration synchronization tolerance window This is used to determine whether the global synchronization triggering conditions are met. The global synchronization triggering conditions are as follows:

[0138]

[0139] Specifically, synchronization tolerance window This corresponds to 10 clock cycles, or 100 nanoseconds. This parameter can be adjusted according to the actual application scenario. After each synchronization condition judgment is completed, the judgment result (satisfied / unsatisfied) and the current absolute time base will be recorded. Current absolute time base for each channel With their respective expected printing timestamps The absolute difference, the maximum absolute difference, and the synchronization tolerance window The data is stored in the log buffer of the FPGA processing board for subsequent troubleshooting and synchronization accuracy optimization. The hardware parallel processing capability of the FPGA processing board enables efficient caching, accurate time synchronization and parallel distribution of multi-head channel data. Nanosecond-level timing control ensures that all printheads print synchronously, guaranteeing the splicing accuracy and consistency of the printed image.

[0140] If the global synchronization trigger condition is not met, repeat steps I-IV until the global synchronization trigger condition is met. If the global synchronization trigger condition is met, it means that the next batch of data for all piezoelectric printhead channels is ready and the optimal time for synchronous printing has arrived. Then, a global synchronization pulse is generated. At the rising edge of the global synchronization pulse, all ring buffers simultaneously pop the head data packet and send it in parallel to the printhead waveform generation module. This mechanism ensures the precise alignment of data from different channels in the time dimension, rather than the traditional data readiness alignment, thereby achieving nanosecond-level synchronization accuracy.

[0141] The FPGA processing board is equipped with a nozzle waveform generation module and a digital-to-analog converter. The nozzle waveform generation module performs waveform queries on the data packet, generates personalized drive waveforms adapted to each piezoelectric nozzle, and transmits them to the digital-to-analog converter.

[0142] The waveform query process is as follows:

[0143] S51. The printhead waveform generation module stores several basic drive waveforms, such as sine waves and trapezoidal waves. High-precision printing uses sine waves, while high-speed printing uses trapezoidal waves. Each drive waveform consists of a set of standard parameter vectors. Define, where, Indicates peak voltage. Indicates the rise time. Indicates the time of the falling edge. Indicates pulse width;

[0144] The S52 FPGA processing board stores a unique calibration coefficient vector for each piezoelectric nozzle. , ,in, This indicates the voltage calibration coefficient of the piezoelectric nozzle. This represents the rise time calibration factor of the piezoelectric nozzle. This represents the fall-edge time calibration factor for the piezoelectric nozzle. This represents the pulse width calibration coefficient of the piezoelectric nozzle;

[0145] Specifically, the calibration data comes from the factory calibration records of the piezoelectric printheads and is used to compensate for the differences in physical characteristics between printheads, including deviations in nozzle efficiency, ink electrical characteristics, etc.

[0146] The personalized drive waveform generation process is as follows:

[0147] S61. Based on the data packets synchronously distributed by the FPGA processing board, extract the switching information of the piezoelectric printhead. The switching information includes inkjet instructions and non-inkjet instructions.

[0148] S62, the printhead waveform generation module generates personalized drive waveforms for piezoelectric printhead switches with inkjet commands through vector element-wise multiplication. Its expression is as follows:

[0149] ;

[0150] In the formula, Represents element-wise multiplication of vectors;

[0151] Specifically, even with individual differences in printheads, fine-tuning of hardware parameters can ensure that the droplet shape and velocity produced by each printhead are highly consistent, and that the personalized drive waveform of the piezoelectric printhead switch executes the inkjet command. ,in, , , , For nozzles that do not require inkjet printing, a zero-voltage waveform is generated, which shuts off the drive signal to prevent accidental inkjet printing.

[0152] The following are the experimental data of the personalized drive waveform for print jobs, as shown in Table 4: Table 4: Experimental Data of Personalized Drive Waveform for Print Jobs

[0153] Rise time (μs) in the standard parameter vector of a sine wave 2 Fall time (μs) in the standard parameter vector of a sine wave 1.5 Pulse width (μs) in the standard parameter vector of a sine wave 8 Voltage calibration coefficient in the nozzle calibration coefficient vector 1.05 Rise time calibration coefficient in nozzle calibration coefficient vector 0.98 Falling edge time calibration coefficient in nozzle calibration coefficient vector 1.02 Pulse width calibration coefficient in nozzle calibration coefficient vector 0.95 Peak voltage (V) corresponding to the personalized drive waveform of the nozzle. 31.5 Rise time (μs) corresponding to the personalized drive waveform of the nozzle. 1.96 Falling edge time (μs) corresponding to the personalized drive waveform of the nozzle. 1.53 The pulse width (μs) corresponding to the personalized drive waveform of the nozzle. 7.6

[0154] In Table 4, the printing accuracy of image A is high, and printhead one is selected as the experimental target.

[0155] The FPGA processing board integrates drive circuits corresponding to the number of printheads, and the printhead module includes... Each piezoelectric nozzle is connected to the drive circuit on the FPGA board via a flexible cable.

[0156] The digital-to-analog converter (DAC) generates a corresponding analog voltage signal based on a personalized drive waveform, with a conversion accuracy ≥12 bits and a sampling rate ≥1 GSps. This ensures that the analog signal can accurately reproduce the details of the digital waveform. The analog voltage signal is amplified by the drive circuit and applied to the piezoelectric crystal corresponding to the piezoelectric printhead. Through the inverse piezoelectric effect, a pressure pulse is generated, which pushes the ink droplet out of the piezoelectric printhead until the first droplet is ejected. One print job.

[0157] In this embodiment, the collaborative processing architecture consisting of a general-purpose processor (WorkStation) and dedicated hardware (FPGA processing board), along with its supporting data allocation, synchronization, and control methods, parses each print job into a unified internal bitmap format. The distributed processing architecture and synchronization mechanism overcome the shortcomings of existing multi-printhead collaborative technologies, achieving high-speed preprocessing, precise synchronous transmission, and efficient collaborative printing of massive print data.

[0158] The threshold is set to facilitate comparison. The size of the threshold depends on the amount of sample data and the number of bases set by those skilled in the art for each set of sample data; as long as it does not affect the ratio between the parameter and the quantized value, it is acceptable.

[0159] The above formulas are all derived from software simulation using a large amount of data and are selected to be close to the actual values. The coefficients in the formulas are set by those skilled in the art according to the actual situation. The above description is only a preferred embodiment of the present invention, but the protection scope of the present invention is not limited thereto. Any equivalent substitutions or changes made by those skilled in the art within the technical scope disclosed in the present invention, based on the technical solution and inventive concept of the present invention, should be covered within the protection scope of the present invention.

Claims

1. A multi-printer synchronous printing system based on a distributed architecture, characterized in that: Includes workstations, FPGA processing boards, and printhead modules; The workstation obtains image data and printer configuration data of all print jobs by connecting to the big data platform, and classifies them into job datasets and configuration datasets. The workstation parses the image data of each print job according to the job dataset and configuration dataset, establishes a corresponding block index table after completing dynamic load slicing, and then packages the data and embeds timestamps. The dynamic load balancing process is as follows: S21. Based on the configuration dataset, record the printer's preset grid size as... And grid division of the first Each print job's internal bitmap generates the corresponding number of horizontal grids. and vertical grid number ; S22, the first Each grid coordinate of the bitmap inside a print job is: , , Using image processing software and the Sobel operator, the image entropy of the grid is obtained. and average color gradient Then calculate the first Grid complexity weighting factor for each print job ; S23. Create according to the number of piezoelectric nozzles. An empty nozzle data block ,in, Indicates the nozzle number, Calculate the data block for each nozzle. Current total complexity weights ; S24. Following the grid order, assign each grid to the nozzle data block with the smallest sum of current total complexity weights. ; S25. Based on S21-S24, compile the data blocks for each nozzle. Includes a list of grids, the corresponding bitmap pixel regions, and the total complexity weights. , establish the first A block index table for each print job; The data packaging and timestamp embedding process is as follows: S31, based on the first A block index table for each print job is used to extract data blocks for each printhead from the workstation. All corresponding grid pixel data are concatenated into a continuous data stream according to the grid arrangement order; S32. A lossless compression algorithm is used to compress the continuous color region, and a compression identifier and original length information are added to the header of the compressed data stream to form a data packet; S33. Based on the configured dataset, record the nozzle movement speed as... The line spacing of the inkjet printing is denoted as Then calculate the time interval for each line of printing. ; S34, according to the nozzle data block The splicing order, combining each nozzle data block The starting line number of the inkjet print is recorded as Then calculate the nozzle data block. Reference time corresponding to the first line of printing ; S35. Record the absolute time reference after calibration between the workstation and the FPGA processing board as... Record the current latency of the workstation as Then calculate the expected printing timestamp. ; S36. Based on S31-S35, the expected printing timestamp The data packet header is embedded and then transmitted to the FPGA processing board via the workstation; The workstation is equipped with a PCIe interface for electrically connecting to the FPGA processing board. The workstation transmits the data packets corresponding to each print job to the FPGA processing board through the PCIe interface. The FPGA processing board performs data caching and synchronization processing based on data packets, determines whether the global synchronization trigger condition is met, and outputs the corresponding global synchronization pulse. The FPGA processing board data caching and synchronization process is as follows: S41, Analysis of the first The data packet for each print job is recorded, and the piezoelectric nozzle channel corresponding to the data packet is denoted as... The FPGA processing board is equipped with block memory to build an independent virtual ring buffer for each piezoelectric nozzle channel, according to the... Print head data block for each print job The data packets are written to the corresponding circular buffer according to the splicing order, and the expected printing timestamp is recorded. ; The S42 FPGA processing board is equipped with a global hardware timer that generates a continuously increasing absolute time base based on a 100MHz high-frequency clock. ; S43, the FPGA processing board is equipped with a central synchronization controller, which is used to execute the following loop process: I. Simultaneously check all The head-of-line data packet of each channel's circular buffer; II. Read the expected printing timestamp of each queue head data packet. , ; III. Calculate the current absolute time base across all channels. With their respective expected printing timestamps The absolute difference, with a focus on tracking the largest absolute difference; IV. Set a fixed-duration synchronization tolerance window This is used to determine whether the global synchronization triggering conditions are met. The global synchronization triggering conditions are as follows: ; If the global synchronization trigger condition is not met, repeat steps I-IV until the global synchronization trigger condition is met. If the global synchronization trigger condition is met, a global synchronization pulse is generated. At the rising edge of the global synchronization pulse, all circular buffers simultaneously pop the head data packet. The FPGA processing board is equipped with a printhead waveform generation module and a digital-to-analog converter. The printhead waveform generation module performs waveform query on the data packet, generates a personalized drive waveform adapted to each piezoelectric printhead, and transmits it to the digital-to-analog converter. The digital-to-analog converter outputs the corresponding analog voltage signal based on the personalized drive waveform to complete the printing job. The FPGA processing board integrates several drive circuits. The printhead module includes Each piezoelectric nozzle is connected to the drive circuit on the FPGA board via a flexible cable.

2. The multi-printer synchronous printing system based on a distributed architecture according to claim 1, characterized in that: The job dataset includes the image type, byte sequence, expected number of bytes, transmission checksum, actual number of bytes, actual checksum, print width, print height, print range, original resolution, original pixel density, and original color space for each print job. The image types include PDF, vector graphics, and bitmap.

3. The multi-printer synchronous printing system based on a distributed architecture according to claim 2, characterized in that: The configuration dataset includes the printer's physical resolution, standard color space, ICC file, pixel data input format, printhead grayscale range, preset grid size, printhead movement speed, printing line spacing, absolute time base after calibration of the workstation and FPGA processing board, and workstation latency.

4. The multi-printer synchronous printing system based on a distributed architecture according to claim 3, characterized in that: The image data parsing process for the print job is as follows: S11. Based on the job dataset, obtain the first... Image data for the first print job, and for the first The integrity of the image data for each print job is verified, and the verification process is as follows: The workstation stores PDF standard headers, vector graphics standard headers, and bitmap standard headers. (The last part, "reading the first," appears to be an error and is left untranslated.) The first 16 bytes of the print job byte sequence are then compared with the standard headers of PDF, vector graphics, and bitmap graphics. If the first 16 bytes are... The first 16 bytes of the print job byte sequence match the standard header of any image type, indicating that the first print job... If the header of the first print job is correct, continue the verification process. If the first 16 bytes of the print job's byte sequence do not match the standard header for all image types, then it indicates that the first print job... If the header of a print job is invalid and the verification fails, the administrator should be notified immediately and the parsing should be terminated. If the first The expected number of bytes for the first print job matches the actual number of bytes, and the transmission checksum matches the actual checksum, indicating that the first print job... If the print job is successfully transmitted, continue the verification process. If the expected number of bytes in a print job does not match the actual number of bytes, or if the transmitted checksum does not match the actual checksum, it indicates that the first print job is not working. If a print job is not transmitted completely, the file is corrupted, or the verification fails, the administrator should be notified immediately and the parsing should be terminated. If the first The first print job does not contain password protection, dynamic interactive elements, unembedded resources, or unembedded fonts, indicating that the first print job does not contain password protection, dynamic interactive elements, unembedded resources, or unembedded fonts. The print job does not contain any unsupported elements, so the validation is successful. Continue to S12. If the first print job does not contain any unsupported elements, the validation is successful. The first print job contains password protection, dynamic interactive elements, and no embedded resources or fonts, indicating that the first print job is password protected. If a print job contains an unsupported element and the validation fails, the administrator should be notified immediately and the parsing should be terminated. S12. Based on the job dataset, the first... The print width of each print job is denoted as... , will the The print height of each print job is denoted as... Based on the configuration dataset, the printer's physical resolution is recorded as... Then calculate the printer's pixel density. Target width in pixels of the internal bitmap and target height in pixels ; S13. Parse the image according to its type. The process for each print job is as follows: If the first The image type of each print job is PDF. The PDF rendering engine loads the PDF file and parses the page structure, extracts text, vector graphics and embedded images, renders the target page according to the printing range, and converts vector paths and text outlines into pixel information while preserving the original color data. If the first The image type for each print job is a vector graphic. Image processing software is used to parse the path, fill color, and stroke attributes, and then a vector rasterization algorithm is used to convert the vector graphic into the target width in pixels. and target height in pixels Convert to bitmap; If the first The image type for each print job is a bitmap. Image processing software is used to analyze the original resolution, original pixel density, and original color space. If the original resolution of the bitmap differs from the printer's physical resolution... If the matching is inconsistent, a bilinear interpolation algorithm is used for scaling until the original pixel density matches the printer's pixel density. Matching is consistent; S14, Standardization Conversion The color space for a print job is determined as follows: Use image processing software to... The original color space of the first print job is converted to the printer's standard color space, and then, according to the printer's ICC profile, the color space of the second print job is adjusted. The color value of each pixel in each print job is calibrated and mapped; S15, Standardization Conversion The process for obtaining pixel data for a print job is as follows: According to the printer's pixel data input format, for the first... The pixel data of the first print job is formatted, and then the first print job is formatted. The pixel color range of each print job is mapped to the grayscale range of the printer head; S16. Based on S11-S15, combine to generate the first... The internal bitmap corresponding to each print job is stored on the workstation.

5. The multi-printer synchronous printing system based on a distributed architecture according to claim 4, characterized in that: The waveform query process is as follows: S51, the nozzle waveform generation module stores several basic drive waveforms, each driven waveform consisting of a set of standard parameter vectors. Define, where, Indicates peak voltage. Indicates the rise time. Indicates the time of the falling edge. Indicates pulse width; The S52 FPGA processing board stores a unique calibration coefficient vector for each piezoelectric nozzle. , ,in, This indicates the voltage calibration coefficient of the piezoelectric nozzle. This represents the rise time calibration factor of the piezoelectric nozzle. This represents the fall-edge time calibration factor for the piezoelectric nozzle. This represents the pulse width calibration coefficient of the piezoelectric nozzle.

6. The multi-printer synchronous printing system based on a distributed architecture according to claim 5, characterized in that: The personalized drive waveform generation process is as follows: S61. Based on the data packets synchronously distributed by the FPGA processing board, extract the switching information of the piezoelectric printhead. The switching information includes inkjet instructions and non-inkjet instructions. S62, the printhead waveform generation module generates personalized drive waveforms for piezoelectric printhead switches with inkjet commands through vector element-wise multiplication. .

7. The multi-printer synchronous printing system based on a distributed architecture according to claim 6, characterized in that: The analog voltage signal is amplified by the drive circuit and applied to the piezoelectric crystal corresponding to the piezoelectric printhead. This generates a pressure pulse through the inverse piezoelectric effect, propelling the ink droplet out of the printhead until the first... One print job.

Citation Information

Patent Citations

  • Spray head control plate and spray head driving voltage control method

    CN102241198A

  • Jet printing control method and system of array type precise jet printing device

    CN102862402A

  • Multi-nozzle collaborative printing method

    CN121614097A