Просмотр полной версии : ВОПРОС-ОТВЕТ (отвечаем на простые вопросы от новичков)
kondor3000
03.10.2022, 12:47
…столкнулся с конфликтом двух библиотек
SmsOwenLib (2.3.0.25)
Oscat_basic_333
В обоих присутствуют POU с именами «IS_NUM», «ISC_NUM», «TO_UML», что вызывает ошибку компиляции №3700.
РЭ предлагает "просто" заменить имя повторяющегося POU.
Прошу подсказать:
Как переименовать или выборочно удалить неиспользуемые POU в библиотеке (из Oscat использую только ф/б ONTIME)
(p.s. Всем здравствуйте…)
Теоретически, открываете биб-ку SmsOwenLib (2.3.0.25) как проект, меняете название повторяющихся объектов на похожие, сохраняете как биб-ку. Далее пользуетесь как обычно.
Второй вариант, копируете (создаёте ) свой ФБ из Оскат, в проекте, а биб-ку уделяете.
Hrenotehnik
03.10.2022, 13:53
Возможность изолированного редактирования библиотек стало для меня открытием.
Проблема решена.
Всем спасибо за рекомендации.
kondor3000
03.10.2022, 13:56
Возможность изолированного редактирования библиотек стало для меня открытием.
Проблема решена.
Всем спасибо за рекомендации.
Больше того, вы можете создавать свои биб-ки, со своими ФБ и функциями, например часто повторяющимися из проекта в проект.
Доброго дня.Новичок в Линукс. Скачал и установил Astra Linux common ed 2.12 и начал с Modbus Poll т.к. этот инструмент нужен
часто на выездах. Всё работает (Modpoll) но хотелось бы аналог Modbus Poll с графической оболочкой для удобства-может кто подскажет
где взять для Линукс?
Устанавливаю исп ситему MS4D по инструкции из Установка mplc4.pdf
sudo mount -o loop /home/but/Загрузки/orel-stable.iso /opt/repo - грт в ответ нет такой папки или директории?
хотя точно есть
kondor3000
10.10.2022, 12:35
Устанавливаю исп ситему MS4D по инструкции из Установка mplc4.pdf
sudo mount -o loop /home/but/Загрузки/orel-stable.iso /opt/repo - грт в ответ нет такой папки или директории?
хотя точно есть
По исп. среде MS4D, есть соответствующий раздел, там и спрашивайте
https://owen.ru/forum/forumdisplay.php?f=78
Здравствуйте, не подскажете, как реализовать умную лестницу, через cfc. Нужно чтобы вкл и выкл поэтапно(будет по датчикам с 2 сторон), и чтобы время горения света обновлялось, если пройдет кто-то еще мимо датчика, также если одновременно пройти мимо двух, то получается свет пойдет к середине.
Здравствуйте, не подскажете, как реализовать умную лестницу, через cfc. Нужно чтобы вкл и выкл поэтапно(будет по датчикам с 2 сторон), и чтобы время горения света обновлялось, если пройдет кто-то еще мимо датчика, также если одновременно пройти мимо двух, то получается свет пойдет к середине.
Вам рано реализовывать, надо больше проработать задачу. Если уже установлено оборудование - надо начинать с его параметров - характеристики и количество входных сигналов и сигналов управления освещением, параметры лестницы - количество пролётов, длина, примерная скорость спуска/подъёма.
И когда сможете описать на словах большинство возможных сценариев, тогда и начнёте реализовывать.
Приветствую, уже все подключено, и обговорен возможный способ. https://drive.google.com/file/d/1AkWfvQyMNYyKgDHpNQ_AUYWghnusCHPK/view?usp=sharing. Будет 11 ламп, каждая через 1 проем, 2 кнопки, одна с одной стороны, другая с другой. Скорость вкл.2 сек, выключения также, после того, как загорелась 1 лампа свет будет гореть 20сек, и если кто-то еще пройдет, то таймер обновится, но лампы не выкл.. В общем как-то так.63119
Вот после слов "Если загорелась 1 лампа" не понятен смысл кучи таймеров по 2 сек...
ну это так я просто пробовал разные способы, 1 лампа загорелась, через 2 секунды следующая и тд, чтобы человек поднимался и перед ним лестница загоралась
про 20сек, это таймер действия, ну нажал на кнопку и лампы горят в течении 20сек, также есть повторное нажатие, находится на входе в T1. если допустим нажать через 5сек, после 1 нажатия, то он принудительно выключит свет. 63120
ну это так я просто пробовал разные способы, 1 лампа загорелась, через 2 секунды следующая и тд, чтобы человек поднимался и перед ним лестница загоралась
Все эти плавные зажигания и погасания - нефункциональны.
Главная цель такой подсветки - чтобы человек не сломал себе ногу идя по лестнице.
Люди разные и скорость подьёма/спуска у всех разная, а ещё человек может просто остановиться и постоять в середине лестницы.
И удобней делать не кнопки, а датчики пересечения входа на лестницу снизу и сверху, а ещё нужен датчик освещения - чтобы подсветка не включалась при достаточном естественном освещении.
Самый простой вариант- сработал датчик сверху(снизу) - лампочки зажглись (с вау-эффектом - последовательно сверху-донизу (снизу-доверху)) и горят некоторое время, необходимое для прохода лестницы и потом ещё сколько-то или пока не сработает нижний(верхний) датчик.
Тут конечно может быть ситуация, что в процессе спуска(подъёма) на лестницу зайдет другой человек снизу(сверху) - кстати какая у вас вероятность такого события? Чтобы прямо качественно обойти такое придётся организовывать счётчик людей, находящихся в данный момент на лестнице со всеми вытекающими или просто отключать освещение лестницы с задержкой, заведомо достаточной для прохода лестницы после получения последнего сигнала от датчика.
Помню мы делали электрику шефу и поставили датчик движения, освещение лестницы просто верхнее. Где-то через полгодика или даже раньше жена шефа приказала выключить его к чертям...
1. движение животных приводило к включению света
2. ночью в туалет нагишом и тут бац, смотрите соседи, тут я такая вся....
Если лестница не глухая, хватает естественного освещения, чтобы ноги не сломать или подсветка должна быть мягкая и тусклая. :)
Помню мы делали электрику шефу и поставили датчик движения, освещение лестницы просто верхнее. Где-то через полгодика или даже раньше жена шефа приказала выключить его к чертям...
1. движение животных приводило к включению света
2. ночью в туалет нагишом и тут бац, смотрите соседи, тут я такая вся....
Если лестница не глухая, хватает естественного освещения, чтобы ноги не сломать или подсветка должна быть мягкая и тусклая. :)
1. От животных можно защититься, если использовать оптический барьерный датчик и поставить его на высоте чуть выше хвоста.
2. Сказать соседям, чтобы не караулили ваше окно по ночам :)
Все эти плавные зажигания и погасания - нефункциональны.
Главная цель такой подсветки - чтобы человек не сломал себе ногу идя по лестнице.
Люди разные и скорость подьёма/спуска у всех разная, а ещё человек может просто остановиться и постоять в середине лестницы.
И удобней делать не кнопки, а датчики пересечения входа на лестницу снизу и сверху, а ещё нужен датчик освещения - чтобы подсветка не включалась при достаточном естественном освещении.
Самый простой вариант- сработал датчик сверху(снизу) - лампочки зажглись (с вау-эффектом - последовательно сверху-донизу (снизу-доверху)) и горят некоторое время, необходимое для прохода лестницы и потом ещё сколько-то или пока не сработает нижний(верхний) датчик.
Тут конечно может быть ситуация, что в процессе спуска(подъёма) на лестницу зайдет другой человек снизу(сверху) - кстати какая у вас вероятность такого события? Чтобы прямо качественно обойти такое придётся организовывать счётчик людей, находящихся в данный момент на лестнице со всеми вытекающими или просто отключать освещение лестницы с задержкой, заведомо достаточной для прохода лестницы после получения последнего сигнала от датчика.
Вот такое небольшое тз мне сказали реализовать.
1. Предусмотреть отключение всего освещения в помещении
по нажатию любой клавиши (5 сек).
2. Предусмотреть клавишу «В отпуск». (Отключить все группы кроме холодильников и отопления, с запоминанием статусов всех осветительных групп).
3. При включении освещения в с/у, запускать соответствующую вытяжку, с задержкой отключения 15 мин, после того как выключили свет.
4. Предусмотреть поэтапное (1 сек каждый светильник) включения светильников лестницы c задержкой на отключения на 20 сек.
5. Предусмотреть принудительное отключение подсветки лестницы (повторное нажатие клавиши через 2 секунды после включения подсветки).
6. Предусмотреть одновременное включения с двух сторон.
7. Предусмотреть включение подсветки всей лестницы сразу (без таймера отключения).
Не нужен тут ПЛК - максимум ПР102. И вообще - достаточно какой-нибудь nano-ардуины (если есть желание).
В библиотеке oscat есть такой FB "SHR4_8UDE" - прямо то, что вам нужно, только добавьте выходов:
FUNCTION_BLOCK SHR_8UDE
VAR_INPUT
SET : BOOL;
D0: BOOL;
D7: BOOL;
CLK: BOOL;
DN : BOOL;
RST: BOOL;
END_VAR
VAR_OUTPUT
Q0: BOOL;
Q1: BOOL;
Q2: BOOL;
Q3: BOOL;
Q4: BOOL;
Q5: BOOL;
Q6: BOOL;
Q7: BOOL;
END_VAR
VAR
trig : R_TRIG;
END_VAR
(*
version 1.2 14. mar. 2009
programmer hugo
tested by tobias
8 bit shift register with reset
*)
(*------------------------------------------------------------------*)
(* trig.Q signals a rising edge on clk *)
trig(clk := clk);
IF set OR rst THEN
Q0 := NOT RST;
Q1 := Q0;
Q2 := Q0;
Q3 := Q0;
Q4 := Q0;
Q5 := Q0;
Q6 := Q0;
Q7 := Q0;
ELSIF trig.Q THEN
IF dn THEN
Q0 := Q1;
Q1 := Q2;
Q2 := Q3;
Q3 := Q4;
Q4 := Q5;
Q5 := Q6;
Q6 := Q7;
Q7 := D7;
ELSE
Q7 := Q6;
Q6 := Q5;
Q5 := Q4;
Q4 := Q3;
Q3 := Q2;
Q2 := Q1;
Q1 := Q0;
Q0 := D0;
END_IF;
END_IF;
(* revision history
hm 4. aug. 2006 rev 1.0
original version
hm 25. oct. 2008 rev 1.1
optimized code
hm 14. mar. 2009 rev 1.2
removed double assignments
*)
Просто плк уже есть, и почему бы на нем не сделать это, а остальное докупать нужно.
Вот такое небольшое тз мне сказали реализовать.
1. Предусмотреть отключение всего освещения в помещении
по нажатию любой клавиши (5 сек).
2. Предусмотреть клавишу «В отпуск». (Отключить все группы кроме холодильников и отопления, с запоминанием статусов всех осветительных групп).
3. При включении освещения в с/у, запускать соответствующую вытяжку, с задержкой отключения 15 мин, после того как выключили свет.
4. Предусмотреть поэтапное (1 сек каждый светильник) включения светильников лестницы c задержкой на отключения на 20 сек.
5. Предусмотреть принудительное отключение подсветки лестницы (повторное нажатие клавиши через 2 секунды после включения подсветки).
6. Предусмотреть одновременное включения с двух сторон.
7. Предусмотреть включение подсветки всей лестницы сразу (без таймера отключения).
Начните с составления перечня всех входных и выходных сигналов ПЛК
Не нужен тут ПЛК - максимум ПР102. И вообще - достаточно какой-нибудь nano-ардуины (если есть желание).
В библиотеке oscat есть такой FB "SHR4_8UDE" - прямо то, что вам нужно, только добавьте выходов:
FUNCTION_BLOCK SHR_8UDE
VAR_INPUT
SET : BOOL;
D0: BOOL;
D7: BOOL;
CLK: BOOL;
DN : BOOL;
RST: BOOL;
END_VAR
VAR_OUTPUT
Q0: BOOL;
Q1: BOOL;
Q2: BOOL;
Q3: BOOL;
Q4: BOOL;
Q5: BOOL;
Q6: BOOL;
Q7: BOOL;
END_VAR
VAR
trig : R_TRIG;
END_VAR
(*
version 1.2 14. mar. 2009
programmer hugo
tested by tobias
8 bit shift register with reset
*)
(*------------------------------------------------------------------*)
(* trig.Q signals a rising edge on clk *)
trig(clk := clk);
IF set OR rst THEN
Q0 := NOT RST;
Q1 := Q0;
Q2 := Q0;
Q3 := Q0;
Q4 := Q0;
Q5 := Q0;
Q6 := Q0;
Q7 := Q0;
ELSIF trig.Q THEN
IF dn THEN
Q0 := Q1;
Q1 := Q2;
Q2 := Q3;
Q3 := Q4;
Q4 := Q5;
Q5 := Q6;
Q6 := Q7;
Q7 := D7;
ELSE
Q7 := Q6;
Q6 := Q5;
Q5 := Q4;
Q4 := Q3;
Q3 := Q2;
Q2 := Q1;
Q1 := Q0;
Q0 := D0;
END_IF;
END_IF;
(* revision history
hm 4. aug. 2006 rev 1.0
original version
hm 25. oct. 2008 rev 1.1
optimized code
hm 14. mar. 2009 rev 1.2
removed double assignments
*)
просто выхода добавить к схеме, без всего, как примерно выглядеть будет не подскажете. Просто 2 блока rtrig и shr
просто выхода добавить к схеме, без всего, как примерно выглядеть будет не подскажете. Просто 2 блока rtrig и shr
Описание блока (аналогичного, на 4 выхода):
Функциональный блок SHR4_4UDE представляет собой четырехбитный регистр сдвига c
выбором направления сдвига. По переднему фронту входа SET выходы Q0…Q3 принимают
значение TRUE. По переднему фронту входа RST выходы Q0...Q3 сбрасываются в FALSE в
независимости от состояния остальных входов. По переднему фронту входа CLK значения на
выходах Q0…Q3 сдвигаются по алгоритму, определяемому состоянием входа DN:
DN=FALSE (сдвиг вверх):
• Q2---- > Q3
• Q1---- > Q2
• Q0---- > Q1
• D0---- > Q0
DN=TRUE (сдвиг вниз):
• Q1---- > Q0
• Q2---- > Q1
• Q3---- > Q2
• D3---- > Q3
Вход SET имеет приоритет над входом CLK.
Этот блок - это не конечное решение, а просто идея как управлять последовательным зажиганием/гашением ламп без кучи таймеров.
Выходы этого блока - это и есть лампочки, но сейчас там выходов всего 8, добавьте до требуемых 11 по аналогии. Ну и конечно обвязку управления блоком снаружи надо сделать:
Входы SET и RST - использовать для одновременного включения/отключения всех ламп. CLK - вход управления сдвигом, на него подавать импульсы с необходимой частотой. Входа D0 и D4(будет D11) - использовать при переключении "последовательное зажигание/гашение". Вход DN - переключение направления гашения/зажигания.
63139 что-то типо такого, без времени, я просто в этом деле еще новичок, опыт нарабатываю, практикуюсь.
Создайте новый ФБ на ST:
Объявление:
FUNCTION_BLOCK SHR_11UDE
VAR_INPUT
SET : BOOL;
D0: BOOL;
D11: BOOL;
CLK: BOOL;
DN : BOOL;
RST: BOOL;
END_VAR
VAR_OUTPUT
Q0: BOOL;
Q1: BOOL;
Q2: BOOL;
Q3: BOOL;
Q4: BOOL;
Q5: BOOL;
Q6: BOOL;
Q7: BOOL;
Q8: BOOL;
Q9: BOOL;
Q10: BOOL;
END_VAR
VAR
trig : R_TRIG;
END_VAR
Код ФБ:
trig(clk := clk);
IF set OR rst THEN
Q0 := NOT RST;
Q1 := Q0;
Q2 := Q0;
Q3 := Q0;
Q4 := Q0;
Q5 := Q0;
Q6 := Q0;
Q7 := Q0;
Q8 := Q0;
Q9 := Q0;
Q10 := Q0;
ELSIF trig.Q THEN
IF dn THEN
Q0 := Q1;
Q1 := Q2;
Q2 := Q3;
Q3 := Q4;
Q4 := Q5;
Q5 := Q6;
Q6 := Q7;
Q7 := Q8;
Q8 := Q9;
Q9 := Q10;
Q10 := D11;
ELSE
Q10 := Q9;
Q9 := Q8;
Q8 := Q7;
Q7 := Q6;
Q6 := Q5;
Q5 := Q4;
Q4 := Q3;
Q3 := Q2;
Q2 := Q1;
Q1 := Q0;
Q0 := D0;
END_IF;
END_IF;
это то я сделал, а дополнительный блок cfc не нужен?
63139 что-то типо такого, без времени, я просто в этом деле еще новичок, опыт нарабатываю, практикуюсь.
Здесь два блока на 8 и 4 выхода - а нужен один, на 11 выходов
а как их в 1 засунуть, если библиотека только на 8?
Конечно придётся создать СВОЙ блок, его код я привёл выше.
Я надеюсь вы не ограничены по времени в этом проекте.
времени предостаточно, я 2 недели сижу в codesys. Я изначально как раз так думал, просто название блока указал неверное. Спасибо.63140
kondor3000
13.10.2022, 13:23
времени предостаточно, я 2 недели сижу в codesys. Я изначально как раз так думал, просто название блока указал неверное. Спасибо.63140
У вас на скрине, три блока серым цветом, они не объявлены в PLC_PRG, и не работают в программе. ФБ надо объявлять и вызывать в PLC_PRG.
У вас на скрине, три блока серым цветом, они не объявлены в PLC_PRG, и не работают в программе. ФБ надо объявлять и вызывать в PLC_PRG.
Совсем не обязательно использовать все имеющиеся программные модули. Кроме того, чтобы например, избежать сообщений об ошибках в разрабатываемых (незаконченных) программных модулях, можно совсем исключить их из компиляции (соответствующий пункт в контекстном меню по ПКМ на программном модуле).
63141 63142 включает по порядку, но нужно нажимать 6 вход, а как без нажатия настроить, это таймеры добавлять? и по поводу того, чтобы 2 сразу включалось на встречу нужно 2 блок добавлять в обратном порядке? И да будет еще 2 разных датчика движения
63141 63142 включает по порядку, но нужно нажимать 6 вход, а как без нажатия настроить, это таймеры добавлять? и по поводу того, чтобы 2 сразу включалось на встречу нужно 2 блок добавлять в обратном порядке? И да будет еще 2 разных датчика движения
Не усложняйте себе задачу этим "навстречу" - это что, два человека пошли на встрече друг-другу одновременно секунда в секунду? Через небольшое время после того как один человек пройдет датчик, ВСЯ лестница будет освещена. Сколько ступеней на лестнице?
На вход CLK надо подавать импульсы с генератора. Посмотрите в том-же oscat ФБ "GEN_PULSE".
Не усложняйте себе задачу этим "навстречу" - это что, два человека пошли на встрече друг-другу одновременно секунда в секунду? Через небольшое время после того как один человек пройдет датчик, ВСЯ лестница будет освещена. Сколько ступеней на лестнице?
На вход CLK надо подавать импульсы с генератора. Посмотрите в том-же oscat ФБ "GEN_PULSE".
ступеней 25, ламп 11 ну через ступеньку. По поводу навстречу, думаю да, сдалась эта хрень, сделать бы хотя бы то, что уже есть. Включение все-таки думаю надо по порядку. А вот если 2 будет уже идти то можно и все сразу. А триггер куда тыкать?)63143
kondor3000
13.10.2022, 16:31
ступеней 25, ламп 11 ну через ступеньку. По поводу навстречу, думаю да, сдалась эта хрень, сделать бы хотя бы то, что уже есть. Включение все-таки думаю надо по порядку. А вот если 2 будет уже идти то можно и все сразу. А триггер куда тыкать?)63143
Можно в разрыв провода триггер поставить как было, а можно и вообще выкинуть, по крайней мере попробовать.
ступеней 25, ламп 11 ну через ступеньку. По поводу навстречу, думаю да, сдалась эта хрень, сделать бы хотя бы то, что уже есть. Включение все-таки думаю надо по порядку. А вот если 2 будет уже идти то можно и все сразу. А триггер куда тыкать?)63143
Да, так пойдет.
Теперь нужны ещё два RS триггера, каждый из которых будут означать, что запущен процесс освещения вниз(вверх). Сделайте так, что если один включен, то второй уже не включается.
Еще нужен таймер TOF, который запускается импульсом с любого из датчиков и отсчитывает задержку отключения. Задним фронтом этого таймера отключайте триггеры и гасите свет.
Может сделаете свою отдельную тему, чтобы не распылять вопросы и ответы?
Можно в разрыв провода триггер поставить как было, а можно и вообще выкинуть, по крайней мере попробовать.
сначала соединил), потом убрал, с убранным работает, но таймер автовыключ вроде нет
окей, спасибо большое за помощь.
kondor3000
14.10.2022, 11:25
Всем здравствуйте, помогите решить данную дилемму, включает сразу 2 выхода и если не отпускать подачу тока, то моргает. Адреса все разные, соединено все отлично. https://drive.google.com/drive/folders/1L8pG40QtVKB9B9ZIAIFWFFXB2yZDPhKt?usp=sharing
Вы бы скрин сделали, со своей проблемой. Сижу с телефона, проект открыть не могу.
Вы бы скрин сделали, со своей проблемой. Сижу с телефона, проект открыть не могу.
Судя по тексту сообщения, он всё-же упал со своей неосвещённой лестницы и забыл пароль от предыдущего аккаунта :)
с лестницей все ок), а тот проект не я делал, но аккаунт мой.
kondor3000
14.10.2022, 13:24
63153 как-то так
Так у вас на двух сработавших, одно и тоже название ФБ. Все экземпляры блоков должны иметь разное название. Конечно будет срабатывать.
Скрин с видео, это жесть)))
да уже нашел)))
походу не тот проект запилил в контроллер, тк проверял это
здравствуйте, еще такой вопрос, как называется элемент, где 1 вход и 2 выхода. при 1 нажатии 1, при 2 другой, чтобы чередовались
kondor3000
17.10.2022, 18:06
здравствуйте, еще такой вопрос, как называется элемент, где 1 вход и 2 выхода. при 1 нажатии 1, при 2 другой, чтобы чередовались
В общем случае, это функц. блок (ФБ) с одним входом и двумя выходами, работающий по определённому алгоритму, а названий может быть множество, например ключ, коммутатор, переключатель.
В общем случае, это функц. блок (ФБ) с одним входом и двумя выходами, работающий по определённому алгоритму, а названий может быть множество, например ключ, коммутатор, переключатель.
искал в оскате похожий элемент, без двойных нажатий и тп, а просто переключение, чтобы один выход провезти к set, а другой к reset, то есть если 1 раз нажать, то будет set, и если еще раз, то уже reset. Не подскажете подходящий элемент в оскате, он вообще там есть, я только находил с двойным, тройным и длинным.
искал в оскате похожий элемент, без двойных нажатий и тп, а просто переключение, чтобы один выход провезти к set, а другой к reset, то есть если 1 раз нажать, то будет set, и если еще раз, то уже reset. Не подскажете подходящий элемент в оскате, он вообще там есть, я только находил с двойным, тройным и длинным.
Какой Оскат, элементарно делается
Например
63184
Первое нажатие
63185
Второе
63186
Какой Оскат, элементарно делается
Например
63184
Первое нажатие
63185
Второе
63186
спасибо большое)
Какой Оскат, элементарно делается
Например
63184
Первое нажатие
63185
Второе
63186
но так не работает вкл 63190, он вкл и сразу же выкл поэтапно, нужно чтобы 1 раз нажал и все вкл, еще раз нажал и все выкл, как раз 2 выход ведет к reset, чтобы принудительно все без задержки выключить
но так не работает вкл 63190, он вкл и сразу же выкл поэтапно, нужно чтобы 1 раз нажал и все вкл, еще раз нажал и все выкл, как раз 2 выход ведет к reset, чтобы принудительно все без задержки выключить
Работает, как и заказывали
здравствуйте, еще такой вопрос, как называется элемент, где 1 вход и 2 выхода. при 1 нажатии 1, при 2 другой, чтобы чередовались
...просто переключение, чтобы один выход провезти к set, а другой к reset, то есть если 1 раз нажать, то будет set, и если еще раз, то уже reset
ЗЫ
https://owen.ru/forum/attachment.php?attachmentid=63191&d=1666093619
А теперь, вдруг понадобилось
..нужно чтобы 1 раз нажал и все вкл, еще раз нажал и все выкл,
Определитесь уже, что нужно
Работает, как и заказывали
ЗЫ
https://owen.ru/forum/attachment.php?attachmentid=63191&d=1666093619
А теперь, вдруг понадобилось
Определитесь уже, что нужно
там как раз 1 выход ведет к set, а другой к reset, поэтому 1 раз нажал все вкл, а другой все выкл.63192
Здравствуйте!
Я в загородном доме делаю освещение на ПР102+ПРМы. На 1-ом этаже стоит ПР102+ПРМ, на 2-ом ПР102+ПРМ+ПРМ. Эти ПР102 я соединил между собой по RS-485.
Мне нужно чтобы некоторые "лампочки", подключенные к ПР102 2-го этажа загорались при нажатии кнопок подключённых к ПР102 первого этажа и наоборот. Например:
1. На первом этаже, на выходе из дома, установлен нажимной выключатель, так называемый "Мастер", при нажатии на который должен выключаться свет во всём доме.
2. На втором этаже установлен вытяжной вентилятор (подключен к ПР102 второго этажа), который должен включаться выключателем света в туалете первого этажа.
Нужно ли при этом делать один ПР102 - Slave, а другой Master?
Какие "макросы" ну или "преобразователи" нужно добавить в программы для ПР102(1 эт.) и ПР102(2 эт.), чтоб можно было передавать команды в оба направления?
Спасибо!
там как раз 1 выход ведет к set, а другой к reset, поэтому 1 раз нажал все вкл, а другой все выкл.63192
На входе RST нарисуй кружочек (инверсия)
kondor3000
18.10.2022, 15:07
Сделайте так, будет и всё включено и переключение и всё выключено. 63193
Это самостоятельный переключатель на 4 положения, без привязки к схеме автора.
Сделайте так, будет и всё включено и переключение и всё выключено. 63193
Ерунда, извините..
Нужен один кружочек (инверсия) у входа RST
там как раз 1 выход ведет к set, а другой к reset, поэтому 1 раз нажал все вкл, а другой все выкл.63192
Про кружочек на входе RST
63194
Если не знаете, как сделать кружочек(инверсию)
https://owen.ru/forum/attachment.php?attachmentid=63195&d=1666095414
kondor3000
18.10.2022, 15:35
Здравствуйте!
Я в загородном доме делаю освещение на ПР102+ПРМы. На 1-ом этаже стоит ПР102+ПРМ, на 2-ом ПР102+ПРМ+ПРМ. Эти ПР102 я соединил между собой по RS-485.
Мне нужно чтобы некоторые "лампочки", подключенные к ПР102 2-го этажа загорались при нажатии кнопок подключённых к ПР102 первого этажа и наоборот. Например:
1. На первом этаже, на выходе из дома, установлен нажимной выключатель, так называемый "Мастер", при нажатии на который должен выключаться свет во всём доме.
2. На втором этаже установлен вытяжной вентилятор (подключен к ПР102 второго этажа), который должен включаться выключателем света в туалете первого этажа.
Нужно ли при этом делать один ПР102 - Slave, а другой Master?
Какие "макросы" ну или "преобразователи" нужно добавить в программы для ПР102(1 эт.) и ПР102(2 эт.), чтоб можно было передавать команды в оба направления?
Спасибо!
Надо делать один ПР102 - Slave, а другой Master. Для передачи переменных из одного ПР в другой, есть сетевые переменные. Вы их создаёте для сброса и для вентилятора.
И управляйте ими хоть с первого, хоть со 2 этажа.
А вопросы про ПР102 надо задавать в разделе программируемые реле.
На входе RST нарисуй кружочек (инверсия)
Похоже просто одним кружочком не обойтись...
Т.к. входы SET и RST у ФБ - "потенциальные", то
нужно сделать так
63196
иначе постоянные "1" на SET или RST заблокируют работу от входа CLK
кружочек ненужен!!!
На входе RST нарисуй кружочек (инверсия)
cделал инверсию, но теперь не работает поэтапное вкл, тк либо включен set, либо reset 3 не дано), остальные 4 элемента не могут функционировать, тк вкл reset, а если вкл set, то они и не нужны, тк все горит и без них, но конкретно, нужно, чтобы было поэтапное вкл, и принудительное вкл/выкл
можно 3 элемент добавить?
cделал инверсию, но теперь не работает поэтапное вкл, тк либо включен set, либо reset 3 не дано)
можно 3 элемент добавить?
СМ. мой предыдущий совет (выше)
На SET или RST будут приходить одиночные импульсы, в момент нажатия in1
Похоже просто одним кружочком не обойтись...
Т.к. входы SET и RST у ФБ - "потенциальные", то
нужно сделать так
63196
иначе постоянные "1" на SET или RST заблокируют работу от входа CLK
кружочек ненужен!!!
понял, ща сделаю, спасибо
СМ. мой предыдущий совет (выше)
На SET или RST будут приходить одиночные импульсы, в момент нажатия in1
он вкл моментально, но сразу же начинает гаснуть поэтапно
ой... извините
я ошибся дверью ))
Спасибо за ответ!
небольшое видео проблемы https://skr.sh/vGUjQ5IObVm?a
kondor3000
19.10.2022, 18:54
небольшое видео проблемы https://skr.sh/vGUjQ5IObVm?a
А проект где? Выложите в расширенном режиме, добавить файл.
kondor3000
19.10.2022, 20:08
Вы реально будете 400+ квадратиков на простыне изучать, да еще и не по потоку?
снимаю шляпу
Нужен только кусок схемы естественно. Уже воспроизвёл схему сам. Там проблема с управлением, а не с потоком. Хотя конечно надо сделать по потоку.
Duvall , правой кнопкой по холсту, выберите Порядок и В соответствии с потоком данных. Отключите все таймеры и разберитесь как надо управлять блоком. Без этого у вас ничего не получится.
У меня получилось так 63233
Нужен только кусок схемы естественно. Уже воспроизвёл схему сам. Там проблема с управлением, а не с потоком. Хотя конечно надо сделать по потоку.
Duvall , правой кнопкой по холсту, выберите Порядок и В соответствии с потоком данных. Отключите все таймеры и разберитесь как надо управлять блоком. Без этого у вас ничего не получится.
У меня получилось так 63233
а у вас на схеме, если включить с датчиков, то in1 его выключает полностью или также, как у меня выкл и сразу начинается включение
kondor3000
20.10.2022, 09:24
а у вас на схеме, если включить с датчиков, то in1 его выключает полностью или также, как у меня, выкл и сразу начинается включение
На скрине даже подписал, In1 только всё включает и всё выключает. Скрин смотрите и подписи у входов.
Вы сделали По потоку? У вас программа работает неправильно.
Не надо лепить по 400 квадратов на один лист, привыкайте разделять программу на блоки, это совет на будущее.
я думаю ошибка в том, что rst не выключает окончательно другие входы, вот тут я нажал rst, он выкл на мгновение и сразу опять началось63240 вкл, тк он не выкл вход in3, также и со 2 входом
kondor3000
20.10.2022, 09:41
я думаю ошибка в том, что rst не выключает окончательно другие входы, вот тут я нажал rst, он выкл на мгновение и сразу опять началось63240 вкл, тк он не выкл вход in3, также и со 2 входом
Он и не выключит, пока таймеры не досчитают с датчиков. Если кто то пересёк датчик, то не надо выключать свет. Выключать надо до того, как на лестницу залез.
Скрин ваш не залился, вставляйте как изображение.
На скрине даже подписал, In1 только всё включает и всё выключает. Скрин смотрите и подписи у входов.
Вы сделали По потоку? У вас программа работает неправильно.
Не надо лепить по 400 квадратов на один лист, привыкайте разделять программу на блоки, это совет на будущее.
да выбрал поток данных, но также, если остается включен другой вход, то он будет дальше работать, он принудительно не отключает другие входы, нельзя как-то настроить, чтобы он просто выключал все входы принудительно, и только если пройти мимо датчика снова, он включится поэтапно. То есть нужен элемент, который сбрасывает не только выходы, но и входы
можно сделать условие, вот работает датчик 25с, но если нажать такую-то кнопку, то он выкл моментально?
kondor3000
20.10.2022, 10:44
Вместо Т#25s, надо вставить переменную Word, нач. значение 25000 с помощью SEL, при сбросе записать туда 0. При подаче переменной в таймер, поставить WORD_TO_TIME.
Вместо Т#25s, надо вставить переменную Word, нач. значение 25000 с помощью SEL, при сбросе записать туда 0. При подаче переменной в таймер, поставить WORD_TO_TIME.
можете подсказать, как это будет примерно выглядеть на схеме 63249
kondor3000
20.10.2022, 12:16
можете подсказать, как это будет примерно выглядеть на схеме 63249
WORD это тип данных, переменная например, в объявлениях, T_vrem: WORD;
Переменную T_vrem, ставите перед Word_To_TIME, a выход к таймеру, вход PT.
У SEL внизу ставите 0, выход на переменную T_vrem.
После всего, По потоку данных опять.
WORD это тип данных, переменная например, в объявлениях, T_vrem: WORD;
Переменную T_vrem, ставите перед Word_To_TIME, a выход к таймеру, вход PT.
У SEL внизу ставите 0, выход на переменную T_vrem. Управление SEL временно сделайте например In4, как вы сделали, не правильно.
После всего, По потоку данных опять.
Сделал так, но надо держать нижний датчик, чтобы он дальше шел, если отпустить, то он отключается и идет таким образом, сколько успел зажечь. И я так понял, такое же надо проделать и с верхним датчиком.63252
kondor3000
20.10.2022, 12:47
Сделал так, но надо держать нижний датчик, чтобы он дальше шел, если отпустить, то он отключается и идет таким образом, сколько успел зажечь. И я так понял, такое же надо проделать и с верхним датчиком.63252
У SEL внизу ставите 0, выход на переменную T_vrem.
После всего, По потоку данных опять.
У SEL внизу ставите 0, выход на переменную T_vrem.
После всего, По потоку данных опять.
Таймеры датчиков надо поменять на TP. Датчики то дают короткий сигнал.
все гуд, но 1 проблема он выкл двойным нажатием, то есть он сначала сбрасывает, вкл и потом ток выкл https://skr.sh/vGVARB8Y4Tm?a
kondor3000
20.10.2022, 22:00
все гуд, но 1 проблема он выкл двойным нажатием, то есть он сначала сбрасывает, вкл и потом ток выкл https://skr.sh/vGVARB8Y4Tm?a
По другому без переделки схемы не получится. Переменная In1 и включает всё и сбрасывать должна всё. 63270
Считайте это такой фишкой, двойное нажатие сброс всего.
все гуд, но 1 проблема он выкл двойным нажатием, то есть он сначала сбрасывает, вкл и потом ток выкл https://skr.sh/vGVARB8Y4Tm?a
Потому, что проигнорировали мое сообщение о том, что входы SET и RST ФБ SHR_11UDE должны управляться импульсными сигналами, а у Вас на SET тупо приходит постоянная единица, которая висит до ворого нажатия in1
А же выкладывал уже
63274
Здесь два AND - селекторы сигналов для SET и RST.
Первое нажатие - импульс на SET, второе нажатие -импульс на RST
kondor3000
21.10.2022, 11:04
Petera, проблема не в этом. Если сработал один из датчиков In2, In3 и лампы горят уже, он хочет выключить одним нажатием In1, а выключается только со второго.
К тому же по вашей схеме, с In1 все лампы включаются, и плавно гаснут. На скрине 63279
А должны загораться при первом и гаснуть при втором нажатии.
Потому, что проигнорировали мое сообщение о том, что входы SET и RST ФБ SHR_11UDE должны управляться импульсными сигналами, а у Вас на SET тупо приходит постоянная единица, которая висит до ворого нажатия in1
А же выкладывал уже
63274
Здесь два AND - селекторы сигналов для SET и RST.
Первое нажатие - импульс на SET, второе нажатие -импульс на RST
тогда не будет работать принудительное вкл
По другому без переделки схемы не получится. Переменная In1 и включает всё и сбрасывать должна всё. 63270
Считайте это такой фишкой, двойное нажатие сброс всего.
норм фишка). ладно думаю пойдет с 2 пока, потом мб переделывать буду, спасибо за помощь
потом мб переделывать буду
Кому как, конечно, но я за нормальное оформление проекта.
P.S. от BLINK давно отказался.
kondor3000
22.10.2022, 21:12
Кому как, конечно, но я за нормальное оформление проекта.
P.S. от BLINK давно отказался.
А чего не так? 63301
Нормальное, это так
t1:=WORD_TO_TIME(SEL(a,25000,0));
t2:=WORD_TO_TIME(SEL(a,33000,0));
Здравствуйте, нужна помощь.
Speed_slave_procent := Speed_slave * 100 / Speed_master;
Delta_zadanie := 100 - Speed_slave_procent;
IF up_slave > 0 THEN
up_s:= TRUE;
slave_zadanie := slave_zadanie + (master_zadanie * Delta_zadanie / 100);
(*slave_zadanie := slave_zadanie / 3.03;*)
END_IF
master_zadanie, slave_zadanie (первоначальное значение) заведомо известны
Проблема в том что результат slave_zadanie получается в 2 раза больше, чем должен быть. Что я делаю не так?
kondor3000
26.10.2022, 08:26
Здравствуйте, нужна помощь.
master_zadanie, slave_zadanie (первоначальное значение) заведомо известны
Проблема в том что результат slave_zadanie получается в 2 раза больше, чем должен быть. Что я делаю не так?
Зачем его считать, если по вашим словам оно заранее известно?
А больше получается, очевидно считаете неправильно.
Если нужна дельта, то посчитайте разницу.
Типы переменных какие?
Ну и приведите первоначальные значения, при которых так получается.
Здравствуйте, нужна помощь.
Speed_slave_procent := Speed_slave * 100 / Speed_master;
Delta_zadanie := 100 - Speed_slave_procent;
IF up_slave > 0 THEN
up_s:= TRUE;
slave_zadanie := slave_zadanie + (master_zadanie * Delta_zadanie / 100);
(*slave_zadanie := slave_zadanie / 3.03;*)
END_IF
master_zadanie, slave_zadanie (первоначальное значение) заведомо известны
Проблема в том что результат slave_zadanie получается в 2 раза больше, чем должен быть. Что я делаю не так?
В 2 раза больше чем что?
Как из этого описания догадаться, что вы хотели рассчитать?
Изначально:
мастер задание 10
слейв задание 0
Дельта 20% (вычислили)
slave_zadanie := slave_zadanie + (master_zadanie * Delta_zadanie / 100);
слейв = 0 + (10 * 20/100)
слейв должен быть равен 2, а у меня 4
Изначально:
...
Дельта 20% (вычислили)
...
Расчет в студию.
Какие типы и значения у Speed_slave_procent, Speed_slave, Speed_master?
Расчет в студию.
Какие типы и значения у Speed_slave_procent, Speed_slave, Speed_master?
Speed_slave_procent := Speed_slave * 100 / Speed_master;
Delta_zadanie := 100 - Speed_slave_procent;
kondor3000
26.10.2022, 10:21
У вас в IF, счёт происходит два раза. Переменная up_slave не сбрасывается, а должна сбросится после одного цикла.
Либо после рассчёта, но до конца IF, поставьте up_slave:=False;
либо через R_Trig
R_TRIG1(CLK:=up_s , Q=>up_slave ); (* Или с триггером *)
IF up_slave > 0 THEN
slave_zadanie := slave_zadanie + (master_zadanie * Delta_zadanie / 100);
(*up_slave:=FALSE; *) (* Или со сбросом *)
END_IF
qweevitch
26.10.2022, 11:08
63370
Что это за библиотеки и где их взять? Ни гугл, ни яндекс не знает. Спросить и разраба проекта тож нет:confused:
Vitorgan
27.10.2022, 13:33
Добрый день, подскажите пожалуйста, как в сodesys 2.3 объявить массив переменных с одинаковым инициализированным значением у всех. В Cosesys 3.5 это работает вот так: ARRAY[0..max_index] OF INT:=[32(100)];
В 2.3 выпадает ошибка "3760".
Vitorgan
27.10.2022, 13:36
Добрый день, подскажите пожалуйста, как в сodesys 2.3 объявить массив переменных с одинаковым инициализированным значением у всех. В Cosesys 3.5 это работает вот так: ARRAY[0..max_index] OF INT:=[32(100)];
В 2.3 выпадает ошибка "3760".
Разобрался, запись без квадратных скобок.
In_Da_Cher_A
27.10.2022, 19:51
как-то не сталкивался ранее, поэтому буду новичком
достался по наследству вот такой конфиг
в обычный RS485 вставлен UMD c ТСР настройками
6342863429
по факту имею нули, хотя мамой клянутся, что всё было настроено и работало
поскольку вещь вторичная, пока за это спроса не было, слейвом пока не занимался и не смотрел.
Но скоро надо что-то будет показать.
Эта штука будет работать в таком виде, когда слейв настрою или надо отдельный Мастер делать?
что-то мне подозрительно такая конфигурация в стиле "фьюжн"
п.с Автора запытать не могу, что хотел этим сказать - не знаю, говорят сидит в бегах то ли в солнечном батуми, то ли в лучших традициях понаехов, колхозом таких же "конфигураторов" снимает комнату у Эрдогана
In_Da_Cher_A
05.11.2022, 09:21
куда-то пропали ответы:confused: а они были
In_Da_Cher_A
05.11.2022, 09:24
вопрос на 5 с плюсом
какой порядок байт во Float у ОВЕНа? где искать в какой документации? кроме невнятной галки в настройках связи с панелью - не нашёл ничего
Старшим байтом вперёд.
1032...
kondor3000
05.11.2022, 11:02
вопрос на 5 с плюсом
какой порядок байт во Float у ОВЕНа? где искать в какой документации? кроме невнятной галки в настройках связи с панелью - не нашёл ничего
Всё что нужно запомнить, в ПЛК мастере, в UMD достаточно поставить Nativ, а в панели 3хх мастере, галку переставить регистры.
В редких случаях, для определения порядка байт, например можно использовать функцию выложенный Валенком63654
https://owen.ru/forum/showthread.php?t=36596
и ниже описание работы.
In_Da_Cher_A
05.11.2022, 11:57
Что значит у Овена ?
Во всех ПЛК и панелях СПxx интеловский - 1234 (младший байт вперед)
https://owen.ru/forum/showthread.php?t=29168&page=2
пост #17спасибо
ну вот попался занудный заказчик, который на сотом объекте вдруг затребовал "официальный" документ, потому что его персонал, ковыряющий скаду, не может никак "увидеть" мои аналоги
А чего не так? 63301
Нормальное, это так
t1:=WORD_TO_TIME(SEL(a,25000,0));
t2:=WORD_TO_TIME(SEL(a,33000,0));
Да, согласен. Забыл, что операторы преобразования можно тоже упростить.
А как насчёт MOVE с EN/ENO? Можно ли как-то упростить? У меня их в проекте вагон...
kondor3000
05.11.2022, 13:45
Да, согласен. Забыл, что операторы преобразования можно тоже упростить.
А как насчёт MOVE с EN/ENO? Можно ли как-то упростить? У меня их в проекте вагон...
Только если перейти на ST
IF a THEN rt1:=rt; END_IF
Только если перейти на ST
IF a THEN rt1:=rt; END_IF
Да это понятно, просто надеялся, что это упрощение возможно и на CFC. А так переписывать эту портянку на ST что-то даже боязно...
Колыбельников
08.11.2022, 08:24
Вопрос: Модуль МВ110-32ДН
В программе описываю его через 2 x Register input module. Но используя в программе не могу, выдается ошибка. Как работать с ним? чтобы подавать на вход например AND. (что после названия ставить точку я делаю) я так понимаю у нас бит и его нельзя использовать. Что делать
Колыбельников
08.11.2022, 08:46
4015 Тип данных BOOL не допустим для прямого битового доступа
Колыбельников
08.11.2022, 08:51
Скажем, задача: входы 1 - 32 (МВ110.32ДН) подать через AND на выход 1 ПЛК 100
Колыбельников
08.11.2022, 08:59
32 раза сравнить?
Колыбельников
08.11.2022, 09:20
6369263693
Колыбельников
08.11.2022, 09:20
Я не понял что вы написали. Можно для чайника объяснить
Чат написано ответы для новичков
Колыбельников
08.11.2022, 09:26
Не работает, я и 4 по 8 бит пробовал выхода не видит, программе все хорошо а модуль не работает. Регистры по инструкции прописываю
Колыбельников
08.11.2022, 09:27
Переменная bool. для использования дальше
Колыбельников
08.11.2022, 09:46
вот проект
Колыбельников
08.11.2022, 09:58
вот, owennet стандартная
Колыбельников
08.11.2022, 10:02
Вот на всякий случай
Колыбельников
08.11.2022, 10:05
исходный, единственное in7.0.... соединить с переменными bool. Вот в этом и за пара
Колыбельников
08.11.2022, 10:15
in7.0 по in7.12 и in8.0 по in8.9 соединить с переменными. Ну написал in7.0 много точек
Колыбельников
08.11.2022, 10:16
Ребят ну если это такая простая задача, а вы в чате для ответы новичка помогите без демагогии
Ребят ну если это такая простая задача, а вы в чате для ответы новичка помогите без демагогии
in7 и in8 у вас объявлены типа BOOL - какой бит у них вы пытаетесь получить?
Колыбельников
08.11.2022, 10:21
6369863700
6369863700
Уберите их повторное объявление из PLC_PRG
Колыбельников
08.11.2022, 10:31
с этим разобраться легко, удаляем не подключенные блоки и не одной ошибки. Дальше что
Колыбельников
08.11.2022, 10:45
Спасибо. Новичкам помогать нужно. Они учатся. А не ошибается тот кто ни чего не делает
Колыбельников
08.11.2022, 10:46
Все получилось, ошибка была простая. Спасибо
kondor3000
08.11.2022, 11:23
Все получилось, ошибка была простая. Спасибо
Если вы с блока получаете маску битов, то не называйте её IN7, а назовите Mask ( например Mask2_16 или Mask32 ) и извлекайте биты. Путаницы не будет.
Если вы с блока получаете маску битов, то не называйте её IN7, а назовите Mask ( например Mask2_16 или Mask32 ) и извлекайте биты. Путаницы не будет.
Ну не знаю насчёт путаницы - я всегда думал, что маска - это набор битов, который позволяет выделить нужный(-ые) биты из исходного слова путём побитовых операций с этой маской.
Спасибо. Новичкам помогать нужно. Они учатся. А не ошибается тот кто ни чего не делает
Согласен.
Просто как вариант (и ничего более!!!) для начала попробуй сократить свою портянку.
kondor3000
08.11.2022, 23:01
Тут уже не сокращать надо, а программу PLC_PRG делить на блоки, 63720
а то вторая половина в эмуляции серым цветом и с вопросами.
Всем привет, ребят, подскажите, что такое Firs Scan ? В CodeSys для ПЛК
Всем привет, ребят, подскажите, что такое Firs Scan ? В CodeSys для ПЛК
такого нет, есть First Scan - первый цикл, когда можно пользователю инициализировать свои переменные, чтоб начать работу программы контроллера
То есть, это нужно для того, чтобы заработал ПЛК ?
То есть, это нужно для того, чтобы заработал ПЛК ?
нет, если первый цикл случился значит плк работает, программа может работать и без дополнительных инициализаций, всё зависит от фантазии программиста
Подскажите, пожалуйста, я правильно понимаю, что этот код, он как бы настраивает ip ПЛК ? Просто щас смотрю код другого программиста и не могу понять для чего это вообще нужно...
ETH_ADD1.Add_1 := 000;
ETH_ADD1(
EN:= FirstScan,
FUN:= 2,
Add_4:= 000,
Add_3:= 000,
Add_2:=0 ,
Add_1:= ,
Q=> );
Подскажите, пожалуйста, я правильно понимаю, что этот код, он как бы настраивает ip ПЛК ? Просто щас смотрю код другого программиста и не могу понять для чего это вообще нужно...
ETH_ADD1.Add_1 := 000;
ETH_ADD1(
EN:= FirstScan,
FUN:= 2,
Add_4:= 000,
Add_3:= 000,
Add_2:=0 ,
Add_1:= ,
Q=> );
для плк ОВЕН это не подойдет, IP задается в файле и применится только после перегрузки, теряется смысл вообще работы программы
Коллеги, подскажите, возможно ли как-то сбросить ФБ BLINK, чтобы при следующем вызове он начал отрабытывать тайминги с нуля. ENABLE не помогает.
Коллеги, подскажите, возможно ли как-то сбросить ФБ BLINK, чтобы при следующем вызове он начал отрабытывать тайминги с нуля. ENABLE не помогает.
Сделай свой из двух TON
Сделай свой из двух TON
Не понадобилось. После снятия ENABLE добавил еще пустой вызов блока и при следующей подаче ENABLE блок работает "с нуля".
BL_pump ( ENABLE := 0 ); BL_pump ( );
Не понадобилось. После снятия ENABLE добавил еще пустой вызов блока и при следующей подаче ENABLE блок работает "с нуля".
BL_pump ( ENABLE := 0 ); BL_pump ( );
Уверены ?
....
Уверены ?
....
Да. Хотя переменные экземпляра не смотрел.
Коллеги, подскажите, возможно ли как-то сбросить ФБ BLINK, чтобы при следующем вызове он начал отрабытывать тайминги с нуля. ENABLE не помогает.
Подрихтуйте BLINK под себя:
CLOCK; (* call Timer *)
IF ENABLE THEN (* time passed or init *)
IF CLOCK.Q=FALSE THEN
CLOCK(IN:=FALSE); (* reset Timer *)
CLOCK(IN:=TRUE); (* restart Timer *)
IF OUT=FALSE THEN
CLOCK.PT:=TIMEHIGH;
ELSE
CLOCK.PT:=TIMELOW;
END_IF;
OUT := NOT OUT; (* invert *)
END_IF
ELSE
CLOCK(IN:=FALSE);
CLOCK.PT:=t#0s;
OUT := FALSE;
END_IF
Да. Хотя переменные экземпляра не смотрел.
Ну сделайте периоды по минуте и ручками поопускайте Enable, особенно при поднятом OUT, и посмотрите на OUT.
для плк ОВЕН это не подойдет, IP задается в файле и применится только после перегрузки, теряется смысл вообще работы программы
Чегой-то не подойдет ? Может та функция переписывает ip в том файле [а после останется только while true do]
Чегой-то не подойдет ? Может та функция переписывает ip в том файле [а после останется только while true do]
попытайтесь объяснить что будет после перезагрузки, когда начальные условия программы в первом скане задать IP адрес и по Ващему уйти в перегрузку
попытайтесь объяснить что будет после перезагрузки, когда начальные условия программы в первом скане задать IP адрес и по Ващему уйти в перегрузку
Нет проблем. Но нужен весь проект.
Может в том ФБ/PROGRAM FirstScan означает сначала считать текущий ip ? ФБ/PROGRAM-то вызывается каждый цикл фрагмента.
Может это вообще не про ip ?
Может это вообще ничего ? ФБ/PROGRAM-заготовка на будущее в виде ";"
..
Нет проблем.
Но т.к. я не Герасимов и по фаланге правого мизинца не могу рассказать про форму носа, Вы же предоставите мне мелочь в виде :
1. Код до того фрагмента
2. Код после того фрагмента,
3. Код того ФБ/PROGRAM,
4. Код всех вызываемых ПОУ в п.1..3
5. Если именно ФБ - место расположения экземпляра
6. Место расположения всех данных использованных в п.1...4
7. Описание использованных типов в п.6
...
? ))
Я сказал "Может та функция ...." (под функцией подразумевал код вообще, а не именно FUNCTION)
Продолжу:
Может в том ФБ/PROGRAM FirstScan означает сначала считать текущий ip ? ФБ/PROGRAM-то вызывается каждый цикл фрагмента.
Может это вообще не про ip ?
Может это вообще ничего ? ФБ/PROGRAM-заготовка на будущее в виде ";"
Напомню, что ТС жалуется не на "помогитя, не работает" а
Лично я пока сдела вывод : оно - работает (я верю "другому программисту") Несмотря на "для плк ОВЕН это не подойдет".
У Вас есть дополнительная инфа ? Кроме того что ТС не может понять для чего это вообще ? ))
Я вот тоже не понимаю для чего это вообще. Предложил возможные варианты. Без категорических "это неподойдет".
чтение и запись из/в файл не далется за один цикл плк ни коим образом, поэтому я и говорю: в контексте FirstScan задавать IP бессмысленно, для этого есть PLC Browser
чтение и запись из/в файл не далется за один цикл плк ни коим образом,r
С чего это вдруг ? ))
в контексте FirstScan задавать IP бессмысленно..
Бесмысленно передавать константы как в том фрагменте.
А организовать "а коли вошел 0.0.0.0, то ты не пиши, а читай" - легко. См. syslibtime ))
...для этого есть PLC Browser
Ну я вот еще и syslibfile использую )).
Разве ip отличается чем-то от какого-нить коэффициента пида ? Такой же пользовательский параметр.
С чего это вдруг ? ))
есть доказательства? Чему равен в таком случае первый цикл, а может ли он со временем превысить МаксВрЦикл? Есть защита от рисков что произойдет перегрузка при открытом файле и он не испортится? Не похожа ли вся эта ситуация что программист с многолетним опытом предлагает новичку как получить кирпич
есть доказательства? ..
Доказательства чего ?
Чему равен в таком случае первый цикл
В 97..99% случаях 3..4мс. В 1-2% мелькнет 20...25мс. Допускаю что в отдельных случаях до 100мс. И ?
а может ли он со временем превысить МаксВрЦикл?
Да. Если МаксВрЦикл поставить 10мс. Это один из способов производства кирпичей (см. ниже)
Есть защита от рисков что произойдет перегрузка при открытом файле и он не испортится?
Есть защита от рисков в альтернативных случаях ? Например от злой собаки в следующем цикле после открытия файла при разнесении операция по циклам ?
Не похожа ли вся эта ситуация что программист с многолетним опытом..
Я тоже предполагаю что тот неизвестный программист - с многолетним опытом. У Вас есть основания предполагать иное ?
Не похожа ли вся эта ситуация что программист с многолетним опытом предлагает новичку как получить кирпич
Линия по прозводству кирпичей из ПЛК ждет своего часа пока этот новичок при наличии всего проекта
не могу понять для чего это вообще нужно...
Особенно если этому новичку доверили ПНР. Причем сырьем для производства кирпичей может стать всё вокруг. Безотносительно количества циклов ПЛК и их длительности. Это про что было воообще ?
Добрый день.
ПЛК110(М02) , Codesys v2
нужно упаковывать из двух WORD полученных по MODUS в один DWORD (приходят старший - младший биты)
в Codesys v3 есть библиотека CAA Libraries с блоком MEM.PackWordsToDword которая это реализует.
Есть ли аналог в v2 Codesys ? или как-то еще можно реализовать упаковывание ?
Спасибо
Есть сдвиги и ADD если штатные FBD использовать, ну или кодом на ST
GoodLuck
21.11.2022, 11:00
Добрый день.
ПЛК110(М02) , Codesys v2
нужно упаковывать из двух WORD полученных по MODUS в один DWORD (приходят старший - младший биты)
в Codesys v3 есть библиотека CAA Libraries с блоком MEM.PackWordsToDword которая это реализует.
Есть ли аналог в v2 Codesys ? или как-то еще можно реализовать упаковывание ?
Спасибо
FUNCTION_BLOCK wordsToDword
VAR_INPUT
word0: WORD;
word1: WORD;
END_VAR
VAR
p: POINTER TO WORD;
p1: POINTER TO WORD;
END_VAR
VAR_OUTPUT
Out_Data: DWORD;
END_VAR
p1:=ADR(Word0); p:=ADR(Out_Data); p^:=p1^;
p1:=ADR(Word1); p:=p+2; p^:=p1^;
Добрый день.
ПЛК110(М02) , Codesys v2
нужно упаковывать из двух WORD полученных по MODUS в один DWORD (приходят старший - младший биты)
в Codesys v3 есть библиотека CAA Libraries с блоком MEM.PackWordsToDword которая это реализует.
Есть ли аналог в v2 Codesys ? или как-то еще можно реализовать упаковывание ?
Спасибо
Или так:
FUNCTION PackWordsToDword : DWORD
VAR_INPUT
wHighWord:WORD;
wLowWord:WORD;
END_VAR
PackWordsToDword := SHL(WORD_TO_DWORD(wHighWord),16) OR WORD_TO_DWORD(wLowWord);
kondor3000
21.11.2022, 13:27
Добрый день.
ПЛК110(М02) , Codesys v2
нужно упаковывать из двух WORD полученных по MODUS в один DWORD (приходят старший - младший биты)
в Codesys v3 есть библиотека CAA Libraries с блоком MEM.PackWordsToDword которая это реализует.
Есть ли аналог в v2 Codesys ? или как-то еще можно реализовать упаковывание ?
Спасибо
В Codesys v2.3 можно вообще ничего не упаковывать. Просто назвать переменную состоящую из двух WORD стоящих по порядку, например Dw1 : DWORD;
( или Dw1 AT %QB12.1.0 : DWORD; ) и читать как DWORD.
Здесь обсуждались перестановки байт, регистров в переменной полученной по модбас. Одну и туже переменную из двух WORD, можно прочитать и как DWORD и как REAL https://owen.ru/forum/showthread.php?t=36596
Пример склейки REAL из двух WORD, есть в моём примере https://owen.ru/forum/showthread.php?t=35094#10
kirill_bykov
21.11.2022, 22:36
Добрый день,
ПЛК110(М02), Codesys v2
Самопроизвольно перезагружается в течении 15 минут работы, при удалении/недоступности для опроса slave устройств modbus проблема исчезает
Параметры modbus Master:
com speed: 38400
Parity: No parity
Data bits: 8 bits
Stop len: 1 bit
Interface type: RS485
Frame oriented: RTU
Framing time ms: 100
Visibility: No
Настройки slave устройств:
NetMode: Serial
Address: 5 - 8 (4 устройства)
WorkMode: ByPollTime
PollingTime: 100ms на 2 устройствах 1000ms на других 2 устройствах
AmntRepeat: 3
ByteSequense: Trace_mode
4 устройства: 2х МВ110-8а, Частотный преобразователь ESQ600 , Частотный преобразователь instart LCI, неважно включен движок или нет все равно идет сброс
второй modbus порт работает в режиме slave, подключена панель СП307
настройки те же за исключением:
com speed: 115200
framing time: 200ms
с ней обмен идет на 60 регистров (120 байт)
Пробовал добавлять основную задачу написанную на CFC в конфигурацию задач с циклическим типом и интервалом 200ms и сторожевым таймером 10с восприимчивость 5
Проверки на перекрытие памяти и вообще все проверки которые можно там выставить при комплияции выставил.
Перепробовал все что нашел по этому поводу не помогло поэтому пишу сюда.
Времена циклов менял от меньших к большим в надежде решения проблемы т.к. система не слишком требовательна ко времени.
Первый проект в codesys )
P.S. пожалел что использовал CFC как язык для основной задачи, потому что в процессе разбирательств со всем и вся гораздо больше понравился ST (CFC выбрал потому что до этого много программировал ПР200 в owenlogic и он с виду похож)
Подскажите как правильно выгрузить проект если это нужно
kondor3000
22.11.2022, 08:35
Добрый день,
ПЛК110(М02), Codesys v2
Самопроизвольно перезагружается в течении 15 минут работы, при удалении/недоступности для опроса slave устройств modbus проблема исчезает
Подскажите как правильно выгрузить проект если это нужно
Если работает при отключенных слейвах, то в них и проблема, возможно помехи с ПЧ идут. Какие меры проведены, для помехоустойчивости линии?
Проверяйте подключением слейвов по очереди и смотрите на каком отключается.
Проект можно выложить в расширенном режиме. Вместо лишней писанины, лучше сделать скрины. Пишите конкретно по проблеме, а не всё сразу.
Все сторожевые таймеры свои удалите нафик.
CFC абсолютно не при чём, как вам удобнее так и пишите программу.
Скорость попробуй снизить до 19200. Подключи к порту RS-485 сначала один МВ110-8а, посмотри результат. Если все нормально, то подключи второй МВ110-8а. Проверь если связь когда на линия только один частотник. Оба частотника сразу не подключай. Резисторы 120 Ом на концах линии связи есть ? Какова топология сети RS-485 ? Должно быть по цепочке.
In_Da_Cher_A
22.11.2022, 16:32
ПЛК110(М02), Codesys v2
Самопроизвольно перезагружается в течении 15 минут работы, при удалении/недоступности для опроса slave устройств modbus проблема исчезает
Параметры modbus Master:
com speed: 38400
.........
4 устройства: 2х МВ110-8а, Частотный преобразователь ESQ600 , Частотный преобразователь instart LCI,
чисто академический интерес - зачем вешать такое тормозное устройство как МВ110-8а да на такой скорости, какая вообще им даже в теории недоступна, да в пару к частотникам?
тем более - что есть ПЛК110 с дыркой под Модбас ТСР, куда можно спокойно повесить панель, а свободный порт RS отдать под аналоги?
чем скорость 38400 принципиально отличается от 9600 для тех же частотников? ничем, смысла ускорять опрос не вижу никакого, быстрого контура регулирования не получишь
зачем так всё усложнять? лезть потом во времена опроса, в конфиг задач и чего-то там разводить....
и причём здесь СFC?
kirill_bykov
22.11.2022, 20:09
зачем так всё усложнять? лезть потом во времена опроса, в конфиг задач и чего-то там разводить....
и причём здесь СFC?
Помехи с ПЧ точно не идут потому что перезапуск идет даже при остановленном ПЧ.
про modbus tcp спасибо, попробую, не использовал по причине привычке к rs-485.
не знал что мв110 тормозное устройство, если несложно предложите альтернативу
скорости уменьшу да и попробую все что написали, но
так и не понятно что может вызывать вообще рестарт, если есть какая то информация о том как modbus логически связан с перезапуском очень хотелось бы узнать)
Может память переполняется срабатывает прерывание на рестарт ( такого плана информация ). Вряд ли их такое множество, что невозможно из данной информации сделать хотя бы один конкретный теоретический вывод.
Хотелось бы решать вопросы не вслепую. Что может вызывать рестарт плк в принципе ?
Про CFC написал чисто свои ощущения, в сравнении с ST показался слабым инструментом, может поменяю свое мнение когда-нибудь :)
Спасибо за коменты, все проверю
In_Da_Cher_A
22.11.2022, 22:46
не знал что мв110 тормозное устройство, если несложно предложите альтернативу
читайте иногда инструкциюю к приборам, там может встретиться что-то типа такого
Время опроса одного входа*:
термоэлектрические преобразователи и унифицированные сигналы постоянного напряжения и тока, с, не более 0,6 с
– *Опрос входов происходит последовательно, т.е. опрос восьми входов займет время, равное сумме опросов входов с 1 по 8.
вот и всё, что вам надо знать о 8А
плюсуйте сюда фичи модбаса и несложная арифметика первого класса поможет вам можете самим узнать, когда вы получите новые данные с модуля.
более подробно вот здесь пацаны всё распедалили как боги
https://owen.ru/forum/showthread.php?t=35094
альтернативу не предложу, альтернативы как таковой - нет, кроме применения 8АС, там декларируют 5 мс на 1 к***** но у меня в проектах аналоги вторичны плюс требовалась универсальность входов, поэтому опыта работы именно с 8АС как источника оперативных данных, у меня нет.
Поэтому привыкайте к ОВЕН и приспосабливайтесь, в большинстве случаев штатного функционала вполне хватает, а если, к примеру, надо обработать 100 аналогов, то наверное просто нужен другой контроллер
Что может вызывать рестарт плк в принципе ?надеюсь это чисто программный затык, уходов в рестарт я не встречал, у меня не настолько сложные программы, чтобы довести контроллер до каки-то пределов\
в сравнении с ST показался слабым инструментомэто просто разные инструменты для разных задач и на любителя. для онлайн наладки ST к примеру просто какой-то каменный век, хотя кому-то это норм.
Поэтому лично проще сделать какую-то многоходовую связку на ST в виде блока и вставить её в CFC
Емельянов Кирилл
23.11.2022, 00:35
Про CFC написал чисто свои ощущения, в сравнении с ST показался слабым инструментом, может поменяю свое мнение когда-нибудь
Не поменяете
In_Da_Cher_A
23.11.2022, 09:24
Ну не смешитек 100 аналогам как правило идёт уже в довесок сотни 3-5 дискретов, и вот вы уже получаете АСУ ТП небольшого размера, в котором совсем уже другие требования к общему функционалу, который ОВЕН не способен обеспечить в принципе.
Да можно засунуть в стринги всё, что засовывается, да можно понаставить всяческие костыли, но потом с этим объёмом данных надо что-то делать, чем просто притащить его в программу, потратив кучу усилий. С данными, их надо обрабатывать и ими надо управлять.
про обмен с другими контроллерами или про резервирование, я уже даже не говорю.
у ОВЕН есть потолок не по "мощности", а по функционалу и удобству реализации, который он не может перепрыгнуть в принципе, даже с костылями
Привет. Столкнулся с следующим: в SFC диаграмме к шагу привязываю действие (с помощью использования МЭК шагов), но оно выполняется дважды.
Прилагаю скрин, на котором:
- сама тестовая схема, содержащая три шага, Step2 - шаг с привязанным к нему действие test_action с классификатором P ("действие выполняется один раз, если шаг активен")
- окно с содержимым test_action - переменной test я прибавляю единицу (изначально она инициализирована нулём).
64059
По идее единица должна прибавиться к переменной test только один раз (благодаря классификатору P рядом с привязанным действием), но это происходит дважды.
В чём может быть проблема?
Запустите CoDeSys. Откройте справку. В разделе про языки программирования найдите подраздел про SFC. Там есть страничка про МЭК шаги. На ней внимательно прочитайте то, что написано после красненького слова "Замечание"
Запустите CoDeSys. Откройте справку. В разделе про языки программирования найдите подраздел про SFC. Там есть страничка про МЭК шаги. На ней внимательно прочитайте то, что написано после красненького слова "Замечание"
о, точно. спасибо!
Здравствуйте.
Не могли бы подсказать.
сменил целевую платформу с ПЛК110.60-M v2 на ПЛК110.60-L v2.
При компиляции проекта появились 4 ошибки:
ошибка 3728: HMI (19): неверный адрес '%QW6.143.0'
ошибка 3728: HMI (21): неверный адрес '%QW6.161.0'
ошибка 3728: HMI (22): неверный адрес '%QW6.164.0'
ошибка 3728: HMI (24): неверный адрес '%QW6.179.0'
Куда копать?
Здравствуйте.
Не могли бы подсказать.
сменил целевую платформу с ПЛК110.60-M v2 на ПЛК110.60-L v2.
При компиляции проекта появились 4 ошибки:
ошибка 3728: HMI (19): неверный адрес '%QW6.143.0'
ошибка 3728: HMI (21): неверный адрес '%QW6.161.0'
ошибка 3728: HMI (22): неверный адрес '%QW6.164.0'
ошибка 3728: HMI (24): неверный адрес '%QW6.179.0'
Куда копать?
В сторону "Конфигурации ПЛК"
В сторону "Конфигурации ПЛК"
конфигурация скопирована с рабочей программы.
64074
kondor3000
26.11.2022, 16:43
Здравствуйте.
Не могли бы подсказать.
сменил целевую платформу с ПЛК110.60-M v2 на ПЛК110.60-L v2.
При компиляции проекта появились 4 ошибки:
ошибка 3728: HMI (19): неверный адрес '%QW6.143.0'
ошибка 3728: HMI (21): неверный адрес '%QW6.161.0'
ошибка 3728: HMI (22): неверный адрес '%QW6.164.0'
ошибка 3728: HMI (24): неверный адрес '%QW6.179.0'
Куда копать?
С нового ПЛК на новый должно переносится без проблем, возможно вы после смены платформы не нажали Дополнения/Стандартная конфигурация и Вычислять адреса
или не нажали Очистить всё, Компилировать всё.
Надо ещё раз проверить правильность выбранной конфигурации.
Тут прога для переноса https://owen.ru/forum/showthread.php?t=18269
У вас в программе где то прописаны адреса типа '%QW6.143.0' вот они и не совпадают в конфигурации, либо перенесли неправильно.
С нового ПЛК на новый должно переносится без проблем, возможно вы после смены платформы не нажали Дополнения/Стандартная конфигурация и Вычислять адреса
или не нажали Очистить всё, Компилировать всё.
Надо ещё раз проверить правильность выбранной конфигурации.
Тут прога для переноса https://owen.ru/forum/showthread.php?t=18269
У вас в программе где то прописаны адреса типа '%QW6.143.0' вот они и не совпадают в конфигурации, либо перенесли неправильно.
Как раз программой перенес конфигурацию.
Дополнения/Стандартная конфигурация и Вычислять адреса - делал.
Очистить всё, Компилировать всё - делал.
рабочая программа была на 110.60-М, а копировал на 110.60-L
Для контроллеров, последняя буква обозначения которых – латинская
буква «L», устанавливается ограничение объема памяти ввода-вывода
размером 360 байт, при этом 122 байта отводятся для памяти ввода (%I),
234 байта отводятся для памяти вывода (%Q) и оставшиеся 4 байта – под
специальную память (%М).
Наверно это ограничение влияет?
kondor3000
26.11.2022, 17:55
234 байта отводятся для памяти вывода (%Q) и оставшиеся 4 байта – под
специальную память (%М).
Наверно это ограничение влияет?
Да, скорее всего тут и есть ограничение памяти. На L влезают около 100-120 регистров в обмене, точнее можно проверить убирая последние, пока ошибки не будет.
Добрый день! Подскажите есть ли способ вывести на печать все окно логики в Codesys?
Пока что получает только через PrintScreen кусками вытягивать и склеивать.
Добрый день! Подскажите есть ли способ вывести на печать все окно логики в Codesys?
Пока что получает только через PrintScreen кусками вытягивать и склеивать.
А почему не используете стандартные средства? (Файл -> Печать [Параметры печати...])
здравствуйте,можно как-то настроить плк, чтобы оно запоминало, какие выходы горели, до их выключения 1 кнопкой. Есть 1 "главная кнопка", которая выкл почти все, и нужно, если повторно ее нажать, то вкл те входы, которые были выключены этой кнопкой в последний раз.
Duvall это делается в программе ПЛК а не его настройками.
kondor3000
30.11.2022, 13:24
здравствуйте,можно как-то настроить плк, чтобы оно запоминало, какие выходы горели, до их выключения 1 кнопкой. Есть 1 "главная кнопка", которая выкл почти все, и нужно, если повторно ее нажать, то вкл те входы, которые были выключены этой кнопкой в последний раз.
Всё делается в программе.
Собираете все биты кнопок в маску, например Mask (переменная типа WORD, 16 бит) Mask.0:=Bit 0; Mask.1:=Bit 1; и т. д.
Эту переменную можно сохранить как RETAIN , записать в слейв ( будет энергонезависимая переменная), передать на другое устройство. Когда надо распаковать из маски, например Bit 0 :=Mask.0; Bit 1 :=Mask.1; и т. д. и включить те же биты, которые были.
Включить можно только выходы. Входы включить из программы нельзя.
Duvall Это не управление освещением по моим разработкам типа "Длинное нажатие на мастер-кнопку гасит весь свет, а двойное включает как было?"
Всё делается в программе.
Собираете все биты кнопок в маску, например Mask (переменная типа WORD, 16 бит) Mask.0:=Bit 0; Mask.1:=Bit 1; и т. д.
Эту переменную можно сохранить как RETAIN , записать в слейв ( будет энергонезависимая переменная), передать на другое устройство. Когда надо распаковать из маски, например Bit 0 :=Mask.0; Bit 1 :=Mask.1; и т. д. и включить те же биты, которые были.
Включить можно только выходы. Входы включить из программы нельзя.
Не подскажете по конкретнее, делаю на cfc, дополнительный элемент получается нужен, саму мастер кнопку еще не добавил https://drive.google.com/file/d/1DH2O7cfMM2MpNf1h9e5nkoCxvIgeWST-/view?usp=share_link вот прога
Duvall Это не управление освещением по моим разработкам типа "Длинное нажатие на мастер-кнопку гасит весь свет, а двойное включает как было?"
Нет вашу работу не видел, не поделитесь?)
Нет вашу работу не видел, не поделитесь?)
Поделюсь! Пишите на мыло info@cs-cs.net - вышлю крутой FB под такие задачи.
kondor3000
30.11.2022, 15:14
Не подскажете по конкретнее, делаю на cfc, дополнительный элемент получается нужен, саму мастер кнопку еще не добавил https://drive.google.com/file/d/1DH2O7cfMM2MpNf1h9e5nkoCxvIgeWST-/view?usp=share_link вот прога
У меня нет времени разбираться в вашем проекте. Сделайте пример из 1, 2 кнопок и напишите что должно включаться и сохраняться. Пример можно выложить в расширенном режиме, добавить файл.
Обычно начинают с отладки кусков, а потом добавляют сотни выключателей. У вас всё наоборот. Вам всю прогу возможно придётся переписывать.
У вас уже нижняя часть в эмуляции не обрабатывается. Надо разделить программу на куски например на каждый 32 битный вход выход.
Присоединяюсь к Kondor3000. Я тоже посмотрел после твоего комментария. Это ЖОСТЬ! Прям все каноны нарушены в хламину!
Там проще замутить косвенную адресацию и массив FB крутить на ST, а не на CFC делать. Мне он так и не написал, а я ему хотел закинуть свой FB CSIRelay - импульсное реле с сохранением и восстановлением состояния.
Кому как, конечно, но я за нормальное оформление проекта.
P.S. от BLINK давно отказался.
сделал как у вас, не работает in1, вкл и сразу начинает гаснуть, а должен гаснуть только при повторном нажатии, также не выкл in2 и in3, и не работают совместно in2 и in3, если их вкл в течении 6 сек, лампы должны загореться везде и одновременно, а на той все работает исправно, хоть и "ненормально оформлено"
У меня нет времени разбираться в вашем проекте. Сделайте пример из 1, 2 кнопок и напишите что должно включаться и сохраняться. Пример можно выложить в расширенном режиме, добавить файл.
Обычно начинают с отладки кусков, а потом добавляют сотни выключателей. У вас всё наоборот. Вам всю прогу возможно придётся переписывать.
У вас уже нижняя часть в эмуляции не обрабатывается. Надо разделить программу на куски например на каждый 32 битный вход выход.
https://skr.sh/sHCPoedx7tL?a допустим включены in1, in3 и in7, если нажать 1 раз in9, то они все выкл, но если нажать еще раз они включаться
Не подскажете кнопку в oscat basic/building, которая при 1 нажатии вкл первый выход, при 2 второй и при 3 третий, и чтобы также выкл, пробовал элемент click, но он почему-то выкл сразу, как отпустить кнопку
Не подскажете кнопку в oscat basic/building, которая при 1 нажатии вкл первый выход, при 2 второй и при 3 третий, и чтобы также выкл, пробовал элемент click, но он почему-то выкл сразу, как отпустить кнопку
64237 нашел click_dec, но если отпустить подачу, то он выключает выходы, а надо чтобы они держались, пока их вручную не выкл, и чтобы они не выкл, если вкл один из них, то есть чтобы они могли гореть все вместе. Похоже что click_dec не подойдет
64237 нашел click_dec, но если отпустить подачу, то он выключает выходы, а надо чтобы они держались, пока их вручную не выкл, и чтобы они не выкл, если вкл один из них, то есть чтобы они могли гореть все вместе. Похоже что click_dec не подойдет
Выключать как планируете?
Выключать как планируете?
Ответа нет....
например так
64242
порядок выполнения - ВАЖЕН!
https://owen.ru/forum/attachment.php?attachmentid=64241&d=1669986673
Выключать как планируете?
также, первый по одному нажатию, 2 по 2 и так далее, и таймер нужно поставить по которому они будут работать, если допустим хотим выключить 1 и не вкл при этом 2, то нужно подождать секунды 2.
Ответа нет....
например так
64242
порядок выполнения - ВАЖЕН!
https://owen.ru/forum/attachment.php?attachmentid=64241&d=1669986673
так не получится, так как если хотим, чтобы горели все 2, то обязательно должен быть вкл 1, и также с 3, поэтому, надо поставить таймер допустимого нажатия.
Вот чтобы вкл 2 и сразу его выкл, нужно нажать быстро 2 раза, подождать 2сек и еще раз нажать 2раза.
kondor3000
03.12.2022, 14:08
Переделал проект на блоки, добавил общий сброс.
Для сохранения масок добавил Глобальные переменные, в том числе RETAIN и Блок сохранения масок Sohranenie. Код пока написан только для входов IN1-In12, и для маски m, для остальных масок надо дописать, скопировать.
IF In_y>0 AND In_y_zap<>In_y THEN (* Запись маски со входов In 1- In 12 *)
In_y_zap1:=In_y ;
In_y_zap:=In_y_zap1 ;
END_IF
IF In18 AND In_y_zap<>In_y THEN (* Включение/ выключение входов In 1- In 12 по кнопке In 18 *)
In_y_zap1:=In_y_zap;
ELSIF In18 AND In_y_zap=In_y THEN
In_y_zap1:=In_y_zap;
ELSE
In_y_zap1:=0;
END_IF
IF In_m>0 AND In_m_zap<>In_m THEN (* Запись маски с парамерром m *)
In_m_zap1:=In_m ;
In_m_zap:=In_m_zap1 ;
END_IF
IF In18 AND In_m_zap<>In_m THEN (* Включение/ выключение маски m по кнопке In 18 *)
In_m_zap1:=In_m_zap;
ELSE
In_m_zap1:=0;
END_IF
Осталось к каждому switch1 добавить OR и два входа, один маска кнопок, второй сохранённая маска, а на выходах добавить присвоение маски, см. скрин. 64251
И по кнопке IN18, можно переключать сохранённую маску или выключить всё.
Допустим включены кнопки IN1-In4, работают выходы Out1-Out4, потом ресетом Res сбрасываем всё.
После этого нажатие IN18 включает записанные выходы, второе нажатие выключает выходы. Скрин 64252
Подождите-подождите...
А чтобы включить 23 - нужно нажать быстро 23 раза, подождать 2сек и еще раз нажать 23раза ?
чтобы вкл и выкл да, чтобы выкл 2, нужно подождать 2 сек после вкл, и только после этого нажать быстро 2 раза
Переделал проект на блоки, добавил общий сброс.
Для сохранения масок добавил Глобальные переменные, в том числе RETAIN и Блок сохранения масок Sohranenie. Код пока написан только для входов IN1-In12, и для маски m, для остальных масок надо дописать, скопировать.
IF In_y>0 AND In_y_zap<>In_y THEN (* Запись маски со входов In 1- In 12 *)
In_y_zap1:=In_y ;
In_y_zap:=In_y_zap1 ;
END_IF
IF In18 AND In_y_zap<>In_y THEN (* Включение/ выключение входов In 1- In 12 по кнопке In 18 *)
In_y_zap1:=In_y_zap;
ELSIF In18 AND In_y_zap=In_y THEN
In_y_zap1:=In_y_zap;
ELSE
In_y_zap1:=0;
END_IF
IF In_m>0 AND In_m_zap<>In_m THEN (* Запись маски с парамерром m *)
In_m_zap1:=In_m ;
In_m_zap:=In_m_zap1 ;
END_IF
IF In18 AND In_m_zap<>In_m THEN (* Включение/ выключение маски m по кнопке In 18 *)
In_m_zap1:=In_m_zap;
ELSE
In_m_zap1:=0;
END_IF
Осталось к каждому switch1 добавить OR и два входа, один маска кнопок, второй сохранённая маска, а на выходах добавить присвоение маски, см. скрин. 64251
И по кнопке IN18, можно переключать сохранённую маску или выключить всё.
Допустим включены кнопки IN1-In4, работают выходы Out1-Out4, потом ресетом Res сбрасываем всё.
После этого нажатие IN18 включает записанные выходы, второе нажатие выключает выходы. Скрин 64252
А для последующих нужно тоже in_y в выходы добавлять 642956429664297
kondor3000
05.12.2022, 14:34
А для последующих нужно тоже in_y в выходы добавлять 642956429664297
Там же есть образец, in_y выходы нужны только где кнопки на ПЛК, где входы с блоков, там не нужны.
Там же есть образец, in_y выходы нужны только где кнопки на ПЛК, где входы с блоков, там не нужны.
понял спасибо, а как добавить кнопку 64298, вместо in18 нужно добавить in_n.3164299 тут все поменял
kondor3000
05.12.2022, 15:51
понял спасибо, а как добавить кнопку 64298, вместо in18 нужно добавить in_n.3164299 тут все поменял
in_n.31 это глобальная переменная, в первом вашем скрине её вообще надо удалить.
А в блоке Sohranenie (2 ваш скрин) все In18, заменить на In_n.31
И самое главное, вы прежде чем менять кнопки, проверили работу всей программы?
in_n.31 это глобальная переменная, в первом вашем скрине её вообще надо удалить.
А в блоке Sohranenie (2 ваш скрин) все In18, заменить на In_n.31
И самое главное, вы прежде чем менять кнопки, проверили работу всей программы?
конечно, все проверил, с in_m порядок нарушен, тк начинается с In13, и из-за этого вкл сразу по-несколько выходов64303
kondor3000
06.12.2022, 00:51
конечно, все проверил, с in_m порядок нарушен, тк начинается с In13, и из-за этого вкл сразу по-несколько выходов64303
Естественно, надо сделать по нормальному, а не со смещением, иначе запоминать будет неправильно.
Вот полностью рабочий проект, управление записью опять по IN18
так это кнопка отвечает за группу допустим, и если хотим вкл и выкл одной кнопкой разные выходы, нужно разные нажатия, а если хотим выкл нужно ждать 2сек, чтобы не нарушать очередность
спасибо, сейчас все проверю
Естественно, надо сделать по нормальному, а не со смещением, иначе запоминать будет неправильно.
Вот полностью рабочий проект, управление записью опять по IN18
а вот этот блок для чего нужен64321
kondor3000
06.12.2022, 12:18
а вот этот блок для чего нужен64321
Ну вы даёте, такие вопросы задавать. В программе посмотреть никак?
Шесть экземпляров блока вызвано, для обработки 6 масок от МВВ.
Вместо написания 6 блоков, написал 1 и вызвал его сколько надо раз. 64323
Они пронумерованы от 1 до 6 и в эмуляции тоже будет 6 экземпляров, какой надо посмотреть, такой и открываете. 64324
Ну вы даёте, такие вопросы задавать. В программе посмотреть никак?
Шесть экземпляров блока вызвано, для обработки 6 масок от МВВ.
Вместо написания 6 блоков, написал 1 и вызвал его сколько надо раз. 64323
Они пронумерованы от 1 до 6 и в эмуляции тоже будет 6 экземпляров, какой надо посмотреть, такой и открываете. 64324
Нет это я понял, я про то, что их же надо будет заменять, на in_m и тп, а значит он не нужен будет? Все равно несколько включает https://drive.google.com/file/d/1UXDzaPUCT5xla61bpAxb-kqLEuF7PI8I/view?usp=sharing
kondor3000
06.12.2022, 12:51
Нет это я понял, я про то, что их же надо будет заменять, на in_m и тп, а значит он не нужен будет? Все равно несколько включает https://drive.google.com/file/d/1UXDzaPUCT5xla61bpAxb-kqLEuF7PI8I/view?usp=sharing
Как не нужен, это универсальный блок на все маски, сколько вам повторять?
Это in_m ваш не нужен уже, если только вы его не хотите изменить, но тогда запоминать будет криво.
Проще в новый проект, экпортом, импортом добавить другие блоки.
Как не нужен, это универсальный блок на все маски, сколько вам повторять?
Это in_m ваш не нужен уже, если только вы его не хотите изменить, но тогда запоминать будет криво.
а почему тогда 5 вкл 3 и 16432564326, в других блоках также по несколько включает
kondor3000
06.12.2022, 13:12
а почему тогда 5 вкл 3 и 16432564326, в других блоках также по несколько включает
Вам теорию надо учить. 0 бит это 1,
1 бит это 2,
2 бит, это 4,
3 бит это 8,
4 бит это 16, далее 32,64,128,256,512 и т. д.
Число 5 это включены биты 0 и 2, ( 1+4=5 )
7 включены биты 0,1,2
8 включён только 3 бит. Тренируйтесь на кнопках в эмуляции или на реальном ПЛК с масками.
Вам теорию надо учить. 0 бит это 1,
1 бит это 2,
2 бит, это 4,
3 бит это 8,
4 бит это 16, далее 32,64,128,256,512 и т. д.
Число 5 это включены биты 0 и 2, ( 1+4=5 )
7 включены биты 0,1,2
8 включён только 3 бит. Тренируйтесь на кнопках в эмуляции или на реальном ПЛК с масками.
понял, спасибо
Как не нужен, это универсальный блок на все маски, сколько вам повторять?
Это in_m ваш не нужен уже, если только вы его не хотите изменить, но тогда запоминать будет криво.
Проще в новый проект, экпортом, импортом добавить другие блоки.
In13- in18 никак в маску не вставить? Можно же сделать каждый отдельно, а не все в одном, каждый отдельно блок64334
тем более, если будут добавлены разные параметры, где не нужна будет даже эта кнопка, например на той же лестнице.
kondor3000
06.12.2022, 15:30
In13- in18 никак в маску не вставить?
Вставить можно, только зачем? Вам нужны кнопки для управления системой.
Вы пытаетесь использовать например In_m_31, нарушаете логику запоминания масок. А лишние кнопки пытаетесь в маску засунуть, опять запоминания не будет.
Либо уже пожертвуйте какой то маской входов, выходов и не запоминайте её.
Например выходы лестницы вы тоже в маску засунули, часть маски потеряли.
Вставить можно, только зачем? Вам нужны кнопки для управления системой.
Вы пытаетесь использовать например In_m_31, нарушаете логику запоминания масок. А лишние кнопки пытаетесь в маску засунуть, опять запоминания не будет.
Тк эти кнопки уже подключены в таком порядке, плюс как добавлять параметры где не нужна будет эта маска, как на лестнице.
Вставить можно, только зачем? Вам нужны кнопки для управления системой.
Вы пытаетесь использовать например In_m_31, нарушаете логику запоминания масок. А лишние кнопки пытаетесь в маску засунуть, опять запоминания не будет.
Либо уже пожертвуйте какой то маской входов, выходов и не запоминайте её.
Можно же сделать отдельно их друг от друга, чтобы можно было убирать не нужные, как тут
64335
они находятся на лестнице
64336
чтобы не дублировались
kondor3000
06.12.2022, 15:48
Можно же сделать отдельно их друг от друга, чтобы можно было убирать не нужные, как тут
64335
они находятся на лестнице
64336
чтобы не дублировались
Если уберёте часть выключателей, не будет запоминания. Включите из другого места, маска нарушится.
Я предлагаю например маску лестницы, она уже нарушена использовать для входов, выходов, а запоминание убрать.
Решать вам, конечно, пишу как бы сделай сам. Все полные маски, для запоминания, 1 маску для управления, без запоминания.
Короче, всё надо будет проверять по 100 раз.
Если уберёте часть выключателей, не будет запоминания. Включите из другого места, маска нарушится.
Я предлагаю например маску лестницы, она уже нарушена использовать для входов, выходов, а запоминание убрать.
Решать вам, конечно, пишу как бы сделай сам. Все полные маски, для запоминания, 1 маску для управления, без запоминания.
Короче, всё надо будет проверять по 100 раз.
Сложная задачка
Если уберёте часть выключателей, не будет запоминания. Включите из другого места, маска нарушится.
Я предлагаю например маску лестницы, она уже нарушена использовать для входов, выходов, а запоминание убрать.
Решать вам, конечно, пишу как бы сделай сам. Все полные маски, для запоминания, 1 маску для управления, без запоминания.
Короче, всё надо будет проверять по 100 раз.
а можно ли заменить switch_in_ на switch_in_m, switch_in_n, switch_in_v, и каждый по отдельности прописать, а switch_in_ удалить.
потому что не только лестница будет, возможно еще какие-то задачи параллельные будут, поэтому хотел бы их отдельно все прописать, и не нужные удалять, как в прошлой версии программы, где вообще запоминания не было64338
kondor3000
06.12.2022, 16:05
а можно ли заменить switch_in_ на switch_in_m, switch_in_n, switch_in_v, и каждый по отдельности прописать, а switch_in_ удалить.
потому что не только лестница будет, возможно еще какие-то задачи параллельные будут, поэтому хотел бы их отдельно все прописать, и не нужные удалять, как в прошлой версии программы, где вообще запоминания не было64338
Пробуйте, я сделал оптимизацию системы. А как вы сделаете, вам решать. Главное делайте блоками, а не всё в PLC_PRG как было.
Тогда к каждому добавить y и продолжить очередность с блока In64341
kondor3000
06.12.2022, 16:24
Тогда к каждому добавить y и продолжить очередность с блока In64341
Для кнопок in13 по in18 надо.
Для кнопок in13 по in18 надо.
In_n.31 почему-то вкл это 64344
и работает только до in 12
kondor3000
06.12.2022, 18:02
In_n.31 почему-то вкл это 64344
и работает только до in 12
На ваших скринах не видно ничего. Делайте скрины кнопкой PrintScreen, вставляйте в PAINT в формате jpg и добавляйте как Вставить изображение.
Или выкладывайте проект.
А по поводу записи из разных масок, в другие маски уже много раз писал, будут проблемы.
Глобальные переменные работают во всех блоках, если вы забыли её удалить в другом блоке, она может не сработать или наоборот гореть когда не надо.
kondor3000
06.12.2022, 22:34
Вобщем нужны пляски с бубном, в скринах всё нарисовал.
Добавляем выходы, дописываем блок Switch_ In, в нём идёт запоминание 64356
Переменную с выхода отправляем в созданный блок Switch_ In_m,
OR и Switch1 выкидываем, а переменную просто соединяем вместо старой 64357
Вобщем нужны пляски с бубном, в скринах всё нарисовал.
Добавляем выходы, дописываем блок Switch_ In, в нём идёт запоминание 64356
Переменную с выхода отправляем в созданный блок Switch_ In_m,
OR и Switch1 выкидываем, а переменную просто соединяем вместо старой 64357
Проблема в том, что выходов в плк всего 12, поэтому in13 выходит на in_m.0.
https://drive.google.com/file/d/19VB1am-hh_ZFNoPYD9FRY_bWRzd4rB-h/view?usp=sharing
64372
kondor3000
07.12.2022, 09:54
Проблема в том, что выходов в плк всего 12, поэтому in13 выходит на in_m.0.
https://drive.google.com/file/d/19VB1am-hh_ZFNoPYD9FRY_bWRzd4rB-h/view?usp=sharing
64372
Написал же как надо сделать в предыдущем посте. Только у меня выходит на Out_.3 (Out_m.3).
Поставьте Out_.0 будет (Out_m.0).
In13- In18 должны заходить в блок, а Out13- Out18 просто для наглядности.
В блоке Sohranenie для кнопок одна запись, для масок другая, для правильной записи. Ваша версия работать правильно не будет.
Написал же как надо сделать в предыдущем посте. Только у меня выходит на Out_.3 (Out_m.3).
Поставьте Out_.0 будет (Out_m.0).
Вот только все добавил, но не работает in_n.31
64373 64374 64375
c in1 по in12 выкл, а дальше нет
kondor3000
07.12.2022, 10:14
Вот только все добавил, но не работает in_n.31
c in1 по in12 выкл, а дальше нет
Дописал пост выше, читайте пока не поймёте.
В блоке Sohranenie для кнопок одна запись, для масок другая, для правильной записи. Ваша версия работать правильно не будет. in_n.31 у вас не работает и проект вы выложили уже без блока in_n
Кнопка In_n.31 у вас управляющая, записывать её не надо.
Вот, дописал управление с кнопки In_n.31, в блоке Switch_In_n удалил всё кроме самой переменной, она не будет записываться.
Теперь по In13 записываю в маску Out_m.
Всё сбрасываю Res и кнопкой In_n.31 включаю и выключаю выход Out_m.0 Скрин 64377
Выход Out_n.31 теперь остался свободный, его теперь тоже можно где то использовать.
Дописал пост выше, читайте пока не поймёте.
В блоке Sohranenie для кнопок одна запись, для масок другая, для правильной записи. Ваша версия работать правильно не будет. in_n.31 у вас не работает и проект вы выложили уже без блока in_n
Кнопка In_n.31 у вас управляющая, записывать её не надо.
Вот, дописал управление с кнопки In_n.31, в блоке Switch_In_n удалил всё кроме самой переменной, она не будет записываться.
Теперь по In13 записываю в маску Out_m.
Всё сбрасываю Res и кнопкой In_n.31 включаю и выключаю выход Out_m.0 Скрин 64377
Выход Out_n.31 теперь остался свободный, его теперь тоже можно где то использовать.
https://drive.google.com/file/d/1dVOFYa8HcdUnvw3Bcq-S_3yCWyl-gjBp/view?usp=sharing
Сбрасывает сохранение у всех кроме in13 и не выкл in13
64383 64383
kondor3000
07.12.2022, 12:06
https://drive.google.com/file/d/1dVOFYa8HcdUnvw3Bcq-S_3yCWyl-gjBp/view?usp=sharing
Сбрасывает сохранение у всех кроме in13 и не выкл in13
Откройте мои скрины в посте #9226 и сравните со своими. Или даже сравните в своём блоке с верхними.
На входе неправильно, и выход так присваиваться не будет сразу в маску m, потому что в маску вы записываете из блока m.
Откройте мои скрины в посте #9226 и сравните со своими. Или даже сравните в своём блоке с верхними.
На входе неправильно, и выход так присваиваться не будет сразу в маску m, потому что в маску вы записываете из блока m.
Добавил in_n, потом перестало работать in_m, удалил in_n, но и in_n не заработал(не работает сохранение и не выкл)
https://drive.google.com/file/d/1GBTLwzVIdRHUB4MVPpdDfb-xzdbX1OkC/view?usp=sharing
Здравствуйте!
Ни разу не работал с ПЛК160 [М02], но в проекте предлагают использовать его.
Я правильно понял из мануалов что особой разницы в производительности контроллеров ПЛК110 [М02] и ПЛК160 [М02] нет?
64387
вдруг я ошибаюсь )))
Заранее спасибо.
kondor3000
07.12.2022, 16:33
Добавил in_n, потом перестало работать in_m, удалил in_n, но и in_n не заработал(не работает сохранение и не выкл)
https://drive.google.com/file/d/1GBTLwzVIdRHUB4MVPpdDfb-xzdbX1OkC/view?usp=sharing
Как обычно, даже со скринов переписать не смогли. У меня всё заработало. 64389
kondor3000
07.12.2022, 16:48
Здравствуйте!
Ни разу не работал с ПЛК160 [М02], но в проекте предлагают использовать его.
Я правильно понял из мануалов что особой разницы в производительности контроллеров ПЛК110 [М02] и ПЛК160 [М02] нет?
вдруг я ошибаюсь )))
Заранее спасибо.
В производительности разницы нет. Разница во входах и выходах, на ПЛК160 [М02] есть аналоговые входы и выходы, но меньше дискретных.
ПЛК110 [М02], в зависимости от модификации, разное кол-во дискретных входов, выходов. Аналоговых нет вообще.
Как обычно, даже со скринов переписать не смогли. У меня всё заработало. 64389
Спасибо огромное, уже исправил,сразу и не понял в входах и выходах без m и n нужно было, да что-то сразу не заметил. Думал раз в название поменял, то будет работать.
Как обычно, даже со скринов переписать не смогли. У меня всё заработало. 64389
Все проверил, in_n.31 не выключает in_n, и in_m выключает последний включенный, но если включить сразу несколько, то выключает все, но если включить по 1, то выключит последний добавленный
kondor3000
08.12.2022, 10:42
Все проверил, in_n.31 не выключает in_n, и in_m выключает последний включенный, но если включить сразу несколько, то выключает все, но по если включить по 1, то выключит последний добавленный
Сколько раз вам повторять, не надо было путать маски и пускать через другие.
1) in_n не выключается, а ничего, что ваш in_n.31, включен сейчас? Он и передаётся на выход. Разъедините выход в блоке n.
2) не выкл несколько in_m(выкл. последний вкл) При задании кнопка должна потом быть выключена, а вы забываете выключать Запоминается последнее состояние, после сбоса RES (всё выключено) оно и включается.
Если вы и дальше будете пускать через другие маски, вы сами в итоге запутаетесь и меня запутаете.
Сколько раз вам повторять, не надо было путать маски и пускать через другие.
1) in_n не выключается, а ничего, что ваш in_n.31, включен сейчас? Он и передаётся на выход. Разъедините выход в блоке n.
2) не выкл несколько in_m(выкл. последний вкл) При задании кнопка должна потом быть выключена, а вы забываете выключать Запоминается последнее состояние, после сбоса RES (всё выключено) оно и включается.
Если вы и дальше будете пускать через другие маски, вы сами в итоге запутаетесь и меня запутаете.
Я имел в виду, что он не выключает in_n выходы
https://skr.sh/vHIoTefLoNM?a также попробовал, отдельно каждый выключать, на видео только после 2 добавлений выключил,
https://skr.sh/vHIhH8BJgC4?a если включить сразу 2 входа, то он и выключит 2, но если включить сначала 1, а потом 2, то он выключит последний
kondor3000
08.12.2022, 11:15
Я имел в виду, что он не выключает in_n выходы
https://skr.sh/vHIoTefLoNM?a также попробовал, отдельно каждый выключать, на видео только после 2 добавлений выключил,
https://skr.sh/vHIhH8BJgC4?a если включить сразу 2 входа, то он и выключит 2, но если включить сначала 1, а потом 2, то он выключит последний
А теперь читайте, пока не поймёте!!!
2) не выкл несколько in_m(выкл. последний вкл) При задании кнопка должна потом быть выключена, а вы забываете выключать
Запоминается последнее состояние, после сбоса RES (всё выключено) оно и включается.
.
После введения 1, вы 0 не вводите, поэтому запоминает 64. И Res не делаете. А кноки у вас не выключатели, после нажатия она сразу отпускается.
И ещё похоже вы блок m опять переписали, почему при 1 включается 64 ?
так? https://skr.sh/vHIF8EKyC1o?a, если так, то я уже пробовал
kondor3000
08.12.2022, 11:36
так? https://skr.sh/vHIF8EKyC1o?a, если так, то я уже пробовал
И ещё похоже вы блок m опять переписали, почему при 1 включается 64 ? Если с 1 по 6 бит заведены кнопки с 13 по 18 ?
И ещё похоже вы блок m опять переписали, почему при 1 включается 64 ? Если с 1 по 6 бит заведены кнопки с 13 по 18 ?
да переписал, тк он не в том порядке запускался 64412, ну это ни на что не влияет https://skr.sh/vHI0hmif6d1?a
они вкл так, но на выходах у них другие значения, поэтому переписал
kondor3000
08.12.2022, 12:19
да переписал, тк он не в том порядке запускался 64412, ну это ни на что не влияет https://skr.sh/vHI0hmif6d1?a
они вкл так, но на выходах у них другие значения, поэтому переписал
Если переписали, то выкладывайте, буду проверять.
и еще хотел бы узнать in_.28 эти названия можно поменять на in_m.28, in_n.28, чтобы можно было настроить вход in_m.28 на выход out_n.28
Если переписали, то выкладывайте, буду проверять.
https://drive.google.com/file/d/16dzQ3avmqfG-fgR6KiHHmz2xXLTuUes6/view?usp=sharing
kondor3000
08.12.2022, 13:41
https://drive.google.com/file/d/16dzQ3avmqfG-fgR6KiHHmz2xXLTuUes6/view?usp=sharing
Короче, блок m работает не правильно. Нельзя менять порядок бит в этом блоке. In.6 должен писаться в Out.6. Иначе запись будет кривая. Не забывайте, что сюда ещё кнопки с 13 по 18 заходят. Это первое.
Второе, действительно надо чуть подправить блок Sohranenie, поменять запись по выходам, а не по входам как сейчас. Тогда кнопки будут правильно записываться.
Короче, блок m работает не правильно. Нельзя менять порядок бит в этом блоке. In.6 должен писаться в Out.6. Иначе запись будет кривая. Не забывайте, что сюда ещё кнопки с 13 по 18 заходят. Это первое.
Второе, действительно надо чуть подправить блок Sohranenie, поменять запись по выходам, а не по входам как сейчас. Тогда кнопки будут правильно записываться.
Прям вообще способа нет, так оставить, просто они уже так подсоединены, что in_m.0 выходит на out_m.7.
И по поводу разделить все, а то некоторые входы in_m могут выходить на out_n, также и c остальными.
kondor3000
08.12.2022, 15:21
Прям вообще способа нет, так оставить, просто они уже так подсоединены, что in_m.0 выходит на out_m.7.
И по поводу разделить все, а то некоторые входы in_m могут выходить на out_n, также и c остальными.
Нет способа, m.0 =1, m.6= 64, как работать будет ?
Введёте 64 (6 бит) выйдет 4096 ( запишется в 12 бит)
Я об этом вам уже 4 день толкую.
И по поводу разделить все, а то некоторые входы in_m могут выходить на out_n,
с этого надо начинать было, тут всю программу переписывать заново надо.
Нет способа, m.0 =1, m.7= 64, как работать будет ? Введёте 64 (6 бит) выйдет 4096 ( запишется в 12 бит)
Ну так in18 идет в out_m.5, а in_m.0 уже в out_m.6, просто разные входы и выходы, или лучше вообще добавить в конфигуратор 8бит и каждый отдельно назвать 64420
Нет способа, m.0 =1, m.6= 64, как работать будет ?
Введёте 64 (6 бит) выйдет 4096 ( запишется в 12 бит)
Я об этом вам уже 4 день толкую.
так почему, можно же для входа in15 указать выход out10, тогда почему нельзя для входа in_m.0 указать выход out_m.7
входы и выходы же работают, все нормально, или как раз из-за этого не работает запоминание, просто в любом случае порядок будет не точным, так как есть кнопки, которые сразу несколько будут вкл, с задержками и тп, много свойств, и в таком случае порядок все равно изменится рано или поздно, просто я когда добавлял контроллеры, не думал, что этот порядок так сильно влиять будет, что просто 6 входов лишних из плк добавил в 1 контроллер и там же последний 6 убрал.
просто разные значения на входах и выходах, но работает-то в правильном порядке. Нужно только чтобы сохранялись все, они сохраняются только, если их все разом добавить, а если по-одному, то только последний, с in_n и последующими только беда.
Просто они идут до 26 64422
а остальные 6 будут кнопками для контроля, датчики и так далее, если бы я знал, что так будет добавил бы их в In13-in18, а получилось что они будут с in_m.26 по in_m.31. Остальные все по порядку идут.
kondor3000
08.12.2022, 18:09
так почему, можно же для входа in15 указать выход out10, тогда почему нельзя для входа in_m.0 указать выход out_m.7
входы и выходы же работают, все нормально, или как раз из-за этого не работает запоминание, просто в любом случае порядок будет не точным, так как есть кнопки, которые сразу несколько будут вкл, с задержками и тп, много свойств, и в таком случае порядок все равно изменится рано или поздно, просто я когда добавлял контроллеры, не думал, что этот порядок так сильно влиять будет, что просто 6 входов лишних из плк добавил в 1 контроллер и там же последний 6 убрал.
просто разные значения на входах и выходах, но работает-то в правильном порядке. Нужно только чтобы сохранялись все, они сохраняются только, если их все разом добавить, а если по-одному, то только последний, с in_n и последующими только беда.
Потому что разные способы записи, с кнопок запоминается в блоке in, а в блоке масок, биты присваиваются на выход. Сохранение идёт по входу кнопок.
С масок, биты приходят числами, записываются числами. При попытке изменить биты, запись нарушается, числа не совпадают. Сохранение с выхода блока.
Единственный вариант, записывать в промежуточные маски, маски раскладывать на биты. И уже биты менять местами, а потом собирать в маски на выход. Но делать надо очень аккуратно, типа n 28 пишем в m 28 и наоборот.
kondor3000
08.12.2022, 18:37
Короче так и сделал, добавил промежуточные маски Out_m1 и Out_n1 (глобальные переменные), в них записываются маски m и n.
Далее идут блоки Out_m_m, в них маски раскладываются на биты и там поменял Out_m1.28 на Out_n.28 и в блоке Out_n_n поменял Out_n1.28 на Out_m.28. 64429
Исправил запись битов, теперь биты можно включать например 6 бит (64), выключить. Потом 7 бит (128), выключить.
Сделать сброс Res.
И кнопкой in_n.31 управлять.
Вот исправленный проект
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot