|
Motion Master 6.0.0-alpha.86
Next-generation motion control software
|
The register map of the Integro's internal (Kübler) encoder — reference data for OS command 19, and documentation in its own right. More...
#include <algorithm>#include <array>#include <cstdint>#include <nlohmann/json_fwd.hpp>#include <optional>#include <string_view>Go to the source code of this file.
Classes | |
| struct | mm::node::somanet::KueblerRegister |
| One register of the Kübler encoder. More... | |
Namespaces | |
| namespace | mm |
| namespace | mm::node |
| namespace | mm::node::somanet |
Pure SOMANET (Synapticon manufacturer-specific) vocabulary — object indices, sub-entry numbers and enumerations, with no dependency on Device. | |
Enumerations | |
| enum class | mm::node::somanet::KueblerFormat : uint8_t { mm::node::somanet::kUnsigned , mm::node::somanet::kSigned , mm::node::somanet::kBitField , mm::node::somanet::kSignedHalves } |
| How a register's value should be read once assembled. More... | |
| enum class | mm::node::somanet::KueblerAccess : uint8_t { mm::node::somanet::kReadOnly , mm::node::somanet::kWriteOnly , mm::node::somanet::kReadWrite } |
| Whether the encoder allows reading a register, writing it, or both. More... | |
Functions | |
| void | mm::node::somanet::to_json (nlohmann::json &j, const KueblerRegister &r) |
Serialises a KueblerRegister. Participates in nlohmann ADL, so nlohmann::json(kKueblerRegisters) works. | |
| constexpr std::optional< KueblerRegister > | mm::node::somanet::findKueblerRegister (uint8_t address) |
The register at address, or std::nullopt when the table has none. | |
Variables | |
| constexpr auto | mm::node::somanet::kKueblerRegisters |
| Every register known, ascending by address: the vendor's draft, plus the four the encoder calibration sequence reads and the draft leaves out. | |
| constexpr uint8_t | mm::node::somanet::kMaxKueblerRegisterBytes = 4 |
The largest register width OS command 19 can transfer, in bytes: its length byte is capped at 4. Every register in the table fits, so readableInOneCommand is true for all of them today. It stays on the wire because the cap is real and a wider register would be reported rather than silently truncated. | |
The register map of the Integro's internal (Kübler) encoder — reference data for OS command 19, and documentation in its own right.
Pure data with no dependency on Device, like cia402.h: a client picks a register from here and the command reads or writes it. Served as-is by GET /api/meta/kuebler-registers.
Transcribed from the vendor's own draft table (KueblerEncoderRegisters.csv, headed "MagPac
Registecommunication draft"), and curated rather than converted, because two of its columns do not survive a mechanical reading. Signedness is stated in free prose: register 0x38 Velocity is signed and says so only as "+/- FS", while every POA register writes "Bit 15 - 0: signed 16 bit
integer", which is one clause spanning the whole register — a scalar, not a bit field. And 0x3C is two separate signed 16-bit values in one 32-bit register, which no single signedness flag describes. Hence KueblerFormat rather than a bool.
The draft is not the last word, and this table says what the encoder does. The encoder calibration sequence in OBLAC runs against real Integros in production. It reads four registers the draft leaves out (0x56 to 0x5C, the start and end speeds), and it reads or writes four the draft calls not implemented (0x04, 0x61, 0x66 and 0x6A). Those rows follow the sequence, and so does the width of 0x04. The three still marked not implemented are the ones nothing has exercised: 0x00, 0x60 and 0x62.
The draft is the only document there is, and it is not a specification. Ask Synapticon control engineering for the vendor's own register specification before trusting a row nothing has read off hardware.