Method for stepwise dispensing of discrete doses from a dispensing system and method for controlling operation of a system

By sending allocation commands via non-real-time connections and sending allocation triggers via real-time connections, combined with asynchronous control of non-real-time and real-time controllers, the problems of high cost and limited bandwidth of real-time buses in existing technologies are solved, and a low-cost and efficient allocation system is realized.

CN117916783BActive Publication Date: 2026-07-24VMI HOLLAND BV
View PDF 4 Cites 0 Cited by

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
VMI HOLLAND BV
Filing Date
2022-07-29
Publication Date
2026-07-24

AI Technical Summary

Technical Problem

Existing distribution systems control feeder units via real-time bus, which is expensive and has limited data bandwidth, leading to distribution errors or delays. Furthermore, real-time bus costs are high.

Method used

The allocation command is sent via a non-real-time connection and cached at the allocation location. The allocation trigger is sent via a real-time connection. By combining the asynchronous control of the non-real-time controller and the real-time controller, the system cost is reduced and the operational efficiency is improved.

Benefits of technology

It achieves a low-cost and efficient allocation method, reduces allocation errors, and improves the system's operating speed and reliability.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN117916783B_ABST
    Figure CN117916783B_ABST
Patent Text Reader

Abstract

The invention relates to a method for stepwise dispensing discrete doses of medicament from a dispensing system, the dispensing system housing one or more feeder units and being arranged for selectively dispensing an amount of discrete doses of medicament from the one or more feeder units, the system comprising: a dispensing device provided with a series of dispensing positions, wherein the dispensing device at each of the series of dispensing positions is provided with a holder for one of the feeder units and a through opening for the discharged doses to pass through, wherein the method comprises the steps of: sending a dispensing command with data indicative of dispensing parameters to a dispensing position of the series of dispensing positions via a non-real-time connection; caching the dispensing command at the dispensing position of the series of dispensing positions; and sending a dispensing trigger to the dispensing position of the series of dispensing positions via a real-time connection, thereby triggering the feeder unit to dispense a discrete dose of medicament therefrom.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] background

[0002] This invention relates to a method for step-by-step dispensing of discrete pharmaceutical agents from a dispensing system, and to a dispensing system for step-by-step dispensing of discrete pharmaceutical agents from feeder units. Furthermore, this invention relates to a method for controlling the operation of a control system, and to a system having one or more different modules. A method for step-by-step dispensing of discrete pharmaceutical agents from a dispensing system is known from WO 2014 / 171818, wherein the dispensing system accommodates a series of feeder units and is arranged to selectively dispense a quantity of pharmaceutical agent from one or more feeder units and package the dispensed quantity, and wherein the system includes: a dispensing device having a series of dispensing positions arranged adjacent to each other in a plane, wherein the dispensing device has a retainer for one of the feeder units and a through opening for allowing discharged discrete pharmaceutical agent to pass through; and a collection frame arranged below the dispensing device. The system comprises a collection frame and a dispensing device movable relative to each other. The collection frame includes a series of collection trays, each having an elongated shape, extending substantially parallel to a plane in its longitudinal direction and along the length of at least two through openings. Each tray includes a receiving opening on its side facing the dispensing device for capturing dispensing discrete medications, and each tray includes an output end. A packaging unit, arranged below the collection frame, is used to collect the captured discrete medications from the output ends of the trays and package solid medications. A controller is configured to control the operation of the dispensing system and a feeder unit arranged on the dispensing device. The controller is configured to control the dispensing system to package one or more discrete medications into bags at very high speeds, each bag containing a specific quantity and type of discrete medication and specific data associated with the patient to whom the respective bag is intended. Summary of the Invention

[0003] A key aspect of known dispensing systems involves controlling a feeder unit to dispense discrete medications, which can be understood as driving the feeder unit so that one or more discrete medications can be dispensed. For example, a known dispensing system may have more than 1000 positions for holding the feeder unit, and most of these positions (e.g., more than 300 positions) can be used to dispense discrete medications. At a rate of three or more bags per second, more than 300 positions need to be continuously controlled using data on the quantity of discrete medications to be dispensed, parameters controlling the process of dispensing the discrete medications, and real-time trigger signals indicating when the dispensing action should begin. A disadvantage of this method is that receiving the real-time trigger signal too early may lead to dispensing errors, such as one or more discrete medications being packaged in the wrong bag. Receiving the real-time trigger signal too late may cause delays in the dispensing process.

[0004] To overcome these drawbacks, known distribution systems are entirely via real-time buses (such as EtherCAT). TM or Varan TM The feeder unit is controlled via a real-time bus. A disadvantage of using a real-time bus to control the feeder unit is that this bus is quite expensive. Furthermore, each feeder unit receiving control data via the real-time bus requires each assigned location to have its own address on this real-time bus, which disadvantageously makes each assigned location quite expensive. Another disadvantage of using a real-time bus to control the feeder unit is that the amount of data that can be transmitted via this real-time bus is relatively limited.

[0005] The purpose of this invention is to improve or eliminate one or more disadvantages of the prior art in order to provide an improved dispensing method or system, or at least an alternative dispensing method or system.

[0006] According to a first aspect, the present invention provides a method for stepwise dispensing of discrete pharmaceutical agents from a dispensing system, the dispensing system accommodating one or more feeder units and arranged for selectively dispensing a quantity of discrete pharmaceutical agent from the one or more feeder units, the system comprising:

[0007] A dispensing device having a series of dispensing positions, wherein at each of the series of dispensing positions the dispensing device has a retainer for one of the feeder units and a through opening for allowing discharged medication to pass through.

[0008] The controller is used to control the operation of the distribution system and the feeder units arranged on the distribution device.

[0009] The method includes the following steps:

[0010] - Send an allocation command containing data indicating allocation parameters to the allocation location in the series of allocation locations via a non-real-time connection;

[0011] - Cache the allocation command at the allocation location within this series of allocation locations; and

[0012] - The allocation trigger is sent to the allocation location in the series of allocation locations via a real-time connection, thereby triggering the feeder unit to allocate discrete reagents from it.

