Вход

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



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

kakTyc2000
11.04.2023, 11:46
А если не на Си, то не годится?

я не знаю, но конфигуратор для сп3хх только вроде на с, но я могу ошибаться так как нет опыта еще работы с этим

petera
11.04.2023, 11:48
я не знаю, но конфигуратор для сп3хх только вроде на с, но я могу ошибаться так как нет опыта еще работы с этим

Достаточно одной таблэтки, я имею ввиду - одной ф.области.
И ни каких Си не надо
https://owen.ru/forum/attachment.php?attachmentid=67179&d=1681202817

Секундомер запускается от бита, в примере - PSB256
Запоминает время при сбросе бита управления.
Запоминает время при выключении питания, т.к. время наработки хранится в энергонезависимых регистрах PFW500 и PFW501

ЗЫ.
Ф.область должна иметь свойство "Глобальная"

kakTyc2000
11.04.2023, 12:51
понял, даже не думал о таком, спасибо выручили

petera
11.04.2023, 13:17
можно ли как настроить этот счетчик на минуты часы и дни одновременно?

В часах и минутах - запросто, правда с макросом, графическим
https://owen.ru/forum/attachment.php?attachmentid=67190&d=1681207862
Дисплей с наработкой в часах и минутах возьмите из проекта во вложении, т.к. самой библиотеки с макрсами у Вас нет

LOM
19.04.2023, 09:56
ДВС!
Подскажите, возможно ли в исторической таблице визуально как то "отличать" аварийные и технологические события? На пример если "авария насоса" то рядом ставить иконку восклицательного знака красного цвета, а если "насос отключен" то желтый знак, предупреждающий, или если "насос запущен" то на сером фоне буква i, как водится. Спасибо

kondor3000
19.04.2023, 10:09
ДВС!
Подскажите, возможно ли в исторической таблице визуально как то "отличать" аварийные и технологические события? На пример если "авария насоса" то рядом ставить иконку восклицательного знака красного цвета, а если "насос отключен" то желтый знак, предупреждающий, или если "насос запущен" то на сером фоне буква i, как водится. Спасибо

А кто вам мешает сделать отдельно маску бит сообщений и отдельно маску бит аварий? И выводите как вам надо в таблицу.

LOM
19.04.2023, 10:49
А кто вам мешает сделать отдельно маску бит сообщений и отдельно маску бит аварий? И выводите как вам надо в таблицу.

Никто не мешает. У меня под это дело 2 регистра и используется, один аварии, другой все остальное. Вопрос в том, как в таблице не сбивать все это в кучу, чтобы визуально аварийные отличались от остальных. Может хотя бы как то цветом шрифта? Но шрифт можно менять только для всего столбца, а не для каждого сообщения по отдельности насколько я понял

kondor3000
19.04.2023, 13:48
Никто не мешает. У меня под это дело 2 регистра и используется, один аварии, другой все остальное. Вопрос в том, как в таблице не сбивать все это в кучу, чтобы визуально аварийные отличались от остальных. Может хотя бы как то цветом шрифта? Но шрифт можно менять только для всего столбца, а не для каждого сообщения по отдельности насколько я понял

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

LOM
19.04.2023, 16:57
Придется делать две таблицы, аварийных и технологических сообщений.

Millyvolt2
20.04.2023, 11:26
Здравствуйте!
СП307 (слейв) работает с ПЛК110 (мастер) по MODBUS.
Пытаюсь понять как наименее безболезненно работать с общими переменными.
Например, как переменным PSW панели СП307 задавать значения по умолчанию? Только макросами?
Как реализовать: при первом включении после загрузки пользовательской программы (Ctrl+D) СП307 проверяются регистры PFW, если они в нуле, то
выставить соответствующие им PSW в значения по умолчанию. Если PFW не нулевые, то присвоить их значения в PSW.

Millyvolt2
20.04.2023, 11:27
Если макрос использовать, то как его вызывать один раз при включении? Не по нажатию кнопки естественно.

kondor3000
20.04.2023, 12:27
Здравствуйте!
СП307 (слейв) работает с ПЛК110 (мастер) по MODBUS.
Пытаюсь понять как наименее безболезненно работать с общими переменными.
Например, как переменным PSW панели СП307 задавать значения по умолчанию? Только макросами?
Как реализовать: при первом включении после загрузки пользовательской программы (Ctrl+D) СП307 проверяются регистры PFW, если они в нуле, то
выставить соответствующие им PSW в значения по умолчанию. Если PFW не нулевые, то присвоить их значения в PSW.

Зачем тут макросы, всё это можно сделать с помощью ФО ( функц. области).
Например при включении панели, присвоить нужные значения в регистры PSW и если надо выключить бит.
При загрузке проекта, присвоить нужные значения в регистры PFW и (или) если надо включить бит.
Если так сделать, то проверять на 0 уже не надо.
Проверить регистры на 0 можно графическим макросом от petera ( все не надо, достаточно 1-2 регистров), макрос включит установленный бит.
Далее ФО по биту записывает нужные регистры или копирует группу регистров из PFW в PSW или обратно

Графич. макросы в проекте, есть для DEC, Unsignet, Float чисел, щёлкнув мыщью можно менять бит и регистр.
Важное отличие от обычных макросов, они работают и в эмуляции.

Millyvolt2
20.04.2023, 14:21
ФО

Спасибо, ФО вариант.

Есть ли возможность как то получить список используемых в проекте регистров PSW и PFW, чтобы мне самому не вести их учёт?
Т.е. чтобы понимать какие у меня в СП307 задействованы, какие нет

kondor3000
20.04.2023, 14:27
Спасибо, ФО вариант.

Есть ли возможность как то получить список используемых в проекте регистров PSW и PFW, чтобы мне самому не вести их учёт?
Т.е. чтобы понимать какие у меня в СП307 задействованы, какие нет

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

Millyvolt2
20.04.2023, 15:32
Нет, учёт лучше и надо вести, переменные лучше располагать подряд и по одному типу. Тогда есть вариант опрашивать всё группами, для ускорения обмена.

Понятно насчёт учёта, по поводу опроса, MODBUS у меня работает через конфигуратор, не знаю, будет ли он использовать номера регистров по порядку и опрашивать все регистры, идущие подряд.

kondor3000
20.04.2023, 15:39
Понятно насчёт учёта, по поводу опроса, MODBUS у меня работает через конфигуратор, не знаю, будет ли он использовать номера регистров по порядку и опрашивать все регистры, идущие подряд.

Мастер кто у вас?
Если ПЛК, то делаете так
petera неоднократно выкладывал примеры записи, чтения через STRING https://owen.ru/forum/showthread.php?t=22915&page=40&p=244022&viewfull=1#post244022
Важно понять принцип работы, дальше дело техники.

Серёга Букашкин
24.04.2023, 20:48
Проблема после попытки загрузки СП310Б. На экране висит ЗАГРУЗКА, при передёргивании питания так и остаётся. И не грузится... Как всё сбросить?

kondor3000
24.04.2023, 21:33
Проблема после попытки загрузки СП310Б. На экране висит ЗАГРУЗКА, при передёргивании питания так и остаётся. И не грузится... Как всё сбросить?

Принудительная загрузка, заведомо рабочим проектом. Читайте руководство.

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

Серёга Букашкин
25.04.2023, 13:52
Оказалось что проект не грузится в панель из-за того что компилирование его макросов даёт ошибку. Если макросы стереть то грузится. Ранее этот проект всегда загружался нормально. Сейчас с другого ноутбука проблемка. Что надо смотреть чтобы компиляция макросов прошла? Конфигуратор с сайта установлен.

kondor3000
25.04.2023, 14:12
Оказалось что проект не грузится в панель из-за того что компилирование его макросов даёт ошибку. Если макросы стереть то грузится. Ранее этот проект всегда загружался нормально. Сейчас с другого ноутбука проблемка. Что надо смотреть чтобы компиляция макросов прошла? Конфигуратор с сайта установлен.

Макросы вы можете проверить только на корректность кода ( на ошибки). В эмуляции макросы не работают и проверить работу кода не возможно.

Millyvolt2
27.04.2023, 14:11
На одной линии RS-485 3 устройства, СП307 и пара частотников.
Собираюсь через Конфигуратор ПЛК работать со всеми 3мя.
Лучше чтобы настройки были одинаковые? Скорость, четность и тп
Если разные настройки соединения, то конфигуратор будет переоткрывать порт или он в любом случае это делает для разных устройств?
То есть как идеологически правильно тут поступить?

kondor3000
27.04.2023, 14:35
На одной линии RS-485 3 устройства, СП307 и пара частотников.
Собираюсь через Конфигуратор ПЛК работать со всеми 3мя.
Лучше чтобы настройки были одинаковые? Скорость, четность и тп
Если разные настройки соединения, то конфигуратор будет переоткрывать порт или он в любом случае это делает для разных устройств?
То есть как идеологически правильно тут поступить?

Правильно включить частотники и панель на разные порты. Если такой возможности нет, тогда снижайте скорость на всех устройствах до 9600 (19200),
вобщем в зависимости от помех подбирайте скорость, и все настройки естественно одинаковые.
Все измерительные и сигнальные кабели экранировать, экраны заземлить рядом с ПЛК, 120 Ом на концах RS485, силовые и сигнальные разнести подальше, фильтры по питанию.

Millyvolt2
27.04.2023, 14:39
У частотников максимальная 38400, думаю такую и выставить.
И они дают сильные помехи на линию RS, смотрели осциллографом.
Через конфигуратор устройство Modbus Master на одной линии RS можно только одно делать?

kondor3000
27.04.2023, 14:55
У частотников максимальная 38400, думаю такую и выставить.
И они дают сильные помехи на линию RS, смотрели осциллографом.
Через конфигуратор устройство Modbus Master на одной линии RS можно только одно делать?

При одинаковых настройках сети, два Modbus Master и не нужны, только UMD свой для каждого слейва, с его адресом.

Серёга Букашкин
28.04.2023, 15:46
Проект с макросами нормально загружается в панель СП310 с ПК с Win10 и не транслируется и не загружается с ПК с Win7, нет компиляции макросов. При компиляции выдает вымпел "! Конфигуратор".

kondor3000
28.04.2023, 16:46
Проект с макросами нормально загружается в панель СП310 с ПК с Win10 и не транслируется и не загружается с ПК с Win7, нет компиляции макросов. При компиляции выдает вымпел "! Конфигуратор".

Возможно драйвер слетел или не поставили. У меня всё работает на обеих Виндовс.

ZETs
02.05.2023, 17:22
Здравствуйте!
В мануалах не нашел ппоэтому задаю вопрос. Подскажите пожалуйста есть ли возможность в заливать проект в панель СП310 удаленно?

kondor3000
02.05.2023, 18:11
Здравствуйте!
В мануалах не нашел ппоэтому задаю вопрос. Подскажите пожалуйста есть ли возможность в заливать проект в панель СП310 удаленно?

Нормального способа нет. Можно залить с флешки или через Download порт, при включении джамперов, но это очень медленно, а по сети нереально.
Зато проект можно заблокировать и переслать для заливки ( Файл/ Заблокировать проект). Открыть его будет нельзя, а залить можно.
Только сделайте копию сразу, иначе и вы открыть не сможете.

petera
02.05.2023, 19:25
Зато проект можно заблокировать и переслать для заливки ( Файл/ Заблокировать проект). Открыть его будет нельзя, а залить можно.
Только сделайте копию сразу, иначе и вы открыть не сможете.
Ну, ну..

Заблокируйте ЛЮБОЙ проект и выложите его здесь
А я за 10 сек его разблокирую и вышлю обратно..

Андрей Чернов
04.05.2023, 14:15
Добрый день! Подскажите насчет парольного доступа. Если на кнопку перехода на экран установить галочку на "Пароль", то доступ будет только при авторизации на отдельном экране. Но если пользователь не авторизирован, то при нажатии на кнопку абсолютно ничего не происходит, будто кнопка не имеет действия. Можно ли как-то сделать уведомление нажатии на кнопку без нужного уровня авторизации, вроде всплывающего окна "Необходимо авторизоваться"?

petera
04.05.2023, 14:31
Добрый день! Подскажите насчет парольного доступа. Если на кнопку перехода на экран установить галочку на "Пароль", то доступ будет только при авторизации на отдельном экране. Но если пользователь не авторизирован, то при нажатии на кнопку абсолютно ничего не происходит, будто кнопка не имеет действия. Можно ли как-то сделать уведомление нажатии на кнопку без нужного уровня авторизации, вроде всплывающего окна "Необходимо авторизоваться"?
Можно...
Если нужно..

ЗЫ.
https://owen.ru/forum/attachment.php?attachmentid=67708&d=1683200428

Андрей Чернов
04.05.2023, 14:47
Можно...
Если нужно..

ЗЫ.
https://owen.ru/forum/attachment.php?attachmentid=67708&d=1683200428

Спасибо за емкий ответ! Буду пробовать ;)

petera
04.05.2023, 15:01
Тут как бы "если пользователь не авторизирован, то при нажатии на кнопку абсолютно ничего не происходит" для любых элементов
Однако можно исправить и это
https://owen.ru/forum/attachment.php?attachmentid=67710&d=1683201497

Серёга Букашкин
12.05.2023, 09:21
Возможно ли назначать для функциональной области имя?

kondor3000
12.05.2023, 13:02
Возможно ли назначать для функциональной области имя?

Нет, зачем ей имя?

Серёга Букашкин
12.05.2023, 16:48
Нет, зачем ей имя?

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

kondor3000
12.05.2023, 19:00
Потому что у меня 10 функциональных областей и каждый раз перебираю наугад какую мне надо редактировать.

У меня 20, расположены справа от экрана группами, никаких проблем.

a86ndrew
13.05.2023, 23:29
Здравствуйте!
Работаю с панелью ОВЕН СП307, и есть у меня несколько вопросов, на которые мне интересно получить ответ:
1. Когда я читал карту регистров Modbus для этой железки то нашел там такой параметр как "Пульсирующий бит 50/500/30/150 мс" в регистрах PSB, и я хотел бы узнать, а что это собственно за параметр, для чего он нужен и в каких случаях он может быть true или false?
2. Интересует вот такой момент: когда мы только подключаем панель, стоит ли галочка "Авторазмещение" в настройках регистров PFW? И если ее выключить то что будет с данными - они переместятся на ячейки, которые в карте регистров Modbus расписаны или на том же месте останутся?

