PDA

Просмотр полной версии : Панели оператора СП3xx. Вопросы и ответы



Страницы : 1 2 3 4 [5] 6 7 8 9 10 11 12 13 14 15 16 17

spa
09.06.2018, 10:55
С длиной зуммера я справился. Если кому будет интересно, или понадобиться, выкладываю код функции:

void LongBeep()
{
int i;
WORD j;
Read (HMI_LOCAL_MCH,0,TYPE_PFW,300,0,TYPE_WORD,&j);
for( i = 0; i <= j; i ++ )
{
Beep();
}
}

Евгений Кислов
09.06.2018, 11:12
Вообще думал одно окно, которое будет открываться по фронту любого бита.


Передалал свой вчерашний пример с PSB на биты PSW.

Но вот это:


На этом окне вывод информации из регистра. А вот в этот регистр писать информацию о состоянии сработавших битов.

вам надо будет реализовать самостоятельно в соответствии с нужным вам алгоритмом.


Я конечно понимаю, что хочу много от СП, когда тут уже лучше СПК брать, тогда сразу все решилось бы быстро и просто.

Это верно.

ivanivanih
13.06.2018, 09:44
Здравствуйте, почему не работает эмуляция при запуске проекта на СП310-Р. Скрины прилагаю. Вес проекта 32МБ. 37643

Евгений Кислов
13.06.2018, 09:46
Здравствуйте, почему не работает эмуляция при запуске проекта на СП310-Р. Скрины прилагаю. Вес проекта 32МБ. 37643

Добрый день.
Выложите проект, пожалуйста.

ivanivanih
13.06.2018, 11:36
Спасибо разобрались в табл использовали PCW регистры.
Еще проблема с прошивкой через кабель USB, проверяли на двух кабелях, через флэшку прошил без проблем 37646

Евгений Кислов
13.06.2018, 11:40
Спасибо разобрались в табл использовали PCW регистры.
Еще проблема с прошивкой через кабель USB, проверяли на двух кабелях, через флэшку прошил без проблем 37646

Попробуйте с другим USB-портом ПК (лучше с тем, который выведен сзади, а не на переднюю крышку).

ivanivanih
13.06.2018, 13:50
Попробуйте с другим USB-портом ПК (лучше с тем, который выведен сзади, а не на переднюю крышку).

Пробовали две панели с двух ПК, одна и та же история

Евгений Кислов
13.06.2018, 13:55
Выложите все же ваш проект, пожалуйста - попробуем загрузить у себя.

spa
13.06.2018, 14:26
Подскажите, как в исторической таблице сделать, чтобы время появления отображалась как DD MM YYYY, вместо YY MM DD

ivanivanih
13.06.2018, 14:29
Выложите все же ваш проект, пожалуйста - попробуем загрузить у себя.

Пришлите вашу почту для отправки

Евгений Кислов
13.06.2018, 14:30
Подскажите, как в исторической таблице сделать, чтобы время появления отображалась как DD MM YYYY, вместо YY MM DD

В исторической таблице так сделать, к сожалению, нельзя.
Но можно сделать свою таблицу с любым форматом времени:
https://youtu.be/BU1ugXRrzg4

Евгений Кислов
13.06.2018, 14:30
Пришлите вашу почту для отправки

См. в подписи.

Dimos
14.06.2018, 11:21
Добрый день.

Подскажите что в макросе не так. Нужно считать с ПР200 значение регитра.

WORD Value=0;
Read(PLC, 1, MODBUS_RTU_REG_4X, 538, 0, TYPE_WORD, &Value);
PSW[300]=Value;

Евгений Кислов
14.06.2018, 11:25
Добрый день.

А без макроса считать значение удается? Например, обычным цифровым дисплеем.

Возможно, вы просто не вызываете макрос?

Dimos
14.06.2018, 11:29
а как его вызвать?

Dimos
14.06.2018, 11:31
Без макроса работает

Мне нужно это значение перепулить на другое Slave устройство

Евгений Кислов
14.06.2018, 11:32
а как его вызвать?

С помощью элемента Функциональная область.

Условие запуска - циклический, функция - вызов макроса.

37671

Dimos
14.06.2018, 11:32
без макроса работает.

Евгений Кислов
14.06.2018, 11:33
Мне нужно это значение перепулить на другое Slave устройство

Это можно сделать и без макроса - опять-таки с помощью функциональной области, действие - Копировать регистр (или Копировать группу регистров).
Это рассмотрено в видеопримере: https://www.youtube.com/watch?v=c_PfSdLZWlY&t=1s

Dimos
14.06.2018, 11:35
Спасибо. Все получилось

ivanivanih
14.06.2018, 14:47
Здравствуйте, вопрос следующий возможно ли с помощью кнопки с использованием пароля возводить необходимый бит? Получается что только элемент перехода на экран по паролю спрашивает пароль и выполняет соответствующий переход. А функциональная кнопка пароль не спрашивает, а устанавливается только соответствующий ей уровень доступа. Как же сделать кнопку с паролем на какое либо действие

Евгений Кислов
14.06.2018, 14:52
Здравствуйте, вопрос следующий возможно ли с помощью кнопки с использованием пароля возводить необходимый бит? Получается что только элемент перехода на экран по паролю спрашивает пароль и выполняет соответствующий переход. А функциональная кнопка пароль не спрашивает, а устанавливается только соответствующий ей уровень доступа. Как же сделать кнопку с паролем на какое либо действие

Для каждого действия функциональной кнопки можно настроить уровень доступа (или указать бит ограничения):

37676

В этом случае действие не будет выполняться, пока пользователь не подтвердит свой уровень доступа.

Алексей КИПОВЕЦ
20.06.2018, 21:03
Уважаемые специалисты помогите советом. Стоит задача вычислять энтальпию воды нагреваемую котлом, в дальнейшем для подсчета тепловой энергии. Вычисление значений энтальпии воды осуществляется на основе таблиц ГСССД 187-99, значения которых оформлены массивом данных зависимости температуры воды от энтальпии воды. В среде Codesys 2.3 с применением ПЛК все получается, получаю корректные значения. Возможно ли текст данной программы перевести в макрос для панели оператора СП300?
Текст программы на Codesys:
FUNCTION ENTHALPY : REAL
VAR_INPUT
T : REAL;
END_VAR
VAR
Pts : INT := 11;
data : ARRAY[1..20, 0..1] OF REAL := 0.0,0.06, 10.0,42.1, 20.0,83.9, 30.0,125.8, 40.0,167.58, 50.0,209.4, 60.0,251.2, 70.0,293.1, 80.0,335.0, 90.0, 377.0, 100.0,419.1;
END_VAR

ENTHALPY := LINEAR_INT(T, Data, Pts);

Заранее спасибо.

Евгений Кислов
21.06.2018, 07:08
Уважаемые специалисты помогите советом. Стоит задача вычислять энтальпию воды нагреваемую котлом, в дальнейшем для подсчета тепловой энергии. Вычисление значений энтальпии воды осуществляется на основе таблиц ГСССД 187-99, значения которых оформлены массивом данных зависимости температуры воды от энтальпии воды. В среде Codesys 2.3 с применением ПЛК все получается, получаю корректные значения. Возможно ли текст данной программы перевести в макрос для панели оператора СП300?
Текст программы на Codesys:
FUNCTION ENTHALPY : REAL
VAR_INPUT
T : REAL;
END_VAR
VAR
Pts : INT := 11;
data : ARRAY[1..20, 0..1] OF REAL := 0.0,0.06, 10.0,42.1, 20.0,83.9, 30.0,125.8, 40.0,167.58, 50.0,209.4, 60.0,251.2, 70.0,293.1, 80.0,335.0, 90.0, 377.0, 100.0,419.1;
END_VAR

ENTHALPY := LINEAR_INT(T, Data, Pts);

Заранее спасибо.

Добрый день. См. приложенный проект.

Алексей КИПОВЕЦ
21.06.2018, 19:38
Спасибо что помогли разобраться. Теперь стало понятнее. Просто впервые сталкиваюсь с макросами на СИ. Кроме энтальпии аналогично вычисляю значения плотности воды от температуры воды. В среде Codesys 2.3 с применением ПЛК аналогично все получается, получаю корректные значения. Возможно ли текст данной программы перевести в макрос для панели оператора СП300? Не могли бы подсказать ка перевести на СИ?
FUNCTION DENSITY : REAL
VAR_INPUT
T : REAL;
Sat : BOOL;
END_VAR
VAR CONSTANT
a0 : REAL := 999.83952;
a1 : REAL := 16.952577;
a2 : REAL := -7.9905127E-3;
a3 : REAL := -4.6241757E-5;
a4 : REAL := 1.0584601E-7;
a5 : REAL := -2.8103006E-10;
b : REAL := 0.0168872;
END_VAR
VAR
T2: REAL;
T4: REAL;
END_VAR T2 := T * T;
T4 := T2 * T2;
DENSITY := (a0 + a1*T + a2*T2 + a3*T2*T + a4*T4 + a5*T4*T) / (1.0 + b*T);
IF sat THEN DENSITY := DENSITY - 0.004612 + 0.000106 * T; END_IF;

Заранее спасибо.

Евгений Кислов
22.06.2018, 07:01
Прикладываю пример с Density.

Если вы сравните ST-код с кодом макроса, то увидите, что отличия в синтаксисе незначительны.
Основная информация по работе с макросами приведена в справке, если нужно что-то более углубленное - подойдет любой учебник по С.

Дмитрий021
22.06.2018, 07:32
Добрый день.
1. Есть ли в СП310 аналог фреймов из кодесис?
2. Допускается ли работа СП (режим мастера) с несколькими слейвами?

Евгений Кислов
22.06.2018, 07:38
Добрый день.
1. Есть ли в СП310 аналог фреймов из кодесис?
2. Допускается ли работа СП (режим мастера) с несколькими слейвами?

Добрый день.

1. Нет.
2. Да, конечно. Для Modbus RTU/ASCII максимальное число слэйвов в сети ограничено протоколом (247), для Modbus TCP - возможностями панели (8).

Aleksandr
22.06.2018, 23:02
Здравствуйте! Использую историческую таблицу, создал кнопку квитировать (действие для таблицы подтвердить). Каким образом сделать, чтобы при нажатии на эту кнопку устанавливался одновременно какой либо бит?

Евгений Кислов
23.06.2018, 08:38
Добрый день. Кнопка управления графиками/таблицами подобный функционал не поддерживает.
Опишите, пожалуйста, какую задачу вы пытаетесь решить таким образом? Возможно, мы сможем предложить вам иной способ.

Aleksandr
23.06.2018, 09:05
Например произошла авария, одновременно включается звуковая сигнализация. Вот и надо ее выключить с квитированием.

Евгений Кислов
23.06.2018, 09:47
Прикладываю пример на озвученную тему.

Комментарии:

1. Если принять регистр хранилища за X, то регистр X+10 определяет, сквитирована ли тревога в строке 0 (1 - сквитирована, 0 - нет).
Регистр X+10+12 определяет, сквитирована ли тревога в строке 1. Регистр X+10+2*12 - для строки 3, и так далее по формуле X+10+12*i.

2. Заполнение таблицы начинается со строки 1 (а не 0). Т.е. регистр X+10 первый раз станет активным после квитирования тревоги, появившейся после "переполнения" таблицы (когда старые данные начнут стираться и заменяться новыми - кольцевым буфером). Это проще понять, запустив пример (например, в эмуляции).

3. Таким образом, контролируя нулевые биты упомянутых регистров - можно реализовать выполнение нужных действий при квитировании.

4. В рамках примера этот контроль осуществлен с помощью функциональных областей (при необходимости сделайте их глобальными). Если в таблице много строк - то проще будет сделать обработку в макросе.

Алексей КИПОВЕЦ
23.06.2018, 09:49
Спасибо большое за помощь, Евгений Кислов, стало понятнее. Буду разбираться дальше с макросами для панелей СП300

Aleksandr
23.06.2018, 10:16
Прикладываю пример на озвученную тему.

.

Спасибо буду пробовать.

Versla
25.06.2018, 01:41
Цитата Сообщение от Фёдор74 Посмотреть сообщение

Проблема с зависанием панели СП310 при отключении одного из устройств ушла при использовании нового конфигуратора(D3k-5).
Но возникла другая проблема, панель периодический примерно раз в сутки иногда чаще зависает (либо застывает экран, как скриншот не реагирует на нажатие кнопок, либо вообще вываливается в белый экран) в это время пинг в панель отсутствует. Помогает только отключение питания панели. Эта проблема была и на предыдущим конфигураторе.

Здравствуйте! Тоже столкнулся с проблемой зависания панели в течение суток или даже раньше. Удалось ли ее решить?

Евгений Кислов
25.06.2018, 06:45
Здравствуйте! Тоже столкнулся с проблемой зависания панели в течение суток или даже раньше. Удалось ли ее решить?

Мы занимаемся вашей проблемой. Сегодня уточню у сотрудника ГТП результаты тестирования вашего проекта.

Aleksandr
29.06.2018, 13:56
Добрый день, использую в проекте историческую таблицу для архивирования аварий. Но в ней есть недостаток, не понятно действует авария на текущий момент или нет. Понятно что можно создать еще таблицу реального времени или таблицу тревог, но там опять придется прописывать все аварии. Может можно сделать, чтобы наименование аварий прописывать один раз.

petera
29.06.2018, 14:07
Добрый день, использую в проекте историческую таблицу для архивирования аварий. Но в ней есть недостаток, не понятно действует авария на текущий момент или нет. Понятно что можно создать еще таблицу реального времени или таблицу тревог, но там опять придется прописывать все аварии. Может можно сделать, чтобы наименование аварий прописывать один раз.

На каждое аварийное событие сделайте два сообщение одно, как сейчас - от ВКЛ бита, а второе - от ВЫКЛ этого же бита.
37848

37849

Aleksandr
01.07.2018, 00:09
Спасибо, petera. Вариант интересный, но он мне не подойдет.

Aleksandr
01.07.2018, 22:57
Я так понял в исторической таблице шрифт сообщений поменять нельзя?

