Вход

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



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

petera
14.03.2025, 14:15
Доброго дня.
Вопрос тоже касаемо функциональной области. Когда делаешь ее глобальной элемент исчезает.
Как ее вызвать? В инструкциях ОВЕН все как всегда, кратко и не понятно. Видимо их инструкции пишутся для "гуру", только нафига они "гуру" если они "гуру".
Второй порос касаемо отключения слейв устройств. Там вообще абра кадабра. Кто нибудь может на пальцах объяснить как это работает? Либо ссылку дать.
Вот к примеру 82460 Каким образом PFW130 = 300 как это? И как бы я не делал по этой инструкции, отключение не работает.
Кратко тут https://owen.ru/forum/showthread.php?t=35196&p=362855&viewfull=1#post362855

kondor3000
14.03.2025, 15:10
Доброго дня.
Вопрос тоже касаемо функциональной области. Когда делаешь ее глобальной элемент исчезает.


Куда ФО исчезает ? Вот глобальная ФО на скрине 82462 Если только сверху нет другого элемента.
Мало того, ФО можно закрепить за пределами экрана, поставив расположение Х=800 и галку закрепить.

dimon_ag
14.03.2025, 17:38
Да нету. Как только нажал сделать глобальной, надпись на экране функциональная область пропала. Исщелкал всю область где она была. Тишина. Не удалить не отредактировать.
82473 Вот на этом окне две глобальные ФО. Как в анекдоте
Видишь суслика?
Нет.
А он есть.

dimon_ag
14.03.2025, 17:43
Кратко тут https://owen.ru/forum/showthread.php?t=35196&p=362855&viewfull=1#post362855

Ну вот. Все понятно. Почему в инструкцию нельзя было это вписать?
Спасибо огромное.

kondor3000
14.03.2025, 18:10
Да нету. Как только нажал сделать глобальной, надпись на экране функциональная область пропала. Исщелкал всю область где она была. Тишина. Не удалить не отредактировать.
Вот на этом окне две глобальные ФО. Как в анекдоте
Видишь суслика?
Нет.
А он есть.

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

dimon_ag
14.03.2025, 18:28
Выделите область где она была, большим прямоугольником, она подсветится точками по краям, скорее всего, попала под дисплей.
Или выложите проект, если сами не найдёте.

Пробовал выделить. Нет. Не появляется.
Проекты не выкладываю. Тайны не делаю. Просто не терплю хейтерства.
Попробую пробничек сделать. Если будет так же, скину.

dimon_ag
14.03.2025, 19:15
;) Нашел. В общем прикол такой. Если делаешь ФО в окне, при объявлении ее глобальной, она автоматом улетает на первый экран.
Вопрос решен.

kondor3000
14.03.2025, 19:35
;) Нашел. В общем прикол такой. Если делаешь ФО в окне, при объявлении ее глобальной, она автоматом улетает на первый экран.
Вопрос решен.

Это естественно, глобальная ФО должна работать на всех экранах, а не только в одном окне. И видна она будет на всех экранах.

Мария Крыжовникова
21.03.2025, 14:45
Здравствуйте! Столкнулась с такой проблемой, настроила связь по Modbus RTU между плк210-04 и СП310-Б, но вводимые в панель значения не записываются, ни цифровой ввод, ни переключатель с индикацией, но если вводить значения через окно PLC_PRG, то они записываются и отображаются на панели. Если будут нужны еще какие-то скрины, могу скинуть

82613
82612

In_Da_Cher_A
21.03.2025, 15:01
но вводимые в панель значения не записываются, ни цифровой ввод, ни переключатель с индикацией,к каким адресам в ПЛК обращаются эти активные элементы? начните с этого, приложите скрин настроек графического элемента
если они не "записываются" - значит они уходят в "пустоту"

Мария Крыжовникова
21.03.2025, 15:40
к каким адресам в ПЛК обращаются эти активные элементы? начните с этого, приложите скрин настроек графического элемента
если они не "записываются" - значит они уходят в "пустоту"

Вы это имели в виду?

82614
82615
82616

Показываю на одном элементе, т.к. на всех достаточно долго выйдет

Мария Крыжовникова
21.03.2025, 15:45
Делала все по видео
https://www.youtube.com/watch?v=77fdfnfdJME&list=PL2EcVEe6E9SCzVhL_BCDnaUJROikKheVx&index=9

In_Da_Cher_A
21.03.2025, 15:59
так а кто мастер кто слейв? в конфигурации у вас что-то интересное сделано, сходу непонятно

Мария Крыжовникова
21.03.2025, 16:02
так а кто мастер кто слейв? в конфигурации у вас что-то интересное сделано, сходу непонятно

мастер - плк, слейв - панель
82617

petera
21.03.2025, 16:03
Делала все по видео
https://www.youtube.com/watch?v=77fdfnfdJME&list=PL2EcVEe6E9SCzVhL_BCDnaUJROikKheVx&index=9

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

Мария Крыжовникова
21.03.2025, 16:04
82618
82619

In_Da_Cher_A
21.03.2025, 16:11
мастер - плк, слейв - панель
82617да всё вспомнил в кдс3,5 заморочено с этим

Мария Крыжовникова
21.03.2025, 16:15
На видео чтение из панели - циклическое, а запись в панель по переднему фронту.
А у Вас и чтение и запись - циклические, т.е. Вы не даете панели записать что-либо в свои регистры, т.к. постоянно перезаписываете их значениями из ПЛК

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

kondor3000
21.03.2025, 17:17
Ох, спасибо большое, действительно помогло, хотя я преднамеренно пропустила этот шаг, т.к. он показался незначительным)

По одному биту записывать не очень правильно, биты можно передавать до 16 штук в одном регистре WORD, упаковывать и распаковывать биты в маску можно через точку.
например упаковка Mask.0:=b0; Mask.1:=b1; Mask.2:=b2; ........ Mask.15:=b15;
Распаковка b_0:=Mask1.0; b_1:=Mask1.1; b_02:=Mask1.2; ........b_15:=Mask1.15;
Читать, записывать регистры также как обычно.

In_Da_Cher_A
22.03.2025, 09:21
По одному биту записывать не очень правильно, биты можно передавать до 16 штук в одном регистре WORD,что делать с одним-двумя кнопками, переключателями? гонять WORD порожняком?

МихаилГл
22.03.2025, 09:38
Да уж лучше ворды гонять порожняком. Потом понадобится расширить проект, а свободные биты в регистрах уже есть...

In_Da_Cher_A
22.03.2025, 09:48
Да уж лучше ворды гонять порожняком. Потом понадобится расширить проект, а свободные биты в регистрах уже есть...ну если так смотреть, хотя у меня обычно потом мало меняется, чисто так, мелочи при наладке и после кдс2.3 всегда есть в запасе пара регистров выровнять память, да и что мешает добить в конец? но суть понятна

kondor3000
22.03.2025, 10:08
что делать с одним-двумя кнопками, переключателями? гонять WORD порожняком?

Если битов больше чем 1, то быстрее будет гонять WORD. Мало того если есть другие целочисленные подряд, то их можно передавать группами.
Если отдельно биты и целочисленные, то только по очереди.
В данном случае, все регистры вместе с REAL можно передать 1 запросом, массивом WORD и не надо даже REAL раскладывать на 2 WORD.

Валенок
22.03.2025, 19:14
Если битов больше чем 1, то быстрее будет гонять WORD
Если биты гоняются кучками 15/1..2-й функциями - то пофигу

dimon_ag
26.03.2025, 15:09
Доброго дня.
Хотел уточнить некоторые моменты по опросу панелью СП3xx-Р регистров Slave устройств.
Из инструкции: При опросе регистров (3x и 4x) панель создает групповые запросы, если разрыв между опрашиваемыми регистрами не превышает 4. Иными словами, регистры 4x0 и 4x05 будут считаны одним групповым запросом (6 регистров с 4x0), а 4x0 и 4x6 – двумя одиночными.
Т.е. получается, если у меня 3 экрана с последовательной нумерацией регистров допустим по 10 WORD регистров на каждом (всего 30 регистров), то находясь допустим на первом экране опрашиваться будут все 30 регистров?

kondor3000
26.03.2025, 15:16
Доброго дня.
Хотел уточнить некоторые моменты по опросу панелью СП3xx-Р регистров Slave устройств.
Из инструкции: При опросе регистров (3x и 4x) панель создает групповые запросы, если разрыв между опрашиваемыми регистрами не превышает 4. Иными словами, регистры 4x0 и 4x05 будут считаны одним групповым запросом (6 регистров с 4x0), а 4x0 и 4x6 – двумя одиночными.
Т.е. получается, если у меня 3 экрана с последовательной нумерацией регистров допустим по 10 WORD регистров на каждом (всего 30 регистров), то находясь допустим на первом экране опрашиваться будут все 30 регистров?

Да какая разница, 10 или 30. Тут важно, что 1 запросом панель может прочитать до 124 регистров, за 25-30 мс.
Если регистры в разнобой, то каждый запрос из 124 по 25-30 мс, итого почти 3,8 секунды, есть разница ?

dimon_ag
26.03.2025, 15:24
Вопрос выше не просто из любопытства.
Есть сборка, панель мастер и 4 слейва ПР103, сборка по ТСР. Так вот, на каждом слейве от 3 до 10 термопреобразователей. При отключенных датчиках все работает быстро без тормозов, просто шикарно. Но стоит начать подключать датчики панель начинает дико тормозить. Самое интересное что тормозит даже на окнах где нет регистров опрашиваемых датчиков. Складывается впечатление что регистры привязанные к аналоговым входам опрашиваются как то постоянно. Ошибка одна, по тайм ауту, добавление времени тайм аута не помогает.В проекте нет отключения последовательного опроса, внутренние регистры панели используются только на опрос ошибок и отключение слейв устройств.

dimon_ag
26.03.2025, 15:25
Да какая разница, 10 или 30. Тут важно, что 1 запросом панель может прочитать до 124 регистров, за 25-30 мс.
Если регистры в разнобой, то каждый запрос из 124 по 25-30 мс, итого почти 3,8 секунды, есть разница ?

Это понятно. Вопрос не совсем о том.

EFrol
26.03.2025, 15:28
Доброго дня.
Хотел уточнить некоторые моменты по опросу панелью СП3xx-Р регистров Slave устройств.
Из инструкции: При опросе регистров (3x и 4x) панель создает групповые запросы, если разрыв между опрашиваемыми регистрами не превышает 4. Иными словами, регистры 4x0 и 4x05 будут считаны одним групповым запросом (6 регистров с 4x0), а 4x0 и 4x6 – двумя одиночными.
Т.е. получается, если у меня 3 экрана с последовательной нумерацией регистров допустим по 10 WORD регистров на каждом (всего 30 регистров), то находясь допустим на первом экране опрашиваться будут все 30 регистров?

Опрашиваются только те, которые есть на текущем экране и глобальные.

dimon_ag
26.03.2025, 15:30
Да какая разница, 10 или 30. Тут важно, что 1 запросом панель может прочитать до 124 регистров, за 25-30 мс.
Если регистры в разнобой, то каждый запрос из 124 по 25-30 мс, итого почти 3,8 секунды, есть разница ?

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

kondor3000
26.03.2025, 15:30
Вопрос выше не просто из любопытства.
Есть сборка, панель мастер и 4 слейва ПР103, сборка по ТСР. Так вот, на каждом слейве от 3 до 10 термопреобразователей. При отключенных датчиках все работает быстро без тормозов, просто шикарно. Но стоит начать подключать датчики панель начинает дико тормозить. Самое интересное что тормозит даже на окнах где нет регистров опрашиваемых датчиков. Складывается впечатление что регистры привязанные к аналоговым входам опрашиваются как то постоянно. Ошибка одна, по тайм ауту, добавление времени тайм аута не помогает.В проекте нет отключения последовательного опроса, внутренние регистры панели используются только на опрос ошибок и отключение слейв устройств.

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

dimon_ag
26.03.2025, 15:31
Опрашиваются только те, которые есть на текущем экране и глобальные.

Почему тогда тормоза возникают если я подключаю датчик при открытом окне где их нет? Вот в чем непонятка.

dimon_ag
26.03.2025, 15:37
Панель тормозит не от подключения датчиков, а от отключённых слейвов или от неверных адресов регистров.
Если модуль отключен, его надо исключить из опроса, тогда не будет тормозов.

Тормозит по тайм-ауту других ошибок не показывает.
Да, нашел пару ошибок в адресах, но самое интересное не в том блоке который больше всех тормозит. И опять же неточности. Вы же пишете что опрашивает только переменные экрана. Но тормозит даже на тех экранах где 100% нет ошибок. И только при подключении датчиков. Вот и возник вопрос, а не опрашивает ли она групповым даже то чего нет на экране. Если так, то тогда все в елочку складывается.

kondor3000
26.03.2025, 15:46
Тормозит по тайм-ауту других ошибок не показывает.
Да, нашел пару ошибок в адресах, но самое интересное не в том блоке который больше всех тормозит. И опять же неточности. Вы же пишете что опрашивает только переменные экрана. Но тормозит даже на тех экранах где 100% нет ошибок. И только при подключении датчиков. Вот и возник вопрос, а не опрашивает ли она групповым даже то чего нет на экране. Если так, то тогда все в елочку складывается.

Вы же не выложили проект, если открыто окно, то оно открыто на каком то экране. Всё что есть на экране, включая ФО, таблицы и графики тоже опрашивается.
Так что открытое окно не показатель.
По поводу тайм -аута, рекомендуют уменьшить до 500 и ниже и число запросов поставить 0. Пробуйте.

dimon_ag
26.03.2025, 15:53
Вы же не выложили проект, если открыто окно, то оно открыто на каком то экране. Всё что есть на экране, включая ФО, таблицы и графики тоже опрашивается.
Так что открытое окно не показатель.

То что окна приплюсовываются к экрану это понятно.
А зачем выкладывать проект? Да и не маленький он.
Вопрос то прост. При групповом опросе уходит опрос за пределы открытого экрана или нет. Может на этот вопрос кто то точно ответить?
По поведению панели, складывается впечатление что уходит.
Проверить сам смогу только в понедельник, объект в другом городе. Хотелось бы к понедельнику выяснить эти вопросы.

dimon_ag
26.03.2025, 16:26
Вы же не выложили проект, если открыто окно, то оно открыто на каком то экране. Всё что есть на экране, включая ФО, таблицы и графики тоже опрашивается.
Так что открытое окно не показатель.
По поводу тайм -аута, рекомендуют уменьшить до 500 и ниже и число запросов поставить 0. Пробуйте.

тайм -аут Ниже 2000 вообще встает все. От 2500 до 3000 лучше, от 3000 непонятно но улучшения точно нет.

dimon_ag
26.03.2025, 16:41
Я так понял окна тревог по умолчанию глобальные?

HillZ
02.04.2025, 07:39
Для СП300 в принципе ничего не поменялось,
57365 57366
нужны только файлы драйверов Multi_Host и Multi_Slave
57363

при подключении руководствоваться тем же рисунком
https://owen.ru/forum/attachment.php?attachmentid=12746&d=1398336024
только перемычка конт. 1-5 для порта DOWNLOAD ведущей не нужна

Здравствуйте, подключил 2 панели СП307 к ПЛК110.32 по этому примеру и обнаружил странную ситуацию: если с СП307, которая является ведомой, через элемент цифровой ввод изменять значение переменной типа DWORD (float), то в ПЛК и СП307 которая host значения изменяются, а в ведомой СП307 на элементе цифровой ввод остается ноль. При этом если так же через цифровой ввод изменять значение в СП307 host, то в ней значение цифрового ввода изменяется, в ПЛК тоже изменяется, а в ведомой СП307 все так же ноль. такой результат получается если включить в СП307 "изменить порядок регистров", если же этого не делать то все работает как положено, но тогда значение в ПЛК принимает не правильный вид.

kondor3000
02.04.2025, 07:58
Здравствуйте, подключил 2 панели СП307 к ПЛК110.32 по этому примеру и обнаружил странную ситуацию: если с СП307, которая является ведомой, через элемент цифровой ввод изменять значение переменной типа DWORD (float), то в ПЛК и СП307 которая host значения изменяются, а в ведомой СП307 на элементе цифровой ввод остается ноль. При этом если так же через цифровой ввод изменять значение в СП307 host, то в ней значение цифрового ввода изменяется, в ПЛК тоже изменяется, а в ведомой СП307 все так же ноль. такой результат получается если включить в СП307 "изменить порядок регистров", если же этого не делать то все работает как положено, но тогда значение в ПЛК принимает не правильный вид.

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

FUNCTION S_W : REAL
VAR_INPUT
ai:REAL;
END_VAR
VAR
p: POINTER TO DWORD;
END_VAR
___________________________________________
p:=ADR(ai);
p^:=ROL (p^,16);
S_W:=ai;

HillZ
02.04.2025, 09:34
Регистры в панелях можно не переставлять, можно переставить в одной из панелей или в двух панелях, на крайняк можно переставить в самом ПЛК, используя функцию.

FUNCTION S_W : REAL
VAR_INPUT
ai:REAL;
END_VAR
VAR
p: POINTER TO DWORD;
END_VAR
___________________________________________
p:=ADR(ai);
p^:=ROL (p^,16);
S_W:=ai;

Спасибо. С помощью вашей функции получилось избавиться от проблемы

dimon_ag
02.04.2025, 19:15
Да какая разница, 10 или 30. Тут важно, что 1 запросом панель может прочитать до 124 регистров, за 25-30 мс.
Если регистры в разнобой, то каждый запрос из 124 по 25-30 мс, итого почти 3,8 секунды, есть разница ?