[0013] During use, this method allows allocation commands (which specify, for example, the quantity of discrete reagents to be allocated and parameters such as how to allocate the discrete reagents) to be sent via a non-real-time bus to one or more of these allocation locations, specifically before one or more discrete reagents must be allocated. The sent allocation commands are buffered at the corresponding allocation location until the discrete reagents must be allocated. When one or more discrete reagents actually must be allocated, an allocation trigger is sent via a real-time connection to the corresponding allocation location in the series of allocation locations. The allocation trigger is used to trigger the feeder unit placed at the corresponding allocation location to allocate the discrete reagents upon receiving the allocation trigger. Because the allocation command includes data about the allocation parameters, the allocation command requires more bandwidth than the allocation trigger. By sending the allocation command to the corresponding allocation location via a non-real-time connection before sending the allocation trigger via the real-time connection, the allocation command is provided to the allocation location in a much cheaper manner compared to the real-time connection. Because only the allocation trigger (which can be the same for all allocation locations) is sent via the real-time connection, the real-time connection only needs sufficient bandwidth to send the allocation trigger. For example, the allocation trigger only requires a few bits, so triggering the feeder unit at the allocation location requires very little bandwidth. This is advantageous because real-time connections can be kept small, thus keeping the costs associated with controlling the dispensing of the feeder unit low. This makes the method for dispensing discrete reagents in stages cheaper compared to existing technologies.

[0014] In the context of this disclosure, "non-real-time" can be understood as a term used to describe a process, event, or action that cannot be guaranteed to respond within a predefined time frame. This is most commonly seen in general-purpose computer systems (such as Windows). TM It is not real-time. "Real-time" can be understood as a term that indicates that its input data is guaranteed to be processed within a specified time (deadline), which is usually a relatively short period of time.

[0015] In an embodiment, the step of sending the allocation command includes sending the allocation command prior to the step of sending the allocation trigger. In the context of this disclosure, sending the allocation command prior can be understood as sending the allocation command at a time such that the allocation command arrives before the allocation trigger arrives. This is advantageous because it allows the allocation of discrete reagents to begin immediately upon receiving the allocation trigger.

[0016] In one embodiment, the step of sending allocation commands includes sending a plurality of allocation commands to the allocation location in the series of allocation locations. During operation, each of the allocation commands is cached at the corresponding allocation location, making the allocation command queue available at the corresponding allocation location. This prevents the allocation step from being interrupted due to the loss of allocation commands.

[0017] In this embodiment, the data for the allocation command includes information about the quantity of discrete agents to be allocated and / or parameters about how to allocate that quantity of discrete agents. Therefore, the data may include all the parameters required to allocate discrete agents (except for the trigger that initiates allocation).

[0018] In embodiments, the step of sending an allocation command includes including a command loop identifier in the allocation command. In embodiments herein, each time the step of sending an allocation command is performed, the step of including the command loop identifier includes adjusting the command loop identifier. In a further embodiment, the step of sending an allocation trigger includes sending a trigger loop identifier along with the allocation trigger. Preferably, each time the step of sending an allocation trigger is performed, the step of including the trigger loop identifier includes adjusting the trigger loop identifier. Even more preferably, the command loop identifier and the trigger loop identifier are substantially the same as each other. According to this embodiment, each allocation command has a unique command loop identifier, and each allocation trigger has a unique trigger loop identifier, wherein the unique command loop identifier and the unique trigger loop identifier are substantially the same as each other. Therefore, the command loop identifier and the trigger loop identifier can be used to determine which allocation command needs to be executed when an allocation trigger is received at an allocation location. This helps prevent the execution of incorrect allocation commands after an allocation trigger is received at an allocation location.

[0019] Furthermore, when the command loop identifier and trigger loop identifier are adjusted in an ascending or descending manner, the command loop identifier and trigger loop identifier can also be used to indicate the position of the corresponding allocation command in the order of multiple allocation commands.

[0020] In an embodiment, the method includes, at the allocation location in the series of allocation locations, checking whether a corresponding allocation command has been received at that allocation location after receiving an allocation trigger. Checking whether an allocation command has been received may include the following steps:

[0021] -Find the allocation command,

[0022] - When an allocation command is found, determine the command cycle identifier of the found allocation command.

[0023] - Compare the trigger loop identifier of the assigned trigger with the determined command loop identifier, and

[0024] - When the command loop identifier and the trigger loop identifier are substantially the same, the dispensing of discrete reagents begins. In embodiments herein, the method includes the following steps:

[0025] - When multiple allocation commands are found, determine the command cycle identifier for each of the found allocation commands.

[0026] - Compare the trigger loop identifier for the assigned trigger with each of the determined command loop identifiers, and

[0027] When a substantially identical command cycle identifier is found, the corresponding allocation command is selected, and discrete reagent allocation begins based on the data from that allocation command. When an allocation trigger with a trigger cycle identifier is received at an allocation location, it is determined whether an allocation command with a corresponding command cycle identifier exists at that location. If an allocation command with a corresponding command cycle identifier exists at the allocation location, discrete reagent allocation begins from that location based on the data from the allocation command. If a corresponding allocation command is missing at the allocation location, discrete reagent is not allocated at that location. This prevents allocation triggers from causing incorrect allocation of discrete reagents or incorrect amounts of discrete reagents.

[0028] Preferably, the method includes the following steps:

[0029] - When no corresponding allocation command is found, and optionally, when a subsequent allocation command is found, an error condition is reported to the controller. This is advantageous, for example, because the operator can be informed that the allocation system cannot execute a specific allocation command due to the lack of a specific allocation command.

[0030] In this embodiment, error reporting is performed via a non-real-time connection and / or via a real-time connection.

[0031] In an embodiment, the method includes querying one or more allocation locations from a series of allocation locations after an error condition is reported in order to receive information about the error condition. In the embodiments herein, the querying of the one or more allocation locations from the series of allocation locations is performed via a non-real-time connection. By querying information about the error condition via a non-real-time connection, a large amount of data, such as allocation parameters and information about the error condition, is transmitted via the non-real-time connection. This is advantageous because it allows the bandwidth of the real-time connection to be kept as small as possible, thereby minimizing the cost of the real-time connection.

[0032] In one embodiment, the method includes pausing the allocation system after reporting an error. In another embodiment, the method includes, after pausing the allocation system, sending commands to each of the series of allocation locations to remove one or more cached allocation commands, wherein the commands are sent via a non-real-time connection. According to this embodiment, allocation commands that have not yet been executed are resent to the allocation location or the allocation location cluster. This prevents allocation commands from being skipped or executed more than once, and allocation can continue reliably.