Евгений Кислов
02.07.2018, 06:47
Я так понял в исторической таблице шрифт сообщений поменять нельзя?

Можно. Файл - Настройки проекта - Шрифт:

37862

Aleksandr
02.07.2018, 11:42
Спасибо. Попробую

ivanivanih
02.07.2018, 14:56
Здравствуйте, а будет ли работать мышь если ее подключить к панели СП310Р:confused:

Евгений Кислов
02.07.2018, 14:58
Здравствуйте, а будет ли работать мышь если ее подключить к панели СП310Р:confused:

Добрый день. Нет.

rxmn
02.07.2018, 19:43
Добрый день!

Не могу разобраться как с СП-310 записать в регистр измерителя ТРМ 202 по modbus rtu нужное мне значение (уставка срабатывания реле), считать я его могу и вывести на дисплей, а как записать его туда принудительно я не понимаю. Создаю функциональную кнопку, функция "присвоить значение", делаю вроде все как надо, но не срабатывает. В кратком рук-ве по модбасу для ТРМ написано что записывать нужно с помощью модбас функции 0x10, но куда ее надо вписывать в функциональную кнопку я не соображу, буду благодарен за помощь.

Ильнур Гибадуллин
02.07.2018, 20:10
Добрый день!

Не могу разобраться как с СП-310 записать в регистр измерителя ТРМ 202 по modbus rtu нужное мне значение (уставка срабатывания реле), считать я его могу и вывести на дисплей, а как записать его туда принудительно я не понимаю. Создаю функциональную кнопку, функция "присвоить значение", делаю вроде все как надо, но не срабатывает. В кратком рук-ве по модбасу для ТРМ написано что записывать нужно с помощью модбас функции 0x10, но куда ее надо вписывать в функциональную кнопку я не соображу, буду благодарен за помощь.

Здравствуйте!