Не может.
(Из технического описания): Панель автоматически формирует групповые запросы к slave-устройствам. Если в
групповой запрос входит номер регистра, который отсутствует в slave-устройстве (что характерно
для устройств с «рваными» или формируемыми пользователем картами регистров), то в ответ
вместо данных приходит сообщение с кодом ошибки. Максимальное число опрашиваемых
регистров в одном групповом запросе – 16.
В моем случае были рванные регистры. Перелопатил все карты регистров, проблема ушла но вопросы остались.
Выстроил на экране все в ряд и получил новую проблему. Данные DWORD перестали отображаться. При подсчете выяснилось, что крайний регистр оказывается 17-ым, соответственно при опросе дробится элемент DWORD и рушит весь опрос. Пришлось сделать отмену группового опроса (Из технического описания): Во время опроса регистров (3x и 4x) панель создает групповые запросы, если разрыв между
опрашиваемыми регистрами не превышает 4. Иными словами, регистры 4x0 и 4x5 будут считаны
одним групповым запросом (6 регистров с 4x0), а 4x0 и 4x6 – двумя одиночными.
Чтобы отключить автоформирование групповых запросов следует в настройках каждого из
элементов, участвующих в опросе, поставить галочку Дин. адр. и указать регистр, который не
используется панелью (т. е. его значение всегда равно 0).
После этих манипуляций все заработало, но танцы с бубном еще те.
Решил описать ситуацию, может кому пригодится.

kondor3000
02.04.2025, 20:41
Выстроил на экране все в ряд и получил новую проблему. Данные DWORD перестали отображаться. При подсчете выяснилось, что крайний регистр оказывается 17-ым, соответственно при опросе дробится элемент DWORD и рушит весь опрос.
Чтобы отключить автоформирование групповых запросов следует в настройках каждого из
элементов, участвующих в опросе, поставить галочку Дин. адр. и указать регистр, который не
используется панелью (т. е. его значение всегда равно 0).
После этих манипуляций все заработало, но танцы с бубном еще те.
Решил описать ситуацию, может кому пригодится.

Потратили кучу времени, чтобы сделать всё через одно место, вместо ускорения обмена, вы его замедлили. Даже если читать по 16 регистров,
все равно, это в 16 раз быстрее чем по одному.
Всё что надо было сделать, правильно расположить регистры, чтобы DWORD не разрывало.
Обычно ставят Маски бит по 16 шт, потом целочисленные, потом 32 битные, если 32 битная попадает в нечётный адрес,
добавляют 1 резервный регистр, смещая все 32 битные на чётные адреса, всё !!!
16 регистров, это 8 шт. DWORD, как он может попасть в нечетный адрес, чтобы его разделило, известно только вам

Vladimir84
02.04.2025, 22:22
Добрый день!

Подскажите, чем можно открыть файл XJT из библиотеки. GIMP не поддерживает.

dimon_ag
03.04.2025, 07:35
Потратили кучу времени, чтобы сделать всё через одно место, вместо ускорения обмена, вы его замедлили. Даже если читать по 16 регистров,
все равно, это в 16 раз быстрее чем по одному.
Всё что надо было сделать, правильно расположить регистры, чтобы DWORD не разрывало.
Обычно ставят Маски бит по 16 шт, потом целочисленные, потом 32 битные, если 32 битная попадает в нечётный адрес,
добавляют 1 резервный регистр, смещая все 32 битные на чётные адреса, всё !!!
16 регистров, это 8 шт. DWORD, как он может попасть в нечетный адрес, чтобы его разделило, известно только вам

Все так и сделано как вы описали. Сначала первыми маски стоят, потом WORD, и только потом DWORD. То что надо подгонять число регистров под групповой опрос тоже понятно. И про разрыв тоже понятно.
Не понятно только почему господа "шаблонщики" этих нюансы с групповым опросом в прошлую среду не объяснили, а тихонечко слились?
У самого же ушло время, потому что информация про опрос в 16 регистров в встроенной инструкции нет, а в инструкции с сайта есть.
Спасибо никому не скажу, т.к. самому пришлось во всех этих корявых недоделанных инструкциях разбираться. Да инфа в 124 регистра сильно с пути сбила.

kondor3000
03.04.2025, 07:56
Добрый день!

Подскажите, чем можно открыть файл XJT из библиотеки. GIMP не поддерживает.

В панели можно использовать многие форматы, png, jpg, bmp 82846 Это всё работает в панели СП3хх.
Картинки в xjt запоминаются при создании дисплеев, кнопок, индикаторов, прямо в панели из тех же png, jpg, bmp
Картинки GIMP, в своём редакторе тоже можно конвертировать в те же png, jpg, bmp, на сколько понял.

petera
03.04.2025, 10:52
Не может.
(Из технического описания): Панель автоматически формирует групповые запросы к slave-устройствам. Если в
групповой запрос входит номер регистра, который отсутствует в slave-устройстве (что характерно
для устройств с «рваными» или формируемыми пользователем картами регистров), то в ответ
вместо данных приходит сообщение с кодом ошибки. Максимальное число опрашиваемых
регистров в одном групповом запросе – 16.


Но иногда панель МОЖЕТ формировать групповые запросы к слейву с количеством регистров больше чем 16.
Это тот случай, когда на экране есть таблица
Таблицы в группировке с другими элементами экрана не участвуют. Для таблиц всегда будут свои групповые(если столбцов несколько) или одиночные(если только один столбец) запросы к слейву.
Таблица представлена массивом структур.
Формат структуры и количество регистров в ней определяется количество столбцов и типом данных в каждом столбце.
Таблицы читаются построчно. Причем второе правило "максимальное число регистров в групповой команде чтения не может превышать 16" на таблицы не распространяется, в одной группе будет столько регистров, сколько нужно для одной строки, хоть 125!
Запросы на чтение строк разнесены по разным циклам выполнения программы.
В каждом цикле читаются все регистры только одной строки
Например
Дисплей и таблица 1 столбец 3 строки
82850 82851
1. чтение 4х0 (дисплей)
2. чтение 4х2 (первая строка таблицы)
3. чтение 4х0 (дисплей)
4. чтение 4х3 (вторая строка таблицы)
5. чтение 4х0 (дисплей)
6. чтение 4х4 (третья строка таблицы)
и т.д.
Дисплей и таблица 10 столбцов DWORD 3 строки
82852
1. чтение 4х0 (дисплей)
2. чтение группы 4х2, 4х3...4х21 (первая строка таблицы 20 регистров в запросе)
3. чтение 4х0 (дисплей)
4. чтение группы 4х22, 4х23...4х41 (вторая строка таблицы 20 регистров в запросе)
5. чтение 4х0 (дисплей)
6. чтение группы 4х42, 4х43...4х61 (третья строка таблицы 20 регистров в запросе)
и т.д.

petera
04.04.2025, 10:47
Макросами по 120 регистров и нет проблем
Да и всякую фигню типа "нет устройства - надо отключать чево то" можно забыть если руки/голова есть

Надо проверить, может и не один запрос из 120 регистров будет

petera
04.04.2025, 11:40
Ключевое слова - макросами. Вы там сами указываете сколько

Так и ф.области при копировании регистров можно самому указать - 120 регистров, но панель эти 120 разобьет на 7 запросов по 16 регистров + один запрос из 8 регистров.

petera
06.04.2025, 10:22
Что делает панель с ф.областями - мне пофиг. Макрос это описание запроса. Запрос или выполняется или нет.
Есть желание проверять - проверяйте.


---
Я не грублю. Если что - извините.
Читаете в панели макросом с 0, 120шт.
Руками открываете порт на ПЛК, просто читаете что прилетело. Ожидается:
адрес,3,0,0,0,120,crc,crc

Я когда-то проверял просто по времени. 7x16 никогда не сравняется с 1x120

Я проверил, Вы правы - 120 регистров в одном запросе

starmos
12.04.2025, 11:28
Здравствуйте. Есть панель СП300. Она опрашивает данные с устройства по нажатию кнопки (функция Нажата). Т.е. нажали, опросили устройство один раз. Но что будет, если связи с устройством нет, или связь плохая (пакет пришел с ошибкой, таймаут ответа)? Будет ли панель пытаться повторить запрос до получения адекватного ответа, иои отправила запрос один раз и пришло, не пришло = как получится?

kondor3000
12.04.2025, 12:06
Здравствуйте. Есть панель СП300. Она опрашивает данные с устройства по нажатию кнопки (функция Нажата). Т.е. нажали, опросили устройство один раз. Но что будет, если связи с устройством нет, или связь плохая (пакет пришел с ошибкой, таймаут ответа)? Будет ли панель пытаться повторить запрос до получения адекватного ответа, иои отправила запрос один раз и пришло, не пришло = как получится?

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

starmos
14.04.2025, 10:37
По вашему отправляется 1 запрос, значит один и будет. Ну или 3 запроса ( если 3 повтора в настройках)
Вопрос в другом, как у вас этот запрос формируется? Вы даже проект не выложили и ничего на написали, какой прибор.

Я не могу вам выложить весь проект, потому что автор не я. Но запрос формируется по нажатию кнопки на экране - "Копировать Откуда ... Куда ..." в такой форме, несколько регистров копируются из контроллера Сегнетикс в панель типа СП300.
А где настроить повторы?

kondor3000
14.04.2025, 10:42
А где настроить повторы?

В настройках панели.

EFrol
14.04.2025, 10:43
Я не могу вам выложить весь проект, потому что автор не я. Но запрос формируется по нажатию кнопки на экране - "Копировать Откуда ... Куда ..." в такой форме, несколько регистров копируются из контроллера Сегнетикс в панель типа СП300.
А где настроить повторы?

Используется элемент "Функциональная кнопка". Перенесите все команды в элемент "Функциональная область" - в ней можно настроить периодичность или условия вызова.

Ollema
24.04.2025, 15:20
Если произошла потеря связи, и количество попыток по TCP исчерпано, панель как мастер перестанет опрашивать слейв насовсем? Можно ли как то сделать, чтобы связь сама восстанавливалась если, допустим, слейв отключали и затем включили?

kondor3000
24.04.2025, 15:42
Если произошла потеря связи, и количество попыток по TCP исчерпано, панель как мастер перестанет опрашивать слейв насовсем? Можно ли как то сделать, чтобы связь сама восстанавливалась если, допустим, слейв отключали и затем включили?

Проверьте с такими настройками https://owen.ru/forum/showthread.php?t=24895&p=252627&viewfull=1#post252627

А здесь, что делать, чтобы панель не зависала (отключение слейва) https://owen.ru/forum/showthread.php?t=37464

Ollema
25.04.2025, 07:38
Спасибо.
Я забил максимальное значение количества попыток, в панели сохранилось почему то значение -159383553. Связь вроде восстанавливается после потери.

Не пойму, где настраивается частота опроса мастером слейвов?

Ollema
25.04.2025, 08:04
Как вообще узнать, что обмен отвалился? Если ставишь галочку на Экспорт статуса связи, то в регистрах накапливаются ошибки и не сбрасываются при возобновлении обмена. Неужели городить костыли в виде таймера и подсчета неизменившихся ошибок?

kondor3000
25.04.2025, 08:15
Спасибо.
Я забил максимальное значение количества попыток, в панели сохранилось почему то значение -159383553. Связь вроде восстанавливается после потери.

Не пойму, где настраивается частота опроса мастером слейвов?

Как у вас ошибки стали -159383553, если там все регистры WORD, максимальное 65535, который сам сбросится по достижении 65535.
К тому же зачем их сбрасывать, если связь хорошая, то ошибки не меняются. Как стоит 12345, так и останется.

Ollema
25.04.2025, 08:31
Как у вас ошибки стали -159383553, если там все регистры WORD, максимальное 65535, который сам сбросится по достижении 65535.

Да вот так:
83411

Ollema
25.04.2025, 08:32
Как стоит 12345, так и останется.

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

kondor3000
25.04.2025, 08:37
И как я программно должен догадаться, что связь восстановилась? Городить таймер и проверять изменилось ли значение? Таких костылей я еще не видел...

Вы вместо возмущения, открыли бы сами руководство, там есть и системная панель с битами, показывающие обмен, и по 485 и по ТСР.
Может уже начнёте сами читать, а не на форуме плакаться?

Ollema
25.04.2025, 08:46
Я параллельно это делаю))

Ollema
25.04.2025, 09:12
Нашел PSB54, который указывает на наличие ошибок чтения TCP слейва 1. Правда, он периодически сам сбрасывается в 0 даже при отсутствии обмена. Но это уже мелочи.

Ollema
26.04.2025, 17:40
Сделал так:
Поставил время ожидания 10, таймаут 2000, попыток 2.
После потери связи по TCP (просто выдергивал разъем RJ45) признак-бит PSB54 обнуляет опрашиваемый регистр, в одном бите которого со слейва всегда передается 1.
Этот обнуленный бит и является однозначным признаком потери связи по TCP.
Если через некоторое время опрос возобновляется (вставлял разъем обратно) - обмен восстанавливается.

Ollema
28.04.2025, 10:50
В макросах комментарии на русском не поддерживаются? У меня сохраняются кракозябры вместо русских букв...

Alex9090
30.04.2025, 16:04
Доброго времени суток.
Вопрос как сделать что бы после ввода пароля доступ закрывался после 2-х минут или как сделать что был автоматический переход с экрана 2 на экран 1 (не заставка в настройках проекта) после
2-х минут

Alex9090
30.04.2025, 16:09
Панель СП307

kondor3000
30.04.2025, 18:34
Доброго времени суток.
Вопрос как сделать что бы после ввода пароля доступ закрывался после 2-х минут или как сделать что был автоматический переход с экрана 2 на экран 1 (не заставка в настройках проекта) после
2-х минут
Не надо писать по 2 раза одно и тоже
https://owen.ru/forum/showthread.php?t=41290&p=463272&viewfull=1#post463272

ЕВГЕНИЙ0303
25.05.2025, 19:21
Здравствуйте. Есть ли возможность выбора максимума аналогового дисплея в зависимости от значения какого либо регистра? Соответственно менять размеры зон предупреждения и аварии?

kondor3000
25.05.2025, 19:51
Здравствуйте. Есть ли возможность выбора максимума аналогого дисплея в зависимости от значения какого либо регистра? Соответственно менять размеры зон предупреждения и аварии?

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

ЕВГЕНИЙ0303
26.05.2025, 09:16
Есть в настройках Дисплея, в Масштабировании, поставить галку и выбрать регистр 83995
Масштабировать можно как вводимые, так и отображаемые данные как через регистры, так и напрямую
Доброго времени суток.
Возможно я не точно написал в первый раз, но меня интересует другой дисплей
Хотелось бы, что бы были такие же функции как у цифрового. Либо какая нибудь сигнализация (изменение цвета, частота мерцания,...) при выходе значений из определенного диапазона при использовании цифрового дисплея.

DanilGlige
02.06.2025, 00:37
что делать, если подключил ,во время того как панель сп307 овен была поключена к пч по rs485, usb адаптер и загрузил в неё проект. и теперь download порт не обменивается по 485 интерфейсу. Конфигурация правильная, все настройки верные. С пч все тоже хорошо.

kondor3000
02.06.2025, 07:48
что делать, если подключил ,во время того как панель сп307 овен была поключена к пч по rs485, usb адаптер и загрузил в неё проект. и теперь download порт не обменивается по 485 интерфейсу. Конфигурация правильная, все настройки верные. С пч все тоже хорошо.

Вряд ли умер порт, скорее всего ошиблись в настройках или помехи от ПЧ.
Проверить работу портов без ПЧ, любым модулем можно или ОРС сервером.
ОРС от Инсат, может быть и мастером и слейвом https://owen.ru/product/opc_server_insat

KoT'86
22.06.2025, 12:18
Первая панель СП307 подключена к ПЛК как "хост сети"... для корректного отображения значения в формате float, в настройках порта PLC поставлена галочка "Изменить порядок регистров". Последующие панели подключены к первой как "ведомые"... на них те же регистры отображаются не корректно. Изменял в разных комбинациях галочки "Изменить порядок регистров" на порте Download первой панели и на порте PLC последующих, к успеху это не привело. Может кто сталкивался?

Валенок
22.06.2025, 14:16
...
Один и тот же читаемый флоат прочти и отобрази на всех панелях не как флоат а как dword:hex c 8-знаками и галкой "ведущий ноль". Сразу станет ясно кто как переставляет и читает ли вообще.

KoT'86
22.06.2025, 16:26
Спасибо! Уже решил.

lordromanoff
26.06.2025, 13:05
День добрый. Подскажите столкнулся с проблемой. СП307, 2 экрана (Основной и настройки) кнопка,скопирована с одного экрана на другой, настроена в режиме инверсии, на одном работает на другом нет. Тоже самое с насосом, на одном экране отображение анимации работает на другом нет. п.с. Кнопки и насос скопированы на другой экран ctrl+c ctrl+v/

kondor3000
26.06.2025, 13:44
День добрый. Подскажите столкнулся с проблемой. СП307, 2 экрана (Основной и настройки) кнопка,скопирована с одного экрана на другой, настроена в режиме инверсии, на одном работает на другом нет. Тоже самое с насосом, на одном экране отображение анимации работает на другом нет. п.с. Кнопки и насос скопированы на другой экран ctrl+c ctrl+v/

Откройте настройки и посмотрите в чём дело, скорее всего надо изменить адрес бита в кнопке или проверить ФО (функц. область) локальная или глобальная.

