Name | Value | Description |
DAdr | 100h | General address |
DAdr | 101h .. 164h | Destination node address |
uL_Beg | 175h | Begin of unaddressed frame |
uL_END | 17Ch | End of frame |
uL_ARQ | 17Ah | End with acknowledge request |
uL_PRQ | 179h | End with proceed request |
uL_AAP | 176h | End with acknowledge and proceed request |
uL_ERR | 17Fh | Error without release of bus |
LAdr | 181h .. 1E4 | Release of bus by node |
uL_ERR | 1FFh | Error, abort and release bus |
Name | Value | Description |
uL_ACK | 019h | Acknowledge of frame |
uL_NACK | 07Fh | Negative acknowledge |
uL_WAK | 025h | Receiver can probably receive message later, but cannot now |
Command Range | Type of Message Processing |
00h .. 3Fh | Store to buffer |
40h .. 7Fh | Store to buffer without uL_ACK |
80h .. 9Fh | Immediate process |
A0h .. BFh | Process with additional receive |
C0h .. FFh | Process with additional send |
Name | Value | Description |
UL_CMD_RES | 80h | Reinitialize RS485 |
UL_CMD_SFT | 81h | Test free space in input buffer |
UL_CMD_SID | F0h | Send identification |
UL_CMD_SFI | F1h | Send amount of free space in input queue |
UL_CMD_TF0 | 98h | End of stepping |
UL_CMD_TF1 | 99h | Begin of stepping |
UL_CMD_STP | 9Ah | Do step |
UL_CMD_DEB | 9Bh | Additional debug commands |
UL_CMD_SPC | DAh | Send state |
UL_CMD_RDM | F8h | Memory read |
UL_CMD_WRM | B8h | Memory write |
UL_CMD_OI | 10h | Standard value for uLan OI |
UL_CMD_OIr | 11h | Standard type for uLan OI reply |
UL_CMD_NCS | 7Fh | Network control service |
UL_CMD_SNST | C1h | Fast status and connection check |
Name of equipment | Platform | |
.UL_DRV(x) | Windows | |
/dev/ulan(x) | Linux | |
NULL | system-less or default driver instance |
Name | Description |
UL_BFL_LOCK | locked message is pointed only once |
UL_BFL_MSST | Message must be received by some proces |
UL_BFL_M2IN | After successful processing inform sending client |
UL_BFL_LNMM | Length of received frame must match expected len |
UL_BFL_FAIL | Message cannot be processed - error status |
UL_BFL_TAIL | Multiframe message continues by next bll block |
UL_BFL_SND | Send this frame |
UL_BFL_REC | Receive answer frame into this bll block |
UL_BFL_VERL | Verify free space in buffer of destination station |
UL_BFL_NORE | Do not try to repeat if error occurs |
UL_BFL_REWA | If error occurs do wait with retry |
UL_BFL_PRQ | Request immediate processing of frame by receiving station |
UL_BFL_ARQ | Request immediate acknowledge by receiving station |
Name | Argument | Ptr data dir | Description |
UL_DRV_VER | Returns driver version | ||
UL_NEWMSG | ul_msginfo *ptr | W | Prepare new outgoing message |
UL_TAILMSG | ul_msginfo *ptr | W | Add next frame to message |
UL_FREEMSG | Free (send) prepared or received message | ||
UL_ACCEPTMSG | ul_msginfo *ptr | R | Accept message from receive queue |
UL_ACTAILMSG | ul_msginfo *ptr | R | Accept next frame of multiframe message |
UL_ADDFILT | ul_msginfo *ptr | W | Add specification for receiving of messages |
UL_ABORTMSG | Abort preparation of message | ||
UL_REWMSG | Return to beginning of first frame of message | ||
UL_STROKE | Restart processing loop of driver | ||
UL_DEBFLG | debug mask | Set kernel driver debug level | |
UL_HWTEST | subcommand | RS-485 buffer hardware checking |
Subcommand | Format after first byte | Description |
ULNCS_RQ_ADDR | SN0 SN1 SN2 SN3 | Request for new address |
ULNCS_SET_ADDR | SN0 .. SN3 NEW_ADR | Set new module address |
ULNCS_SID_RQ | Request identification reply | |
ULNCS_SID_RPLY | SN0 .. SN3 SID_string | Reply with SN and identification |
ULNCS_ADDR_NVSV | SN0 SN1 SN2 SN3 | Permanent address change |
bcmd | sn | bsn |
1 byte | 1 byte | 1 byte |
where | value is request | value in reply |
frame Cmd | cmd | bcmd |
data[0] | bcmd | bcmd |
data[1] | sn | bsn |
data[2] | bsn | sn |
OID number | OI_data |
2 bytes LE | data bytes or meta specification (0...n) |
Name | OID | hex | Parameters | Description |
ULOI_AOID | 10 | 0x0A | <string> | substitutes numeric OID by ASCII name for I_DOII and I_DOIO |
ULOI_DOII | 12 | 0x0C | <oid> | query description for writable/in <oid> returned ULOI_DOIIr |
ULOI_DOIIr | 13 | 0x0D | <oid> <oiddesc> | description of writable/in <oid> |
ULOI_DOIO | 14 | 0x0E | <oid> | query description for readable/out <oid> returned ULOI_DOIOr |
ULOI_DOIOr | 15 | 0x0F | <oid> <oiddesc> | description of readable/out object <oid> |
ULOI_QOII | 16 | 0x10 | <oidfrom> <maxret> | query up-to <maxret> writable/input OIDs list starting from <oidfrom> or 0 for first |
ULOI_QOIIr | 17 | 0x11 | <oid0>... <oidn><0> | list of writable/in OIDs ended by 0 |
ULOI_QOIO | 18 | 0x12 | <oidfrom> <maxret> | query up-to <maxret> readable/out OIDs list starting from <oidfrom> or 0 for first |
ULOI_QOIOr | 19 | 0x13 | <oid0>... <oidn><0> | list of readable/out OIDs ended by 0 |
ULOI_RDRQ | 20 | 0x14 | <oid0>... <oidn><0> | object values read request, sequence of (OID[,meta]) groups, activates reply ULOI_RDRQr |
ULOI_RDRQr | 21 | 0x15 | <oid0><...> ... <oidn><...><0> | reply sequence of (OID,[meta,]value) groups |
ULOI_SNCHK | 29 | 0x1D | <SN0 .. SN3> | check module serial number |
I_STATUS | 30 | 0x1E | standard OID for 16 bit status read (0 not active, positive busy, negative error) | |
I_ERRCLR | 31 | 0x1F | standard OID for clear error status | |
ULOI_AOID | OID by name |
0x0A 0x00 | vs (visible string) |
OID_number |
0xdc 00 |
ULOI_AOID | name size | name |
0x0A 0x00 | 0x04 | 0x54 0x45 0x4D 0x50 |
ULOI_DOII/ULOI_DOIO | OID_number |
0xC/0xE 0x0 | 2 bytes LE |
ULOI_DOIIr/ULOI_DOIOr | OID number | text descriptors (name, type) |
0xD/0xF 0x0 | 2 bytes LE | 2 level nested length byte, data block structure |
total descriptors len | ND_size | ND_text | TD_size | TD_text |
1byte | 1byte | ND_size bytes | 1byte | TD_size bytes |
ULOI_DOII | OID_number |
0xC 0x0 | 0x1F 0x00 |
ULOI_DOIIr | OID_number | tot. len | ND_size | ND_text | TD_size | TD_text |
0xD 0x0 | 0x1F 0x00 | 0x9 | 0x6 | 0x45 0x52 0x52 0x43 0x4C 0x52 | 0x1 | 0x65 |
ULOI_QOII/ULOI_QOIO | start OID_number or 0 | max reply count |
0x10/0x12 0x0 | 2 bytes LE | 2 bytes LE |
ULOI_QOIIr/ULOI_QOIOr | n x OID_number | termination |
0x11/0x13 0x0 | n x 2 bytes LE | 0x00 0x00 |
ULOI_QOII | start OID_number or 0 | max reply count |
0x10 0x0 | 0x00 0x00 | 0x40 0x00 |
ULOI_QOIIr | OID | OID | OID | OID | OID | OID | termination |
0x11 0x0 | 0xC 0x0 | 0xE 0x0 | 0x10 0x0 | 0x12 0x0 | 0x14 0x0 | 0x1F 0x0 | 0x00 0x00 |
ULOI_RDRQ | OID_number |
0x14 0x00 | 0xE6 0x00 |
ULOI_RDRQr | OID_number | u2 data read from object |
0x15 0x00 | 0xE6 0x00 | 0x63 0x00 |
OID_number | u2 data to write into object |
0xE6 0x00 | 0x64 0x00 |
OID_number | u1 data to write | ULOI_RDRQ | OID_number |
0xE7 0x00 | 0x10 | 0x14 0x00 | 0xE7 0x00 |
ULOI_RDRQr | OID_number | u1 data read from object |
0x15 0x00 | 0xE7 0x00 | 0x10 |
code | description | encoded |
s1, s2, s4 | signed integer | little-endian bytes sequence of corresponding length |
u1, u2, u4 | unsigned integer | little-endian bytes sequence of corresponding length |
f4, f8 | floating point number | according to IEEE-754, little-endian, 4-bytes/8-bytes |
f2 | half float (float16) | |
vs, vsXX | visible string in utf-8 | the first byte specifies length of the string in bytes (0-127) encoded in following bytes |
length | text |
1 byte (0..127) | length byte(s) |
0x04 | 0x41 | 0x42 | 0x43 | 0x44 |
bit 7 | bit 6 | description |
0 | 0 | indexed single data item |
1 | 0 | indexed range of items |
1 | 1 | array command |
index |
2 bytes LE (0...16363) |
index 1 |
0x01 0x00 |
index 1 | u4 data for index 1 |
0x01 0x00 | 0x11 0x00 0x00 0x00 |
count | index |
2 bytes LE (0...16363) - 0x8000 | 2 bytes LE |
count | index |
0x02 0x80 | 0x01 0x00 |
count | index | u1 data for index 1 | u1 data for index 2 |
0x02 0x80 | 0x01 0x00 | 0x12 | 0x06 |
Res Lo | Res Hi | Ext len (el) | Ext | CID | data len (dl) | data | CID ... |
1 byte | 1 byte | 1 byte | 0..el bytes | 2 bytes LE | 1 (2) byte | dl bytes |
Name | OID | hex | Parameters | Description |
ULOI_PICO | 40 | 0x28 | array "[]{u2,u2,u2,u2}" | PDO input CID/OID mapping |
ULOI_POCO | 41 | 0x29 | array "[]{u2,u2,u2,u2}" | PDO output CID/OID mapping |
ULOI_PIOM | 42 | 0x2A | byte array "[]u1" | PDO input/output mapping meta data |
ULOI_PEV2C | 43 | 0x2B | array "[]{u2,u2,u2,u2}" | PDO event to CID mapping |
ULOI_PDC2EV | 44 | 0x2C | array not specified yet | PDO data change event mapping |
ULOI_PMAP _CLEAR | 45 | 0x2D | command "e" | PDO input/output/meta/event mapping clear |
ULOI_PMAP _SAVE | 46 | 0x2E | command "e" | PDO input/output/meta/event mapping save |
Field | Type | Description |
CID | u2 | connection identification |
Flg | u2 | flags specifying mapping type |
Meta/OID | u2 | byte offset into ULOI_PIOM data or direct OID specification |
Meta len | u2 | length of meta data or 2 for direct OID specification |
Symbol | Mask | POCO | PICO | Description |
ULOI_CIDFLG_META_LOC | 0x0F | y | y | Interpretation of Meta/OID field |
ULOI_CIDFLG_META_OID | 0x00 | y | y | OID specified directly |
ULOI_CIDFLG_META_OFFS | 0x01 | y | y | ULOI_PIOM offset specified |
ULOI_CIDFLG_META_EM3B | 0x03 | y | y | Embedded 3 bytes in Meta and Meta len |
ULOI_CIDFLG_META_EM4B | 0x04 | y | y | Embedded 4 bytes in Meta and Meta len |
ULOI_CIDFLG_FIXED | 0x10 | y | Supply received data by meta | |
ULOI_CIDFLG_IMMED | 0x20 | y | Send directly meta-data, no processing | |
ULOI_CIDFLG_SKIP_LOCAL | 0x40 | y | Do not process locally | |
ULOI_CIDFLG_SKIP_SEND | 0x80 | y | Do not send data |
Field | Type | Description |
Evnum | u2 | event number triggering transmission |
CID | u2 | CID to be send |
DAdr | u2 | destination uLan address, 0 broadcast |
Flg | u2 | flags influencing processing |
Flag | Mask | Description |
ULOI_PEV2CFLG_ARQ | 0x01 | request acknowledge by recipient |
ULOI_PEV2CFLG_LOCAL | 0x02 | use queue for local only processing |