[0033] In this embodiment, the allocation position in the series of allocation positions includes one allocation position or a series of allocation positions. This allows the method according to this embodiment to control one or more allocation positions with a single allocation command (segmented control).

[0034] According to a second aspect, the present invention provides a dispensing system for step-by-step dispensing of discrete reagents from feeder units, wherein the dispensing system accommodates one or more feeder units and is arranged to selectively dispense a quantity of discrete reagents from the one or more feeder units, the system comprising:

[0035] A dispensing device having a series of dispensing positions, wherein at each of the series of dispensing positions the dispensing device has a retainer for one of the feeder units and a through opening for allowing discharged medication to pass through.

[0036] The control unit controls the operation of the distribution system and the feeder units arranged on the distribution device.

[0037] The control unit includes a non-real-time controller operatively connected to each of the series of allocation locations via a non-real-time connection, and a real-time controller operatively connected to each of the series of allocation locations via a real-time connection.

[0038] The controller is configured to:

[0039] - The allocation command, containing data indicating allocation parameters, is sent to the allocation location in the series of allocation locations via this non-real-time connection;

[0040] - Allows caching of the allocation command at that allocation location within the series of allocation locations; and

[0041] - The allocation trigger is sent to the allocation location in the series of allocation locations via the real-time connection, thereby triggering the feeder unit to allocate discrete reagents from there.

[0042] In embodiments, non-real-time connections are selected from the group including Ethernet connections and non-real-time buses, and / or real-time connections are selected from the group including real-time buses, Ethercat, etc. TM Varan TM Groups of hardware I / O lines.

[0043] According to a third aspect, the present invention provides a method for controlling the operation of a control system, wherein the system includes one or more different modules, and wherein the method includes the following steps:

[0044] - An execution plan is determined by a non-real-time controller, which includes one or more tasks to be performed by the one or more different modules;

[0045] - At the non-real-time controller, for each of the tasks determined in the execution plan, a task parameter command is sent to the module in these different modules that must execute the task, wherein the task parameter command includes the parameters required to execute the task, and an associated task trigger command is sent to the real-time controller, wherein the task trigger command is configured to instruct the real-time controller to trigger the corresponding module to execute the task associated with the task trigger command;

[0046] - After receiving these task trigger commands at the real-time controller, these task trigger commands are queued at the real-time controller; and

[0047] - At the real-time controller, the queued task trigger commands are executed to trigger the corresponding modules to execute the tasks indicated in the associated task parameter commands.

[0048] In existing technologies, systems with one or more different modules (such as a dispensing system for distributing discrete agents in steps) incorporate real-time controllers, such as programmable logic controllers (PLCs) for controlling the operation of the system. Such PLCs are well-suited for reading and controlling sensors and actuators in complex systems. For example, a PLC can precisely control a specific motor, such as a position motor, where the PLC has very precise timing, allowing for accurate matching of mechanical steps. Complex systems (such as dispensing systems) further require controllers, particularly non-real-time controllers, which use complex algorithms to determine which tasks must be performed, such as dispensing the correct amount of discrete agents. For example, a dispensing system may include multiple mechanical modules that sometimes must perform specific tasks and sometimes must remain idle. The non-real-time controller is used to control the PLC. When the dispensing system operates at very high speeds (e.g., very high dispensing speeds), controlling the PLC with a non-real-time controller can quickly lead to delays because the PLC must wait for commands from the non-real-time controller.

[0049] In the method according to a third aspect of the invention, the control of the real-time controller is performed asynchronously. Asynchronous control of the real-time controller allows the non-real-time controller to send task parameter commands to one or more different modules and task trigger commands to the real-time controller without waiting for feedback, such as acknowledgment, from the one or more different modules and / or the real-time controller. Therefore, after sending a task parameter command or task trigger command, the non-real-time controller can quickly send the next task parameter command or task trigger command. Thus, the real-time controller queues several task trigger commands to be executed, and is therefore always provided with the next task trigger command to be executed. Therefore, the non-real-time controller must be fast enough to send a sufficient number of task parameter commands and task trigger commands on average, but not necessarily precisely on time each time. This can be understood as meaning that delays on the non-real-time controller side do not cause delays on the real-time controller side. This is advantageous because the method enables the system to operate at high speed while reducing or eliminating the risk of operational delays.

[0050] In an embodiment, the step of determining the execution plan includes determining the order in which tasks need to be executed and including the tasks to be executed in the execution plan in the determined order. In the embodiments herein, the real-time controller executes the queued task trigger commands in the order they are received and queued at the real-time controller. By providing the task trigger commands to the real-time controller in the order in which they must be executed, the real-time controller can simply queue and execute the task trigger commands in the order they are received.

[0051] In an embodiment, the step of executing the queued task trigger commands includes executing the queued task trigger commands one after another.

[0052] In embodiments, each of the task parameter commands and task trigger commands sent in relation to the tasks of the execution plan is provided with a synchronization identifier. In embodiments herein, the method includes aligning steps of one or more tasks performed and / or to be performed by the one or more different modules at the real-time controller using the synchronization identifier. In the context of this disclosure, it should be understood that during system operation, a task of one different module may sometimes have to wait until another task of another different module completes. By providing a synchronization identifier, the real-time controller can clearly know which tasks must be aligned with each other. Furthermore, by aligning one or more tasks using the synchronization identifier, a task can begin once the previous task is almost or completely completed. Therefore, the system's operating speed is kept as high as possible.

[0053] In another embodiment, the step of aligning the one or more tasks includes, at the real-time controller, after triggering a module to execute a task by executing an associated task triggering command at the real-time controller, checking whether the next task depends on the currently executing task. In embodiments herein, the method includes, at the real-time controller, when it is determined that the next task depends on the currently executing task, waiting for confirmation from the module executing the current task that the task has been completed before executing the next task. According to this embodiment, it is advantageous to prevent the triggering and / or execution of the next task before the current task on which the next task depends is nearly or completely completed.