lordromanoff
26.06.2025, 14:13
Это первое что я сделал. Все глаза стер, где то что то я глобальное упустил.84539 84540 84541 84542 все локальное.

kondor3000
26.06.2025, 14:20
Это первое что я сделал. Все глаза стер, где то что то я глобальное упустил. все локальное.

Насосы у вас 0 бит, а кнопки 2 бит, конечно они не будут включать.
Для включения бит и регистр должен совпадать

lordromanoff
27.06.2025, 08:59
Там немного логика другая, насосы включаются как с кнопки так и автоматически с ПР. Анимация просто статус насоса. Да и на странице настроек все работает корректно.

mstashnev
09.07.2025, 15:40
Здравствуйте! На "операционном столе" два "пациента": СП-307 и Контроллер серии Optimus Drive AC. Обмен организован по сети ethernet. Проект СП-307 состоит из 3-х экранов и одного окна. Хотелось больше, но... При вызове не главного экрана или окна, при изменении переменных или при возврате на главное окно сеть (обмен) пропадает. Происходит это рандомно, и восстанавливается также без какой либо зависимости. Прочитал про глобальные и локальные переменные:
"Особенности работы по протоколу Modbus: 1. Панель опрашивает другие устройства только с помощью элементов, расположенных на открытом в данный момент экране. В значительном количестве случаев представляется удобным организовать опрос через глобальную функциональную область и привязывать к графическим элементам соответствующие внутренние регистры панели."
Появилось мнение, что все проблемы связаны с этим, но как реализовать "опрос через глобальную функциональную область..." ни в одном примере не нашел, в руководстве также не нашел.
Прошу Вас оказать помощь в данном вопросе. И вообще там ли я "копаю".

kondor3000
09.07.2025, 16:18
Появилось мнение, что все проблемы связаны с этим, но как реализовать "опрос через глобальную функциональную область..." ни в одном примере не нашел, в руководстве также не нашел.
Прошу Вас оказать помощь в данном вопросе. И вообще там ли я "копаю".

Делаете ФО глобальной, ей копируете все регистры из 4х0 в PSW300. 84760
Далее используете в проекте. Желательно сделать группой, если они по порядку.
Нас скрине копирование группы из 32 регистров подряд

Arsmers
14.07.2025, 15:00
Здравствуйте. Во время разработки проекта в связке RegulR500 и панели ОВЕН Сп310Р возникла необходимость использовать исторические тренды и историческую таблицу. Всего на панель передается 36 аналоговых сигналов, по ним соответственно пишутся тренды. Так же с панели реализовано изменение уставок и прочий функционал. Общее количество передаваемые данных по Modbus +- 1000 переменных типа word. В исторической таблице создано примерно 600 сообщений. При загрузке такого проекта в панель скорость изменения данных на мнемосхемах становится примерно 30 секунд (изменения на цифровой дисплее на панели происходят спустя 30 секунд после изменения на контроллере). Скорость modbus 115200. Судя по всему достигнут предел производительности панели. Из-за чего может происходить такое резкое падение производительности панели? Есть ли какие нибудь способы оптимизации проекта?

kondor3000
14.07.2025, 15:55
Здравствуйте. Во время разработки проекта в связке RegulR500 и панели ОВЕН Сп310Р возникла необходимость использовать исторические тренды и историческую таблицу. Всего на панель передается 36 аналоговых сигналов, по ним соответственно пишутся тренды. Так же с панели реализовано изменение уставок и прочий функционал. Общее количество передаваемые данных по Modbus +- 1000 переменных типа word. В исторической таблице создано примерно 600 сообщений. При загрузке такого проекта в панель скорость изменения данных на мнемосхемах становится примерно 30 секунд (изменения на цифровой дисплее на панели происходят спустя 30 секунд после изменения на контроллере). Скорость modbus 115200. Судя по всему достигнут предел производительности панели. Из-за чего может происходить такое резкое падение производительности панели? Есть ли какие нибудь способы оптимизации проекта?

Надо делать групповой опрос регистров. Чем больше переменных в одном запросе, тем меньше времени на опрос.
В панели мастере, делать опрос макросами (похуже группой регистров через ФО, функц. область).
Все битовые загнать в маски бит, скомпоновать регистры по типу.
И самое главное, убрать все неиспользованные регистры (не подключенные слейвы).

Arsmers
16.07.2025, 14:25
‎Спасибо за ответ.
‎Нам удалось немного оптимизировать проект (сейчас время обновления информации на панели составляет примерно 1-1.5 секунды).
‎Функциональные области c копированием нужных областей регистров modbus во внутреннюю память панели мы не используем, а привязки к элементам на графике осуществляются непосредственно к считываемым регистрам Modbus.
‎Из мануалов узнали, что "панель производит опрос только с помощью элементов, расположенных на открытом в данный момент экране".

‎Итак, что помогло оптимизировать проект:
‎1. Со всех мнемосхем удалили так называемые быстрые журналы возникающих событий. В конфигураторе они называются "Таблицы событий реального времени"
‎2. Уменьшили количество возможных сообщений в элементе "Историческая таблица" с примерно 600 сообщений до примерно 100 сообщений.
‎3. Убрали с проекта "Архивирование на USB".

‎После этих действий скорость отображения стала приемлемой.
‎Скажите, как правильно настраивать журналы событий\исторические таблицы\архивирование на USB, чтобы не грузить панель ? У нас получилось так, что дело было в этих функциях.

In_Da_Cher_A
16.07.2025, 14:46
как правильно настраивать журналы событий\исторические таблицы\архивирование на USB, чтобы не грузить панель ?перестать заниматься ерундой и пихать на панель всё что в голову придёт
Это не АРМ скады с сервером на Ай9, это древняя китайская панель и всё что она может - показывать картинки с небольшим числом параметров вместо показывающих приборов
ни на что другое она не способна
цепляйте в сетку нормальную скаду и там ахивируйте

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

Убрали с проекта "Архивирование на USBвот кому это нужно было делать, а? кто потом собирался сидеть и смотреть эти "архивы"?
просто такое ощущение, что у программиста очень много свободного времени и он просто делал вс это чтобы отмазаться от вопросов начальника чем он занимается столько времени

1exan
16.07.2025, 17:03
‎Спасибо за ответ.
‎Нам удалось немного оптимизировать проект (сейчас время обновления информации на панели составляет примерно 1-1.5 секунды).
‎Функциональные области c копированием нужных областей регистров modbus во внутреннюю память панели мы не используем, а привязки к элементам на графике осуществляются непосредственно к считываемым регистрам Modbus.
‎Из мануалов узнали, что "панель производит опрос только с помощью элементов, расположенных на открытом в данный момент экране".

‎Итак, что помогло оптимизировать проект:
‎1. Со всех мнемосхем удалили так называемые быстрые журналы возникающих событий. В конфигураторе они называются "Таблицы событий реального времени"
‎2. Уменьшили количество возможных сообщений в элементе "Историческая таблица" с примерно 600 сообщений до примерно 100 сообщений.
‎3. Убрали с проекта "Архивирование на USB".

‎После этих действий скорость отображения стала приемлемой.
‎Скажите, как правильно настраивать журналы событий\исторические таблицы\архивирование на USB, чтобы не грузить панель ? У нас получилось так, что дело было в этих функциях.

Флешку не пробовали другую?

yaroslavcik
18.07.2025, 16:18
Здравствуйте,
Не могу разобраться с историческим графиком. Нужно Отображать на одном листе графика 10 дней, максимальная глубина архива 50 дней
в инструкции написано следующее:
84937
Не могу понять от слова совсем как настроить то, что нужно
Панель 10" , размеры графика 575х323

Я настроил так
84938

т.е. 10 дней (864000 Секунд) / 565 (ширина графика) = 1529 - округлил до 1500, но кажется это ерунда, как связать с этим количество точек на странице...

kondor3000
18.07.2025, 16:21
Здравствуйте,
Не могу разобраться с историческим графиком. Нужно Отображать на одном листе графика 10 дней, максимальная глубина архива 50 дней
в инструкции написано следующее:
Не могу понять от слова совсем как настроить то, что нужно
Панель 10" , размеры графика 575х323

И как часто у вас запись происходит? Подробнее.

yaroslavcik
18.07.2025, 16:29
данные меняются 1 раз в 12 часов (беру данные с модуля мэ210-701, из профиля мощности, срез 12 часов)
теперь эти 12-ти часовки нужно размазать на 10 дней и уместить в одном окне графика

kondor3000
18.07.2025, 16:35
данные меняются 1 раз в 12 часов (беру данные с модуля мэ210-701, из профиля мощности, срез 12 часов)
теперь эти 12-ти часовки нужно размазать на 10 дней и уместить в одном окне графика

2 раза в день, 20 срезов за 10 дней, через 43200 секунд каждый срез

yaroslavcik
18.07.2025, 16:38
2 раза в день, 20 срезов за 10 дней, через 43200 секунд каждый срез

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

Спасибо.

starmos
21.07.2025, 07:17
У меня не совсем вопрос. У меня непонимание. Я сделал проект для панели СП307. Там используется Цифровой дисплей, с параметрами разрядности Float: Всего знаков: 4 и Дробная часть: 1. В моем наивном понимании это означает отображение чисел в диапазоне: 000,0 ... 999,9. Пусть и со знаком. Вместо этого, при неподключенном датчике мне панель отображает следующее: 1,0 +04. Это что вообще? Как это соотносится с выставленными параметрами? И зачем тогда выставлять эти параметры, если разработчикам ОВЕН на них начхать? Если у вас число не влазит в выбранный формат, то пишите например ЕЕЕ,Е? Или что-нибудь подобное, но что за "колхоз" у вас вместо этого?

kondor3000
21.07.2025, 07:48
У меня не совсем вопрос. У меня непонимание. Я сделал проект для панели СП307. Там используется Цифровой дисплей, с параметрами разрядности Float: Всего знаков: 4 и Дробная часть: 1. В моем наивном понимании это означает отображение чисел в диапазоне: 000,0 ... 999,9. Пусть и со знаком. Вместо этого, при неподключенном датчике мне панель отображает следующее: 1,0 +04. Это что вообще? Как это соотносится с выставленными параметрами? И зачем тогда выставлять эти параметры, если разработчикам ОВЕН на них начхать? Если у вас число не влазит в выбранный формат, то пишите например ЕЕЕ,Е? Или что-нибудь подобное, но что за "колхоз" у вас вместо этого?

Для начала надо проверить правильность передачи регистров и байт с подключённым датчиком, а так же написать какой модуль (датчик).
1,0 +04 это 10000, у вас максимум 999.9 так что всё логично, знаков не хватает. Также возможно модуль передаёт ошибку, тут надо всё проверять.
Если отображает не верно, возможно надо поставить галку, Переставить регистры в настройках панели, переменная Float состоит из 2 регистров (4 байта)

In_Da_Cher_A
21.07.2025, 07:59
чисто абстрактно
вам не нравится, как условно, пусть будет "овен", решил отображать число в каком-то случае в экспоненциальном виде, стандартизированной нотации, понятной всем, кто связан с информатикой и программированием
и у вас с этого бомбит
вы хотите чтобы это было по-другому. например ЕЕЕ или ФФФ, вам же надо "подобное"?
я правильно понимаю, что это чисто ваши вкусовые субъективные личностные предпочтения и хотелки и вы не знаете, что такое экспоненциальный вид записи числа?

starmos
21.07.2025, 12:26
чисто абстрактно
вам не нравится, как условно, пусть будет "овен", решил отображать число в каком-то случае в экспоненциальном виде, стандартизированной нотации, понятной всем, кто связан с информатикой и программированием
и у вас с этого бомбит
вы хотите чтобы это было по-другому. например ЕЕЕ или ФФФ, вам же надо "подобное"?
я правильно понимаю, что это чисто ваши вкусовые субъективные личностные предпочтения и хотелки и вы не знаете, что такое экспоненциальный вид записи числа?

Меня "бомбит" от того, что я средствами Конфигуратора от ОВЕН настроил нужный мне формат отображения числа. А вместо этого отображается абы что. Я конечно решил проблему, но если вы (допустим ОВЕН) сами определяете параметры настройки отображения, так почему не следуете собственным же параметрам? Вот в чем дело. Мое предложение про ЕЕЕ - и было просто предложением и все, но которое позволило бы разработчиками ОВЕН вписаться в их же формат, если бы им было не начхать. А для разработчика системы, т.е. в данном случае меня, важно чтобы отображалось то, что задано, потому что "экспоненциальная запись" вылазит за границы элемента, что для у конечного заказчика неприятный "осадок" оставляет.

Валенок
21.07.2025, 18:48
To starmos
Так понял что пытаясь налить 0.5 в рюмку, вы предъявляете производителю рюмки за мокрый стол?

In_Da_Cher_A
23.07.2025, 13:50
Меня "бомбит" от того, что я средствами Конфигуратора от ОВЕН настроил нужный мне формат отображения числа. А вместо этого отображается абы что. Я конечно решил проблему, но если вы (допустим ОВЕН) сами определяете параметры настройки отображения, так почему не следуете собственным же параметрам? Вот в чем дело. Мое предложение про ЕЕЕ - и было просто предложением и все, но которое позволило бы разработчиками ОВЕН вписаться в их же формат, если бы им было не начхать. А для разработчика системы, т.е. в данном случае меня, важно чтобы отображалось то, что задано, потому что "экспоненциальная запись" вылазит за границы элемента, что для у конечного заказчика неприятный "осадок" оставляет.
а меня вот лично бомбит от того, что в 1961 году, наши деды и прадеды запустили первыми в мире ракету с человеком в космос, не имея телефонов, калькуляторов и компьютеров, а только логарифмическую линейку и в лучшем случае механический арифмометр, у которого крутили ручку

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

а спустя каких-то 70 лет, потомок тех китайцев, за вас подумал "а вдруг белый господин поставит галочку на 4 знака, а сам подаст сигнал в 5 знаков, что тогда делать?" и написал за вас алгоритм, обработки превышения ограничений поставленных пользователем и сделал автоматический перевод в экспоненциальный формат, чтобы всё-таки постараться дать белому господину информацию о значении его параметра, вдруг это для него важно будет?

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

както вот так вот это всё выглядит

EFrol
23.07.2025, 15:12
Просто мы хотим быть всегда первыми!!! Тогда быть первыми в космосе, а теперь первыми в ж...е. Ну согласитесь. У нас же хорошо и это получается.

yaroslavcik
24.07.2025, 10:39
Здравствуйте, подскажите, пожалуйста, как передать переменную типа DT из ПЛК в панель
Данные будут передаваться в "таблицу отображения данных. В инструкции написано что тип данных DT содержит 6 слов

84979

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

kondor3000
24.07.2025, 10:48
Здравствуйте, подскажите, пожалуйста, как передать переменную типа DT из ПЛК в панель
Данные будут передаваться в "таблицу отображения данных. В инструкции написано что тип данных DT содержит 6 слов

84979

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

Разложите, преобразуйте в STRING и передавайте в панель. Отображение тоже в STRING

yaroslavcik
24.07.2025, 11:47
теперь возник следующий вопрос как перевести в стринг (в панели занимает 3 слова), oscat basic не нашел такой функции

извиняюсь за глупый вопрос...

petera
24.07.2025, 11:51
Здравствуйте, подскажите, пожалуйста, как передать переменную типа DT из ПЛК в панель
Данные будут передаваться в "таблицу отображения данных. В инструкции написано что тип данных DT содержит 6 слов

84979

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

Если панель мастер, то положить в слейве ПЛК шесть регистров по порядку возрастания адресов для Год, Месяц, День, Час, Мин, сек
адрес регистра Год - насальный адрес для столбца таблицы
ЗАМЕЧАНИЕ
Значения д.б. в BCD(двоично-десятичном) формате
https://owen.ru/forum/attachment.php?attachmentid=84982&d=1753346828

yaroslavcik
24.07.2025, 12:06
кажется что то делаю не так
84984

84985

84986

посмотрел приме (спасибо за него), вроде все так, кроме того что я читаю с входных регистров (0х3)

yaroslavcik
24.07.2025, 12:40
84991
84992

В итоге все показывает кроме даты

petera
24.07.2025, 13:56
84991
84992

В итоге все показывает кроме даты

Должно показывать
85001

yaroslavcik
24.07.2025, 13:59
а в плк нужно из word переводить в BCD?, потому что у меня сейчас именно так, как у вас на картинке

petera
24.07.2025, 14:12
а в плк нужно из word переводить в BCD?, потому что у меня сейчас именно так, как у вас на картинке
Переменные для штампа времени в панели всегда - BCD формат.
По этому если в ПЛК обычный двоичный формат, то в таблице для цифр > 9 будет ерунда. Например, вместо 2025 будет 7e9

yaroslavcik
25.07.2025, 04:13
Да, заработало, сделал преобразование в плк word_to_bcd и дата/время начали отображаться на панели корректно
85014

Спасибо за помощь!

PureHorror
03.08.2025, 10:51
Подскажите, имеется панель оператора СП310р подключённая к сети ethernet видимо через modbus tcp, к контроллеру и датчикам (не более 6) климата, задача мониторинг диспетчером, но у диспетчера 4 монитора и смотреть ещё на выносную панель не удобно, хочу докинуть в один из мониторов на виртуалке мониторинг, эмуляция в конфигураторе работает плохо да не более 25 минут, я не асутпшник,но вроде понимаю как устроена логика, как можно реализовать , подойдёт ли SCADA-система Owen Monitor? или надо что то более навороченое+ орс сервер или MasterSCADA 4D? Или есть простой вариант передавать данные с панели в браузер (как на apc упс) или альтернативную систему?

