PDA

Просмотр полной версии : ПР200 чтение регистров AI



melky
20.04.2018, 22:14
Вот что шлет ПР200

запрос всегда один 01 03 0B 00 00 08 46 28 (Holding Registers)

ответы в циклическом опросе
01 03 10 5C 2D 0D 3A CA 8F 99 40 80 1C 27 BE F8 82 38 40 78 41
01 03 10 BA B3 73 38 93 91 99 40 00 2A 28 BE F0 81 38 40 C5 37
01 03 10 4A EA 6D 39 1F 8E 99 40 60 28 28 BE 1C 7D 38 40 A3 24
01 03 10 16 F5 98 38 29 92 99 40 A0 66 26 BE 21 7B 38 40 5F 6E
01 03 10 71 93 C4 39 6B 92 99 40 20 07 28 BE 5B 82 38 40 C5 DA
01 03 10 10 3B 47 39 58 90 99 40 E0 E1 26 BE DB 85 38 40 5B 12

При этом 2,3,4 входы в скада всегда показывают 0,000 а вот 1-й вход колбасит, то 0,045 покажет то 3 498 548 664 410 390 000 000 000,000 то -219 322 743 808 355 000 000 000,000
А судя по ответам там колбасит все входа... Производители могут что-то ответить по данному поводу ?

входы 1,2,4 настроены на 0-10В, массштабирование 0-10. 3-й вход 4-20мА не используется. к 4-му подключен аналоговый датчик температуры с диапазоном напряжения 2,3315-3,7315 вольт - в программе и в созданной переменной float передает температуру правильно.
После чтения последовательность байт 2301

Использовался ОЛ 1.9 какой-то при прошивке ПР.

Собственно хотелось бы услышать, что должен показывать в переменной аналогового входа, если на нем диапазон 2,3 - 3,7 вольта ?

capzap
20.04.2018, 22:41
не ищите проблемы где её нет, изменение разрядов мантиссы не всегда приводят к выходу за пределы предполагаемого числа, а первый вход и у меня дребезжит больше чем остальные

melky
20.04.2018, 22:54
Нашел причину. Вот объясните, производители ПР, почему когда в программе добавляешь в слейв переменную типа float ей НЕЛЬЗЯ переставить байты и регистры и порядок мы имеем постоянно 2301, а при чтении системных регистров с переменными float порядок 3210 ?

melky
20.04.2018, 23:38
capzap в слейве нельзя изменить порядок, это фикция. всегда 2301, что и удивило, когда у системных оказалось 3210. Порядок меняется только для режима мастер.
С точки зрения программирования надо чтобы настройки менялись для всех режимов в том числе и для системных переменных. либо для слейва быть с одинаковым порядком байт для всех переменных, системных и создаваемых.

melky
21.04.2018, 08:08
это не ко мне вопрос, а к производителю, почему для слейва не убрали настройки, если они не действуют.
Или не доделают, чтобы они действовали. А так же настройки для системных переменных менять, если уж делать.

capzap
21.04.2018, 08:34
это не ко мне вопрос, а к производителю, почему для слейва не убрали настройки, если они не действуют.
Или не доделают, чтобы они действовали. А так же настройки для системных переменных менять, если уж делать.

эта тема называется подругому, ну уж если возник снова у Вас такой вопрос, почему бы не продолжить его озвучивать там где уже задавались им http://www.owen.ru/forum/showthread.php?t=26346&p=241611&viewfull=1#post241611

melky
21.04.2018, 08:43
capzap у меня несколько иной вопрос, если не совсем заметили. Приведу пример с ПЛК63 - что переменные, которые мы не можем изменить, что переменные, которые мы добавляем имеют ОДИН порядок байт для передачи. Тут же порядок РАЗНЫЙ, чего быть не должно в принципе. Тут мы так сделали, а тут мы рыбу заворачивали...

Ревака Юрий
23.04.2018, 11:58
Добрый день, коллеги, не ссорьтесь. Есть недоработка в этом вопросе, создал задачу, будем править. Проверил у себя, если использовать настройки для порядка следования в слейве по умолчанию, то читается все корректно и для сетевых и для системных регистров.

