Your LabVIEW panel shows two returned bytes: 10 15. You do not get the requested B3:0/0 value. Start here: 10 is DLE and 15 is NAK. The controller rejected the DF1 packet before a useful application reply was returned. In this case, the request body was not the problem. The sender appended a one-byte BCC while the MicroLogix 1500 channel expected a two-byte CRC.
Stop trying fixes that miss the fault
| Symptom or attempted fix | What it means |
|---|---|
Rewrite the bit-read command after receiving 10 15
|
A link-layer rejection points first to framing, checksum selection, checksum calculation, or serial transport—not the requested bit address. |
| Keep changing the serial cable or port | Check these when no bytes return. Receiving 10 15 proves that a device received enough of the transmission to return DLE NAK. |
| Send the same packet repeatedly | Reusing the Transaction Sequence Number can cause duplicate suppression. Some Allen-Bradley devices ignore repeated packets after accepting the first one. |
| Change only the subelement byte to select another bit | A masked write selects a bit through its 16-bit mask and data fields. Bit 1 needs , not the bit-0 value . |
Remove FF because the element is zero |
The working three-address frames use FF to expand the following address field. Removing it changes how every subsequent byte is parsed. |
Match the controller's checksum mode
DF1 Full Duplex can use BCC or CRC, but both endpoints must use the same method. SLC and MicroLogix controllers default to CRC. BCC contributes one check byte; DF1 CRC-16 contributes two. A valid request calculated as BCC is still invalid to a channel configured for CRC.
That mismatch produces the observed 10 15. Correct the LabVIEW CRC implementation before changing the PCCC command. Calculate the CRC over the byte range specified by the DF1 command documentation and append the two result bytes in the required order. Do not substitute a generic CRC routine unless its algorithm, initialization, included bytes, and output order match DF1.
The working frames below end with different CRC pairs—82 CF, 36 CF, and 26 4B—because their payloads differ. Never copy a CRC from one request onto another.
Repair the request in the right order
- Read the MicroLogix serial-channel configuration and identify whether error checking is set to CRC or BCC. Match that selection in LabVIEW.
- Send raw byte values. A display such as
10 02represents bytes and , not the ASCII characters “1”, “0”, space, “0”, and “2”. - Check the DF1 envelope: opening DLE/STX, destination and source, command header, transaction number, PCCC body, DLE/ETX, and checksum. Apply DF1 handling for any DLE value occurring inside the framed data.
- Keep the documented read-request body for
B3:0unchanged while fixing the transport layer. For a single-bit result, read the binary word and extract bit 0 locally with . - Transmit one request and capture the exact sent and received byte arrays. A DLE ACK confirms link acceptance; the following reply still needs its command status, transaction number, data length, and checksum validated.
- After a valid reply, compare its Transaction Sequence Number with the request TSN before accepting the returned data.
Advance the transaction number
Store the Transaction Sequence Number as driver state. Initialize it to 0 when you open the connection or restart the driver, increment it for every command, and roll over after 65535. Match each reply to the outstanding request by TSN.
Do not reuse one captured frame as a polling packet. Recalculate its CRC after changing the TSN because the TSN bytes are part of the protected frame. This is also why a packet can work once and then appear unreliable during sequential commands.
Build masked bit writes from the bit position
A 16-bit mask for bit n is 1 << n. Bit 0 is , transmitted in these examples as 01 00. Bit 1 is , transmitted as 02 00. For the demonstrated set operation, both the data and mask fields carry the selected bit value.
These complete captured frames show the byte change:
Bit 0 in B3:0:
10 02 01 29 0F 00 40 00 AB 02 03 85 FF 00 00 00 01 00 01 00 10 03 82 CF
Bit 1 in B3:0:
10 02 01 29 0F 00 40 00 AB 02 03 85 FF 00 00 00 02 00 02 00 10 03 36 CF
Do not copy the destination 01, source 29, TSN 40 00, or final CRC without checking your connection. The captures share a TSN for illustration; a running driver must advance it.
For file B32, decimal 32 is hexadecimal 20. A working bit-0 frame is:
10 02 01 29 0F 00 40 00 AB 02 20 85 FF 00 00 00 01 00 01 00 10 03 26 4B
Here 85 identifies the binary file type in the demonstrated command. The following FF expands the address field to three bytes; the expanded address bytes are placed low byte first. For element zero, the captured expanded bytes are 00 00, followed by subelement 00.
Verify the fix at every layer
- Confirm the controller no longer returns
10 15after switching from BCC to CRC. - Validate the CRC on both outgoing and incoming frames before interpreting PCCC data.
- Confirm the reply TSN equals the request TSN.
- Read
B3:0before and after a write. Bit 0 must change only under mask ; bit 1 must change only under . - Watch the full word during testing. Unselected bits must retain their previous states.
- Test
B32:0/0only after verifying that binary file 32 exists in the downloaded controller program.
FAQ
Does DF1 error 10 15 mean my bit address is wrong?
No. 10 15 is DLE NAK, so check framing and the selected BCC/CRC method first. In this case, replacing BCC with the CRC expected by the MicroLogix 1500 restored communication.
Can I use BCC with a MicroLogix 1500?
DF1 devices can support BCC or CRC, but both endpoints must match. SLC and MicroLogix controllers default to CRC, so read the channel configuration before choosing the LabVIEW calculation.
Does the DF1 TSN have to change on every request?
Yes. Increment the 16-bit TSN for every command, match it in the reply, and roll over after 65535. Recalculate the CRC whenever the TSN changes.
Can I select B3:0/1 by changing only the subelement?
No. For the demonstrated masked write, use mask and data value , sent as 02 00. Bit 0 uses , sent as 01 00.
When should I stop troubleshooting DF1 and escalate?
Stop after you have matched the channel settings, captured the exact transmitted bytes, validated the CRC independently, advanced the TSN, and still receive DLE NAK or a repeatable command status. Send the controller configuration, complete hexadecimal request and response, cable details, and LabVIEW CRC inputs to official Allen-Bradley support.