A grab hoist weighing method

CN122403282BActive Publication Date: 2026-08-21NANTONG RAINBOW HEAVY MACHINERIES
View PDF 2 Cites 0 Cited by

Patent Information

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

AI Technical Summary

Technical Problem

[0005]本发明所要解决的技术问题是提供一种抓斗起重称重方法,解决现有技术中称重成本高、稳定性差、精度不足、操作繁琐等问题

Benefits of technology

1、全 Profinet PN 总线采集,零额外硬件:仅通过 PLC、支持变频器、开闭变频器组建 Profinet PN 通讯网络,无需配置模拟量模块、称重传感器及任何外加硬件,大幅降低硬件成本,简化布线流程,减少现场维护工作量,实现免维护设计;

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN122403282B_ABST
    Figure CN122403282B_ABST
Patent Text Reader

Abstract

The application discloses a grab hoist weighing method, completes calibration of 10 groups of different loads in four working conditions, forms a calibration comparison table of currents and weights in all working conditions, realizes real-time signal acquisition, steel wire rope self-weight compensation calculation, working condition identification and single-motor weight calculation, grab working condition self-adaptive weight synthesis, steel wire rope and zero point offset correction, one-key no-load zero point calibration, sliding window sorting filtering processing. The application adopts a pure bus architecture, has no additional hardware, is accurate in timing, has strong anti-interference capability, can adapt to nonlinear characteristics of machines and motors, is high in weighing precision, is convenient for on-site debugging, and is suitable for sensorless precise weighing scenes of port ship unloaders and various grab hoist equipment.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This invention relates to a lifting and weighing method, particularly a grab bucket lifting and weighing method, which belongs to the field of intelligent control technology for lifting equipment. Background Technology

[0002] The weighing function of traditional grab bucket cranes mainly relies on external hardware such as pin sensors, weighing modules, and pressure sensors, which has the problems of high hardware costs and complex installation and wiring. Moreover, in the field operation environment, such hardware is easily damaged by mechanical impact and media corrosion, resulting in a large amount of maintenance work and high maintenance costs.

[0003] Current motor current-based weight estimation technologies in the industry, while attempting to circumvent the shortcomings of external weighing hardware, still have many deficiencies, as follows:

[0004] 1. External analog modules are often used to collect motor current, which requires additional hardware equipment, increasing hardware costs, making wiring cumbersome, and susceptible to interference from the field, affecting the accuracy of the data acquisition. 2. The sampling process has no fixed cycle and relies on the PLC main cycle scanning timing, which leads to random fluctuations in the sampling timing, resulting in severe jitter in the weighing value and poor stability. 3. The filtering method is simple, only using moving average or first-order filtering, without setting a mechanism for sorting large data to remove extreme values. Factors such as current spikes during acceleration and deceleration of the frequency converter, mechanical vibration, and electromagnetic interference can easily cause serious fluctuations in the weighing value, making it impossible to guarantee weighing accuracy. 4. The support mechanism and the opening and closing mechanism are not distinguished, nor are the four-quadrant operation conditions of rising and falling. Only a single-point or two-point linear calibration method is used, which cannot adapt to the nonlinear characteristics of the motor and mechanical system, resulting in a large weighing error across the entire range. 5. It lacks a multi-segment free calibration mechanism, and the calibration points are fixed. During on-site commissioning, it cannot be flexibly adjusted according to the actual operating status of the equipment, resulting in poor adaptability. 6. The lifting height parameter was not introduced to dynamically compensate for the self-weight of the wire rope. When the lifting height changes, the self-weight of the wire rope will deviate, resulting in drift in the weighing results. 7. Without the automatic identification function for grab bucket working conditions, the weighing logic needs to be switched manually, which is cumbersome and prone to affecting weighing accuracy due to human error, and also reduces work efficiency. Summary of the Invention

[0005] The technical problem to be solved by the present invention is to provide a grab bucket lifting and weighing method to solve the problems of high weighing cost, poor stability, insufficient accuracy and cumbersome operation in the prior art.

[0006] To solve the above-mentioned technical problems, the technical solution adopted by the present invention is as follows: A grab bucket lifting and weighing method includes the following steps: S1. Complete the calibration of 10 different loads under four working conditions, obtain 4 sets of "load weight-current" calibration data pairs, and form a calibration comparison table of current and weight under all working conditions. S2, Real-time signal acquisition; S3. Calculation of steel wire rope self-weight compensation; S4. Operating condition identification and single motor weight calculation; S5, Grab bucket working condition adaptive weight synthesis; S6, Wire Rope and Zero Point Offset Correction; S7, One-click no-load zero-point calibration; S8, Sliding window sorting and filtering processing.

[0007] Further, step S1 specifically includes: S1.1 Before starting calibration, initialize the calibration state variables for all operating conditions: Set the calibration start flag position for each operating condition to the initial state: Cal_H_Start_Up / Cal_H_Start_Dn / Cal_C_Start_Up / Cal_C_Start_Dn are all set to FALSE; Among them, Cal_H_Start_Up supports the rising calibration start flag, Cal_H_Start_Dn supports the falling calibration start flag, Cal_C_Start_Up turns the rising start flag on and off, and Cal_C_Start_Dn turns the falling flag on and off. Clear the sampling counters for each operating condition: Set all of Cal_H_Cnt_Up / Cal_H_Cnt_Dn / Cal_C_Cnt_Up / Cal_C_Cnt_Dn to 0; Among them, Cal_H_Cnt_Up supports rising sample counters, Cal_H_Cnt_Dn supports falling sample counters, Cal_C_Cnt_Up turns the rising sample counter on and off, and Cal_C_Cnt_Dn turns the falling sample counter on and off. Clear the sampling and variables for each operating condition: Set all of Cal_H_Sum_Up / Cal_H_Sum_Dn / Cal_C_Sum_Up / Cal_C_Sum_Dn to 0.0; Among them, Cal_H_Sum_Up supports rising current sampling and accumulation, Cal_H_Sum_Dn supports falling current sampling and accumulation, Cal_C_Sum_Up supports on-off rising current sampling and accumulation, and Cal_C_Sum_Dn supports on-off falling current sampling and accumulation. Set the calibration index variables Cal_H_Index and Cal_C_Index to 0 to record the current calibration load index, supporting 10 load calibrations from 0 to 9; Among them, Cal_H_Index supports calibrated indexes, while Cal_C_Index supports open and closed calibrated indexes; S1.2, Operating Condition 1: Supports upward calibration: Trigger condition determination: If Cal_H_Start_Up is TRUE and the supported motor current I_Hold>170.0A, then enter the sampling stage; otherwise, continue to wait for the trigger condition to be met. Current sampling and accumulation: The sampling counter increments by: Cal_H_Cnt_Up := Cal_H_Cnt_Up + 1; Current value accumulation: Cal_H_Sum_Up := Cal_H_Sum_Up + I_Hold; The process is repeated until Cal_H_Cnt_Up ≥ 100, completing a set of 100 samples.

[0008] Data computation and storage: Calculate the average current: I_H_Up[Cal_H_Index] := Cal_H_Sum_Up / 100.0; Bind calibration weight: W_Hold_Up[Cal_H_Index] := Cal_H_SetW; Reset sampling state: Cal_H_Cnt_Up := 0, Cal_H_Sum_Up := 0.0, Cal_H_Start_Up := FALSE; Index and Status Update: After completing the writing of the calibration data for the current index, increment the calibration index Cal_H_Index by 1; S1.3, Operating Condition 2: Supports descent calibration Trigger condition determination: If Cal_H_Start_Dn is TRUE and the supported motor current I_Hold>170.0A, then enter the sampling stage; otherwise, continue to wait for the trigger condition to be met. Current sampling and accumulation: The sampling counter increments by: Cal_H_Cnt_Dn := Cal_H_Cnt_Dn + 1; Current value accumulation: Cal_H_Sum_Dn := Cal_H_Sum_Dn + I_Hold; The process is repeated until Cal_H_Cnt_Dn ≥ 100, completing a set of 100 samples.