МихаилГл
03.08.2025, 11:22
Рапид скаду юзай, она еще и бесплатна. Для мониторинга пойдет.

PS Только не с панели, а с плк и датчиков, как и сама панель.

PureHorror
03.08.2025, 11:38
Спасибо, скада вроде понятная, но при добавлении устройства modbus tcp прописал адрес IP и адресацию 1, линия связи не видит, при этом эмулятор на локал хост видит данные, а плк нет, пробовал общий и индивидуальный, не видит, на форуме пишут, что настраивать нужно не стандартно а иметь понимание в скада ОВЕН и использовать приёмы конфигов в Рапиде учитывая специфику рапиды, тоесть нужно хорошо знать и рапиду, что совсем не подходит новичку, модет ктото уже делал проект с овен ПЛК и есть сохранённый я конфиги попробую переделать?
PS: вроде победа видит датчики, осталось нарисовать мнемосхему

SmSerg
07.08.2025, 11:13
‎Спасибо за ответ.
‎Нам удалось немного оптимизировать проект (сейчас время обновления информации на панели составляет примерно 1-1.5 секунды).
‎Функциональные области c копированием нужных областей регистров modbus во внутреннюю память панели мы не используем, а привязки к элементам на графике осуществляются непосредственно к считываемым регистрам Modbus.
‎Из мануалов узнали, что "панель производит опрос только с помощью элементов, расположенных на открытом в данный момент экране".

‎Итак, что помогло оптимизировать проект:
‎1. Со всех мнемосхем удалили так называемые быстрые журналы возникающих событий. В конфигураторе они называются "Таблицы событий реального времени"
‎2. Уменьшили количество возможных сообщений в элементе "Историческая таблица" с примерно 600 сообщений до примерно 100 сообщений.
‎3. Убрали с проекта "Архивирование на USB".

‎После этих действий скорость отображения стала приемлемой.
‎Скажите, как правильно настраивать журналы событий\исторические таблицы\архивирование на USB, чтобы не грузить панель ? У нас получилось так, что дело было в этих функциях.

Есть несколько предложений.
1. Если данные нужны только на определенном экране, передавайте и принимайте их в локальном виде только на этом экране.
2. журналы событий\исторические таблицы - привязывайте к битам слова, скажем PSW. В слова информацию формируйте в контроллере и передавайте отдельным общим запросом. Получается, что каждая таблица отдельно ведет опрос по протоколу с контроллером. Так вы будете запрашивать из одного места.
3. Когда в функциональной области формируете запрос, делайте не постоянный опрос а с интервалом, скажем 1 секунда.
4. Возможно поможет галочка групповые запросы.
5. Архивирование на USB нужно делать в параллельном режиме.
6. Попробовать заменить Modbus на Modbus TCP.
7.

petera
07.08.2025, 11:43
Есть несколько предложений.
....
3. Когда в функциональной области формируете запрос, делайте не постоянный опрос а с интервалом, скажем 1 секунда.
....


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

ЗЫ.
В общем случае
Регистры 3х и 4х. Чтение
Все регистры, используемые в качестве источника данных для элементов активного экрана, постоянно и безусловно читаются из слейва с периодичностью заданной в настройках "Коммуникационный интервал" порта панели.
Чтение будет осуществляться группой если адреса регистров отличаются не более чем на 5, например
- для двух дисплеев с регистрами Wrd 4х00 и 4х5 будет одна команда чтения шести регистров 0,1,2,3,4,5. А для двух дисплеев с регистрами Wrd 4х00 и 4х6 будут две отдельные команды чтения по одному регистру.
- для двух дисплеев с регистрами DWrd 4х00 и 4х6 будет одна команда чтения восьми регистров 0,1,2,3,4,5,6,7. А для двух дисплеев с регистрами DWrd 4х00 и 4х8 будут две отдельные команды чтения по два регистра.
Соответственно к вышеописанной цепочки из двух регистров могут добавляться последующие регистры, если их адрес отличаются не более чем на 5 от предыдущего. Например
- для трех дисплеев с регистрами Wrd 4х00, 4х5 и 4х8 будет одна команда чтения девяти регистров 0,1,2,3,4,5,6,7,8.
и т.д.
Но максимальное число регистров в групповой команде чтения не может превышать 16.

Запись регистров 3х и 4х, используемых в полях ввода - однократная, в момент нажатия ENTER.
Запись регистров из ф. областей тоже по возможности группами из 16 рег.
Если на экране есть регистры на чтение и на запись, то чтение запись чередуются
-чтение 1 группы
- запись 1 группы
-чтение 2 группы
- запись 2 группы
и т.д

Таблицы в группировке с другими элементами экрана не участвуют. Для таблиц всегда будут свои групповые(если столбцов несколько) или одиночные(если только один столбец) запросы к слейву.
Таблица представлена массивом структур.
Формат структуры и количество регистров в ней определяется количество столбцов и типом данных в каждом столбце.
Таблицы читаются построчно. Причем второе правило "максимальное число регистров в групповой команде чтения не может превышать 16" на таблицы не распространяется, в одной группе будет столько регистров, сколько нужно для одной строки, хоть 125!
Запросы на чтение строк разнесены по разным циклам выполнения программы.
В каждом цикле читаются все регистры только одной строки

Например на экране есть ДИСПЛЕЙ и ТАБЛИЦА 1 столбец 3 строки
1. чтение 4х0 (дисплей)
2. чтение 4х2 (первая строка таблицы)
3. чтение 4х0 (дисплей)
4. чтение 4х3 (вторая строка таблицы)
5. чтение 4х0 (дисплей)
6. чтение 4х4 (третья строка таблицы)
и т.д.

Если ДИСПЛЕЙ и ТАБЛИЦА 10 столбцов 3 строки
1. чтение 4х0 (дисплей)
2. чтение группы 4х2, 4х3...4х19 (первая строка таблицы)
3. чтение 4х0 (дисплей)
4. чтение группы 4х20, 4х21...4х29 (вторая строка таблицы)
5. чтение 4х0 (дисплей)
6. чтение группы 4х30, 4х31...4х39 (третья строка таблицы)
и т.д.

Надо различать элементы экрана
- обычные, глобальные, на системных экранах
Например, на экране есть
дисплей с регистром 4х0
Функциональная область в которой
- читать один рег. 4х3
- читать группу из 5 рег. с адреса 4х5

Если дисплей и ф. область обычные, то будет один групповой запрос
читать группу из десяти регистров - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Если и дисплей и ф. область будут глобальными, то также будет один групповой запрос
читать группу из десяти регистров - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9

Но если только дисплей или только ф. область будут глобальными, то будет два отдельных запроса
1. читать рег. 4х0
2. читать группу из семи регистров - 3, 4, 5, 6, 7, 8, 9

Следует иметь ввиду, что кроме обычных экранов у панели есть еще системные (невидимые) экраны, их несколько.
И выполнение(обслуживание) экранов происходит как и в ПЛК - циклически
- системный экран 1
- системный экран 2
........
- системный экран N
- пользовательский активный экран
Считайте, что элементы со свойством глобальный находятся на невидимом системном экране
Группировка с правилом "разница между стартовыми адресами не более 5" на активном экране своя, на системных (не видимых) экранах своя

imaex
07.08.2025, 12:37
Полезная информация, спасибо.

Пара вопросов:
1. "Коммуникационный интервал" - где такая настройка?
2. Содержимое системных экранов увидеть никак нельзя? И сколько их? Чему равно N? Кол-ву глобальных ФО?

И последнее: писать в регистры 3х всё же не стоит, наверное. ;)

In_Da_Cher_A
07.08.2025, 12:43
1. "Коммуникационный интервал" - где такая настройка?85218вот здесь.

imaex
07.08.2025, 12:47
И что там является "коммуникационным интервалом"? Кроме времени ожидания по смыслу вроде более ничего не подходит. Но оно ли это?

In_Da_Cher_A
07.08.2025, 13:16
И что там является "коммуникационным интервалом"? Кроме времени ожидания по смыслу вроде более ничего не подходит. Но оно ли это?так ничего другого, что влияло бы на интервал между запросами Мастера - нет

SmSerg
07.08.2025, 14:30
Такое решение - самообман.
Любые функции чтения регистров или группы регистров в ф.области вызывают операции чтения всех соответствующих регистров "источника" непрерывно и безусловно, даже если "Условие запуска" ф.области не выполняется.
И лишь реальное обновление регистров "приемника" выполняются в момент наступления "условия запуска" ф. области.
Т.е. эсли Вы попытаетесь делать опрос(копирование в регистры панели) 100 регистров из слейва с интервалом, скажем 1 секунда, то панель будет непрерывно, делать запросы на чтение 100 регистров из слейва и только один раз в секунду обновлять значения в регистрах панели.



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

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

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

SmSerg
07.08.2025, 15:00
На заборе тоже написано слово... На самом деле там дрова лежат, а не это слово.
Обмен идет так, как я написал, ничего скрытого для любознательных нет.

Про забор и дрова себе напишите.
Я про документацию говорю.

petera
07.08.2025, 15:36
Про забор и дрова себе напишите.
Я про документацию говорю.

В каком месте документации написано, что запрос к регистрам слейва не выполняется, если нет условия выполнения ФО?
Да и откуда знать об этом тому, кто написал документацию...

Валенок
07.08.2025, 15:36
Ну и при наличии макросов можно не выяснять как оно там, а просто написать как себе нужно

imaex
07.08.2025, 15:41
В документации описано именно так, ка написал выше.


Я как-то не так давно этот момент отмечал:

Любопытно, что период опроса у ФО задан 3 сек, однако, 3-мя секундами там и не пахнет - счетчик запросов как из пулемёта строчит. Я еще в онлайн-эмуляции внимание обратил, думал, что на живой панели будет по-другому. А там то же самое.

https://owen.ru/forum/showthread.php?t=41249&p=464998&viewfull=1#post464998

petera
07.08.2025, 15:55
Простой тест
85230

85231

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

85233

Проект прилагаю

imaex
07.08.2025, 16:00
Как интересно форум модерируется....

Sklyar
17.09.2025, 14:21
добрый день. Возникла проблема - установил параметр "выключить подсветку" с интервалом 5 минут (вкладка настройки проекта), панель через 5 минут погасила подсветку, после выхода из заданного режима (касание экрана) на открывшемся экране перестают работать кнопки вызова окна, т.е. я не могу из текущего экрана ни куда перейти. если заставку отключить, то все нормально работает. Подскажите пожалуйста как быть.

Sklyar
17.09.2025, 14:58
добрый день. Возникла проблема - установил параметр "выключить подсветку" с интервалом 5 минут (вкладка настройки проекта), панель через 5 минут погасила подсветку, после выхода из заданного режима (касание экрана) на открывшемся экране перестают работать кнопки вызова окна, т.е. я не могу из текущего экрана ни куда перейти. если заставку отключить, то все нормально работает. Подскажите пожалуйста как быть.

тема закрыта, проблема решена.

TonyMilkers
17.09.2025, 15:13
Добрый день. Есть панель СП307 в качестве мастера, есть slave-устройство на TCP-порте. На слейве есть около 80 койлов, которые надо считать. Можно ли это сделать одним-двумя запросами или на каждый койл отдельный запрос делать надо?
Для регистров создана функциональная область с функцией "Копировать группу регистров" из Slave в PSW. А с койлами так же никак?

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

Это мой первый опыт общения с панелями - ногами не бейте. =)

kondor3000
17.09.2025, 15:22
Добрый день. Есть панель СП307 в качестве мастера, есть slave-устройство на TCP-порте. На слейве есть около 80 койлов, которые надо считать. Можно ли это сделать одним-двумя запросами или на каждый койл отдельный запрос делать надо?
Для регистров создана функциональная область с функцией "Копировать группу регистров" из Slave в PSW. А с койлами так же никак?

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

Это мой первый опыт общения с панелями - ногами не бейте. =)

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

EFrol
17.09.2025, 15:24
Справка в конфигураторе:
85800

TonyMilkers
17.09.2025, 15:29
Всем большое спасибо! Всё понял. Вопрос закрыт.

Александр Бояркин
23.09.2025, 20:51
Доброго всем времени суток. Проект создан для СП307-Б. Сейчас потребовалось использовать СП307-Р. Пытаюсь изменить "PLC порт" на созданное сетевое устройство "PLC Ethernet" через "замену регистров". Ничего не происходит. У всех не работает?

kondor3000
23.09.2025, 20:54
Доброго всем времени суток. Проект создан для СП307-Б. Сейчас потребовалось использовать СП307-Р. Пытаюсь изменить "PLC порт" на созданное сетевое устройство "PLC Ethernet" через "замену регистров". Ничего не происходит. У всех не работает?

При смене, все регистры порта PLC сбрасываются на PSW, их надо вручную перенастроить на устройство ТСР.

Александр Бояркин
24.09.2025, 13:38
Немного разобрался. Способ работает нормально, если менять именно регистры. Одним действием заменились порты регистров по всему проекту во всех окнах и экранах. Но если встречается элемент, который привязан к биту регистра, но не происходит ничего. Нужно указать, что меняем именно биты конкретного регистра. Уже лучше, но все равно руками придется все доделывать. Жаль, что данный способ не умеет ничего менять в макросах.

Dead Kid
01.10.2025, 18:38
Здравствуйте. Можно ли программировать панели СП310 через ethernet, а не USB или Download? Есть 2 полигона в 100м друг от друга, каждый управляется плк210 с панелью СП310-Р. В один из них поставили мини компьютер для удалённого доступа и перепрограммирования ПЛК и панели, подключили по USB. Встал вопрос, можно ли к имеющемуся компьютеру подключить ПЛК и панель со второго полигона. Есть мысль использовать переходник USB-B to Lan, но в инструкции не рекомендуется. Есть ли варианты или только ставить ещё один компьютер на второй полигон?

kondor3000
01.10.2025, 18:45
Здравствуйте. Можно ли программировать панели СП310 через ethernet, а не USB или Download? Есть 2 полигона в 100м друг от друга, каждый управляется плк210 с панелью СП310-Р. В один из них поставили мини компьютер для удалённого доступа и перепрограммирования ПЛК и панели, подключили по USB. Встал вопрос, можно ли к имеющемуся компьютеру подключить ПЛК и панель со второго полигона. Есть мысль использовать переходник USB-B to Lan, но в инструкции не рекомендуется. Есть ли варианты или только ставить ещё один компьютер на второй полигон?

Лучший вариант использовать ноутбук и программировать по USB когда надо.
Или поставить комп, если он там нужен.

IgorT1
02.10.2025, 12:00
Здравствуйте! А все таки возможность есть по ethernet загружать проект?

In_Da_Cher_A
02.10.2025, 12:19
Здравствуйте! А все таки возможность есть по ethernet загружать проект?а если нельзя мужчине сделать ребёнка, но очень хочется, то можно? так что ли?
ну откройте же Руководство и прочтите
не хотите откройте справку в программе и прочтите
можно или нельзя, песец просто

IgorT1
02.10.2025, 14:30
Проще будь или успокоительных выпей. Можно было просто ответить "Нет"

odex
03.10.2025, 08:38
Добрый день! Как сделать, чтобы при нажатии на одну и туже кнопку менялся текст на экране по циклу (сек-мин-часы)?

EFrol
03.10.2025, 10:59
Как один из вариантов:

TonyMilkers
06.10.2025, 12:07
День добрый. Нужен совет по графическим макросам.

Есть объект, собранный на цифровом дисплее (в проекте – на болотном фоне), текст которого меняет свой цвет в зависимости от внешних условий (ч битовых переключателя). Сейчас сделано так, что в зависимости от этих четырёх бит меняется состояние регистра (262), из которого цифровой дисплей и берёт цвет текста.

Как можно отвязаться от этого промежуточного регистра, и передавать номер цвета непосредственно в дисплей? С учётом того, что "IF" не возвращает значение, ничего не придумал. Но ведь есть способ... Наверняка есть!

petera
06.10.2025, 13:57
День добрый. Нужен совет по графическим макросам.

Есть объект, собранный на цифровом дисплее (в проекте – на болотном фоне), текст которого меняет свой цвет в зависимости от внешних условий (ч битовых переключателя). Сейчас сделано так, что в зависимости от этих четырёх бит меняется состояние регистра (262), из которого цифровой дисплей и берёт цвет текста.

Как можно отвязаться от этого промежуточного регистра, и передавать номер цвета непосредственно в дисплей? С учётом того, что "IF" не возвращает значение, ничего не придумал. Но ведь есть способ... Наверняка есть!

На "IF" не возвращает значение" могу сказать, что я использую в таких ситуациях unit "Структура" 86026
Она возвращает значение по индексу
Делаем структуру на два элемента DWORD, в качестве индекса будет значение (PV OR PN)
86027

В качестве данных - две константы (unit "Данные") с цветами зеленый и желтый
86028
Т.е. если PV OR PN равно 0, то из структуры берется код зеленый, а если 1,то - желтый.
Теперь создадим вторую структуру из двух элементов DWORD.
Индексом будет значение (АV OR АN),
86029
а в качестве данных будет
для индекса 0 - ранее созданная структура
для индекса 1 - константа "Красный"
Теперь созданный ГМ позволит изменять цвет текста
86030

Всё, промежуточные регистры не нужны
86032
Исправленный проект во вложении

TonyMilkers
06.10.2025, 15:01
На "IF" не возвращает значение" могу сказать, что я использую в таких ситуациях unit "Структура" 86026
Она возвращает значение по индексу
Делаем структуру на два элемента DWORD, в качестве индекса будет значение (PV OR PN)
86027