kondor3000
14.05.2023, 11:17
Здравствуйте!
Работаю с панелью ОВЕН СП307, и есть у меня несколько вопросов, на которые мне интересно получить ответ:
1. Когда я читал карту регистров Modbus для этой железки то нашел там такой параметр как "Пульсирующий бит 50/500/30/150 мс" в регистрах PSB, и я хотел бы узнать, а что это собственно за параметр, для чего он нужен и в каких случаях он может быть true или false?
2. Интересует вот такой момент: когда мы только подключаем панель, стоит ли галочка "Авторазмещение" в настройках регистров PFW? И если ее выключить то что будет с данными - они переместятся на ячейки, которые в карте регистров Modbus расписаны или на том же месте останутся?

Проще было вывести эти биты на индикаторы и посмотреть. Они просто мигают с заявленным периодом. PSB4 (500 ms) например, можно использовать как секундные импульсы.
Авторазмещение ставится не само, а при добавлении например Тренда, соответственно записываться тренд будет начиная с PFW4096 и далее в зависимости от глубины (длительности записи).
Всё что от PFW256 до PFW4095 можете спокойно использовать, ничего не сместится. Только не делайте запись часто. Не чаще нескольких раз в день.
Для трендов, желательно делать записи глубиной от недели до нескольких месяцев, для продления ресурса памяти.

a86ndrew
14.05.2023, 12:39
Проще было вывести эти биты на индикаторы и посмотреть. Они просто мигают с заявленным периодом. PSB4 (500 ms) например, можно использовать как секундные импульсы.
Авторазмещение ставится не само, а при добавлении например Тренда, соответственно записываться тренд будет начиная с PFW4096 и далее в зависимости от глубины (длительности записи).
Всё что от PFW256 до PFW4095 можете спокойно использовать, ничего не сместится. Только не делайте запись часто. Не чаще нескольких раз в день.
Для трендов, желательно делать записи глубиной от недели до нескольких месяцев, для продления ресурса памяти.
Хорошо, я вас услышал, единственное что я бы вот хотел уточнить:
Вот у меня есть программа на C#, там я работаю со всеми регистрами, PSB, PSW, c PSB я взаимодействую через ReadCoils, а с PSW и PFW - с ReadHoldingRegisters, и, если я правильно понимаю то регистры PSW и PFW имеют одну общую область, и у меня сейчас такая проблема, что с PSB и PSW все в порядке, а вот с PFW - все грустнее, данные выводятся, но это не то вообще, и вот отсюда вопрос: можно ли каким-то образом посмотреть и понять, что в какой ячейке лежит? Можно ли это сделать через конфигуратор?

kondor3000
14.05.2023, 13:05
Хорошо, я вас услышал, единственное что я бы вот хотел уточнить:
Вот у меня есть программа на C#, там я работаю со всеми регистрами, PSB, PSW, c PSB я взаимодействую через ReadCoils, а с PSW и PFW - с ReadHoldingRegisters, и, если я правильно понимаю то регистры PSW и PFW имеют одну общую область, и у меня сейчас такая проблема, что с PSB и PSW все в порядке, а вот с PFW - все грустнее, данные выводятся, но это не то вообще, и вот отсюда вопрос: можно ли каким-то образом посмотреть и понять, что в какой ячейке лежит? Можно ли это сделать через конфигуратор?

Область одна, а адреса регистров PFW +10 000, то есть адрес PFW256 будет 10256

GIGSatellite
17.05.2023, 10:55
Здравствуйте.
Пишу макрос для СП310
static WORD ArrValueDW[2];
static float RegFloat;
WORD Temp1;

if (GetPSBStatus(318)==1) {//1
if (Reads(HMI_LOCAL_MCH, 0, TYPE_PFW, 300, 2, &ArrValueDW)) {//2
RegFloat=*(float*)(ArrValueDW);//float
*(float*)(PSW+318)=RegFloat;//PSW[318] DWord float
RegFloat=RegFloat*10.0;
Temp1=(WORD)RegFloat;
PSW[320]=Temp1;//PSW[320] Word Dec
if (Write(PLC, 82, MODBUS_RTU_REG_4X, 186, 0, TYPE_WORD, Temp1)) {//Wr adr 0x0080+58=186
ResetPSB(318);
} //Wr
}//2
}//1
При вводе данных в PFW[300] устанавливается бит PSB[318] и панель сразу зависает ( не реагирует на нажатия)...что я делаю не так?

GIGSatellite
17.05.2023, 11:20
не понял про 318....PSB318 это бит уведомления о изменении параметра(может быть любого номера)
а PSW[318] Dword =4 байта(т.е. регистры 318 и 319)

GIGSatellite
17.05.2023, 11:28
это как то совсем не научно ((( а других ошибок в коде нет?

GIGSatellite
17.05.2023, 11:36
у Вас есть пример работы с PFW?

GIGSatellite
17.05.2023, 12:20
команда Reads возвращает True если успешно прочиталось...вроде так

petera
17.05.2023, 13:35
Здравствуйте.
Пишу макрос для СП310
static WORD ArrValueDW[2];
static float RegFloat;
WORD Temp1;

if (GetPSBStatus(318)==1) {//1
if (Reads(HMI_LOCAL_MCH, 0, TYPE_PFW, 300, 2, &ArrValueDW)) {//2
RegFloat=*(float*)(ArrValueDW);//float
*(float*)(PSW+318)=RegFloat;//PSW[318] DWord float
RegFloat=RegFloat*10.0;
Temp1=(WORD)RegFloat;
PSW[320]=Temp1;//PSW[320] Word Dec
if (Write(PLC, 82, MODBUS_RTU_REG_4X, 186, 0, TYPE_WORD, Temp1)) {//Wr adr 0x0080+58=186
ResetPSB(318);
} //Wr
}//2
}//1
При вводе данных в PFW[300] устанавливается бит PSB[318] и панель сразу зависает ( не реагирует на нажатия)...что я делаю не так?

Если РЕАЛЬНЫЙ ПЛК к панели не подключен,то
виснет когда пытается записать в ПЛК здесь
if (Write(PLC, 82, MODBUS_RTU_REG_4X, 186, 0, TYPE_WORD, Temp1)) {//Wr adr 0x0080+58=186

Закомментируй этот Write и посмотри результат

GIGSatellite
17.05.2023, 14:13
if (GetPSBStatus(318)) {//1
ResetPSB(318);
SetPSB(400);
Read(HMI_LOCAL_MCH, 0, TYPE_PFW, 300, 0, TYPE_DWORD, &ArrValueDW);

/* RegFloat= *(float*)(ArrValueDW);//float
//RegFloat=12.3;
*(float*)(PSW+318)=RegFloat;
RegFloat=RegFloat*10.0;
Temp1=(WORD)RegFloat;
PSW[320]=Temp1;*/
// if (Write(PLC, 82, MODBUS_RTU_REG_4X, 186, 0, TYPE_WORD, Temp1)) {//Wr adr 0x0080+58=186
// ResetPSB(318);
// } //Wr
}//1
при вводе значения в PFW[300] виснет

vitalij
17.05.2023, 14:31
if (GetPSBStatus(318)) {//1
ResetPSB(318);
SetPSB(400);
Read(HMI_LOCAL_MCH, 0, TYPE_PFW, 300, 0, TYPE_DWORD, &ArrValueDW);

/* RegFloat= *(float*)(ArrValueDW);//float
//RegFloat=12.3;
*(float*)(PSW+318)=RegFloat;
RegFloat=RegFloat*10.0;
Temp1=(WORD)RegFloat;
PSW[320]=Temp1;*/
// if (Write(PLC, 82, MODBUS_RTU_REG_4X, 186, 0, TYPE_WORD, Temp1)) {//Wr adr 0x0080+58=186
// ResetPSB(318);
// } //Wr
}//1
при вводе значения в PFW[300] виснет

может надо еще добавить в макрос условие читать reads только в том случае, когда в данный текущий момент времени не идет запись в PFW.......

kondor3000
17.05.2023, 14:56
if (GetPSBStatus(318)) {//1
при вводе значения в PFW[300] виснет

Всё тоже самое можно сделать и без макросов, в дисплее ввода ставите бит уведомления, он включит нужный бит при вводе значения.
Если бит надо сбросить, можно добавить Функц. область, по фронту бита, сбросить этот бит.

GIGSatellite
17.05.2023, 15:07
а как определить что идет запись в PFW?

kondor3000
17.05.2023, 15:09
а как определить что идет запись в PFW?

Как вы записываете ? Вводите значение в PFW ? Если вводите, нужный бит включится 67873

GIGSatellite
17.05.2023, 15:17
Всё тоже самое можно сделать и без макросов, в дисплее ввода ставите бит уведомления, он включит нужный бит при вводе значения.
Если бит надо сбросить, можно добавить Функц. область, по фронту бита, сбросить этот бит.

к сожалению мне не просто сбросить бит нужно а поработать с новым значением в PFW

GIGSatellite
17.05.2023, 15:18
Как вы записываете ? Вводите значение в PFW ? Если вводите, нужный бит включится 67873

ну да...и в макросе в цикле смотрю этот бит...если изменился считываю PFW и работаю с ним

kondor3000
17.05.2023, 15:23
к сожалению мне не просто сбросить бит нужно а поработать с новым значением в PFW

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

GIGSatellite
17.05.2023, 15:27
static WORD ArrValueDW[2];
static float RegFloat;
WORD Temp1;

if (GetPSBStatus(318)) {//1
SetPSB(400);//для проверки тоже не загорается
Read(HMI_LOCAL_MCH, 0, TYPE_PFW, 300, 0, TYPE_DWORD, &ArrValueDW);
ResetPSB(318);
RegFloat= *(float*)(ArrValueDW);
*(float*)(PSW+318)=RegFloat;//регистр для проверки
RegFloat=RegFloat*10.0;
Temp1=(WORD)RegFloat;
PSW[320]=Temp1;//регистр для проверки
}//1
пока хотя бы это...потом еще мне по сети эти данные надо переслать
почему то Read не работает...сразу виснет
убираю Read и пишу свое какое то значение в RegFloat -работает

vitalij
17.05.2023, 15:41
static WORD ArrValueDW[2];
static float RegFloat;
WORD Temp1;

if (GetPSBStatus(318)) {//1
SetPSB(400);//для проверки тоже не загорается
Read(HMI_LOCAL_MCH, 0, TYPE_PFW, 300, 0, TYPE_DWORD, &ArrValueDW);
ResetPSB(318);
RegFloat= *(float*)(ArrValueDW);
*(float*)(PSW+318)=RegFloat;//регистр для проверки
RegFloat=RegFloat*10.0;
Temp1=(WORD)RegFloat;
PSW[320]=Temp1;//регистр для проверки
}//1
пока хотя бы это...потом еще мне по сети эти данные надо переслать
почему то Read не работает...сразу виснет
убираю Read и пишу свое какое то значение в RegFloat -работает

Напишите write. В котором с psw записывается в pfw. Далее проверить что запись прошла без ошибки и потом читать pfw через read

GIGSatellite
17.05.2023, 15:46
Напишите write. В котором с psw записывается в pfw. Далее проверить что запись прошла без ошибки и потом читать pfw через read

не понял...я значение в PFW ввожу с панели и после этого его читаю через Read

1exan
17.05.2023, 15:46
Вот здесь

Read(HMI_LOCAL_MCH, 0, TYPE_PFW, 300, 0, TYPE_DWORD, &ArrValueDW);

Уверены, что нужен "&" ?
Ведь ArrValueDW это массив, и его имя уже является указателем (если проводить аналогию с С)

vitalij
17.05.2023, 15:52
не понял...я значение в PFW ввожу с панели и после этого его читаю через Read

Пробуй через psw. И потом применить write. Но макрос вызывац по кнопке а не циклично. А то ресурс энергонезависимой памяти ограничен.

petera
17.05.2023, 15:53
Вот здесь

Read(HMI_LOCAL_MCH, 0, TYPE_PFW, 300, 0, TYPE_DWORD, &ArrValueDW);

Уверены, что нужен "&" ?
Ведь ArrValueDW это массив, и его имя уже является указателем (если проводить аналогию с С)

Зачем там вообще массив не понятно.

static DWORD ValueDW;
static float RegFloat;
WORD Temp1;

if (GetPSBStatus(318)) {//1
SetPSB(400);//для проверки тоже не загорается
Read(HMI_LOCAL_MCH, 0, TYPE_PFW, 300, 0, TYPE_DWORD, &ValueDW);
ResetPSB(318);
RegFloat= *(float*)(ValueDW);
*(float*)(PSW+318)=RegFloat;//регистр для проверки
RegFloat=RegFloat*10.0;
Temp1=(WORD)RegFloat;
PSW[320]=Temp1;//регистр для проверки
}//1

GIGSatellite
17.05.2023, 18:03
Пробуй через psw. И потом применить write. Но макрос вызывац по кнопке а не циклично. А то ресурс энергонезависимой памяти ограничен.

отказался от работы с PFW...буду с PSW а там посмотрим

vitalij
17.05.2023, 20:14
отказался от работы с PFW...буду с PSW а там посмотрим

Пробуй через функциональную кнопку. когда нажата то------------>67876
в макросе функцию записи writes написать из pfw

GIGSatellite
18.05.2023, 11:47
Опять проблемы...использую цифровой ввод в регистрах PSW, по вкл питания панели заполняю регистры нужными значениями и не трогаю их пока не понадобится-работает....через какой то промежуток времени хлоп и значения обнуляются...как с этим бороться

vitalij
18.05.2023, 12:01
Опять проблемы...использую цифровой ввод в регистрах PSW, по вкл питания панели заполняю регистры нужными значениями и не трогаю их пока не понадобится-работает....через какой то промежуток времени хлоп и значения обнуляются...как с этим бороться

очень странное поведение у панели. кратковременое пропадание питания может так влиять ?

GIGSatellite
18.05.2023, 12:04
если бы питание пропадало то по вкл питания опять бы регистры заполнились нужными значениями(у меня макрос на вкл панели) а тут просто обнулились и все
как будто я обязан периодически прописывать заново значения
и самое плохое что может бит уведомления о изменении встать если я тоже самое значение пропишу в регистр

vitalij
18.05.2023, 12:08
если бы питание пропадало то по вкл питания опять бы регистры заполнились нужными значениями(у меня макрос на вкл панели) а тут просто обнулились и все
как будто я обязан периодически прописывать заново значения

очень странно. у меня такого не было

GIGSatellite
18.05.2023, 12:13
запускаю симулятор в регистрах высвечивается 0...проходит несколько секунд и в регистрах появляются какие то значения левые (в регистры при этом никто не пишет)

vitalij
18.05.2023, 12:20
запускаю симулятор в регистрах высвечивается 0...проходит несколько секунд и в регистрах появляются какие то значения левые (в регистры при этом никто не пишет)

запускаю симулятор панели и все идеально 0 остается нулем 67880

kondor3000
18.05.2023, 15:09
запускаю симулятор в регистрах высвечивается 0...проходит несколько секунд и в регистрах появляются какие то значения левые (в регистры при этом никто не пишет)

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

GIGSatellite
18.05.2023, 15:46
с обнулением регистров разобрался ....у меня вкл силовая нагрузка и после этого в панели происходит какой то сбой и те регистры которые не в опросе обнуляются...пришлось подтверждать значения этих регистров периодически...в симуляторе проблема почему то пропала

посмотрел старую версию...если стоит цифровой ввод в который пишется из макроса, то в симуляторе через небольшое время в этом цифровом вводе появляются левые значения! В последующих версиях заменил цифровой ввод на цифровой дисплей.

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

kondor3000
18.05.2023, 16:04
с обнулением регистров разобрался ....у меня вкл силовая нагрузка и после этого в панели происходит какой то сбой и те регистры которые не в опросе обнуляются...пришлось подтверждать значения этих регистров периодически...в симуляторе проблема почему то пропала

посмотрел старую версию...если стоит цифровой ввод в который пишется из макроса, то в симуляторе через небольшое время в этом цифровом вводе появляются левые значения! В последующих версиях заменил цифровой ввод на цифровой дисплей.

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

Тогда вам надо экранировать и заземлять измерительные и сигнальные провода. Поставить 120 Ом по RS485 на концах линии, фильтры по питанию и разнести силовые и измерительные провода.
Для индуктивных нагрузок поставить RC цепочки.

vitalij
22.05.2023, 08:17
Здравствуйте в глобальном макросе пишу функцию

WORD ARRAY_DATA[2];
WORD Sum(ARRAY_DATA)
{
WORD res=0;
res=ARRAY_DATA[0]+ARRAY_DATA[1];
return res;
}

но компиляция с ошибками. в чем причина?

1exan
22.05.2023, 08:28
Здравствуйте в глобальном макросе пишу функцию

WORD ARRAY_DATA[2];
WORD Sum(ARRAY_DATA)
{
WORD res=0;
res=ARRAY_DATA[0]+ARRAY_DATA[1];
return res;
}

но компиляция с ошибками. в чем причина?
Может так:

WORD ARRAY_DATA[2];
WORD Sum(WORD ARRAY_DATA[2])
{
WORD res;
res=ARRAY_DATA[0]+ARRAY_DATA[1];
return res;
}

vitalij
22.05.2023, 08:32
Может так:

WORD ARRAY_DATA[2];
WORD Sum(WORD ARRAY_DATA[2])
{
WORD res;
res=ARRAY_DATA[0]+ARRAY_DATA[1];
return res;
}

спасибо. теперь ошибок нет

Назаров Александр
22.05.2023, 18:45
Всем добрый вечер. Поделитесь что не надо изменять (или наоборот) в начальных настройках элементов отображения/управления для более быстрой работе панели. Например, замечено, что применение косвенной адресации приводит к заторможенному отклику панели на произведенные действия. Проект: по кнопке на панели включается выход ПЛК и через другой регистр попадает обратно на панель в качестве индикатора. При смене косвенной адресации на прямую панель работает более менее адекватно. Скорость пробовал и 9600 и 115200, разницы никакой. Тайм аут 20мс.
Шрифт все равно какой? Кнопки рисованные. Может лучше из Галереи?

kondor3000
22.05.2023, 21:10
Всем добрый вечер. Поделитесь что не надо изменять (или наоборот) в начальных настройках элементов отображения/управления для более быстрой работе панели. Например, замечено, что применение косвенной адресации приводит к заторможенному отклику панели на произведенные действия. Проект: по кнопке на панели включается выход ПЛК и через другой регистр попадает обратно на панель в качестве индикатора. При смене косвенной адресации на прямую панель работает более менее адекватно. Скорость пробовал и 9600 и 115200, разницы никакой. Тайм аут 20мс.
Шрифт все равно какой? Кнопки рисованные. Может лучше из Галереи?
Косвенную адресацию лучше не использовать. Тайм аут можно и 10 ms.
Для ускорения обмена, надо использовать групповой запрос, регистры компоновать по типу, Маски битов и целочисленные без пропусков, потом все REAL.
В панели мастере не должно быть неиспользованных регистров ( в том числе в таблицах и трендах), не подключённых слейвов. Шрифт и кнопки по барабану.
В ПЛК мастере групповой запрос можно сделать так https://owen.ru/forum/showthread.php?t=22915&page=40&p=244022&viewfull=1#post244022

Назаров Александр
22.05.2023, 22:41
Косвенную адресацию лучше не использовать. Тайм аут можно и 10 ms.
Для ускорения обмена, надо использовать групповой запрос, регистры компоновать по типу, Маски битов и целочисленные без пропусков, потом все REAL.
В панели мастере не должно быть неиспользованных регистров ( в том числе в таблицах и трендах), не подключённых слейвов. Шрифт и кнопки по барабану.
В ПЛК мастере групповой запрос можно сделать так https://owen.ru/forum/showthread.php?t=22915&page=40&p=244022&viewfull=1#post244022

У меня панель Master и вроде влиять на групповые запросы можно только косвенно - кучковать соседние регистры на одном экране, остальное делает ПО панели. Насколько хорошо не могу судить.
А чтением строки частенько пользуюсь, например две строки для чтения всего MВ110-8A.

vitalij
25.05.2023, 06:19
Здравствуйте. как лучше для производительности панели СП3XX создавать одну функциональную область с несколькими методами в ней или несколько функциональных областей с одним методом в каждой?67975

kondor3000
25.05.2023, 08:04
Здравствуйте. как лучше для производительности панели СП3XX создавать одну функциональную область с несколькими методами в ней или несколько функциональных областей с одним методом в каждой?

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

Серёга Букашкин
25.05.2023, 11:20
Очень много ФО тоже плохо, тупо мешают. Приходится их убирать за пределы экрана.

Неудачно сделано с ФО. Удобнее было бы назначать их аналогично макросам, в меню.

Sh.M.
25.05.2023, 18:54
Здравствуйте. Вопрос по отключению опроса панелью некоторых слэйвов регистром PFW130.
имеем панель СП310-мастер и несколько слэйвов.
в проекте есть экран1(стартовый) и экран2.
все цифровые дисплеи опрашиваемых устройств расположены на экране2.
допустим у одного из слэйвов снято питание, нужно чтобы панель его не опрашивала.
если на экране1 отключить опрос этого устройства, то при переходе на экран2 не опрашиваются все устройства.
если отключать опрос на экране2, тогда все работает как надо, но при этом на стартовом экране1 до отключения опроса панель заметно тормозит, включается бит ошибки PSB50.
непонятно почему находясь на экране1, появляется ошибка связи если опрос всех слэйвов на экране2 ??
как можно ли решить эту проблему?

kondor3000
25.05.2023, 19:02
Здравствуйте. Вопрос по отключению опроса панелью некоторых слэйвов регистром PFW130.
имеем панель СП310-мастер и несколько слэйвов.
в проекте есть экран1(стартовый) и экран2.
все цифровые дисплеи опрашиваемых устройств расположены на экране2.
допустим у одного из слэйвов снято питание, нужно чтобы панель его не опрашивала.
если на экране1 отключить опрос этого устройства, то при переходе на экран2 не опрашиваются все устройства.
если отключать опрос на экране2, тогда все работает как надо, но при этом на стартовом экране1 до отключения опроса панель заметно тормозит, включается бит ошибки PSB50.
непонятно почему находясь на экране1, появляется ошибка связи если опрос всех слэйвов на экране2 ??
как можно ли решить эту проблему?

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

Sh.M.
25.05.2023, 19:45
Попробуйте создать ФО, при переходе на 2 экран включать биты отключения опроса, при переходе на экран 1 отключать.

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

kondor3000
25.05.2023, 20:52
если на экране 2 отключить опрос - все работает как нужно, дальше можно не включать и переходить на любой экран.
но после загрузки проекта на стартовом экране 1 , до перехода на экран 2, панель заметно тормозит

А создать ФО, при включении панели перейти на экран 2, включить бит и перейти на экран 1, религия не позволяет? )))

Sh.M.
25.05.2023, 21:56
А создать ФО, при включении панели перейти на экран 2, включить бит и перейти на экран 1, религия не позволяет? )))

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