[0009] Data computation and storage: Calculate the average current: I_H_Dn[Cal_H_Index] := Cal_H_Sum_Dn / 100.0; Bind calibration weight: W_Hold_Dn[Cal_H_Index] := Cal_H_SetW; Reset sampling state: Cal_H_Cnt_Dn := 0, Cal_H_Sum_Dn := 0.0, Cal_H_Start_Dn := FALSE; Index and Status Update: After completing the writing of the calibration data for the current index, increment the calibration index Cal_H_Index by 1; S1.4, Operating Condition 3: Opening and Closing Lift Calibration Trigger condition determination: If Cal_C_Start_Up is TRUE and the motor current I_Close > 170.0A, then enter the sampling stage; otherwise, continue to wait for the trigger condition to be met. Current sampling and accumulation: The sampling counter increments by: Cal_C_Cnt_Up := Cal_C_Cnt_Up + 1; Current value accumulation: Cal_C_Sum_Up := Cal_C_Sum_Up + I_Close; The process is repeated until Cal_C_Cnt_Up ≥ 100, completing a set of 100 samples.

[0010] Data computation and storage: Calculate the average current: I_C_Up[Cal_C_Index] := Cal_C_Sum_Up / 100.0; Bind calibration weight: W_Close_Up[Cal_C_Index] := Cal_C_SetW; Reset sampling state: Cal_C_Cnt_Up := 0, Cal_C_Sum_Up := 0.0, Cal_C_Start_Up := FALSE; Index and Status Update: After completing the writing of the calibration data for the current index, increment the calibration index Cal_C_Index by 1; S1.5, Operating Condition 4: Opening and Closing Lowering Calibration Trigger condition determination: If Cal_C_Start_Dn is TRUE and the motor holding current I_Close > 170.0A, then enter the sampling stage; otherwise, continue to wait for the trigger condition to be met. Current sampling and accumulation: The sampling counter increments by: Cal_C_Cnt_Dn := Cal_C_Cnt_Dn + 1; Current value accumulation: Cal_C_Sum_Dn := Cal_C_Sum_Dn + I_Close; The process is repeated until Cal_C_Cnt_Dn ≥ 100, completing a set of 100 samples.

[0011] Data computation and storage: Calculate the average current: I_C_Dn[Cal_C_Index] := Cal_C_Sum_Dn / 100.0; Bind calibration weight: W_Close_Dn[Cal_C_Index] := Cal_C_SetW; Reset sampling state: Cal_C_Cnt_Dn := 0, Cal_C_Sum_Dn := 0.0, Cal_C_Start_Dn := FALSE; Index and Status Update: After completing the writing of the calibration data for the current index, increment the calibration index Cal_C_Index by 1; S1.6 Repeat steps 1.2-1.5 to complete the calibration of 10 different loads under four operating conditions, ultimately obtaining 4 sets of "load weight-current" calibration data pairs, corresponding to: Rise / Up: (W_Hold_Up[0~9], I_H_Up[0~9]) Ascent and descent: (W_Hold_Dn[0~9], I_H_Dn[0~9]) Open / Close Up: (W_Close_Up[0~9], I_C_Up[0~9]) Opening and closing descent: (W_Close_Dn[0~9], I_C_Dn[0~9]) A calibration comparison table of current and weight under all operating conditions was created.

[0012] Further, step S2 specifically includes: Real-time reading of system data and status signals: Read the real-time current of the supported motor: I_Hold := Hold_Current Read the real-time current of the motor: I_Close := Close_Current Read the real-time height of the hoisting mechanism: Height := H_Height Read the operating status signals such as grab mode and grab position.

[0013] Further, step S3 specifically involves: calculating the wire rope self-weight compensation value under the current working conditions based on the real-time lifting height, using the following formula: Rope_Weight := (RopeW_Hold_Upold + RopeW_Close_Uplose) × Height ×2.0 × RopeW_K; Wherein, Rope_Weight is the dynamic wire rope self-weight, RopeW_Hold_Upold is the weight per unit length of the supporting wire rope, RopeW_Close_Uplose is the weight per unit length of the opening and closing wire rope, Height is the current lifting speed, 2.0 is the pulley ratio, and RopeW_K is the rope weight compensation coefficient.

[0014] Further, step S4 specifically includes: Based on the hoisting direction, piecewise linear interpolation calculations are performed for both the support and the opening / closing motors: S4.1, Supports motor weight calculation If the hoisting / ascending operation is in the case of Hoist_Up = TRUE: Boundary limiting: If the real-time current exceeds the range of the calibration curve, the calibration endpoint value is directly taken; Piecewise interpolation: When the current value is within the calibration range, the corresponding interpolation interval is located based on the calibration index, and piecewise linear interpolation calculation is performed. Weight_Hold := W_Hold_Up[i] + (W_Hold_Up[i+1]- W_Hold_Up[i]) × (I_Hold - I_H_Up[i]) / (I_H_Up[i+1] - I_H_Up[i]) Among them, Weight_Hold supports the real-time calculated lifting weight value of the motor, W_Hold_Up[i] is the standard weight value corresponding to the i-th calibration point under the rising condition, W_Hold_Up[i+1] is the standard weight value corresponding to the (i+1)-th calibration point under the rising condition, I_H_Up[i] is the standard motor current value corresponding to the i-th calibration point under the rising condition, I_H_Up[i+1] is the standard motor current value corresponding to the (i+1)-th calibration point under the rising condition, and I_Hold supports the real-time motor current value under the rising condition; If the hoisting / descent operation is in TRUE condition: Boundary limiting: If the real-time current exceeds the range of the calibration curve, the calibration endpoint value is directly taken; Piecewise interpolation: When the current value is within the calibration range, the corresponding interpolation interval is located based on the calibration index, and piecewise linear interpolation calculation is performed. Weight_Hold := W_Hold_Dn[i] + (W_Hold_Dn[i+1]- W_Hold_Dn[i]) × (I_Hold - I_H_Dn[i]) / (I_H_Dn[i+1] - I_H_Dn[i]) Among them, Weight_Hold supports the real-time calculated lifting weight value of the motor, W_Hold_Dn[i] is the standard weight value corresponding to the i-th calibration point under the descent condition, W_Hold_Dn[i+1] is the standard weight value corresponding to the (i+1)-th calibration point under the descent condition, I_H_Dn[i] is the standard motor current value corresponding to the i-th calibration point under the descent condition, I_H_Dn[i+1] is the standard motor current value corresponding to the (i+1)-th calibration point under the descent condition, and I_Hold supports the real-time motor current value under the descent condition; S4.2 Calculation of the weight of the switching motor If the hoisting / ascending operation is in the case of Hoist_Up = TRUE: Boundary limiting: If the real-time current exceeds the range of the calibration curve, the calibration endpoint value is directly taken; Piecewise interpolation: When the current value is within the calibration range, the corresponding interpolation interval is located based on the calibration index, and piecewise linear interpolation calculation is performed. Weight_Close := W_Close_Up[i] + (W_Close_Up[i+1]- W_Close_Up[i]) ×(I_Close - I_C_Up[i]) / (I_C_Up[i+1] - I_C_Up[i]) Among them, Weight_Close is the real-time calculated lifting weight value of the opening and closing motor, W_Close_Up[i] is the standard weight value corresponding to the i-th calibration point under the rising condition, W_Close_Up[i+1] is the standard weight value corresponding to the (i+1)-th calibration point under the rising condition, I_C_Up[i] is the standard motor current value corresponding to the i-th calibration point under the rising condition, I_C_Up[i+1] is the standard motor current value corresponding to the (i+1)-th calibration point under the rising condition, and I_Close is the real-time current value of the opening and closing motor under the rising condition. If the hoisting / descent operation is in TRUE condition: Boundary limiting: If the real-time current exceeds the range of the calibration curve, the calibration endpoint value is directly taken; Piecewise interpolation: When the current value is within the calibration range, the corresponding interpolation interval is located based on the calibration index, and piecewise linear interpolation calculation is performed. Weight_Close := W_Close_Dn[i] + (W_Close_Dn[i+1]- W_Close_Dn[i]) ×(I_Close - I_C_Dn[i]) / (I_C_Dn[i+1] - I_C_Dn[i]) Among them, Weight_Close is the real-time calculated lifting weight value of the opening and closing motor, W_Close_Dn[i] is the standard weight value corresponding to the i-th calibration point under the descent condition, W_Close_Dn[i+1] is the standard weight value corresponding to the (i+1)-th calibration point under the descent condition, I_C_Dn[i] is the standard motor current value corresponding to the i-th calibration point under the descent condition, I_C_Dn[i+1] is the standard motor current value corresponding to the (i+1)-th calibration point under the descent condition, and I_Close is the real-time current value of the opening and closing motor under the ascending condition.