[0054] In one embodiment, the method includes, at each of the one or more different modules, sending a response message from that module to a non-real-time controller indicating that the task was completed by that module when the task is completed by that module. In another embodiment, the method includes, when a task fails and / or cannot be completed at a specific module, reporting an error status of the module to the non-real-time controller, wherein, after reporting the error status, an error handling mode is triggered by the non-real-time controller. By reporting an error status and triggering an error handling mode when it is determined that a module cannot complete the task sent to it, the system is prevented from continuing to operate and outputting erroneous products, such as bags containing incorrect discrete reagents. According to this embodiment, the error is resolved before the system continues normal operation.

[0055] In another embodiment of this document, the error handling mode includes the following steps:

[0056] - At the non-real-time controller, wait for all response messages from the previously executed tasks from one or more different modules;

[0057] - Clear all task parameter commands and task trigger commands sent from this non-real-time controller;

[0058] - Determine whether the error indicated by this error status can be automatically corrected;

[0059] - Once it is determined that the error can be automatically corrected, the execution plan is redefined and task parameter commands and task trigger commands for the redefined execution plan are sent;

[0060] - When it is determined that the error cannot be automatically corrected, report the error to the operator and allow the operator to input the correction for the error;

[0061] - After allowing the operator to input corrections for the error, determine whether the execution plan can be completed without further errors;

[0062] - Stop executing the execution plan when it is determined that the execution plan cannot be completed without further errors.

[0063] - Once it is determined that the execution plan can be completed without further errors, the execution plan is redefined, and task parameter commands and task trigger commands for the redefined execution plan are sent. According to this embodiment, operator intervention in the system is minimized because the method allows for automatic error correction while maintaining the system's operating speed as high as possible.

[0064] According to a fourth aspect, the present invention provides a system having one or more different modules, a non-real-time controller, and a real-time controller.

[0065] The non-real-time controller is operatively connected to each of the one or more different modules and the real-time controller, and

[0066] The real-time controller is operatively connected to each of the one or more different modules and the non-real-time controller.

[0067] The non-real-time controller is configured to:

[0068] - Determine the execution plan, which includes one or more tasks to be performed by the one or more different modules;

[0069] - For each of the tasks identified in the execution plan, a task parameter command is sent to the module in these different modules that must execute the task, wherein the task parameter command includes the parameters required to execute the task, and an associated task trigger command is sent to the real-time controller, wherein the task trigger command is configured to instruct the real-time controller to trigger the corresponding module to execute the task associated with the task trigger command;

[0070] The real-time controller is configured to:

[0071] - After receiving these task trigger commands at the real-time controller, queue these task trigger commands; and

[0072] - Execute the queued task trigger command to trigger the corresponding module to execute the task indicated in the associated task parameter command.

[0073] The system according to the fourth aspect of the invention has at least the same technical advantages as the method described with respect to the third aspect of the invention.

[0074] In this embodiment, the real-time controller is selected from the group consisting of programmable logic controllers (PLCs) and remote telemetry units (RTUs).

[0075] In one embodiment, a non-real-time controller is operatively connected to each of the one or more different modules and a real-time controller via a non-real-time connection such as an Ethernet connection, and wherein the real-time controller is operatively connected to each of the one or more different modules via a real-time connection such as an EtherCAt and / or a hardware I / O line.

[0076] The aspects and features described and illustrated in this specification may be applied individually in any possible circumstances. These individual aspects, particularly those described in the appended dependent claims, may be the subject of a divisional patent application. Attached Figure Description

[0077] The present invention will be described based on exemplary embodiments shown in the accompanying drawings, in which:

[0078] Figure 1 A schematic cross-section of a dispensing system is shown, which has a dispensing device having a series of dispensing positions to accommodate a plurality of feeder units for selectively dispensing a certain amount of medicine from one or more feeder units and for packaging the dispensed amount.

[0079] Figure 2 It shows Figure 1 A schematic top view of the allocation system of an embodiment;

[0080] Figure 3 It shows the method for using from Figure 1 A diagram illustrating the steps of a step-by-step distribution method for discrete reagents using a distribution system;

[0081] Figure 4 A schematic overview of a system having modules according to an embodiment of the present invention is shown;

[0082] Figure 5 The control with error handling mode is shown. Figure 4 A diagram illustrating the steps of the system's operation; and

[0083] Figure 6 It shows Figure 5 A diagram showing the steps of the error handling pattern. Detailed Implementation

[0084] Figure 1 and Figure 2A schematic cross-section of a dispensing system 1 is shown, which houses several feeder units 2 for selectively dispensing quantities of pharmaceuticals, drugs, or solid articles, products, or substances (e.g., pills, tablets, capsules, etc.) for medical use from one or more feeder units 2 and for packaging the dispensed quantities of pharmaceuticals. The pharmaceuticals are "discrete," meaning they can be dispensed one after another, individually, separately, or in dosage units.

[0085] The dispensing system 1 includes a dispensing device 3 configured to dispense medication. Below the dispensing device 3 is a collecting device 4 configured to collect the medication dispensed from the dispensing device 3. Below the collecting device 4 is a packaging unit 5 configured to package the collected medication. Optionally, the dispensing system 1 is provided with a housing (not shown) to protect the dispensing device 3, the collecting device 4, and the packaging unit 5 from unauthorized access.

[0086] The dispensing device 3 is provided with a series of dispensing positions 20 and holders (not shown) for holding multiple feeder units 2 (also called cans or tablet boxes). The dispensing positions 20 are circumferentially distributed around the axis of rotation R. In particular, as Figure 2 As shown in the optimal configuration, the allocation positions 20 are distributed according to a radial grid with several rows, wherein the feeder units 20 are arranged radially around the axis of rotation R.

[0087] like Figure 1 As further shown, the dispensing system 1 further includes a robot manipulator 6 (e.g., a robotic arm) configured to manipulate the feeder unit 2 relative to the dispensing position. The robot manipulator 6 is arranged on the dispensing device 3, at or near its axis of rotation R. The robot manipulator 6 is configured to manipulate the feeder unit 2 automatically, wherein the manipulation includes, but is not limited to, positioning, removing, and repositioning the feeder unit 2 within the dispensing system 1. The robot manipulator 6 has a gripper 7 at its distal end, configured to grip one of the feeder units 2 to place or remove that feeder unit 2 from the dispensing device 3.