Ответ на Ваш вопрос есть в FAQ на СП3хх (ссылка (http://www.owen.ru/catalog/sensornie_paneli_operatora_oven_sp3xx/81265010)), вопрос 3.8.

rxmn
02.07.2018, 20:18
Здравствуйте!

Ответ на Ваш вопрос есть в FAQ на СП3хх (ссылка (http://www.owen.ru/catalog/sensornie_paneli_operatora_oven_sp3xx/81265010)), вопрос 3.8.

Благодарю, получилось

rxmn
02.07.2018, 22:39
Появился еще один вопрос: как можно отслеживать и записывать в регистр максимальное (пиковое) значение температуры, получаемое с ТРМ? Функция Мах из макросов не подошла. Спасибо заранее

upd: получилось макросом типа
if (PSW[426] > PSW[428])
{
PSW[428]=PSW[426];
}
где 426 регистр это текущая темп-ра

xrus
04.07.2018, 16:11
Добрый день, в FAQ в пункте 1.11 указано, что можно обращаться к битам регистров, однако у меня в конфигураторе почему-то отсутствуют данные поля. Также непонятно, как присваивать внутренним регистрам значения, передаваемые по modbus.

Ильнур Гибадуллин
04.07.2018, 16:50
Добрый день, в FAQ в пункте 1.11 указано, что можно обращаться к битам регистров, однако у меня в конфигураторе почему-то отсутствуют данные поля. Также непонятно, как присваивать внутренним регистрам значения, передаваемые по modbus.

Здравствуйте!

1) Для того, чтобы обращаться к битам регистров необходимо выбрать другую область памяти - не 0х, а 4х, например. Тогда появится поле для обращения к определенному биту. Если работаете с внутренними регистрами, то необходимо в качестве порта выбрать Внутренние регистры.
37911
2) Вы можете воспользоваться элементом функциональная область. В качестве режима выставить Непрерывное выполнение или циклическое раз в секунду, во вкладку Функции добавить Копировать регистр: откуда - это регистр, получаемый по сети, куда - указать внутренний регистр.

37909

xrus
04.07.2018, 17:01
У меня почему-то нельзя выбрать другую область.

Ильнур Гибадуллин
04.07.2018, 17:12
У меня почему-то нельзя выбрать другую область.

В настройках проекта выбран, скорее всего, протокол Modbus ASCII (Master).

xrus
04.07.2018, 17:20
Действительно так. Спасибо!

SA104
06.08.2018, 09:14
Доброго времени.
Подскажите, возможно ли задавать координаты положения элементов визуализации через значение в регистре?
Требуется создать анимацию перемещения, но стандартный элемент не совсем подходит, т.к. в нем задается время перемещения и стартовый признак, а мне требуется не запуск движения объекта по команде, а координата Х, привязанная к входному регистру. Чтобы при каждом новом значении регистра объект занимал бы новое положение.

Евгений Кислов
06.08.2018, 09:24
Доброго времени.
Подскажите, возможно ли задавать координаты положения элементов визуализации через значение в регистре?
Требуется создать анимацию перемещения, но стандартный элемент не совсем подходит, т.к. в нем задается время перемещения и стартовый признак, а мне требуется не запуск движения объекта по команде, а координата Х, привязанная к входному регистру. Чтобы при каждом новом значении регистра объект занимал бы новое положение.

Добрый день.
У каждого элемента на вкладке Расположение можно привязать регистры к координатам X и Y.
См. пример: http://www.owen.ru/uploads/example_animation.zip

SA104
06.08.2018, 09:30
Спасибо )

Evlord
06.08.2018, 16:24
Работает ли панель СП270 по порту Download в RS-485-ом в режиме Slave или RS-485-го нет на порту Download? Панель 2012 г.в.

Евгений Кислов
06.08.2018, 17:33
Работает ли панель СП270 по порту Download в RS-485-ом в режиме Slave или RS-485-го нет на порту Download? Панель 2012 г.в.

У панели СП270 (снятой с производства) нету RS-485 на порту Download.

Серёга Букашкин
07.08.2018, 15:34
СП310 работает в режиме Мастер. При нажатии на вирт кнопку в свойствах можно указазать выставление бита в заданном регистре. А нужно выработать код команды (целочисленное число). Как это делается?

Евгений Кислов
07.08.2018, 15:35
СП310 работает в режиме Мастер. При нажатии на вирт кнопку в свойствах можно указазать выставление бита в заданном регистре. А нужно выработать код команды (целочисленное число). Как это делается?

Используйте элемент Функциональная кнопка с действием Записать значение.

Newcomer
07.08.2018, 22:35
Из под каких ОС может работать Конфигуратор СП300 ?

Евгений Кислов
08.08.2018, 06:56
Из под каких ОС может работать Конфигуратор СП300 ?

Windows, XP и далее вплоть до 10.

nordth
10.08.2018, 02:40
1. Работают ли макросы в СП3xx в режиме эмуляции или только на реальной панели?

2. Можно ли использовать PFW в макросах? Например такую конструкцию PSW[400]=PFW[300]; компилятор ругается.

Евгений Кислов
10.08.2018, 06:48
1. Работают ли макросы в СП3xx в режиме эмуляции или только на реальной панели?

2. Можно ли использовать PFW в макросах? Например такую конструкцию PSW[400]=PFW[300]; компилятор ругается.

1. Макросы работают только на реальной панели.
2. Можно, но синтаксис другой. См. информацию в РП и примеры.

Sulfur
13.08.2018, 11:36
Могу ли я пользоваться одновременно и ModbusTCP и ModbusRTU на панели СП310-Р? Оба интерфейса мастеры, по ТСР будет ПЛК110, по RS-485 термоконтроллер стороннего производителя.

Евгений Кислов
13.08.2018, 11:46
Могу ли я пользоваться одновременно и ModbusTCP и ModbusRTU на панели СП310-Р? Оба интерфейса мастеры, по ТСР будет ПЛК110, по RS-485 термоконтроллер стороннего производителя.

Да, интерфейсы RS-485 и Ethernet работают независимо.

Серёга Букашкин
13.08.2018, 11:56
СП310-Б, Мастер: Если поставить в настройках связи кол-во повторов "0", то программа умирает (белый экран). Это ошибка программы или "0" ставить нельзя?

Евгений Кислов
13.08.2018, 12:31
СП310-Б, Мастер: Если поставить в настройках связи кол-во повторов "0", то программа умирает (белый экран). Это ошибка программы или "0" ставить нельзя?

0 ставить не рекомендуется.

Евгений Кислов
13.08.2018, 12:53
Пока не могу добиться темпа быстрее 1 раз в секунду. Почему непонятно.

Если вы отправите на support@owen.ru проекты для обоих устройств и описание по снятию метрик (т.е. каким образом вы определяете "темп" обмена) - мы постараемся вам помочь.

Евгений Кислов
14.08.2018, 12:13
Что делать?

http://www.owen.ru/forum/showthread.php?t=22915&p=284914&viewfull=1#post284914

Евгений Кислов
14.08.2018, 17:17
Специалист опечатался, речь шла о D3k-5 - той же версии, что и у Вас. Я вижу, во втором письме Вы смогли прислать нам и Ваш проект для панели.
Завтра мы обязательно его протестируем и оповестим Вас о результатах.

Серёга Букашкин
20.08.2018, 14:05
СП310, Мастер. Односторонний обмен был связан с неправильным внешним подключением к разъему RS-485 панели, т.е. ошибкой внешнего монтажа . После устранения скорость информационного обмена лучше ожиданий. Локализовала ошибку служба поддержки, спасибо!

Ruffian
23.08.2018, 09:57
Добрый день, сп310мастер, 8 плк 100,110-слэйв. Все стабильно работает. Сколько еще можно добавить плк без потери в стабильности и быстродействии панели.

Евгений Кислов
23.08.2018, 10:02
Добрый день, сп310мастер, 8 плк 100,110-слэйв. Все стабильно работает. Сколько еще можно добавить плк без потери в стабильности и быстродействии панели.

По какому интерфейсу подключены ПЛК? Если по Ethernet - то 8 slave-устройств для панели предел.
Если речь о RS, то сложно сказать что-то определенное, поскольку это в большей степени зависит от конкретного проекта.

Ruffian
23.08.2018, 10:21
Проект отправил вам на почту

Евгений Кислов
23.08.2018, 10:28
Проект отправил вам на почту

У вас опрос организован через элементы - т.е. фактически опрашиваются только те регистры тех ПЛК, которые в текущий момент используются в визуализации.
Так что добавление нескольких модулей не должно повлиять на быстродействие - особенно если вы будете отображать их параметры на отдельном экране.

Ruffian
23.08.2018, 10:32
У вас опрос организован через элементы - т.е. фактически опрашиваются только те регистры тех ПЛК, которые в текущий момент используются в визуализации.
Так что добавление нескольких модулей не должно повлиять на быстродействие - особенно если вы будете отображать их параметры на отдельном экране.

Спасибо за быстрый ответ.

Sulfur
23.08.2018, 10:39
Вопрос.
Панель СП307\310, требуется организовать опрос двух ТРМ148 напрямую. Задача - задавать уставки, получать показания, и минимальную инфу об ошибках канала (например "обрыв датчика"). В сети еще планируется ПЛК110[М2]. Опрос ТРМ будет организован на отдельных экранах. Крайне желательно, что бы была возможность группового изменения уставок.
Получится?

Евгений Кислов
23.08.2018, 11:05
Вопрос.
Панель СП307\310, требуется организовать опрос двух ТРМ148 напрямую. Задача - задавать уставки, получать показания, и минимальную инфу об ошибках канала (например "обрыв датчика"). В сети еще планируется ПЛК110[М2]. Опрос ТРМ будет организован на отдельных экранах. Крайне желательно, что бы была возможность группового изменения уставок.
Получится?

Если у ТРМ148 прошивка с поддержкой Modbus - то можно будет организовать его опрос. Но, насколько я знаю, по Modbus доступны не все параметры прибора.
Прикладываю карту регистров.

Sulfur
23.08.2018, 15:01
Меня больше беспокоят возможности панели, чем прибора. Прибор используется практически в дефолтных настройках, т. е. выбираю тип датчика канала, задаю период ШИП и запускаю автонастройку. Результат устраивает. Вот теперь мечтаю прикрутить к этому панель СП307, для повышения удобства работы оператора, т.к. уставки приходится крутить довольно часто, а каналов 16 (два прибора). Занятие это на оригинальных приборах малоприятное.
По списку доступных - более чем достаточно.

Евгений Кислов
23.08.2018, 15:06
Меня больше беспокоят возможности панели, чем прибора. Прибор используется практически в дефолтных настройках, т. е. выбираю тип датчика канала, задаю период ШИП и запускаю автонастройку. Результат устраивает. Вот теперь мечтаю прикрутить к этому панель СП307, для повышения удобства работы оператора, т.к. уставки приходится крутить довольно часто, а каналов 16 (два прибора). Занятие это на оригинальных приборах малоприятное.
По списку доступных - более чем достаточно.

Тогда проблем с настройкой обмена между панелью и ТРМ не возникнет.

jury_yamal
27.08.2018, 00:42
Добрый день.
Как в конфигураторе сделать или заменить своей клавиатуру для ввода числового значения. Те которые есть (по моему 9 шт) по ряду причин не подходят.

Евгений Кислов
27.08.2018, 06:56
Добрый день.
Как в конфигураторе сделать или заменить своей клавиатуру для ввода числового значения. Те которые есть (по моему 9 шт) по ряду причин не подходят.

Добрый день. Напишите, пожалуйста, на support@owen.ru ваши требования к клавиатуре.

jury_yamal
27.08.2018, 20:24
Разобрался сам.

Серёга Букашкин
28.08.2018, 10:46
Для кнопок не получается изменить цвет кнопки, цвет рамки. Хотя выбор предлагается. Меняется только цвет текста.

Евгений Кислов
28.08.2018, 10:52
Параметры вкладки Цвет влияют только на "простые" изображения кнопок (из галерей 3-5). Во всех остальных случаях внешний вид кнопок определяется графическими файлами (.jpg, .png. .bmp) - в этом случае изменение цвета производится путем выбора нужного файла.

38495

Спорягин Кирилл
28.08.2018, 18:57
Добрый день.

Обнаружилось, непредвиденное мной, поведение панели СП307-Р.
В настройках проекта стоит переход на экран 1 после 2 минут (см. вложение).

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

Можно ли как-то настроить, чтобы он не возвращался на экран с которого ушел по таймауту?

nklim
29.08.2018, 04:57
Уважаемый Евгений Кислов! На форуме нашёл тему "СП310. Обойти ограничение в 16 шт. в элементе "динамическое изображение". от KRUPSKIY 22.03.2018, 18:30.
У меня тоже есть необходимость выводить на панель СП310 порядка 300 изображений и их наименований. Не могли бы Вы подробнее объяснить как это сделать?
С уважением.

Евгений Кислов
29.08.2018, 07:11
Добрый день.

Обнаружилось, непредвиденное мной, поведение панели СП307-Р.
В настройках проекта стоит переход на экран 1 после 2 минут (см. вложение).

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

Можно ли как-то настроить, чтобы он не возвращался на экран с которого ушел по таймауту?

Добрый день, Кирилл.

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

В приложенном примере демонстрируется, как это обойти: после таймаута неактивности пользователя происходит переход на экран 1. При касании этого экрана перехода на предыдущий не произойдет.
При этом в настройках заставки задан экран 3, но он никогда не демонстрируется и используется только для отлавливания истечения заданного таймаута неактивности.

https://ftp.owen.ru/SP300/99_ForumFiles/Example_AutoLogout_k5.zip

Евгений Кислов
29.08.2018, 07:15
Уважаемый Евгений Кислов! На форуме нашёл тему "СП310. Обойти ограничение в 16 шт. в элементе "динамическое изображение". от KRUPSKIY 22.03.2018, 18:30.
У меня тоже есть необходимость выводить на панель СП310 порядка 300 изображений и их наименований. Не могли бы Вы подробнее объяснить как это сделать?
С уважением.

Добрый день. Собственно, в упомянутой теме выложен пример по озвученной задаче.
Добавьте меня в skype, пожалуйста (отправил вам запрос) - это поможет решить вопросы, которые у вас возникли.

Евгений Кислов
29.08.2018, 10:00
Забыл удалить из архива файл, да. Прошу прощения.

Спорягин Кирилл
29.08.2018, 13:24
Добрый день, Кирилл.

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

В приложенном примере демонстрируется, как это обойти: после таймаута неактивности пользователя происходит переход на экран 1. При касании этого экрана перехода на предыдущий не произойдет.
При этом в настройках заставки задан экран 3, но он никогда не демонстрируется и используется только для отлавливания истечения заданного таймаута неактивности.

Евгений, спасибо. Со способом разобрался.
В сущности ключевое здесь это вызвать WakeupScreen(), я так понимаю. Правда, что именно делает эта функция не очень ясно.

У данного варианта есть недостаток - экран мигает с периодичностью установки заставки (глазом четко заметно).

Евгений Кислов
29.08.2018, 13:28
Евгений, спасибо. Со способом разобрался.
В сущности ключевое здесь это вызвать WakeupScreen(), я так понимаю. Правда, что именно делает эта функция не очень ясно.

У данного варианта есть недостаток - экран мигает с периодичностью установки заставки (глазом четко заметно).

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

Спорягин Кирилл
29.08.2018, 13:44
Функция "будит" панель (по сути - имитирует касание). Да, мигание есть, но его, думаю, можно убрать так: скопировать все элементы "начального" экрана на экран заставки.

Да, при точной копии экранов мигания не видно.

Dimos
30.08.2018, 15:50
Добрый день. Подскажите как с СП по modbus RTU записать значение регистра в преобразователь частоты функция 16х. в панели толька 2 функции 3х и 4х

Ильнур Гибадуллин
30.08.2018, 16:31
Добрый день. Подскажите как с СП по modbus RTU записать значение регистра в преобразователь частоты функция 16х. в панели толька 2 функции 3х и 4х

Здравствуйте!

Стандартный элемент Ввод данных использует в качестве записи функцию 6. Чтобы воспользоваться функцией 16 следует использовать системный бит PFW36.2. По умолчанию он имеет значение ВЫКЛ, и элемент Цифровой ввод использует функцию 0x06. При переключении бита в состояние ВКЛ элемент Цифровой ввод будет использовать функцию 0x10. Переключение функции затрагивает все визуальные элементы ввода в проекте. Данный функционал реализован только для порта PLC для протокола Modbus RTU.

Второй способ - использовать макросы. См. пример Организация обмена через макросы (ссылка (http://old.owen.ru/catalog/sensornie_paneli_operatora_oven_sp3xx/95184166)).

jury_yamal
10.09.2018, 16:44
Добрый вечер. Интересует следующий вопрос:
При компиляции программы компилируются все системные окна,экраны или только те что используются в проекте?
И ещё есть ли доступ к системным переменным координат нажатия на экран?

petera
11.09.2018, 11:21
Добрый вечер. Интересует следующий вопрос:
При компиляции программы компилируются все системные окна,экраны или только те что используются в проекте?
И ещё есть ли доступ к системным переменным координат нажатия на экран?

При компиляции компилируются ВСЕ системные окна и экраны
Результат экспорта(компиляции) проекта
Пустой проект.dat - 1 704 020 байт
Пустой проект Без клавиатур.dat - 1 441 876 байт
Пустой проект Без клавиатур Без экрВремяПароли.dat - 1 310 804 байт

Евгений Кислов
11.09.2018, 15:43
И ещё есть ли доступ к системным переменным координат нажатия на экран?

Доступа нет.

Серенький
14.09.2018, 23:56
Добрый день! Подскажите как пытаюсь поставить пароль на кнопку экрана.
У меня вопрос? Каким образом после или в процессе где занести свой пароль?
Не нашел и не доходит. Возможно все просто. но потерял уже 1 час, возможно из-за своей не внимательности...
38754

38755

38756

petera
15.09.2018, 05:18
Добрый день! Подскажите как пытаюсь поставить пароль на кнопку экрана.
У меня вопрос? Каким образом после или в процессе где занести свой пароль?
Не нашел и не доходит. Возможно все просто. но потерял уже 1 час, возможно из-за своей не внимательности...
38754

38755

38756

Файл-->Настройки проекта-->

38760

Серенький
15.09.2018, 09:58
Ок! Благодарю!

nordth
18.09.2018, 19:19
Зависает панель СП310-Р как во время работы так и во время простоя установки. Либо перестает реагировать на кнопки либо вываливается в белый экран. Решается отключением питания.
Панель работает с ПЛК110-30
Протокол Modbus TCP (Ethernet) Панель СП - мастер, ПЛК - slave.

Изначально стояли слудующие коммутационные настройки из РП к СП.

Время ожидания - 0 мс
Таймаут - 1500 мс
Попыток - 3
Изменить порядок регистров - галочка отсутствует

С такими настройками панель зависат практически сразу.

Затем были выставлены коммутационные настройки отсюда http://www.owen.ru/forum/showthread.php?t=24895&page=2

Время ожидания - 20 мс
Таймаут - 10000 мс
Попыток - 10
Изменить порядок регистров - галочка отсутствует.
С этими настройками панель ведет себя адекватнее. Зваисание происходит через сутки - двое.

Настройки ПЛК110 минимальное время цикла 5ms, конфигуратор задач: задача циалическая, интервал 15ms.

В проекте использованы графики, архивация, PFW регистры, рецепты. Создается впечатление что проблема обострилась по мере постепенной нагрузки панели. Хотя возможно это совпадение. Так как проблемы начались изначально. Еще пока проект был минимальный, из-за чего пришлось уходить от коммутационных настроек по умолчанию из РП.

Евгений Кислов
18.09.2018, 19:28
Отправьте ваш проект на support@owen.ru, пожалуйста.

Спорягин Кирилл
25.09.2018, 13:47
Добрый день, возможно ли в панелях СП3хх не скрывать кнопку (бит видимости), а "блокировать" кнопку по условиям, т.е. выделять ее цветом (более блеклым) и не выполнять действий при нажатии. Разумеется идет речь про штатные средства, т.е. ввиде встроенной настройки в кнопку на подобии бита видимости?

Евгений Кислов
25.09.2018, 13:54
Добрый день, возможно ли в панелях СП3хх не скрывать кнопку (бит видимости), а "блокировать" кнопку по условиям, т.е. выделять ее цветом (более блеклым) и не выполнять действий при нажатии. Разумеется идет речь про штатные средства, т.е. ввиде встроенной настройки в кнопку на подобии бита видимости?

Добрый день.
Можно решить вашу задачу используя скрытую функциональную кнопку, наложенную на изменяемое изображение.

Спорягин Кирилл
25.09.2018, 16:07
Добрый день.
Можно решить вашу задачу используя скрытую функциональную кнопку, наложенную на изменяемое изображение.

А сгруппировать указанные элементы в новый свой элемент возможно?

Евгений Кислов
25.09.2018, 18:33
Зависит от конкретной задачи, но, в целом, такая возможность есть.
Выделить все нужные элементы - ПКМ - Сгруппировать. После этого можно использовать команду Сохранить в библиотеку.

glazastik
30.09.2018, 18:39
Добрый день,

на объекте в пожаре сгорела одна из панелей поэтому цепочка из плк-сп270-сп270 превратилась в СП307(Ethernet)<->ПЛК160(RS-232)<->(PLC)СП270
ничего не имею против такого использования если бы не причуды СП307 а именно =>

открыл старый проект СП270 в конфигураторе сп300, импортировал его, залил на панель, с первого раза всё заработало, уже собрался уходить как заметил что панель зависла (таймер на открытом экране встал). На нажимания панель не реагировала, сброс по питанию помог но через минуты три всё повторилось, заметил что это происходило когда с панелью не работают. В зависшем состоянии даже компьютер не реагировал на подключении панели, помогало только сброс панели по питанию. Ну решил может заставка стоит, нет заставки не было. Тогда решил написать функциональную область для моргания лампочкой (внутренний бит), типа чем чёрт не шутит может панель надо нагрузить работой. Вроде бы всё работало, минут 20 полёт нормальный, решил переключить на другой экран и тут панель побелела и громким писком без прерываний на меня наорала. При сбросе питания появлялся просто белый экран. Такое ощущение что опрос ПЛК-Панель пропал. перезагрузил плк и панель одновременно - тоже самое.
В общем полистав ветку форума единственное что я понял что надо пробывать писать проект в конфигураторе с чистого листа, что конечно же меня не радует. Но в каком ещё направлении копать я не знаю.

glazastik
30.09.2018, 19:28
Зависает панель СП310-Р как во время работы так и во время простоя установки. Либо перестает реагировать на кнопки либо вываливается в белый экран. Решается отключением питания.
Панель работает с ПЛК110-30
Протокол Modbus TCP (Ethernet) Панель СП - мастер, ПЛК - slave.

Изначально стояли слудующие коммутационные настройки из РП к СП.

Время ожидания - 0 мс
Таймаут - 1500 мс
Попыток - 3
Изменить порядок регистров - галочка отсутствует

С такими настройками панель зависат практически сразу.

Затем были выставлены коммутационные настройки отсюда http://www.owen.ru/forum/showthread.php?t=24895&page=2

Время ожидания - 20 мс
Таймаут - 10000 мс
Попыток - 10
Изменить порядок регистров - галочка отсутствует.
С этими настройками панель ведет себя адекватнее. Зваисание происходит через сутки - двое.

Настройки ПЛК110 минимальное время цикла 5ms, конфигуратор задач: задача циалическая, интервал 15ms.

В проекте использованы графики, архивация, PFW регистры, рецепты. Создается впечатление что проблема обострилась по мере постепенной нагрузки панели. Хотя возможно это совпадение. Так как проблемы начались изначально. Еще пока проект был минимальный, из-за чего пришлось уходить от коммутационных настроек по умолчанию из РП.


Чем кстати дело закончилось?

Ильнур Гибадуллин
02.10.2018, 14:22
Добрый день,
была тема с использованием СП270 как хоста сети =>
http://www.owen.ru/forum/showthread.php?t=11141&page=2
подозреваю на собственном опыте что в СП307 данная фича уже не возможна.

UPD как оказалось возможна ПЛК-СП307-СП307

на объекте в пожаре сгорела одна из панелей поэтому цепочка из плк-сп270-сп270 превратилась в СП307(Ethernet)<->ПЛК160(RS-232)<->(PLC)СП270
ничего не имею против такого использования если бы не причуды СП307 а именно =>

открыл старый проект СП270 в конфигураторе сп300, импортировал его, залил на панель, с первого раза всё заработало, уже собрался уходить как заметил что панель зависла (таймер на открытом экране встал). На нажимания панель не реагировала, сброс по питанию помог но через минуты три всё повторилось, заметил что это происходило когда с панелью не работают. В зависшем состоянии даже компьютер не реагировал на подключении панели, помогало только сброс панели по питанию. Ну решил может заставка стоит, нет заставки не было. Тогда решил написать функциональную область для моргания лампочкой (внутренний бит), типа чем чёрт не шутит может панель надо нагрузить работой. Вроде бы всё работало, минут 20 полёт нормальный, решил переключить на другой экран и тут панель побелела и громким писком без прерываний на меня наорала. При сбросе питания появлялся просто белый экран. Такое ощущение что опрос ПЛК-Панель пропал. перезагрузил плк и панель одновременно - тоже самое.
В общем полистав ветку форума единственное что я понял что надо пробывать писать проект в конфигураторе с чистого листа, что конечно же меня не радует. Но в каком ещё направлении копать я не знаю.

Здравствуйте!

СП3хх использовать как хост сети через порты Download и PLC нельзя.

По поводу зависания панели, Вы можете прислать проекты на СП270 и ПЛК, и конвертированную версию проекта на СП307 на почту support@owen.ru?

Crizlo
02.10.2018, 18:40
Добрый вечер!
Подскажите как правильно организовать передачу данных
СП307 (мастер PLC) опрашивает регистры modbus теплосчетчика СТУ-1, затем уже как slave устройство через связку Lectus+wrx700 опрашивается скадой.
Вопрос как правильно будет передавать float переменные из СТУ? С регистрами int все работает, но через копировать регистр float переменных приходят непонятные значения.
P.S. Если копировать в PSW266 регистр переменную float(dword) регистр PSW267 будет занят и использовать его нельзя?

Ильнур Гибадуллин
02.10.2018, 21:31
Добрый вечер!
Подскажите как правильно организовать передачу данных
СП307 (мастер PLC) опрашивает регистры modbus теплосчетчика СТУ-1, затем уже как slave устройство через связку Lectus+wrx700 опрашивается скадой.
Вопрос как правильно будет передавать float переменные из СТУ? С регистрами int все работает, но через копировать регистр float переменных приходят непонятные значения.
P.S. Если копировать в PSW266 регистр переменную float(dword) регистр PSW267 будет занят и использовать его нельзя?

Здравствуйте!

Я правильно понимаю, что регистры из СТУ читаются корректно и весь вопрос связан именно с передачей этих регистров на SCADA систему?

Если во внутренний регистр PSW266 поместить переменную типа float (4 байта), то регистр PSW267 будет занят.

Crizlo
03.10.2018, 12:16
Здравствуйте!

Я правильно понимаю, что регистры из СТУ читаются корректно и весь вопрос связан именно с передачей этих регистров на SCADA систему?

Если во внутренний регистр PSW266 поместить переменную типа float (4 байта), то регистр PSW267 будет занят.
Вы правильно поняли.
Вопрос пока решил через мат. операцию 0+float=word значения после точки теряются что в моем случае не критично.
З. Ы. Пока писал дошло что можно было в панели *10 а в скаде делить...

glazastik
03.10.2018, 14:51
Здравствуйте!

СП3хх использовать как хост сети через порты Download и PLC нельзя.

По поводу зависания панели, Вы можете прислать проекты на СП270 и ПЛК, и конвертированную версию проекта на СП307 на почту support@owen.ru?

Думаю не в программах/коде дело,а в настройках интерфейса Modbus TCP.
Сделал как советовал выше уважаемый nordth


Время ожидания - 20 мс
Таймаут - 10000 мс
Попыток - 10
Изменить порядок регистров - галочка отсутствует.
С этими настройками панель ведет себя адекватнее.

С этими настройками действительно панель ведёт себя адекватнее. Но текст про зависание через сутки/двое беспокоит, поэтому поставил 40,10000,50. Сегодня будут первые сутки эксперимента. Конечно печально что приходится такие эксперименты проводить. Не каждому заказчику это может показаться нормальным.

nordth
04.10.2018, 22:24
Чем кстати дело закончилось?

Закончилось переводом панели на RS485 (Modbus RTU) и данная проблема исчезла. Настройки по умолчанию. Подошел к решению радикально в общем. )))