В качестве данных - две константы (unit "Данные") с цветами зеленый и желтый
86028
Т.е. если PV OR PN равно 0, то из структуры берется код зеленый, а если 1,то - желтый.
Теперь создадим вторую структуру из двух элементов DWORD.
Индексом будет значение (АV OR АN),
86029
а в качестве данных будет
для индекса 0 - ранее созданная структура
для индекса 1 - константа "Красный"
Теперь созданный ГМ позволит изменять цвет текста
86030

Всё, промежуточные регистры не нужны
86032
Исправленный проект во вложении

Спасибо! Разобрался.

petera
07.10.2025, 12:37
Спасибо! Разобрался.

Прямое управление цветом конечно работает, но только непосредственно в панели, в эмуляторе это не работает.
Можно было сделать трехцветный дисплей и по другому - для каждого состояния (норма, внимание и авария) использовать отдельные юниты "текст" с соответствующим цветом и переключаться между ними в зависимости от состояния битов АV, АN, PV или PN.
86068
https://owen.ru/forum/attachment.php?attachmentid=86057&d=1759827236
Берем три "разноцветных" текста
https://owen.ru/forum/attachment.php?attachmentid=86058&d=1759827441
Делаем "переключатель" для норма/внимание, т.е. цвет текста будет переключаться между зеленым и желтым
https://owen.ru/forum/attachment.php?attachmentid=86059&d=1759827619
Добавляем еще один, внешний, переключатель для красного цвета
https://owen.ru/forum/attachment.php?attachmentid=86060&d=1759827933
Трехцветный текст готов, можно "поиграться"
https://owen.ru/forum/attachment.php?attachmentid=86062&d=1759828099
Осталось сделать из этой заготовки полноценный дисплей для вывода значения из любого регистра,например PSW256
https://owen.ru/forum/attachment.php?attachmentid=86063&d=1759828647
Осталось добавить возможность в настройках задавать цвет текста для разных состояний
https://owen.ru/forum/attachment.php?attachmentid=86064&d=1759828874
Если нужно изменить шрифт для готового дисплея - воспользуйтесь кнопкой "F" на панели иструментов

TonyMilkers
07.10.2025, 15:18
Прямое управление цветом конечно работает, но только непосредственно в панели, в эмуляторе это не работает.
Можно было сделать трехцветный дисплей и по другому - для каждого состояния (норма, внимание и авария) использовать отдельные юниты "текст" с соответствующим цветом и переключаться между ними в зависимости от состояния битов АV, АN, PV или PN.

Ещё раз спасибо! Этот вариант в чём-то интереснее - можно на эмуляции крутить... Попробую оба. У меня будет около дюжины таких объектов в одном окне - надо будет проверить, не проседает ли по скорости.

Nakhodka
09.10.2025, 16:42
Петр как всегда на высоте!
Вот пытаюсь реализовать на вашем примере, изменение цвета текста в зависимости от значения PSW256.
Понимаю, что нужно функцию сравнения, но ни как не могу разобраться, как это реализовать.
Вот к примеру, интервал от 0 до 100, значение регистра до 50 текст зеленый, от 51 до 70 желтый ну и от 71 до 100 красный.
Получается пока так, на контроллере создал блок сравнения и передаю значения в панельку, на отдельные регистры в зависимости отзначения и тогда цвет меняется. Но ведь можно сделать функцию сравнения в самой пенели, но пока не могу разобраться, как.

kondor3000
09.10.2025, 21:39
Петр как всегда на высоте!
Вот пытаюсь реализовать на вашем примере, изменение цвета текста в зависимости от значения PSW256.
Понимаю, что нужно функцию сравнения, но ни как не могу разобраться, как это реализовать.
Вот к примеру, интервал от 0 до 100, значение регистра до 50 текст зеленый, от 51 до 70 желтый ну и от 71 до 100 красный.
Получается пока так, на контроллере создал блок сравнения и передаю значения в панельку, на отдельные регистры в зависимости отзначения и тогда цвет меняется. Но ведь можно сделать функцию сравнения в самой пенели, но пока не могу разобраться, как.

Например так, собран из 3 дисплеев, с битами видимости и графич. макросов, работает в эмуляции.

Nakhodka
10.10.2025, 07:51
Спасибо огромное. Буду дальше разбираться.

petera
10.10.2025, 11:38
Петр как всегда на высоте!
Вот пытаюсь реализовать на вашем примере, изменение цвета текста в зависимости от значения PSW256.
Понимаю, что нужно функцию сравнения, но ни как не могу разобраться, как это реализовать.
Вот к примеру, интервал от 0 до 100, значение регистра до 50 текст зеленый, от 51 до 70 желтый ну и от 71 до 100 красный.
Получается пока так, на контроллере создал блок сравнения и передаю значения в панельку, на отдельные регистры в зависимости от значения и тогда цвет меняется. Но ведь можно сделать функцию сравнения в самой пенели, но пока не могу разобраться, как.
На примере дисплея из трех цветных текстов https://owen.ru/forum/showthread.php?t=22915&p=473102&viewfull=1#post473102
Можно просто отредактировать существующий дисплей под новую задачу
И так, в ранее созданном есть два элемента IF
Первый IF внутренний, который позволяет переключаться между текстами с зеленым(норма) и с желтым(внимание) цветами.
86109
Переключение происходит в зависимости от текущего значения для условия IF - если текущее значение "0", то отображается нижний элемент из списка вложенных текстов, т.е. "Зеленый текст", если текущее значение "1", то отображается верхний элемент из списка вложенных текстов, т.е. "Желтый текст". Сейчас текущее значение формируется по ИЛИ(OR) от двух бит PSP271 и PSB272.
Второй IF внешний, который позволяет переключаться между текстом с красным(авария) цветом и тем текстом, который выдаст внутренний IF
86110
В зависимости от текущего значения для условия внешнего IF - если текущее значение "0", то отображается нижний элемент из списка состояние внутреннего IF, т.е. "Зеленый" или "Желтый" текст, если текущее значение "1", то отображается верхний элемент из списка, т.е. "Красный текст". Сейчас текущее значение формируется по ИЛИ(OR) от двух бит PSP270 и PSB273.

Для решения текущей задачи нужно заменить два существующих ИЛИ(OR) на два юнита сравнения ">".
1. Удаляем существующие ИЛИ(OR)
https://owen.ru/forum/attachment.php?attachmentid=86111&d=1760085184
2. Сделаем нужные функции сравнения на больше, у юнита сравнения два операнда - слева и справа от знака сравнения. В качестве операнда слева в конечном итоге будет использоваться значение регистра PSW256(DWORD), а в качестве операнда справа константы 50 и 70. Константы можно записать прямо в поле операнда.
https://owen.ru/forum/attachment.php?attachmentid=86112&d=1760085254
3. Используем созданные функции сравнения в качестве текущих значений для внутреннего и внешнего IF
https://owen.ru/forum/attachment.php?attachmentid=86113&d=1760085322
4. Вспоминаем, что для левых операндов функций сравнения должен использоваться регистр PSW256, который у нас уже задействован внутри дисплея в качестве "содержания" для тестов. Можно конечно добавить юниты чтение PSW256 прямо в функции сравнения в качестве операндов слева. Но тогда, если нужно будет изменить в настройках дисплея источник данных, придется менять его адрес в трех местах. К счастью язык ГМ позволяет использовать результат чтения регистра в разных местах макроса. Для этого используем действие "Property Float". Это действие позволяет "вынести наружу" и сделать доступным свойства(property) юнитов, находящихся внутри группы или внутри других юнитов. Я его уже использовал при создании дисплея для свойств "содержание" трех текстов и теперь значение "Value" в группе Float Property внешнего IF используют все три текста. Добавим такую возможность и для двух функций сравнения
https://owen.ru/forum/attachment.php?attachmentid=86114&d=1760085381

Niggaдяй
12.10.2025, 14:57
Доброго времени суток!
Планирую делать проект на СП310 в связке с ПР102. Столкнулся с вопросом, на который не могу найти ответ.
Для объекта требуется довольно "точечное" управление, из-за чего буду использовать ПР102, с её большим количеством входов.
Однако, из-за большого количества кнопок, было принято ещё вдобавок заменить их сенсорной панелью оператора. Итак, вопрос:
Сколько с помощью панели я смогу сделать виртуальных кнопок? Есть ли какое-то ограничение?

kondor3000
12.10.2025, 15:29
Доброго времени суток!
Планирую делать проект на СП310 в связке с ПР102. Столкнулся с вопросом, на который не могу найти ответ.
Для объекта требуется довольно "точечное" управление, из-за чего буду использовать ПР102, с её большим количеством входов.
Однако, из-за большого количества кнопок, было принято ещё вдобавок заменить их сенсорной панелью оператора. Итак, вопрос:
Сколько с помощью панели я смогу сделать виртуальных кнопок? Есть ли какое-то ограничение?

У панели ограничений нет, а вот у ПР102, есть ограничения, всего 64 сетевых регистра. https://owen.ru/product/pr102/specifications
64 регистра * 16 бит = 1024 кнопки всего. При условии, что больше ничего передавать не надо.
Только боюсь ПР102 умрёт быстрее, пока передаст все 1024 бита.

Niggaдяй
12.10.2025, 15:50
Огромное СПАСИБО!!!!!!!

TonyMilkers
16.10.2025, 08:57
День добрый.
Простенький пример: считывание регистров контроллера. При загрузке в панель начинают расти второй и третий регистры статуса связи (число неполученных ответов и число превышений таймаута). Данных от PLC нет – всё в нулях. При запуске онлайн эмуляции, всё читается нормально.

Это уже повод грешить на панель? Или у меня с ручками не всё в порядке?

kondor3000
16.10.2025, 09:26
День добрый.
Простенький пример: считывание регистров контроллера. При загрузке в панель начинают расти второй и третий регистры статуса связи (число неполученных ответов и число превышений таймаута). Данных от PLC нет – всё в нулях. При запуске онлайн эмуляции, всё читается нормально.

Это уже повод грешить на панель? Или у меня с ручками не всё в порядке?

Что у вас с Маской и Шлюзом ?
Что за ПЛК, где адреса начинаются с 288 ?
IP ПЛК хоть правильно написали?

TonyMilkers
16.10.2025, 09:39
Что у вас с Маской и Шлюзом ?
Что за ПЛК, где адреса начинаются с 288 ?
IP ПЛК хоть правильно написали?

Маска и шлюз такие же, как на ПК, на котором я эмуляцию запускаю.
ПЛК - WAGO. Там адреса начинаются с 256, но меня интересуют именно те, которые указаны в примере.
IP ПЛК указан правильно, иначе бы онлайн эмуляция тоже не нашла бы ПЛК. Не так ли?

kondor3000
16.10.2025, 09:52
Маска и шлюз такие же, как на ПК, на котором я эмуляцию запускаю.
ПЛК - WAGO. Там адреса начинаются с 256, но меня интересуют именно те, которые указаны в примере.
IP ПЛК указан правильно, иначе бы онлайн эмуляция тоже не нашла бы ПЛК. Не так ли?

Не понял, у вас и ПЛК Ваго и Панель СП310 в эмуляциии ?

У ПЛК маска и шлюз какие?

TonyMilkers
16.10.2025, 09:59
Не понял, у вас и ПЛК Ваго и Панель СП310 в эмуляциии ?

У ПЛК маска и шлюз какие?

1) Есть ПЛК WAGO в modbus-slave, на котором крутится программа.
2) Есть ПК, на котором я разрабатываю проект и запускаю эмуляцию, которая ПЛК "видит".
3) Есть панель СП310, в которую я загружаю тот же проект, что в эмуляцию, но которая ПЛК не "видит".

Вот сетевые настройки ПЛК:
86210

TonyMilkers
16.10.2025, 10:03
Вопрос закрыт. Привезли другую панель - она на том же месте заработала.

Sherverpupa
24.10.2025, 01:34
Всем привет.

Есть возможность увеличить размер области PSW, скажем до 256-8096 ?
Цель - сохранять много рецептов.

Спасибо.

EFrol
24.10.2025, 08:20
Если не ошибаюсь, то рецепты находятся в PFW-памяти, но тоже ограничена 256-4095, остальное (4096-4000000) область авторазмещения и запрещена для записи.
Однако элемент "таблица ввода данных", кажется разрешает писать в эту область, но я не проверял.

kondor3000
24.10.2025, 08:38
Есть возможность увеличить размер области PSW, скажем до 256-8096 ?
Цель - сохранять много рецептов.

Можно расширить, например до 8192 (кратно 256). 86342
Для этого нужен расширенный режим Панели. Подключение режима в подписи или в личке Petera https://owen.ru/forum/showthread.php?t=22915&p=473317&viewfull=1#post473317

Sherverpupa
24.10.2025, 09:18
Если не ошибаюсь, то рецепты находятся в PFW-памяти, но тоже ограничена 256-4095, остальное (4096-4000000) область авторазмещения и запрещена для записи.
Однако элемент "таблица ввода данных", кажется разрешает писать в эту область, но я не проверял.

Спасибо.
Конечно PFW, описался, время суток дает о себе знать :(

Sherverpupa
24.10.2025, 09:25
Можно расширить, например до 8192 (кратно 256). 86342
Для этого нужен расширенный режим Панели. Подключение режима в подписи или в личке Petera https://owen.ru/forum/showthread.php?t=22915&p=473317&viewfull=1#post473317

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

А может есть другие способы хранить много рецептов?
Был бы приемлем вариант хранить, скажем, csv файлами на USB флешке.
Но не вижу способа, как в таком случае во время работы оператору выбирать рецепт.
И добавлять новые по ходу работы..

МихаилГл
24.10.2025, 09:29
А зачем на панели это все делать... А контроллер какой?

Sherverpupa
24.10.2025, 09:33
А зачем на панели это все делать... А контроллер какой?
Овен ПЛК110

А на чем это делать ?

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

kondor3000
24.10.2025, 09:34
Спасибо, попробую.
Таблицами и трендами пользоваться не планирую, хочется "расширить горизонты"

А может есть другие способы хранить много рецептов?
Был бы приемлем вариант хранить, скажем, csv файлами на USB флешке.
Но не вижу способа, как в таком случае во время работы оператору выбирать рецепт.
И добавлять новые по ходу работы..

Вот здесь пример на 2000 рецептов (200 деталей по 10 режимов в каждом), с импортом и экспортом
https://owen.ru/forum/showthread.php?t=35842&p=374613&viewfull=1#post374613

МихаилГл
24.10.2025, 09:46
Овен ПЛК110

А на чем это делать ?

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

Я сторонник делать это все в контроллере, а любая скада, это трлько визуализация для меня. Захотите другую скаду или панель, опять все переделывать? И у всех свои реализации этого механизма...

Sherverpupa
24.10.2025, 09:55
Вот здесь пример на 2000 рецептов (200 деталей по 10 режимов в каждом), с импортом и экспортом
https://owen.ru/forum/showthread.php?t=35842&p=374613&viewfull=1#post374613

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

petera, отдельное спасибо за то, что делится опытом.

petera
24.10.2025, 10:05
petera, отдельное спасибо за то, что делится опытом.


Можно расширить, например до 8192 (кратно 256). 86342
Для этого нужен расширенный режим Панели. Подключение режима в подписи или в личке Petera https://owen.ru/forum/showthread.php?t=22915&p=473317&viewfull=1#post473317
Распределение памяти в панели можно "подправить" и без расширенного режима
86343
Только такой способ повлияет на ВСЕ вновь создаваемые проекты

EFrol
24.10.2025, 10:08
Очень полезный совет. Спасибо.

Sherverpupa
24.10.2025, 11:01
Распределение памяти в панели можно "подправить" и без расширенного режима
86343
Только такой способ повлияет на ВСЕ вновь создаваемые проекты

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

Sherverpupa
24.10.2025, 11:10
Я сторонник делать это все в контроллере, а любая скада, это трлько визуализация для меня. Захотите другую скаду или панель, опять все переделывать? И у всех свои реализации этого механизма...

Именно из-за того что, захотели вместо скады - панель, я здесь :)
Я только за - делать это в контроллере, может поделитесь примерчиком или хотя бы общей концепцией?

Опишу задачу:
ПЛК110-30.
Рецептов - штук 200, желательно структурировать по категориям.
В каждом - осмысленное название, символов 20 + переменных float - штук 15.
Возможность с панели изменять и создавать новые рецепты и категории.

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

Буду благодарен за пример или наводку

МихаилГл
24.10.2025, 11:46
Именно из-за того что, захотели вместо скады - панель, я здесь :)
Я только за - делать это в контроллере, может поделитесь примерчиком или хотя бы общей концепцией?

Опишу задачу:
ПЛК110-30.
Рецептов - штук 200, желательно структурировать по категориям.
В каждом - осмысленное название, символов 20 + переменных float - штук 15.
Возможность с панели изменять и создавать новые рецепты и категории.

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

Буду благодарен за пример или наводку
86348

Был когда-то Заказчик, родился концепт, но до выполнения не дошло, сдулся на спецификации оборудования (по ценам из открытых источников, заметьте... ничего не накручивалось, все было по минимуму).
Имеем: установка дозирования строительных смесей (до 10 компонентов с разной очередностью подачи, с разным временем и весом пересыпа после остановки дозаторов, компоненты могут участвовать в приготовлении смеси, могут отсутствовать - 7*10*10 параметров, что-то флоатами, наименования строками (это самое негативное для передачи по модбас)). Тут 10 рецептов, все хранится в массиве (можно и до 1000 расширить, но надо тогда придумать навигацию по строкам массива). Передавать можно в регистрах модбас, например (тут плк 210, своя визуализация, поэтому механизм не разрабатывался, но концепция такая: активный рецепт вверху пишется, его можем редактировать, параметры подачи и участия компонентов задаем, если что поменяли, то активный рецепт можем сохранить. ну а если нас этот рецепт устраивает, жмякаем "загрузить рецепт", и он тупо копируется в задания для оборудования и алгоритма дозирования). И все это сводится к редактированию массива разных параметров например на 1000 элементов. Да, самый минус это навигация, а так что проще...?