[0015] Further, step S5 specifically includes: Based on the grab bucket's working mode and position, an adaptively synthesized initial weighing value is generated: If the grab bucket is in idle mode and the grab bucket position is less than 90%, i.e., Grab_Mode = TRUE AND Grab_Pos_V < 90, Then Weight_Raw := Weight_Hold, where Weight_Hold is the calculated value of the hoisting motor; For other operating conditions Then Weight_Raw := Weight_Hold + Weight_Close, where Weight_Close is the calculated value for opening and closing the motor.

[0016] Further, step S6 specifically includes: By combining the wire rope compensation value and the zero-point offset, the final original weighing value is calculated: Weight_Total := Weight_Raw - Rope_Weight - Weight_Zero_Offset Among them, Weight_Raw is the original calculated weight under no-load conditions, Rope_Weight is the dynamic self-weight of the wire rope under no-load conditions, and Weight_Zero_Offset is the zero-point offset obtained by one-click calibration under no-load conditions.

[0017] Further, step S7 specifically includes: Provides a one-click calibration function under no-load conditions to achieve automatic updates of zero-point offset: When the zero-weight button is pressed (i.e., Zero_Weight_Button = TRUE), the following is executed: Weight_Zero_Offset := Weight_Raw - Rope_Weight Zero_Weight_Button := FALSE When the grab bucket is unloaded, the zero-point offset is automatically calculated and updated.

[0018] Further, step S8 specifically includes: S8.1 Data Cache: When the hoisting mechanism is in operation, i.e., Hoist_Up OR Hoist_Down = TRUE, the real-time weighing value is stored in a cache array of length 100. W_Buf[W_Idx] := Weight_Total W_Idx := W_Idx + 1; The weight W_Buf[W_Idx] is written to the array; the pointer to the W_Idx array is automatically incremented by 1 each time a weight value is stored. S8.2 Data Sorting: Copy the cache array to a temporary array and sort it from smallest to largest using bubble sort. S8.3, Remove extreme values: Discard the first 25 minimum values ​​and the last 25 maximum values ​​after sorting, and keep the middle 50 data; S8.4 Mean Calculation: Calculate the average of the middle 50 data points to obtain the filtered, stable weighing value. Weight_Retan := (Σ Temp_Arr[j] for j=25 to 74) / 50.0; Where Temp_Arr[j] is a temporary array after bubble sort, which is sorted in ascending order; j=25 to74 is the index range, which corresponds to removing the first 25 minimum values ​​and the last 25 maximum values ​​after sorting, and keeping the middle 50 data; (Σ Temp_Arr[j]for j=25 to 74) / 50.0 is the arithmetic mean of the sum of the middle 50 data, which eliminates random noise and spike interference to obtain a stable weighing value; Weight_Retan is the filtered weighing value, which represents the stable state of the current load and effectively suppresses the weighing error caused by mechanical vibration and current fluctuation. S8.5 Result Output: Output the filtered weighing value to the display unit: Weight_Display := Weight_Retan; Weight_Display assigns the stabilized weighing value to the display variable and sends it to the HMI / display unit.

[0019] Compared with the prior art, the present invention has the following advantages and effects: 1. Full Profinet PN bus acquisition, zero additional hardware: The Profinet PN communication network is built only through PLC, supporting frequency converters, and switching frequency converters. There is no need to configure analog modules, weighing sensors and any additional hardware, which greatly reduces hardware costs, simplifies the wiring process, reduces on-site maintenance workload, and realizes maintenance-free design. 2. 100ms timer interrupt fixed-cycle operation: All data acquisition and weight calculation logic is executed within a 100ms timer interrupt to ensure accurate and uniform sampling and calculation timing, completely avoid the influence of PLC main scan cycle fluctuations, and significantly improve the stability of weighing data.

[0020] 3. Supports independent ten-segment calibration for dual-mechanism opening / closing and four working conditions of rising / falling: Four independent calibration arrays are set up, corresponding to the four working conditions of the dual mechanism. It supports free calibration of any serial number on site. The piecewise linear interpolation algorithm can perfectly adapt to the nonlinear characteristics of the equipment, with no weighing range breakpoints, avoiding calculation overflow and improving the full range weighing accuracy.

[0021] 4. Unique 100-point sorting and 25 extreme value filtering points at the top and bottom: It adopts a filtering method of large-capacity 100-point cache, full sorting, and pruning the top and bottom 25 extreme value points, and only retains the middle 50 points of steady-state data to take the average value output. Its resistance to current spikes, mechanical vibration and electromagnetic interference is far superior to traditional filtering algorithms, and the weighing data is more stable.

[0022] 5. Dynamic compensation of wire rope weight with height: Real-time lifting height parameters are introduced to participate in the calculation of wire rope self-weight, automatically compensating for changes in wire rope self-weight at different lifting heights, completely eliminating weighing drift error throughout the entire stroke range, and improving weighing accuracy.

[0023] 6. Automatic identification and intelligent weighing of grab bucket working conditions: Based on the grab bucket position and working mode signal, it automatically switches between single-path (unclosed) and dual-path (closed) weight synthesis logic, which conforms to on-site working habits, requires no manual intervention, and improves working efficiency and weighing accuracy.

[0024] 7. One-click intelligent zero-point calibration: The one-click no-load zeroing function quickly eliminates the influence of factors such as mechanical static installation errors, frame self-weight, and no-load deviation. On-site debugging and daily zeroing operations are simple and efficient, reducing the difficulty of operation for staff. Attached Figure Description

[0025] Figure 1 This is a system architecture diagram of a grab bucket lifting and weighing method based on PN communication and timed interrupt according to the present invention. Detailed Implementation