[0088] like Figure 1 As shown, the collection device 4 has several collection trays 40, also referred to as collection hoppers. Each collection tray 40 extends radially below one or more feeder units 2 and is open on the side facing the dispensing device 2 to receive agents selectively dispensed from one or more feeder units 2. The collection trays 40 gradually narrow toward the packaging unit 5 and are closed at the bottom by a valve, allowing the collected agents to be selectively released from the trays 40 into the packaging unit 5.

[0089] Collection trays 40 are arranged in collection frames 41 and distributed circumferentially about a rotation axis R. Collection frames 41 can rotate about the rotation axis R in the collection direction A so that collection trays 40 rotate relative to the plurality of distribution positions 20. For example, the rotation can be a step-by-step rotation, such that each step of the tray aligns the collection tray 40 with a subsequent series of feeder units 2 arranged within the distribution device 3.

[0090] When a corresponding tray of the plurality of trays 40 is positioned above the packaging unit 5, a valve (not shown) on that corresponding tray of the plurality of trays 40 opens to release the collected medicine from that corresponding tray of the plurality of trays 40 into the packaging unit 5. The packaging unit 5 includes a stock member for containing packaging material (foil in this example), a printer for printing information about the medicine on the foil, a filling member for positioning the foil to receive the medicine, a sealing member for forming a bag around the received medicine, a perforating member for providing perforations for the foil between the subsequently formed bags, and an output member for discharging the packaged medicine from the dispensing system 1.

[0091] The distribution system 1 further includes a control unit 30 for controlling the operation of the distribution system 1. Specifically, the control unit 30 includes a non-real-time controller 31 operatively connected via a non-real-time connection (e.g., a non-real-time bus, such as an Ethernet connection) to the feeder unit 2, the distribution device 3, the collection device 4, the packaging unit 5, the robot manipulator 6, and other electronic equipment (e.g., drivers, sensors, etc.), and a real-time controller 32 operatively connected via a real-time connection (e.g., a real-time bus, such as a hardware I / O line) to the feeder unit 2, the distribution device 3, the collection device 4, the packaging unit 5, the robot manipulator 6, and other electronic equipment (e.g., drivers, sensors, etc.). Both the non-real-time controller 31 and the real-time controller 32 may include a processor and a non-transitory computer-readable medium storing computer instructions thereon, which, when executed by the processor, cause the distribution system 1 to perform the methods described in more detail below. Alternatively, the control unit 30 includes a processor and a non-transitory computer-readable medium thereon storing computer instructions that, when executed by the processor, cause the allocation system 1 to implement the methods described in more detail below, wherein the non-real-time controller 31 and the real-time controller 32 are software-based and / or part of a software program. This can be understood as the non-real-time controller 31 and the real-time controller 32 defining the non-real-time environment and the real-time environment, respectively.

[0092] In the context of this disclosure, it should be noted that each of the feeder units 2 may have its own active module (e.g., a drive motor), particularly for driving the dispensing of the corresponding feeder unit 2. In this case, the corresponding feeder unit 2 is operatively connected to the control unit 30 via an interface between the feeder unit 2 and the dispensing position where the feeder unit 2 is located. In this case, the feeder unit 2 is directly operatively connected to the control unit 30, particularly the non-real-time controller and the real-time controller. Alternatively, each of the feeder units 2 may not have its own active module. In this case, an active module (e.g., an external drive motor) is provided at each dispensing position for driving the dispensing of the feeder unit 2. In this case, the external drive motor at each dispensing position is operatively connected to the control unit 30, particularly the non-real-time controller and the real-time controller, and the feeder unit 2 is indirectly operatively connected to the control unit 30, particularly the non-real-time controller and the real-time controller. In the following description, when data, messages, triggers, etc., are sent to the dispensing system, this can be understood as data, messages, triggers, etc., being sent to the active module at the corresponding dispensing position or the active module within the corresponding feeder unit 2.

[0093] Figure 3 A diagram illustrates the steps of distributing discrete reagents in stages using a dispensing system 1. As a first step S1, a dispensing order is received at control unit 30, which may be received from an external party or determined by control unit 30 itself. Based on the dispensing order, in step S2, a dispensing command is sent from a non-real-time controller to dispensing location 20 or a cluster of dispensing locations 20 (for segmented control) via a non-real-time connection. The dispensing command includes data indicating dispensing parameters that indicate the dispensing event to be performed at the corresponding dispensing location 20 or the corresponding cluster of dispensing locations 20. For example, the dispensing parameters indicate the quantity of discrete reagents to be dispensed and drive parameters indicating how to drive the feeder unit 2 at dispensing location 20. Furthermore, the dispensing command includes a command cycle identifier for identifying the dispensing command and optionally for indicating the position of the corresponding dispensing command within a group of dispensing commands. In the context of this invention, the dispensing command does not provide a trigger to begin dispensing discrete reagents.

[0094] In step S3, after receiving an allocation command at the corresponding allocation location 20 or the corresponding allocation location 20 cluster, the allocation command is cached at the corresponding allocation location 20 or the corresponding allocation location 20 cluster. By caching the allocation command at the corresponding allocation location 20 or the corresponding allocation location 20 cluster, the allocation command can be pre-sent to the corresponding allocation location 20 or the corresponding allocation location 20 cluster, making the allocation command available at the corresponding allocation location 20 or the corresponding allocation location 20 cluster when needed. The pre-sent allocation command duration is not important. It should be noted that since each allocation command includes a command cycle identifier, and in particular a unique command cycle identifier, several allocation commands can be cached at the corresponding allocation location 20 or the corresponding allocation location 20 cluster.

[0095] Subsequently, in step S4, it is determined whether a dispensing command needs to be executed. Determining whether a dispensing command or one of the dispensing commands needs to be executed can be understood as receiving an instruction that a specific discrete drug needs to be dispensed, for example, because a particular collection tray 40 is located at or near the dispensing location 20 where the dispensing command is cached.