kondor3000
25.05.2023, 22:17
тогда сделать стартовый экран, на котором отключать при необходимости опрос, затем переходить на экран 1.

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

Sh.M.
26.05.2023, 09:04
Ну или так,
мне другое не понятно, панель должна опрашивать блок ( так вы пишите программу), отключение опроса слейва это аварийная ситуация, то есть программа уже работает не правильно. Не получает данные с блока.
Нужно заменить блок или поверить и поставить назад. Вы же хотите сделать аварийную ситуацию штатной. Зачем вам это?

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

kondor3000
26.05.2023, 09:55
это не аварийная ситуация. На панель выводится несколько технологических линий, оператор до запуска на стартовом экране выбирает линии, которые не работают.
на нерабочей линии могут проводиться ремонты, отключается питание и нужно отключать опрос.
если опрос отключать на стартовом экране, то при переходе на рабочий экран не опрашиваются все слэйвы.
чтобы работало нужно на стартовом экране расположить дисплеи опрашиваемых устройств, тогда все работает.
я сделал их минимального размера, чтоб не загромождать стартовый экран, но это вроде не совсем правильно.
т.е. для отключения опроса слэйва, нужно чтобы на экране находился дисплей этого слэйва??

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

Sh.M.
26.05.2023, 10:05
Почему не правильно, вы же сами убедились, что нужен дисплей опрашиваемого слейва,
если включить галку бита видимости, то дисплеи на 1 экране вообще будут невидимы или появляться при включении бита.

насчет видимости хороший совет. спасибо, обязательно попробую

AndeyL
31.05.2023, 13:31
Здравствуйте!
Необходимо выводить сообщение оператору при обрыве связи с ПЛК200 и в связи с этим существует ли возможность опроса переменной у панели СП310-Р (например если нет в течении 3-5 сек. изменения тэга)?
Сейчас временно сделал переменную в которой постоянно при разных режимах работает счетчик секунд работы(простоя) оборудования - для отображения того что есть обмен, но это не информативно.

kondor3000
31.05.2023, 14:02
Здравствуйте!
Необходимо выводить сообщение оператору при обрыве связи с ПЛК200 и в связи с этим существует ли возможность опроса переменной у панели СП310-Р (например если нет в течении 3-5 сек. изменения тэга)?
Сейчас временно сделал переменную в которой постоянно при разных режимах работает счетчик секунд работы(простоя) оборудования - для отображения того что есть обмен, но это не информативно.

Делается просто, в панели ФО (функц. область), по биту PSB4, формирует секундные импульсы (включает бит связи) и отправляет в ПЛК, который его сбрасывает,
если бит не сброшен, например 5 сек, вторая ФО (включение по биту, цикл 5 сек.) в панели, выводит окно "Нет связи".
Использовть можно любой свободный бит маски или свободный регистр (маску бит).

AndeyL
01.06.2023, 13:51
Спасибо коллега за ответ!
Вопрос а чем связано то что я не могу получить битовые переменные, переменные Word я могу получить на стороне панели.
Прилагаю снимки. Пробовал использовать и зону Coils и Зону Holding Registers. Но индикаторы не могу настроить.6810268103

kondor3000
01.06.2023, 14:04
Спасибо коллега за ответ!
Вопрос а чем связано то что я не могу получить битовые переменные, переменные Word я могу получить на стороне панели.
Прилагаю снимки. Пробовал использовать и зону Coils и Зону Holding Registers. Но индикаторы не могу настроить.6810268103

Если вы передаёте ( читаете) регистр с адресом 0 из ПЛК, то и переменную задавайте для регистра WORD ( битовой маски), например Mask,
а упаковать, распаковать в неё биты в программе, можно через точку, например так Mask.0, Mask.1, Mask.2 и т. д.
в нанели уже будете читать, записывать 4х0 бит 00, 4х0 бит 01, 4х0 бит 02 и т. д.

А сбросить бит в ПЛК можно например так 68107 время 300 ms можно и уменьшить

AndeyL
01.06.2023, 15:18
Сделал как Вы рекомендовали, не помогло.681086810968110

kondor3000
01.06.2023, 15:51
Сделал как Вы рекомендовали, не помогло.681086810968110

Вы что то пропустили, например у вас только 1 ФО, на скине видна. Выкладывайте проекты
Бит должен взводиться каждую секунду в панели, отправляться в ПЛК, а в ПЛК сбрасываться.

kondor3000
01.06.2023, 17:59
Сделал как Вы рекомендовали, не помогло.

Как и все новички, вы сначала сделали программу, а потом начинаете разбираться с битами.
А надо было разбираться на чистом проекте.
Короче если сейчас включить бит 4х0 бит 12 на панели, то он попадает как и должен на 0 регистр, бит 12 Input регистры в ПЛК ( регистры временного хранения).
Он попал точно на ваш бит Application.PLC_PRG.Watchdog_HMI. Смотри скрин 68119
А чтобы сбросить бит в панели, в регистре 0 бит 12 надо его записать во Входные регистры адрес 0 бит 12. Скрин 68113

В ФО панели тоже неправильно, надо не Инвертировать бит, а включить.
Советую сделать чистый проект и разобраться с нулевым регистром ( и остальными) и битами в нём.
Так же 0 регистр бит 12, можно читать 1х12, записать выбрав в панели бит 0х12, но лучше работать с регистрами и маской бит.
Все вышеописанное относится и к регистрам, в регистры Временного хранения получаете данные из панели, во Входные регистры записываете в панель
Панели сейчас нет, проверял на ПЛК150 мастер, с панелью возможно будет не совсем так, надо тестировать.

