PDA

Просмотр полной версии : ДУТ D485 на СПК105



sslaventiy_85
18.02.2015, 07:15
Всем дорого дня суток!
Кто-нибудь сталкивался с задачей просмотром уровня топлива на СПК105 (или подобном) с использованием датчиков уровня топлива по RS485? Датчики работают по такому интерфейсу.

Трофимов Артем
18.02.2015, 11:25
данный датчик работает по Modbus. Вы можете его опрашивать как стандартными средствами кодесис, так и библиотеками нашими. список регистров должен быть указан в документации к датчику.

sslaventiy_85
25.02.2015, 13:39
датчик я опрашивать научился, но проблема с выдачей данных. Датчик настроен выдавать показания в литрах. А принимать правильно показания я не научился. В зависимости от выбранного типа переменой, показания очень сильно отличаются друг от друга и от того, что должен показывать в реале датчик.

sslaventiy_85
26.02.2015, 12:05
Может надо преобразовывать переменные из одного типа в другой чтоб получить желаемый результат?

_Mikhail
26.02.2015, 14:53
Прочитайте внимательно инструкцию к датчику, там есть описание протокола Modbus. Показания в литрах являются переменной Float, которую СПК 105 без преобразования не понимает. Вам необходимо считать два регистра в которых находится нужные Вам данные и преобразовать их в REAL.

sslaventiy_85
27.02.2015, 05:37
16886
на этом изображении видно, что код функции 4 - это я настроил в модбас слэйве, адрес 0х00 я записал в регистре рид в сдвиге, длину оставил 1. В сотнесении входов/выходов задал переменную, которой присвоил тип real. После этого я запускаю логин и старт и мне отображается значение 2304295Е-41. Если я меняю тип переменной на WORD, тогда значения пляшут в диапазоне от 13557 до 17096 (соответственно пустой и полный бак). Я пока не понимаю как я должен считать эти два регистра. Подскажите, пожалуйста. Может есть какой-то пример, который я не видел.

_Mikhail
27.02.2015, 10:06
Формат REAL занимает 2 регистра, поэтому сдвиг надо ставить не 1 а 2. Во вложении пример преобразования значений в формат REAL. Установи только адрес устройства и скорость обмена. Будут вопросы пиши в личку.

sslaventiy_85
04.03.2015, 05:26
Хотел еще попросить совета - при подключении СПК и датчиков вместе, СПК не открывает COM порт. А при подключении к компьютеру - все отлично работает. Может посоветуете где можно почитать. А то не вариант при каждом включении подключать компьютер.

_Mikhail
04.03.2015, 08:08
Выложи свой проект, я посмотрю настройки, и еще при загрузке СПК зайди в конфигурацию и посмотри какой интерфейс у тебя выбран для порта 485 или 232

sslaventiy_85
05.03.2015, 15:11
_Mikhail, проект я выложу, но завтра (сегодня не получится). Я немного вышел из ситуации - я прописал (точнее списал из примера) код для программного поднятия порта. Но так как у меня сейчас подключено только два датчика из 20 запланированных, я прописал код только для трех (когда написал для двух - не работало). И пока все работает. Все 20 датчиков подключу наверное не скоро. Еще хотел спросить - можно ли сделать так, что если какое-либо Slave устройство (датчик) отключается в процессе работы или оказывается неисправным, привязать эту ошибку, например, к переменной, чтобы я эту переменную мог привязать к изменению цвета на кнопке.

_Mikhail
05.03.2015, 16:33
_Mikhail, проект я выложу, но завтра (сегодня не получится). Я немного вышел из ситуации - я прописал (точнее списал из примера) код для программного поднятия порта. Но так как у меня сейчас подключено только два датчика из 20 запланированных, я прописал код только для трех (когда написал для двух - не работало). И пока все работает. Все 20 датчиков подключу наверное не скоро. Еще хотел спросить - можно ли сделать так, что если какое-либо Slave устройство (датчик) отключается в процессе работы или оказывается неисправным, привязать эту ошибку, например, к переменной, чтобы я эту переменную мог привязать к изменению цвета на кнопке.