[0096] When it is determined that a dispensing command or one of the dispensing commands needs to be executed, in step S5, a dispensing trigger is sent from the real-time controller to the corresponding dispensing location 20 or the corresponding dispensing location 20 cluster, wherein the dispensing trigger is sent via a real-time connection. The dispensing trigger is configured to trigger the feeder unit at the corresponding dispensing location 20 or the corresponding dispensing location 20 cluster to begin dispensing discrete reagents from it. The dispensing trigger has a trigger cycle identifier used to identify the associated dispensing command based on its command cycle identifier, wherein the trigger cycle identifier and the command cycle identifier each indicate a cycle of the specific dispensing trigger and dispensing command, respectively, to indicate the order in which the dispensing commands must be processed.

[0097] Upon receiving an allocation trigger at the corresponding allocation location 20 or the corresponding allocation location 20 cluster, in step S6, the allocation trigger activation checks whether a corresponding allocation command is cached at the corresponding allocation location 20 or the corresponding allocation location 20 cluster. This is done by searching for allocation commands whose command loop identifier is substantially the same as the trigger loop identifier, thereby indicating the allocation command to be executed.

[0098] When it is determined that a corresponding allocation command is cached at the corresponding allocation location 20 or the corresponding allocation location 20 cluster, in step S7, the feeder unit 2 or these feeder units 2 at the corresponding allocation location 20 or the corresponding allocation location 20 cluster begin to allocate the discrete agent indicated in the corresponding allocation command.

[0099] When it is determined that the corresponding allocation command is not cached at the corresponding allocation location 20 or the corresponding allocation location 20 cluster, and optionally, when it is determined that a subsequent allocation command is available, in step S8, the corresponding allocation location 20 or the corresponding allocation location 20 cluster returns an error signal, specifically an error signal to the non-real-time controller, indicating that the specific allocation command was lost. Subsequently, in step S9, the non-real-time controller queries the corresponding allocation location 20 or the corresponding allocation location 20 cluster to determine which error occurred. Afterwards or simultaneously, in step S10, the allocation system 1 is stopped or suspended.

[0100] In step S11, when the allocation system is stopped or paused, the non-real-time controller instructs allocation position 20 to remove the received and cached allocation commands, after which new allocation commands can be sent to allocation position 20.

[0101] Figure 4 A schematic overview of a system 100 having several different modules 101 is shown. In the context of this disclosure, different modules 101 can be understood as modules 101 that control or depend on each other independently, such that one module 101 can perform a task while another module 101 has completed its task. In the case of system 100, for example, the distribution system 1 as described above, different modules 101 may include, but are not limited to, for example, packaging unit 5 or its electrical modules, such as printer, robot manipulator 3, feeder unit 2, etc.

[0102] System 100 further includes a non-real-time controller 102 and a real-time controller 103, such as a programmable logic controller (PLC). The non-real-time controller 102 is operatively connected to each of the modules 101 in system 100 and the real-time controller 103, wherein the real-time controller 103 is also operatively connected to each of the modules 101 and the non-real-time controller 102. Figure 4 As shown, bidirectional communication is possible between the non-real-time controller 102 and each of the modules 101, between the real-time controller 103 and each of the modules 101, and between the non-real-time controller 102 and the real-time controller 103. Both the non-real-time controller 102 and the real-time controller 103 may each include a processor and a non-transitory computer-readable medium thereon storing computer instructions that, when executed by the processor, cause the allocation system 100 to implement the methods described in more detail below.

[0103] Figure 5 A diagram illustrating the steps of operation of a control system 100 is shown, wherein the system 100 may be the allocation system 1 as described above. As a first step, in step S100, the system 100 receives one or more orders that need to be fulfilled by the system 100.

[0104] Upon receiving one or more orders to be fulfilled, in step S101, the non-real-time controller 102 determines an execution plan that defines the tasks that need to be performed by modules 101 of system 100 in order to fulfill the received one or more orders. Optionally, the non-real-time controller 102 also determines the order in which the tasks need to be performed and includes the tasks in the execution plan in the correct order. Once the execution plan has been determined, in step S102, for each task in the execution plan, the non-real-time controller 102, while adhering to the order of the tasks in the execution plan, sends a task parameter command to the module 101 that needs to perform the corresponding task. The task parameter command includes the parameters required to perform the corresponding task, but does not trigger the corresponding module 101 to perform the task. Additionally, the task parameter command includes a synchronization identifier for aligning the tasks of different modules 101 of system 100.

[0105] In step S103, after sending the task parameter command for the corresponding task, the non-real-time controller 102 sends a task trigger command to the real-time controller 103. The task trigger command indicates to the real-time controller 103 that it can trigger the corresponding module 101 to execute the task associated with the task trigger command, and which module 101 to trigger. The task trigger command also has the same synchronization identifier as the corresponding task parameter command, so as to align the tasks of different modules 101 of the system 100.

[0106] The non-real-time controller 102 continuously sends task parameter commands and task trigger commands while adhering to the planned task execution order, resulting in multiple task trigger commands being received at the real-time controller 103. In step S104, after receiving the task trigger commands at the real-time controller 103, the task trigger commands are queued at the real-time controller, also known as caching.

[0107] The real-time controller 103 executes the task trigger commands in the order they are received at the real-time controller 103. In step S105, when the real-time controller 103 executes one of the task trigger commands, it sends a trigger to the module 101 indicated in the task trigger command, so that the corresponding module 101 executes the task indicated in the corresponding received task parameter command. In step 106, when a task trigger command has been sent to the corresponding module 101, it is determined whether there are any other task trigger commands queued at the real-time controller 103. If there are no other task trigger commands queued at the real-time controller 103, the method ends.

[0108] When at least one additional task trigger command is determined to be queued at real-time controller 103, in step 107, it is determined whether the next task associated with the next task trigger command in the queued task trigger commands depends on the current task indicated by the current task trigger command. If it depends, the next task can only be triggered when the current task completes. This is determined by a synchronization identifier included in the task parameter command and the task trigger command. When it is determined that the next task is independent of the current task, such as... Figure 5 The next task will be executed as shown.

[0109] If it is determined that the next task depends on the current task, such that the next task can only be executed after the current task is almost or completely completed, then in step 108, the real-time controller 103 checks within a predetermined time period whether the module 101 that must execute the task has sent feedback that the task associated with the current task trigger command has been executed, which is the last task trigger command executed. If the real-time controller 103 receives feedback that the task has been almost or completely completed, then the real-time controller 103 continues to execute the next task trigger command.