[0026] To illustrate in detail the technical solutions adopted by the present invention to achieve the intended technical objectives, the technical solutions in 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, not all embodiments. Furthermore, the technical means or technical features in the embodiments of the present invention can be replaced without creative effort. The present invention will be described in detail below with reference to the accompanying drawings and embodiments.

[0027] like Figure 1 As shown, a grab bucket lifting and weighing method of the present invention includes the following steps: S1. Complete the calibration of 10 different loads under four working conditions, obtain 4 sets of "load weight-current" calibration data pairs, and form a calibration comparison table of current and weight under all working conditions.

[0028] S1.1 Before starting calibration, initialize the calibration state variables for all operating conditions: Set the calibration start flag position for each operating condition to the initial state: Cal_H_Start_Up / Cal_H_Start_Dn / Cal_C_Start_Up / Cal_C_Start_Dn are all set to FALSE; Among them, Cal_H_Start_Up supports the rising calibration start flag, Cal_H_Start_Dn supports the falling calibration start flag, Cal_C_Start_Up turns the rising start flag on and off, and Cal_C_Start_Dn turns the falling flag on and off. Clear the sampling counters for each operating condition: Set all of Cal_H_Cnt_Up / Cal_H_Cnt_Dn / Cal_C_Cnt_Up / Cal_C_Cnt_Dn to 0; Among them, Cal_H_Cnt_Up supports rising sample counters, Cal_H_Cnt_Dn supports falling sample counters, Cal_C_Cnt_Up turns the rising sample counter on and off, and Cal_C_Cnt_Dn turns the falling sample counter on and off. Clear the sampling and variables for each operating condition: Set all of Cal_H_Sum_Up / Cal_H_Sum_Dn / Cal_C_Sum_Up / Cal_C_Sum_Dn to 0.0; Among them, Cal_H_Sum_Up supports rising current sampling and accumulation, Cal_H_Sum_Dn supports falling current sampling and accumulation, Cal_C_Sum_Up supports on-off rising current sampling and accumulation, and Cal_C_Sum_Dn supports on-off falling current sampling and accumulation. Set the calibration index variables Cal_H_Index and Cal_C_Index to 0 to record the current calibration load index, supporting 10 load calibrations from 0 to 9; Among them, Cal_H_Index supports calibrated indexes, while Cal_C_Index supports open and closed calibrated indexes.

[0029] S1.2, Operating Condition 1: Supports upward calibration: Trigger condition determination: If Cal_H_Start_Up is TRUE and the supported motor current I_Hold>170.0A, then enter the sampling stage; otherwise, continue to wait for the trigger condition to be met. Current sampling and accumulation: The sampling counter increments by: Cal_H_Cnt_Up := Cal_H_Cnt_Up + 1; Current value accumulation: Cal_H_Sum_Up := Cal_H_Sum_Up + I_Hold; The process is repeated until Cal_H_Cnt_Up ≥ 100, completing a set of 100 samples.

[0030] Data computation and storage: Calculate the average current: I_H_Up[Cal_H_Index] := Cal_H_Sum_Up / 100.0; Bind calibration weight: W_Hold_Up[Cal_H_Index] := Cal_H_SetW; Reset sampling state: Cal_H_Cnt_Up := 0, Cal_H_Sum_Up := 0.0, Cal_H_Start_Up := FALSE; Index and Status Update: After completing the writing of the calibration data for the current index, increment the calibration index Cal_H_Index by 1.

[0031] S1.3, Operating Condition 2: Supports descent calibration Trigger condition determination: If Cal_H_Start_Dn is TRUE and the supported motor current I_Hold>170.0A, then enter the sampling stage; otherwise, continue to wait for the trigger condition to be met. Current sampling and accumulation: The sampling counter increments by: Cal_H_Cnt_Dn := Cal_H_Cnt_Dn + 1; Current value accumulation: Cal_H_Sum_Dn := Cal_H_Sum_Dn + I_Hold; The process is repeated until Cal_H_Cnt_Dn ≥ 100, completing a set of 100 samples.

[0032] Data computation and storage: Calculate the average current: I_H_Dn[Cal_H_Index] := Cal_H_Sum_Dn / 100.0; Bind calibration weight: W_Hold_Dn[Cal_H_Index] := Cal_H_SetW; Reset sampling state: Cal_H_Cnt_Dn := 0, Cal_H_Sum_Dn := 0.0, Cal_H_Start_Dn := FALSE; Index and Status Update: After completing the writing of the calibration data for the current index, increment the calibration index Cal_H_Index by 1.

[0033] S1.4, Operating Condition 3: Opening and Closing Lift Calibration Trigger condition determination: If Cal_C_Start_Up is TRUE and the motor current I_Close > 170.0A, then enter the sampling stage; otherwise, continue to wait for the trigger condition to be met. Current sampling and accumulation: The sampling counter increments by: Cal_C_Cnt_Up := Cal_C_Cnt_Up + 1; Current value accumulation: Cal_C_Sum_Up := Cal_C_Sum_Up + I_Close; The process is repeated until Cal_C_Cnt_Up ≥ 100, completing a set of 100 samples.

[0034] Data computation and storage: Calculate the average current: I_C_Up[Cal_C_Index] := Cal_C_Sum_Up / 100.0; Bind calibration weight: W_Close_Up[Cal_C_Index] := Cal_C_SetW; Reset sampling state: Cal_C_Cnt_Up := 0, Cal_C_Sum_Up := 0.0, Cal_C_Start_Up := FALSE; Index and Status Update: After completing the writing of the calibration data for the current index, increment the calibration index Cal_C_Index by 1.

[0035] S1.5, Operating Condition 4: Opening and Closing Lowering Calibration Trigger condition determination: If Cal_C_Start_Dn is TRUE and the motor holding current I_Close > 170.0A, then enter the sampling stage; otherwise, continue to wait for the trigger condition to be met. Current sampling and accumulation: The sampling counter increments by: Cal_C_Cnt_Dn := Cal_C_Cnt_Dn + 1; Current value accumulation: Cal_C_Sum_Dn := Cal_C_Sum_Dn + I_Close; The process is repeated until Cal_C_Cnt_Dn ≥ 100, completing a set of 100 samples.

[0036] Data computation and storage: Calculate the average current: I_C_Dn[Cal_C_Index] := Cal_C_Sum_Dn / 100.0; Bind calibration weight: W_Close_Dn[Cal_C_Index] := Cal_C_SetW; Reset sampling state: Cal_C_Cnt_Dn := 0, Cal_C_Sum_Dn := 0.0, Cal_C_Start_Dn := FALSE; Index and Status Update: After completing the writing of the calibration data for the current index, increment the calibration index Cal_C_Index by 1.

[0037] S1.6 Repeat steps 1.2-1.5 to complete the calibration of 10 different loads under four operating conditions, ultimately obtaining 4 sets of "load weight-current" calibration data pairs, corresponding to: Rise / Up: (W_Hold_Up[0~9], I_H_Up[0~9]) Ascent and descent: (W_Hold_Dn[0~9], I_H_Dn[0~9]) Open / Close Up: (W_Close_Up[0~9], I_C_Up[0~9]) Opening and closing descent: (W_Close_Dn[0~9], I_C_Dn[0~9]) A calibration comparison table of current and weight under all operating conditions was created.

[0038] S2, Real-time signal acquisition.

[0039] The PLC establishes a direct communication connection with the supported frequency converters and switching frequency converters through the Profinet PN bus. All relevant data is acquired through the bus, eliminating the need for hard-wired analog interfaces and any additional peripherals, thus simplifying the system structure and reducing hardware costs and wiring complexity.