nordth
07.10.2018, 02:27
Вопрос про конфигуратор задач ПЛК при работе с СП3....

В примерах по программированию СП3... в частности "Примеры настройки обмена
ПЛК110 [M02] (Modbus RTU Slave) + СП307 (Modbus RTU Master)" есть интересный пункт на стр. 9

2.3. Конфигурация задач
Обратите внимание, что для работы программы PLC_PRG, она должна быть привязана к
одной из задач (вкладка Ресурсы, компонент Конфигурация задач). стр. 9

Вопрос. Это обязательное условие для работы ПЛК с панелью и зачем вообще нужно это лишнее усложние в виде конфигуратора задач для единственной программы? Можно ли без него обойтись?
Спасибо.

Евгений Кислов
07.10.2018, 08:59
Да, можно обойтись и без этого. Информация добавлена для тех случаев, когда в проекте несколько задач.

Серёга Букашкин
12.10.2018, 18:01
Конфигуратор СП300 сохраняет проект по команде независимо были внесены изменения или нет. Так ведь не делают в редакторах, и в Owen Logic так не делают.
И еще пытался в функциональной области скопировать массив из PFW в PSW в режиме "При включении" (как восстановление массива в ОЗУ из энергонезависимой области). Копируются нули. Согласен что про глобальность забыл. Теперь нормально.

Мимоход
13.10.2018, 05:54
Конфигуратор СП300 сохраняет проект по команде независимо были внесены изменения или нет. Так ведь не делают в редакторах, и в Owen Logic так не делают.
И еще пытался в функциональной области скопировать массив из PFW в PSW в режиме "При включении" (как восстановление массива в ОЗУ из энергонезависимой области). Копируются нули. Наверное при включении PFW еще не адекватный. Но предупреждения такого в РЭ не видел. Пришлось сделать по другому событию, не по включению. Но вообще то это неудобно, событие "при включении" наверное должно наступать когда PFW подняли.
Все там адекватное при включении.
Тут все проще. Нужно щелкнуть правой кнопкой мышки на функциональной области и выбрать свойство "Сделать глобальным".

Gribanin
19.10.2018, 13:55
Здравствуйте, подскажите где настроить частоту опроса по Modbus tcp панель СП307Р,панель мастер ,плк100 слейв. Медленно обновляются переменные.

Евгений Кислов
19.10.2018, 14:08
Здравствуйте, подскажите где настроить частоту опроса по Modbus tcp панель СП307Р,панель мастер ,плк100 слейв. Медленно обновляются переменные.

Добрый день.
Медленно - это с каким запаздыванием по отношению изменения значения в ПЛК?
Что показывают регистры ошибок связи?

39330

Gribanin
19.10.2018, 19:43
https://youtu.be/TCPi3s3BUkM

Gribanin
19.10.2018, 19:48
39339 Как-то так.

Евгений Кислов
19.10.2018, 20:23
Выложенное видео недоступно.

Gribanin
20.10.2018, 11:12
https://youtu.be/z4-tFJcJRyo

Евгений Кислов
20.10.2018, 11:20
Речь о моменте с Редактором программы? У вас там на экране ~200 регистров опрашивается, как я понимаю.
Можно попробовать оптимизировать через групповые запросы (Функциональная область - Копировать группу регистров - считываем значения из ПЛК в память панели - на визуализацию выводим внутренние регистры панели).

Gribanin
20.10.2018, 12:08
На том экране который на видео я открываю первым около 100 регистров, на плк они лежат подряд и если верить инструкции на СП3хх то панель сама формирует групповые запросы, а у меня получается что они как бы по очереди опрашиваются. Но даже на следующем окне , где около 20 регистров всего значения в цифровом поле появляются с задержкой(именно при переходе на екран, потом задержки уже не заметны). Самое итересное что в онлайн эмуляции такого эффекта нету.

Евгений Кислов
20.10.2018, 12:12
На том экране который на видео я открываю первым около 100 регистров, на плк они лежат подряд и если верить инструкции на СП3хх то панель сама формирует групповые запросы, а у меня получается что они как бы по очереди опрашиваются. Но даже на следующем окне , где около 20 регистров всего значения в цифровом поле появляются с задержкой(именно при переходе на екран, потом задержки уже не заметны). Самое итересное что в онлайн эмуляции такого эффекта нету.

Панель определенным образом оптимизирует обмен, но 100 последовательно расположенных регистров вы вообще сможете считать одним запросом через функциональную область. Я бы вам рекомендовал перенести весь обмен в глобальные функциональные области и посмотреть, улучшит ли это ситуацию.

Gribanin
20.10.2018, 13:02
https://youtu.be/LeFBL-4ScDU Сделал небольшой експеримент, посмотрите на сколько быстрее реагирует эмулятор. По нажатии на кнопку плюсуется номер программы (на стороне плк) по этому номеру читается название программы и возвращается в панель по Modbus tcp. На плк, если смотреть в онлайне с codesys все происходит мгновенно. Панель и эмулятор подключаются к плк по разным портам.

Евгений Кислов
20.10.2018, 13:30
посмотрите на сколько быстрее реагирует эмулятор
Посмотрите на тех. характеристики панели и вашего Medion.

Мимоход
20.10.2018, 18:00
На том экране который на видео я открываю первым около 100 регистров, на плк они лежат подряд и если верить инструкции на СП3хх то панель сама формирует групповые запросы, а у меня получается что они как бы по очереди опрашиваются. Но даже на следующем окне , где около 20 регистров всего значения в цифровом поле появляются с задержкой(именно при переходе на екран, потом задержки уже не заметны). Самое итересное что в онлайн эмуляции такого эффекта нету.
Хотя для полноты картины не известно, как формируется таблица программ,
Все таки прислушайтесь к совету Евгения

Речь о моменте с Редактором программы? У вас там на экране ~200 регистров опрашивается, как я понимаю.
Можно попробовать оптимизировать через групповые запросы (Функциональная область - Копировать группу регистров - считываем значения из ПЛК в память панели - на визуализацию выводим внутренние регистры панели).
Копируйте все 200 регистров в промежуточные PSW регистры функциональной областью.
Только сделайте эту функциональную область - глобальной.
Все верно, панель действительно формирует групповые запросы сама.
НО.. те 200 регистров из ПЛК панель начинает читать, только после перехода на экран с редактором, и таблица формируется каждый раз заново, уходите с экрана - регистры ПЛК для ячеек больше не читаются и в таблице все 0 станут.
При чтении группы из 200 регистров панель будет читать их группами по 16 регистров, что визуально проявляется как задержки обмена.

И хотя при использовании функции копирования 200 регистров ПЛК в PSW одной функцией, панель также будет 200 регистров читать не одним запросом, а 12 раз по 16 штук + один запрос 8 шт.
Только вот если функциональная область - глобальная, то чтение этих групп происходит как бы в фоновом режиме. И когда Вы перейдете на экран с таблицей, данные для ячеек не придется считывать заново по сети, они уже готовы и находятся в локальных регистрах панели.

Gribanin
20.10.2018, 20:24
Спасибо, буду пробовать.

Belletein
20.10.2018, 22:15
Думаю не в программах/коде дело,а в настройках интерфейса Modbus TCP.
Сделал как советовал выше уважаемый nordth



С этими настройками действительно панель ведёт себя адекватнее. Но текст про зависание через сутки/двое беспокоит, поэтому поставил 40,10000,50. Сегодня будут первые сутки эксперимента. Конечно печально что приходится такие эксперименты проводить. Не каждому заказчику это может показаться нормальным.

Ответьте пожалуйста, помогло ли? Та же проблема, панель зависает каждые 4-5 часов по TCP (слейв ПЛК110-24.60.Р-М [02]). Заказчик в панике.

Gribanin
21.10.2018, 11:06
Здравствуйте, подскажите пожалуйста, а можно ли в панели СП3хх по нажатии кнопки на некоторое время вывести на экран динамическое изображение (как бы индикатор загрузки)?

Евгений Кислов
21.10.2018, 11:55
Вариантов много, вот один из них:

Gribanin
21.10.2018, 14:19
При попытке открыть файл выскакивает ошибка.39355

Евгений Кислов
21.10.2018, 14:52
1. ПКМ на файл - Свойства - Разблокировать.
2. Запустить конфигуратор от имени администратора.
3. Убедиться, что файл был скачан целиком.

Gribanin
21.10.2018, 19:41
1. ПКМ на файл - Свойства - Разблокировать.
2. Запустить конфигуратор от имени администратора.
3. Убедиться, что файл был скачан целиком.

Спасибо помогло.

SA104
21.10.2018, 20:56
Доброго времени.

Подскажите, видимость элемента можно задавать по инверсному значению бита?
Чтобы он был виден, когда состояние бита - false.

Евгений Кислов
22.10.2018, 06:51
Доброго времени.

Подскажите, видимость элемента можно задавать по инверсному значению бита?
Чтобы он был виден, когда состояние бита - false.

Нет. Нужно использовать дополнительный инвертированный бит.

GunnerAVS
22.10.2018, 06:56
Подскажите решение пожалуйста. Есть панель общается по Modbus с ПЛК150 панель в режиме слейв. Необходимо сохранять введенные оператором настройки.

Евгений Кислов
22.10.2018, 06:59
Подскажите решение пожалуйста. Есть панель общается по Modbus с ПЛК150 панель в режиме слейв. Необходимо сохранять введенные оператором настройки.

Используйте регистры PFW - они являются энергонезависимыми.

GunnerAVS
22.10.2018, 07:04
Хм а как их считать на ПЛК? Я пробовал прилетают нули

Евгений Кислов
22.10.2018, 07:09
Хм а как их считать на ПЛК? Я пробовал прилетают нули

Modbus-адрес регистра PFW = номер регистра в конфигураторе + 10000.
Например: для PFW300 Modbus-адрес = 10300.

GunnerAVS
22.10.2018, 08:14
Спасибо помогло

Versla
24.10.2018, 16:35
Хотя для полноты картины не известно, как формируется таблица программ,
Все таки прислушайтесь к совету Евгения

Копируйте все 200 регистров в промежуточные PSW регистры функциональной областью.
Только сделайте эту функциональную область - глобальной.
Все верно, панель действительно формирует групповые запросы сама.
НО.. те 200 регистров из ПЛК панель начинает читать, только после перехода на экран с редактором, и таблица формируется каждый раз заново, уходите с экрана - регистры ПЛК для ячеек больше не читаются и в таблице все 0 станут.
При чтении группы из 200 регистров панель будет читать их группами по 16 регистров, что визуально проявляется как задержки обмена.

И хотя при использовании функции копирования 200 регистров ПЛК в PSW одной функцией, панель также будет 200 регистров читать не одним запросом, а 12 раз по 16 штук + один запрос 8 шт.
Только вот если функциональная область - глобальная, то чтение этих групп происходит как бы в фоновом режиме. И когда Вы перейдете на экран с таблицей, данные для ячеек не придется считывать заново по сети, они уже готовы и находятся в локальных регистрах панели.

Добрый день!
Если необходим быстрый обмен - воспользуйтесь макросом и функцией READS, которая позволяет за один запрос читать до 124 регистров.

Dmitro
01.11.2018, 22:05
Конфигуратор СП300.
Почему нельзя поворачивать графические элементы? Когда введут эту элементарную функцию?
Мне нужен вертикальный мотор.

Мимоход
01.11.2018, 23:58
Конфигуратор СП300.
Почему нельзя поворачивать графические элементы? Когда введут эту элементарную функцию?
Мне нужен вертикальный мотор.

