S7-1200 SEND_PTP: Troubleshooting One-Byte Transfers

David Krause2 min read
S7-1200SiemensTroubleshooting
Licensed PE Working through this on a live machine? A Maine-licensed engineer can take it from here — included with IMD hardware, by the hour for everything else. Book an engineer

An S7-1200 application uses SEND_PTP to transmit DB1, defined as ARRAY[1..12] OF BYTE, over RS-485 ASCII communication. The observed fault is that only one byte transfers. The available evidence does not identify the block configuration, receive logic, hardware module, framing settings, or status output, so it does not establish a product defect or a single confirmed root cause.

Separate the buffer from the transfer request

A 12-byte array provides storage for 12 bytes, but declaring that array does not by itself prove that the send request covers the entire array. Check both the address supplied to SEND_PTP and the configured transfer length. A reference that resolves to one array element, or a requested length of one byte, is consistent with the symptom but remains a hypothesis until the online block inputs are inspected.

Item to inspect Required finding Interpretation
Source reference It identifies the intended DB1 byte-array region A reference to only one element can limit the accessible payload.
Requested send length It covers the intended number of bytes, up to the 12 bytes present in the array A one-byte request explains a one-byte transmission.
Receive destination and length They can accept the same payload A correct transmission can still appear truncated at the receiving PLC.
Block status No error is active when the request completes Record the exact status value before changing the configuration.

Trace the transfer end to end

  1. Load distinct values into all 12 elements of DB1 so the transmitted range can be identified unambiguously.
  2. Monitor the actual buffer reference and requested length presented to SEND_PTP when the send request is triggered.
  3. Confirm that the send request is issued as intended and record the block completion and status indications.
  4. Inspect the receiving PLC's destination buffer and receive length. Determine whether only one byte arrived or whether additional bytes arrived but were not copied or displayed.
  5. If the sender requests all 12 bytes but the receiver still exposes one, compare the two endpoints' ASCII framing and serial settings. Do not change several settings simultaneously; change one item and repeat the same payload test.

Use the result to isolate the fault

If the monitored send length is one byte, correct the send request. If the source reference identifies a single array element, change it to the intended array region using syntax supported by the configured block. If SEND_PTP reports a successful 12-byte request, move the investigation to the receiver, framing, and serial configuration. Preserve any exact status value because it distinguishes parameter handling from communication failure.

Consider the Ethernet alternative separately

The S7-1200 built-in PROFINET port can link the two PLCs using S7 communication with GET and/or PUT. This may simplify PLC-to-PLC data exchange, but it does not resolve an application requirement that specifically mandates RS-485 ASCII. Treat it as an architecture option only if the external protocol requirement can change.

FAQ

Why does S7-1200 SEND_PTP send only one byte?

First verify the source reference and requested transfer length online. A one-element reference or one-byte request is consistent with the symptom, but the block status and receive buffer must confirm the cause.

Can SEND_PTP transmit an ARRAY[1..12] OF BYTE?

The evidence confirms that the application uses that 12-byte buffer, but it does not provide the block configuration needed to prove the accepted addressing syntax. Configure the send request to reference the intended array region and request the corresponding byte count, then verify the receiving buffer.

Can two S7-1200 PLCs communicate without RS-485 ASCII?

Yes. The stated alternative is the built-in PROFINET connection using S7 communication with GET and/or PUT, provided the application does not specifically require ASCII.

Back to blog