melky
23.04.2018, 13:23
Ревака Юрий подробнее про порядок следования для слейва по умолчанию ? я их давно не трогал вообще, так как они не влияли на порядок.
Версию 1.10 как-то нет желания устанавливать, если в ней что-то еще изменили...

Ревака Юрий
23.04.2018, 13:45
Ревака Юрий подробнее про порядок следования для слейва по умолчанию ? я их давно не трогал вообще, так как они не влияли на порядок.
Версию 1.10 как-то нет желания устанавливать, если в ней что-то еще изменили...

Я для сетевых переменных для слота в режиме слейв, до сегодняшнего дня, не менял положение чекбоксов настройки последовательности передачи байт/регистров, в этом положении (старшим байтом вперед) чтение сетевых регистров в формате float и значений аналоговых входов системных регистров (адреса 0xB00...) происходит корректно. Тут нужно еще уточнить какой программой Вы проверяете, но в любом случае, порядок следования у них одинаковый.

melky
23.04.2018, 13:59
Можно скрин положения чекбоксов для слейва ?

в Scada подключал, еще раз - системные переменные float порядок 3210, добавленные переменные float в программе 2301
Как бы не менял положения чекбоксов, добавленная переменная в программе всегда была 2301. (по крайней мере так было в 1.8 версиях, на 1.9 никогда не проверял так как забил)

Ага, получается по умолчанию старший байт вперед для добавленных переменных должен работать ? (проверю по возможности, раньше точно ничего не работало), но при снятии галочки для добавленных переменных порядок меняется, а для системных нет... так выходит ?

Ревака Юрий
23.04.2018, 14:12
Можно скрин положения чекбоксов для слейва ?

в Scada подключал, еще раз - системные переменные float порядок 3210, добавленные переменные float в программе 2301
Как бы не менял положения чекбоксов, добавленная переменная в программе всегда была 2301. (по крайней мере так было в 1.8 версиях, на 1.9 никогда не проверял так как забил)

Ага, получается по умолчанию старший байт вперед для добавленных переменных должен работать ? (проверю по возможности, раньше точно ничего не работало), но при снятии галочки для добавленных переменных порядок меняется, а для системных нет... так выходит ?

Вот в таком режиме слейв настроен по умолчанию, с такими настройками читаются и сетевые и системные регистры с одним порядком, для Modbus Poll это Float, если меняем чекбоксы то влияет на системные, сетевые остаются с прежним порядком.

melky
23.04.2018, 14:17
хм, у меня чекбоксы сняты оба а именно системные передаются старшим байтом вперед 3210, ПР далеко стоит чтобы проверить.

Ревака Юрий
23.04.2018, 14:30
хм, у меня чекбоксы сняты оба а именно системные передаются старшим байтом вперед 3210, ПР далеко стоит чтобы проверить.

Может дело в том, что где-то еще происходит переворот, я смотрел через ModbusPoll, но через ModBus TCP, могут быть тонкости, но в любом случае по этой цепи я считал сетевые переменные float и значения аналоговых входов по адресу 0xB00....значения пришли корректные.

melky
23.04.2018, 16:06
Чтение идет через преобразователь Ethernet - RS485, точнее через два разных работало, как настроил один раз сетевые переменные 2301 так при смене преобразователя и осталось. Не думаю, что с преобразователем связано. Да и другие приборы через них подключал, косяков замечено не было...

Ревака Юрий
23.04.2018, 16:16
Чтение идет через преобразователь Ethernet - RS485, точнее через два разных работало, как настроил один раз сетевые переменные 2301 так при смене преобразователя и осталось. Не думаю, что с преобразователем связано. Да и другие приборы через них подключал, косяков замечено не было...

Да это я про свой преобразователь говорил, но если необходимо читать и сетевые и системные адреса, я бы поставил для слейва только чекбокс старшим байтом вперед и настроил скаду или OPC на корректное отображение.

melky
23.04.2018, 17:06
со чтением и отображением проблем нет, хоть все регистры по разному будут передаваться. настройка выполняется для каждого регистра отдельно.
Речь то о другом в теме - чтобы было все одинаково.