Посмотри в инструкции к датчику, имеется ли регистр с кодом ошибки. Если есть, то нужно просто опрашивать еще и этот регистр

sslaventiy_85
06.03.2015, 08:57
Проект еще не доработан, т.к. я уже писал, что не все датчики подключены.

sslaventiy_85
06.03.2015, 09:02
и еще описание датчика.

sslaventiy_85
06.03.2015, 09:09
Как я понял - надо создать новый к***** в котором код будет "запись и чтение 4", адрес будет 0х2200, сдвиг - 1. А дальше я пока ничего не понял.

sslaventiy_85
06.03.2015, 09:10
почему-то канал в ****

_Mikhail
06.03.2015, 10:36
Как я понял - надо создать новый к***** в котором код будет "запись и чтение 4", адрес будет 0х2200, сдвиг - 1. А дальше я пока ничего не понял.

Надо считывать регистр error (34 (0x22) код ошибки) При отсутствии ошибки измерений переменная будет равна 0, при наличии какой либо ошибки значение будет другим

sslaventiy_85
06.03.2015, 11:07
В Slave_com необходимо добавить еще один к***** который и будет считывать ошибку, я правильно понял?

sslaventiy_85
06.03.2015, 11:09
В Slave_com необходимо добавить еще один к***** который и будет считывать ошибку, я правильно понял?

почему-то слово "канал" закрывается

_Mikhail
06.03.2015, 11:19
В Slave_com необходимо добавить еще один к***** который и будет считывать ошибку, я правильно понял?

Да именно так. В каждом Slave_com заходишь на вкладку Канал Modbus Slave и добавляешь канал функция чтения 4, адрес 0x22 сдвиг 1. После чего добавляешб переменную в проекте и привязываешь к этому каналу

sslaventiy_85
06.03.2015, 14:04
Да именно так. В каждом Slave_com заходишь на вкладку Канал Modbus Slave и добавляешь канал функция чтения 4, адрес 0x22 сдвиг 1. После чего добавляешб переменную в проекте и привязываешь к этому каналу

Михаил, я так сделал. Но в этом случае СПК и датчик показывают ошибку при условии что с датчиком какие-то проблемы (может с частотой что-то и т.д.). А когда я принудительно отключаю один датчик, эта переменная никаких ошибок не выдает - значение датчика "замерзает", значение переменной остается "0". При запуске на компьютере видно, что такой Slave_com не работает (рядом загорается красный треугольник). Я хотел бы чтоб как-нибудь можно было увидеть это и на экране СПК. Я заметил, что при программном поднятии порта при режиме онлайн значение (в моем случае) Modbus_COM_Port_2.xError меняется с TRUE на FALSE и наоборот. Я думал что можно это использовать для отображения этой информации на СПК. Если я не прав - поправьте меня, пожалуйста.

sslaventiy_85
28.04.2015, 05:11
Всем спасибо кто помогал мне в решении этой задачи!!! Все работает!!! Но есть одна очень неприятная проблема - при срабатывании какого-нибудь оборудования (не относящегося к моей системе) все slave "выскакивают" и обратно подключаются не все. По монтажу все проверили, поставили фильтр. Ничего не помогает. Может есть какие мысли, поделитесь?!

sslaventiy_85
29.04.2015, 10:30
Это вообще выполнимая задача?

Kontra
02.06.2015, 17:44
Всем спасибо кто помогал мне в решении этой задачи!!! Все работает!!! Но есть одна очень неприятная проблема - при срабатывании какого-нибудь оборудования (не относящегося к моей системе) все slave "выскакивают" и обратно подключаются не все. По монтажу все проверили, поставили фильтр. Ничего не помогает. Может есть какие мысли, поделитесь?!

экран кабеля заземлили с одной стороны?
длина кабеля какая?

sslaventiy_85
15.07.2015, 13:24
экран кабеля заземлили с одной стороны?
длина кабеля какая?

Да, экран кабеля заземлили. У меня подключено 8 датчиков. Они сходятся в одной коробке, а потом идут на СПК. Длина от этой коробки до СПК приблизительно 3 метра.