Doomers а адрес так и указывается 0x40001 или все-таки 1 или 0 с указанием Holding Registers функций 0x03 ?
з.ы. просто не знаю Siemens настолько
Doomers а адрес так и указывается 0x40001 или все-таки 1 или 0 с указанием Holding Registers функций 0x03 ?
з.ы. просто не знаю Siemens настолько
В TiaPortal есть возможность посмотреть пакет TCP который отправляется от Simens до 100-ки ?
Если это симуляция на ПК то можно WireShark-ом посмотреть, вот чем смотреть между ПЛК я честно не знаю...
MB_Data_Len почему 1 если вы три регистра создали ?
Последний раз редактировалось melky; 02.04.2022 в 22:30.
Bad programmers worry about the code. Good programmers worry about data structures and their relationships
среди успешных людей я не встречала нытиков
Барбара Коркоран
Валенок какое устройство уже не помню, надо по форуму лазить и искать. первые два байта заголовка это Transaction Id - можете проверить на ПЛК 100(110) всегда там нули ставить и ПЛК будет отвечать. Да и многие устройства из мне знакомых просто игнорируют этот параметр.
Но таки попалось какое-то устройство. которое требовало наличие счетчика и не отвечало, если там были нули.
MB_Unit_ID - то, о чем я говорил, без этого ID сотка не ответит. Хотя честно не пробовал с 0xFF а с 0x00 оно не отвечает.
Последний раз редактировалось melky; 02.04.2022 в 23:05.
Валенок не равными, а увеличиваться и не быть равными нулю это если по протоколу. Но большинство кладут на номер транзакции с высокой....
з.ы. на счет смотреть - WireShark умеет смотреть только физические интерфейсы своего ПК, то есть что ПК отправляет. Какого-то ПО, которое может сниферить сеть между сторонними устройствами я на знаю. Я об этом больше говорил. То есть если ПЛК работает на ПК в эмуляции то фозможно можно посмотреть Шарком, хотя не факт. Пример с виртуальной машиной где интерфейс в брижде Шарк не отловит.
Последний раз редактировалось melky; 02.04.2022 в 23:52.
Several MODBUS transactions can be activated simultaneously on the same TCP Connection.
Remark: If this is done then the MODBUS transaction identifier must be used to uniquely identify the matching requests and responses.
The transaction identifier is used to associate the future response with the request.
So, at a time, on a TCP connection, this identifier must be unique. There are
several manners to use the transaction identifier:
- For example, it can be used as a simple "TCP sequence number" with a
counter which is incremented at each request.
- It can also be judiciously used as a smart index or pointer to identify a
transaction context in order to memorize the current remote server and the
pending MODBUS request.
Ну, с чего начинать ID транзакции с 0 или с 1 не сказано. Выше цитаты из протокола, но как писал ранее, за несколько лет столкнулись только с одним устройством, которое требовало наличие ID транзакций и не отвечало, когда оно было равным нулю. И мало того, не отвечало на повторный ID если ответ был передан.
Я человек простой. Тупо промт :
Про некий "0" ничего не вижу. Но заметил.Несколько транзакций MODBUS могут быть активированы одновременно на одном TCP-соединении.
Примечание: Если это сделано, то идентификатор транзакции MODBUS должен использоваться для однозначной идентификации соответствующих запросов и ответов...
А счетик, умножитель или рандом - пофиг.
Последний раз редактировалось Валенок; 03.04.2022 в 17:11.