Эта заметка про возможный двойной «оптический обман».
Для монтажа проводного Modbus отлично подходят недорогие китайские платы XY-017.
Только надписи TX и RX на них перепутаны местами. На всех поголовно неверная надпись. Можно найти принципиальную электрическую схему платы, и по ней видно, что логический выход микросхемы 74HC14 они подписали как RXD. А вход подписали как TXD. Потому здесь тот самый случай когда «не верь глазам своим». Сами платы отличные. Modbus на них работает корректно и устойчиво. Но надписи TX и RX нужно мысленно менять местами. На рисунке я выделил красным именно правильное прохождение сигналов: Не менее интересно обстоит дело с некоторыми экземплярами Arduino Mega 2560. 18 пину там всегда должен соответствовать сигнал TX1, а пину 19 - RX1. Однако встречаются платы где на печатной плате надписи TX1 и RX1 переставлены местами. RX1 там подписан на выводе 18, а TX1 подписан на выводе 19. Если наизусть не помнить правильную разводку нужных пинов, и верить тому как подписано, то возникнет серьёзная путаница.
Основная причина такой путаницы, у некоторых Arduino Mega 2560, заключается в допущенной ошибке китайских трафаретов при разработке маркировки печатной платы.
Главное, что физическая разводка цепей на всех платах остается корректной, несмотря на неправильную маркировку. То есть:
На пине 18 всегда физически находится TX1 (передача данных)
На пине 19 всегда физически находится RX1 (прием данных)
Так вот, самый прикол в том, что если будет комбинация соединения, (согласно имеющимся трафаретным надписям) Arduino Mega 2560 (с неправильно прописанными TX1 и RX1), и присоединить к этим пинам платы Modbus XY-017 (с неправильно прописанными сигналами RXD и TXD) – то всё отлично заработает. Потому как минус переворот, на минус переворот – даст нормальное совпадение сигналов.
Человек впервые сделавший это решит: «Вот оно значит, как нужно всегда соединять». У знакомого, с его слов, так и получилось.
А вот и нет – всегда никак уже не выйдет. Если таким же образом присоединить XY-017 к другим пинам этого же Arduino Mega 2560 – RX2, TX2 или RX3, TX3 или к другому типу Arduino. – Modbus уже не заработает.
В общем, как пишут, без бутылки не разберёшься…
Главное, тут необходимо применять железное правило: у всех XY-017 надписи RXD и TXD нужно всегда мысленно менять местами.
У Arduino Mega 2560, если надписи на плате у RX1 и TX1, чередуются иначе, чем у RX2, TX2 и RX3, TX3 – первые надписи RX1 и TX1 тоже нужно мысленно менять местами: Разводка у них нормальная. По результатам многолетнего использования – по моим наблюдениям, надёжность и работоспособность у XY-017, и у Arduino Mega 2560 – отличные.