vitalij
02.06.2023, 06:32
Здравствуйте. переменные объявленные в глобальном макросе автоматически становятся статическими? то есть мне не надо перед ними прописывать слово static?
то есть глобальная переменная которая используется в пользовательском макросе сохраняет свое значение между вызовами данного пользовательского макроса?

Валенок
02.06.2023, 08:20
да
нет
знаете что есть слово static, но не знаете что это?

vitalij
02.06.2023, 08:33
да
нет
знаете что есть слово static, но не знаете что это?

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

AndeyL
02.06.2023, 10:23
Как и все новички, вы сначала сделали программу, а потом начинаете разбираться с битами.
А надо было разбираться на чистом проекте.
Короче если сейчас включить бит 4х0 бит 12 на панели, то он попадает как и должен на 0 регистр, бит 12 Input регистры в ПЛК ( регистры временного хранения).
Он попал точно на ваш бит Application.PLC_PRG.Watchdog_HMI. Смотри скрин 68119
А чтобы сбросить бит в панели, в регистре 0 бит 12 надо его записать во Входные регистры адрес 0 бит 12. Скрин 68113

В ФО панели тоже неправильно, надо не Инвертировать бит, а включить.
Советую сделать чистый проект и разобраться с нулевым регистром ( и остальными) и битами в нём.
Так же 0 регистр бит 12, можно читать 1х12, записать выбрав в панели бит 0х12, но лучше работать с регистрами и маской бит.
Все вышеописанное относится и к регистрам, в регистры Временного хранения получаете данные из панели, во Входные регистры записываете в панель
Панели сейчас нет, проверял на ПЛК150 мастер, с панелью возможно будет не совсем так, надо тестировать.

Только методом накидал кучу кнопок и индикаторов - выяснил что у меня идет замена байтов внутри слова....:confused:

68124

kondor3000
02.06.2023, 10:58
Только методом накидал кучу кнопок и индикаторов - выяснил что у меня идет замена байтов внутри слова....:confused:

68124

Это нормально, у меня при связи с ПЛК150 и виртуального ПЛК 3.5, тоже переставлены байты, если читать (записывать) биты 1х и 0х. Можно просто поставить переменные в соответствие.
Поэтому и писал попробуйте 4х, там должно быть правильно, то есть 4х0 бит 0 соответстует 0 регистру 0 биту ( Mask.0).

vitalij
20.06.2023, 08:23
Здравствуйте сегодня 20 число июня а в регистре psw32 панели сп310 значение 32. как это понимать?

kondor3000
20.06.2023, 08:26
Здравствуйте сегодня 20 число июня а в регистре psw32 панели сп310 значение 32. как это понимать?

В регистрах панели, числа Даты, Времени в HEX ( а если точнее то BCD). В панели ставите HEX для корректного отображения.
Если передаёте в ПЛК, конвертируйте функцией BCD_TO_INT из биб-ки Util

vitalij
20.06.2023, 09:06
В регистрах панели, числа Даты, Времени в HEX ( а если точнее то BCD). В панели ставите HEX для корректного отображения.
Если передаёте в ПЛК, конвертируйте функцией BCD_TO_INT из биб-ки Util

спасибо, помогло

Traveller
22.06.2023, 10:49
Здравствуйте, коллеги!

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

Ну и для анализа две версии программы, рабочая V1.2 и слегка изменённая V1.2.1 прилагаются:
68426
68427

Александр Ч.
23.06.2023, 10:06
Здравствуйте. Подскажите пожалуйста - есть возможность создать образ панели, т.е. на второй панели получить те же данные, что на первой и максимально просто сформировать обмен с основной? Спасибо

kondor3000
23.06.2023, 11:04
Здравствуйте. Подскажите пожалуйста - есть возможность создать образ панели, т.е. на второй панели получить те же данные, что на первой и максимально просто сформировать обмен с основной? Спасибо

Тут описано как подключить несколько панелей мастер ( с одинаковыми проектами) к одному (нескольким) слейвам. https://owen.ru/forum/showthread.php?t=22915&page=226&p=365952&viewfull=1#post365952

EFrol
23.06.2023, 11:22
В инструкции не нашел, поэтому быстренько спрошу здесь.
Сколько СП3хх-Б/Р могут подключать к себе Modbus TCP клиентов?

kondor3000
23.06.2023, 11:34
В инструкции не нашел, поэтому быстренько спрошу здесь.
Сколько СП3хх-Б/Р могут подключать к себе Modbus TCP клиентов?

Точно не проверял, но 6-7 TCP клиентов вроде можно. Но только СП3хх-Р,
СП3хх-Б без ТСР

EFrol
23.06.2023, 11:56
Точно не проверял, но 6-7 TCP клиентов вроде можно. Но только СП3хх-Р,
СП3хх-Б без ТСР

Спасибо. Как раз столько и надо.

imaex
23.06.2023, 15:26
В инструкции не нашел, поэтому быстренько спрошу здесь.
Сколько СП3хх-Б/Р могут подключать к себе Modbus TCP клиентов?

Я в прошлом году тот же вопрос задавал. Сказали, что можно ориентироваться на 10.
https://owen.ru/forum/showthread.php?t=22915&page=262&p=396234&viewfull=1#post396234

EFrol
27.06.2023, 17:48
Проконсультируйте, пожалуйста, вот по какому вопросу:
В настройках ModbusTCP Slave-устройства имеется возможность включить запись во внутренние регистры статус подключения, а именно просматривать количество отправленных пакетов и т.д.
Нигде более, кроме как в единственной ФО идет обращение к этому устройству путем копирования группы регистров во внутреннюю память.
Выполнение ФО установлено на каждые 60 сек (1 минуту).
Вопрос: Как быстро должен инкрементироваться счетчик отправленных пакетов?
Ожидалось +1 в 1 минуту. Но строчит как из полемета. Как-то замедлить скорость передачи пакетов удалось, только параметром "время ожидания", который в инструкции не рекомендуется трогать.
Хотелось бы получить разъяснения по этому поводу.

Замечено также, что обновление данных в копируемых регистрах происходит как раз через каждую 1 минуту.
Предполагаю, что постоянно передаются служебные пакеты TCP-протокола, типа KeepAlive (Я на связи). Верно?

petera
28.06.2023, 12:24
Проконсультируйте, пожалуйста, вот по какому вопросу:
В настройках ModbusTCP Slave-устройства имеется возможность включить запись во внутренние регистры статус подключения, а именно просматривать количество отправленных пакетов и т.д.
Нигде более, кроме как в единственной ФО идет обращение к этому устройству путем копирования группы регистров во внутреннюю память.
Выполнение ФО установлено на каждые 60 сек (1 минуту).
Вопрос: Как быстро должен инкрементироваться счетчик отправленных пакетов?
Ожидалось +1 в 1 минуту. Но строчит как из полемета. Как-то замедлить скорость передачи пакетов удалось, только параметром "время ожидания", который в инструкции не рекомендуется трогать.
Хотелось бы получить разъяснения по этому поводу.

Замечено также, что обновление данных в копируемых регистрах происходит как раз через каждую 1 минуту.
Предполагаю, что постоянно передаются служебные пакеты TCP-протокола, типа KeepAlive (Я на связи). Верно?

Никаких служебных пакетов не передается.
Тут дело вообще не ModbusTCP, тоже самое будет и для Modbus по RS485.
Предположим, что у Вас ФО делает простейшую функцию - копирует регистр из внешнего слейва во внутренний регистр или регистр другого слейва.
Не зависимо от условия выполнения заданного в настройках ФО, например по фронту бита, или при переходе на текущий экран, или при загрузке проекта, или при вкл. питания, или по времени и т.д. ЧТЕНИЕ РЕГИСТРА из слейва выполняется ВСЕГДА, с максимально возможной частотой - "время ожидания". А вот уже результать функции, в нашем случае - запись полученных данных, выполняется однократно и только по условию , например по фронту бита, или при переходе на текущий экран, или при загрузке проекта, или при вкл. питания, или по времени и т.д.

petera
28.06.2023, 12:43
В дополнение к #2864
Если Вам действительно нужно обеспечить чтение только каждые 60 сек (1 минуту), то
- либо используйте макрос на Си
- либо сделайте так

1. Создайте окно с ФО, которая копирует регистр из слейва в другой регистр, например внутренний регистр
68489

ФО две функции 1- копировать регистры, 2 - закрыть это окно.
68490

2. На экране поместите ФО с условием - каждые 60 сек (1 минуту)
68491

ФО содержит всего одну функцию - вызов окна, созданного в п.1
68492
Режим открытия окна - скрытое, тогда окно будет невидимым.

EFrol
28.06.2023, 12:57
ЧТЕНИЕ РЕГИСТРА из слейва выполняется ВСЕГДА, с максимально возможной частотой - "время ожидания"
Ого!! Эта какая нагрузка на сеть?! Пойду переписывать под макрос на Си. Низкий Вам поклон! Вы просто глаза открыли на многие проблемы.

K3114
01.07.2023, 06:58
Есть вопрос, конфигуратор СП300 это уже мертвый проект или планируется его поддержание?

Работать в нем совершенно невозможно, начиная от неконтролируемого самопроизвольного выбора цвета прозрачности вставляемых элементов, заканчивая полным отсутствием гибкости формирования таблиц простых и таблиц аварий. Отсутствует карта занятых регистров, никакого ассистента ввода макросов, дерево элементов отсутствует, дерево окон просто деревянное.
Ну и непосредственно банальные глюки самой панели как невозможность включения/отключения ее звука без перезапуска)))

faza380
01.07.2023, 13:58
Доброго времени суток всем. Помогите решить элементарную задачку... Имеется "Переключатель с индикацией" который по нажатию записывает в регистр регулятора данные (1 - пуск), регулятор при определённых событиях может генерировать уровень выходного сигнала по аварийной температуре - 100 (второй релейный выход), как сделать чтоб при появлении этого сигнала по аварийной температуре произошло отключение "Переключатель с индикацией"? Что то типа аварийного стопа по перегреву?

EFrol
01.07.2023, 15:00
В первой ФО (непрерывно) мат.функция PSW256 = 100 - 4x9
Во второй ФО (фронт бита PSW256.15) выкл. бит 4x137.0
Т.е. любое отрицательное число имеет 1 в старшем бите, соответственно если 4x9 > 100 выставит бит PSW256.15, который сбросит 4x137.0
68563

faza380
02.07.2023, 02:01
Спасибо, всё получилось!

Антон_
04.07.2023, 12:59
Здравствуйте!

Есть: котловые регуляторы КТР-121.220.01.10, каскадный КТР-121.220.03.41, котроллер отопления КТР-121.220.03.20; ПИД регуляторы ТРМ-212; панель оператора СП310-Р; частотники с Modbus RTU, преобразователь МКОН-230 и АРМ на базе MasterSCADA. На панели и АРМе нужно реализовать "приблизительно" одинаковые задачи по отображению и управлению.

Связь планируется организовать так:
- сеть №1 (RS-485, Modbus RTU): СП310-Р - Modbus Master, КТР-121 - Modbus Slave;
- сеть №2 (RS-485, Modbus RTU): СП310-Р - Modbus Master, ТРМ-212 - Modbus Slave;
- сеть №3 (RS-485, Modbus RTU): МКОН-230 - Modbus Master, частотники - Modbus Slave;
- сеть №4 (Ethernet, Modbus TCP): с обменом
-- СП310-Р - Modbus Master, МКОН-230 - Modbus Slave;
-- MasterSCADA - Modbus Master, СП310-Р - Modbus Slave;

Вопросы:
1) может ли панель СП310-Р являться одновременно Modbus Master и Modbus Slave в Modbus TCP?
2) возможно ли одновременно в сети (RS-485, Modbus RTU) в роли Modbus Slave КТР-121 и ТРМ-212? Есть ли "подводные камни"? Понятно что производитель один и тот же и протокольная часть должна быть одинаковая. Может кто использовал одновременно КТР-121 и ТРМ-212 в одной сети.
3) аналогично возможно ли одновременно в сети (RS-485, Modbus RTU) в роли Modbus Slave с ТРМ-212 и частотники с Modbus RTU (например фирмы Данфос)?

EFrol
04.07.2023, 13:54
Да! Почему нет?! Все вполне реализуемо.

faza380
05.07.2023, 01:05
Доброго времени суток. Помогите прояснить ситуацию. Панель СП310 (мастер), делаю управление и контроль 6-ти терморегуляторов ТРМ151. Все это делаю сейчас с одним регулятором - работает всё хорошо. Но как только я добавляю кнопки управления и экраны для других ТРМ151 (которые в данный момент не подключены, но в них теже регистры но другие адреса ) - всё начинает жутко очень тормозить. Не получится ли так что при сборке в железе всего проекта, при его работе и отказе (или отключении) одного из регуляторов ТРМ151 - вся панель и всё управление и визуализация установкой начнет очень сильно тормозить? есть какое то решение как избежать такую возможную проблему?

1exan
05.07.2023, 04:55
Доброго времени суток. Помогите прояснить ситуацию. Панель СП310 (мастер), делаю управление и контроль 6-ти терморегуляторов ТРМ151. Все это делаю сейчас с одним регулятором - работает всё хорошо. Но как только я добавляю кнопки управления и экраны для других ТРМ151 (которые в данный момент не подключены, но в них теже регистры но другие адреса ) - всё начинает жутко очень тормозить. Не получится ли так что при сборке в железе всего проекта, при его работе и отказе (или отключении) одного из регуляторов ТРМ151 - вся панель и всё управление и визуализация установкой начнет очень сильно тормозить? есть какое то решение как избежать такую возможную проблему?

Да, при потере связи со слейвами будут тормоза. И вроде есть возможность отключить обмен со слейвом, petera описывал такое, поищите

kondor3000
05.07.2023, 08:08
Доброго времени суток. Помогите прояснить ситуацию. Панель СП310 (мастер), делаю управление и контроль 6-ти терморегуляторов ТРМ151. Все это делаю сейчас с одним регулятором - работает всё хорошо. Но как только я добавляю кнопки управления и экраны для других ТРМ151 (которые в данный момент не подключены, но в них теже регистры но другие адреса ) - всё начинает жутко очень тормозить. Не получится ли так что при сборке в железе всего проекта, при его работе и отказе (или отключении) одного из регуляторов ТРМ151 - вся панель и всё управление и визуализация установкой начнет очень сильно тормозить? есть какое то решение как избежать такую возможную проблему?

