PDA

Просмотр полной версии : Не могу стартануть с СП307 :(



VaBo
18.03.2016, 18:27
Коллеги, прошу помощи!
Задача следующая - читать по модбас рту четеры устройства (температуры), выводить на экран текущие значения, строить вызываемые исторические тренды по каждому из параметров и сохранять все на флешку для бессрочного хранения. Одним словом - аналог безбумажного регистратора.
Ранее опыта с панелями не было, и вот уперся в этот конфигуратор (ожидал увидеть что-то подобное среде разработки) и топчусь третий день на одном месте...
Как я понимаю, нужно привязать прочитанные из устройств данные к какому-то системному регистру (как?), чтобы потом оперировать с ними при помощи элемента ТРЕНД.
Вопросов, конечно, куча, но прежде всего прошу подсказать правильный системный подход к задачке, пока какая-то каша - отдельно окно с данными, отдельно исторический тренд, причем, как я понял, ломятся они за данными в контроллер каждый сам по себе...
Прошу вразумить, заранее спасибо.

Адрей
18.03.2016, 21:39
За самое сложное взялся, начни с битов.

VaBo
19.03.2016, 11:49
За самое сложное взялся, начни с битов.
Что изменится с битами?
Повторю главную (на этот момент) свою непонятку, - как правильно читать данные из устройства, сохраняя результат(ы) во внутренних регистрах (или сразу в эти регистры)?

Евгений Кислов
19.03.2016, 12:03
Что изменится с битами?
Повторю главную (на этот момент) свою непонятку, - как правильно читать данные из устройства, сохраняя результат(ы) во внутренних регистрах (или сразу в эти регистры)?

Например, элементом Функциональная область, вызываемом циклически:

23233

В данном случае 5 holding (4x) регистров (0-4), считанные с slave-устройства с адресом 1, подключенного к Download-порту, будут скопированы в регистры PSW300-304 панели.

VaBo
19.03.2016, 12:48
Спасибо, это то, что нужно!

petera
19.03.2016, 14:07
Что изменится с битами?
Повторю главную (на этот момент) свою непонятку, - как правильно читать данные из устройства, сохраняя результат(ы) во внутренних регистрах (или сразу в эти регистры)?
Главная непонятка, а зачем Вам читать во внутренние регистры?
Для графика(тренда) сразу используйте регистры Ваших устройств. Сам тренд хранится во внутренних регистрах панели, именно их и нужно будет использовать в дальнейшем для записи архивов на флешку.

VaBo
19.03.2016, 17:48
Допустим, на экране отдельно текущие данные и отдельно тренд. Каждый ломился в модбас за одними и теми же данными самостоятельно, пока не сделал по совету Евгения.
Кстати, групповой запрос можно как-то реализовать?

petera
19.03.2016, 19:10
Допустим, на экране отдельно текущие данные и отдельно тренд. Каждый ломился в модбас за одними и теми же данными самостоятельно, пока не сделал по совету Евгения.
Кстати, групповой запрос можно как-то реализовать?
Судя по первому посту, у Вас четыре устройства, из каждого Вы берете одно значение температуры?
Если да, то прирост производительности обмена по сети Вы не почувствуете. Групповой запрос имеет смысл только если нужно читать не один-два регистра из одного устройства, а много, например, несколько десятков.

VaBo
19.03.2016, 21:37
Нет, не по одному, по два :)
В данном случае непринципиально, хотелось просто знать, на что можно рассчитывать.
И смысл в групповом запросе появляется уже при чтении более одного регистра.

Вы не можете пояснить отличие архивирование в панели и архивирование на USB?
Сейчас попробовал сделать как в руководстве, при помощи архивирование в панели архивировать на USB-flash, вроде работает.

Евгений Кислов
19.03.2016, 21:50
Вы не можете пояснить отличие архивирование в панели и архивирование на USB?
Сейчас попробовал сделать как в руководстве, при помощи архивирование в панели архивировать на USB-flash, вроде работает.

Отличие в том, что Архивирование в панели сохраняет данные в регистры панели, а элемент Архивирование на USB - соответственно, на USB. В примере используется функциональная область с действием Экспорт CSV. Использование элемента Архивирование на USB позволило бы в определенных случаях обойтись без нее. На уровне примера такой подход был применен, чтобы сделать как можно более похожими примеры с импортом/экспортом данных с USB.

Адрей
19.03.2016, 22:11
Вашем случае нужно брать мой пример шаблон с темы "Тестирования панели СП307" там тренд рабочий, но к нему нужно прикрутить дополнительный экран чтения накопленного трендом архива области PFW и уже с кнопки выгружать на флешку, конечно с выборкой по времени не получится сделать, а выгрузить всю область архива c конвертором в файл CSV можно.

VaBo
24.03.2016, 14:00
Продолжу тему:
Для фильтрации данных, пишущихся в тренд (относительно цифрового значения на экране) написал следующий макрос - фильтр

WORD c;
// heat 1
c = PSW[300]*9 + PSW[290];
PSW[300] = c/10;

