Here's what I understand so far. My apologies in advance for the verbosity, but this is a bit complex. If anyone has any better understanding of this and can offer clarification or correction, I welcome the feedback. At this point, I'm leaving out some of the finer details -- I'm trying for a more conceptual description for now. If anyone wants the details, I have some of them. Most of this I've gleaned from the Brother KH930 Service Manual Steve Conklin put up on github, and from studying Mar Canet's code.
The Brother (and KnitKing) electronic machines all (as far as I've seen) appear to use the same basic patterning mechanism consisting of a bank of 16 solenoids and cams and associated linkages which act in concert with the carriage to set the needles into either the B or D position in preparation for the next row.
The carriage is synchronized to the selection mechanism through a perforated metal belt. The carriage engages this belt and drives the mechanism inside the bed of the machine. The belt has a series of slots spaced 8 needle-spaces (36mm) apart, and the carriage can engage any of these slots.
The belt drives a series of 16 rotary cams arrayed adjacent to the solenoids. If a solenoid is energized at the appropriate time, the needle under the carriage at that point will be left in the B position. If the solenoid is not energized, the needle will be left in the D position.
When the carriage is moved onto the bed from either end, it passes a hall-effect sensor which detects the proximity of a magnet embedded in the carriage. This "end-sensor" tells the computer when the carriage is passing onto the end of the bed. The magnetic polarity can also tell the computer what kind of carriage is in use, as the "K", "L", and "G" carriages have different arrangements of magnets.
Since there is a carriage-engagement slot every 8 needles, and the solenoids control 16 needles, there are two engagement slots for every 16 needles. The computer needs to know which of these two slots has been engaged so it can energize the correct solenoids. An optical encoder connected to the rotary camshaft has two states, call them ON and OFF. The state of this encoder as the carriage passes an end-sensor tells the computer which engagement slot has captured the carriage. This is called "belt phase" in the service manuals. Its only purpose appears to be to establish which subgroup of 8 solenoids is aligned with the first needle.
As the carriage is moved across the bed, the computer needs to know which needle it is passing over. The rotary camshaft also has a quadrature encoder which makes one complete cycle for each needle-space. By determining the starting point from the end-sensors and counting these cycles, the computer can determine the exact position of the carriage. The decoding of the quadrature encoder is simplified by the fact that the computer does not need to know each stage of the cycle, it really is only interested in one stage, and the direction of movement.
As long as the carriage remains engaged, the needle position can be determined by counting encoder cycles, so the end-sensors need only be monitored when the carriage has been removed from the bed or moved off either end.
Now here's what I don't know yet, or at least what I know I don't know. I am assuming that as soon as the carriage passes over a given needle, the corresponding solenoid should be energized. When energized, the solenoid actuates a cam-follower and prevents it from engaging with its cam. The question is, how long should that solenoid remain energized to prevent this cam engagement? Is it enough to energize it for one needle-time, or does it need to be energized longer? I believe that one needle is enough, but I'm not sure.
Thank you all for your time, and for any enlightenment you can offer.