[0040] The PLC reads system data and status signals in real time via the Profinet PN bus: Read the real-time current of the supported motor: I_Hold := Hold_Current Read the real-time current of the motor: I_Close := Close_Current Read the real-time height of the hoisting mechanism: Height := H_Height Read the operating status signals such as grab mode and grab position.

[0041] Configure a timer interrupt organization block in the PLC and set a fixed interrupt period of 100ms to ensure accurate sampling and calculation timing.

[0042] All core logic, including Profinet PN bus data reading, weight conversion, wire rope self-weight dynamic compensation, ten-segment interpolation calibration, weight synthesis, zero-point calculation, and 100-point data buffer sorting and filtering, is uniformly placed within this 100ms timer interrupt for loop execution.

[0043] By using timed interrupt scheduling, the impact of random fluctuations in the PLC's main scanning cycle on the sampling timing is completely avoided, ensuring uniform and stable sampling timing, suppressing weighing value jitter from the bottom layer, and improving weighing stability.

[0044] S3. Calculation of steel wire rope self-weight compensation.

[0045] Based on the real-time lifting height, the self-weight compensation value of the wire rope under the current working conditions is calculated using the following formula: Rope_Weight := (RopeW_Hold_Upold + RopeW_Close_Uplose) × Height ×2.0 × RopeW_K; Wherein, Rope_Weight is the dynamic wire rope self-weight, RopeW_Hold_Upold is the weight per unit length of the supporting wire rope, RopeW_Close_Uplose is the weight per unit length of the opening and closing wire rope, Height is the current lifting speed, 2.0 is the pulley ratio, and RopeW_K is the rope weight compensation coefficient.

[0046] During the total weight calculation, the self-weight of the wire rope, which is dynamically calculated above, is automatically deducted in real time, effectively eliminating the weighing drift error caused by the change in the self-weight of the wire rope throughout the entire height stroke, and improving the weighing accuracy.

[0047] S4. Operating condition identification and single motor weight calculation.

[0048] Each calibration array is configured with 10 calibration intervals (0-9) and 10 calibration points, allowing on-site personnel to freely select calibration sequence numbers and input the motor current and actual load weight of the corresponding calibration points. Calibration does not need to be performed in a fixed order, thus meeting the flexibility requirements of on-site commissioning.

[0049] Based on the hoisting direction, piecewise linear interpolation calculations are performed for both the support and the opening / closing motors: S4.1, Supports motor weight calculation If the hoisting / ascending operation is in the case of Hoist_Up = TRUE: Boundary limiting: If the real-time current exceeds the range of the calibration curve, the calibration endpoint value is directly taken; Piecewise interpolation: When the current value is within the calibration range, the corresponding interpolation interval is located based on the calibration index, and piecewise linear interpolation calculation is performed. Weight_Hold := W_Hold_Up[i] + (W_Hold_Up[i+1]- W_Hold_Up[i]) × (I_Hold - I_H_Up[i]) / (I_H_Up[i+1] - I_H_Up[i]) Among them, Weight_Hold supports the real-time calculated lifting weight value of the motor, W_Hold_Up[i] is the standard weight value corresponding to the i-th calibration point under the rising condition, W_Hold_Up[i+1] is the standard weight value corresponding to the (i+1)-th calibration point under the rising condition, I_H_Up[i] is the standard motor current value corresponding to the i-th calibration point under the rising condition, I_H_Up[i+1] is the standard motor current value corresponding to the (i+1)-th calibration point under the rising condition, and I_Hold supports the real-time motor current value under the rising condition; If the hoisting / descent operation is in TRUE condition: Boundary limiting: If the real-time current exceeds the range of the calibration curve, the calibration endpoint value is directly taken; Piecewise interpolation: When the current value is within the calibration range, the corresponding interpolation interval is located based on the calibration index, and piecewise linear interpolation calculation is performed. Weight_Hold := W_Hold_Dn[i] + (W_Hold_Dn[i+1]- W_Hold_Dn[i]) × (I_Hold - I_H_Dn[i]) / (I_H_Dn[i+1] - I_H_Dn[i]) Among them, Weight_Hold supports the real-time calculated lifting weight value of the motor, W_Hold_Dn[i] is the standard weight value corresponding to the i-th calibration point under the descent condition, W_Hold_Dn[i+1] is the standard weight value corresponding to the (i+1)-th calibration point under the descent condition, I_H_Dn[i] is the standard motor current value corresponding to the i-th calibration point under the descent condition, I_H_Dn[i+1] is the standard motor current value corresponding to the (i+1)-th calibration point under the descent condition, and I_Hold supports the real-time motor current value under the descent condition.

[0050] S4.2 Calculation of the weight of the switching motor If the hoisting / ascending operation is in the case of Hoist_Up = TRUE: Boundary limiting: If the real-time current exceeds the range of the calibration curve, the calibration endpoint value is directly taken; Piecewise interpolation: When the current value is within the calibration range, the corresponding interpolation interval is located based on the calibration index, and piecewise linear interpolation calculation is performed. Weight_Close := W_Close_Up[i] + (W_Close_Up[i+1]- W_Close_Up[i]) ×(I_Close - I_C_Up[i]) / (I_C_Up[i+1] - I_C_Up[i]) Among them, Weight_Close is the real-time calculated lifting weight value of the opening and closing motor, W_Close_Up[i] is the standard weight value corresponding to the i-th calibration point under the rising condition, W_Close_Up[i+1] is the standard weight value corresponding to the (i+1)-th calibration point under the rising condition, I_C_Up[i] is the standard motor current value corresponding to the i-th calibration point under the rising condition, I_C_Up[i+1] is the standard motor current value corresponding to the (i+1)-th calibration point under the rising condition, and I_Close is the real-time current value of the opening and closing motor under the rising condition. If the hoisting / descent operation is in TRUE condition: Boundary limiting: If the real-time current exceeds the range of the calibration curve, the calibration endpoint value is directly taken; Piecewise interpolation: When the current value is within the calibration range, the corresponding interpolation interval is located based on the calibration index, and piecewise linear interpolation calculation is performed. Weight_Close := W_Close_Dn[i] + (W_Close_Dn[i+1]- W_Close_Dn[i]) ×(I_Close - I_C_Dn[i]) / (I_C_Dn[i+1] - I_C_Dn[i]) Among them, Weight_Close is the real-time calculated lifting weight value of the opening and closing motor, W_Close_Dn[i] is the standard weight value corresponding to the i-th calibration point under the descent condition, W_Close_Dn[i+1] is the standard weight value corresponding to the (i+1)-th calibration point under the descent condition, I_C_Dn[i] is the standard motor current value corresponding to the i-th calibration point under the descent condition, I_C_Dn[i+1] is the standard motor current value corresponding to the (i+1)-th calibration point under the descent condition, and I_Close is the real-time current value of the opening and closing motor under the ascending condition.

[0051] By independently calibrating under four operating conditions, the nonlinear current characteristics of the motor operating in four quadrants are fully adapted, effectively reducing the weighing error across the entire range and improving the weighing accuracy across the entire range.

[0052] S5, Grab bucket working condition adaptive weight synthesis.

[0053] Based on the grab bucket's working mode and position, an adaptively synthesized initial weighing value is generated: If the grab bucket is in idle mode and the grab bucket position is less than 90%, i.e., Grab_Mode = TRUE AND Grab_Pos_V < 90, Then Weight_Raw := Weight_Hold, where Weight_Hold is the calculated value of the hoisting motor; For other operating conditions Then Weight_Raw := Weight_Hold + Weight_Close, where Weight_Close is the calculated value for opening and closing the motor.