Ссылка на пост Petera, описание, как исключить неиспользуемые в работе слейвы. Включаете нужный бит, соответствующий адресу неиспользуемого слейва ( в данный момент), опрос отключается.
https://owen.ru/forum/showthread.php?t=35196&page=2#13

faza380
05.07.2023, 23:13
Да, спасибо, получилось разобраться...нашел видео вот это еще https://www.youtube.com/watch?v=qlcALFL4tpA, прочитал родной мануал....ну и в принципе все вышло. Думал что я что то не то делаю и что такие "тормоза" при отсутствии устройств в сети которые опрашивает и управляет панель...

iv.kmz
06.07.2023, 17:02
Здравствуйте!

Планируется ли выпустить обновление Конфигуратора СП300? Или м.б. существует версия более новая, чем V2.D3k-5?

senkos
10.07.2023, 22:20
Здравствуйте! Подскажите пожалуйста как в панели работать с рецептами и с числами с плавающей точкой?
Например уставки должны быть 8.3 и 7.1 как это задать в рецептах? Так же потом не получается считать уставку в "Цифровой дисплей" с типом float. Видео и справка ничего подобного не разъясняет.
Прилагаю простенький пример, посмотрите пожалуйста что я не правильно делаю?

EFrol
11.07.2023, 07:27
Используйте цифровой ввод для PFW регистра:
68757

Обратите внимание на Значение тип DWord (будут использованы 400 и 401 под 1 float):
68758

68759

Таблицы с рецептами для float не создавайте, используйте цифровой ввод (ну или копирование PSW <-> PFW тип DWord)

Можно еще воспользоваться сайтом:
68760
а потом в HEX формате внести в рецепты, начиная с последних 2 байт
68761
это если Вы хотите чтобы значения по-умолчанию все таки были в загрузочном проекте.

senkos
11.07.2023, 10:30
Таблицы с рецептами для float не создавайте, используйте цифровой ввод (ну или копирование PSW <-> PFW тип DWord)

Можно еще воспользоваться сайтом:
68760
а потом в HEX формате внести в рецепты, начиная с последних 2 байт
68761
это если Вы хотите чтобы значения по-умолчанию все таки были в загрузочном проекте.

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

kondor3000
11.07.2023, 10:37
Спасибо огромное? Вчера перепробовал кучу комбинаций и по справке и просто наугад )) ни в какую не давался сей каменный цветок. Теперь все встало на свои места. Причина теперь ясна - нужно float в рецептах задавать с помощью конвертора по вашему скрину, а я задавал просто десятичные значения в оба регистра и поэтому не считывало из рецепта.

Можно сделать проще, вывести нужные регистры на дисплеи WORD, задавать и записывать в рецепты, записать что в регистрах и 68766
скопировать потом в задачу рецептов и не обязательно в HEX, сам делал в DEC (можно даже в эмуляции проделать)

senkos
11.07.2023, 21:33
Можно сделать проще, вывести нужные регистры на дисплеи WORD, задавать и записывать в рецепты, записать что в регистрах и 68766
скопировать потом в задачу рецептов и не обязательно в HEX, сам делал в DEC (можно даже в эмуляции проделать)

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

Но сейчас всплывает такой момент, я вычитал на форуме и в документации, что переменные, объявленные в конфигурации ПЛК в подэлементе «ModBus (slave)», являются сохраняемыми RETAIN переменными. И запись в эти переменные ограничена 70тыс циклов. В итоге если я буду уставки передавать на ПЛК с панели каждую секунду то за сутки ПЛК умрет??? На самом ли деле это так или я что то путаю, по проекту в такие переменные на ПЛК будут писаться данные с датчиков?

kondor3000
11.07.2023, 22:11
Но сейчас всплывает такой момент, я вычитал на форуме и в документации, что переменные, объявленные в конфигурации ПЛК в подэлементе «ModBus (slave)», являются сохраняемыми RETAIN переменными. И запись в эти переменные ограничена 70тыс циклов. В итоге если я буду уставки передавать на ПЛК с панели каждую секунду то за сутки ПЛК умрет??? На самом ли деле это так или я что то путаю, по проекту в такие переменные на ПЛК будут писаться данные с датчиков?

Вы все перепутали, нельзя часто записывать в одни и те же регистры PFW панели. Были товарищи, которые хотели записывать в одни и те же регистры PFW раз в секунду.
Если записывать например Тренд, то лучше делать глубину записи от недели до нескольких месяцев. А читать их из PFW и отправлять на ПЛК можете сколько угодно.
Работа идёт в оперативной памяти.
В ПЛК Retain переменные и в том числе в слейве, записываются только при отключении ПЛК от питания, это бывает не так часто, так что живите спокойно)))

Flauwear
17.08.2023, 15:53
Добрый день!
Панель оператора СП307-Р работает как мастер по RS485 (порт PLC) - опрашивает slave устройство.
Можно ли подключиться к данной панели как к slave-устройству по RS485 (порт Download), чтобы передать данные полученные от slave'a (порт PLC)?
Требуются ли какие либо настройки, кроме того что указать Download порт - Modbus RTU slave?

kondor3000
17.08.2023, 16:58
Добрый день!
Панель оператора СП307-Р работает как мастер по RS485 (порт PLC) - опрашивает slave устройство.
Можно ли подключиться к данной панели как к slave-устройству по RS485 (порт Download) чтобы передать данные полученные от slave'a (порт PLC)?
Требуются ли какие либо настройки, кроме того что указать Download порт - Modbus RTU slave?
Если по порту PLC панель Мастер, регистры например 4х0, 4х1, вам надо копировать нужные регистры во внутреннюю память,
например PSW300, PSW301 (любой, начиная с PSW256 ), с помощью ФО ( функц. области), которые и будут доступны по порту Download панель слейв.

Flauwear
17.08.2023, 20:31
Если по порту PLC панель Мастер, регистры например 4х0, 4х1, вам надо копировать нужные регистры во внутреннюю память,
например PSW300, PSW301 (любой, начиная с PSW256 ), с помощью ФО ( функц. области), которые и будут доступны по порту Download панель слейв.

Спасибо.
Если я правильно понял, то гальванической развязки по RS485 у панели нет?

kondor3000
17.08.2023, 21:28
Спасибо.
Если я правильно понял, то гальванической развязки по RS485 у панели нет?

Думаю нет, в руководстве вообще не указано, кроме того, что все подключения надо производить при отключенном питании.

Сергей0308
18.08.2023, 00:03
Думаю нет, в руководстве вообще не указано, кроме того, что все подключения надо производить при отключенном питании.

Как не написано, вроде как написано или мне мерещится:

69660

И в РЭ тоже самое на стр.7.

Flauwear
18.08.2023, 09:20
Если требуется гальваническая изоляция, может быть есть какое-нибудь стандартное решение?

kondor3000
18.08.2023, 12:07
Если требуется гальваническая изоляция, может быть есть какое-нибудь стандартное решение?

Например из готовых решений, АС5 повторитель интерфейса RS-485 c гальванической изоляцией https://owen.ru/product/owen_as5

Или взять выход RS232 с порта Download через АС3-М преобразователь интерфейсов RS-232 <-> RS-485 с гальванической изоляцией
АС3-М поставить рядом с панелью, коротким шнурком RS232, а дальше по RS-485 куда угодно.
https://owen.ru/product/as3_m

Flauwear
18.08.2023, 13:27
Например из готовых решений, АС5 повторитель интерфейса RS-485 c гальванической изоляцией https://owen.ru/product/owen_as5

Или взять выход RS232 с порта Download через АС3-М преобразователь интерфейсов RS-232 <-> RS-485 с гальванической изоляцией
АС3-М поставить рядом с панелью, коротким шнурком RS232, а дальше по RS-485 куда угодно.
https://owen.ru/product/as3_m

Спасибо.
Думаю пойдем по варианту с АС5.

AJR
19.08.2023, 13:55
Добрый день. Сколько всего экранов можно настроить в сп300, без ущерба производительности?

kondor3000
19.08.2023, 16:26
Добрый день. Сколько всего экранов можно настроить в сп300, без ущерба производительности?

Ущерб производительности наносит не количество экранов, а правильность всех адресов и корректность программы. Сколько можно не знаю, но 20 экранов легко.

AJR
20.08.2023, 08:10
Спасибо добрый человек

iv.kmz
21.08.2023, 16:25
Здравствуйте!

СП307-Р. При использовании исторической таблицы (100 строк), через некоторое время работы (и видимо накопления данных этой таблицы)
начинаются проблемы с обменом с ПЛК (с регистрами, адреса которых указаны динамически динамически (в PSW1000, PSW1001)).
Подозреваю, что обработчик таблицы каким-то образом изменяет значение, хранящееся в PSW1000, PSW1001.

Для этой самой "исторической таблицы", пробовал указывать разные регистры хранилища в PSW и PFW в начале, середине и конце допустимого диапазона. В т.ч. в авто области. При этом, при любой конфигурации в описании регистров (красным цветом в левом верхнем углу) всегда присутствует PFW256.

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

Можно ли как-то решить эту проблему, или данный компонент в панели в принципе неработоспособен?

kondor3000
21.08.2023, 17:16
Можно ли как-то решить эту проблему, или данный компонент в панели в принципе неработоспособен?

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

Flauwear
21.08.2023, 23:08
Добрый день!
Возник вопрос: Есть пользовательская переменная PFW в панели, значение которой нужно передать в устройство по modbus. Если я правильно понимаю, то единственным способом это сделать является макрос? И еще с какой периодичностью данная переменная будет передаваться, когда макрос вызывается в функциональной области?

iv.kmz
22.08.2023, 08:15
Динамические адреса - да, крайне необходимы.
В автообласти пробовал - результат тот же. Ну может быть позже проявляется.
Целиком выложить проект не могу.

P.S.
Проверил. PSW1001, в котором содержится динамический адрес (смещение) действительно меняется.

kondor3000
22.08.2023, 11:15
Добрый день!
Возник вопрос: Есть пользовательская переменная PFW в панели, значение которой нужно передать в устройство по modbus. Если я правильно понимаю, то единственным способом это сделать является макрос? И еще с какой периодичностью данная переменная будет передаваться, когда макрос вызывается в функциональной области?

Адрес +10000 и передавайте). Для PFW256 - адрес будет 10256

kondor3000
22.08.2023, 12:31
Динамические адреса - да, крайне необходимы.
В автообласти пробовал - результат тот же. Ну может быть позже проявляется.
Целиком выложить проект не могу.


Проект никому и не нужен, выбросьте всё лишнее, оставьте только таблицу, где видно глюк и напишите что и куда вводить.

iv.kmz
23.08.2023, 08:06
Проект никому и не нужен, выбросьте всё лишнее, оставьте только таблицу, где видно глюк и напишите что и куда вводить.

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

В любом случае спасибо!

iv.kmz
23.08.2023, 16:02
Здравствуйте!

Постигла меня очередная печаль. Внезапно конфигуратор вылетел и проект перестал загружаться. Перед этим редактировал параметры прямоугольника
69740

Можно ли что-то сделать или нужно откатываться к предыдущей сохранённой копии?

kondor3000
23.08.2023, 16:32
Здравствуйте!
Постигла меня очередная печаль. Внезапно конфигуратор вылетел и проект перестал загружаться. Перед этим редактировал параметры прямоугольника
Можно ли что-то сделать или нужно откатываться к предыдущей сохранённой копии?

Откатываться и проект периодически сохраняйте.

petera
24.08.2023, 10:43
Здравствуйте!

Постигла меня очередная печаль. Внезапно конфигуратор вылетел и проект перестал загружаться. Перед этим редактировал параметры прямоугольника
69740

Можно ли что-то сделать или нужно откатываться к предыдущей сохранённой копии?

Всегда следует поискать в папке TEMP («Win» + «R». В диалоговое окно «Выполнить» введите %Temp% и ОК) папку "Thinget"
В ней может остаться предыдущий вариант проекта в виде "~ex2A.tmp"..~ex44.tmp и т.п
69747
Это временные файлы открытых проектов, если конфигуратор аварийно завершил работу, то такие файлы в папке ".\Temp\Thinget" остаются.
Переименуйте расширение с tmp на txp и открывайте конфигуратором.

lectorleo
30.08.2023, 13:41
Добрый день. в инструкции нашел что можно менять IP адрес панели PFW84-PFW95
А можно ли менять IP адрес слейв устройств? в случае когда панель мастер

senkos
05.09.2023, 14:23
Добрый день! Подскажите пожалуйста, язык Си в макросах полнофункционален?
Или же там используется часть функционала Си?
В частности работа с временем и датой только та что в справке к конфигуратору или #include <time.h> тоже будет работать?

petera
05.09.2023, 15:22
Добрый день! Подскажите пожалуйста, язык Си в макросах полнофункционален?
Или же там используется часть функционала Си?
В частности работа с временем и датой только та что в справке к конфигуратору или #include <time.h> тоже будет работать?

Тут пример с time.h https://owen.ru/forum/showthread.php?t=35121&p=361014&viewfull=1#post361014

kondor3000
05.09.2023, 15:41
Добрый день! Подскажите пожалуйста, язык Си в макросах полнофункционален?
Или же там используется часть функционала Си?
В частности работа с временем и датой только та что в справке к конфигуратору или #include <time.h> тоже будет работать?

Вы бы лучше написали, что хотите сделать, в 90 % случаев, макросы не нужны. К тому же отладка макросов в эмуляции не возможна.

senkos
05.09.2023, 15:48
Вы бы лучше написали, что хотите сделать, в 90 % случаев, макросы не нужны. К тому же отладка макросов в эмуляции не возможна.

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

petera
05.09.2023, 15:58
Это в продолжение темы с компрессорами. Хотел сделать время включения, время работы и последующий расчет производительности. Понимаю что можно в ПЛК это рассчитывать, но хотел макросы освоить на конкретном примере.
Без макросов,
70037

Ф.область - имитатор регистра PSW38
перед загрузкой проекта в панель - УДАЛИТЬ!!!

https://owen.ru/forum/attachment.php?attachmentid=68459&d=1687781656