В новом конфигураторе откройте библиотеку элементов
В папке Device\Electric найдете ГОТОВЫЙ мотор
39566

Именно готовый мотор, это не картинка!

Dmitro
02.11.2018, 20:40
Именно готовый мотор, это не картинка!

Спасибо большое

Евгений76
13.11.2018, 14:31
Добрый день! Панель оператора 310, нужно подключить по 485 защиту двигателя умз, необходимые функции: контроль состояний работа, останов, авария, индикация токов и тд. Пока хочу сделать просто контроль состояния работа, просто элемент индикатор привязать к регистру не получится? необходимо через функциональную область или макрос? можно пример привести с реализацией функции - работа индикатор зеленый, стоп красный
39773

Евгений Кислов
13.11.2018, 15:17
Добрый день! Панель оператора 310, нужно подключить по 485 защиту двигателя умз, необходимые функции: контроль состояний работа, останов, авария, индикация токов и тд. Пока хочу сделать просто контроль состояния работа, просто элемент индикатор привязать к регистру не получится? необходимо через функциональную область или макрос? можно пример привести с реализацией функции - работа индикатор зеленый, стоп красный
39773

Добрый день.
Возможно, вам проще будет использовать динамический текст, чтобы выводить статус?
К нему привязывается именно регистр.

Или действительно можно обработать в макросе, примеры есть в РП.

Евгений76
13.11.2018, 16:30
можно пожалуйста пример настройки с динамическим текстом (скриншот настройки)

Евгений Кислов
13.11.2018, 18:02
Вот пример:

39777

Текст 0 соответствует значению регистра = 0, текст 1 = 1 и так далее.

Евгений76
15.11.2018, 15:51
Что-то у меня не получается настроить СП310 с защитой двигателя УМЗ(ооо Дион). Пока хочу получить только статус работы вкл-откл.
Пробую через ф.область режим - непрерывно 39833
пробую через динамический текст 39834
результата нет
индикаторы на адаптере 485 от диона R и Т горят непрерывно (настройки связи везде одинаковы, при изменении одной горит только R)
сама защита с своей программой Протек через USB-485 работает на копьютере исправно(видит статус, токи и тд), панель необходима для реализации нескольких алгоритмов работы , где искать проблему , в каком направлении?39835

petera
15.11.2018, 16:05
Что-то у меня не получается настроить СП310 с защитой двигателя УМЗ(ооо Дион). Пока хочу получить только статус работы вкл-откл.
Пробую через ф.область режим - непрерывно 39833
пробую через динамический текст 39834
результата нет
индикаторы на адаптере 485 от диона R и Т горят непрерывно (настройки связи везде одинаковы, при изменении одной горит только R)
сама защита с своей программой Протек через USB-485 работает на копьютере исправно(видит статус, токи и тд), панель необходима для реализации нескольких алгоритмов работы , где искать проблему , в каком направлении?39835

Для регистров элементов на экране (дин.текст и др.) не 4х, а 3х
ясно же в руководстве написано - адрес ModBus -30007

ЗЫ
возможно еще там в адресации и смещение "+1" будет использоваться (регистры начинаются не с 0, а с 1)
тогда попробовать вместо [3x][7] попробовать [3x][8]

Евгений76
15.11.2018, 16:44
пробовал и 3х... про смещение ничего нигде не написано

Евгений76
15.11.2018, 16:46
завтра попробую со смещением

Евгений Кислов
15.11.2018, 17:56
Если вам требуется помощь в настройке обмена - напишите, пожалуйста, на support@owen.ru
Крайне желательно, чтобы на ПК был установлен TeamViewer (https://www.teamviewer.com/ru/)

Евгений76
16.11.2018, 07:42
Для регистров элементов на экране (дин.текст и др.) не 4х, а 3х
ясно же в руководстве написано - адрес ModBus -30007

ЗЫ
возможно еще там в адресации и смещение "+1" будет использоваться (регистры начинаются не с 0, а с 1)
тогда попробовать вместо [3x][7] попробовать [3x][8]

Спасибо! все получилось! нужно было сместить +1, разбираюсь с макросами

Серенький
17.11.2018, 18:40
Коллеги добрый день!
Возникла проблема? На панели СП310 на трех кнопках установил режим "Мерцание". т.е. в режиме выкл (красный цвет-кнопка моргает). Проблема - панель стала туцпо тормозить. Нажимаешь на кнопку или на выключатель переключение происходит через некоторое время. Не удобство в том, что не знаешь включилось у тебя сразу или нет?...
У кого такое было?

Евгений76
19.11.2018, 13:34
Коллеги добрый день!
Возникла проблема? На панели СП310 на трех кнопках установил режим "Мерцание". т.е. в режиме выкл (красный цвет-кнопка моргает). Проблема - панель стала туцпо тормозить. Нажимаешь на кнопку или на выключатель переключение происходит через некоторое время. Не удобство в том, что не знаешь включилось у тебя сразу или нет?...
У кого такое было?

У меня было примерно тоже самое- скачал в примерах обмен с модулем ввода вывода с помощью макроса, нажимаешь на панели включить - включается с ощутимой задержкой. Потом оказалось в порту PLC панели подключил неправильно вместо А-В (4-7) подключил R-T (2-3)

Евгений76
19.11.2018, 13:45
У самого тоже тоже есть вопросы.
1.Для того, чтобы записать( передать ) числовое значение (1) в регистр slave устройства из панели - напрямую , через кнопку , функциональную область не получится? только через макрос?
2. В работе ( панель получает статус работы, считывает значения) , отключаю питание модуля RS485 на slave устройстве , на экране отображается последнее измеренное значение и статус работы - работа. Возможно ли как то организовать при потере связи со slave устройством обнулять данные или изменять статус, может выводить индикацию - потеря связи?

Евгений Кислов
19.11.2018, 14:36
У самого тоже тоже есть вопросы.
1.Для того, чтобы записать( передать ) числовое значение (1) в регистр slave устройства из панели - напрямую , через кнопку , функциональную область не получится? только через макрос?
2. В работе ( панель получает статус работы, считывает значения) , отключаю питание модуля RS485 на slave устройстве , на экране отображается последнее измеренное значение и статус работы - работа. Возможно ли как то организовать при потере связи со slave устройством обнулять данные или изменять статус, может выводить индикацию - потеря связи?

1. Можно и через функциональную кнопку или область с действием Присвоить значение.
2. Можно выводить индикацию о статусе связи - см. в РП список системных бит.

konst_smn
20.11.2018, 17:55
Нужна достоверная информация.

В общем виде задача стоит так - есть СП307-Р, опрашивающая через PLC-порт 4 ведомых устройства, разбитые на пары 1, 2 - шкаф управления ШУ №1 и 3, 4 - шкаф управления ШУ №2. В штатном режиме СП307-Р подает команду разрешения работы одного из ШУ (раз в сутки меняя работающий ШУ).

Стоит задача - при потере связи с устройствами активного ШУ достоверно обнаружить потерю связи с ним и подать команду разрешения работы на неактивный ШУ.

Хочу для этого использовать PSB51, но нужна дополнительная информация. Бит описан как бит ошибки обмена.
Когда он устанавливается? У меня несколько устройств, читаю информацию с разных адресов этих устройств. Допустим, обмен с устройствами 1, 2 ШУ1 прекратился, а обмен с 3, 4 ШУ2 идет. PSB51 устанавливается после стабильной ошибки связи в течении тайм-аута, или после каждого обмена с любым ведомым устройством?

Евгений Кислов
20.11.2018, 18:18
Какое формальное описание "достоверной потери связи" ?
Отсутствие ответа на 1, 5, 10 последовательных запросов? Или полное отсутствие ответов в течение некого заданного интервала времени?

konst_smn
21.11.2018, 06:24
Какое формальное описание "достоверной потери связи" ?
Отсутствие ответа на 1, 5, 10 последовательных запросов? Или полное отсутствие ответов в течение некого заданного интервала времени?
Первое уточнение - СП307-Р - ведущее (master) устройство на канале PLC - RS-485 c протоколом обмена Modbus RTU.
К нему подключены четыре ведомых (slave) устройства с таким же протоколом, адреса 1, 2, 3, 4, сгруппированные в шкафы управления.
1, 2 - ШУ1, 3, 4 - ШУ2. Чтобы Вам было приятнее, скажу что устройства с адресами 1, 3 - это ПР200 Вашего производства.
Именно обмен с ПР200 - адреса 1, 3 - я и хочу контролировать, знать, оборвался обмен или нет.
Для обмена используются как элементы экрана - табло, индикаторы битов, так и программы в макросах (Write, Read).

Задача контроля наличия обмена ведомых устройств на асинхронном последовательном канале связи в общем виде может ставиться и решаться по-разному,
Вы ,как разработчик, наверное много сможете об этом рассказать в узком кругу :), а я уточню вопрос.
В идеале это получение информации о том, что с конкретным устройством, с конкретным адресом, нет связи, к примеру за заданное время тайм-аута, или на заданное число попыток связи.
Моя субъективная точка зрения - удобнее использовать настраиваемый для каждого ведомого устройства тайм-аут обмена, так как производители приборов иногда дают в РЭ время на ответ чуть
ли не в полсекунды, и на одном канале мы можем, настроив адреса, скорости, протокол обмена использовать приборы десятка разных производителей (во всяком случае, у меня такой опыт
при сборе информации с подстанции был, оборудование было другого производителя, я такими задачами в разных отраслях занимаюсь с 1995 года).

Как сделано в СП307-Р я не знаю, потому и спрашиваю расширенный ответ.
Насколько понимаю, такой информации, по каждому устройству, подключенному к порту PLC,
используя СП307-Р я не получу, так как для порта PLC имеется только один бит признака ошибки обмена, который привязан к каналу PLC.
Никаких претензий к этому нет, устройство использую "как есть".
Я пытаюсь узнать еще раз от разработчика - каким образом формируется бит признака ошибки связи в СП307-Р,
чтобы как-то попробовать использовать его для своих задач.
Возможно, я смогу выявить обрыв связи с подключенным устройством другим способом.
Например, контролировать бит ошибки сразу после записи или чтения через порт PLC в макросе - если бит формируется по результатам этого обмена.
Подробного описания в руководстве нет, есть просто "бит такой-то", "а вот этот параметр - тайм-аут". Как реализовано формирование этого бита?

В используемом ПР200 нет вообще никакого контроля тайм-аута обмена с ведущим устройством при работе в качестве ведомого устройства, там я использую формируемый
в СП307 меандр для контроля обрыва связи, раз разработчик не дал иного. В ведущем (master) СП307, не имеющем FBD-подобных средств, не хотелось бы
городить огород с контролем меандра, формируемого в ведомом (slave) ПР-200.

Евгений76
21.11.2018, 07:33
В тему управления обменом с устройствами.
бит PFW 130. Необходимо откл обмен с устройствами. Переключатель , в нем настройки PFW 316.1 при вкл откл-ся связь при выкл включается? адрес устройства 1,( пробовал- ничего не происходит). читал несколько раз РП на последней странице...как то мудрено

Евгений Кислов
21.11.2018, 07:47
читал несколько раз РП на последней странице...как то мудрено

Тогда лучше посмотреть видео: https://www.youtube.com/watch?v=qlcALFL4tpA&t=3s

Евгений Кислов
21.11.2018, 08:16
Как сделано в СП307-Р я не знаю, потому и спрашиваю расширенный ответ.


Конкретный пример - устройство, подключенное к PLC-порту перестало работать:

1. Панель отправляет запрос и не получает ответ в течение времени PFW38 мс - детектируется отсутствие ответа: PSW72 увеличивается на +1
2. Панель отправляет повторный запрос
3. Если на X последовательных запросов (где X = Повторов в настройках порта) нет ответов, то

бит PSB51 устанавливается в TRUE на некоторое (зависящее от ряда факторов, в т.ч. таймаута) время
PSW71 увеличивается на +1 (сеанс опроса не удался). Фактически, при полном отсутствии связи за все время работы PSW71 = PSW72 / Повторов.
в регистр PSW76 записывается адрес устройства, с которым не состоялся сеанс опроса


После этого начинается следующий сеанс обмена: сброс PSB51, отправка запроса (от следующего элемента / макроса) и так далее.

Если требуется тщательный контроль обмена - то проще весь обмен перенести в макросы: функции Read(s), Write(s) возвращают соответствующий бит (TRUE - на запрос пришел корректный ответ, FALSE - что-то пошло не так).
Кроме того, можно будет оптимизировать обмен за счет групповых запросов.

konst_smn
21.11.2018, 08:52
Конкретный пример - устройство, подключенное к PLC-порту перестало работать:

1. Панель отправляет запрос и не получает ответ в течение времени PFW38 мс - детектируется отсутствие ответа: PSW72 увеличивается на +1
2. Панель отправляет повторный запрос
3. Если на X последовательных запросов (где X = Повторов в настройках порта) нет ответов, то

бит PSB51 устанавливается в TRUE на некоторое (зависящее от ряда факторов, в т.ч. таймаута) время
PSW71 увеличивается на +1 (сеанс опроса не удался). Фактически, при полном отсутствии связи за все время работы PSW71 = PSW72 / Повторов.
в регистр PSW76 записывается адрес устройства, с которым не состоялся сеанс опроса


После этого начинается следующий сеанс обмена: сброс PSB51, отправка запроса (от следующего элемента / макроса) и так далее.

Если требуется тщательный контроль обмена - то проще весь обмен перенести в макросы: функции Read(s), Write(s) возвращают соответствующий бит (TRUE - на запрос пришел корректный ответ, FALSE - что-то пошло не так).
Кроме того, можно будет оптимизировать обмен за счет групповых запросов.
Евгений, спасибо за подробный ответ с рекомендациями.
Решение найдено, более удобное чем контроль меандра. :).
В этой связи дополнительный вопрос.
Насколько понимаю, функции чтения и записи (я их уже использую в макросах) Read(s), Write(s) возвращают значение ошибки в бите.
Однако, в справке, вызываемой по F1 и в файле руководства пользователя это никак не описано. Если Вас не затруднит, приведите пример использования возвращаемого функциями.
Со своей стороны, я могу предположить, что надо ставить в условие саму функцию Read(s) или Write(s), по результату устанавливать/сбрасывать бит в незарезервированной области битовой памяти командами SetPSB(n)/ResetPSB(n) либо выполнить необходимые по задаче действия.

