A printing system with optional devices connected in series

Abstract: A print system (5) comprises a printer (10) including a printer controller (10a). One or more optional support devices (12,14,16,18,20,22,24,26,27) are associated with the printer, wherein each optional support device includes a device controller. The system further includes a bidirectional serial communications path, including one or more trunklines (30,31,32,33), which provides serial electrical interconnection between the printer controller (10a) and each device controller of each optional support device (12,14,16,18,20,22,24,26,27) of the system. The printer controller (10a) automatically assigns a unique device address to each optional support device. Each optional support device further includes logic circuitry which, based upon a command of the printer controller, enables passage of information generated by the printer controller through a first optional support device to a next electrically serially connected optional support device following an assignment of a first device address to the first optional support device.

Description: The present invention relates to imaging systems with printers and optional support devices therefor, and more particularly relates to printers, such as laser printers, having options (e.g. paper handling devices) which contain electronic intelligence for carrying out local option functions commanded by the printer. Imaging, or printing, systems typically include a base printer, which places marks (i.e., prints) on a print receiving media (e.g., paper) and media handling options, or devices, that perform various functions such as, for example, providing for multiple paper input sources, multiple paper output destinations, duplexing (i.e., 2-sided printing on the media), stacking and collating. Such printer systems include a base printer having a printer controller, or engine controller, including a microprocessor and associated electronic units. Control of the printer and paper handling facets of such a simple print system are handled by the printer controller. As printer systems add a small number of optional devices, such as additional input sources, the control of the additional devices is provided by the printer controller. For example, the printer option might have electronics to control portions of its own mechanism in which case the printer controller controls the mechanism of the optional device directly through discrete electrical signals or via a unidirectional serial transmission, i.e., communications from the engine controller to the device only. The printer controller controls the optional device directly with dedicated electrical signal lines used to turn a device motor on, turn the motor off, activate a device clutch, etc. As printer systems become more complex, it is impractical for the printer's engine controller to directly control the entire printer system's electro-mechanical mechanism. Thus, printer systems have migrated to an architecture in which the printer acts as a "master" of "smart" or intelligent optional devices. Each intelligent optional device typically contains a microprocessor and associated electronics and microcode, to control its own electro-mechanical mechanism. The printer controller, in turn, controls or manages the function of the optional devices as black boxes via a communications interface. The presence of options with intelligence, of course, raises other kinds of problems. For example, optional devices with intelligence are usually controlled by a low function microcontroller with a built in UART to perform the serial communications task with the printer. These low level microcontrollers usually only operate at a low communications or baud rate. When the printer has to communicate with several optional devices and issue several commands to each device, a communications bus bandwidth problem is presented, i.e., communications to the devices cannot be accomplished in sufficient time to support the printer's and/or device's operation. Another problem with such a serial interface is that the printer often must send the same command (or instruction) to every optional device in the printer system. A good example of this is when the printer needs to instruct all the devices to "reset" themselves to their default conditions. The simplistic approach for accomplishing this is for the printer to address every device, one at a time, sending the devices the same command until every device in the printer system has received the printer's instruction. Another distinct problem in a system utilizing a serial communications bus to interconnect master and optional devices relates to the detection and reporting of transmission errors. With respect to errors in transmission detected by the printer controller (master) in a master/optional device relationship, typical solutions specify that the master resend a command if the master has determined that a transmission error occurred on the initial transmission. However, there are limitations in such solutions. Such solutions lack effective or efficient means for terminating a multi-byte command that is in progress when the master detects the transmission error, so that both the master and optional devices reset their command processing successfully. Solutions for doing so are often complicated because the syntax (number of command bytes, number of response bytes) for the command may depend on the command op code (or its equivalent), and/or length fields that define the length of the command or response at the time the command/response is sent. Errors that occur in the command op code, command length field, or response length field are particularly difficult for prior art solutions to deal with. Also, such solutions do not provide a simple means for allowing the master to report the transmission error immediately to a optional device in the middle of a command/response that is in progress. Generally, the master will attempt to finish a command/response that is in progress even though the transmission error may have altered the command syntax that is being assumed by the optional device. Since the master attempts to complete the command, the device will receive a complete command that may contain erroneous data, or may actually be a different command than was intended. With respect to errors detected by an optional device, one of two approaches is typically used to allow an optional device to report a detected transmission error to the master controller. The first solution is to reserve a special response byte value, such as 255, solely for reporting a transmission error. A device is then not permitted to ever use the value 255 as a response byte unless it is attempting to report a transmission error. For example, a device could never report, in a single byte, that it had a capacity of 255 sheets. This sort of scheme is cumbersome, and is particularly difficult if the device must report measured data, which may return any range of values. The second solution is to specify that a device stops responding to the master if the device detects a transmission error. After timing-out when waiting for a response that was never sent, the printer controller (master) then resends the command that was not completed. Generally, if there is no response to the retry, the master must declare that the optional device has experienced a fatal error. The limitation of this scheme is that the master cannot differentiate an "ailing" communications link from a general device malfunction that prevents the device from responding or prevents it from executing its control code reliably. Hence, the device cannot be serviced efficiently because the error cannot be accurately reported with this solution. Another problem that exists with a multiple paper handling options printer system is the means by which addresses are allocated for each option. One traditional scheme for setting the device's communication address is sometimes referred to as "Hard Coded Device Software". In this scheme, at design time the engineers of the printer system decide upon a unique address for each and every device making up the printer system. Then, each device "hard codes" its assigned address into its device software; thus, allowing such a device to communicate with the printer when addressed. The major disadvantage to this method is the fact that only one of any particular device can be configured as part of the printer system. Another disadvantage is that when it is attempted to connect and use the device in some other printer system, it may require a microcode modification to change its hard coded device address because the hard coded value may already exist for some other device in the other printer system. Thus, this device addressing method is inflexible. Another traditional way in which the device's communication address may be set is often referred to as "Customer Settable Dip Switches". Each device has a set of dip switches on its electronics card. The setting of the dip switches is used to set the device's communications address. This method requires the customer to open up each device and set the dip switches according to a procedure found in their printer's user's guide. For example, the customer would begin by directly attaching devices to the printer and setting their dip switches to a certain value, and continue until all the devices in the printer system had their dip switches set. For this method, the customer may be also required to set a dip switch on the printer's electronic card indicating the number of devices attached to the printer system. A significant amount of customer setup time is required for a printer system with only a few optional devices, let alone a printer system with a moderate to a large number of devices. Devices employing this method are often costly to manufacture because each device, and the printer itself, must provide for customer accessibility to the dip switches. Still another traditional way of setting the communication address of an optional device is often referred to as "Customer Settable NVRAM". For this method, the customer again follows a procedure in the user's guide of which part of this procedure is typing the device's address in via a keyboard or operator panel, and then writing into the device's NVRAM (nonvolatile random access memory) the address of a specified device. A part of this procedure requires the device to be directly attached to the "input hardware" used to set the device's address. From a customer standpoint, the most convenient "input hardware" would be the printer itself; however, most printers do not have a keyboard or operator panel suitable for entering devices' addresses, due to cost considerations. A personal computer may be a good second choice, but not all printer systems are attached to a personal computer allowing the luxury of using it as an input for the device addresses. Moreover, even if a personal computer were available, the customer would be required to connect the printer to a single optional device, use the personal computer to assign the device its address (per the procedure listed in the printer's user's guide), followed by disconnecting the device so another device could have its address set. Once this was done for all the devices, the customer could then setup the entire printer system. Thus, this method also may require a significant amount of customer setup time. Accordingly, such an NVRAM approach to printer option setup is not found on low cost personal or network printers. Moreover, since this method is "difficult" for most customers and customers these days are more and more sensitive to usability issues, including initial installation & setup, currently marketed printer systems generally do not employ this method to avoid the risk of being deemed "noncompetitive" by customers. WO 96/27838 discloses an apparatus for registering a sheet being transported along a path using first and second sensors. The features in the preamble of claim 1 are known from WO 96/27838. With the increase in function and sophistication of printer systems, a more efficient and cost effective printer system control apparatus and method which addresses the above-mentioned shortcomings are desired. The present invention is directed to a printing system, comprising: a printer including a printer controller; at least one support device, the or each support device including a device controller; and a bi-directional serial communications path interconnecting said printer controller and the or each device controller, said printing system being characterised by said printer controller being configured to automatically assign a or a respective unique device address to the or each support device in said system. In preferred embodiments of the invention, the support device further includes logic circuitry which continues the first trunkline through the first support device when enabled by the system. Thus, the first trunkline is effectively extended through the first support device to a next support device when the first logic circuit of the first support device is enabled. During initialization of the system, the printer controller sequentially and automatically commands any support device in the system to respond to a unique device address. Preferably, the system includes a plurality of trunklines which extend from a common electrical connection to a communication bus. In systems of the invention which include a plurality of trunklines, each trunkline has a unique trunkline address of a plurality of possible trunkline addresses, and any support device connected in the system is originally programmed to respond to one unique trunkline address of the plurality of trunkline addresses. Other features and advantages of the invention may be determined from the drawings and detailed description of the invention, given by way of example only, that follow. In the drawings: Fig. 1 is a simplified schematic diagram illustrating the paper path for an imaging system which includes a printer and several intelligent options; Fig. 2 is a further schematic drawing for a system, illustrating the manner in which a printer with four trunklines are connected via a bi-directional communication bus to intelligent optional support devices which are serially connected (daisy chained) in each trunkline; Fig. 3 is a 11 bit serial frame employed with the serial, bi-directional communication scheme of the present invention; Fig. 4 is a logical, functional representation of special intelligent hardware inside each optional support device ; Fig. 5 is a diagrammatic flow chart indicating the manner in which, at initialization, each optional support device is given a unique address by the printer controller such that each individual optional support device may be addressed and given separate commands; Fig. 6 is a diagrammatic representation of the standard communications syntax for a single optional support device, and illustrating the addressing of the single support device and a command sent (transmitted) by the printer controller and the responses sent by the addressed optional support device; Fig. 7 is a diagrammatic representation of the non-echoing communications syntax (non-echoing) for a single optional support device, and illustrating commands sent (transmitted) by the printer controller and responses sent by the addressed optional support device ; Fig. 8 is a diagrammatic representation of the standard communications syntax for multiple devices, and illustrating a feature of the present invention in which a "broadcast address" byte is given to command all optional support devices in all of the trunklines, that the commands that follow are applicable to all devices, and the command bytes are echoed only by one single designated optional support device; and Fig. 9 is a diagrammatic representation of the general format for a "communications session". Fig. 1 diagramatically illustrates an expandable imaging system 5 which includes, for example, printer 10, such as a laser printer, coupled to a plurality of optional support devices 12, 14, 16, 18, 20, 22, 24, 26, and 27. Printer 10 and each of the optional support devices 12, 14, 16, 18 20, 22, 24, 26 and 27 are intelligent devices, in that each includes a programmable processor and associated memory. In preferred embodiments of the invention, printer 10 includes a power supply capable of supplying the electrical power requirements of system 5, including supplying electrical power to the optional support devices. Printer 10 includes a printer controller 10a which performs tasks associated with generating a printed page, which include the task of providing master control over the operation of all of the optional support devices of system 5. In addition, printer controller 10a manages data communication within system 5, and includes, for example, a universal asynchronous receiver transmitter (UART). Printer controller 10a initiates all communications within system 5. Thus, optional support devices 12, 14, 16, 18, 20, 22, 24, 26 and 27 are subservient devices which perform and respond based on the commands, including polling requests, issued by printer controller 10a. The optional support devices may comprise, for example, a plurality of media input sources such as a dual paper input tray 12, a pair of single paper input trays 14 and 16, and an envelope feeder 26; a duplexer 18; and a plurality of output media receptacles, such as paper output trays 20, 22 and 24, and miscellaneous output devices 27, such as a collator or a mailbox unit. The arrows 21, 23 and 25 generally indicate the direction of paper flow, while the dotted lines indicate a paper path 19 through both printer 10 and the optional support devices 12, 14, 16, 18, 20, 22 and 24. It should be recognized that there are numerous other paper handling devices that may be utilized with the printer as optional support devices, such as for example, output sorters and sorter/mailboxes. As is conventional in paper handling optional support devices, one or more sensors S are positioned adjacent to paper path 19 to determine paper position, or other information necessary for proper operation of the printer 10 and the optional support devices. Although the optional support devices described above are examples of paper handling devices, it should be noted that the optional support devices for system 5 are not limited to be paper handling devices. To maintain overall control of the entire paper path 19, printer controller 10a sends commands to the optional support devices, which in turn send appropriate responses to these commands. As an example, printer controller 10a will send a command to pick a sheet from a media input source, e.g., one of the devices 12, 14 and 16, to cause a single sheet of paper to be fed into paper path 19 headed in the direction of the arrow heads. Thereafter, printer controller 10a will send a command to query the status of an optional support device to determine if that optional support device has detected any errors during the picking and feeding of a single sheet of paper into printer 10. Fig. 2 is a schematic illustration of a bi-directional communications interface used between printer 10 and the optional support devices 12, 14, 16, 18, 20, 22, 24, 26, 27a, and 27b. Printer controller 10a of printer 10 and the optional support devices communicate via a two-wire serial bus 13 and a plurality of trunklines 30, 31, 32, and 33. Communication between printer controller 10a and each of the optional support devices results in an information transfer therebetween in a frame, wherein each frame includes a predefined quantity of bits, such as for example, the eleven bit frame shown in Fig. 3. Upon the startup, or power on reset (POR) of system 5, printer controller 10a initiates communication with the optional support devices by assigning a unique address to each of the optional support devices. Thereafter, data communication between printer controller 10a and each of the optional support devices can commence at the directive of printer controller 10a. Referring to Fig. 2, bi-directional communications between printer controller 10a and the optional support devices is achieved, in part, via a plurality of separate communications trunklines 30, 31, 32, and 33 coupled to bus 13. In preferred embodiments of the invention, each communication trunkline is associated with a separate physical communication connection, or port, of printer 10 to which one optional support device is allowed to mechanically (or physically) attach. Each trunkline has a predefined unique communications address which will be referred to as a "trunkline address". In preferred embodiments of the invention, each optional support device is designed for electrical attachment to one of the trunklines 30, 31, 32, and 33, and in turn is associated with the corresponding trunkline address. For example, as shown in Fig. 2, envelope feeder 26 is electrically coupled to printer 10 via trunkline 30; input trays 12, 14 and 16 and duplexer 18 are electrically coupled to printer 10 via trunkline 31; miscellaneous output devices 27a and 27b are electrically coupled to printer 10 via trunkline 32; and output trays 20, 22, and 24 are electrically coupled to printer 10 via trunkline 33. Where multiple optional support devices, such as devices 12, 14, 16, and 18, are coupled to a common trunkline, such as trunkline 31, the multiple optional support devices are coupled one to another in a daisy-chain fashion. System 5 initialization occurs at power-on reset, and can occur at times selected by printer controller 10a after POR. The key activities comprising initialization are described below. At the time of system 5 initialization, none of the optional support devices have been assigned a device address by printer controller 10a; however, each optional support device assumes its predefined trunkline address, which resides in the device read only memory (ROM). Also, at initialization of system 5, the initial hardware/software state of each of the optional support devices is such that the next optional support device in the daisy-chain (on the same trunkline) is logically disconnected from bus 13. Thereafter, printer controller 10a sequentially assigns a unique device address to each optional support device, device by device, on each trunkline as a part of the system 5 initialization activities. This invention, in which optional support devices in system 5 are assigned device addresses by printer controller 10a, is done automatically by printer controller 10a without operator assistance. Referring now to Fig. 4, communications bus 13 is shown which includes printer transmit line Txd and printer 10 receive line Rxd. During system 5 initialization, each optional support device is responsible for selectively establishing a logical continuation of the printer transmit path Txd of communication bus 13 to the "next" optional support device. For example, as shown in Figs. 2 and 4, optional support device 18 provides selective logical continuation of the printer 10 transmit path Txd to optional support device 16; optional support device 16 provides selective logical continuation of the printer 10 transmit path Txd to the optional support device 14; and optional support device 14 provides selective logical continuation of the printer 10 transmit path Txd to optional support device 12. Also, the daisy-chained optional support devices provide ungated electrical continuation of the printer 10 receive path Rxd, from one device to the next in the daisy-chain to printer 10. By way of example, Fig. 4 schematically illustrates the electrical connections and circuitry associated with optional support devices 16 and 18, and it is to be understood that similar electrical connections and circuitry are present as to each optional support device of system 5. Optional support device 16 includes a controller 16a comprising a microprocessor, UART and associated logic, and logic gate 16b; and, optional support device 18 includes a controller 18a comprising a microprocessor, UART and associated logic circuitry, and logic gate 18b. Optional support device 18 is directly electrically connected to communications bus 13 via trunkline 31, such that printer line Txd is connected to a first input of the two input NAND gate 18b. Printer line Txd is also connected to a device receive port 17a of controller 18a. An enable output 17b of controller 18a is coupled to a second input of two input NAND gate 18b. Controller 18a further includes a transmit port 17c directly connected to printer receive line Rxd. NAND gate 18b further includes an output which is coupled via trunkline 31 to a first input of the two input NAND gate 16b. The output of NAND gate 18b is also connected to a device receive port 15a of controller 16a. An enable output 15b of controller 16a is coupled to a second input of two input NAND gate 16b. Controller 16a further includes a transmit port 15c directly connected to printer receive line Rxd via trunkline 31. Thus, as shown in Fig. 4, when NAND gate 18b is enabled, printer line Txd and trunkline 31 are effectively continued through optional support device 18. Also, when NAND gate 16b is enabled, printer line Txd and trunkline 31 are effectively continued through optional support device 16. Prior to initialization of system 5, each optional support device assumes the trunkline address which is stored in read only memory in the controller of the optional support device, and each optional support device logically discontinues the printer line Txd to the next downline device in the daisy-chain by disabling its associated logic gate. During initialization of system 5, however, printer controller 10a sequentially brings each optional support device online by assigning a unique device address to each optional support device, and after the unique device is assigned to a particular optional support device, then printer controller 10a commands that optional support device to enable its associated logic gate so as to continue printer transmit line Txd of communications bus 13 and associated trunkline to the next optional support device in the daisy-chain. The details of the device address assignment process are explained below with reference to Figs. 2 and 5. Fig. 5 illustrates the process of assigning device addresses to each optional support device on a particular trunkline of system 5. It should be understood that in preferred embodiments of the invention, this process is repeated for each trunkline of system 5 until all optional support devices have been assigned a unique device address. Printer controller 10a (Fig. 2) of the printer 10, in conjunction with special communications bus hardware, utilizes a specific procedure at initialization of system 5 to assign each optional support device its unique device address. At initialization, printer 10 selects an initial trunkline (step 35) . At step 36, printer controller 10a sends via printer transmit line Txd a frame of information containing a trunkline address associated with the selected trunkline. Then, at step 37, printer controller 10a determines whether the optional support device received the trunkline address by awaiting an acknowledgment (the trunkline address echo) within a predefined time period from the device via printer receive line Rxd. If there is no response received by printer controller 10a, i.e. the answer to decision block 37 is "No", then the process is complete for that trunkline (step 39), i.e., no further devices are recognized as being connected to the selected trunkline. Processor 10a then determines at step 41 whether all trunklines have been serviced. If "Yes", then address assignment is complete (step 47) for system 5. If "No", there are further trunklines to be considered then at step 43 the next trunkline is selected and the address assignment resumes at step 36. If, however, it is determined by printer controller 10a at step 37 that the optional support device received the trunkline address based upon the timely receipt of an acknowledgment from the optional support device via printer receive line Rxd, then at step 38 printer controller 10a assigns a unique device address to the optional support device. At step 40, the optional support device modifies its address to that of the assigned device address. Now that the optional support device has received its unique device address it will, for all future communications with the printer 10, only respond to the printer when addressed via the unique device address just assigned. At step 45, printer controller 10a sends to the optional support device a command to logically connect the next optional support device in the daisy-chain, if any, and in response at step 46, the device enables the gate logic (see Fig. 4) to continue the printer transmit line Txd to the next optional support device in the daisy-chain. Thus, for example, the first optional support device 18 on the trunkline 31 has its own unique device address, and printer controller 10a can communicate with the "next" daisy-chained device 16 by addressing optional device 16 via the trunkline address. Note that the "previous" device 18 will no longer respond to the trunkline address, since optional support device 18 has received its unique device address. Printer controller 10a then repeats this procedure with the "next" device 16 to assign to device 16 a unique device address. It is now apparent that this process is repeated until each optional support device 18, 16, 14, and 12 on trunkline 31 is assigned a unique device address (steps 36, 37, 38, 40, 45, 46), and then the process continues through steps 39, 41, 43 to select a next trunkline, e.g., one of trunklines 30,32, and 33, at which time steps 36, 37, 38, 40, 45, 46 are performed for each optional support device on the next selected trunkline. Following is a description of the communications interface which is the method by which individual frames, containing bytes of information, are transmitted between the master printer controller 10a and the optional support devices. Referring to Fig. 4, the physical communications bus 13 is a serial interface with separate printer transmit (Txd) and receive (Rxd) signal lines. The printer controller 10a and optional support devices transmit information frame-by-frame via UARTs (Universal Asynchronous Receiver/Transmitters). Although this hardware configuration could support full duplex communications (data transmitted simultaneously on the Txd and Rxd lines), the communications protocol, set forth hereinafter, specifies that the Txd and Rxd lines are not simultaneously active. Referencing Fig. 3, information is transmitted serially in an 11-bit frame: a start bit (value 0), an information field comprised of 8 data bits (LSB first), an address indicator/alarm field comprised of a programmable 9 th data bit, and a stop bit (value 1). The use of the address indicator allows the communications bus 13 to support a single master printer controller 10a with multiple optional support devices. The preferred embodiment is best implemented with UART hardware that supports the use of the programmable 9 th data bit as the address indicator/alarm field. Examples of microprocessors that contain such a UART are the Philips 8052 and Toshiba TMP90CM38. When the master printer controller 10a transmits data to one of the several optional support devices, it first sends an address frame which identifies the target optional support device. The address frame differs from a data frame in that the programmable 9 th data bit is 1 for address frames and zero for data frames. Each optional support device is initially configured by its internal program code such that its controller (e.g. 16a on Fig. 4) is interrupted only when an address frame is received. The optional support device is not interrupted when a data frame is received. Thus, an address frame (one with the programmable 9 th data bit set) will interrupt all optional support devices simultaneously, giving each an opportunity to determine if it is the optional support device being addressed. The addressed optional support device then configures its controller to be interrupted for the data frames (programmable 9 th data bit = 0) that will follow. The master printer controller 10a then transmits data frames, which only the addressed optional support device receives. All the other optional support devices do not receive these data frames, since their controller will only be interrupted by address frames (programmable 9 th data bit = 1). When the printer controller 10a completes sending data frames to the addressed optional support device, the printer control 10a then may address an optional support device, if desired, by transmitting an address frame containing the address of the optional support device desired. The relationship between printer controller 10a and optional support devices allows the printer controller 10a to communicate with one optional support device at any given time, or communicate to all optional support devices simultaneously, termed "broadcasting". Communications can be initiated by the printer controller 10a only. Therefore, the printer controller 10a must query an optional support device to detect any status change in that optional support device. When the printer controller 10a communicates with a single optional support device, and is not "broadcasting", the printer controller 10a always transmits a single frame to the optional support device, and in turn, the addressed optional support device always responds by transmitting a single frame back to printer controller 10a. This present invention utilizes "echoing" in the communications between the printer controller 10a and any and all optional support devices. "Echoing" is the defined communications protocol, which complies with the one-frame-down one-frame-back alternation described above, where the information field, (shown in Fig. 3.), in a frame sent by the optional support device to the printer controller 10a is identical to the information field in the frame most recently received by the optional support device from printer controller 10a. As shown in Fig. 6., the printer controller 10a addresses a single optional support device by sending an address frame containing the address of the optional support device, (device address byte) after which the addressed optional support device echoes the received address (device address echo byte) in a data frame. Additionally, echoing is defined as the communications protocol in which the information field in a frame sent by the printer controller 10a to the optional support device is identical to the information field in the frame most recently received from the optional support device. The printer controller 10a and optional support devices communicate via commands and status responses. The printer controller 10a transmits commands to the optional support device in order to control the optional support device and to instruct the optional support device to perform desired operations. Some commands solicit the status of the optional support device to which the optional support device responds with the appropriate status response. Following is a description of how transmissions are grouped together to form commands and status responses, which allow information to flow between the printer controller 10a and a single, addressed optional support device. This form of communications is defined as the "Standard Communications Syntax", and is shown in Fig. 6. In Fig. 6, the arrows to the right represent the transmission of the information field of the frame, described in Fig. 3, transmitted by printer controller 10a. The arrows pointing to the left indicate the transmission of the information field of the frame transmitted by the optional support device and received by printer controller 10a. A "command" consists of an Op Code (operation code) and zero or more Command Data (i.e., command parameter) bytes. A "status response" may comprise of zero or more Response Data (i.e., status) bytes. It may be noted at this time that some commands have no associated status response, i.e. zero Response Data bytes are transmitted by the optional support device for that command. Specific commands that are defined to have no associated status response are a special case of the Standard Communications Syntax, and are discussed later. The communications protocol described previously in which the printer controller 10a and optional support device alternate single-frame transmissions, is used to pace the multiple transmissions that comprise each command and status response. For each frame transmitted by the printer controller 10a, the addressed optional support device responds with a corresponding frame. Referring to Fig. 6, assuming an operational system 5, i.e., after initialization, the first frame transmitted by printer controller 10a is the specific device address (device address byte) for the optional support device to which printer controller 10a desires to send a command. Upon receiving the transmission, the optional support device of which corresponds to this device address, responds by echoing back to printer controller 10a the address received (device address echo byte). The next frame transmitted by printer controller 10a contains the Command Op Code. This is a single byte that identifies the specific command, that is being sent to the addressed optional support device. The device echoes the Command Op Code back to printer controller 10a, this echo is referred to as the Command Op Code Echo byte (see Fig. 6). The echoing contained throughout the syntax is used to support communication error detection and error handling. Depending on the definition of the specific command being sent, the printer controller 10a sends a specified number of Command Data bytes to the addressed optional support device. These bytes are identified as Command Data #1 through Command Data #m. For each Command Data byte transmitted by printer controller 10a the optional support device echoes the Command Data byte back to printer controller 10a. The echoed bytes are identical to the corresponding Command Data bytes sent from printer controller 10a and received by the optional support device. The number of Command Data bytes is specified by a particular command and may be zero. For the case of zero Command Data bytes, the command is fully specified by the Command Op Code. Some commands require a status response from the addressed optional support device, whereas some commands do not. When printer controller 10a has transmitted a command that requires a status response from the optional support device, after all command bytes have been transmitted to that optional support device, and echoed, printer controller 10a turns around the direction of data flow by sending a Start of Response byte, as shown in Fig. 6. The Start of Response byte is a single, defined, constant value that conveys no specific information beyond indicating that the transmitting of a status response can now begin from the optional support device. In the preferred embodiment, the Start of Response byte is hexadecimal AA. After receiving the Start of Response byte, the optional support device begins the status response. The response information is contained in the Response Data bytes, identified as Response Data #1 through Response Data #n, with the number n depending on the particular status response being transmitted. The response data bytes are individually echoed from printer controller 10a back to the addressed optional support device. The echoed bytes are identical to the corresponding Response Data bytes transmitted from the optional support device. The echoing contained throughout the syntax is employed to support transmission error detection on bus 13 (Fig. 2). To comply with the communication protocol of one-frame-down one-frame-back, the queried optional support device terminates the status response by sending the End of Response byte to printer controller 10a. The End of Response byte is a single, defined, constant value that terminates the transmission of the status response. In the preferred embodiment, the End of Response byte is hexadecimal CC. This byte is not meant to contain any specific information. As noted above, the definition of a particular command may specify that there is no corresponding status response. For such commands, the entire status response is eliminated - i.e., there is no Start of Response byte, no Response Data bytes, no Response Data Echo bytes, and no End of Response byte. This modification of the syntax is done to optimize the overall usage of the bus. A unique communications syntax referred to as the "Non-Echoing Communications Syntax" is described below. The echoing that is included in the definition of the Standard Communications Syntax is used to aid in the detection of transmission errors on bus 13. However, there are instances when the bus 13 bandwidth is used more efficiently if the redundancy of echoing is not present in communications on bus 13. The "Non-Echoing Communications Syntax", shown in Fig. 7 defines a syntax for commands that do not utilize echoing. The optional support device does not echo the Command Op Code byte or the Command Data bytes sent from printer controller 10a, and likewise printer controller 10a does not echo the Response Data bytes from the optional support device. The commands being transmitted from printer controller 10a are intermingled with the response bytes being transmitted from the optional support device to printer controller 10a. An example of a command that utilizes the Non-Echoing Syntax is "Query Device Status", which requests the status of sensors in the addressed optional support device, such as one of 12, 14, and 16, to track the position (leading edge) of a sheet in paperpath 19, shown in Fig. 1. The Query Device Status command is defined as a command that only contains the Command Op Code and a single Response Data byte as shown in Fig. 7. A response by the optional support device to the Query Device Status command is bit-encoded and contains two bits that provide status (e.g., covered or uncovered) of the paper sensors S located, in that individual optional support device as shown in Fig. 1. In this example, printer controller 10a is tracking the position of the leading edge of a sheet as the leading edge approaches sensor S in an optional support device. Printer controller 10a sends the Query Device Status command many times, at a relatively high frequency, until the response bit corresponding to sensor S finally changes status (e.g., changes from uncovered to covered). "Broadcast Communications" is defined as the protocol whereby printer controller 10a transmits a command to all optional support devices simultaneously. In the preferred embodiment, prior to utilizing Broadcast Communications, printer controller 10a designates one of the optional support devices to be responsible for echoing all broadcast communications transmissions by printer controller 10a. All other optional support devices do not echo any of the broadcast communications transmissions by printer controller 10a. The echoing provided by the designated optional support device allows printer controller 10a to utilize the data communications checking described below and facilitated by the Standard Communications Syntax. Figure 8 illustrates Broadcast Communications. Printer controller 10a first transmits a unique "broadcast address" on bus 13 (Fig. 2) of which all optional support devices receive and enters Broadcast Communications (as described above). The optional support device, which had previously been designated the task of echoing all transmissions by printer controller 10a, echoes the broadcast address (Fig. 8) back to printer controller 10a. Figure 8 further illustrates commands broadcasted to all optional support devices of which the designated broadcast echoing optional support device is shown echoing the commands transmitted by printer controller 10a. In an alternate embodiment, printer controller 10a may choose not to designate one of the optional support devices as the optional support device to echo back printer controller 10a transmissions. In the alternate embodiment, the echoing shown in Fig. 8 does not occur. The "communications session" is a feature of the invention that pertains to situations in which printer controller 10a desires to transmit several commands in succession to one particular optional support device. Within the "communications session," printer controller 10a does not transmit the device address before each successive command. The general format for a communications session is shown in Figure 9. First, the optional support device is addressed by printer controller 10a. Then, the communications session is opened (begun) with a "Begin Communications Session" command transmitted by printer controller 10a. Next, printer controller 10a transmits the desired sequence of commands to the optional support device. Finally, printer controller 10a terminates the communications session by transmitting an "End Communications Session" command. After the End Communications Session command is received by the optional support device, the next command transmitted to that optional support device must be preceded by an address frame which contains the device address of that optional support device or the Broadcast Address. An advantage of being able to send several commands within a communications session is to improve the usage of bus 13 (Fig. 2) bandwidth, since the overhead of addressing the optional support device is spread over several commands. Thus the total transmission time for a set of commands, is less than would result if the device address were sent before each command transmitted to the optional support device. A feature of the invention is the communication interface error detection capability. The echo bytes specified in the Standard Communications Syntax allow printer controller 10a and optional support devices to detect certain transmission errors. Also, the specific UART hardware employed by printer controller 10a and the optional support devices provide additional transmission error detection capabilities. Bus 13 error detection capabilities included in the invention allow the detection of communication errors arising from, for example, but not limited to, intermittent signal connections and electrostatic discharges. The ability to detect transmission errors on bus 13 prevents corrupted data from causing unpredictable behavior of system 5. Communication interface transmission error detection on bus 13 is performed by both printer controller 10a and optional support devices. Transmission error detection performed by printer controller 10a on the communications interface is described below. The UART of printer controller 10a has the capability to detect certain bus 13 transmission errors, such as framing errors. Whenever printer controller 10a detects a transmission error in a received frame, it aborts processing the current command, and then transmits an address frame containing the unique "Link Reset" address on bus 13. Upon receiving the Link Reset address, each optional support device aborts any command that it may be processing, and re-initializes its UART, communications protocol processing, and command interpreter to the state in which the optional support device is waiting to be addressed. Each given optional support device still responds to the same uniquely assigned address that it received from printer controller 10a during initialization, i.e., a Link Reset does not cause optional support devices to return to their trunkline address. All optional support devices receive the Link Reset, since the programmable 9th data bit is set as part of the Link Reset frame transmitted. Each optional support device, when processing a command or status response, must examine the programmable 9th data bit for all frames received from printer controller 10a to determine if a Link Reset has been transmitted. Printer controller 10a also has the capability to detect bus 13 transmission errors that corrupt the value of the information field in a frame received from an optional support device, after which printer controller 10a transmits the Link Reset. Printer controller 10a detects such transmission errors by examining the echo byte received from the optional support devices; i.e., the Device Address Echo, Command Op Code Echo, and Command Data Echo, which are shown in Fig. 6. After transmitting the Device Address byte, the printer controller 10a compares the value of the Device Address Echo byte transmitted by the optional support device to the Device Address byte that was transmitted by printer controller 10a. If the two values differ, printer controller 10a determines that a transmission error has occurred and transmits the Link Reset. In a similar manner, printer controller 10a compares the Command Op Code byte transmitted to the resulting Command Op Code Echo byte received from the optional support device. If they are not identical, printer controller 10a likewise transmits the Link Reset. In a similar manner, printer controller 10a compares each Command Data byte transmitted to the resulting Command Data Echo byte received from the optional support device. If they are not identical, printer controller 10a transmits the Link Reset. Printer controller 10a does not examine any Response Data byte value for possible transmission errors. Transmission errors that corrupt a Response Data byte are detected and reported by the optional support device as described below. If printer controller 10a detects an error in the transmission of the End of Response byte, it transmits the Link Reset. Another instance in which printer controller 10a transmits the Link Reset is when any expected transmission from the optional support device is not received within a specified time. As described earlier, during broadcast communications, one designated optional support device echoes the transmissions from printer controller 10a. Printer controller 10a utilizes these echoes to detect transmission errors in the same manner as described above, during broadcast communications. Transmission error detection performed by optional support devices on the communication interface is described below. The UART of each optional support device has the capability to detect certain transmission errors on bus 13 (Fig. 2). Whenever an optional support device detects a transmission error in a received frame, the optional support device reports the occurrence of the error by setting the address indicator/alarm field (the programmable 9th data bit) in the next frame transmitted to printer controller 10a. The information field in that frame is the same as it would have been if no transmission error were being reported; i.e., no special information field value is transmitted by the optional support device for this situation. In addition to reporting the bus 13 transmission error to printer controller 10a, the optional support device aborts processing the command or status response in process. Printer controller 10a examines the programmable 9th data bit for every frame received from the optional support devices. When printer controller 10a recognizes that the optional support device has detected a transmission error on bus 13, printer controller 10a transmits a Link Reset. The optional support device also has the capability to detect bus 13 transmission errors that corrupt the value of the information field in a frame received from the printer controller 10a, after which the optional support device reports a transmission error on bus 13 to printer controller 10a by setting the programmable 9th data bit in the next frame transmitted to printer controller 10a. Referring to Fig. 6, the addressed optional support device examines the Command Op Code byte value received from printer controller 10a. If the Command Op Code byte value is not a valid op code value, the optional support device reports that a transmission error has occurred. The addressed optional support device does not examine the Command Data byte value for possible bus 13 (Fig. 2) transmission errors. Transmission errors that corrupt a Command Data byte are detected by the printer controller 10a when it examines the corresponding Command Data Echo byte transmitted by the optional support device. The addressed optional support device examines the Start of Response byte value received from printer controller 10a. If the value is not identical to the predefined Start of Response byte value, the optional support device reports that a transmission error has occurred in the manner described above. Likewise, the addressed optional support device compares the received Response Data #n Echo byte transmitted by a printer controller 10a to the corresponding Response Data #n byte that was transmitted to printer controller 10a. If the values are not identical, the optional support device reports that a transmission error has occurred. For broadcast communications, the optional support device previously designated by printer controller 10a to be the echoing device, detects and reports transmission errors during broadcast communications, in the same manner as described above. Although the invention has been described with respect to preferred embodiments, those skilled in the art will recognize that changes may be made as to form and detail without departing from the scope of the invention which is defined by the following claims.