senkos
05.09.2023, 23:30
Без макросов,
70037

Ф.область - имитатор регистра PSW38
перед загрузкой проекта в панель - УДАЛИТЬ!!!

https://owen.ru/forum/attachment.php?attachmentid=68459&d=1687781656

Интересный пример, спасибо!
Но только некоторые моменты тут я совсем не знаю.
Например что такое ГМ?
И каким образом вы поместили F_TRIGGER? Если я правильно понял квадратик с лампочкой это он?

petera
06.09.2023, 02:14
Интересный пример, спасибо!
Но только некоторые моменты тут я совсем не знаю.
Например что такое ГМ?
И каким образом вы поместили F_TRIGGER? Если я правильно понял квадратик с лампочкой это он?

https://owen.ru/forum/attachment.php?attachmentid=70049&d=1693954985См. ссылку в подписи под моими сообщениями

https://owen.ru/forum/attachment.php?attachmentid=70048&d=1693954935

senkos
07.09.2023, 09:26
https://owen.ru/forum/attachment.php?attachmentid=70049&d=1693954985См. ссылку в подписи под моими сообщениями

https://owen.ru/forum/attachment.php?attachmentid=70048&d=1693954935

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

Chaser33
07.09.2023, 11:10
Доброго времени суток, подскажите как к индикатору на панели привязать вход контроллера? К ПЛК 210 к первому входу подключен тумблер, необходимо отслеживать его срабатывание на панели СП307. К индикаторам получается привязать только бит который переключается с панели виртуальным тумблером, а вот бит, указывающий вход контроллера не получается привязать (ругается codesys, что данный вход уже привязан). Привязываю в конфигураторе СП300: порт PLC порт, адрес 1(в codesys указал 1), регистр 4х 0,00 (в codesys добавлено modbus serial device, в соотнесении вх/вых к регистру временного хранения привязываю необходимый мне бит к %IX0.0). Что делаю не так ?

kondor3000
07.09.2023, 12:48
Доброго времени суток, подскажите как к индикатору на панели привязать вход контроллера? К ПЛК 210 к первому входу подключен тумблер, необходимо отслеживать его срабатывание на панели СП307. К индикаторам получается привязать только бит который переключается с панели виртуальным тумблером, а вот бит, указывающий вход контроллера не получается привязать (ругается codesys, что данный вход уже привязан). Привязываю в конфигураторе СП300: порт PLC порт, адрес 1(в codesys указал 1), регистр 4х 0,00 (в codesys добавлено modbus serial device, в соотнесении вх/вых к регистру временного хранения привязываю необходимый мне бит к %IX0.0). Что делаю не так ?

Вообще, обычно это делается упаковкой всех Битов входов в Маску (16 бит или 32 бита) и уже маску отправляете как регистр с адресом 0 в панель.
Упаковка в ПЛК делается через точку. Например Mask.0:= In1; Mask.1:= In2; и т. д.
Панель также читает 4х0 бит 0, 4х0 бит 1, 4х0 бит 2 и т. д.

lectorleo
07.09.2023, 13:05
Доброго времени суток, подскажите как к индикатору на панели привязать вход контроллера? К ПЛК 210 к первому входу подключен тумблер, необходимо отслеживать его срабатывание на панели СП307. К индикаторам получается привязать только бит который переключается с панели виртуальным тумблером, а вот бит, указывающий вход контроллера не получается привязать (ругается codesys, что данный вход уже привязан). Привязываю в конфигураторе СП300: порт PLC порт, адрес 1(в codesys указал 1), регистр 4х 0,00 (в codesys добавлено modbus serial device, в соотнесении вх/вых к регистру временного хранения привязываю необходимый мне бит к %IX0.0). Что делаю не так ?

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

Chaser33
07.09.2023, 14:16
В FAQ нашел такой момент
3.13 Как в элементе Индикатор отобразить бит input регистра?
В элементе Индикатор не поддерживается выбор области 3x (input регистры), поэтому требуется
считать данные во внутренние регистры панели с помощью элемента Функциональная область
(действие Копировать регистр поддерживает область 3x), после чего привязать к индикатору биты
этих внутренних регистров.
В modbus serial device привязал к 0 регистру побитно несколько значений, через функциональную область копировал и в PSW и PFW, панель ничего не видит.

kondor3000
07.09.2023, 14:53
В FAQ нашел такой момент
3.13 Как в элементе Индикатор отобразить бит input регистра?
В элементе Индикатор не поддерживается выбор области 3x (input регистры), поэтому требуется
считать данные во внутренние регистры панели с помощью элемента Функциональная область
(действие Копировать регистр поддерживает область 3x), после чего привязать к индикатору биты
этих внутренних регистров.
В modbus serial device привязал к 0 регистру побитно несколько значений, через функциональную область копировал и в PSW и PFW, панель ничего не видит.

Положите маску бит Входов в Холдинг регистры в ПЛК и читайте в панели 4х0, бит 0
Кстати там могут быть переставлены байты и 0 бит попадёт в 8 бит панели, проверьте.
В таких случаях можно на время вывести не только биты, но и Дисплей регистра 4х0 и смотреть какой бит включается. При включении 8 бита будет 256 в дисплее.

Вот так можно упаковать до 16 входов в Маску WORD на CFC, через точку 70083
Если надо больше, то до 32 бит можно упаковать в DWORD.
Распаковывать из маски наоборот, соответственно.

Chaser33
07.09.2023, 16:38
Положите маску бит Входов в Холдинг регистры в ПЛК и читайте в панели 4х0, бит 0
Кстати там могут быть переставлены байты и 0 бит попадёт в 8 бит панели, проверьте.
В таких случаях можно на время вывести не только биты, но и Дисплей регистра 4х0 и смотреть какой бит включается. При включении 8 бита будет 256 в дисплее.

Вот так можно упаковать до 16 входов в Маску WORD на CFC, через точку 70083
Если надо больше, то до 32 бит можно упаковать в DWORD.
Распаковывать из маски наоборот, соответственно.

Спасибо за помощь, создал маску. Прямая ссылка на регистр где лежит переменная Маск в конфигураторе СП300 не работает, необходимо через функциональную область и копирование регистра из PLC во внутреннюю память, при этом переменную Mask привязал не к Holding Reg, а к Input Reg. Но столкнулся с нюансом, что если срабатывает от нескольких переменных некая 3 переменная (которая является в коде как бы выходом) и она тоже участвует в формировании маски, то ее уже панель не отрабатывает на индикацию.

RV9WFJ
07.09.2023, 16:47
Что-то вы или не то делаете или не так описали. Хоть 10 раз туда сюдда переддавай значение а все равно графика 10го будет отрабатывать по первому, если все правильно.

Chaser33
07.09.2023, 17:19
Что-то вы или не то делаете или не так описали. Хоть 10 раз туда сюдда переддавай значение а все равно графика 10го будет отрабатывать по первому, если все правильно.

Наверное не понятно просто описал. Взял две разных переменных (In1 и In2), когда обе активны, то срабатывает переменная (Out1). Формирую маску из In1, In2, Out1. Панель отрабатывает всегда все вкл/выкл от In1 и In2, а вот Out1 не отображает никогда.

kondor3000
07.09.2023, 18:26
Наверное не понятно просто описал. Взял две разных переменных (In1 и In2), когда обе активны, то срабатывает переменная (Out1). Формирую маску из In1, In2, Out1. Панель отрабатывает всегда все вкл/выкл от In1 и In2, а вот Out1 не отображает никогда.

Так у вас входы передаются всё таки? Не передаётся выход Out1 из ПЛК в панель?
Или вам выход надо записать из Панели в ПЛК? Напишите конкретно какие биты и куда надо передать и желательно скрины настроек.

Chaser33
08.09.2023, 09:28
Так у вас входы передаются всё таки? Не передаётся выход Out1 из ПЛК в панель?
Или вам выход надо записать из Панели в ПЛК? Напишите конкретно какие биты и куда надо передать и желательно скрины настроек.

Задача такова: есть оборудование включающее PLC210,HMI-СП307, индуктивные датчики, кнопки. Необходимо с помощью HMI отслеживать цикл работы оборудования. На HMI отображаются сигналы от входов PLC (получилось сделать через маску входов), включение/выключение виртуальных тумблеров (выбор режима работы на HMI)(отображается без проблем), выдача сигналов на выхода PLC (еще не пробовал), срабатывание промежуточных виртуальных переменных (например срабатывание одновременно 1 и 2 входов PLC устанавливают некую внутреннюю переменную)(сейчас с этим и борюсь).

Юрий Н
08.09.2023, 09:42
похоже на очередную курсовую....

kondor3000
08.09.2023, 10:48
Задача такова: есть оборудование включающее PLC210,HMI-СП307, индуктивные датчики, кнопки. Необходимо с помощью HMI отслеживать цикл работы оборудования. На HMI отображаются сигналы от входов PLC (получилось сделать через маску входов), включение/выключение виртуальных тумблеров (выбор режима работы на HMI)(отображается без проблем), выдача сигналов на выхода PLC (еще не пробовал), срабатывание промежуточных виртуальных переменных (например срабатывание одновременно 1 и 2 входов PLC устанавливают некую внутреннюю переменную)(сейчас с этим и борюсь).

И чего тут бороться не пойму? Пример передачи входов у вас работает, по аналогии делается передача промежуточных и
запись выходов в других масках ( запись будет в виде распаковки бит из маски в ПЛК)

Ворон226
12.09.2023, 19:16
Здравствуйте!
Не могу при работе с конфигуратором СП3** поставить кнопки на прозрачном фоне. Кнопки нарисованы и сохранены в формате png и bmp - в редакторах прозрачный фон. Когда устанавливаю их в конфигураторе - кнопки на чёрном фоне...
Может настройка какая есть? Или формат должен быть иной?

kondor3000
12.09.2023, 19:46
Здравствуйте!
Не могу при работе с конфигуратором СП3** поставить кнопки на прозрачном фоне. Кнопки нарисованы и сохранены в формате png и bmp - в редакторах прозрачный фон. Когда устанавливаю их в конфигураторе - кнопки на чёрном фоне...
Может настройка какая есть? Или формат должен быть иной?

Когда добавляете изображение из биб-ки в конфигураторе, галку прозрачность поставьте, во всех изображениях. 70163

BlR
13.09.2023, 16:26
Приветствую Уважаемые.
Направьте/подскажите - задача - обмен между СП307 и ТРМ212. Так ТРМ 212 имеет формат нужных данных (измеренное значение, уставка) Signed int. Что с этим форматом делать? До этого стыковались с другими типами ТРМ - но там float - и все проходило без танцев. Описание из мурзилки "... отрицательные числа представляются в дополнительном коде..." ни на какие мысли не натолкнуло.

kondor3000
13.09.2023, 17:49
Приветствую Уважаемые.
Направьте/подскажите - задача - обмен между СП307 и ТРМ212. Так ТРМ 212 имеет формат нужных данных (измеренное значение, уставка) Signed int. Что с этим форматом делать? До этого стыковались с другими типами ТРМ - но там float - и все проходило без танцев. Описание из мурзилки "... отрицательные числа представляются в дополнительном коде..." ни на какие мысли не натолкнуло.

Вместо флоат, ставите целочисленное (WORD или DWORD) и формат DEC (число со знаком), и если надо то кол-во точек после запятой, задаётся в ТРМ.
То есть, принимаете например целочисленное 255 и 1 точка после запятой, на дисплее будет 25,5 градусов.
Передача отрицательного числа будет в дополнительном коде например получено 65431, в DEC это будет -105, с одной точкой после запятой -10,5 градусов.

Советую изучить типы данных в справках по Codesys 2.3 или Лоджику. А это из справки в конфигураторе панели 70177

senkos
14.09.2023, 10:23
Здравствуйте, коллеги!
Расскажите пожалуйста как работает элемент IF в расширенном режиме конфигуратора.
Правильно я понимаю что "Текущее значение" это бит который передается в условие и если он TRUE то выполняется блок Self Unit?
Что такое "Индекс" в Unit Property этого IF?

petera
14.09.2023, 10:48
Здравствуйте, коллеги!
Расскажите пожалуйста как работает элемент IF в расширенном режиме конфигуратора.
Правильно я понимаю что "Текущее значение" это бит который передается в условие и если он TRUE то выполняется блок Self Unit?
Что такое "Индекс" в Unit Property этого IF?

1.
Правильно я понимаю что "Текущее значение" это бит который передается в условие и если он TRUE то выполняется блок Self Unit
Почти правильно. Точнее правильно, если в контейнер IF "вставлен" всего один элемент.
Но IF в общем случае предполагает наличие ДВУХ "вставленных" элемента (см. например, стандартный индикатор). Тогда, если условие TRUE, то выполняется первый элемент из списка "вставленных", в противном случае - второй.

2.
Что такое "Индекс" в Unit Property этого IF
Ответ вытекает из п.1.
Индекс отображает элементы из списка состояний.
70181

70182 70183

BlR
14.09.2023, 11:03
Вместо флоат, ставите целочисленное (WORD или DWORD) и формат DEC (число со знаком), и если надо то кол-во точек после запятой, задаётся в ТРМ.
То есть, принимаете например целочисленное 255 и 1 точка после запятой, на дисплее будет 25,5 градусов.
Передача отрицательного числа будет в дополнительном коде например получено 65431, в DEC это будет -105, с одной точкой после запятой -10,5 градусов.

Советую изучить типы данных в справках по Codesys 2.3 или Лоджику. А это из справки в конфигураторе панели 70177

Ну то бишь панель сама отрабатывает этот дополнительный код, вытаскивая знак, и располагая целую и дробную часть согласно указанному количеству знаков после запятой?
Самое интересное - так и сделано - считывается word (поскольку указано что signed int 16), в свойствах индикатора DEC, 5 всего, дробная 1. Но на выходе чушь какая то. В принципе понял - будем копать. Толи читаем не так, то ли не там :)

senkos
14.09.2023, 14:32
Как правильно делать математику в функциональной области (так же и в ГМ) и потом ее выводить в текстовое поле?
Например как на скрине:

"Счетчик секунд" - "Время старта" = "Время работы в секундах"
"Время работы в секундах" * "Производительность в час = 30" / "Количество секунд в часе = 3600"

70194

В поле вывода указываю Формат = Unsigned, и 2 знака после запятой, если делить на 36.