if (Read(......))
{
SetPSB(n); //пришел корректный ответ
...
}
else
{
ResetPSB(n); //нет корректного ответа либо нет вообще никакого ответа
}

if (Read(......))
{
....; //пришел корректный ответ
...
}
else
{
....; //нет корректного ответа либо нет вообще никакого ответа
}

Евгений Кислов
21.11.2018, 09:21
Абстрактный пример: если чтение удалось, то пишем в выбранный нами регистр статуса 10. Если не удалось - то 20.



BOOL IsSuccessReading;
WORD Value;

IsSuccessReading = Read(PLC, 1, MODBUS_RTU_REG_4X, 0, 0, TYPE_WORD, &Value);

PSW[256] = Value;

if (IsSuccessReading)
{
Write(HMI_LOCAL_MCH, 0, TYPE_PFW, 300, 0, TYPE_WORD, 10);
}
else
{
Write(HMI_LOCAL_MCH, 0, TYPE_PFW, 300, 0, TYPE_WORD, 20);
}



Однако, в справке, вызываемой по F1 и в файле руководства пользователя это никак не описано.

Актуальная версия в pdf (доступно на сайте и диске из комплекта поставки).

konst_smn
21.11.2018, 09:52
Абстрактный пример: если чтение удалось, то пишем в выбранный нами регистр статуса 10. Если не удалось - то 20.



BOOL IsSuccessReading;
WORD Value;

IsSuccessReading = Read(PLC, 1, MODBUS_RTU_REG_4X, 0, 0, TYPE_WORD, &Value);

PSW[256] = Value;

if (IsSuccessReading)
{
Write(HMI_LOCAL_MCH, 0, TYPE_PFW, 300, 0, TYPE_WORD, 10);
}
else
{
Write(HMI_LOCAL_MCH, 0, TYPE_PFW, 300, 0, TYPE_WORD, 20);
}




Актуальная версия в pdf (доступно на сайте и диске из комплекта поставки).
Спасибо, вопросов больше нет.

petera
21.11.2018, 10:14
В тему управления обменом с устройствами.
бит PFW 130. Необходимо откл обмен с устройствами. Переключатель , в нем настройки PFW 316.1 при вкл откл-ся связь при выкл включается? адрес устройства 1,( пробовал- ничего не происходит). читал несколько раз РП на последней странице...как то мудрено

Вы наверно читали, что-то не то
В регистр PFW130 нужно не биты записывать, а базовый адрес регистров PFW, через биты которых и происходит управление обменом.
Например
Имеется шесть ПЛК с адресами станций 2, 4, 6, 8, 10, 12. Контроллеры подключены к порту PLC.
Выберем для области управления регистры PFW с адреса, например, 400.
С помощью ф.области (ГЛОБАЛЬНОЙ) с условием "После загрузки проекта" запишем в регистр PFW130 значение 400 как Dword.
Для порта PLC адрес регистра управления будет БАЗОВЫЙ адрес + 16, т.е 400 + 16 =416
Теперь битами регистра PFW416 можно выводить отключенные контроллеры из обмена.
PFW416.02 - ПЛК с адресом 2;
PFW416.04 - ПЛК с адресом 4;
PFW416.06 - ПЛК с адресом 6;
PFW416.08 - ПЛК с адресом 8;
PFW416.10 - ПЛК с адресом 10;
PFW416.12 - ПЛК с адресом 12;

Евгений76
21.11.2018, 14:18
Евгений,
petera спасибо получилось отключить обмен

konst_smn
21.11.2018, 15:38
Абстрактный пример: если чтение удалось, то пишем в выбранный нами регистр статуса 10. Если не удалось - то 20.
Актуальная версия в pdf (доступно на сайте и диске из комплекта поставки).
Вот и появились сомнения в поддержке старых проектов - это так, к слову.

Итак, весь обмен перевел в макросы, кроме экранных кнопок, подающих команды

Евгений, нужно уточнение по тайм-ауту обмена.
Тайм-аут я понимаю как время, за которое должно ответить устройство. Если устройство не ответило, то
СП307-Р в функциях чтения-записи возвращает 0, если ответило - 1.
Теперь о сомнениях.
После дня упорных экспериментов с макросами, вызов которых выполняется через функциональную область, в проекте указзаную как глобальная,
мне не удалось установить достоверное время тайм-аута.
Попробовал, скачав последнее РП, разобраться.
Указано, что PFW35 содержит тайм-аут в миллисекундах. Читаю его, вывожу на экран - и вижу не тайм-аут, в конфигураторе недоступный для настройки, а параметр "Задержка отправки" в настройках порта PLС. Меняю параметр, загружаю проект - вижу, что не ошибся, PFW35 содержит измененное мной значение.
Как настроить тайм аут, доступна ли эта настройка, или надо рассчитывать на какой-то фиксированный тайм-аут?
Может быть Вы под тайм-аутом имеете нечто иное, чем я описал выше?

konst_smn
21.11.2018, 16:35
PFW28 -тайм-аут для порта Download
PFW38 -тайм-аут для порта PLC
По умолчанию там записано значение 1000(мс)
Спасибо за пояснения!
Но у меня опять вопрос :(.
Могу ли я в моем макросе инициализации, вызываемом при загрузке проекта однократно, изменить это значение (естественно,
понимая что могу и увеличить динамику обмена, и, если есть медленно отвечающие устройства, не дождаться ответа от ведомых устройств).
Ведомые устройства в данном проекте - это ПЧ ESQ600 и ПР200, по 2 штуки, отвечают довольно шустро, думаю что 100 мс для них будет достаточно.

petera
21.11.2018, 16:39
Спасибо за пояснения!
Но у меня опять вопрос :(.
Могу ли я в моем макросе инициализации, вызываемом при загрузке проекта однократно, изменить это значение (естественно,
понимая что могу и увеличить динамику обмена, и, если есть медленно отвечающие устройства, не дождаться ответа от ведомых устройств).
Ведомые устройства в данном проекте - это ПЧ ESQ600 и ПР200, по 2 штуки, отвечают довольно шустро, думаю что 100 мс для них будет достаточно.

Ну так попробуйте свой макрос инициализации на пустом проекте. Дисплей с регистромPFW38 Вам в помощь.

konst_smn
22.11.2018, 11:06
Ну так попробуйте свой макрос инициализации на пустом проекте. Дисплей с регистромPFW38 Вам в помощь.
Извините за назойливость и не подумайте, что я пытаюсь учить разработчика - просто пытаюсь понять, правильно ли работаю.
Перенес часть кода в глобальный макрос, чтобы вызывать из других макросов. Читаю информацию из области регистров с "разрывами", поэтому два чтения


void Read_AC_DR(WORD AddrDev, WORD AddrBufPSW)
{
WORD value;
WORD arrvalue[4];
BOOL rez;

// Info from AC Drive
rez = Reads(PLC, AddrDev, MODBUS_RTU_REGS_4X, 41473, 5, &arrvalue);
if(rez)
{
PSW[AddrBufPSW] = arrvalue[0];
PSW[AddrBufPSW + 1] = arrvalue[3];
PSW[AddrBufPSW + 2] = arrvalue[4];
}

rez = Read(PLC, AddrDev, MODBUS_RTU_REG_4X, 41496, 0, TYPE_WORD, &value);
if(rez)
{
PSW[AddrBufPSW + 3] = value;
}
}

Вопросs
1) Надо ли перестраховываться с контролем результата обмена в Reads? У меня проект работает в реальной панели, ведомых устройств физически нет, и сложилось впечатление, ч то в регистры попадает какой-то мусор. Ну тоесть, если чтение прошло с ошибкой, или стработал тайм-аут (у меня он срабатывает), то в arrvalue ничего не записывается? Режим исполнения макроса, где вызывается данная подпрограмма - циклический, 1 секунда, "параллельно".
2) Правильно ли использование value? Так дается в примерах по всему руководству, но, опять же не пытаясь учить, и понимая, что у вас Си-подобный синтаксис языка, пытаюсь снять свои сомнения. Ну мало ли, опечатка какая вкралась... Люди же используют в тысячах проектов, а я тут умный такой выискался :(.
WORD arrvalue[5];
если бы я пытался взять адрес первого элемента этого массива в Си - я использовал бы не &arrvalue, а просто arrvalue без амперсенда. У Вас адрес берется не так, как в Си?
Не воспримите как упрек, я понимаю, что могу ошибаться, и что у Вас свой собственный язык, ну просто когда на разных языках, подобных, пишешь, надо избежать ошибок (это я про себя :().
PS Возможно, "мусор" в arrvalue - это результат использования локального массива без инициализации, и даже скорее всего именно из-за этого. Как я понял, глобальные переменные в глобальном макросе инициализируются нулем, если нет явной их инициализации, а локальные никак не инициализируются по умолчанию?

petera
22.11.2018, 12:27
Извините за назойливость и не подумайте, что я пытаюсь учить разработчика - просто пытаюсь понять, правильно ли работаю.
Перенес часть кода в глобальный макрос, чтобы вызывать из других макросов. Читаю информацию из области регистров с "разрывами", поэтому два чтения


void Read_AC_DR(WORD AddrDev, WORD AddrBufPSW)
{
WORD value;
WORD arrvalue[4];
BOOL rez;

// Info from AC Drive
rez = Reads(PLC, AddrDev, MODBUS_RTU_REGS_4X, 41473, 5, &arrvalue);
if(rez)
{
PSW[AddrBufPSW] = arrvalue[0];
PSW[AddrBufPSW + 1] = arrvalue[3];
PSW[AddrBufPSW + 2] = arrvalue[4];
}

rez = Read(PLC, AddrDev, MODBUS_RTU_REG_4X, 41496, 0, TYPE_WORD, &value);
if(rez)
{
PSW[AddrBufPSW + 3] = value;
}
}

Вопросs
1) Надо ли перестраховываться с контролем результата обмена в Reads? У меня проект работает в реальной панели, ведомых устройств физически нет, и сложилось впечатление, ч то в регистры попадает какой-то мусор. Ну тоесть, если чтение прошло с ошибкой, или стработал тайм-аут (у меня он срабатывает), то в arrvalue ничего не записывается? Режим исполнения макроса, где вызывается данная подпрограмма - циклический, 1 секунда, "параллельно".
2) Правильно ли использование value? Так дается в примерах по всему руководству, но, опять же не пытаясь учить, и понимая, что у вас Си-подобный синтаксис языка, пытаюсь снять свои сомнения. Ну мало ли, опечатка какая вкралась... Люди же используют в тысячах проектов, а я тут умный такой выискался :(.
WORD arrvalue[5];
если бы я пытался взять адрес первого элемента этого массива в Си - я использовал бы не &arrvalue, а просто arrvalue без амперсенда. У Вас адрес берется не так, как в Си?
Не воспримите как упрек, я понимаю, что могу ошибаться, и что у Вас свой собственный язык, ну просто когда на разных языках, подобных, пишешь, надо избежать ошибок (это я про себя :().
PS Возможно, "мусор" в arrvalue - это результат использования локального массива без инициализации, и даже скорее всего именно из-за этого. Как я понял, глобальные переменные в глобальном макросе инициализируются нулем, если нет явной их инициализации, а локальные никак не инициализируются по умолчанию?

Я простой смертный :)
И в макросах Си не шибко силен. Нужно подождать, что на это ответит Евгений Кислов.

если бы я пытался взять адрес первого элемента этого массива в Си - я использовал бы не &arrvalue, а просто arrvalue без амперсенда
Все верно, можете так и делать. Но кашу маслом не испортить?

Евгений Кислов
22.11.2018, 12:32
1) При ошибках/таймауте - в буфере может быть что угодно. Соответственно, надо проверять результат операции чтения/записи и, при необходимости, выполнять нужные действия (например, обнулять регистры, выводимые на экран).
2) Можно указывать просто имя массива. В примерах везде используется взятие адреса, чтобы не усложнять документацию и отдельно не пояснять, почему такой код не работает:


Reads(HMI_LOCAL_MCH, 0, TYPE_PSW, 300, 4, PSW[400]);

а такой - работает:


Reads(HMI_LOCAL_MCH, 0, TYPE_PSW, 300, 4, &PSW[400]);

konst_smn
22.11.2018, 12:37
1) При ошибках/таймауте - в буфере может быть что угодно. Соответственно, надо проверять результат операции чтения/записи и, при необходимости, выполнять нужные действия (например, обнулять регистры, выводимые на экран).
2) Можно указывать просто имя массива. В примерах везде используется взятие адреса, чтобы не усложнять документацию и отдельно не пояснять, почему такой код не работает:


Reads(HMI_LOCAL_MCH, 0, TYPE_PSW, 300, 4, PSW[400]);

а такой - работает:


Reads(HMI_LOCAL_MCH, 0, TYPE_PSW, 300, 4, &PSW[400]);
Спасибо! Вопросы сняты!

Евгений76
22.11.2018, 13:39
Тоже нужен контроль с устройствами.
1. в выше приведенном примере , что означает PSW[256] = Value; ? что делает?
2. мне нужен опрос 35 приборов, на каждый писать такой макрос? или как то можно в одном?
3. еще заметил при потере связи с прибором на панели жутко начинают тормозить кнопки - переключения окон, экранов и тд (10-15 сек длится срабатывание) никак не устраняется?

Евгений76
22.11.2018, 13:40
BOOL IsSuccessReading;
WORD Value;

IsSuccessReading = Read(PLC, 1, MODBUS_RTU_REG_4X, 0, 0, TYPE_WORD, &Value);

PSW[256] = Value;

if (IsSuccessReading)
{
Write(HMI_LOCAL_MCH, 0, TYPE_PFW, 300, 0, TYPE_WORD, 10);
}
else
{
Write(HMI_LOCAL_MCH, 0, TYPE_PFW, 300, 0, TYPE_WORD, 20);
}



