Зачем нужны эти каскады, когда есть MUX?Цитата:
зачем нужен такой расчет если в итоге на выходе получаются определенные константы
Вид для печати
Зачем нужны эти каскады, когда есть MUX?Цитата:
зачем нужен такой расчет если в итоге на выходе получаются определенные константы
Конечно так лучше. Ни как привыкнуть не могу, что КДС не урезанка какая нибудь.
Имеем таргеты от "ваго" как их установить в ручную, ни каких установщиков нет? Где вообще в КДС храняться таргеты?
Таргеты хранятся в папке "C:\CoDeSys\Targets".
Установщик таргетов есть в самом КДС. Утилита называется "InstallTarget". Установка таргетов подробно описана в руководстве любого контроллера ОВЕН
Вот выдержка из РП ПЛК160
Вложение 13611
------------------------
Вложение 13612
Уважаемые профи, пожалуйста подскажите. Написал небольшую тренировочную программку для отработки работы с дискретными входами выходами ПЛК. Кратко смысл проги, подаём сигнал на 1 и 2 входы получаем сработку 1 и 2 выходов, подаём сигнал на 3 и 4 входы получаем сигнал на 3 выходе, а также устанавливаем сигнал на 4 выходе, который остаётся даже после снятия сигнала на 3 и 4 входе. Сигнал на 4 выходе снимается только после подачи сигнала на 5 вход. При подаче сигнала на 6 вход должны сработать 1, 2, 3, 4 выходы. Проблема заключается в том, что пока в программе нету блока: "При подаче сигнала на 6 вход должны сработать 1, 2, 3, 4 выходы", всё работает идеально, но как только добавляю в программу блок: "При подаче сигнала на 6 вход должны сработать 1, 2, 3, 4 выходы", у меня перестают срабатывать все остальные блоки, т.е я подаю сигнал на 1 вход, должен сработать 1 выход, но он перестаёт срабатывать, в кодесисе синим выделяется, что сигнал до выхода доходит, но сам выход при этом молчит. Всё проверяю на реальном ПЛК150-U-L.
Программу прилагаю. Не могу понять в чём загвоздка, первый раз с таким сталкиваюсь.
Обратите внимание, что каждый блок пронумерован и они выполняются в программе последовательно согласно своих номеров. Когда Вы добавили 6 вход он у Вас выполняется в программе последним. Вот его значения и являются результатом работы программы. Так что предыдущие значения уже перезаписаны последним блоком.
Надо стараться делать так, чтобы выходу делать присвоение в одном месте. Для этого предусмотрите все условия одновременного поступления сигнала с разных входов. Почитайте где-нибудь в Интернете про таблицу истинности сразу будет понятнее.
Что-то у меня с головой... Тыщи лет использовал язык SFC (довольно примитивно) и в нем всегда было настроено "Использовать МЭК-шаги". Теперь вдруг о-па! В новой программе не могу работать с МЭК-шагами (например, пользоваться внутренней переменной "время работы шага").
Породил новый проект со старого по шаблону. Тот же набор бибилиотек. Те же настройки в "опции" проекта. Конечно же, стоит галочка "Использовать МЭК-шаги". Галочка стоит, а рядом (если открыть свойства шага) пункт меню "Связать действие" - не активен.
С чего бы это?
В КДС программа на SFC может одновременно содержать как упрощенные так и МЭК шаги
Включение/выключение опции "Использовать МЭК-шаги" не изменяет тип ранее созданных шагов, а только переключает редактор в режим создания новых шагов соответствующего типа. Ранее созданные шаги не изменяют своего типа.
Т.е. при выключенном "Использовать МЭК-шаги" можно добавлять простые шаги, если затем включить "Использовать МЭК-шаги", то последующие шаги будут создаваться как МЭК шаги. Затем можно выключить "Использовать МЭК-шаги" и опять добавлять простые шаги.
Таким образом если вся программа должна быть написана на МЭК-SFC,то опция "Использовать МЭК-шаги" должна быть включена еще до добавления самого первого шага.
Йолы-палы...
Я-то это прекрасно знал.
А вот это не учел!
Да нет, я всего-то навсего убил пару шагов и создал новые. И ведь сразу видно: когда новые МЭК-шаги создаешь, редактор услужливо тулит рядом привязанное действие! Блин! Давно не создавал новые программы, вот и потерял нюх. Хотя... Какой там нюх... Скорее, как в присказке "Не знал, не знал, да и забыл" :)
Спасибо, дорогой petera! Всегда был восхищен твоими адекватными и очень точными советами. И понятными для таких... э... специалистов, как я.
Поделюсь на радостях: это я ноутбуком гвозди забиваю. Подробнее - на ветке программируемых реле. Тоже хотел в вопросах новичков разместить, но потом хорошее название для темы придумал, так что сопцтвенную тему и завел.
Совершенно новый вопрос.
Как-то отложилось у меня в дурной башке, что в КДС можно перейти с одного поддерживаемого языка на другой автоматически. Кто-нить делал трансляцию проекта? Потому что мои поиски привели меня к печально известному разбитому корыту. Та трансляция, что в меню Project -> Translate into other languages, это всего лишь перевод комментов.
Та что, отак вот и нет автоматических средств трансляции проекта (или хоть отдельного POU) со, скажем, SFC на FBD?
Спасибо! Это оно.
Жаль только, что SFC-модули как раз и не позволяют такое сотворить. Эх...
Зато интересно было посмотреть, во что превращаются ST-программы! особенно прикол оператор присваивания (когда справа нет вычислений, ну, например, bRun:=FALSE).
Что ж, если уж так нравиттся SFC, то вначале на нем, потом, вручную - на знакомом ST, а уж с него автоматом на FBD. Наверное, это правой рукой левое ухо через затылок :)
Ответ понятен, спасибо!
Здравствуйте. Ребята, подскажите пожалуйста, естть ли в языке ST возможность округления числа (скажем REAL) до 3-го знака после зяпятой. Если есть, напишите пожалуйста как!
1.Использовать стандартную функцию TRUNC(). Правда она не округляет, а просто отбрасывает оставшиеся знаки
2. Если нужно именно округление, то функция ROUN() из библиотеки OSCAT
Вот ее код
Код:FUNCTION ROUND : REAL
VAR_INPUT
in : REAL;
N : INT;
END_VAR
VAR
DECADES : ARRAY[0..8] OF REAL := 1.0,10.0,100.0,1000.0,10000.0,10000.0,100000.0,1000000.0,10000000.0;
X: REAL;
END_VAR
X :=DECADES[LIMIT(0,N,8)];
ROUND := DINT_TO_REAL(REAL_TO_DINT(in * X)) / X;
Здравствуйте, как вывести на панель Ип-320 тревогу об обрыве или замыкании накоротко с термометра сопротивления Pt100 с модуля МВ110-8А. Тут, в руководстве, даны значения регистров статуса для разных исключительных ситуаций , но как это правильно сделать на CFC- даже примерно не представляю... Подскажите пжс,
0xF00C - короткое замыкание, в десятичном виде - 61452.
0xF00D - обрыв датчика, в десятичном виде - 61453.
Если панель мастер, то в ПЛК делаем слэйв, создаем первый регистр для аварий (назовем его alarm) (если надо можно и не один). Создаем в самом начале нужное количество регистров для аварий панели (чтобы проще было считать биты, в этом случае стартовый бит списка тревог панели будет равен 0). Допустим у нас один регистр, назовем его alarm. Каждый бит этого регистра будет соответствовать определенной аварии.
Если хотите, чтобы обрыв и КЗ были одной аварией в программе пишете:
если статус = 61452 или статус = 61453, то
alarm.0:= true.
В панели в списке тревог для бита 0 пишете соответсвующий текст в поле содержания тревоги.
Когда панель считает регистр аварий и увидит установленный бит тут же выдаст список тревог с этой аварией.
а сам "статус" откуда брать?
поскольку новый поиск упрямо не собирается искать словосочетания вынужден спрашивать:
Можно ли как-то из программы изменить IP адрес ПЛК (в частности ПЛК160)?
Покапайтесь сами в плк или на форуме поищите
Посмотрите здесь http://www.owen.ru/forum/showthread....l=1#post141678
Пример изменения IP адреса с экрана СП270. Во вложении есть программа для ПЛК, работает с файлом "local_addres.dat"
Я немного путаю понятия " регистр статуса" и "значения регистра статуса". Где они отображаются, эти значения, чтобы их оттуда взять и сравнить с числами 61452 и 61453 , чтобы потом бит в алярме установился?
Dimooon, регистр статуса это регистр в приборе. Адреса в руководстве посмотрите. В этот регистр записывается код исключительной ситуации. Если там значение 0, то все в порядке, а если другое значение, то смотрите там же в руководстве что это код означает. Это значение надо сначала прочитать из прибора. Обычно это делается вместе с чтение самого значения. То есть читаем сразу все регистры групповым запросом за один раз, а потом берем из прочитанного то, что нужно. Так быстрее опрос происходит.
Я понял, спасибо. А как потом сбрасывать значение TRUE на выходе MOVE? Контроллер сбрасывать?
Я что-то недопонял.... Это не так надо делать
amn,Вот так вроде работает
как подключить простое твердотельное реле 3-32в к овен плк 150! ничего не пойму. объясните пожалуйста куда его цеплять
Для начала полностью модел ПЛК150 написать.
cpuanton обычную твердотелку только на К или Р выход. На выходе К можно ШИМ сделать. На Р тоже можно, но счелкать будет постоянно и неизвестно надолго ли
Добрый день
Не знаю, как правильно в поиске написать вопрос, по этому задам его тут - какое максимальное количество строк или же объем программы может быть выполнен ПЛК 100. И какая зависимость времени выполнения цикла программы от ее объема?
Встали перед выбором - дописать программу в уже имеющийся контроллер, либо же заморочиться и поставить второй контроллер, и уже по средствам модулей объединить их в одну систему.