Читается из устройства в PSW[290] тренд использует PSW[300]. Проверил в панели, все работает как надо. После этого (как водится!) начал читать справку и вижу, что для прямой работы с регистрами нужно использовать глобальные макросы и никак иначе.
Ждать мне каких-то косяков в дальнейшем или лучше сразу переписывать?

Евгений Кислов
24.03.2016, 14:14
начал читать справку и вижу, что для прямой работы с регистрами нужно использовать глобальные макросы и никак иначе.


Не совсем так. Если вы вызываете макрос с помощью Функциональной области, то рекомендуется делать ее глобальной - иначе при переходе на другой экран (где этой области уже нет) выполнение макроса прекратится.

VaBo
24.03.2016, 14:36
ОК, еще вопросик...

Тренд сделан глобальным, хотя других экранов, кроме установки времени-даты и нет, но все же:
В симуляторе при вызове экрана настройки времени тренд маячит на заднем плане, а вот в панели - нет. Но и запись в него прекращается (вернее, пишется последнее значение).

Евгений Кислов
24.03.2016, 15:01
ОК, еще вопросик...

Тренд сделан глобальным, хотя других экранов, кроме установки времени-даты и нет, но все же:
В симуляторе при вызове экрана настройки времени тренд маячит на заднем плане, а вот в панели - нет. Но и запись в него прекращается (вернее, пишется последнее значение).

Это действительно так. Мы постараемся исправить это в следующих версиях конфигуратора.

petera
24.03.2016, 15:17
ОК, еще вопросик...

Тренд сделан глобальным, хотя других экранов, кроме установки времени-даты и нет, но все же:

Какие глупости!
Не нужно тренд делать глобальным!!! В нем выборка данных работает глобально сама по себе!

По вызову Вашего макроса фильтрации данных.
А останавливается график потому, что макрос фильтрации должен быть глобальным! Иначе при переходе на экран установки даты/времени макрос не работает.
Можно ф.область, в которой макрос вызывается, делать глобальной, а можно ее расположить на системном экране 65535

ЗЫ.
А еще, т.к. Вы остановились на варианте использования промежуточных регистров PSW вместо чтения для тренда регистров слейва, то учтите, что ф.область копирующая регистры слейвов в регистры PSW тоже должна быть глобальной!!! Иначе при переходе на экран даты/времени копирование прекращается.

Евгений Кислов
24.03.2016, 15:30
Можно ф.область, в которой макрос вызывается, делать глобальной, а можно ее расположить на системном экране 65535

ЗЫ.
А еще, т.к. Вы остановились на варианте использования промежуточных регистров PSW вместо чтения для тренда регистров слейва, то учтите, что ф.область копирующая регистры слейвов в регистры PSW тоже должна быть глобальной!!! Иначе при переходе на экран даты/времени копирование прекращается.

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

Если поместить ее на Common Screen, то она действительно будет работать, в этом вы правы.

VaBo
24.03.2016, 16:41
ЗЫ.
А еще, т.к. Вы остановились на варианте использования промежуточных регистров PSW вместо чтения для тренда регистров слейва, то учтите, что ф.область копирующая регистры слейвов в регистры PSW тоже должна быть глобальной!!! Иначе при переходе на экран даты/времени копирование прекращается.
Вы зря так нервничаете, то, что график останавливается я увидел задолго до реализации макроса фильтра, а ф/область изначально тоже сделана глобальной.
По поводу пром. регистров:
Сейчас я читаю (1@10 сек) данные со слейвов в пром. регистры, прямо из этих регистров вывожу на цифровой дисплей. Из них же делаю неглубокую фильтрацию для вывода в тренд (1@1 мин) и глубокую для записи во флешь (1@10мин).
Если есть способ красивее - реализую с удовольствием!

petera
24.03.2016, 18:30
Вы зря так нервничаете, то, что график останавливается я увидел задолго до реализации макроса фильтра, а ф/область изначально тоже сделана глобальной.
По поводу пром. регистров:
Сейчас я читаю (1@10 сек) данные со слейвов в пром. регистры, прямо из этих регистров вывожу на цифровой дисплей. Из них же делаю неглубокую фильтрацию для вывода в тренд (1@1 мин) и глубокую для записи во флешь (1@10мин).
Если есть способ красивее - реализую с удовольствием!
Я не против идеи копировать регистры слейва в промежуточные PSW одной ф.областью, сам так делал, когда нужно было читать, 50-60 регистров из слейва. Только для 1-2 регистров смысла не вижу.
Как оказалось, при переходе на системные экраны, сам график, не глобальный, продолжает исправно работать, а ф.области со свойствами "Глобальный" перестают выполняться. Из-за этого у Вас и не меняются данные для графика и архива.
Вместо использования свойства "Глобальный" для ф.областей нужно их размещать на экране №65535(Common Screen). Все сразу станет на свои места.

ЗЫ. Непонятные выражения (1@10 сек), (1@1 мин) и (1@10мин)

VaBo
24.03.2016, 19:43
ЗЫ. Непонятные выражения (1@10 сек), (1@1 мин) и (1@10мин)
1 раз в 10 сек, 1 раз в мин. Видимо перемудрил.

Что-то не могу вытащить этот Common Screen, где его искать? ID такой вновь создаваемому задавать не дает...