[0054] S6, Wire rope and zero-point offset correction.

[0055] By combining the wire rope compensation value and the zero-point offset, the final original weighing value is calculated: Weight_Total := Weight_Raw - Rope_Weight - Weight_Zero_Offset Among them, Weight_Raw is the original calculated weight under no-load conditions, Rope_Weight is the dynamic self-weight of the wire rope under no-load conditions, and Weight_Zero_Offset is the zero-point offset obtained by one-click calibration under no-load conditions.

[0056] S7, one-click no-load zero-point calibration.

[0057] Provides a one-click calibration function under no-load conditions to achieve automatic updates of zero-point offset: When the zero-weight button is pressed (i.e., Zero_Weight_Button = TRUE), the following is executed: Weight_Zero_Offset := Weight_Raw - Rope_Weight Zero_Weight_Button := FALSE When the grab bucket is unloaded, the zero-point offset is automatically calculated and updated.

[0058] S8, Sliding window sorting and filtering processing.

[0059] S8.1 Data Cache: When the hoisting mechanism is in operation, i.e., Hoist_Up OR Hoist_Down = TRUE, the real-time weighing value is stored in a cache array of length 100. W_Buf[W_Idx] := Weight_Total W_Idx := W_Idx + 1; The weight W_Buf[W_Idx] is written to the array; the pointer to the W_Idx array is automatically incremented by 1 each time a weight value is stored. S8.2 Data Sorting: Copy the cache array to a temporary array and sort it from smallest to largest using bubble sort. S8.3, Remove extreme values: Discard the first 25 minimum values ​​and the last 25 maximum values ​​after sorting, and keep the middle 50 data; S8.4 Mean Calculation: Calculate the average of the middle 50 data points to obtain the filtered, stable weighing value. Weight_Retan := (Σ Temp_Arr[j] for j=25 to 74) / 50.0; Where Temp_Arr[j] is a temporary array after bubble sort, which is sorted in ascending order; j=25 to74 is the index range, which corresponds to removing the first 25 minimum values ​​and the last 25 maximum values ​​after sorting, and keeping the middle 50 data; (Σ Temp_Arr[j]for j=25 to 74) / 50.0 is the arithmetic mean of the sum of the middle 50 data, which eliminates random noise and spike interference to obtain a stable weighing value; Weight_Retan is the filtered weighing value, which represents the stable state of the current load and effectively suppresses the weighing error caused by mechanical vibration and current fluctuation.

[0060] S8.5 Result Output: Output the filtered weighing value to the display unit: Weight_Display := Weight_Retan.

[0061] Weight_Display assigns the stabilized weighing value to the display variable and sends it to the HMI / display unit.

[0062] This filtering method can effectively filter out the fluctuations in weighing values ​​caused by factors such as current spikes during frequency converter acceleration and deceleration, mechanical vibration, instantaneous impact, and electromagnetic interference, thus greatly improving the stability of weighing data.

[0063] The original composite weight is subtracted sequentially from the dynamic steel wire rope's self-weight and zero-point offset. After 100-point sorting and extreme value removal filtering, the true load weight is obtained. This true load weight can be directly used for on-site display, equipment overload alarm, host computer communication, and other scenarios, meeting the needs of equipment automation control and metering.

[0064] The grab bucket lifting and weighing method based on PN communication and timer interrupt of the present invention has the following advantages and effects: 1. Full Profinet PN bus acquisition, zero additional hardware: The Profinet PN communication network is built only through PLC, supporting frequency converters, and switching frequency converters. There is no need to configure analog modules, weighing sensors and any additional hardware, which greatly reduces hardware costs, simplifies the wiring process, reduces on-site maintenance workload, and realizes maintenance-free design. 2. 100ms timer interrupt fixed-cycle operation: All data acquisition and weight calculation logic is executed within a 100ms timer interrupt to ensure accurate and uniform sampling and calculation timing, completely avoid the influence of PLC main scan cycle fluctuations, and significantly improve the stability of weighing data.

[0065] 3. Supports independent ten-segment calibration for dual-mechanism opening / closing and four working conditions of rising / falling: Four independent calibration arrays are set up, corresponding to the four working conditions of the dual mechanism. It supports free calibration of any serial number on site. The piecewise linear interpolation algorithm can perfectly adapt to the nonlinear characteristics of the equipment, with no weighing range breakpoints, avoiding calculation overflow and improving the full range weighing accuracy.

[0066] 4. Unique 100-point sorting and 25 extreme value filtering points at the top and bottom: It adopts a filtering method of large-capacity 100-point cache, full sorting, and pruning the top and bottom 25 extreme value points, and only retains the middle 50 points of steady-state data to take the average value output. Its resistance to current spikes, mechanical vibration and electromagnetic interference is far superior to traditional filtering algorithms, and the weighing data is more stable.

[0067] 5. Dynamic compensation of wire rope weight with height: Real-time lifting height parameters are introduced to participate in the calculation of wire rope self-weight, automatically compensating for changes in wire rope self-weight at different lifting heights, completely eliminating weighing drift error throughout the entire stroke range, and improving weighing accuracy.

[0068] 6. Automatic identification and intelligent weighing of grab bucket working conditions: Based on the grab bucket position and working mode signal, it automatically switches between single-path (unclosed) and dual-path (closed) weight synthesis logic, which conforms to on-site working habits, requires no manual intervention, and improves working efficiency and weighing accuracy.

[0069] 7. One-click intelligent zero-point calibration: The one-click no-load zeroing function quickly eliminates the influence of factors such as mechanical static installation errors, frame self-weight, and no-load deviation. On-site debugging and daily zeroing operations are simple and efficient, reducing the difficulty of operation for staff.

[0070] The above description is merely a preferred embodiment of the present invention and is not intended to limit the present invention in any way. Although the present invention has been disclosed above with reference to preferred embodiments, it is not intended to limit the present invention. Any person skilled in the art can make some modifications or alterations to the above-disclosed technical content to create equivalent embodiments without departing from the scope of the present invention. Any simple modifications, equivalent substitutions, and improvements made to the above embodiments without departing from the scope of the present invention, based on the technical essence of the present invention and within the spirit and principles of the present invention, shall still fall within the protection scope of the present invention.

Claims