[0110] Additionally, and optionally, in step S108, when the specific module 101 has executed the task, the specific module 101 sends a response message to the non-real-time controller 102 indicating that the executed task has been completed. When the execution of the task at the specific module 101 fails and / or cannot be completed, the task ends with an error status, and the error status is directly reported to the non-real-time controller 102.

[0111] In step S109, when an error status is reported to the non-real-time controller 102, the method switches to an error handling mode, which in... Figure 6 The error handling mode is illustrated schematically. The error handling mode includes the following steps: Step S110: At the non-real-time controller, all response messages from previously executed tasks are awaited, and upon receiving all response messages from previously executed tasks, the non-real-time controller 102 determines whether the error can be automatically corrected without operator intervention. If the error can be automatically corrected, in step S111, the execution plan is redefined, for example, based on the remaining tasks and considering the error state. Afterward, the error handling mode returns to step S102 of the method.

[0112] If it is determined that the error cannot be automatically corrected, the error is reported to the operator of system 100 in step 112, allowing the operator to perform a manual action in step S113 to correct the error. After the operator's manual action, in step S114, it is determined whether one or more orders can be completed without errors. If not, in step S115, the error handling mode suspends the processing of the one or more orders. If the one or more orders can be completed without errors, the error handling mode continues to step S111, after which the method continues in step S102 with a redefined execution plan.

[0113] It should be understood that the above description is intended to illustrate the operation of the embodiments and not to limit the scope of the invention. Based on the above discussion, many variations will be apparent to those skilled in the art, and these variations will still be covered by the scope of the invention.

[0114] List of reference numerals

[0115] 1. Distribution System

[0116] 2. Feeder Unit

[0117] 3. Dispensing device

[0118] 4. Collection device

[0119] 5 Packaging Units

[0120] 6. Robot Manipulator

[0121] 7. Fixtures

[0122] 20. Assignment Position

[0123] 21 Positioning Posts

[0124] 22 Drop pipe

[0125] 30 Controllers

[0126] 31 Non-real-time controller

[0127] 32 Real-time Controller

[0128] 40 Collection tray

[0129] 41 Collection Framework

[0130] Steps of the S1-S11 allocation method

[0131] 100 System

[0132] Module 101

[0133] 102 Non-real-time controller

[0134] 103 Real-time Controller

[0135] S100-S115 Control Method Steps

Claims

1. A method for dispensing discrete reagents in stages from a dispensing system, the dispensing system accommodating one or more feeder units and arranged for selectively dispensing a quantity of discrete reagents from the one or more feeder units, the system comprising: A dispensing device having a series of dispensing positions, wherein at each of the series of dispensing positions the dispensing device has a retainer for one of the feeder units and a through opening for allowing discharged medication to pass through. The method includes the following steps: - An allocation command containing data indicating allocation parameters is sent to one of the series of allocation locations via a non-real-time connection, wherein the allocation command includes a command cycle identifier; - Cache the allocation command at the allocation location within this series of allocation locations; and - A distribution trigger, including a trigger cycle identifier, is sent to the distribution location in the series of distribution locations via a real-time connection, thereby triggering the feeder unit to distribute discrete reagents therefrom; The command loop identifier and the trigger loop identifier are essentially the same; and The following method is used to check whether a corresponding allocation command has been received at a specific allocation location within a series of allocation locations after the allocation trigger is received: -Find the allocation command, - When an allocation command is found, determine the command cycle identifier of the found allocation command. - Compare the trigger loop identifier of the assigned trigger with the determined command loop identifier, and - When the command loop identifier and the trigger loop identifier are substantially the same, the dispensing of discrete potions begins.

2. The method of claim 1, wherein the step of sending the allocation command includes sending the allocation command in advance of the step of sending allocation triggered.

3. The method according to claim 1 or 2, wherein the step of sending the allocation command includes sending a plurality of allocation commands to the allocation location in the series of allocation locations.

4. The method according to claim 1, 2 or 3, wherein the data of the allocation command includes information about the quantity of discrete agents to be allocated and / or parameters about how to allocate that quantity of discrete agents.

5. The method according to any one of the preceding claims, wherein each time the step of sending the allocation command is performed, the step of including the command cycle identifier includes adjusting the command cycle identifier.

6. The method according to any one of the preceding claims, wherein each time the step of sending allocation triggering is performed, the step of including the triggering loop identifier includes adjusting the triggering loop identifier.

7. The method according to any one of the preceding claims, comprising the following steps: - When multiple allocation commands are found, determine the command cycle identifier for each of the found allocation commands. - Compare the trigger loop identifier for the assigned trigger with each of the determined command loop identifiers, and - When a substantially identical command cycle identifier is found, the corresponding allocation command is selected and the allocation of discrete reagents based on the data of that corresponding allocation command begins.

8. The method according to any one of the preceding claims, comprising the following steps: - Report an error to the controller when no corresponding assignment command is found, and optionally, when a subsequent assignment command is found.

9. The method of claim 8, wherein reporting error conditions is performed via the non-real-time connection.

10. The method of claim 8 or 9, further comprising, after reporting an error, querying one or more of the series of allocation locations to receive information about the error.

11. The method of claim 10, wherein querying one or more allocation locations in the series of allocation locations is performed via the non-real-time connection.

12. The method according to any one of claims 8 to 11, comprising suspending the allocation system after reporting an error.

13. The method of claim 12, further comprising, after pausing the allocation system, sending a command to each of the series of allocation locations to remove one or more cached allocation commands, wherein the command is sent via the non-real-time connection.

14. The method according to any one of the preceding claims, wherein the allocation position in the series of allocation positions includes one allocation position or a series of allocation positions.