в этом примере

Евгений Кислов
22.11.2018, 13:50
1. Это запись в регистр панели PSW[256] значения переменной Value.
2. Можно и в одном, который выполняется параллельно.
3. Какая у вас версия конфигуратора?

Евгений76
22.11.2018, 14:04
последняя с сайта

Евгений Кислов
22.11.2018, 14:08
последняя с сайта

Проект создавался в ней с нуля или был импортирован из более старого конфигуратора?
Если первое, то редуцировать падение скорости реакции на нажатия при потере связи можно только оптимизацией обмена (например, использование групповых запросов в макросе).

Евгений76
22.11.2018, 14:10
я так понял сначала запись идет в PFW 300 потом в PSW256? я пробовал выводил на дисплей оба регистра, значение выводилось в PFW300 в PSW256 не было

Евгений76
22.11.2018, 14:11
из старого, потом обновил

Евгений Кислов
22.11.2018, 14:13
В PSW256 записывается значение, считанное с прибора. В PFW300 - статус обмена (10 - обмен успешный, 20 - нет).
Напомню, что это просто абстрактный пример кода на тему "как сделать что-то при отсутствии ответа от опрашиваемого устройства".

petera
22.11.2018, 14:19
из старого, потом обновил

Шаблон-то проекта остался старый, с системным окном о потери связи

Сделайте так:
- в настройках проекта поменяйте тип панели сп310 на сп307 (сп307 на сп310)
- верните в настройках проекта первоначальный тип панели.
После этого в проекте будет только "ручной" контроль наличия связи

Евгений76
22.11.2018, 14:27
хорошо. завтра попробую

Евгений76
23.11.2018, 13:14
Шаблон-то проекта остался старый, с системным окном о потери связи

Сделайте так:
- в настройках проекта поменяйте тип панели сп310 на сп307 (сп307 на сп310)
- верните в настройках проекта первоначальный тип панели.
После этого в проекте будет только "ручной" контроль наличия связи

Не получилось, все равно тормозит, создать новый проект в новом конфигураторе?

andrewvol
24.11.2018, 23:20
Здравствуйте!
У меня возникла следующая проблема. У меня есть ПЛК150. Я создал графический интерфейс для панели СП307, в котором, в том числе, я записываю в определенные биты 0 или 1 с помощью переключателей с индикацией (переключатели должны работать в режиме "Инверсия"). Самой панели у меня в наличии нет, поэтому я провожу тесты через режим эмуляции, через Ethernet. Эмулятор панели корректно считывает все данные из ПЛК, корректно проводится запись в Float и Int переменные из Эмулятора в ПЛК. Но вот запись одиночных битов в регистры 8bit ПЛК не проходит. Записываются только некоторые биты, которые стоят первыми в регистре, и то не все. Это проблема эмулятора? Хочу попробовать купить преобразователь USB-RS485 и связать эмулятор с ПЛК через него.
ПЛК - Slave, Панель - Master.

andrewvol
25.11.2018, 01:03
Сделал запись регистра целиком при нажатии одного переключателя с помощью функциональных блоков. Так работает.

Евгений76
28.11.2018, 14:03
Здравствуйте! Создал проект с несколькими однотипными устройствами, каждое устройство в своей клетке, индикаторы отображения статуса работы, потери связи. В каждой клетке создал невидимую кнопку открытия окна на всю клетку , в окне можно включить-выключить связь со своим устройством. Все работало пока у меня было 2 устройства. Когда создал третье начала пропадать связь с двумя первыми. Т.е. включены 2 первых устройства, статус - работа, нажимаю кнопку открытия окна третьего устройства (в нем обмен с 3 устройством отключен ) пропадает связь с 1и 2 , видно по индикации на самих устройствах и на панели, как только окно закрываю связь появляется. Все бы ничего, ведь время работы с окном небольшое, некритично. Но когда подключаю 3 устройство, а 1 выключено, все происходит наоборот, т.е. пока 3 окно не открыто связи нет, при открытии появляется! Все проверил на несколько раз, все настройки одинаковы . Где покопать? 40076

petera
28.11.2018, 15:58
Если речь идет об использовании PFW130, то есть нюансы при включении обмена.
Но Ваши симптомы

нажимаю кнопку открытия окна третьего устройства (в нем обмен с 3 устройством отключен ) пропадает связь с 1и 2
не похожи на это, но без проекта ничего определенного сказать нельзя.
Возможно просто, неправильно манипулируете битами ВКЛ/ВЫКЛ обменом

Евгений76
29.11.2018, 14:26
Да использую PFW130, а какие могут быть нюансы?

petera
29.11.2018, 15:34
Есть еще странное поведение битовых индикаторов, привязанных к битам слейва отключенного контроллера - все индикаторы находятся в значении “1” и периодически кратковременно (доли секунды) переходят в “0”.
Из-за такого странного поведения битовых переменных, например, если есть историческая таблица, в которой используются биты отключенного контроллера, то таблица будет "забита" ложными сообщениями по переднему фронту этих бит.
Решается путем копирования через глобальную функцию бит ПЛК в промежуточные регистры панели
Т.е. поставить в соответствие битам регистров 4х в ПЛК биты промежуточных регистров PSW панели.
Например
4х0 --> PSW256
4х1 --> PSW257
4х2 --> PSW258
.........
4х9 --> PSW265
и т.д.

Если Вы использовали для ламп, переключателей с индикацией или в исторической таблице биты 0х ПЛК, то их номера всегда можно представить в виде отдельных разрядов регистров 4х. Например 0х1 соответствует 4х0.01, а 0х31 соответствует 4х1.15.
Соответсвенно лампы привязать уже к битам PSW.
В этой глобальной функции копирования можно для регистров ПЛК использовать динамическую адресацию для устранения проблемы описанной в предыдущем посте.

andrewvol
29.11.2018, 17:09
Я так понимаю, что вообще лучше всегда конечные элементы HMI (индикаторы, переключатели, дисплеи и пр.) подключать регистрам не ПЛК, а к регистрам самой панели. А уже, например в функциональной области делать копирование из ПЛК в эти регистры панели. Например у себя я сделал так, кроме того сделал, чтобы функция копирования регистров из ПЛК работала с интервалом 1 с. Такой подход нормальный?

Евгений76
30.11.2018, 15:01
Есть еще странное поведение битовых индикаторов, привязанных к битам слейва отключенного контроллера - все индикаторы находятся в значении “1” и периодически кратковременно (доли секунды) переходят в “0”.
Из-за такого странного поведения битовых переменных, например, если есть историческая таблица, в которой используются биты отключенного контроллера, то таблица будет "забита" ложными сообщениями по переднему фронту этих бит.
Решается путем копирования через глобальную функцию бит ПЛК в промежуточные регистры панели
Т.е. поставить в соответствие битам регистров 4х в ПЛК биты промежуточных регистров PSW панели.
Например
4х0 --> PSW256
4х1 --> PSW257
4х2 --> PSW258
.........
4х9 --> PSW265
и т.д.

Если Вы использовали для ламп, переключателей с индикацией или в исторической таблице биты 0х ПЛК, то их номера всегда можно представить в виде отдельных разрядов регистров 4х. Например 0х1 соответствует 4х0.01, а 0х31 соответствует 4х1.15.
Соответсвенно лампы привязать уже к битам PSW.
В этой глобальной функции копирования можно для регистров ПЛК использовать динамическую адресацию для устранения проблемы описанной в предыдущем посте.



Спасибо огромное за подробные пояснения! Буду разбираться

Rake Runner
30.11.2018, 15:13
Я так понимаю, что вообще лучше всегда конечные элементы HMI (индикаторы, переключатели, дисплеи и пр.) подключать регистрам не ПЛК, а к регистрам самой панели. А уже, например в функциональной области делать копирование из ПЛК в эти регистры панели. Например у себя я сделал так, кроме того сделал, чтобы функция копирования регистров из ПЛК работала с интервалом 1 с. Такой подход нормальный?

Это отличный подход.

Серенький
30.11.2018, 23:05
Благодарю! Проверю.

Серенький
30.11.2018, 23:06
У меня было примерно тоже самое- скачал в примерах обмен с модулем ввода вывода с помощью макроса, нажимаешь на панели включить - включается с ощутимой задержкой. Потом оказалось в порту PLC панели подключил неправильно вместо А-В (4-7) подключил R-T (2-3)

Благодарю! Проверю.

leonid_tarasyuk
06.12.2018, 11:51
Добрый день. В общем, панель подключена к ПЛК через RS-485, загрузил через конфигуратор панель и не работают кнопки и ввод, в плане: кнопки не нажимаются, и когда ввожу цифровой ввод, то остаются нули. НО, те значиния, что я записываю через панель, в ПЛК отображаются
Не могу понять, что у меня с панелью

Евгений Кислов
06.12.2018, 11:58
Добрый день. В общем, панель подключена к ПЛК через RS-485, загрузил через конфигуратор панель и не работают кнопки и ввод, в плане: кнопки не нажимаются, и когда ввожу цифровой ввод, то остаются нули. НО, те значиния, что я записываю через панель, в ПЛК отображаются
Не могу понять, что у меня с панелью

Добрый день.
Ознакомьтесь, пожалуйста, с учебным видео:
https://www.youtube.com/watch?v=yJkwRU33I80

leonid_tarasyuk
07.12.2018, 15:20
Добрый день.
Ознакомьтесь, пожалуйста, с учебным видео:
https://www.youtube.com/watch?v=yJkwRU33I80

Ага. А почему тогда при онлайн эмуляции с внутренними регистрами всё работает, а с плк регистрами нет?
Как пример: нажимаю на кнопку, но она не включает светодиод, хотя в контроллер пришёл сигнал о включении

Евгений Кислов
07.12.2018, 15:28
Онлайн-эмуляция все же не является копией панели.
Биты регистров (в стиле 4x0.0) она записывать не умеет.
Но вы можете, например, записывать значения в регистры панели (PSW/PFW) и автоматически копировать их в ПЛК с помощью функциональной области - это будет работать и в панели, и в эмуляторе.

Dmitro
09.12.2018, 13:17
Кнопка "Переключатель". В настройках "Действие" ставлю "Переключение бита в состояние "ВКЛ"". (Intput 8 bit PSB 256).
Он и остается включенным до выключения питания.

Как мне программно "отжать" эту кнопку?
Нужно записать в тот же булевый регистр FALSE? (Output 8 bit PSB 256 ?)
Запись в тот же регистр его не сбрасывает.

Евгений Кислов
10.12.2018, 06:46
Кнопка "Переключатель". В настройках "Действие" ставлю "Переключение бита в состояние "ВКЛ"". (Intput 8 bit PSB 256).
Он и остается включенным до выключения питания.

Как мне программно "отжать" эту кнопку?
Нужно записать в тот же булевый регистр FALSE? (Output 8 bit PSB 256 ?)
Запись в тот же регистр его не сбрасывает.

Да, все верно.
Вот учебное видео: https://www.youtube.com/watch?v=syIPCaBgBAY

leonid_tarasyuk
10.12.2018, 08:58
Онлайн-эмуляция все же не является копией панели.
Биты регистров (в стиле 4x0.0) она записывать не умеет.
Но вы можете, например, записывать значения в регистры панели (PSW/PFW) и автоматически копировать их в ПЛК с помощью функциональной области - это будет работать и в панели, и в эмуляторе.

Ну там в функциональной области можно только регистры с типом ворд копировать. А с бул типом как?

Евгений Кислов
10.12.2018, 09:37
Ну там в функциональной области можно только регистры с типом ворд копировать. А с бул типом как?

Если вы используете биты регистров (например, PSW256.1) - то про копировании регистра будут скопированы все его биты.
Если бы используете биты PSB - то можно либо с помощью функции Копировать бит скопировать нужные биты в регистр PSW/PFW и потом одной командой записать в ПЛК весь регистр, либо сразу с помощью функции Копировать бит записывать биты в ПЛК по одному (это более затратный способ).

Dmitro
10.12.2018, 12:20
Да, все верно.
Вот учебное видео: https://www.youtube.com/watch?v=syIPCaBgBAY

На видео только включают кнопку нажатием и все.
Как ее отключить если в "действии" указано "ВКЛ" ?

В своем проекте я поставил инверсию по нажатию, работает, но есть одно НО
Для включения/виключения кнопки ее надо удерживать нажатой 2-3 секунди. Мне нужна реакция на прикосновение моментальная..

leonid_tarasyuk
10.12.2018, 12:23
Если вы используете биты регистров (например, PSW256.1) - то про копировании регистра будут скопированы все его биты.
Если бы используете биты PSB - то можно либо с помощью функции Копировать бит скопировать нужные биты в регистр PSW/PFW и потом одной командой записать в ПЛК весь регистр, либо сразу с помощью функции Копировать бит записывать биты в ПЛК по одному (это более затратный способ).

Вроде разобрался. Спасибо огромное

Евгений Кислов
10.12.2018, 12:30
На видео только включают кнопку нажатием и все.
Как ее отключить если в "действии" указано "ВКЛ" ?

В своем проекте я поставил инверсию по нажатию, работает, но есть одно НО
Для включения/виключения кнопки ее надо удерживать нажатой 2-3 секунди. Мне нужна реакция на прикосновение моментальная..

Теперь понятно. Вам в ПЛК лучше для Universal Modbus Module с записью выбрать WorkMode = By Command:

40309

Тогда вы сами в программе будете определять, когда в панель будут отправлены нужные данные.

Dmitro
11.12.2018, 22:40
Конфигуратор СП300. Текстовая надпись - выбран шрифт по умолчанию (Times New Roman).
При смене его на "Arial" вместо двух слов выводится только первое.
Как побороть этот баг? Спасибо

Евгений Кислов
12.12.2018, 06:48
Конфигуратор СП300. Текстовая надпись - выбран шрифт по умолчанию (Times New Roman).
При смене его на "Arial" вместо двух слов выводится только первое.
Как побороть этот баг? Спасибо

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