petera
24.10.2025, 11:50
Именно из-за того что, захотели вместо скады - панель, я здесь :)
Я только за - делать это в контроллере, может поделитесь примерчиком или хотя бы общей концепцией?

Опишу задачу:
ПЛК110-30.
Рецептов - штук 200, желательно структурировать по категориям.
В каждом - осмысленное название, символов 20 + переменных float - штук 15.
Возможность с панели изменять и создавать новые рецепты и категории.

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

Буду благодарен за пример или наводку

Немного теории о работе с рецептами
Давным давно делал пример с картинками
86345
И так,
Рецепты хранятся в выделенной пользователем памяти PFW в виде непрерывной области регистров
(1-ый параметр 1-ого рецепта)
(2-ой параметр 1-ого рецепта)
......................................
(N-ый параметр 1-ого рецепта)
========================
(1-ый параметр 2-ого рецепта)
(2-ой параметр 2-ого рецепта)
......................................
(N-ый параметр 2-ого рецепта);
========================
...........................................
...........................................
(1-ый параметр K-ого рецепта)
(2-ой параметр K-ого рецепта)
......................................
(N-ый параметр K-ого рецепта);

А в слейве ПЛК нужны только N регистров (содержимое одного рецепта)

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

Вот простая реализация описанного выше
86346

МихаилГл
24.10.2025, 12:03
Грубо говоря у меня все то же самое, что и у petera, только это в ПЛК. Не знаю, удобно ли в панели создавать такие конструкции, но если это все находится в ПЛК, то нужен только механизм взаимодействие с элементами через несколько вспомогательных управляющих регистров (как и в панели), но этот механизм можно потом и в панели использовать, и в скаде... И он будет почти одинаков для любой системы верхнего уровня.

petera
24.10.2025, 12:31
Именно из-за того что, захотели вместо скады - панель, я здесь :)


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

У меня на канале на РУТУБЕ и на ютубе есть видео из трех частей "Рецепты списком для СП307 СП310", в примере рецепт всего из одного параметра, но это не принципиально, главное принцип - "как организовать, что оператор подходит к панели, тычет пальцем кнопку "рецепт",
появляется список осмысленных названий рецептов, он тычет в нужный и он принимается к работе"
86349
"и мастер иногда добавляет новые рецепты и сохраняет их"
86350
https://owen.ru/forum/attachment.php?attachmentid=86352&d=1761298248

Sherverpupa
24.10.2025, 13:34
Спасибо, видео видел, по нему когда-то делал,
правда не в список, а выводил в таблицу, но не суть важно.
Но тогда рецептов и их параметров было мало.

Сейчас, вижу что стандартной области PFW будет недостаточно и группировка рецептов была бы весьма нелишней.
При большом количестве рецептов будет затруднительно искать нужный и новые добавляться будут в конец списка.
Как запасной вариант, держу в уме расширить область PFW и сделать как в вашем посте выше, но может есть другие пути.
Для облегчения поиска, наверное можно сделать макрос сортировки по названиям, все же облегчит поиск.

Надо покурить хелп кодесис и обдумать вариант МихаилГл .
У ПЛК110 вроде заявлено 6Мбайт(или Мбит?) памяти на диске.
В кодесисе нет возможности писать на внутренний диск ПЛК файлы с разными именами?
Никогда не пользовался там записью файлов.
Тогда можно было бы по модбас гонять индекс и название одного рецепта, плюс регистр команды (считать/записать новый),
а на стороне ПЛК уже сохранять или читать файл.

В мастер-скаде у меня было - один рецепт=один файл csv.
Разложение их по разным папкам - давали структурирование.
А вот как сейчас сделать - пока в раздумьях.

Буду рад любым советам.

Sherverpupa
24.10.2025, 13:42
У меня примерно такая же задача.


86348
все хранится в массиве (можно и до 1000 расширить, но надо тогда придумать навигацию по строкам массива). Передавать можно в регистрах модбас, например (тут плк 210, своя визуализация, поэтому механизм не разрабатывался, но концепция такая: активный рецепт вверху пишется, его можем редактировать, параметры подачи и участия компонентов задаем, если что поменяли, то активный рецепт можем сохранить. ну а если нас этот рецепт устраивает, жмякаем "загрузить рецепт", и он тупо копируется в задания для оборудования и алгоритма дозирования). И все это сводится к редактированию массива разных параметров например на 1000 элементов. Да, самый минус это навигация, а так что проще...?

А сам массив где хранится ? В энергонезависимой памяти ПЛК ? Это FLash disk ПЛК ? Который 6 МВ ?

petera
24.10.2025, 13:57
Спасибо, видео видел, по нему когда-то делал,
правда не в список, а выводил в таблицу, но не суть важно.
Но тогда рецептов и их параметров было мало.

Сейчас, вижу что стандартной области PFW будет недостаточно и группировка рецептов была бы весьма нелишней.
При большом количестве рецептов будет затруднительно искать нужный и новые добавляться будут в конец списка.
Как запасной вариант, держу в уме расширить область PFW и сделать как в вашем посте выше, но может есть другие пути.
Для облегчения поиска, наверное можно сделать макрос сортировки по названиям, все же облегчит поиск.

Надо покурить хелп кодесис и обдумать вариант МихаилГл .
У ПЛК110 вроде заявлено 6Мбайт(или Мбит?) памяти на диске.
В кодесисе нет возможности писать на внутренний диск ПЛК файлы с разными именами?
Никогда не пользовался там записью файлов.
Тогда можно было бы по модбас гонять индекс и название одного рецепта, плюс регистр команды (считать/записать новый),
а на стороне ПЛК уже сохранять или читать файл.

В мастер-скаде у меня было - один рецепт=один файл csv.
Разложение их по разным папкам - давали структурирование.
А вот как сейчас сделать - пока в раздумьях.

Буду рад любым советам.

Вот когда-то 2015 делал https://owen.ru/forum/showthread.php?t=36484&p=383715&viewfull=1#post383715
там рецепты хранятся в файле ПЛК
Список рецептов - массиве структур, например

TYPE Reciple :
STRUCT
Name:STRING(20); (*Название рецепта*)
Param1:INT;
Param2:INT;
Param3:REAL;
END_STRUCT
END_TYPE
Чтение и запись рецептов из/в файл после редактиорвания выполняет такой ФБ

FUNCTION_BLOCK FileReciple
VAR_INPUT
FileName: STRING(15); (*Имя файла с рецептами*)
pt: POINTER TO ARRAY [0..32000] OF Reciple; (*Указатель на массив с рецептами*)
size:UINT; (*Размер массива рецептов*)
Restore: BOOL; (*Загрузить рецепты из файла*)
Save: BOOL; (*Сохранить рецепты в файл*)
END_VAR
VAR
StatusOfFile: INT:=100; (*Это значение нужно для правильной инициализации ФБ*)
f: DWORD; (*Дескриптор файла*)
statusf: DWORD;
NULL:Reciple; (*Пустая запись в массиве рецептов*)
i: INT;
R_TRIG1: R_TRIG;
R_TRIG2: R_TRIG;
END_VAR



CASE StatusOfFile OF
0:
R_TRIG1(CLK:=Restore);
R_TRIG2(CLK:=Save);
IF R_TRIG1.Q THEN
StatusOfFile:=100; (*Восстановить рецепты из файла*)
END_IF
IF R_TRIG2.Q THEN
StatusOfFile:=10; (*Записать рецепты в файл*)
END_IF
10: (*сохранить предыдущую версию файла*)
statusf:=SysFileCopy(CONCAT(FileName, '.bak'), FileName);StatusOfFile:=11;
11: (*открыть файл на запись*)
f:=SysFileOpen(FileName, 'w');StatusOfFile:=12;
12: (*записать буфер в файл*)
statusf:=SysFileWrite(f, pt, size);StatusOfFile:=102;

(*Эта часть выполняется однократно после старта ПЛК*)
100: (*Открыть файл на чтение*)
f:=SysFileOpen(FileName, 'r');
IF f=0 THEN
StatusOfFile:=200; (*Нет такого файла*)
ELSE
StatusOfFile:=101; (*ОК, файл существует*)
END_IF
101: (*Прочитать файл в буфер*)
statusf:=SysFileRead(f, pt, size);StatusOfFile:=102;
102: (*Закрываем файл*)
SysFileClose(f);StatusOfFile:=103;
103: (*Конец инициализации после включения ПЛК*)
StatusOfFile:=0;
200: (*Если файла нет, то попробовать его восстановить*)
statusf:=SysFileCopy(FileName, CONCAT(FileName, '.bak'));StatusOfFile:=201;
201:
IF statusf=0 THEN (*старой версии файла нет, создать новый*)
FOR i:=0 TO size/SIZEOF(NULL)-1 DO
NULL.Name:=CONCAT('Набор_', INT_TO_STRING(i+1));
pt^[i]:=NULL;
END_FOR
StatusOfFile:=11; (*Записать новый файл*)
ELSE
StatusOfFile:=100;
END_IF
END_CASE
Имена файлом могут быть любыми

Пример работы с ФБ

PROGRAM PLC_PRG
VAR
Reciples: ARRAY [0..9] OF Reciple; (*Собственно массив рецептов для программы*)
FileRec: FileReciple; (*ФБ для записи/чтения файла с рецептами*)

n: UINT:=1; (*Текущий номер рецепта*)
Dlina: INT; (*Переменная для использования Param1 из текущего рецепта*)
Glubina: INT; (*Переменная для использования Param2 из текущего рецепта*)
Temperatura: REAL; (*Переменная для использования Param3 из текущего рецепта*)
selX:INT; (*Используется в визуализации (в таблице)*)
selY:INT; (*Используется в визуализации (в таблице)*)
END_VAR

FileRec(FileName:='Rec_1.dat' , pt:=ADR(Reciples) , size:=SIZEOF(Reciples) );

Dlina:=Reciples[n-1].Param1;
Glubina:=Reciples[n-1].Param2;
Temperatura:=Reciples[n-1].Param3;


В примере по ссылке команды на чтение рецепта из файла, редактирование рецептов и сохранение результатов в файл реализовано в визуализации проекта кодесис
86355 86356

Sherverpupa
24.10.2025, 14:22
Вот когда-то 2015 делал https://owen.ru/forum/showthread.php?t=36484&p=383715&viewfull=1#post383715
там рецепты хранятся в файле ПЛК


Спасибо в очередной раз.
:) :)
Это в 2015 я просил совета, когда делал ту систему, которую сейчас на панель перевожу. :)
Рекурсия, блин.
Тогда я остановился на хранении рецептов в скаде и в контроллер углубляться не стал.
Знал бы прикуп, жил бы в Сочи - сделал бы тогда хранение в ПЛК, сейчас бы не парился.
К сожалению, там ссылка на пример из 2015 уже не доступна, надо у себя в архивах порыться

kondor3000
24.10.2025, 14:27
Спасибо в очередной раз.
:) :)
Это в 2015 я просил совета, когда делал ту систему, которую сейчас на панель перевожу. :)
Рекурсия, блин.
Тогда я остановился на хранении рецептов в скаде и в контроллер углубляться не стал.
Знал бы прикуп, жил бы в Сочи - сделал бы тогда хранение в ПЛК, сейчас бы не парился.
К сожалению, там ссылка на пример из 2015 уже не доступна, надо у себя в архивах порыться

Пример тут выложен https://owen.ru/forum/showthread.php?t=36484&p=383715&viewfull=1#post383715

petera
24.10.2025, 14:36
Проект из 2015г "PLCWinNT_1.pro" прикрепил в сообщение выше

Sherverpupa
24.10.2025, 15:11
petera, kondor3000
благодарю, буду разбираться.

FPavel
24.10.2025, 18:23
Овен предложил библиотеку для асинхронного обмена с файлами OwenLibFileAsync.
Она чуть сложнее при обращении к её функциям, но зато после обращения функцией к файлу - программа не ждёт результата "на месте" (подвисает), а продолжает работу, а функция когда-нибудь завершит выполнение через много-много машинных циклов.

Лучше использовать OwenLibFileAsync

TonyMilkers
27.10.2025, 09:04
А может ли переключатель переключать не один бит, а два (синхронно)?

kondor3000
27.10.2025, 09:34
А может ли переключатель переключать не один бит, а два (синхронно)?

С помощью ФО (функц. области) можно и 2 бита и больше, включить, инвертировать или выключить.

TonyMilkers
27.10.2025, 13:28
С помощью ФО (функц. области) можно и 2 бита и больше, включить, инвертировать или выключить.

Ответ не на вопрос. Как два бита включить, я знаю. Я спросил, может ли переключатель дёргать два бита вместо одного.

petera
27.10.2025, 13:48
Ответ не на вопрос. Как два бита включить, я знаю. Я спросил, может ли переключатель дёргать два бита вместо одного.
Может, этот переключатель называется "Функциональная кнопка", хоть 10 битов дергай.
А если биты идут в одном регистре, то еще можно применить кнопку "Операции с данными"

petera
27.10.2025, 13:56
Два бита одной кнопкой

https://owen.ru/forum/attachment.php?attachmentid=86406&d=1761562513

TonyMilkers
27.10.2025, 14:35
Может, этот переключатель называется "Функциональная кнопка", хоть 10 битов дергай.
А если биты идут в одном регистре, то еще можно применить кнопку "Операции с данными"

Это здорово! И это очевидно. А вопрос про переключатель илии переключатель с индикацией. Вот такие:86407. Но, судя по ответам, уже понятно, что нельзя. Жаль. Буду ломать функциональные кнопки.

petera
27.10.2025, 14:48
Вариант два бита одной кнопкой
Сделаем переключатель с индикацией, который управляет двумя битами
https://owen.ru/forum/attachment.php?attachmentid=86410&d=1761565533

petera
27.10.2025, 15:09
Еще пару переключателей с индикацией
https://owen.ru/forum/attachment.php?attachmentid=86412&d=1761566766

Артем Петров
05.11.2025, 19:12
Здравствуйте! Не могу разобраться, почему то на прямую не хочет выводить на цифровой дисплей данные с пр200, но при переписывании с регистра PLC во внутренний регистр панели, все выводится. Помогите разобраться!

RV9WFJ
05.11.2025, 19:32
Лучше так и делайте. Опрос отдельно отображение отдельно. Меньше лагв будет

kondor3000
05.11.2025, 19:34
Здравствуйте! Не могу разобраться, почему то на прямую не хочет выводить на цифровой дисплей данные с пр200, но при переписывании с регистра PLC во внутренний регистр панели, все выводится. Помогите разобраться!
Кто мастер и кто слейв?
Выкладывайте скрины, как переменная настроена в ПР200 и как в Панели. Или проекты.

Вероятно не выводится Float, так как нет галки в настройках панели "Изменить порядок регистров".

Артем Петров
05.11.2025, 20:55
На данный момент пытаюсь с модбас слева выдавать значения, уже как только не пробовал, и флоат в разных вариациях и ансайнед и сайнед не выводит и все, если с помощью макроса перекидываю на внутренний регистр то работает, биты тоже из одного регистра считываются из другого ни в какую не считываются. Вот например на видимость двух кнопок, одна сброс появляется вторая пуск не появляется.866038660486605 там же есть регистры в конце, они работают через присвоение внутреннему регистру, 560 не выводится как только не изголялся, сейчас там уже даже флоат, но ти флоат не работает, до этого саинд ансайд пробовал, в настройках самого вывода все перебрал уже, кстати мастер сп307 пр102 будет слейвом/ Сейчас еще попробовал сделал функциональную кнопку с записью значения в 559 регистр, в модбас слейв записалось значение 11 бита, а вот Пуск так и не появился

kondor3000
05.11.2025, 21:33
Зачем вы с битов видимости начали ?
Сначала разберитесь с целым числом и Float, когда целое примите, биты уже сами работать будут.
Создайте целое в 512 и 513 регистре в ПР слейве, в панели Мастере дисплеи ввода, целые WORD (Unsigned), адреса 4х512 и 4х513.
Не забудьте в каждом дисплее поставить слейв адрес ПР, по умолчанию 16.
Вещественное в ПР, адрес 514 Float (2 регистра), в панели DWORD ( Float), адрес 4х 514 (занимает 514 и 515 регистры). Поставьте кол-во знаков до и после запятой.
Для правильного отображения Float, поставьте (снимите) галку в настройках панели "Изменить порядок регистров".
При включении 0 бита в целом числе будет 1, 1 бита - 2, 2 бита - 4, 3 бита - 8 и т. д.

Артем Петров
05.11.2025, 21:50
86606866078660886609
Вот сделал как вы сказали, вместо битов завел целые числа, все как работало так и работает, что не работало не работает, 562 регистр сделал флоат, поставил галочку в настройках панели, настроил вывод, но так ни чего не заработало

kondor3000
05.11.2025, 21:57
86606866078660886609
Вот сделал как вы сказали, вместо битов завел целые числа, все как работало так и работает, что не работало не работает, 562 регистр сделал флоат, поставил галочку в настройках панели, настроил вывод, но так ни чего не заработало