petera
14.09.2023, 15:05
Как правильно делать математику в функциональной области (так же и в ГМ) и потом ее выводить в текстовое поле?
Например как на скрине:

"Счетчик секунд" - "Время старта" = "Время работы в секундах"
"Время работы в секундах" * "Производительность в час = 30" / "Количество секунд в часе = 3600"

70194

В поле вывода указываю Формат = Unsigned, и 2 знака после запятой, если делить на 36.

Замечание.
В системном регистре PSW38 время в десятых долях секунды, а не в секундах.

Вопрос не понял, что не получается?

petera
14.09.2023, 15:43
to senkos

ЗЫ.
В Вашей цепочке вычислений можно уменьшить число промежуточных переменных
Т.е. можно так
PSW1010 = PSW38 - PSW1000
PSW1010 = PSW1010 * 30
PSW1010 = PSW1010 / 3600

На дисплей выводить PSW1010

senkos
14.09.2023, 16:00
to senkos

ЗЫ.
В Вашей цепочке вычислений можно уменьшить число промежуточных переменных
Т.е. можно так
PSW1010 = PSW38 - PSW1000
PSW1010 = PSW1010 * 30
PSW1010 = PSW1010 / 3600

На дисплей выводить PSW1010

Спасибо! А каким образом мне настраивать вывод в числовое поле? Float в данном случае не верные данные будет выводить?

petera
14.09.2023, 16:03
Спасибо! А каким образом мне настраивать вывод в числовое поле? Float в данном случае не верные данные будет выводить?

Конечно, нет.
У Вас же целочисленная арифметика, значит Unsigned или DEC, если нужно отрицательные целые выводить.

Johnystu
25.09.2023, 15:23
Добрый день, есть много однотипных устройств на экране СП307. при нажатии на это устройство на панели появляется всплывающее окно управления этим устройством(старт-стоп авто-ручное). Так вот, чтобы не плодить для каждого устройства новое окно, хотелось бы сделать одно для всех. т.е. при вызове окна стартовал макрос и адреса регистров управления устройством передавались в виде указателей на эти регитсры в окно управления устройством. Может есть у кого рабочий пример макроса?

petera
25.09.2023, 16:27
Добрый день, есть много однотипных устройств на экране СП307. при нажатии на это устройство на панели появляется всплывающее окно управления этим устройством(старт-стоп авто-ручное). Так вот, чтобы не плодить для каждого устройства новое окно, хотелось бы сделать одно для всех. т.е. при вызове окна стартовал макрос и адреса регистров управления устройством передавались в виде указателей на эти регитсры в окно управления устройством. Может есть у кого рабочий пример макроса?

Покажите какие элементы, с их адресами в устройствах, хотя бы 2-3 окна.

BlR
25.09.2023, 17:51
Приветствую Уважаемые.

Вопрос следующего характера - как я правильно понимаю - некого готового таймера или подобной функции в панели нет?
Смысл в следующем - требуется изменять некую уставку для вторичников с неким интервалом по графику. Поскольку ничего не нашел - пока мысль - функциональная кнопка, которая запускает макрос. При запуске макрос скидывает в некую переменную регистр PSW38 - время от включения панели (ну или его преобразование в минуты) а дальше по банальному if.. else if в от разницы PSW38 и сохраненной переменной присваиваем значение уставки.
Или есть более изящное решение?

kondor3000
25.09.2023, 19:18
Приветствую Уважаемые.

Вопрос следующего характера - как я правильно понимаю - некого готового таймера или подобной функции в панели нет?
Смысл в следующем - требуется изменять некую уставку для вторичников с неким интервалом по графику. Поскольку ничего не нашел - пока мысль - функциональная кнопка, которая запускает макрос. При запуске макрос скидывает в некую переменную регистр PSW38 - время от включения панели (ну или его преобразование в минуты) а дальше по банальному if.. else if в от разницы PSW38 и сохраненной переменной присваиваем значение уставки.
Или есть более изящное решение?

В панели есть импульсы 100ms, 300ms, 500 ms (системные регистры), секундные (сколько надо секунд) и минутные доступны в ФО (функц. области), можно отсчитать любое время,
а так же 4 страницы назад выложен таймер отсчёта времени без макросов, с подробным описанием ещё на страницу
https://owen.ru/forum/showthread.php?t=22915&page=291#2910

Johnystu
25.09.2023, 20:58
Покажите какие элементы, с их адресами в устройствах, хотя бы 2-3 окна.
Запаковал в зип пример. На основном экране крутится функциональная область, которая считывает регистры с ПЛК и пишет их во внутреннюю память панели (потому что регистры ПЛК области 3х, не могут быть разбиты на на биты в панеле для вывода статусов устройства). При нажатии кнопки во всплывающем окне устройстве, пишем значение бита в регистре и записываем этот внутренний регистр в регистр ПЛК. Всё просто. Немного не понятен синтаксис как это реализовать. Как работать с указателями в этой панельке я не нашёл, вообще по макросам мало инфы.

kondor3000
25.09.2023, 21:45
Запаковал в зип пример. На основном экране крутится функциональная область, которая считывает регистры с ПЛК и пишет их во внутреннюю память панели (потому что регистры ПЛК области 3х, не могут быть разбиты на на биты в панеле для вывода статусов устройства). При нажатии кнопки во всплывающем окне устройстве, пишем значение бита в регистре и записываем этот внутренний регистр в регистр ПЛК. Всё просто. Немного не понятен синтаксис как это реализовать. Как работать с указателями в этой панельке я не нашёл, вообще по макросам мало инфы.

А почему обязательно 3х, 4х использовать нельзя?

Johnystu
25.09.2023, 21:48
Да, так уж вышло. 3х читаем статусы, а команды управления пишем в 4х.

kondor3000
25.09.2023, 21:58
Да, так уж вышло. 3х читаем статусы, а команды управления пишем в 4х.

У Овена, в ПЛК1хх эти области наложены друг на друга, можно и читать и писать 4х. Какой ПЛК вы используете?

Johnystu
25.09.2023, 22:13
У Овена, в ПЛК1хх эти области наложены друг на друга, можно и читать и писать 4х. Какой ПЛК вы используете?
ПЛК210. Да какая разница куда писать и читать, вопрос не в этом, а как сделать одно окно управления для всех однотипных устройств =)

petera
25.09.2023, 23:38
Запаковал в зип пример. На основном экране крутится функциональная область, которая считывает регистры с ПЛК и пишет их во внутреннюю память панели (потому что регистры ПЛК области 3х, не могут быть разбиты на на биты в панеле для вывода статусов устройства). При нажатии кнопки во всплывающем окне устройстве, пишем значение бита в регистре и записываем этот внутренний регистр в регистр ПЛК. Всё просто. Немного не понятен синтаксис как это реализовать. Как работать с указателями в этой панельке я не нашёл, вообще по макросам мало инфы.

Динамическая адресация
70463
В ф.кнопке пишешь в индексный регистр номер устройства (0, 1, 2 ..), а затем вызов окна.
На окне используешь в кнопках динамическую адресацию.

Johnystu
25.09.2023, 23:58
Динамическая адресация
70463
В ф.кнопке пишешь в индексный регистр номер устройства (0, 1, 2 ..), а затем вызов окна.
На окне используешь в кнопках динамическую адресацию.

Уже сделал по своему ;)
Добавил два макроса один на запись регистра ПЛК, второй на чтение регистра ПЛК. перед вызовом всплывающего окна присваиваю временному регистру PSW[500] значение адреса ПЛК. далее во всплывающем окне в функциональной области каждую сек. читаю через макрос значение регистра плк (PSW[500]) и пишу значение во временный регистр PSW[600] и дальше все биты этого регистра разбиваю как мне надо:
WORD Value=0;
Read(NET_0, 1, MODBUS_TCP_REG_3X, PSW[500], 0, TYPE_WORD, &Value);
PSW[600]=Value;

а пишу значение в ПЛК по кнопке через макрос записи:
Write(NET_0, 1, MODBUS_TCP_REG_4X, PSW[500], 0, TYPE_WORD, PSW[501]);

В PSW[500] адрес регистра ПЛК. в 501 зачение. Всё оказалось просто.

petera
26.09.2023, 11:09
Уже сделал по своему ;)
Добавил два макроса один на запись регистра ПЛК, второй на чтение регистра ПЛК. перед вызовом всплывающего окна присваиваю временному регистру PSW[500] значение адреса ПЛК. далее во всплывающем окне в функциональной области каждую сек. читаю через макрос значение регистра плк (PSW[500]) и пишу значение во временный регистр PSW[600] и дальше все биты этого регистра разбиваю как мне надо:
WORD Value=0;
Read(NET_0, 1, MODBUS_TCP_REG_3X, PSW[500], 0, TYPE_WORD, &Value);
PSW[600]=Value;

а пишу значение в ПЛК по кнопке через макрос записи:
Write(NET_0, 1, MODBUS_TCP_REG_4X, PSW[500], 0, TYPE_WORD, PSW[501]);

В PSW[500] адрес регистра ПЛК. в 501 зачение. Всё оказалось просто.
Теперь хоть прояснилось, почему сразу не пишем биты в регистры ПЛК типа 4х739.15. Здесь TCP, а пример то выложили с использованием RS
Ну и ладно, докажу, что с использованием динамической адресации еще проще будет.

Но для начала нужно выбросить лишние телодвижения в существующих кнопках управления
Лишний промежуточный регистр PW1xxx и лишние операции с битами
70477
это справедливо для всех кнопок
например
70478

Если запись отдельных бит в регистре ПЛК, типа 4x739.15, не поддерживается, то можно ведь просто числа записывать в регистр
Вот так
70479 70480 70481
739.15 == 32768
739.3 == 8
739.2 == 4
739.1 == 2
739.0 == 1


А теперь добавим динамическую адресацию, например индекс будет в PSW40,
70482

а коэффициент(множитель) будет равен 1
70483

И так для всех кнопок, в регистр управления добавляем динамическую адресацию через регистр PSW40

Аналогично нужно добавить динамическую адресацию и для индикаторов
70485

Теперь достаточно в ф.кнопках на экране, перед вызовом Окна #1, добавить запись в PSW40 индекса от 0 до N (номер устройства)
70484

Все окна кроме 1 можно удалить
И ни каких макросов не нужно...

BlR
26.09.2023, 17:50
В панели есть импульсы 100ms, 300ms, 500 ms (системные регистры), секундные (сколько надо секунд) и минутные доступны в ФО (функц. области), можно отсчитать любое время,
а так же 4 страницы назад выложен таймер отсчёта времени без макросов, с подробным описанием ещё на страницу
https://owen.ru/forum/showthread.php?t=22915&page=291#2910

Благодарствую - попробую разобраться.
На данный момент пока пошел "дубовым путём"- через условия - надо прогнать оборудование на пробном пуске.
Но столкнулся со странной штукой - регистр PSW[38] достигает 65535 и обнуляется. То сть логично - если это младшее слово. Но есть еще и старшее - почему оно не подтягивается?

Конструктив примерно такой
T_Start = MAKEDWORD(PSW[38],PSW[39]); // стартуем, записываем время старта
T_tek = MAKEDWORD(PSW[38],PSW[39]); // берем текущее время
PSW[308] = Ustavka; // пишем текущую уставку в регистр
switch ((T_tek - T_Start) / 600)) // получаем разницу в минутах от начала старта
дальше несколько case - по каждой разнице своя уставка присваивается в переменную Ustavka. Когда PSW[38] становится 0 - подставляется первая уставка. Не могу понять что не так.

kondor3000
26.09.2023, 18:01
Благодарствую - попробую разобраться.
На данный момент пока пошел "дубовым путём"- через условия - надо прогнать оборудование на пробном пуске.
Но столкнулся со странной штукой - регистр PSW[38] достигает 65535 и обнуляется. То сть логично - если это младшее слово. Но есть еще и старшее - почему оно не подтягивается?

Конструктив примерно такой
T_Start = MAKEDWORD(PSW[38],PSW[39]); // стартуем, записываем время старта
T_tek = MAKEDWORD(PSW[38],PSW[39]); // берем текущее время
PSW[308] = Ustavka; // пишем текущую уставку в регистр
switch ((T_tek - T_Start) / 600)) // получаем разницу в минутах от начала старта
дальше несколько case - по каждой разнице своя уставка присваивается в переменную Ustavka. Когда PSW[38] становится 0 - подставляется первая уставка. Не могу понять что не так.

Просто в примере ошибочка PSW38 указан как WORD, а надо сделать DWORD и соответственно во всех расчётах тоже.

Из Руководства : PSW38-39 Время, прошедшее с включения панели DWORD; дискретность инкремента – 0.1 с

BlR
26.09.2023, 20:15
Просто в примере ошибочка PSW38 указан как WORD, а надо сделать DWORD и соответственно во всех расчётах тоже.

Из Руководства : PSW38-39 Время, прошедшее с включения панели DWORD; дискретность инкремента – 0.1 с

Так вроде нет
переменные объявлены как DWORD
соответственно MAKEDWORD(PSW[38],PSW[39]) должно в переменную упихать оба регистра - 38-й и 39-й. А получается что упихивается только младший 38-й. Что у меня не так?

petera
26.09.2023, 20:25
Так вроде нет
переменные объявлены как DWORD
соответственно MAKEDWORD(PSW[38],PSW[39]) должно в переменную упихать оба регистра - 38-й и 39-й. А получается что упихивается только младший 38-й. Что у меня не так?

DWORD T_Start, T_tek;
T_Start = *(DWORD*)(PSW + 38);

BlR
26.09.2023, 20:33
DWORD T_Start, T_tek;
T_Start = *(DWORD*)(PSW + 38);

В мануале я видел такую конструкцию - указано что для записи в DWORD. А почему MAKEDWORD не работает для загрузки регистров в переменную?

ЗЫ кстати и эта конструкция не работает - обнуляется.

petera
27.09.2023, 06:30
В мануале я видел такую конструкцию - указано что для записи в DWORD. А почему MAKEDWORD не работает для загрузки регистров в переменную?

ЗЫ кстати и эта конструкция не работает - обнуляется.

