Всем дорого дня суток!
Кто-нибудь сталкивался с задачей просмотром уровня топлива на СПК105 (или подобном) с использованием датчиков уровня топлива по RS485? Датчики работают по такому интерфейсу.
Всем дорого дня суток!
Кто-нибудь сталкивался с задачей просмотром уровня топлива на СПК105 (или подобном) с использованием датчиков уровня топлива по RS485? Датчики работают по такому интерфейсу.
данный датчик работает по Modbus. Вы можете его опрашивать как стандартными средствами кодесис, так и библиотеками нашими. список регистров должен быть указан в документации к датчику.
датчик я опрашивать научился, но проблема с выдачей данных. Датчик настроен выдавать показания в литрах. А принимать правильно показания я не научился. В зависимости от выбранного типа переменой, показания очень сильно отличаются друг от друга и от того, что должен показывать в реале датчик.
Может надо преобразовывать переменные из одного типа в другой чтоб получить желаемый результат?
Прочитайте внимательно инструкцию к датчику, там есть описание протокола Modbus. Показания в литрах являются переменной Float, которую СПК 105 без преобразования не понимает. Вам необходимо считать два регистра в которых находится нужные Вам данные и преобразовать их в REAL.
Безымянный.png
на этом изображении видно, что код функции 4 - это я настроил в модбас слэйве, адрес 0х00 я записал в регистре рид в сдвиге, длину оставил 1. В сотнесении входов/выходов задал переменную, которой присвоил тип real. После этого я запускаю логин и старт и мне отображается значение 2304295Е-41. Если я меняю тип переменной на WORD, тогда значения пляшут в диапазоне от 13557 до 17096 (соответственно пустой и полный бак). Я пока не понимаю как я должен считать эти два регистра. Подскажите, пожалуйста. Может есть какой-то пример, который я не видел.
Формат REAL занимает 2 регистра, поэтому сдвиг надо ставить не 1 а 2. Во вложении пример преобразования значений в формат REAL. Установи только адрес устройства и скорость обмена. Будут вопросы пиши в личку.
Хотел еще попросить совета - при подключении СПК и датчиков вместе, СПК не открывает COM порт. А при подключении к компьютеру - все отлично работает. Может посоветуете где можно почитать. А то не вариант при каждом включении подключать компьютер.
Выложи свой проект, я посмотрю настройки, и еще при загрузке СПК зайди в конфигурацию и посмотри какой интерфейс у тебя выбран для порта 485 или 232
_Mikhail, проект я выложу, но завтра (сегодня не получится). Я немного вышел из ситуации - я прописал (точнее списал из примера) код для программного поднятия порта. Но так как у меня сейчас подключено только два датчика из 20 запланированных, я прописал код только для трех (когда написал для двух - не работало). И пока все работает. Все 20 датчиков подключу наверное не скоро. Еще хотел спросить - можно ли сделать так, что если какое-либо Slave устройство (датчик) отключается в процессе работы или оказывается неисправным, привязать эту ошибку, например, к переменной, чтобы я эту переменную мог привязать к изменению цвета на кнопке.