15. A dispensing system for dispensing discrete reagents in stages from a feeder unit, wherein the dispensing system accommodates one or more feeder units and is arranged to selectively dispense a quantity of discrete reagents from the one or more feeder units, the system comprising: A dispensing device having a series of dispensing positions arranged adjacent to each other in a plane, wherein each of the series of dispensing positions has a retainer for one of the feeder units and a through opening for allowing discharged medication to pass through. The control unit controls the operation of the distribution system and the feeder units arranged on the distribution device. The control unit includes a non-real-time controller operatively connected to each of the series of allocation locations via a non-real-time connection, and a real-time controller operatively connected to each of the series of allocation locations via a real-time connection. The controller is configured to: - An allocation command containing data indicating allocation parameters is sent to the allocation location in the series of allocation locations via the non-real-time connection, wherein the allocation command includes a command loop identifier; - Allows caching of the allocation command at this allocation location within the series of allocation locations; as well as - The real-time connection sends a distribution trigger, including a trigger cycle identifier, to the distribution location, thereby triggering the feeder unit to distribute discrete reagents therefrom; The command loop identifier and the trigger loop identifier are essentially the same; as well as The following method is used to check whether a corresponding allocation command has been received at a specific allocation location within a series of allocation locations after the allocation trigger is received: -Find the allocation command, - When an allocation command is found, determine the command cycle identifier of the found allocation command. - Compare the trigger loop identifier of the assigned trigger with the determined command loop identifier, and - When the command loop identifier and the trigger loop identifier are substantially the same, the dispensing of discrete potions begins.

16. The distribution system of claim 15, wherein the non-real-time connection is selected from the group consisting of Ethernet connections and non-real-time buses, and / or wherein the real-time connection is selected from the group consisting of real-time buses, Ethernet, and other non-real-time connections. TM Varan TM Groups of hardware I / O lines.

17. A method for controlling the operation of a pharmaceutical dispensing system, wherein the system comprises one or more different modules, wherein the method comprises the following steps: - An execution plan is determined by a non-real-time controller, which includes one or more tasks to be performed by the one or more different modules; - At the non-real-time controller, for each of the tasks determined in the execution plan, a task parameter command is sent to the module in these different modules that must execute the task, wherein the task parameter command includes the parameters required to execute the task, and an associated task trigger command is sent to the real-time controller, wherein the task trigger command is configured to instruct the real-time controller to trigger the corresponding module to execute the task associated with the task trigger command; - After receiving these task trigger commands at the real-time controller, these task trigger commands are queued at the real-time controller. as well as - At the real-time controller, queued task trigger commands are executed to trigger the corresponding modules to execute the tasks indicated in the associated task parameter commands; wherein each of these task parameter commands and these task trigger commands sent in relation to the tasks of the execution plan is provided with a synchronization identifier; and - At the real-time controller, these synchronization identifiers are used to align the steps of the one or more tasks performed by the one or more different modules and / or to be performed by the one or more different modules; The step of aligning the one or more tasks includes, at the real-time controller, after triggering the module to execute a task by executing an associated task triggering command at the real-time controller, checking whether the next task depends on the currently executing task by means of the task parameter commands and the synchronization identifiers included in the task triggering commands.

18. The method of claim 17, wherein the step of determining the execution plan includes determining the order in which the tasks need to be performed, and including the tasks to be performed in the determined order in the execution plan.

19. The method of claim 18, wherein the real-time controller executes the queued task trigger commands in the order in which they are received and queued at the real-time controller.

20. The method of any one of claims 17 to 19, wherein the step of executing the queued task trigger commands comprises executing the queued task trigger commands one after another.

21. The method according to any one of claims 17 to 20, further comprising, at the real-time controller, when it is determined that the next task depends on the currently executing task, waiting for confirmation from the module executing the current task that the task has been completed before executing the next task.

22. The method of claim 21, further comprising, at each of the one or more different modules, sending a response message from the module to the non-real-time controller indicating that the task was completed by the module when the task is completed by the module.

23. The method of claim 22, further comprising reporting an error state of a module to the non-real-time controller from the module when the task fails and / or cannot be completed at the specific module, wherein the non-real-time controller triggers an error handling mode after the error state is reported.

24. The method of claim 23, wherein the error handling mode comprises the following steps: - At the non-real-time controller, wait for all response messages from the previously executed tasks from one or more different modules; - Clear all task parameter commands and task trigger commands sent from this non-real-time controller; - Determine whether the error indicated by this error status can be automatically corrected; - Once it is determined that the error can be automatically corrected, the execution plan is redefined and task parameter commands and task trigger commands for the redefined execution plan are sent; - When it is determined that the error cannot be automatically corrected, report the error to the operator and allow the operator to input the correction for the error; - After allowing the operator to input corrections for the error, determine whether the execution plan can be completed without further errors; - Stop executing the execution plan when it is determined that the execution plan cannot be completed without further errors. - Once it is determined that the execution plan can be completed without further errors, the execution plan is redefined and task parameter commands and task trigger commands for the redefined execution plan are sent.

25. A drug dispensing system, comprising one or more different modules, a non-real-time controller, and a real-time controller. The non-real-time controller is operatively connected to each of the one or more different modules and the real-time controller, and The real-time controller is operatively connected to each of the one or more different modules and the non-real-time controller. The non-real-time controller is configured to: - Determine the execution plan, which includes one or more tasks to be performed by the one or more different modules; - For each of the tasks defined in the execution plan, a task parameter command is sent to the module among these different modules that must execute the task, wherein the task parameter command includes the parameters required to execute the task, and an associated task trigger command is sent to the real-time controller, wherein the task trigger command is configured to instruct the real-time controller to trigger the corresponding module to execute the task associated with the task trigger command; wherein each of these task parameter commands and these task trigger commands sent in relation to the tasks of the execution plan is provided with a synchronization identifier; and The real-time controller is configured to: -After receiving these task trigger commands at the real-time controller, queue these task trigger commands; - By using these synchronization identifiers, the one or more tasks performed by and / or to be performed by the one or more different modules are aligned. The step of aligning the one or more tasks includes, at the real-time controller, after triggering the module to execute a task by executing an associated task trigger command at the real-time controller, checking whether the next task depends on the currently executing task by means of these task parameter commands and the synchronization identifiers included in these task trigger commands, and - Execute the queued task trigger command to trigger the corresponding module to execute the task indicated in the associated task parameter command.

26. The system of claim 25, wherein the real-time controller is selected from the group consisting of a programmable logic controller (PLC) and a remote telemetry unit (RTU).

27. The system of claim 25 or 26, wherein the non-real-time controller is operatively connected to each of the one or more different modules and the real-time controller via a non-real-time connection such as an Ethernet connection, and wherein the real-time controller is operatively connected to each of the one or more different modules via a real-time connection such as an EtherCAt and / or a hardware I / O line.