В том что 232 и ТСП настраиваетс в кофигураторе, и РТУ нет
попробовал, не работает. Я там понял по той причине что в конфигураторе UMD находится не в теле 485 слота. оба значения присылает 0
1000 и 2000 я дал для примера, разумеется в примере опробовал свои значения.
Ниже выкладываю почти рабочую версию программы.
Проблемы начинаются с 10 строчки блога DSE_MODBUS_READ
если первые 2 значения я читаю единой командой а потом как мне надо компаную DWORD(ответ получаю верный). То второй командой мне я пытась прочитать другое значение... но по мимо того что программа не читает его, так еще и начинает переодически портить значение dse_value_second значение постоянно переключается с правильного на 512. (когда убираю эту строку читка работает отлично). В этом же блоке реализовал запись регистра в DSE но не вижу что бы значение приходило в контроллер.
Библиотека и конфигурация - вещи разные, и смешивать и х в проекте не следует. Про работу с библиотекой я вам не помогу, если хотите разобраться с конфигурацией, давайте попробуем.
В тело "слота 485" ничего не вставляется, поэтому не работает не поэтому, а потому, что , например:
а) прибор не поддерживает групповое чтение регистров (тогда младший и старший регистры нужно читать по одному, а в программе вычислять значение)
б) команда для чтения, установленная в конфигурации, не соответствует команде, на которую прибор будет отвечать
в) адрес регистра указан неверно (например, нумерация регистров в приборе ведется в соответствии с стандартным подходом (input registers, holding registers, coils, и т.д. ) и начальный регистр имеет номер 1 )
г) неправильно установлены таймауты.
Проше всего попробовать получить-таки данные из одного регистра, а потом двигаться дальше.
Каюсь ибо замыленый глаз не уловил ошибку, да с конфигуратором я читаю 32 битные регистры, но возник вопрос как прочитать 16-битный... и что еще более важно, записать 16-битный регистр?
Кстати подскажите как мне теперь доставать эти значения в программе? (уже настолько затерся что очевидные вещи тяжелы для понимания)
потерпите 10 минут, щас слеплю примерчик.
Вот как-то так. Имена переменных, присвоенные в конфигураторе, имеют статус глобальных (то есть переопределять их нигде не надо, можно просто к ним обращаться, либо вбивая их вручную, либо через F2, кроме того, они попадают в область Retain и при выключении питания сохраняются.
Спасибо. Сейчас заряжу аккумуляторы и протестирую. Как я понял из примера что в конфигураторе Register input module имеет как раз размерность 16, но на нем это не написано в названии как на 32 и 8 битных.
Кстати возник такой вопрос пока работал с 32 битными регистрами. Значение которое записывалось в 1000 рег переползало в 2000 потом в 3000 и.т.д. потом опять в 1000. Так же было что регистры показывают верные значения но не в своих адресах. А возможность значение из скажем регистра 1000 такое же как в 2000 исключена.