Claims: A printing system, comprising: a printer (10) including a printer controller (10a) ; at least one support device (12, 14, 16, 18, 20, 22, 24, 26, 27), the or each support device including a device controller (16a, 18a); and a bi-directional serial communications path (30-33) interconnecting said printer controller and the or each device controller, said printing system being characterised by said printer controller being configured to automatically assign a or a respective unique device address to the or each support device in said system. The system of claim 1, wherein said at least one support device includes a paper handling device. The system of claim 1 or 2, wherein the or each support device further comprises logic circuitry (16b, 18b) which is configured to continue said communications path through the or each support device when enabled. The system of claim 1, 2 or 3, wherein said printer controller is configured to command the or each device controller to be responsive to said or said respective unique device address. The system of claim 1, 2, 3 or 4, wherein during initialization of said system, said printer controller is configured to sequentially and automatically command the or each support device to be responsive to said or said respective unique device address. The system of any preceding claim, wherein said printer controller is configured to assign to the or each support device said or said respective device address during system initialization. The system of any preceding claim, wherein said bi-directional serial communications path includes a first trunkline, said first trunkline having a unique first trunkline address, and wherein the or each device controller is coupled to said first trunkline and includes means initially responsive to said unique first trunkline address. The print system of any preceding claim, wherein said at least one support device comprises a plurality of support devices. The system of claim 8, wherein said path is effectively extended through a first support device of said plurality of support devices to a next support device of said plurality of support devices when a first logic circuit (18b) of said first support device is enabled. The printing system of claim 8, wherein each support device further includes logic circuitry which is configured to follow the assignment of a unique first device address to a first support device, and based upon a command from said printer controller, enable passage of information generated by said printer controller through said first support device for use by a subsequent support device. The system of claim 8 wherein each of said plurality of support devices further includes logic circuitry which based upon a command of said printer controller, is configured to enable passage of information generated by said printer controller through a first support device of said plurality of support devices to a next electrically serially connected support device following an assignment of a first device address to said first support device. The system of claim 9, 10 or 11, when dependent on claim 7 wherein said first support device is connected to said trunkline which is effectively extended through said first support device to said next or subsequent support device when a first logic circuit of said first support device is enabled. The system of any of claims 8 to 12, when dependent on claim 7 wherein upon initialization of said system, said printer controller is configured to sequentially command each device of said plurality of support devices coupled to said first trunkline to respond to said unique device address. The system of any of claims 8 to 13, wherein said support devices comprise paper handling devices. The system of any of claims 8 to 13, wherein said bi-directional serial communications path comprises bi-directional serial communications trunklines interconnecting said printer controller to said device controlers of said plurality of support devices. The system of claim 15, wherein said plurality of trunklines extends from a common electrical connection to a communication bus (13). The system of claim 15 or 16, wherein each trunkline has a unique trunkline address of a plurality of trunkline addresses, and each support device connected in said system is originally programmed to respond to one unique trunkline address of said plurality of trunkline addresses.

Inventors: LANGER DENIS BRIAN, PARISH STEVEN WAYNE, SHARP EDWARD CARLTON, LANGER, DENIS BRIAN, PARISH, STEVEN WAYNE, SHARP, EDWARD CARLTON
Applicants: LEXMARK INT INC, LEXMARK INTERNATIONAL, INC.
Application year: 1998
Main classification: G06K15
IPC codes: G06F3, B41J29, G06K15