Sulfur Спасибо, Ваши замечания учту. Пока возможность экспериментировать ограничена т.к. оборудование (кроме нитки3) находится в эксплуатации.
Вид для печати
Sulfur Спасибо, Ваши замечания учту. Пока возможность экспериментировать ограничена т.к. оборудование (кроме нитки3) находится в эксплуатации.
Привет.
Я новичок в программировании ПЛК (изучаю FBD). Подскажите, как реализовать программу по включению задвижки после получения определенной последовательности сигналов от кнопок. Например, нажал на кнопку А, а потом на Б. Если кнопку на Б нажать первой, а потом на А, то ничего не должно произойти. Только последовательность А -> Б может подать сигнал на включение задвижки
Вообще, изначально ТЗ было таким, что для on/off задвижки нужно держать нажатой кнопку А больше 5 секунд, а вторую кнопку Б держать нажатой от одной до трех секунд, при нажатой кнопке А. Включение и выключение должно происходить при последовательности А->Б
Извиняюсь, неправильно объяснил
Вообще, это не вовсе и не ТЗ. Это уже вариант решения задания, который не раскрывает непосвященному тайну настоящего ТЗ. Не понятно например как поступать если кнопка А так и не была отпущена, а Б нажата на эти 3 сек. и отпущена? Ну и другие ситуации."
Настоящее ТЗ должно выглядит так:
Чтобы открыть люк ракетной шахты двое старших офицеров вахты подводной лодки должны одновременно нажать каждый свою кнопку, при чем первый офицер (старший на вахте) должен нажать эту кнопку первым...
Ну, надеюсь понимаете ;)
Иначе программист наваяет что-то совершенно свое, не подходящее под реальные условия.
Добрый день проблемы с зависанием codesys в режиме эмуляции. Проверил контроле проекта - проблемы только по множественному обращению к выходам, но это из-за того используются модули вывода которые управляются word и соответственно битовых выходов по 16. Есть ли еще какие либо причины зависания? Проект во вложении.
Спасибо.
Очистить все пробовал, порядок по потоку, goto нет. Проявляется следующим образом, при навигации по программе, после открывания разных фб (как правило 9-10 раз) происходит зависание. Т.Е на входах выходах ???, линии становятся серыми и т.д.
а если в этот момент закрыть все ненужные окна ?
и кажется есть неисп. фблоки
Неиспользуемые блоки удалил, в том числе и модуль калибровки (в принципе они не использовались) - результат тот же. А вот после того как в режиме эмуляции стал закрывать неиспользуемые окна зависание пропало.
Т.е. получается что если открыто больше 9 окон codesys зависает. Или есть какое-то объяснение?
Спасибо за поддержку.
Всем привет. Возникла необходимость в подключении к ПЛК100 для заливки программы, - "И тут, пошли неуважения". Роутер получает приватный IP-адрес 10......, то есть VPN-клииент. В самом роуторе прописан постоянный адрес для ПЛК-100, - 192.168.1.45, а также, этот айпишник прописан в ПЛК - 192.168.1.45. Для данного ПЛК, открыт порт 502, который опрашивает скада без проблем, и не важно с какого региона идет опрос. И так же отрыл порт 1200, но вот здесь и происходит затык. В Gateway менял с TCP на Local, что тоже результата не дало.
Вопрос по среде программирования:
Какое количество вложений подпрограмм допустимо? Например из PLC_PRG вызывается POU, в которой есть вызов другой POU, где так есть вызов POU или FB, и т. д.
Кажется у Вас связь через VPN канал? Если все настроено правильно, нет необходимости пробрасывать какие-либо порты. Естественно никаких фаерволов на VPN канале быть не должно, иначе зачем он тогда?
Проверено в разных вариантах все и так работает.
Может у Вас не прописаны или некорректно прописаны маршруты из одной сети в другую, причем с обоих сторон проверьте: пинги должны туда-сюда бегать без проблем.
Да, VPN. Открыли все порты в роуторе командой ICMP для ПЛК, в общем, так и не удалось подключить Codesys удаленно.
Клиент-1(Codesys) IP-10.8.0.2 -----СЕРВЕР VPN ----- Клиент-2(ПЛК) IP-роутера: 10.8.0.10 --- ПЛК: 192.168.1.50 (ПОРТЫ открыты: 502, 1200). Проверил в локалке прогай NMAP, порты 502, 1200 открыты. В файерволе ПК 1200 прописал. Скада опрашивает ПЛК по 502 без проблем, и не важно какой адрес будет у этого клиента.
Как я уже сказал, никаких портов пробрасывать не нужно! Вместо этого нужно корректно настроить маршрутизацию.
Информации для этого все еще недостаточно.
Какой внутренний IP адрес ПК где CodeSys?
Какой внутренний IP адрес ПК со Скадой?
Какой адрес роутера, который дает выход в интернет?
VPN канал "поднят" у вас на ПК или на роутере (клиент кто)?
А с той стороны где ПЛК, кто поддерживает VPN канал? сервер кто?
Скорее всего Ваш ПК где CodeSys "не понимает" куда слать пакеты в сеть 192.168.1.0 и вместо чтобы кидать их в VPN шлюз, отправляет их в маршрут по умолчанию, т.е. в интернет, понимаете? Возможно наоборот: VPN сервер на той стороне не знает куда слать ответы от ПЛК. Надеюсь сервером VPN на стороне ПЛК является роутер интернета (шлюз по умолчанию)? Иначе все немного сложнее.
"tracert 192.168.1.50" в командной строке на ПК для понимания ситуации.
До полного прояснения ситуации точнее сказать как делать не могу.
Просканировал клиента-2 через VPN, NMAP показал, что только открыт 502 порт
Совсем запутался. Есть точки А - В - С. В точках "А" и "В" стоят роуторы с VPN-клиентом на борту. Между этими точками, VPN - сервер, который выдает адреса для: "А" - 10.8.0.2, для "В" - 10.8.0.10. Точка "С" - мобильное приложение со СКАДОЙ, и поднятым VPN - клиентом 10.8.0.20
В точке "А" ПК с IP - 192.168.1.64 с Codesysem на борту. В Codesys прописал адрес для ПЛК - 10.8.0.10
В точке "В" роутер выдает постоянный адрес для ПЛК - 192.168.1.50. Здесь же, будет стоят сервер для СКАДЫ.
Вот Вам и ошибка нарисовалась: адрес сети на разных точках должен быть разный, иначе маршрутизация не работает.
В "Иронии судьбы" улица и дом были одинаковые а город разный. А у вас и город одинаковый.
В вашем случае - поменяйте на точке "В" адрес сети с 192.168.1.XX на 192.168.2.XX
Что в точке "С"? То же самое? Тоже меняйте.
Может стоит пригласить профессионального сисадмина? Он за 15 минут все настроит.
Не-не-не! Адрес ПЛК у Вас какой? Правильно 192.168.1.50. А точнее, после исправления адреса сети (см.выше) будет 192.168.2.50 вот его и прописывайте в CodeSys.
10.8.0.10 - это всего лишь промежуточная точка на маршруте от ПК к ПЛК и обратно и кодесису она вообще по-барабону.
Это должен знать только маршрутизатор, роутер т.е., он специально для этого предназначен и, надеюсь обучен, т.е. в нем должны быть прописаны маршруты из одной сети в другую.
И не забываем в самом ПЛК поменять адрес, если он статический.
Хорошо, а как быть с тем, что мне нужно зайти на ПЛК с другова ПК, который подключен через модем с поднятым VPN - клиентом?
Не совсем понял вопрос: имеете ввиду что когда поменяем адрес сети, вы потеряете доступ? Так его и так нет.
Смысл описанной мной настройки маршрутизации в том, что все связанные ВПН-каналами устройства будут "видеть" друг друга по TCP/IP безо всяких пробросов портов и прочая.
Но, при всех этих манипуляциях проще всего посетить все точки ножками и настроить все на месте.
Варианты удаленной настройки конечно есть, но Вы точно не справитесь, нужно иметь немалый опыт чтобы сделать все удаленно.
Я не против того, чтобы посетить ножками. Вот объясните мне одно, точка "С" - телефон со Скадой на борту и VPN-клиентом, получает 10.8.0.20. В Скаде нарисовал две кнопки: Wi-Fi (192.168.1.50 - Port 502) и 3G (10.8.0.10 - Port 502), далее эти кнопки привязал к java скрипту, при нажатии на кнопку Wi-Fi - подключение к домашней, при запуске VPN-Klient и нажатии на кнопку 3G сети - подключение из вне. И вся эта конструкция работает как часы.
Сомневаюсь что дальнейшее пережевывание интересно большинству, поэтому ответил в приват.
Подскажите какие блоки нужно использовать для сложения чисел на языке LD
Вложение 44774
Можете подсказать
JORA102
Я в таких случаях делаю FB на ST, в котором помимо других входных переменных обязательно есть булева переменная Enable (например), а так же есть выходная булева переменная Out. Обе переменные должны быть объявлены в VAR первыми в списке, причем по факту внутри FB они могут никак не использоваться. Это нужно для того, что бы при вставке ФБ в цепь LD автоматически подключались вход и выход. На выход Оut этого ФБ нужно повесить локальную булеву переменную, которая будет выполнять роль пустой заглушки. Что бы компилятор не выдавал ошибку.Цитата:
для сложения чисел на языке LD
Вложение 44781
И что, я могу туда затолкать несколько формул, алгоритмов и работой в том числе с глобальными переменными унутре?Цитата:
выбрать элемент с EN?
Я почему-то считал, что "Элемент с EN" только для базовых логических операций типа AND\OR\MOVE и пр, а не для ФБ. В любом случае для сложных алгоритмов придется писать свои ФБ.
Добрый день. В системе используется энкодер. Контроллер ПЛК110-60, использую fast encoder. Все хорошо, единственная проблема , может кто-нибудь подскажет как организовать сброс на 0. В определенных точках перемещения объекта необходимо сбрасывать счет для коррекции.
Заранее спасибо.
Это речь все о том же проекте dso_psk3_dozators.pro? Точнее ПЛК110-60M v2 у Вас, так? Что-то не увидел там прямого управления.
Как обычно, телепаты ушли в отпуск :p поэтому давайте точнее: в каком блоке какой счетчик или таймер нужно сбросить?Цитата:
Все хорошо, единственная проблема , может кто-нибудь подскажет как организовать сброс на 0. В определенных точках перемещения объекта необходимо сбрасывать счет для коррекции....
Да проект тот же, просто то что вы видели - незаконченная версия. Проект немалый и сейчас в процессе разработки.
Вообще на мой взгляд, немного странно что такой модуль как fast encoder не имеет функции сброса, по-моему в любых счетных системах необходима точка отсчета. Может все-таки есть какое-нибудь лаконичное решение.
По поводу телепатов... fast encoder это системный модуль контроллера, он хорошо считывает данные с энкодера (1024имп/об) и вполне устраивает, просто в начале пути перемещения механизма надо его обнулять.