Dmitro
13.12.2018, 22:50
Добрый день.
Выложите, пожалуйста, проект, в котором это проявляется (достаточно проблемного текста, остальное можно вырезать).

Решено. Спасибо Евгений.

Dmitro
13.12.2018, 23:25
By command вообще никак не меняет бит кнопки, странно.
Надо будет вычитывать про это гдето отдельно.
Что только не ставил, даже методом тыка, все равно 2-4 секунда надо держать кнопку "переключатель с индикацией", пока контроллер ее "увидит". И это при цикле контроллера 1мс, скорости модбаса 57600...

Или придется городить какието костыли.

Ollema
14.12.2018, 05:44
Я полагаю, что цикл контроллера зависит от того, сколько кода реализовано в программе.

Евгений Кислов
14.12.2018, 06:50
https://drive.google.com/file/d/1M4Ayojx6Xrkc2ftUCKUjp6ata2Gztyz0/view?usp=sharing

Поставьте после цифры пробел:

"Выдержка 1 "

Насчет задержки получения данных - возможно, это связано с конкретным проектом (например, если ПЛК опрашивает много регистров - так как групповые запросы в конфигурации не поддержаны) или чем-то еще.
Если вы отправите проекты для ПЛК и панели на support@owen.ru - мы постараемся вам помочь

Sayland
16.12.2018, 11:24
На СП310 перестает работать переходы между экранами.

Rake Runner
16.12.2018, 12:48
На СП310 перестает работать переходы между экранами.

У вас на третьем экране к кнопке привязано неправильное действие.

Dmitro
20.12.2018, 19:15
Помогите пжл,

Мне надо взять Float он же real, со слейв модуля с адресом 20, по смещению 4 (МВА8, температура в канале 1)
и записать ее:
- в панель по адресу 256.
- в другой слейв (плк150) по адресу 60.
Верен ли нижеследующий макрос?

WORD ArrValue[2];
READ(PLC, 20, MODBUS_RTU_REG_4X, 4, 0, TYPE_DWORD, &ArrValue);
*(float*)(PSW+256)=ArrValue;
WRITE(PLC, 1, MODBUS_RTU_REG_4X, 60, 0, TYPE_DWORD, ArrValue);

И почему в "директоре" нет никакой проверки синтаксиса?

Мимоход
20.12.2018, 20:55
Помогите пжл,

Мне надо взять Float он же real, со слейв модуля с адресом 20, по смещению 4 (МВА8, температура в канале 1)
и записать ее:
- в панель по адресу 256.
- в другой слейв (плк150) по адресу 60.
Верен ли нижеследующий макрос?

WORD ArrValue[2];
READ(PLC, 20, MODBUS_RTU_REG_4X, 4, 0, TYPE_DWORD, &ArrValue);
*(float*)(PSW+256)=ArrValue;
WRITE(PLC, 1, MODBUS_RTU_REG_4X, 60, 0, TYPE_DWORD, ArrValue);

И почему в "директоре" нет никакой проверки синтаксиса?

А почему сразу не написать так

float fValue;
Read(PLC, 20, MODBUS_RTU_REG_4X, 4, 0, TYPE_DWORD, &fValue);
*(float*)(PSW+256)=fValue;
Write(PLC, 1, MODBUS_RTU_REG_4X, 60, 0, TYPE_DWORD, fValue);

ЗЫ.
Как оказалось у функции Write()
BOOL Write (PortName, SlaveID, DeviceTypeReg, Adr, 0, DataType, Var);
тип данных для переменной Var определен как DWORD
по этому если записать так

Write(PLC, 1, MODBUS_RTU_REG_4X, 60, 0, TYPE_DWORD, fValue);
то для fValue будет выполнено неявное преобразование типа float --> DWORD и в результате, если fValue=123.456 в ПЛК отправится 123

Правильно будет так

Write(PLC, 1, MODBUS_RTU_REG_4X, 60, 0, TYPE_DWORD, *(float*)&fValue);

или так, если использовать макрос Float_2_DWord


float fValue;
Read(PLC, 20, MODBUS_RTU_REG_4X, 4, 0, TYPE_DWORD, &fValue);
*(float*)(PSW+256)=fValue;
Write(PLC, 1, MODBUS_RTU_REG_4X, 60, 0, TYPE_DWORD, Float_2_DWord(fValue));

Dmitro
20.12.2018, 22:52
Мимоход спасибо.
В том числе смущает что в общих описаниях на Модбас написано что 4Х это функция ЧТЕНИЯ, а в примерах Овна она и для записи.
В тех же примерах для чтения аналога используется и 3х...
Новичок в этих делах, помогите...

Dmitro
20.12.2018, 23:28
Что только не ставил, даже методом тыка, все равно 2-4 секунда надо держать кнопку "переключатель с индикацией", пока контроллер ее "увидит". И это при цикле контроллера 1мс, скорости модбаса 57600...

Или придется городить какието костыли.

ВСЕГДА мастером нужно ставить панель. Иначе с кнопками "ВКЛ пока нажата" будет проблема. Укажите это в учебных видео. Или вообще снимите обучение, где панель - слейв,
иначе рано или поздно будут серьезные грабли.

Странновато это, большие частоты, тайминги, мегагерцы, а поставить мастером контроллер нельзя. Из-за этого надо программировать намного более сложную систему
с программированием макросов в панели, лишних перекладываний слов из "слейва в слейв".

Мимоход
20.12.2018, 23:59
Мимоход спасибо.
В том числе смущает что в общих описаниях на Модбас написано что 4Х это функция ЧТЕНИЯ, а в примерах Овна она и для записи.
В тех же примерах для чтения аналога используется и 3х...
Новичок в этих делах, помогите...
Ну наверно написано 0х4 - функция ЧТЕНИЯ, а не 4Х это функция ЧТЕНИЯ
Похоже у Вас путаница с понятиями протокола ModBus
4Х, 3Х, 1Х и 0Х -это четыре зоны (области) данных (переменных)

1Х - Discrete Inputs (начиная с 10001), или область дискретных входов (входных битов)
0Х - Coils (начиная с 00001), или область дискретных выходов (выходных битов)
3Х - Input Registers (начиная с 30001), или область входных регистров (аналоговых входов)
4Х - Holding Registers (начиная с 40001), или область выходных регистров (аналоговых выходов)

А вот функции (Чтение, запись и др.) часто записываются в виде 0х1, 0х2, 0х3, 0х4
Чувствуете разницу в написании 4Х и 0х4 ?
Просто символ 'х' в записи вида 0х1 означает, что число 1 записано в шестнадцатеричном формате
Для новичка популярно здесь https://sites.google.com/site/fieldbusbook/seti/modbus/modbuseducation
После прочтения статьи будет понятна эта табличка
http://www.owen.ru/forum/attachment.php?attachmentid=40469&d=1545340714

forpiv
21.12.2018, 04:04
Добрый день. Такого режима не предусмотрено.
Здравствуйте.
Расширенного режима нет, но элементы созданные в таком режиме для сп270 работать будут(в эмуляции работают). Но в конфигураторе сп3хх их нельзя подредактировать, что ну очень неудобно. А как быть тем кому нужны элементы с расширенным функционалом? Мне нужен цифровой индикатор с возможностью изменения цвета фона - многоцветный цифровой индикатор. Как его создать в конфигураторе сп3хх ?

Евгений Кислов
21.12.2018, 07:29
А как быть тем кому нужны элементы с расширенным функционалом?

Этим пользователям лучше перейти на панельные контроллеры СПК1хх [М01]:
http://www.owen.ru/forum/showthread.php?t=29382


Мне нужен цифровой индикатор с возможностью изменения цвета фона - многоцветный цифровой индикатор. Как его создать в конфигураторе сп3хх ?

Наложить несколько индикаторов друг на друга, управлять их битами видимости.

Dmitro
21.12.2018, 10:21
в проекте по биту появляется окно.
но при переключении экрана и возврате назад,
окно уже не выводится.

Как сделать чтобы после переключения экранов окно сохранялось?

Евгений Кислов
21.12.2018, 10:47
в проекте по биту появляется окно.
но при переключении экрана и возврате назад,
окно уже не выводится.

Как сделать чтобы после переключения экранов окно сохранялось?

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

Dmitro
26.12.2018, 13:24
Если вы говорите про окно тревог, то можно в настройках окна поставить период появления = 5 сек.
Тогда после возвращения на экран оно автоматически появится через 5 секунд (если к этому моменту бит еще не сброшен).


Элемент "вызов окна". Там настрое никаких, только бит, который его вызывает.

Dmitro
26.12.2018, 13:29
Я имел неосторожность в связке ПЛК150-СП315-Р мастером поставить ПЛК150,
теперь у меня для нажатия кнопки на СП315-Р ее надо держать нажатой 3-5 секунд. Еще в системе ВСЕГО 3 модуля...скорость 57600...
Есть ли рекомендации, чтобы уменьшить это время, кроме как поставить мастером панель?

Евгений Кислов
26.12.2018, 13:34
По поводу вызова окна - не смог воспроизвести. Выложите, пожалуйста, простейший проект, на котором это повторяется.

По поводу опроса - настолько значимых задержек быть не должно (если только вы не опрашиваете с панели сотни регистров).
Реализация обмена на ПЛК через библиотеку (modbus.lib) с использованием групповых запросов и увеличение скорости обмена до 115200 должно снизить задержку.

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

petera
26.12.2018, 15:12
Элемент "вызов окна". Там настрое никаких, только бит, который его вызывает.

Вам советовали не про элемент "вызов окна", а про Окно тревог.
Для окна тревог не требуется никаких элементов "вызов окна"
40576
Ну и собственно настройка повторения вызова окна настраивается в свойствах окна тревог
40577

Dmitro
26.12.2018, 21:28
По поводу опроса - настолько значимых задержек быть не должно (если только вы не опрашиваете с панели сотни регистров).
Реализация обмена на ПЛК через библиотеку (modbus.lib) с использованием групповых запросов и увеличение скорости обмена до 115200 должно снизить задержку.

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

Что имеете в ввиду "через библиотеку Modbus? Это не стандартная, когда просто добавляют устройства в КДС?
Наведите пожалуйста почитать про групповые запросы.

В техподдержке уже отвечали, что путь с мастером ПЛК - безнадежный. Надо делать мастером панель, а это практически переписать львиную долю проекта, очень печальная ситуация.

Евгений Кислов
27.12.2018, 08:58
Что имеете в ввиду "через библиотеку Modbus? Это не стандартная, когда просто добавляют устройства в КДС?
Наведите пожалуйста почитать про групповые запросы.

В техподдержке уже отвечали, что путь с мастером ПЛК - безнадежный. Надо делать мастером панель, а это практически переписать львиную долю проекта, очень печальная ситуация.

Библиотека: https://www.owen.ru/product/codesys_v2/769
Примеры: http://www.owen.ru/forum/showthread.php?t=13584

Dmitro
27.12.2018, 14:37
Евгений, Petera спасибо большое что не бросили в беде)

Dmitro
27.12.2018, 14:50
Можно пойти дальше и сделать групповые запросы на чтение регистров из подчиненного с помощью модулей -String output
http://www.owen.ru/forum/showthread.php?t=17207&p=141316&viewfull=1#post141316

Я так понимаю с помощью ключевого слова AT можно сделать mapping не только на массив, но и на отдельные слова,
тогда с ними удобно будет работать в программе, не надо будет ее переделывать вообще.
Отличная идея, спасибо!

Dmitro
31.12.2018, 11:35
Для групповой посылки создаю String output module[10], адрес 300, force multiply coils (0xf). Кажется тут групповая посылка срабатывает.
Раньше работал с PSB366, можно ли не отсчитывать 66 битов с адреса 300, а считать байтами, например PSB366=PSW308.1?
То есть как правильно пересчитать адрес PSB в адрес PSW + номер бита?

petera
31.12.2018, 13:51
Для групповой посылки создаю String output module[10], адрес 300, force multiply coils (0xf). Кажется тут групповая посылка срабатывает.
Раньше работал с PSB366, можно ли не отсчитывать 66 битов с адреса 300, а считать байтами, например PSB366=PSW308.1?
То есть как правильно пересчитать адрес PSB в адрес PSW + номер бита?

Нельзя отобразить PSB на биты PSW. Они физически находятся в разных областях памяти панели
ЗЫ
Если для String output module[10], адрес 300 задать команду preset multiple registers(0x10), то будете писать в биты PSW300.0 - PSW304.15

Morfey
31.12.2018, 21:10
Подскажите пожалуйста , возможно ли найти(узнать) IPадрес панели оператора СП307??? тот кто с ней до этого работал не очень разговорчивый ,говорит не помню и всё(((

petera
31.12.2018, 22:14
Подскажите пожалуйста , возможно ли найти(узнать) IPадрес панели оператора СП307??? тот кто с ней до этого работал не очень разговорчивый ,говорит не помню и всё(((

Какой в этом смысл - пытать того, кто с ней раньше работал?
При создании своего проекта, какой зададите - такой и будет.
40635

Morfey
01.01.2019, 13:46
Какой в этом смысл - пытать того, кто с ней раньше работал?
При создании своего проекта, какой зададите - такой и будет.
40635

дело в том что он изменил эти адреса.

petera
01.01.2019, 14:50
дело в том что он изменил эти адреса.
И что? В панели сейчас есть проект, который Вам нужен или Вы все равно будете делать свой проект?

Morfey
01.01.2019, 15:36
проект не нужен

Morfey
01.01.2019, 15:52
ноут подключен к панели через кабель изернет.

Morfey
01.01.2019, 16:41
....отвечаю сам на свой вопрос- получилось залить с помощью кабеля юсб,ничего не меняя.

petera
01.01.2019, 16:44
ноут подключен к панели через кабель изернет.

Зачем?
Программировать панель через Ethernet нельзя
Этот порт только для связи с оборудованием пр протоколу ModBus TCP

Программировать панель нужна через порт USB или через RS232 Download

ЗЫ.
Скачайте себе руководство по программированию https://www.owen.ru/uploads/83/sp3xx_rp_1.5.pdf
масса вопросов отпадут