1. A method for weighing a grab bucket crane, characterized in that... Includes the following steps: S1. Complete the calibration of 10 different loads under four working conditions, obtain 4 sets of "load weight-current" calibration data pairs, and form a calibration comparison table of current and weight under all working conditions. S2, Real-time signal acquisition; S3. Calculation of steel wire rope self-weight compensation; S4. Operating condition identification and single motor weight calculation; Step S4 specifically involves: Based on the hoisting direction, piecewise linear interpolation calculations are performed for both the support and the opening / closing motors: S4.1, Supports motor weight calculation If the hoisting / ascending operation is in the case of Hoist_Up = TRUE: Boundary limiting: If the real-time current exceeds the range of the calibration curve, the calibration endpoint value is directly taken; Piecewise interpolation: When the current value is within the calibration range, the corresponding interpolation interval is located based on the calibration index, and piecewise linear interpolation calculation is performed. Weight_Hold := W_Hold_Up[i] + (W_Hold_Up[i+1] - W_Hold_Up[i]) × (I_Hold- I_H_Up[i]) / (I_H_Up[i+1] - I_H_Up[i]) Among them, Weight_Hold supports the real-time calculated lifting weight value of the motor, W_Hold_Up[i] is the standard weight value corresponding to the i-th calibration point under the rising condition, W_Hold_Up[i+1] is the standard weight value corresponding to the (i+1)-th calibration point under the rising condition, I_H_Up[i] is the standard motor current value corresponding to the i-th calibration point under the rising condition, I_H_Up[i+1] is the standard motor current value corresponding to the (i+1)-th calibration point under the rising condition, and I_Hold supports the real-time motor current value under the rising condition; If the hoisting / descent operation is in TRUE condition: Boundary limiting: If the real-time current exceeds the range of the calibration curve, the calibration endpoint value is directly taken; Piecewise interpolation: When the current value is within the calibration range, the corresponding interpolation interval is located based on the calibration index, and piecewise linear interpolation calculation is performed. Weight_Hold := W_Hold_Dn[i] + (W_Hold_Dn[i+1] - W_Hold_Dn[i]) × (I_Hold- I_H_Dn[i]) / (I_H_Dn[i+1] - I_H_Dn[i]) Among them, Weight_Hold supports the real-time calculated lifting weight value of the motor, W_Hold_Dn[i] is the standard weight value corresponding to the i-th calibration point under the descent condition, W_Hold_Dn[i+1] is the standard weight value corresponding to the (i+1)-th calibration point under the descent condition, I_H_Dn[i] is the standard motor current value corresponding to the i-th calibration point under the descent condition, I_H_Dn[i+1] is the standard motor current value corresponding to the (i+1)-th calibration point under the descent condition, and I_Hold supports the real-time motor current value under the descent condition; S4.2 Calculation of the weight of the switching motor If the hoisting / ascending operation is in the case of Hoist_Up = TRUE: Boundary limiting: If the real-time current exceeds the range of the calibration curve, the calibration endpoint value is directly taken; Piecewise interpolation: When the current value is within the calibration range, the corresponding interpolation interval is located based on the calibration index, and piecewise linear interpolation calculation is performed. Weight_Close := W_Close_Up[i] + (W_Close_Up[i+1] - W_Close_Up[i]) × (I_Close - I_C_Up[i]) / (I_C_Up[i+1] - I_C_Up[i]) Among them, Weight_Close is the real-time calculated lifting weight value of the opening and closing motor, W_Close_Up[i] is the standard weight value corresponding to the i-th calibration point under the rising condition, W_Close_Up[i+1] is the standard weight value corresponding to the (i+1)-th calibration point under the rising condition, I_C_Up[i] is the standard motor current value corresponding to the i-th calibration point under the rising condition, I_C_Up[i+1] is the standard motor current value corresponding to the (i+1)-th calibration point under the rising condition, and I_Close is the real-time current value of the opening and closing motor under the rising condition. If the hoisting / descent operation is in TRUE condition: Boundary limiting: If the real-time current exceeds the range of the calibration curve, the calibration endpoint value is directly taken; Piecewise interpolation: When the current value is within the calibration range, the corresponding interpolation interval is located based on the calibration index, and piecewise linear interpolation calculation is performed. Weight_Close := W_Close_Dn[i] + (W_Close_Dn[i+1] - W_Close_Dn[i]) × (I_Close - I_C_Dn[i]) / (I_C_Dn[i+1] - I_C_Dn[i]) Among them, Weight_Close is the real-time calculated lifting weight value of the opening and closing motor, W_Close_Dn[i] is the standard weight value corresponding to the i-th calibration point under the descent condition, W_Close_Dn[i+1] is the standard weight value corresponding to the (i+1)-th calibration point under the descent condition, I_C_Dn[i] is the standard motor current value corresponding to the i-th calibration point under the descent condition, I_C_Dn[i+1] is the standard motor current value corresponding to the (i+1)-th calibration point under the descent condition, and I_Close is the real-time current value of the opening and closing motor under the ascending condition. S5, Grab bucket working condition adaptive weight synthesis; S6, Wire Rope and Zero Point Offset Correction; S7, One-click no-load zero-point calibration; S8, Sliding window sorting and filtering processing.

2. The grab bucket lifting and weighing method according to claim 1, characterized in that: Step S1 specifically involves: S1.1 Before starting calibration, initialize the calibration state variables for all operating conditions: Set the calibration start flag position for each operating condition to the initial state: Cal_H_Start_Up / Cal_H_Start_Dn / Cal_C_Start_Up / Cal_C_Start_Dn are all set to FALSE; Among them, Cal_H_Start_Up supports the rising calibration start flag, Cal_H_Start_Dn supports the falling calibration start flag, Cal_C_Start_Up turns the rising start flag on and off, and Cal_C_Start_Dn turns the falling flag on and off. Clear the sampling counters for each operating condition: Set all of Cal_H_Cnt_Up / Cal_H_Cnt_Dn / Cal_C_Cnt_Up / Cal_C_Cnt_Dn to 0; Among them, Cal_H_Cnt_Up supports rising sample counters, Cal_H_Cnt_Dn supports falling sample counters, Cal_C_Cnt_Up turns the rising sample counter on and off, and Cal_C_Cnt_Dn turns the falling sample counter on and off. Clear the sampling and variables for each operating condition: Set all of Cal_H_Sum_Up / Cal_H_Sum_Dn / Cal_C_Sum_Up / Cal_C_Sum_Dn to 0.0; Among them, Cal_H_Sum_Up supports rising current sampling and accumulation, Cal_H_Sum_Dn supports falling current sampling and accumulation, Cal_C_Sum_Up supports on-off rising current sampling and accumulation, and Cal_C_Sum_Dn supports on-off falling current sampling and accumulation. Set the calibration index variables Cal_H_Index and Cal_C_Index to 0 to record the current calibration load index, supporting 10 load calibrations from 0 to 9; Among them, Cal_H_Index supports calibrated indexes, while Cal_C_Index supports open and closed calibrated indexes; S1.2, Operating Condition 1: Supports upward calibration: Trigger condition determination: If Cal_H_Start_Up is TRUE and the supported motor current I_Hold>170.0A, then enter the sampling stage; otherwise, continue to wait for the trigger condition to be met. Current sampling and accumulation: The sampling counter increments by: Cal_H_Cnt_Up := Cal_H_Cnt_Up + 1; Current value accumulation: Cal_H_Sum_Up := Cal_H_Sum_Up + I_Hold; The process is repeated until Cal_H_Cnt_Up ≥ 100, completing a set of 100 samples; Data computation and storage: Calculate the average current: I_H_Up[Cal_H_Index] := Cal_H_Sum_Up / 100.0; Bind calibration weight: W_Hold_Up[Cal_H_Index] := Cal_H_SetW; Reset sampling state: Cal_H_Cnt_Up := 0, Cal_H_Sum_Up := 0.0, Cal_H_Start_Up := FALSE; Index and Status Update: After completing the writing of the calibration data for the current index, increment the calibration index Cal_H_Index by 1; S1.3, Operating Condition 2: Supports descent calibration Trigger condition determination: If Cal_H_Start_Dn is TRUE and the supported motor current I_Hold>170.0A, then enter the sampling stage; otherwise, continue to wait for the trigger condition to be met. Current sampling and accumulation: The sampling counter increments by: Cal_H_Cnt_Dn := Cal_H_Cnt_Dn + 1; Current value accumulation: Cal_H_Sum_Dn := Cal_H_Sum_Dn + I_Hold; The process is repeated until Cal_H_Cnt_Dn ≥ 100, completing a set of 100 samples; Data computation and storage: Calculate the average current: I_H_Dn[Cal_H_Index] := Cal_H_Sum_Dn / 100.0; Bind calibration weight: W_Hold_Dn[Cal_H_Index] := Cal_H_SetW; Reset sampling state: Cal_H_Cnt_Dn := 0, Cal_H_Sum_Dn := 0.0, Cal_H_Start_Dn := FALSE; Index and Status Update: After completing the writing of the calibration data for the current index, increment the calibration index Cal_H_Index by 1; S1.4, Operating Condition 3: Opening and Closing Lift Calibration Trigger condition determination: If Cal_C_Start_Up is TRUE and the motor current I_Close > 170.0A, then enter the sampling stage; otherwise, continue to wait for the trigger condition to be met. Current sampling and accumulation: The sampling counter increments by: Cal_C_Cnt_Up := Cal_C_Cnt_Up + 1; Current value accumulation: Cal_C_Sum_Up := Cal_C_Sum_Up + I_Close; The process is repeated until Cal_C_Cnt_Up ≥ 100, completing a set of 100 samples; Data computation and storage: Calculate the average current: I_C_Up[Cal_C_Index] := Cal_C_Sum_Up / 100.0; Bind calibration weight: W_Close_Up[Cal_C_Index] := Cal_C_SetW; Reset sampling state: Cal_C_Cnt_Up := 0, Cal_C_Sum_Up := 0.0, Cal_C_Start_Up := FALSE; Index and Status Update: After completing the writing of the calibration data for the current index, increment the calibration index Cal_C_Index by 1; S1.5, Operating Condition 4: Opening and Closing Lowering Calibration Trigger condition determination: If Cal_C_Start_Dn is TRUE and the motor holding current I_Close > 170.0A, then enter the sampling stage; otherwise, continue to wait for the trigger condition to be met. Current sampling and accumulation: The sampling counter increments by: Cal_C_Cnt_Dn := Cal_C_Cnt_Dn + 1; Current value accumulation: Cal_C_Sum_Dn := Cal_C_Sum_Dn + I_Close; The process is repeated until Cal_C_Cnt_Dn ≥ 100, completing a set of 100 samples; Data computation and storage: Calculate the average current: I_C_Dn[Cal_C_Index] := Cal_C_Sum_Dn / 100.0; Bind calibration weight: W_Close_Dn[Cal_C_Index] := Cal_C_SetW; Reset sampling state: Cal_C_Cnt_Dn := 0, Cal_C_Sum_Dn := 0.0, Cal_C_Start_Dn := FALSE; Index and Status Update: After completing the writing of the calibration data for the current index, increment the calibration index Cal_C_Index by 1; S1.6 Repeat steps 1.2-1.5 to complete the calibration of 10 different loads under four operating conditions, ultimately obtaining 4 sets of "load weight-current" calibration data pairs, corresponding to: Rise / Up: (W_Hold_Up[0~9], I_H_Up[0~9]) Ascent and descent: (W_Hold_Dn[0~9], I_H_Dn[0~9]) Open / Close Up: (W_Close_Up[0~9], I_C_Up[0~9]) Opening and closing descent: (W_Close_Dn[0~9], I_C_Dn[0~9]) A calibration comparison table of current and weight under all operating conditions was created.