Вот здесь
switch ((T_tek - T_Start) / 600)) // получаем разницу в минутах от начала старта
С чего Вы взяли, что так можно для DWORD ?
Я хоть и чайник, но "Выражение, следующее за ключевым словом switch в круглых скобках, может быть любым выражением, допустимыми в языке СИ, значение которого должно быть целым"
Целым - это значит 16 битным ! целое без знака в си unsigned int от 0 до 65535. Вот и происходит неявное преобразование типа

aek58
28.09.2023, 11:03
Уважаемый petera!
Можете дать ссылку как воспользоваться клавиатурой N_КлаваМ.xjt ?

petera
28.09.2023, 13:35
Уважаемый petera!
Можете дать ссылку как воспользоваться клавиатурой N_КлаваМ.xjt ?

Эту клавиатуру можно использовать на прямую только в версии конфигуратора v2.D3d потому, что в версии v2.D3к при сохранении объектов, не только ГМ, в Библиотеке элементов(материалов) происходит замена битовых адресов типа PSW500.3 на PSB500. И объекты естественно перестают работать.

Вот так свойства клавиатуры выглядит в v2.D3d
70551

А так в версии v2.D3к
70552

Это справедливо только если брать объекты из библиотеки. При открытии старых файлов в новом конфигураторы данных глюк не наблюдается.
Или если скопировать клавиатуру с экрана старой версии на экран новой.

Это было введение.
Клавиатуры из моей библиотеки служат для ввода и редактирования символьных переменных в замен стандартных всплывающих клавиатур.

Т.е. данная клавиатура расположена на одном экране(окне) со стандартным полем ввода.
при этом галку Клавиатура в настройках поля ввода нужно отключить
70553

В работе нужно вначале нажать на поле ввода и затем набирать текст на клавиатуре
https://owen.ru/forum/attachment.php?attachmentid=70557&d=1695897200

aek58
28.09.2023, 13:56
Спасибо. Через старый конфигуратор получилось.

zavik
03.10.2023, 13:55
Добрый день.
Есть у меня ПЛК 160 и есть панель СП300. Все работает. есть проект ПЛК и проект панели. ПЛК-мастер, панель - слейв (https://drive.google.com/file/d/1zLJBcuIDLUNbYE0kZP4PxwI_Zkhxb2lm/view?usp=sharing)
Поручили удаленно подключиться к ПЛК чтобы забрать данные. (в панели страница - температуры). Но опыта работы нету, а проект работает - если накосячу - повесят на меня большую сумму. Из прочитанного мне показалось что самое простое - это сделать онлайн эмуляцию панели и подключиться через TCP. Но вот как правильно это сделать - не знаю. IP ПЛК по умолчанию - не менялся. IP компа менял на нужный из этой же подсети. ПЛК пингуется. ИЗ кодесиса подключаюсь - ошибка связи. из онлайн эмуляции СП не подключается у меня :(
Может кто поможет настроить?

RV9WFJ
03.10.2023, 14:44
А разве СП3хх поддерживает онлайн эмуляцию через Ethermet?

zavik
03.10.2023, 14:48
я не знаю. думал что поддерживает

zavik
03.10.2023, 14:49
petera мне предложил вариант подключения, но он у меня не получается - не добавляются переменные.

petera
03.10.2023, 14:55
А разве СП3хх поддерживает онлайн эмуляцию через Ethermet?

Поддерживает

zavik
03.10.2023, 15:03
я подключился через codesys к ПЛК. Осталось подключить панель :)

zavik
03.10.2023, 15:04
наверное всё таки без изменений в ПЛК не обойтись :(

petera
03.10.2023, 15:12
наверное всё таки без изменений в ПЛК не обойтись :(

Я же Вам сказал, делаете минимальные изменения в программе ПЛК
А именно
1. добавить слейв в конфиг. ПЛК, через который с ПЛК будет общаться скада
https://owen.ru/forum/attachment.php?attachmentid=70591&d=1695972875
2. Добавить в проект доп программу
https://owen.ru/forum/attachment.php?attachmentid=70589&d=1695972406
3. Добавить в PLC_PRG вызов это доп.программы
https://owen.ru/forum/attachment.php?attachmentid=70596&d=1695973278
4.в Доп программе минимум "квадратиков"
https://owen.ru/forum/attachment.php?attachmentid=70594&d=1695973111
где Sensor1..3 значения из существующего мастера, который читает датчики

zavik
03.10.2023, 15:21
слейв добавил
интерфейс TCP добавил
не получается добавить переменные с показаниями датчиков :(
добавляю подэлемент FLOAT, а у меня добавляются "AT %QD10.1.0...." не знаю как им присвоить sensor1? sensor2 ...

petera
03.10.2023, 15:38
слейв добавил
интерфейс TCP добавил
не получается добавить переменные с показаниями датчиков :(
добавляю подэлемент FLOAT, а у меня добавляются "AT %QD10.1.0...." не знаю как им присвоить sensor1? sensor2 ...

Ну
во первых
условные sensor1,2,3... это существующие датчика в мастере
у Вас это
70669

А добавлять в слейв нужно другие имена - tobr_toSCADA


Щелкаете на AT
70670

и пишите
tobr_toSCADA
70671

zavik
03.10.2023, 15:44
а переменные tobr и т.д? разве не tkl1...tkl10? просто их как раз 10 по количеству дисплеев на экране2

petera
03.10.2023, 15:59
а переменные tobr и т.д? разве не tkl1...tkl10? просто их как раз 10 по количеству дисплеев на экране2

Ну да, это не панель пошли
Но ведь мы делаем слейв для скады, а там нужно свои переменные и свои имена

zavik
03.10.2023, 16:35
скаду писать ни разу не пробовал, а проект панели уже есть готовый и то что нужно - я бы лучше в онлайн эмуляции панели бы пробовал посмотреть, там только мгновенные показания нужны.

petera
03.10.2023, 18:43
скаду писать ни разу не пробовал, а проект панели уже есть готовый и то что нужно - я бы лучше в онлайн эмуляции панели бы пробовал посмотреть, там только мгновенные показания нужны.

Ну конфигуратор в онлайн режиме - то же скада.
Ваш проект для панели в нашем случае не подойдет. Хотя бы потому, что панель там слейв. А для конфигуратора в онлайн нужно сделать панель мастером. Для этого и требуется добавить в конфиг ПЛК дополнительный модуль слейв с нужным количеством переменных.
Просто так подключить онлайн конфигуратор панели нельзя, ему просто нечего читать. Нет возможности обратится к существующим переменным типа tkl1...tkl10. Это "чужие" переменные, совсем в другом модуле, доступ к которому со стороны напрямую не возможен.
Я не понимаю в чем у Вас проблема? Делайте дополнительный слейв, в нем десять переменных float, в эти переменные просто нужно скопировать значения из существующих, например, tkl1...tkl10
tkl1_to_SCADA = tkl1
tkl2_to_SCADA = tkl2
.........
tkl10_to_SCADA = tkl10
В квадратиках см. выше

И будете читать извне значения tkl1_to_SCADA, которое совпадает с tkl1 и не важно чем, реальной скадой или конфигуратором панели онслайн

zavik
04.10.2023, 08:40
всё сделал, подключился через codesys
система работает, но данные переменных tkl1...tkl10 в tkl*_to_SCADA не передаются
70688

kondor3000
04.10.2023, 08:49
всё сделал, подключился через codesys
система работает, но данные переменных tkl1...tkl10 в tkl*_to_SCADA не передаются


У вас проект отличается от проекта в ПЛК, об этом говорят синие стрелочки.
Если есть исходник, надо его изменить, добавив слейв и загрузить изменённый проект в ПЛК.
Если исходника нет, то даже не пытайтесь, сотрёте проект.

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

zavik
04.10.2023, 08:57
нету другого ПЛК :(

kondor3000
04.10.2023, 09:02
нету другого ПЛК :(

Исходник проекта есть?

zavik
04.10.2023, 09:26
с ПЛК вытащил, правда там на библиотеку ругался, что ее нет по указанному пути, но я скачал и загрузил библиотеку в проект

kondor3000
04.10.2023, 09:34
с ПЛК вытащил, правда там на библиотеку ругался, что ее нет по указанному пути, но я скачал и загрузил библиотеку в проект

Просто пока НЕ создавайте загрузочный проект (загрузка в ПЗУ). Подключайтесь, загружайте проект (в ОЗУ), ОК и Старт.
Если что то пойдёт не так, перезагрузкой по питанию, вы сможете вернуть исходный проект.

zavik
04.10.2023, 15:13
подключил, загрузил в ОЗУ, всё работает, переменным значения присваиваются. Спасибо!
подскажите, как их удаленно достать теперь? через скаду? или всё таки можно через эмуляцию панели?

kondor3000
04.10.2023, 15:20
подключил, загрузил в ОЗУ, всё работает, переменным значения присваиваются. Спасибо!
подскажите, как их удаленно достать теперь? через скаду? или всё таки можно через эмуляцию панели?

Так вы слейв для чего создавали? Можете добавить в него сразу несколько каналов, например ТСР порт 502, ТСР порт 503, и свободный RS485 или RS232
и по этим портам считывать и панелью и скадой и ещё чем то.
Эмуляцией панели тоже можно, только каждые 30 мин придётся снова подключаться, тогда лучше нарисовать Визуализацию и в ней смотреть управлять.
Есть ещё Скады простые и бесплатные, например на 32 тега бесплатно https://simplight.ru

zavik
04.10.2023, 15:47
я создал в новую конфигурацию панели, прописал туда IP ПЛК.
добавляю цифровой дисплей чтобы выводить значение переменной
а какой порт выбирать? PLC или внутренние регистры? если внутренние, то я не знаю в каких регистрах мои переменные, если в PLC , то тоже не знаю что прописать
7069670697

petera
04.10.2023, 15:55
я создал в новую конфигурацию панели, прописал туда IP ПЛК.
добавляю цифровой дисплей чтобы выводить значение переменной
а какой порт выбирать? PLC или внутренние регистры? если внутренние, то я не знаю в каких регистрах мои переменные, если в PLC , то тоже не знаю что прописать
7069670697

В проекте панели нужно создать сетевое устройство, его затем и выбирать для дисплеев
Судя по картинке сетевого устройства Вы не создали

ЗЫ
Не понятно где Вы "прописал туда IP ПЛК"

70699

70700

70701

70702

kondor3000
04.10.2023, 16:05
У меня по ТСР в эмуляции панели с реальным ПЛК работало без галки перестановка регистров. Float передавался правильно.

zavik
04.10.2023, 16:27
в кодесис нету в параметрах модуля переменных нет почему-то значений адресов регистров переменных (см скрин)
я в конфигураторе ставил и 256 и 10256, не подтягивает в режиме онлайн эмуляции

petera
04.10.2023, 16:31
70704 70705

ничего не понять

в кодесис нету в параметрах модуля переменных нет почему-то значений адресов регистров переменных (см скрин)
я в конфигураторе ставил и 256 и 10256, не подтягивает в режиме онлайн эмуляции
Какие такие 256 и 10256?
Адреса будут 0, 2, 4, 6, 8, 10, 12, 14, 16

zavik
04.10.2023, 16:32
7070670707

zavik
04.10.2023, 16:36
в регистре элемента "цифровой дисплей" ставлю адрес например 2, а регистр ? что там будет?

zavik
04.10.2023, 16:39
скрин прилагаю
70708

petera
04.10.2023, 16:41
скрин прилагаю
70708

Адрес устройства не трогаем
Регистры будут 0, 2, 4, 6, 8, 10, 12, 14, 16, 18

70709

zavik
04.10.2023, 16:45
прописал регистры, к сожалению не идет опрос :(70710

petera
04.10.2023, 16:48
прописал регистры, к сожалению не идет опрос :(70710

Какие сетевые настройки панели и устройства названного "SP300"
Какой IP у ПЛК?

zavik
04.10.2023, 16:54
спасибо, перепутал в настройках 10,0,6,10 на 10,0,10,6
всё заработало. спасибо огромное ребята!!!
очень выручили

Flying Labrador
09.10.2023, 10:18
Здравствуйте, возникла такая проблема. В процессе работы на панели СП307 изредка происходит зеркальное отражение интерфейса. Сталкивался ли кто-нибудь с такой ситуацией? Нашел информацию в интернете, что такая проблема иногда свойственна для TFT экранов, но по большей части для устройств Arduino. Там это "лечится" изменениями в коде программы. Есть ли возможность покопаться в коде панели, или возможно это "лечится иначе"?

kondor3000
09.10.2023, 10:58
Здравствуйте, возникла такая проблема. В процессе работы на панели СП307 изредка происходит зеркальное отражение интерфейса. Сталкивался ли кто-нибудь с такой ситуацией? Нашел информацию в интернете, что такая проблема иногда свойственна для TFT экранов, но по большей части для устройств Arduino. Там это "лечится" изменениями в коде программы. Есть ли возможность покопаться в коде панели, или возможно это "лечится иначе"?

В СП307 такого нет, проверьте сначала работу Панели, простой рабочей программой ( 1 лампа и 1 дисплей).
Если у вас включается зеркальное отображение, то панель в сервис.

Newcomer
13.10.2023, 11:51
Добрый день

Есть ли среди графических элементов конфигуратора СП307 элемент Ползунок ?

petera
13.10.2023, 12:38
Добрый день

Есть ли среди графических элементов конфигуратора СП307 элемент Ползунок ?

Можно сделать, есть видео на моем канале

ЗЫ.
Ссылка на видео https://www.youtube.com/watch?v=zJCHFfyIDPg

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

Newcomer
13.10.2023, 14:32
Как сделать циклическое выполнение макроса раз в полсекунды ?

Newcomer
13.10.2023, 15:10
Элемент Ввод данных настроен таким образом. Если поставить галочку возле Мониторинг, то панель будет и писать и читать по адресу 525 ?

kondor3000
13.10.2023, 15:30
Элемент Ввод данных настроен таким образом. Если поставить галочку возле Мониторинг, то панель будет и писать и читать по адресу 525 ?

Если адрес один и тот же, галку можно не ставить. Мониторинг нужен когда пишите в один регистр, а отображаете другой. 70915
Макрос чаще, чем раз в сек нельзя вызвать

Newcomer
13.10.2023, 15:51
Если адрес один и тот же, галку можно не ставить. Мониторинг нужен когда пишите в один регистр, а отображаете другой. 70915
Макрос чаще, чем раз в сек нельзя вызвать

А как сделать вызов макроса раз в секунду ?