В модбас пуле у вас 563 регистр показывает, почему в панели 562 ставите?
Разберитесь с адресами как следует.

Артем Петров
05.11.2025, 22:00
Сорян, переделал, но ни чего не изменилось. Я понять не могу, почему некоторые регистры работают, а некоторые настроены также а работать не хотят.

kondor3000
05.11.2025, 22:03
Сорян, переделал, но ни чего не изменилось. Я понять не могу, почему некоторые регистры работают, а некоторые настроены также а работать не хотят.

Вы же скрины выкладываете от балды. Лучше проекты скиньте.
А проблемы с наложением регистров скорее всего. С кривыми адресами.
И напишите какие конкретно не работают.

Артем Петров
05.11.2025, 22:16
Нет ни каких наложений, они все разные, и их еще не так много, сейчас 559 записал во внутренний регистр и привязал внутренний регистр к видимости ПУСК, и все заработало.

kondor3000
05.11.2025, 22:18
Нет ни каких наложений, они все разные, и их еще не так много, сейчас 559 записал во внутренний регистр и привязал внутренний регистр к видимости ПУСК, и все заработало.

Проблемы у вас как у всех, потому что не разобравшись на примере, на 2-3 переменных, начинаете писать проект.
Адреса и настройки не соблюдаете.
Адреса надо не в Пуле смотреть, а в ПР слейве и их соответствие в мастере. Настроить правильно 1 Float и дальше по аналогии.
Галку тоже можно поставить или снять, в зависимости от правильного отображения.

Николай_П
17.11.2025, 19:46
Товарищи, добрый день.
Прошу помочь советом - существует ли возможность связать между собой симулятор панели СП300 в конфигураторе и симулятор ПР200 в Owen Logic в рамках одного компьютера? Помню, когда-то работал с сименсом (линейка desigo) и там удачно получалось для этих целей использовать адаптер замыкания на себя KS Test, задав ему нужное количество ip адресов. По сути, задача следующая - отладить программу реле и графику панели при отсутствии оных на столе. К сожалению, железо установлено на объекте, и забрать его для опытов невозможно. Нужно будет приехать с уже готовой программой. Так как на объекте предстоит еще втащить туда и управление частотниками + верхний мониторинг, то хотелось, хотя бы, пофиксить заранее все возможные свои косяки между ПР00 и СП300. С Овеном ранее не работал, не считая каких-то ТРМ в студенческие годы : ) Был приятно удивлен изменившимся ассортиментом за последние 20 лет!

kondor3000
17.11.2025, 19:49
Товарищи, добрый день.
Прошу помочь советом - существует ли возможность связать между собой симулятор панели СП300 в конфигураторе и симулятор ПР200 в Owen Logic в рамках одного компьютера? Помню, когда-то работал с сименсом (линейка desigo) и там удачно получалось для этих целей использовать адаптер замыкания на себя KS Test, задав ему нужное количество ip адресов. По сути, задача следующая - отладить программу реле и графику панели при отсутствии оных на столе. К сожалению, железо установлено на объекте, и забрать его для опытов невозможно. Нужно будет приехать с уже готовой программой. Так как на объекте предстоит еще втащить туда и управление частотниками + верхний мониторинг, то хотелось, хотя бы, пофиксить заранее все возможные свои косяки между ПР00 и СП300. С Овеном ранее не работал, не считая каких-то ТРМ в студенческие годы : ) Был приятно удивлен изменившимся ассортиментом за последние 20 лет!

Нужен хотя бы живой ПР200, а панель Мастера можно эмулировать Онлайн.
Симулятор в Лоджике эмулирует только Офф лайн, можно проверить программу, но без обмена.

Николай_П
17.11.2025, 19:56
Большое спасибо за быстрый ответ! Жаль, не задал вопрос на форуме раньше, сэкономил бы себе полдня : )
Делать нечего, пойдем искать реле на барахолку... авось потом и на даче сгодится.

ВениаминШ
17.11.2025, 21:33
Подскажите как вывести на экран СП307 значение регистра если оно удовлетворяет условию A<PSW[aaa]<B, если <A то строку текста например "<AAA", если >B то ">BBB"

ВениаминШ
17.11.2025, 21:40
Как вывести на экран значение таймера в формате hh:mm:ss

kondor3000
18.11.2025, 08:13
Как вывести на экран значение таймера в формате hh:mm:ss

Здесь пример с выводом таймера в формате hh:mm:ss ( hh:mm и mm:ss ). Можно скопировать себе в проект.
А так же ГМ (графические макросы) сравнения <, >, <=, >= . ГМ не видны и работают в эмуляции.
Все ГМ и много другого можно скачать у Petera в подписи https://owen.ru/forum/showthread.php?t=22915&p=474247&viewfull=1#post474247

petera
18.11.2025, 12:13
Подскажите как вывести на экран СП307 значение регистра если оно удовлетворяет условию A<PSW[aaa]<B, если <A то строку текста например "<AAA", если >B то ">BBB"
Пусть операнд PSW[aaa] будет в PSW256, а пределы A и B как константы будут в энергонезависимых регистрах PFW1000 и PFW1001
86776
Используем два ГМ A>B, с результатом сравнения в PSB300
86777

и A<B c результатом сравнения в PSB301
86778

Теперь делаем "бутерброд", последовательно размещаем друг над другом - дисплей с PSW256, статический текст "> BBB" с битом видимости PSB300, статический текст "< AAA" с битом видимости PSB301

ВСЁ
https://owen.ru/forum/attachment.php?attachmentid=86775&d=1763456261

ВениаминШ
18.11.2025, 12:53
Дайте ссылочку , где почитать про ГМ

ВениаминШ
18.11.2025, 13:01
Petera, благодарю за ответ. С бутербродом удалось додуматься самому, а вот ГМ разобраться не могу. У вас вроде посты по этому поводу есть, дайте ссылочку п-та.

petera
18.11.2025, 13:04
Дайте ссылочку , где почитать про ГМ

Все "кануло в Лету"
https://web.archive.org/web/20171230135607/http://www.owen.ru/forum/showthread.php?t=25052

https://web.archive.org/web/20170924115224/http://www.owen.ru/forum/showthread.php?t=25052&page=2

petera
18.11.2025, 13:29
Petera, благодарю за ответ. С бутербродом удалось додуматься самому, а вот ГМ разобраться не могу. У вас вроде посты по этому поводу есть, дайте ссылочку п-та.
Как-то так
https://owen.ru/forum/attachment.php?attachmentid=86783&d=1763461692

назначение регистров

PSW256 - операнд "ааа"
PFW1000 - константа ААА
PFW1001 - константа ВВВ

назначение бит
PSB300 - сравнение "ааа > BBB"
PSB301 - сравнение "ааа < AAA"

PSB300 / PSB301 - биты видимости
для текстов "> BBB" и "< AAA"

petera
18.11.2025, 13:45
Все "кануло в Лету"
https://web.archive.org/web/20171230135607/http://www.owen.ru/forum/showthread.php?t=25052

https://web.archive.org/web/20170924115224/http://www.owen.ru/forum/showthread.php?t=25052&page=2

Состав библиотеки на 06.06.2024