3. The grab bucket lifting and weighing method according to claim 1, characterized in that: Step S2 specifically involves: Real-time reading of system data and status signals: Read the real-time current of the supported motor: I_Hold := Hold_Current Read the real-time current of the motor: I_Close := Close_Current Read the real-time height of the hoisting mechanism: Height := H_Height Read the grab mode and grab position status signals.

4. The grab bucket lifting and weighing method according to claim 1, characterized in that: Step S3 specifically involves: calculating the self-weight compensation value of the wire rope under the current working conditions based on the real-time lifting height, using the following formula: Rope_Weight := (RopeW_Hold_Upold + RopeW_Close_Uplose) × Height × 2.0× RopeW_K; Wherein, Rope_Weight is the dynamic wire rope self-weight, RopeW_Hold_Upold is the weight per unit length of the supporting wire rope, RopeW_Close_Uplose is the weight per unit length of the opening and closing wire rope, Height is the current lifting speed, 2.0 is the pulley ratio, and RopeW_K is the rope weight compensation coefficient.

5. The grab bucket lifting and weighing method according to claim 1, characterized in that: Step S5 specifically involves: Based on the grab bucket's working mode and position, an adaptively synthesized initial weighing value is generated: If the grab bucket is in idle mode and the grab bucket position is less than 90%, i.e., Grab_Mode = TRUE AND Grab_Pos_V < 90, Then Weight_Raw := Weight_Hold, where Weight_Hold is the calculated value of the hoisting motor; For other operating conditions Then Weight_Raw := Weight_Hold + Weight_Close, where Weight_Close is the calculated value for opening and closing the motor.

6. The grab bucket lifting and weighing method according to claim 1, characterized in that: Step S6 specifically involves: By combining the wire rope compensation value and the zero-point offset, the final original weighing value is calculated: Weight_Total := Weight_Raw - Rope_Weight - Weight_Zero_Offset Among them, Weight_Raw is the original calculated weight under no-load conditions, Rope_Weight is the dynamic self-weight of the wire rope under no-load conditions, and Weight_Zero_Offset is the zero-point offset obtained by one-click calibration under no-load conditions.

7. The grab bucket lifting and weighing method according to claim 1, characterized in that: Step S7 specifically involves: Provides a one-click calibration function under no-load conditions to achieve automatic updates of zero-point offset: When the zero-weight button is pressed (i.e., Zero_Weight_Button = TRUE), the following is executed: Weight_Zero_Offset := Weight_Raw - Rope_Weight Zero_Weight_Button := FALSE When the grab bucket is unloaded, the zero-point offset is automatically calculated and updated.

8. The grab bucket lifting and weighing method according to claim 1, characterized in that: Step S8 specifically involves: S8.1 Data Cache: When the hoisting mechanism is in operation, i.e., Hoist_Up OR Hoist_Down = TRUE, the real-time weighing value is stored in a cache array of length 100. W_Buf[W_Idx] := Weight_Total W_Idx := W_Idx + 1; The weight W_Buf[W_Idx] is written to the array; the pointer to the W_Idx array is automatically incremented by 1 each time a weight value is stored. S8.2 Data Sorting: Copy the cache array to a temporary array and sort it from smallest to largest using bubble sort. S8.3, Remove extreme values: Discard the first 25 minimum values ​​and the last 25 maximum values ​​after sorting, and keep the middle 50 data; S8.4 Mean Calculation: Calculate the average of the middle 50 data points to obtain the filtered, stable weighing value. Weight_Retan := (Σ Temp_Arr[j] for j=25 to 74) / 50.0; Where, Temp_Arr[j]: a temporary array after bubble sort, already sorted in ascending order; j=25 to 74: index range, corresponding to the sorting process where the first 25 minimum values ​​and the last 25 maximum values ​​are removed, and the middle 50 data are retained; (ΣTemp_Arr[j] for j=25 to 74) / 50.0: the arithmetic mean of the sum of the middle 50 data, eliminating random noise and spike interference to obtain a stable weighing value; Weight_Retan: the filtered weighing value, representing the stable state of the current load, effectively suppressing weighing errors caused by mechanical vibration and current fluctuations; S8.5 Result Output: Output the filtered weighing value to the display unit: Weight_Display := Weight_Retan; Weight_Display assigns the stabilized weighing value to the display variable and sends it to the HMI / display unit.

Citation Information

Patent Citations

  • Bridge-type grab ship unloader dynamic weighting method

    CN101708806A

  • Rapid and accurate dynamic weighing method for bridge type grab bucket ship unloader

    CN105110188A