The invention in its several embodiments relates generally to management of machining processes, and more particularly to management and optimization of a machining process for a computer numerical control (CNC) machine tool with a virtual machine-aware kernel.
Computer aided manufacturing (CAM) software systems are used to program computer numerical control (CNC) machine tools that are used in machine shops for the production of discrete parts, such as molds, dies, tools, prototypes, aerospace components and more.
CNC machine tools run a machining program that executes a series of instructions that are steps for the manufacturing of a part. CNC machine tools execute a machining program with no knowledge of the context. Execution of the program is sequential with a very short sight on the future and without a global overview of the processes.
A system for managing and optimizing a machining process for a computer numerical control (CNC) machine tool with a virtual machine-aware kernel is presented. Computer aided manufacturing (CAM) software systems are used to program CNC machine tools that are used in machine shops for the production of discrete parts such as molds, dies, tools, prototypes, aerospace components and more. The CAM software system may include a virtual machine-aware kernel that provides for changing and updating, in real time, a CNC machining program configured to determine a machining process for the CNC machine of the system.
In one embodiment, the system includes a computing device configured to execute processor-executable instructions for a virtual machine-aware kernel that is in communication with a machine, such as CNC machine.
The virtual machine-aware kernel may predict steps for the manufacturing of a virtual machine part by constructing a virtual model of a CNC machine to mimic the CNC machine, providing a 3-dimensional digital representation of the CNC machine. The virtual machine-aware kernel may receive as input virtual data to simulate the real life conditions of the CNC machine milling processes for manufacturing of a machine part. The virtual machine-aware kernel may check, improve, and optimize the program data using the digital representation as a predictive model. Therefore, the virtual machine-aware kernel may allow for intelligent, real-time decision making to avoid defective manufacturing of a machine part.
A system embodiment may comprise: a computer numerical control (CNC) machine having machining tools and configured to execute a series of instructions for machine operation; a computing device may be in communication with the CNC machine, where the computing device having a processor and an addressable memory, is configured to execute a virtual machine-aware kernel processor-executable set of instructions to: (1) determine, via a simulation engine, a virtually simulated real-world CNC machine and associated potential malfunctions based on received data from the CNC machine, the received data comprising program data, controller data, and sensor data; (2) determine, in real-time and while a machining program is being executed by the CNC machine, a modification to the machining program based on the determined virtually simulated real-world CNC machine and associated potential malfunctions, where the modification is based on determination of optimized program data that avoids the associated potential malfunctions; and transmit the determined optimized program data associated with the machine operation to the CNC machine, thereby the CNC machine continues with production and does not stop manufacturing process.
The system may further be where the computing device, via the virtual machine-aware kernel, may be further configured to modify the CNC machining program in real-time thereby predicting potential manufacturing issues and optimizing the data provided in the machining program by updating one or more subsequent steps in the machining program. Additionally, the determined optimized program data associated with the machine operation may provide precise milling operations by predicting future steps for accurate production of discrete machine parts.
In one embodiment, the program data may be a series of instructions to be executed sequentially, providing a machining program to the CNC machine. In another embodiment, the controller data may comprise CNC controller related data, comprising at least one of: tool offset information, work offset information, and machine controller configuration. In another embodiment, sensor data may be data associated with one or more sensors of the CNC machine and where the one or more sensors detect what is occurring during the machining process in real-time. Additionally, the one or more sensors of the CNC machine may be configured to monitor the machine tool by measuring at least one of: the cutting force, vibration amplitude, audible sound from the machining process, and high-frequency sound.
In one embodiment of the system configuration for intelligent predictive engine for management and optimization of machining processes for a CNC machine tool, modification to the machining program may be based on prediction of the potential malfunction, and determined using virtual data generated from the virtually simulated real-world CNC machine. In one embodiment, the potential malfunctions may be execution of CNC machining program that results in damage to the CNC machine, and may comprise at least one of: a tool colliding with a workpiece or with equipment holding the workpiece, damage to a tool due to too much engagement into material, resulting in tool breakage, violation of a target part due a tool cutting too much and gouging into a target part, slow execution where the machine cannot move fast enough because the instructions are not adapted to the machine kinematics, bad surface finish caused by vibrations due to bad cutting conditions or lack of rigidity. In another embodiment, the simulation engine of the virtual machine-aware kernel may be in communication with a motion optimizer engine, a planning engine, and a linking engine.
A method embodiment of the intelligent predictive engine for management and optimization of machining processes for a CNC machine tool, may comprise the steps of: determining, by a simulation engine of a virtual machine-aware kernel, a virtually simulated real-world CNC machine and associated potential malfunctions based on received data from the CNC machine, the received data comprising program data, controller data, and sensor data; determining, in real-time and while a machining program is being executed by the CNC machine, a modification to the machining program based on the determined virtually simulated real-world CNC machine and associated potential malfunctions, where the modification is based on determination of optimized program data that avoids the associated potential malfunctions; and transmitting the determined optimized program data associated with the machine operation to the CNC machine, thereby the CNC machine continues with production and does not stop manufacturing process.
The method may also include embodiments where the simulation engine of the virtual machine-aware kernel may be in communication with a motion optimizer engine, a planning engine, and a linking engine. In one embodiment, the motion optimizer of the virtual machine-aware kernel may be configured to modify tool motion, thus preventing overloading a machine tool and smoothing the tool motion on the physical axes. In another embodiment, the motion optimizer of the virtual machine-aware kernel may be configured to calculate optimized motion via modifying machine tool motion, thus preventing overloading a machine tool and smoothing the tool motion on the physical axes. In yet another embodiment, the motion optimizer of the virtual machine-aware kernel may be configured to verify that the calculated optimized motion is correct by running the calculated optimized motion through the virtually simulated real-world CNC machine. Additionally, the planning engine of the virtual machine-aware kernel may be configured to determine an optimized ordering by modifying the order of the machining processes based on the received sensor data, where the modification may be based on at least one of: minimizing occurrences of changing cutting tools, minimizing number of axis rotations, minimizing total angle of rotation per axis, and minimizing distance of travel of cutting tools.
Embodiments of the method may also include a scenario where the planning engine of the virtual machine-aware kernel may be configured to communicate the determined optimized ordering to the simulation engine for verification and evaluation of cycle times; and the planning engine of the virtual machine-aware kernel may further be configured to communicate the determined optimized ordering to the linking engine for verification and evaluation of cycle times. Additionally, the linking engine of the virtual machine-aware kernel may be configured to connect machining processes with a trajectory adapted to machine kinematics and capabilities associated with the CNC machine, and determine new motions after reordering the machining processes; the linking engine may be further configured to, based on the received data from the planning engine, communicate the determined new motions comprising optimized path, to the simulation engine.
The method embodiment may further be where the simulation engine may be configured to, continuously and in real-time, update the program data received initially from a program data interpreter to optimize the machine processes while the CNC machine is performing associated functions.
The components in the figures are not necessarily to scale, emphasis instead being placed upon illustrating the principals of the invention. Like reference numerals designate corresponding parts throughout the different views. Embodiments are illustrated by way of example and not limitation in the figures of the accompanying drawings, in which:
The described technology concerns one or more methods, systems, apparatuses, and mediums storing processor-executable process steps for managing and optimizing a machining process for a computer numerical control (CNC) machine tool with a virtual machine-aware kernel.
The techniques introduced below may be implemented by programmable circuitry programmed or configured by software and/or firmware, or entirely by special-purpose circuitry, or in a combination of such forms. Such special-purpose circuitry (if any) may be in the form of, for example, one or more application-specific integrated circuits (ASICs), programmable logic devices (PLDs), field-programmable gate arrays (FPGAs), etc.
The described technology may also be practiced in distributed computing environments where tasks or modules are performed by remote processing devices, which are linked through a communications network, such as a Local Area Network (“LAN”), Wide Area Network (“WAN”), or the Internet. In a distributed computing environment, program modules or subroutines may be located in both local and remote memory storage devices. Those skilled in the relevant art will recognize that portions of the described technology may reside on a server computer, while corresponding portions may reside on a client computer (e.g., PC, mobile computer, tablet, or smart phone). Data structures and transmission of data particular to aspects of the technology are also encompassed within the scope of the described technology.
With respect to
In one embodiment, the system 100 includes a computing device 110 that is in communication with a machine, such as CNC machine 102. Generally speaking, the CNC machine 102 may run a machining program that executes a series of instructions, such as steps for the manufacturing of a machine part. The CNC machine 102 may execute the machining program with no knowledge of the context. Furthermore, the execution of the program may be sequential with a very short sight on the future and without a global overview of the processes.
Generally speaking, a kernel is the core computer program of the computing operating system 125. The kernel may handle input/output requests from software, translating them into data-processing instructions for the processor 124. Furthermore, the kernel may be responsible for assigning and un-assigning memory space which allows software to run.
In one embodiment, the CAM software system includes a kernel that is a virtual machine-aware kernel 112. More specifically, the virtual machine-aware kernel 112 is the engine that provides for changing and updating, in real time or near real-time, a CNC machining program configured to determine a machining process for the CNC machine 102 of the system 100. The program may be based on digital representations of the CNC machine 102 and of the CNC machine's 102 equipment and environment, such as by way of 3-dimensional digital representations.
In one embodiment, the computing device 110 may be integrated directly into the CNC machine 102, as shown in
In another embodiment, and with reference to
In one embodiment, the computing device 110 communicates with the virtual machine-aware kernel 112 that is stored in the cloud 116 to execute the steps of the virtual machine-aware kernel 112 for determining a machining process for the CNC machine 102. Therefore, the virtual machine-aware kernel 112 may be available through, for example, the internet as a cloud computing service.
In one embodiment, the virtual machine-aware kernel 112 may predict steps for the manufacturing of a virtual machine part. More specifically, a virtual model of a CNC machine may be constructed to mimic the CNC machine 102, providing a 3-dimensional digital representation of the CNC machine 102. The 3-dimensional digital model may represent the CNC machine 102 exactly, including all of the CNC machine's equipment and configurations—where, for example, all features and capabilities are depicted as accurately as possible. The virtual machine-aware kernel 112 may receive as input virtual (i.e., theoretical) data to simulate the real life conditions of the CNC machine 102 milling processes for manufacturing of a machine part. The virtual machine-aware kernel 112 may check, improve, and optimize the program data using the digital representation as a predictive model. Therefore, the virtual machine-aware kernel 112 may allow for intelligent, real-time decision making to avoid defective manufacturing of a machine part. That is, the CNC machine 102 using the virtual machine-aware kernel 112 may determine machining controls, for example, a tool speed, a tool feed, and a tool acceleration based on determined pivot, velocity, acceleration, and jerk, thereby avoiding any manufacturing defects during the milling process.
The virtual machine-aware kernel 112 may simulate real-world CNC machine malfunctions using the virtual data. This is advantageous because the execution of the CNC machining program may result in damage to the machine if there is no recourse for intelligently modifying the CNC machining program in real time. In one embodiment, the virtual machine-aware kernel 112 may not only predict, for example, a collision or some other malfunction of the machine, but may provide a new path that avoids the collision so the CNC machine 102 does not need to stop the manufacturing process. Configured as such, the virtual machine-aware kernel 112 may dynamically change the tool path, and provide a new trajectory before the initial trajectory commences. Furthermore, the virtual machine-aware kernel 112 may be configured to continually learn as more theoretical data is received, yielding a greater capability to make intelligent decisions, thereby both predicting potential manufacturing issues and optimizing the data provided in the machining program.
Simulating real-world CNC machine malfunctions using virtual data with the virtual machine-aware kernel 112 allows the virtual machine-aware kernel 112 to learn and predict steps to prevent malfunctioning of the CNC machine 102. For example, virtual modeling may present simulation scenarios where the execution of the CNC machining program may result in (1) a tool colliding with a workpiece or with the equipment holding the workpiece; (2) damage to the tool (for example: too much engagement into the material resulting in tool breakage); (3) violation of the target part (for example: a tool cuts too much and gouges into a target part); (4) slow execution (for example: the machine cannot move fast enough because the instructions are not adapted to the machine kinematics); and (5) bad surface finish (for example: vibrations due to bad cutting conditions or lack of rigidity). The virtual machine-aware kernel 112 may make adjustments in real time and dynamically make changes as necessary to prevent these sorts of malfunctions while the program is still being executed to allow the CNC machine 102 to continue production.
With respect to
The virtual machine-aware kernel 112 may further include a motion optimizer 144. At any time during the simulation of a cutting process, the virtual machine-aware kernel 112 may determine the engagement of a tool and the volume of material being removed. This information may be used by the motion optimizer 144 to optimize the motion, thus changing the feedrate to prevent overloading the tool. The virtual machine-aware kernel 112 may also know about the physical axes speeds and accelerations resulting from the programmed feedrate. The motion optimizer 144 may modify the programmed feedrate to smooth the motion of the physical axes. The virtual machine-aware kernel 112 may still further include a planning engine 146, a linking engine 148, a simulation engine 150, a machine feature recognition engine 152, and a toolpath engine 154.
The planning engine 146 may modify the order of the machining processes to minimize the overall cycle time. The optimization may look at minimizing the occurrences of changing the cutting tools, minimizing the number of axis rotations, minimizing the total angle of rotation per axis and minimizing the distance of travel of the cutting tools.
In another embodiment, the setup information may be modified outside of the machine-aware kernel and new setup data is input to the machine-aware kernel 112. The planning engine 146 may reorganize and re-optimize the program for the new setup data. A change of setup may be mounting of additional workpieces to increase production, change of fixturing, and/or merging of programs to combine several machining processes into the same job.
The linking engine 148 is configured to execute or perform connecting the machining processes with a trajectory adapted to the machine kinematics and capabilities. The linking engine computes new motions after reordering the machining processes. The linking engine may compute and determine new motions that are compatible with the machine, safe for the setup, and that may lead to faster execution time compared to a scenario where such modifications were not made.
If the original program contains motions that are a problem for the machine, for example, based on the capabilities of the machine, the linking engine 148 may replace such problematic motions by a new safe and optimized path. Possible problems may also include collision with the machine, tool violating the target part, overtravel motions, motions not respecting the kinematics, and/or performing motions that go beyond the capabilities of the machine.
The simulation engine 150 may virtually animate the machine to visualize the program as it happens on the physical machine. The simulation engine 150 may also monitor the machine state along the program to detect exceptions and issues, for example, collision, part violation, and/or impossible motions. The simulation engine may provide feedback to the end-user of the machine with real time animation or with off-line simulation.
The simulation engine 150 may be used as a service by the other engines of the machine-aware kernel. That is, the simulation engine 150 may be used to predict, evaluate, and/or validate machine calculated paths. For instance, in one embodiment, the linking engine evaluates and validates multiple paths to find the most optimized linking paths. The motion optimizer 144 may then use the simulation engine 150 to verify that the calculated motions are valid for the machine. The planning engine 146 may use the simulation engine to evaluate the cycle times.
The machining feature recognition engine 152 may perform an analysis of the part model and recognizes machining features and categorizes the features: Hole, pocket, boss, wall, etc. Each feature is further described by machining information. For instance, a hole may be further described as a tapped hole or a countersink hole. The toolpath engine 154 may calculate a geometric toolpath to cut a machining feature.
As described above, the disclosed embodiments of the virtual machine-aware kernel 112 may determine and predict steps for the manufacturing of a virtual machine part based on simulations performed on an accurate digital representation of the CNC machine 102. The virtual machine-aware kernel 112 may then execute these steps on the CNC machine 102, thus running a virtual model on the real-world CNC machine 102. In this way, the virtual machine-aware kernel 112 is the engine that provides for changing and updating, in real time, the steps, and hence, the machining program configured to determine a machining process for the CNC machine 102.
Real-world situations may be encountered by the virtual machine-aware kernel 112 that have not been simulated, thus requiring modification of the predictive virtual engine. Therefore, it is desired to have the virtual machine-aware kernel 112 retrieve as much data as possible in order to optimize the data to make adjustments in real-time and dynamically make changes as necessary while the machining program is being executed.
With respect to
In one embodiment, the sensors 114 may detect what is occurring during the machining process in real-time. For example, machining (i.e., milling) of a tool may include a sequence of evermore precise and refined cuts. The sensors 114 may detect a cutting speed of a machining tool and the virtual machine-aware kernel 112 receives the data from the sensors 114, such as the cutting speed. For example, the virtual machine-aware kernel 112 may detect that cutting speed is too fast or too slow at any given step as compared to what was predicted by the virtual machine-aware kernel 112 in the virtual model. The virtual machine-aware kernel 112 then manages the CNC machine 102 by reinterpreting and optimizing the data received from the sensors 114 (as well as the program data 156 and the controller data 158) in order to update the machining program in real-time to adjust the cutting speed to be at a cutting speed that makes the milling process more precise. More specifically, the virtual machine-aware kernel 112 updates the subsequent steps in the program (not only the next step, but several steps down the line), making the milling more and more precise. Thus, the sensors 114 detect what is happening in the CNC machine 102 and the virtual machine-aware kernel 112 adjusts the virtual model in real-time based on the data received from the sensors 114. Therefore, the virtual machine-aware kernel 112 may continually become more capable of predicting future steps for accurate production of discrete machine parts.
With respect to
In one embodiment, Numerical Control (NC) program 156 may be interpreted by the program data converter 130 and converted to program data collection by the program manager component 180 for the virtual machine-aware kernel 112. After processing, the virtual machine-aware kernel 112 may return an optimized program, or NC code, such as direct instructions to a CNC controller 102 or the CAM system. In another embodiment, the CNC machine controller 102 may directly provide program data to the virtual machine-aware kernel 112 (not shown in
In one embodiment, the CNC machine 102 may be equipped with sensors 114, and sensor data may be sent to a sensor data collection 160 component. The sensors 114 may be used to monitor tool condition in machining process by, for example, measuring the cutting force (with a multi-channel table dynamometer or rotating dynamometer); vibration amplitude using multi-channel accelerometers; audible sound from the machining process; high-frequency sound or acoustic emission. In other embodiments, sensor-less machine tool monitoring may be performed by measuring internal drive signals such as: feed motor current, spindle motor current, spindle power. In yet other embodiments, a combination of the sensor and sensor-less measuring and monitoring may be implemented. The sensor data may then be passed to the program data converter 130 for enhanced optimization.
In further detail, in one embodiment, the simulation engine 150 may determine a virtual animation of the CNC machine to visualize the program data as it is executed on the physical CNC machine in real time. The simulation engine 150 may monitor the CNC machine state to detect potential issues, such as collision, part violation, impossible motions, and the like. The simulation engine 150 may provide feedback to an end-user 170 of the CNC machine with real-time animation or with an off-line simulation.
The motion optimizer engine 144, the planning engine 146 and the linking engine 148 communicate with the simulation engine 150 to evaluate alternative solutions and to validate solutions. For example, the motion optimizer engine 144 optimizes the motions, such as changing the feedrate to prevent overloading the tool. The motion optimizer 144 may also modify the programmed feedrate to smooth the motion of the physical axes. The planning engine 146 may modify the order of the machining processes to minimize the overall cycle time. The optimization may look at a number of factors, for example: minimizing the occurrences of changing the cutting tools, minimizing the number of axis rotations, minimizing the total angle of rotation per axis and/or minimizing the distance of travel of the cutting tools. The planning engine 146 may then communicate the optimized ordering to the simulation engine 150 for verification and evaluation of cycle times.
The linking engine 148, in turn may connect the machining processes with a trajectory adapted to the machine kinematics and capabilities. The linking engine 148 computes new motions after reordering the machining processes. The linking engine 148, based on the received data from the planning engine 146, communicates the most optimized path to the simulation engine 150, which evaluates and verifies the most optimized path. In one embodiment, if the original program contains motions that pose a problem for the CNC machine 102 to execute, the linking engine 148 may recalculate and replace the motions with a new optimized path in order to avoid such problems that may occur during execution by the CNC machine 102. Some examples of possible problems that may occur during execution by the CNC machine 102 may include: collisions within the machine, tool violating the target part, over-travel motions, and/or motions not respecting the kinematics and the capabilities of the machine.
In one embodiment, the sensor data may be used by the motion optimizer 144 to, for example, optimize the motion, thus changing the feedrate to prevent overloading the tool. The motion optimizer 144 may also modify the programmed feedrate to smooth the motion of the physical axes. The motion optimizer 144 may use the simulation engine 150 to verify that the calculated optimized motion is correct, and, in turn, communicate the optimized federate back to the simulation engine 150. The planning engine 146 may receive as input, the sensor data from the simulation engine 150 to modify the order of the machining processes and for example, to minimize the overall cycle time. The optimization may be determined based on a number of factors, for example: minimizing the occurrences of changing the cutting tools, minimizing the number of axis rotations, minimizing the total angle of rotation per axis and/or minimizing the distance of travel of the cutting tools, etc. The planning engine 146 may then communicate the optimized ordering to the simulation engine 150 for verification and evaluation of cycle times.
In another embodiment, the planning engine 146 may communicate the ordering to the linking engine 148 to evaluate and optimize cycle times. The linking engine 148, in turn may connect the machining processes with a trajectory adapted to the machine kinematics and capabilities. The linking engine 148 may then compute and determine new motions after reordering the machining processes. The linking engine 148, based on the received data from the planning engine 146, may communicate the most optimized path to the simulation engine 150, which evaluates and verifies the most optimized path. In one embodiment, the simulation engine 150 may dynamically, and in real-time, update the program data received initially from the program data interpreter 130. In one embodiment, the simulation engine 150 may perform this task based on received sensor data from the sensor data collection component 172, linking engine component 148, planning engine component 146, and motion optimizer component 144 as depicted. Accordingly, based on the input data received from the aforementioned components, the simulation engine 150 may continuously optimize the machine processes while the CNC machine is performing associated functions.
Information transferred via communications interface 514 may be in the form of signals such as electronic, electromagnetic, optical, or other signals capable of being received by communications interface 514, via a communication link 516 that carries signals and may be implemented using wire or cable, fiber optics, a phone line, a cellular/mobile phone link, an radio frequency (RF) link, and/or other communication channels. Computer program instructions representing the block diagram and/or flowcharts herein may be loaded onto a computer, programmable data processing apparatus, or processing devices to cause a series of operations performed thereon to produce a computer implemented process.
Embodiments have been described with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments. Each block of such illustrations/diagrams, or combinations thereof, may be implemented by computer program instructions. The computer program instructions when provided to a processor produce a machine, such that the instructions, which execute via the processor, create means for implementing the functions/operations specified in the flowchart and/or block diagram. Each block in the flowchart/block diagrams may represent a hardware and/or software module or logic, implementing embodiments. In alternative implementations, the functions noted in the blocks may occur out of the order noted in the figures, concurrently, etc.
Computer programs (i.e., computer control logic) are stored in main memory and/or secondary memory. Computer programs may also be received via a communications interface 512. Such computer programs, when executed, enable the computer system to perform the features of the embodiments as discussed herein. In particular, the computer programs, when executed, enable the processor and/or multi-core processor to perform the features of the computer system. Such computer programs represent controllers of the computer system.
The server 630 may be coupled via the bus 602 to a display 612 for displaying information to a computer user. An input device 614, including alphanumeric and other keys, is coupled to the bus 602 for communicating information and command selections to the processor 604. Another type or user input device comprises cursor control 616, such as a mouse, a trackball, or cursor direction keys for communicating direction information and command selections to the processor 604 and for controlling cursor movement on the display 612.
According to one embodiment, the functions are performed by the processor 604 executing one or more sequences of one or more instructions contained in the main memory 606. Such instructions may be read into the main memory 606 from another computer-readable medium, such as the storage device 610. Execution of the sequences of instructions contained in the main memory 606 causes the processor 604 to perform the process steps described herein. One or more processors in a multi-processing arrangement may also be employed to execute the sequences of instructions contained in the main memory 606. In alternative embodiments, hard-wired circuitry may be used in place of or in combination with software instructions to implement the embodiments. Thus, embodiments are not limited to any specific combination of hardware circuitry and software.
The terms “computer program medium,” “computer usable medium,” “computer readable medium”, and “computer program product,” are used to generally refer to media such as main memory, secondary memory, removable storage drive, a hard disk installed in hard disk drive, and signals. These computer program products are means for providing software to the computer system. The computer readable medium allows the computer system to read data, instructions, messages or message packets, and other computer readable information from the computer readable medium. The computer readable medium, for example, may include non-volatile memory, such as a floppy disk, ROM, flash memory, disk drive memory, a CD-ROM, and other permanent storage. It is useful, for example, for transporting information, such as data and computer instructions, between computer systems. Furthermore, the computer readable medium may comprise computer readable information in a transitory state medium such as a network link and/or a network interface, including a wired network or a wireless network that allow a computer to read such computer readable information. Computer programs (also called computer control logic) are stored in main memory and/or secondary memory. Computer programs may also be received via a communications interface. Such computer programs, when executed, enable the computer system to perform the features of the embodiments as discussed herein. In particular, the computer programs, when executed, enable the processor multi-core processor to perform the features of the computer system. Accordingly, such computer programs represent controllers of the computer system.
Generally, the term “computer-readable medium” as used herein refers to any medium that participated in providing instructions to the processor 604 for execution. Such a medium may take many forms, including but not limited to, non-volatile media, volatile media, and transmission media. Non-volatile media includes, for example, optical or magnetic disks, such as the storage device 610. Volatile media includes dynamic memory, such as the main memory 606. Transmission media includes coaxial cables, copper wire and fiber optics, including the wires that comprise the bus 602. Transmission media may also take the form of acoustic or light waves, such as those generated during radio wave and infrared data communications.
Common forms of computer-readable media include, for example, a floppy disk, a flexible disk, hard disk, magnetic tape, or any other magnetic medium, a CD-ROM, any other optical medium, punch cards, paper tape, any other physical medium with patterns of holes, a RAM, a PROM, an EPROM, a FLASH-EPROM, any other memory chip or cartridge, a carrier wave as described hereinafter, or any other medium from which a computer may read.
Various forms of computer readable media may be involved in carrying one or more sequences of one or more instructions to the processor 604 for execution. For example, the instructions may initially be carried on a magnetic disk of a remote computer. The remote computer may load the instructions into its dynamic memory and send the instructions over a telephone line using a modem. A modem local to the server 630 may receive the data on the telephone line and use an infrared transmitter to convert the data to an infrared signal. An infrared detector coupled to the bus 602 may receive the data carried in the infrared signal and place the data on the bus 602. The bus 602 carries the data to the main memory 606, from which the processor 604 retrieves and executes the instructions. The instructions received from the main memory 606 may optionally be stored on the storage device 610 either before or after execution by the processor 604.
The server 630 also includes a communication interface 618 coupled to the bus 602. The communication interface 618 provides a two-way data communication coupling to a network link 620 that is connected to the world wide packet data communication network now commonly referred to as the Internet 628. The Internet 628 uses electrical, electromagnetic or optical signals that carry digital data streams. The signals through the various networks and the signals on the network link 620 and through the communication interface 618, which carry the digital data to and from the server 630, are exemplary forms or carrier waves transporting the information.
In another embodiment of the server 630, interface 618 is connected to a network 622 via a communication link 620. For example, the communication interface 618 may be an integrated services digital network (ISDN) card or a modem to provide a data communication connection to a corresponding type of telephone line, which may comprise part of the network link 620. As another example, the communication interface 618 may be a local area network (LAN) card to provide a data communication connection to a compatible LAN. Wireless links may also be implemented. In any such implementation, the communication interface 618 sends and receives electrical electromagnetic or optical signals that carry digital data streams representing various types of information.
The network link 620 typically provides data communication through one or more networks to other data devices. For example, the network link 620 may provide a connection through the local network 622 to a host computer 624 or to data equipment operated by an Internet Service Provider (ISP). The ISP in turn provides data communication services through the Internet 628. The local network 622 and the Internet 628 both use electrical, electromagnetic or optical signals that carry digital data streams. The signals through the various networks and the signals on the network link 620 and through the communication interface 618, which carry the digital data to and from the server 630, are exemplary forms or carrier waves transporting the information.
The server 630 may send/receive messages and data, including e-mail, program code, through the network, the network link 620 and the communication interface 618. Further, the communication interface 618 may comprise a USB/Tuner and the network link 620 may be an antenna or cable for connecting the server 630 to a cable provider, satellite provider or other terrestrial transmission system for receiving messages, data and program code from another source.
The example versions of the embodiments described herein may be implemented as logical operations in a distributed processing system such as the system 600 including the servers 630. The logical operations of the embodiments may be implemented as a sequence of steps executing in the server 630, and as interconnected machine modules within the system 600. The implementation is a matter of choice and may depend on performance of the system 600 implementing the embodiments. As such, the logical operations constituting said example versions of the embodiments are referred to for e.g., as operations, steps or modules.
Similar to a server 630 described above, a client device 601 may include a processor, memory, storage device, display, input device and communication interface (e.g., e-mail interface) for connecting the client device to the Internet 628, the ISP, or LAN 622, for communication with the servers 630.
The system 600 may further include computers (e.g., personal computers, computing nodes) 605 operating in the same manner as client devices 601, where a user may utilize one or more computers 605 to manage data in the server 630.
Referring now to
It is contemplated that various combinations and/or sub-combinations of the specific features and aspects of the above embodiments may be made and still fall within the scope of the invention. Accordingly, it should be understood that various features and aspects of the disclosed embodiments may be combined with or substituted for one another in order to form varying modes of the disclosed invention. Further, it is intended that the scope of the present invention is herein disclosed by way of examples and should not be limited by the particular disclosed embodiments described above.
This application claims priority to and the benefit of U.S. Provisional Patent Application No. 62/879,355, filed Jul. 26, 2019, the contents of which are hereby incorporated by reference herein for all purposes.
Number | Date | Country | |
---|---|---|---|
62879355 | Jul 2019 | US |