|---Закрыть эмулятор.xjt
|---Оптимизация связи.xjt
|---_СЛУЖЕБНЫЕ
| |---GM.xjt
| |---_Оболочка макроса 24х24.xjt
| |---_Оболочка макроса 32х24.xjt
| `---_Оболочка макроса.xjt
|---ВИЗУАЛЬНЫЕ ГМ
| |---TOD of-on Ex.xjt
| |---TOD of-on.xjt
| |---Шкала TOD.xjt
| |---ДАТА ВРЕМЯ
| | |---Дата.xjt
| | |---Дата_сим.xjt
| | |---Часы.xjt
| | `---UNIX TIME
| | |---h_m_s.xjt
| | |---M-D h_m.xjt
| | |---M-D h_m_s.xjt
| | |---Y-M-D h_m_s.xjt
| | |---Год.xjt
| | |---ДеньГода.xjt
| | |---ДеньМесяца.xjt
| | |---ДеньНедели.xjt
| | |---ДН.xjt
| | `---Месяц.xjt
| |---ИЗМЕНЕННЫЕ
| | |---КНОПКИ
| | | `---СКРЫТЬ
| | | `---Ввод.xjt
| | `---ЛИНЕЙКИ
| | |---A
| | | |---1.xjt
| | | |---2.xjt
| | | |---3.xjt
| | | |---4.xjt
| | | |---5.xjt
| | | |---6.xjt
| | | |---7.xjt
| | | `---8.xjt
| | `---B
| | |---10.xjt
| | |---11.xjt
| | |---12.xjt
| | `---9.xjt
| |---КЛАВИАТУРЫ
| | |---N_Клава.xjt
| | `---N_КлаваМ.xjt
| |---ЛАМПЫ
| | |---ДинЛампа_H.xjt
| | |---ДинЛампа_V.xjt
| | `---ПР200
| | |---DI.xjt
| | `---DO.xjt
| |---ПАРОЛИ
| | |---AutoClose.xjt
| | |---ИндДоступа.xjt
| | |---УровеньНужно.xjt
| | `---ИНСТРУМЕНТЫ
| | |---Битовая кнопка.xjt
| | |---Ввод.xjt
| | |---Записать в ПЛК.xjt
| | |---Кнопка открОкна.xjt
| | |---Кнопка открЭкран.xjt
| | |---Кнопка с подсветкой.xjt
| | |---Кнопка событий.xjt
| | |---Операции с данными.xjt
| | |---Текстовый ввод.xjt
| | |---Цифровой ввод.xjt
| | |---Цифровой вводVD2.xjt
| | `---Читать из ПЛК.xjt
| `---Ц_ИНДИКАЦИЯ
| |---i+1.xjt
| |---i+2.xjt
| |---i+3.xjt
| |---i+4.xjt
| |---i+5.xjt
| |---i+6.xjt
| |---Штамп времени ПР200.xjt
| |---Штамп времени.xjt
| |---Штамп времени_DT.xjt
| |---Штамп времени_Reg.xjt
| |---FLOAT_EXX
| | |---A.xjt
| | `---B.xjt
| |---БАЙТЫ
| | |---Дисп_2byte.xjt
| | |---Дисп_2byteA.xjt
| | |---Дисп_2byteB.xjt
| | |---Дисп_2byteC.xjt
| | |---Дисп_2byteD.xjt
| | |---Дисп_4byteA.xjt
| | `---В РАМКЕ
| | |---Дисп_2byteAr.xjt
| | |---Дисп_2byteBr.xjt
| | |---Дисп_2byteCr.xjt
| | |---Дисп_2byteDr.xjt
| | |---Дисп_2byte_r.xjt
| | `---Дисп_4byteAr.xjt
| `---ТАЙМЕРЫ
| |---ВремяНараб.xjt
| |---ВремяНараб_00.xjt
| |---ВремяНараб_Ex.xjt
| |---ВрНараб_Ex_Bl.xjt
| |---мм_сс.xjt
| |---мм_сс_Ex.xjt
| |---чч_мм.xjt
| |---чч_мм_bl.xjt
| |---чч_мм_bl_Ex.xjt
| |---чч_мм_Ex.xjt
| |---чч_мм_сс.xjt
| |---чч_мм_сс_Ex.xjt
| `---В РАМКЕ
| |---мм_сс_R.xjt
| |---мм_сс_R_Ex.xjt
| |---чч_мм_R.xjt
| |---чч_мм_R_blink.xjt
| |---чч_мм_R_Ex.xjt
| |---чч_мм_R_Ex_blink.xjt
| |---чч_мм_сс_R.xjt
| `---чч_мм_сс_R_Ex.xjt
|---ДЛЯ ПР200
| `---Дебаггер.xjt
|---МАКРО
| |---ABS(Float).xjt
| |---имитатор.xjt
| |---БАЙТЫ
| | |---DW_to_4byte.xjt
| | |---DW_to_byte.xjt
| | |---W_to_2byte.xjt
| | `---W_to_byte.xjt
| |---ДАТАВРЕМЯ
| | |---HMS to TOD.xjt
| | |---RTC
| | | |---dayOfWeek.xjt
| | | |---ddBCD_to_Int.xjt
| | | |---dWeek.xjt
| | | |---hhBCD_to_Int.xjt
| | | |---minBCD_to_Int.xjt
| | | |---mmBCD_to_Int.xjt
| | | |---ssBCD_to_Int.xjt
| | | |---yyBCD_to_Int.xjt
| | | `---СинхрЧасов.xjt
| | `---UNIX
| | |---ExtrDATE.xjt
| | |---ExtrMonth.xjt
| | `---ВЫЧИСЛЕНИЯ
| | |---DATE.xjt
| | |---DAY_OF_MONTH.xjt
| | |---DAY_OF_WEEK.xjt
| | |---DAY_OF_YEAR.xjt
| | |---LEAP_OF_DATE.xjt
| | |---MOD_7.xjt
| | |---MONTH_OF_DATE.xjt
| | |---TIME.xjt
| | `---YEAR_OF_DATE.xjt
| |---ДЕШИФРАТОРЫ
| | |---ПоРазрядам.xjt
| | `---ПОЗИЦИОННЫЕ
| | |---DC16_enbl.xjt
| | `---DC16_tmp.xjt
| |---ЛОГИКА
| | |---2-И-НЕ.xjt
| | |---2-И-НЕ_1.xjt
| | |---2-И.xjt
| | |---2-И_1.xjt
| | |---2-ИЛИ-НЕ.xjt
| | |---2-ИЛИ-НЕ_1.xjt
| | |---2-ИЛИ.xjt
| | |---2-ИЛИ_1.xjt
| | |---3-И-НЕ.xjt
| | |---3-И-НЕ_1.xjt
| | |---3-И-НЕ_2.xjt
| | |---3-И.xjt
| | |---3-И_1.xjt
| | |---3-И_2.xjt
| | |---3-ИЛИ-НЕ.xjt
| | |---3-ИЛИ-НЕ_1.xjt
| | |---3-ИЛИ-НЕ_2.xjt
| | |---3-ИЛИ.xjt
| | |---3-ИЛИ_1.xjt
| | |---3-ИЛИ_2.xjt
| | |---4-И-НЕ.xjt
| | |---4-И.xjt
| | |---4-ИЛИ-НЕ.xjt
| | |---4-ИЛИ.xjt
| | |---XOR.xjt
| | |---_2из3.xjt
| | `---НЕ.xjt
| |---МУЛЬТИПЛЕКСОРЫ
| | |---MUX_2.xjt
| | |---MUX_4.xjt
| | |---MUX_8.xjt
| | |---SWITCH_2.xjt
| | |---SWITCH_4.xjt
| | `---SWITCH_8.xjt
| |---СЕРВИС
| | |---2utilities-system-monitor_2873.png
| | |---UnsignegExt.xjt
| | |---Имитатор Dec с упр.xjt
| | |---Имитатор Dec.xjt
| | |---Имитатор Float.xjt
| | |---Имитатор Unsigneg.xjt
| | `---Экран.png
| |---СИСТЕМНЫЕ
| | |---Таймаут Download.xjt
| | `---Таймаут PLC.xjt
| |---СРАВНЕНИЕ
| | |---DEC
| | | |---intA_eq_0.xjt
| | | |---intA_eq_B.xjt
| | | |---intA_ge_0.xjt
| | | |---intA_ge_B.xjt
| | | |---intA_gt_0.xjt
| | | |---intA_gt_B.xjt
| | | |---intA_le_0.xjt
| | | |---intA_le_B.xjt
| | | |---intA_lt_0.xjt
| | | |---intA_lt_B.xjt
| | | |---intA_ne_0.xjt
| | | `---intA_ne_B.xjt
| | |---FLOAT
| | | |---fA_eq_0.xjt
| | | |---fA_eq_B.xjt
| | | |---fA_ge_0.xjt
| | | |---fA_ge_B.xjt
| | | |---fA_gt_0.xjt
| | | |---fA_gt_B.xjt
| | | |---fA_le_0.xjt
| | | |---fA_le_B.xjt
| | | |---fA_lt_0.xjt
| | | |---fA_lt_B.xjt
| | | |---fA_ne_0.xjt
| | | `---fA_ne_B.xjt
| | `---UNSIGNED
| | |---A_eq_0.xjt
| | |---A_eq_B.xjt
| | |---A_ge_B.xjt
| | |---A_gt_B.xjt
| | |---A_le_B.xjt
| | |---A_lt_B.xjt
| | |---A_ne_0.xjt
| | `---A_ne_B.xjt
| |---ТРИГГЕРЫ
| | |---F_TRIG.xjt
| | `---R_TRIG.xjt
| `---ФУНКЦИИ
| |---Abs(Dec).xjt
| |---Abs(Float).xjt
| |---B=notA.xjt
| |---Декремент.xjt
| |---Инкремент.xjt
| |---Корень.xjt
| |---Корень_куб.xjt
| |---Сумма16.xjt
| `---Сумма20.xjt
|---МЕНЮ
| `---МЕНЮ ДОСТУПА
| |---Вызов меню.xjt
| `---Окно меню 112х70.xjt
`---ОФОРМЛЕНИЕ
|---Кн Графика.xjt
|---Рамка группы.xjt
`---НЕВИДИМКИ
|---Для окна.xjt
|---Текст дуга.xjt
`---Текст.xjt

LAGOOPED
18.11.2025, 18:25
Коллеги добрый вечер прошу помощи, сам что-то не справляюсь, в RS 485 шесть ПР и панель СП 307 Б, одна ПР 103 мастер остальные пять ведомые, и работает всё хорошо, но есть но, в каждом приборе логика завязана на времени и в каждом ПР время убегает то в + то в -, и ходить каждые три месяца с ноутом корректировать время надоело. Решил считать с СП 307 системные регистры времени 30-35, и далее экспортировать в другие ПР. Чтоб в дальнейшем подкорректировал на панели время, и везде одинаково. Но и здесь не так, регистры считываются в формате HEX не совсем корректно, секунд 90, год тоже убежал 8229, ну и всё остальное тоже соответственно. В поддержку обратился подтвердили да есть такая проблема, блока, который преобразует говорят нету, пробовал сам макрос написать, но пока работает коряво. Наверняка кто-нибудь сталкивался с этой проблемой. Но не может быть чтоб я один с этим столкнулся))))).

kondor3000
18.11.2025, 18:31
Коллеги добрый вечер прошу помощи, сам что-то не справляюсь, в RS 485 шесть ПР и панель СП 307 Б, одна ПР 103 мастер остальные пять ведомые, и работает всё хорошо, но есть но, в каждом приборе логика завязана на времени и в каждом ПР время убегает то в + то в -, и ходить каждые три месяца с ноутом корректировать время надоело. Решил считать с СП 307 системные регистры времени 30-35, и далее экспортировать в другие ПР. Чтоб в дальнейшем подкорректировал на панели время, и везде одинаково. Но и здесь не так, регистры считываются в формате HEX не совсем корректно, секунд 90, год тоже убежал 8229, ну и всё остальное тоже соответственно. В поддержку обратился подтвердили да есть такая проблема, блока, который преобразует говорят нету, пробовал сам макрос написать, но пока работает коряво. Наверняка кто-нибудь сталкивался с этой проблемой. Но не может быть чтоб я один с этим столкнулся))))).

Конвертация времени BCD формата панелей, HEX в DEC и обратно DEC в HEX https://owen.ru/forum/showthread.php?
t=38239&p=414783&viewfull=1#post414783
Читаете дату и время, конвертируете функциями

petera
18.11.2025, 23:22
Коллеги добрый вечер прошу помощи, сам что-то не справляюсь, в RS 485 шесть ПР и панель СП 307 Б, одна ПР 103 мастер остальные пять ведомые, и работает всё хорошо, но есть но, в каждом приборе логика завязана на времени и в каждом ПР время убегает то в + то в -, и ходить каждые три месяца с ноутом корректировать время надоело. Решил считать с СП 307 системные регистры времени 30-35, и далее экспортировать в другие ПР. Чтоб в дальнейшем подкорректировал на панели время, и везде одинаково. Но и здесь не так, регистры считываются в формате HEX не совсем корректно, секунд 90, год тоже убежал 8229, ну и всё остальное тоже соответственно. В поддержку обратился подтвердили да есть такая проблема, блока, который преобразует говорят нету, пробовал сам макрос написать, но пока работает коряво. Наверняка кто-нибудь сталкивался с этой проблемой. Но не может быть чтоб я один с этим столкнулся))))).

В библиотеке ГМ https://owen.ru/forum/showthread.php?t=22915&p=475367&viewfull=1#post475367
есть макросы для преобразовании времени панели из формата BCD (регистры PSW30..35) в обычные двоичные числа
86793

Например
86794

TonyMilkers
04.12.2025, 07:53
Коллеги, столкнулся со странным. Имеется панель СП310 и контроллер wago 750-890. Связь по modbus-TCP. На панели на главный экран выведены регистры связи с PLC. По некоему биту от контроллера на панели должно открываться окно. При открытии окна с очень высокой вероятностью свзяь с PLC "замирает", т.е. значения регистров связи перестают меняться и при снятии управляющего бита окно не закрывается. Попробовал перевести управление окном на экранный переключатель. Теперь окно и открывается и закрывается, но всё равно с высокой вероятностью (~70%) при открытии или при закрытии окна связь замирает. Попробовал вместо контроллера подставить modbus-эмулятор на ПК - с ним эффект пропадает (можно и битом и переключателем моргать сколько угодно – связь сохраняется).

Пробовал контроллер и панель "отсаживать" в локальную сеть, в которой кроме них больше никого нет – тоже не помогает.

С одной стороны получается, что проблема не в панели, а в контроллере. Но тогда почему замирают ВСЕ регистры связи? Панель перестаёт формировать запросы?

P.S. Если вместо открытия окна переходить на другой экран, связь тоже замирает. Я в панике!

МихаилГл
04.12.2025, 07:57
А может панель в момент открытия окна опрашивает только те регистры, которые там нарисованы и запрограммированы к опросу? Что будет, если этот регистр/бит добавить на всё окна?

1exan
04.12.2025, 07:58
Коллеги, столкнулся со странным. Имеется панель СП310 и контроллер wago 750-890. Связь по modbus-TCP. На панели на главный экран выведены регистры связи с PLC. По некоему биту от контроллера на панели должно открываться окно. При открытии окна с очень высокой вероятностью свзяь с PLC "замирает", т.е. значения регистров связи перестают меняться и при снятии управляющего бита окно не закрывается. Попробовал перевести управление окном на экранный переключатель. Теперь окно и открывается и закрывается, но всё равно с высокой вероятностью (~70%) при открытии или при закрытии окна связь замирает. Попробовал вместо контроллера подставить modbus-эмулятор на ПК - с ним эффект пропадает (можно и битом и переключателем моргать сколько угодно – связь сохраняется).

Пробовал контроллер и панель "отсаживать" в локальную сеть, в которой кроме них больше никого нет – тоже не помогает.

С одной стороны получается, что проблема не в панели, а в контроллере. Но тогда почему замирают ВСЕ регистры связи? Панель перестаёт формировать запросы?

P.S. Если вместо открытия окна переходить на другой экран, связь тоже замирает. Я в панике!

Обычно панель зависает при нарушении обмена данными.
Скорее всего, на открываемых окнах находятся данные, которые панель не может считать с ПЛК по какой-либо причине (а с эмулятора - может)

kondor3000
04.12.2025, 07:58
Достаточно указать один неверный адрес регистра или бита и панель начнёт тормозить. Или поставить не настроенный график (таблицу) или не подключить прописанный слейв модуль.
Надо не паниковать, а проверить адреса и удалить не нужные.

TonyMilkers
04.12.2025, 08:04
А может панель в момент открытия окна опрашивает только те регистры, которые там нарисованы и запрограммированы к опросу? Что будет, если этот регистр/бит добавить на всё окна?

Изначально проблема возникла на более сложном проекте. Там я опрос PLC сделал глобальным - это не помогло.

TonyMilkers
04.12.2025, 08:06
Обычно панель зависает при нарушении обмена данными.
Скорее всего, на открываемых окнах находятся данные, которые панель не может считать с ПЛК по какой-либо причине (а с эмулятора - может)

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

МихаилГл
04.12.2025, 08:07
Изначально проблема возникла на более сложном проекте. Там я опрос PLC сделал глобальным - это не помогло.

Тогда см. ответы выше. Опрашиваете несуществующий регистр. Может реалы посмещали, или все регистры вперемешку. На ПЛК то хоть они нормально сгруппированы, нет окон или прочей чепухи...

TonyMilkers
04.12.2025, 08:07
Достаточно указать один неверный адрес регистра или бита и панель начнёт тормозить. Или поставить не настроенный график (таблицу) или не подключить прописанный слейв модуль.
Надо не паниковать, а проверить адреса и удалить не нужные.

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

TonyMilkers
04.12.2025, 08:10
Тогда см. ответы выше. Опрашиваете несуществующий регистр. Может реалы посмещали, или все регистры вперемешку. На ПЛК то хоть они нормально сгруппированы, нет окон или прочей чепухи...

Судя по монитору modbus-эмулятора, запрос идёт только на один койл. И опять же, я бы понял, если бы запросы шли, но валились в отлуп (рост 2-го, 3-го или 4-го регистра диагностики связи). Но они тоже не растут.

kondor3000
04.12.2025, 08:13
Специально сделал с нуля тестовый проект (во вложении к исходному письму). Там, вроде, нет ничего избыточного. Или у меня уже глаз замылился.

Откуда у вас адрес 0х 5152 ?
Это между прочим 322 регистр, а не 515 бит 2

TonyMilkers
04.12.2025, 08:19
Откуда у вас адрес 0х 5152 ?
Это между прочим 322 регистр, а не 515 бит 2

Совершенно верно, это нулевой бит 322-го регистра. Именно он в контроллере и должен отвечать за открытие этого окна. Биты 1, 2 и 3 этого же регистра должны были отвечать за открытие других окон.
Вот объявление этой переменной в CodeSys:
CV_WordOfBits_MBUSout AT %QD161 : DWORD; (* WordOfBits *)

МихаилГл
04.12.2025, 08:23
Совершенно верно, это нулевой бит 322-го регистра. Именно он в контроллере и должен отвечать за открытие этого окна. Биты 1, 2 и 3 этого же регистра должны были отвечать за открытие других окон.
Вот объявление этой переменной в CodeSys:
CV_WordOfBits_MBUSout AT %QD161 : DWORD; (* WordOfBits *)

Стоп, это может быть так, если в контроллере эти области (регистров и коилов) объединены... Или я не прав...?

kondor3000
04.12.2025, 08:31
Совершенно верно, это нулевой бит 322-го регистра. Именно он в контроллере и должен отвечать за открытие этого окна. Биты 1, 2 и 3 этого же регистра должны были отвечать за открытие других окон.
Вот объявление этой переменной в CodeSys:
CV_WordOfBits_MBUSout AT %QD161 : DWORD; (* WordOfBits *)

Так вам надо сначала проверить, что этот бит приходит (или не приходит) в панель, без всяких окон. Может есть смещение адресов регистров или бит.
Проще всего поставить несколько целочисленных дисплеев с адресами 321, 322 и 323 и проверить число, в соответствии биту.
322 адрес число 1 соответствует 0 биту.

МихаилГл
04.12.2025, 08:33
Да-да, ещё он может оказаться не 0вым, а 7мым, например, из-за особенностей модбас...

krollcbas
04.12.2025, 08:53
Посоветую поступить так:
1. сделать документ эксель и переписать туда все действующие регистры с ПЛК (позволит не ошибаясь и наглядно знать что используется в проекте, где есть разрывы). Заставить (временно) все эти регистры "шевелиться - менять значения", привязать прибавлялки.
2. сделать в СП3*** темповый пустой проект, с одним главным окном (прям шевелящимся горохом). Вывести туда все эти регистры числами. Станет нагляднее и виднее что шевелится, что перестает. Потом будете усложнять окна, как разберетесь в причинах

Скорее всего это должно помочь разнести проблему на части, но если нет:
Далее пробовать используя Modbus Pool/ Modbus Slave заменяя то ПЛК, то панель - искать виновное звено.
Там у Wago есть свои правила по обращению с памятью. Попробуйте поискать разрывы и если они есть, то заполните/объявите

МихаилГл
04.12.2025, 09:20
Ещё можно убрать запросы к коилам, и переделать на запросы к битам регистра. СП это вроде может делать без проблем. Или я уже с чем то другим путаю...

TonyMilkers
04.12.2025, 09:41
Так вам надо сначала проверить, что этот бит приходит (или не приходит) в панель, без всяких окон. Может есть смещение адресов регистров или бит.
Проще всего поставить несколько целочисленных дисплеев с адресами 321, 322 и 323 и проверить число, в соответствии биту.
322 адрес число 1 соответствует 0 биту.


Да-да, ещё он может оказаться не 0вым, а 7мым, например, из-за особенностей модбас...

С адресацией всё в порядке. В контроллере задействованы регистры с 256 по 365 (без разрывов). И пока всё крутилось на одном экране, никаких проблем не было.
В данном случае я специально для исследования проблемы оставил в панели только один запрос, не меняя программу контроллера.


Посоветую поступить так:
1. сделать документ эксель и переписать туда все действующие регистры с ПЛК (позволит не ошибаясь и наглядно знать что используется в проекте, где есть разрывы). Заставить (временно) все эти регистры "шевелиться - менять значения", привязать прибавлялки.
Это было сделано изначально. С момента начала проекта.


2. сделать в СП3*** темповый пустой проект, с одним главным окном (прям шевелящимся горохом). Вывести туда все эти регистры числами. Станет нагляднее и виднее что шевелится, что перестает. Потом будете усложнять окна, как разберетесь в причинах
Собственно, пока не понадобилось делать окна, всё на одном экране замечательно крутилось. Вот примерный вид экрана.
87083


Скорее всего это должно помочь разнести проблему на части, но если нет:
Далее пробовать используя Modbus Pool/ Modbus Slave заменяя то ПЛК, то панель - искать виновное звено.
Там у Wago есть свои правила по обращению с памятью. Попробуйте поискать разрывы и если они есть, то заполните/объявите
Я использовал mdbus32 вместо контроллера, и как уже писал, проблема при этом уходит. Вместо панели я использую скаду, которая тоже всё прекрасно читает и пишет.

Но почему панель перестаёт генерировать modbus-запросы, когда открывается или закрывается окно?

TonyMilkers
04.12.2025, 09:42
Ещё можно убрать запросы к коилам, и переделать на запросы к битам регистра. СП это вроде может делать без проблем. Или я уже с чем то другим путаю...

Не помогает. У wago можно читать одно и то же и из койлов, и из регистров. Пробовал - эфекта нет.

kondor3000
04.12.2025, 09:46
С адресацией всё в порядке.
Но почему панель перестаёт генерировать modbus-запросы, когда открывается или закрывается окно?

Потому что на экране есть обращение к адресу, а в Окне его может не быть, когда оно закрыто.
Вам надо использовать ФО (функц. области) , для ваших бит, читать биты и присваивать во внутренние биты PSB256 и выше, внутренними битами открывать окна, ФО сделать глобальными.
Если это возможно использовать маски бит вместо бит, копировать меньше надо будет.

TonyMilkers
04.12.2025, 09:50
Потому что на экране есть обращение к адресу, а в Окне его может не быть, когда оно закрыто.
Вам надо использовать ФО (функц. области) , для ваших бит, читать биты и присваивать во внутренние биты PSB256 и выше, внутренними битами открывать окна,
ФО сделать глобальными.

Это может объяснить, почему затыкается обмен, если я управляю окном битом из контроллера. А почему это происходит при нажатии переключателя? По переключателю окно открывается/закрывается нормально, а запросов к контроллеру нет. А подставляю вместо контроллера модбас-эмулятор - запросы идут.

kondor3000
04.12.2025, 09:56
Это может объяснить, почему затыкается обмен, если я управляю окном битом из контроллера. А почему это происходит при нажатии переключателя? По переключателю окно открывается/закрывается нормально, а запросов к контроллеру нет. А подставляю вместо контроллера модбас-эмулятор - запросы идут.

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

Sergey361
04.12.2025, 10:08
Если подключиться эмулятором, можно посмотреть сам запрос, который панель шлет при открытии окна. Потом сформировать в эмуляторе этот запрос и отправить в ПЛК, и посмотреть на его ответ.

TonyMilkers
04.12.2025, 11:50
В самом окне тоже есть чтение бит (регистров) или нет?
Так вот при закрытом окне нет опроса.
А в в модбас эмуляторе, может быть другая организация памяти.

Добавил на главный экран функциональную область, которая непрерывно копирует 80 регистров из PLC (начиная с 256) во внутреннюю память (начиная с 356). Сделал эту ФО глобальной. Не помогло.

kondor3000
04.12.2025, 12:06
Добавил на главный экран функциональную область, которая непрерывно копирует 80 регистров из PLC (начиная с 256) во внутреннюю память (начиная с 356). Сделал эту ФО глобальной. Не помогло.

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

TonyMilkers
04.12.2025, 12:13
А вы проверяли, скопированные регистры вообще работают?
Проверить сначала биты и регистры я предлагал ранее. Просто у Овена биты и регистры наложены, можно читать как биты отдельно, так и биты в регистрах,
а вот как у вас в ПЛК надо проверять.

У wago биты и регистры тоже наложены. 256 регистр - это койлы с 4096 по 4111. Можно читать любой функцией: с 0х01 по 0х04.
Пока растёт первый регистр обмена, всё работает. И по указанному биту открывается окно. И замирает связь...

kondor3000
04.12.2025, 13:05
У wago биты и регистры тоже наложены. 256 регистр - это койлы с 4096 по 4111. Можно читать любой функцией: с 0х01 по 0х04.
Пока растёт первый регистр обмена, всё работает. И по указанному биту открывается окно. И замирает связь...

Протестировал ваш проект (панель мастер в эмуляции) на ПЛК110-60 (слейв живой), бит заменил на 0х0, 87085
бит работает открывает и закрывает окно, обмен из панели и в панель не прерывается. Бит записывал из ПЛК - работает,
добавлял отдельно в окне работает, отдельно на экране - работает.
2 регистра читаются панелью и 1 записывает в ПЛК кол-во запросов в панели. Почти 16000 за минуту как пулемёт.

tandrew
06.12.2025, 10:48
Подскажите, возможно ли как то сделать периодическую перезагрузку панели? За неделю работы два раза теряла связь с модулем МВ210, перезагружаешь по питанию - сразу подключается.

kondor3000
06.12.2025, 10:54
Подскажите, возможно ли как то сделать периодическую перезагрузку панели? За неделю работы два раза теряла связь с модулем МВ210, перезагружаешь по питанию - сразу подключается.

Может лучше причину найти, проверить настройки, убрать помехи по питанию (поставить фильтр, заменить БП)
и по сети (экранировать кабели связи), экран заземлить у входа в панель.