Просмотр полной версии : ВОПРОС-ОТВЕТ (отвечаем на простые вопросы от новичков)
kondor3000
09.12.2022, 09:28
Проверил, биты можно менять местами уже в дополнительных блоках Out_n_n и Out_m_m, можно даже со смещением. 64439
Тут уже не влияет на запись.
Важно не запутаться и не применять переменные дважды.
Проверил, биты можно менять местами уже в дополнительных блоках Out_n_n и Out_m_m, можно даже со смещением. 64439
Тут уже не влияет на запись.
Важно не запутаться и не применять переменные дважды.
Все-таки порядок никак не поменять, чтобы in_m.0 выводил на out_m.6
И почему нельзя применять дважды, если нужно дополнительная кнопка, которая вкл 2 выхода с разных блоков. in_m.26 вкл out2 и out_m.16, или in_m.27 вкл out_n.6 и out_n.7.
А нельзя просто еще 1 блок создать на подобии switch_in_, только конкретно для in_m и там указать такой же порядок(in_m.0=out_m.6).
А для остальных оставить какой был.
kondor3000
09.12.2022, 11:00
Все-таки порядок никак не поменять, чтобы in_m.0 выводил на out_m.6
И почему нельзя применять дважды, если нужно дополнительная кнопка, которая вкл 2 выхода с разных блоков. in_m.26 вкл out2 и out_m.16, или in_m.27 вкл out_n.6 и out_n.7.
А нельзя просто еще 1 блок создать на подобии switch_in_, только конкретно для in_m и там указать такой же порядок(in_m.0=out_m.6).
А для остальных оставить какой был.
Послушайте, вы хоть что то поняли, из того что я пишу?
Я вам максимально доступно всё разжевал, почему раньше нельзя было менять, а теперь стало можно. И где можно. Внимательно смотрите скрины.
Если переменная назначена дважды, то она поменяется там, где номер ближе к концу. Это надо просто учитывать.
Послушайте, вы хоть что то поняли, из того что я пишу?
Я вам максимально доступно всё разжевал, почему раньше нельзя было менять, а теперь стало можно. И где можно. Внимательно смотрите скрины.
Если переменная назначена дважды, то она поменяется там, где номер ближе к концу. Это надо просто учитывать.
6444564447 нужно как-то так
kondor3000
09.12.2022, 13:27
нужно как-то так
Ну по идее всё должно работать, главное если вы перенесли переменную в новый блок, то лучше всё таки её удалить из старого. 64448
Если она не нужна в старом блоке.
Например переменные Out_n.6, Out_n.7 вы перенесли в блок Out_m_m, он по порядку 32, а блок Out_n_n по порядку 33.
Если эти переменные не удалить в блоке Out_n_n, они не присвоятся в блоке Out_m_m
А переменная Out_m.16, перенесённая ниже присвоится. Но ели она не нужна выше, лучше всё равно удалить.
И работу программы обязательно надо проверять.
Ну по идее всё должно работать, главное если вы перенесли переменную в новый блок, то лучше всё таки её удалить из старого. 64448
Если она не нужна в старом блоке.
И работу программы обязательно надо проверить.
Нет эти нужно тоже оставить, так как это дополнительная кнопка, поэтому и спросил, что 2 одинаковых работать не будут.
И опять in_n.31 некорректно работает, все-таки в любом случае надо начинать с in_.6, а не 0 64450
kondor3000
09.12.2022, 14:36
Нет эти нужно тоже оставить, так как это дополнительная кнопка, поэтому и спросил, что 2 одинаковых работать не будут.
И опять in_n.31 некорректно работает, все-таки в любом случае надо начинать с in_.6, а не 0 64450
Конечно некорректно, вы опять за своё, в этом блоке нельзя менять порядок, меняйте в дополнительном блоке.
Начинайте внимательно перечитывать последние 2 страницы, надоело уже вам по 100 раз повторять.
И перечитайте пост #9259, там все по поводу перестановки бит. Я дописал уже.
Конечно некорректно, вы опять за своё, в этом блоке нельзя менять порядок, меняйте в дополнительном блоке.
Начинайте внимательно перечитывать последние 2 страницы, надоело уже вам по 100 раз повторять.
И перечитайте пост #9260, там все по поводу перестановки бит. Я дописал уже.
Завидую вашей выдержке
ПЛК 110_Комутатор КСН210-5_Ноутбук с кодесисом_компютер со СКАДОЙ
Ребят подскажите, 110ПЛК через изернет скомутирован с овеновским не управляемым комутатором КСН210-5. Если я подключаю в комутатор ноутбук с кодесисом - соединение работает, если подключаю в следоющий порт комп со СКАДОЙ этот комп не может установить соединение с ПЛК. Если наоборот с начало подключаю СКАДУ - соединение работает, но когда вторым подключаю ноут с КДС- соединение не появляется с ноутом. Если короче то вместе работать одноврименно ноут с КДС и комп со скадой отказываються, кто первый скомутирован с комутатором тот и работает а второй уже не ,,лезет,,. Что делать?
IP адреса ноута и другого компа?
Когда работал ктото один изкомпов в свойствах изернет и там и там стояла галка ,,получать IP адрес автоматичиски,,. Я присвоил ноуту с КДС адрес 64520 и компу со СКАДОЙ 64521. Теперь ни один не может подключится к ПЛК через комутатор
Да там и сети нет, два компа комутатор и ПЛК , между собой временными шнурами их соединяю
Поменял комутатор на аналогичный - не помогло..
ПЛК при этом тоже надо назначать адреса...
kondor3000
14.12.2022, 12:54
Поменял комутатор на аналогичный - не помогло..
Так не делают, у вас комп как шлюз настроен, вот как надо, у Компа адрес например 192.168.0.13064522
ноутбук например 192.168.0.140, ПЛК например 192.168.0.150, а шлюз везде 192.168.0.1
Так будет работать и напрямую и в локальной сети с коммутатором и с интернетом через роутер.
Если у ПЛК адрес 10.0.6.10, то и комп надо настраивать например 10.0.6.20, напрямую и без шлюза можно.
kondor3000 ну вот с фига ле? у меня например шлюз 0.200 и ПК спокойно с 0.1 работает и шлюзом не является. Да и шлюза может не быть вовсе в одной сети, если надо только в ней. Вот просто может отсутствовать как класс...
Не подскажите пример как это выполнить?
дрю по поводу настройки IP адреса для ПЛК должно быть все в руководстве описано. Сильно сомневаюсь, что по умолчанию ПЛК имеет сеть 192.168.0.х Вот вы его и не видите, когда на эту сеть настраиваете ПК.
Сейчас доем быстро, и побегу попробую
Покажи IP адрес контроллера.
Покажи настройки связи в Codesys.
Настройки связи в КДС64524
А вот это наверно настройки связи В ПЛК?64525
kondor3000
14.12.2022, 14:02
А вот это наверно настройки связи В ПЛК?64525
Если у ПЛК адрес 10.0.6.10, то и комп надо настраивать например 10.0.6.20, напрямую и без шлюза можно.
Если с коммутатором, то шлюз 10.0.6.1
А что необходимо показать?
kondor3000
14.12.2022, 14:17
А что необходимо показать?
Реальный адрес ПЛК, открываете ПЛК браузер и в нём нажимаете кнопку с тремя точками и выбираете PLC Info и ввод.
Вот ребят, наконец то получилось. Настройки ноута с КДС64526. Настройки компа со скадой 64527. Сейчас одноврименно установлена связь и с КДС и СКАДОЙ. Большое спасибо всем кто откликнулся, и простите за , возможно, наивные вопросы.
Вот скрин из ПЛК браузера64528
kondor3000 и что? роутер не может иметь адрес 0.>1 ? и вам еще больше скажу, сеть может быть 10.0.0.Х а шлюз собака такая может иметь адрес 10.0.3.Х вы тогда вообще пристрелитесь? :)
А что необходимо показать?
Для того, чтобы всё работало, нужно , чтобы все устройства находились в одной сети. Поскольку устройств три, предлагаю "есть удава по частям" и сначала разобраться со связью ПЛК и ПК с Codesys.
Для работы в Codesys нужно, чтобы: IP адрес ПЛК и ПК принадлежали одной сети, и в насторйках связи Codesys был указан актуальный адрес ПЛК. Сейчас у вас ПЛК, судя по всему, имеет адрес 10.0.6.10, а компьютер - 192.168.1.1, поэтому связи нет. Определитесь сначала, в какую сеть вы собираетесь объединять устройства, то есть какие IP адреса вам нужны. тогда станет ясно, что, где и как менять.
Вот скрин из ПЛК браузера64528
Маска сети на компах с кодесис и скадой, а также у ПЛК должна быть одинаковой, либо у всех 255.255.0.0, либо 255.255.255.0
sssssaaaaabbbbb
14.12.2022, 15:17
Всем здравствуйте, подскажите пожалуйста как можно проект, сделанный на CODESYS 3.5 v16path4 переделать в проект CODESYS 3.5 v17path3(ПЛК210) не хватает только элементов визу или еще каких то библиотек.
В CODESYS 3.5 v16path4 открывается все хорошо, ошибок нет64534 . В CODESYS 3.5 v17path3 ошибки такие : 64533 64535. Пробовал экспортировать библиотеки из CODESYS 3.5 v16path4 и потом вставлять в CODESYS 3.5 v17path3. Но увы, не получается.
С этим вопросом лучше обратиться в аналогичную ветку в разделе Codesys 3.5
Андрей1992
16.12.2022, 11:32
как сравнить предудущее значение с датчика с настоящим на фбд, или ст?
как сравнить предудущее значение с датчика с настоящим на фбд, или ст?
на фбд используя линию задержки
На ST тоже только через линию задержки снаружи блока т.к. на ST в ПР200 можно создать только функции, а в них нет внутренних переменных, позволяющих сохранить предыдущее значение.
И точнее выбирайте подраздел, вы написали свой вопрос про ПР200 в ветке "ПЛК (среда CoDeSys V2.3)".
Добрый день, подскажите как найти одноименную переменную в проекте, кажись какой то механизм есть но как его запустить не нашёл
Добрый день, подскажите как найти одноименную переменную в проекте, кажись какой то механизм есть но как его запустить не нашёл
Проект --> Глобальный поиск --> Окно сообщений
Добрый день, подскажите как найти одноименную переменную в проекте, кажись какой то механизм есть но как его запустить не нашёл
Если нужно нацти какой-то текст по всему проекту, то Проект -> Глобальный поиск (Project -> Global Search...). Если нужно найти, где используется переменная, то Project -> Show Cross Reference...
Добрый день, подскажите как найти одноименную переменную в проекте, кажись какой то механизм есть но как его запустить не нашёл
правой кнопкой по переменной и последний пункт TODO...что_то_там_Strg+F3
Юрий Ганыч
22.12.2022, 00:44
Доброй ночи. Подскажите, где почитать про кодесис HMI. Интересует работа в полноэкранном режиме- как,, где, цены ...
In_Da_Cher_A
22.12.2022, 09:49
кодесис HMI. Интересует работа в полноэкранном режиме- как,, где, цены ...
переведите на русский, что такое для вас кодесис ХМИ и что такое "как", что такое "где" и причём здесь "цена"
Доброй ночи. Подскажите, где почитать про кодесис HMI. Интересует работа в полноэкранном режиме- как,, где, цены ...
Лицензия для CoDeSys HMI ранее стоил 200 евро.
https://www.codesys.com/products/codesys-visualization/hmi.html
Добрый вечер нужен программный код Выполнить проект по управлению станцией водоподготовки в интегрированной среде разработки (IDE) CODESYS V3.5.
Алгоритм работы
Изначально емкости №1 и №3 пусты. По сигналу датчика давления и нижних уровней включается насос №1 и клапан Reg_0 (в П режиме). Вода поступает в бак №1. При достижении среднего уровня подача воды прекращается.
По сигналу среднего уровня открывается клапан Reg_1(в П режиме) хлор в течении 5 минут поступает в бак. По истечении указанного времени клапан закрывается и включается привод смешивателя №1.
Смешивание выполняется 5 минут, после чего клапан Reg_4(в П режиме)открывается и первично очищенная вода поступает в емкость3.
При достижении среднего уровня включается Reg_2(в ПИД режиме) и смешиватель №2, в емкость дозированно поступает хлорид натрия. Смешивание производится до достижения раствора рН - 7.0, после чего клапан Reg_3(в ПИД режиме) подает подготовленную воду в барабан котла ТГМП. В проекте предусмотреть блокировки, защиты и текстовые сообщения по режимам работы. При снижении уровня реагента ниже уровня в емкости подача осуществляется насосами №3 и №1 по датчику уровня.
Комплектация установки:
Насос №1(дискретное управление).
Насос-дозатор №1 (дискретное управление).
Насос-дозатор №3 (дискретное управление).
Смешиватель№1 (дискретное управление).
Смешиватель№2 (аналоговое управление).
Двухпозиционный клапан Reg_0 (дискретное управление).
Двухпозиционный клапан Reg_1 (дискретное управление).
Двухпозиционный клапан Reg_4 (дискретное управление).
Регулирующие клапаны Reg_3 и Reg_2 (аналоговое управление).
Емкость №1 (Предварительная очистка).
Емкость №2 (Накопитель хлора).
Емкость №3 (Накопитель натрий хлора).
Запутался с написанием кода. Прошу помощи. Я как понял нужен пид регулятор чтоли написать?
kondor3000
26.12.2022, 13:28
Софья56, вы пишите в раздел ПЛК (среда CoDeSys V2.3) с вопросами по среде CoDeSys V3.5)
Кроме того выкладываейте свой проект, писать новый вам никто не будет. Пид регуляторы как правило берут готовые из биб-ек.
In_Da_Cher_A
26.12.2022, 13:34
Добрый вечер В петропавловсе-камчастком полночь
нужен программный кодвсем нужен
Выполнить проект по управлению станцией водоподготовки в интегрированной среде разработки (IDE) CODESYS V3.5.
вы даже не снизошли до того, чтобы переписать ТЗ своими словами и тупо его скопипастили
выполнить проект - это работа. За неё надо платить.
Если вы рассчитываете, что здесь за вас сделают вашу работу и бесплатно - вы ошибаетесь
и да - вы ошиблись разделом.
День добрый ! Произвожу опрос по RS485 Ардуино-Устройство.Данные по регистрам: 01 - Чтение Диф.Давление ,02 -Чтение АтмДавление ,03-Чтение Температура 04-Чтение Весы,05-Запись СервоДвиг. При опросе через ОвенOPC все происходит четко ,данные корректны и с адресами все понятно.65112 При подключении к ПЛК-100 не получается добиться понятного обмена.
65113 Данные получается принять с 4х регистров при этом наблюдается как бы смещение,т.е. данные с 02го идут на первом адресе ,03 на втором 04-на третьем ,а на четвертом адресе присутствуют данные с регистра 01. При добавлении пятого адреса на запись обмен по нему начинает идти,но по четвертому проподают данные с регистра 01. Разъясните пожалуйста "куда копать"65114
Настройки:6511565116651176511865119
kondor3000
12.01.2023, 09:40
День добрый ! Произвожу опрос по RS485 Ардуино-Устройство.Данные по регистрам: 01 - Чтение Диф.Давление ,02 -Чтение АтмДавление ,03-Чтение Температура 04-Чтение Весы,05-Запись СервоДвиг. При опросе через ОвенOPC все происходит четко ,данные корректны и с адресами все понятно.65112 При подключении к ПЛК-100 не получается добиться понятного обмена.
65113 Данные получается принять с 4х регистров при этом наблюдается как бы смещение,т.е. данные с 02го идут на первом адресе ,03 на втором 04-на третьем ,а на четвертом адресе присутствуют данные с регистра 01. При добавлении пятого адреса на запись обмен по нему начинает идти,но по четвертому проподают данные с регистра 01. Разъясните пожалуйста "куда копать"
Возможно идёт смещение адресов +1. Попробуйте читать, записывать не с 1 по 5, а с 0 по 4 адреса.
Либо с настройками что то напутали. Либо от сервопривода идут сильные помехи.
В какой-то теме такое недавно было. Там тоже была библиотека для Arduino, которая отдавала регистры с нуля, а не с 1.
Вот: https://owen.ru/forum/showthread.php?t=37051
Поставил адреса начиная с 0 65121 Первые три регистра выровнялись, но отвалились весы и серва.Может не там адрес ставлю?
В теме на которую ссылается Cs-Cs проблема решилась распределением памяти по адресам кратным длине данных (2,4,6),но как это сделать я не понимаю пока
Поставил адреса начиная с 0 65121 Первые три регистра выровнялись, но отвалились весы и серва.Может не там адрес ставлю?
Адрес ставишь правильно - именно в этом поле, которое отмечено. В том примере чел читал FLOAT, который занимает два регистра. Поэтому там адреса шли через один.
У тебя, если я не путаю (и не ошибаюсь), адресация должна просто идти подряд и начинаться с нуля:
Чтение:
0 = Диф.Давление
1 = Атм.Давление
2 = Температура
3 = Весы
Запись:
4 = СервоСдвиг
Попробуй так.
65128 Все кроме весов.Желтым это смещения в адресном пространстве ПЛК? Синим адрес запрашиваемого регистра в MODBAS?
на 4 серва не работает только на 5м адресе(как и надо) но логика по другим адресам тогда мутная. Данные типа WORD по идее т.е. двубайтные
65130 Замена 3го адреса на весах на 4й и пропадает уже и температура.
Так! "Жёлтые" - ВООБЩЕ НЕ ТРОГАТЬ! А если трогал - то удали и заново всё создай Менять надо только "красные"!
kondor3000
12.01.2023, 13:14
Сделайте Очистить всё и Компелировать всё. Поставьте галку автоматически вычислять адреса. И создайте конфигурацию заново.
А ещё лучше создайте новый проект.
И прежде чем лезть настраивать, хоть бы обучающие видосы посмотрели.
Пересоздал! Картина осталась прежняя :с весов на адресе 3 данных нет( перепроверил на ОPC - все есть там где надо) серва работает на 5м
kondor3000
12.01.2023, 13:26
Пересоздал! Картина осталась прежняя :с весов на адресе 3 данных нет( перепроверил на ОPC - все есть там где надо) серва работает на 5м
Разница между подключением ПЛК и ОРС сервера только в переходнике типа АС-4, там есть резистор 120 ом.
Поставьте резистор параллельно линии RS485, при подключении к ПЛК. Надеюсь вы сервер и переходник отключаете?
Комп с OPC и ПЛК практически развязаны, я перекидываю провода с преобразователя USB -485 - устройство и ПЛК-устройство, КодеСис через изернет
In_Da_Cher_A
12.01.2023, 14:49
Пересоздал! Картина осталась прежняя :с весов на адресе 3 данных нет( перепроверил на ОPC - все есть там где надо) серва работает на 5м
ну так и сделайте таблицу - слева настройки обмена на ПЛК, справа - ОРС
и сами увидите где у вас косяк
и да - тупо сделайте конфиг на одни весы. Их и считайте для начала. А потом добавите то, что у вас якобы работает
Sandkon Выложите, что ли, проект. Хочу на Конфигурацию ПЛК посмотреть.
И под Ардуино тоже (у меня среда разработки какой-то версии есть).
Это ссылка на файлы КодеСис и Ардуино :https://disk.yandex.ru/d/tdv-ICClHOXScg Данные с весов в общем комплекте данных так и не получил.Грызу проект дальше.Цель проекта : Удаленный мониторинг на MasterSCADA 3.12 и управление ПЛК100 по линии Lectus-ПМ01-OSD-ПМ01.
В этом же проекте данные через модем тоже как то не стабильно передаются,может это нормально , но 5ть регистров передать и то не стабильно получается, что то проходит что то нет
может надо загрузочный проект создавать для более стабильной работы?
In_Da_Cher_A
13.01.2023, 09:03
может надо загрузочный проект создавать для более стабильной работы?есть два варианта - один - продолжать играть в угадайку "может/не может" и не вижу с вашей стороны никаких препятствий в этом - развлекайтесь как хотите, только зачем мы вам нужны?,
второй - открыть наконец-то документацию и прочесть что такое загрузочный проект и для каких целей он нужен.
Лог с Lectusa:
08:59:41.814 [8112] (COM9)Tx: ATD+79094464922
09:00:03.249 [8112] (COM9)Rx: ([16] 0D 0A 43 4F 4E 4E 45 43 54 20 39 36 30 30 0D 0A )
CONNECT 9600
09:00:04.278 [8112] (COM9) Подключение - ОК
09:00:04.294 [8112] (COM9)Tx: [17] ":02 03 00 01 00 01 F9 CR LF "
09:00:07.430 [8112] (COM9)Rx: [15] ":02 03 02 8D DA 92 CR LF "
09:00:07.445 [8112] (COM9)Tx: [17] ":02 03 00 02 00 01 F8 CR LF "
09:00:09.146 [8112] (COM9)Rx: [15] ":02 03 02 00 1C DD CR LF "
09:00:09.161 [8112] (COM9)Tx: [17] ":02 03 00 03 00 01 F7 CR LF "
09:00:10.830 [8112] (COM9)Rx: [15] ":02 03 02 00 00 F9 CR LF "
09:00:10.846 [8112] (COM9)Tx: [17] ":02 03 00 05 00 01 F5 CR LF "
09:00:14.809 [8112] (COM9)Rx: [11] ":02 83 02 79 CR LF "
09:00:14.809 [8112] Ошибка приема/передачи (COM9 Адрес:2)
09:00:14.826 [8112] (COM9)Tx: [17] ":02 03 00 01 00 01 F9 CR LF "
09:00:17.918 [8112] (COM9)Rx: [15] ":02 03 02 8D DA 92 CR LF "
09:00:17.933 [8112] (COM9)Tx: [17] ":02 03 00 02 00 01 F8 CR LF "
09:00:37.957 [8112] (COM9)Tx: [17] ":02 03 00 02 00 01 F8 CR LF "
09:00:47.523 [8112] (COM9)Rx: ([14] 0D 0A 4E 4F 20 43 41 52 52 49 45 52 0D 0A )
NO CARRIER
09:00:47.523 [8112] (COM9) Разъединение входящего звонка (нет несущей)
И что получили:
65140
Можно ли считать такое поведение в пределах нормы?Как то не стабильною.
...
сделайте пока так
(*StartModem := 16#FF;*)
и руками в конфигурации 255 напишите (да и не сразу)
Удалите register output в 5й //Serv
Посмотрите что только с чтением 0..3
?
Если (!) с чтением норм то + еще один umd, туда register output с "by change"
Если "both", то poll time где нить 1000..3000
kondor3000
13.01.2023, 10:08
Скрин с OPC с настройками так и не выложили.
Запись про резистор 120 Ом проигнорировали. Как вы думаете зачем про резистор тут написано?
Запись в 4 (5) регистр надо сделать в Отдельном UMD с настройкой как на скрине 65141
После того как с чтением разберётесь.
Я придерусь к этому участку в Ардуино-Идиотино-Дурино:
//////////////// Регистры вашего Slave ///////////////////
enum
{
//Просто добавьте или удалите регистры. Первый регистр начинается по адресу 0
slave_to_master_val_1, // с адресом массива 0
slave_to_master_val_2, // с адресом массива 1
slave_to_master_val_3, // с адресом массива 2
slave_to_master_val_4, // с адресом массива 3
slave_to_master_val_5, // с адресом массива 4
master_to_slave_val_1, // с адресом массива 5
HOLDING_REGS_SIZE // Это не удалять размер массива HOLDING_REGS.
//общее количество регистров для функции 3 и 16 разделяет тотже самый массив регистров
//т.е. то же самое адресное пространство
};
unsigned int holdingRegs[HOLDING_REGS_SIZE]; // функции 3 и 16 массив регистров
а) В Ардуино всего ШЕСТЬ регистров, а не пять, как ты тут пытаешься считывать
б) Запись регистров в Ардуино поддерживается командой 16 (это прямо указано в проекте), а не 6, как у тебя в проекте ПЛК.
в) Я ни фига не понимаю, как ЭТО работало в OPC, так как в Ардуино написано:
myservo.write(holdingRegs[master_to_slave_val_1]);
То есть, на Серву передаётся значение ШЕСТОГО регистра, согласно объявлениям, приведённым выше.
Самая моя придирка (согласо подписи про психопата) - это то, что надо давать понятные имена переменным, мать же вашу курвичную же туды-растуды!!
То есть, объявление должно быть таким:
enum
{
//Просто добавьте или удалите регистры. Первый регистр начинается по адресу 0
Reg_PressureDifferent, // с адресом массива 0 = Давление Дифференциальное (чтение)
Reg_PressureAtm, // с адресом массива 1 = Давление Атмосферное (чтение)
Reg_Temperature, // с адресом массива 2 = Температура (чтение)
Reg_Ves, // с адресом массива 3 = Весы (чтение)
Reg_Servo, // с адресом массива 4 = Сервопривод (запись)
HOLDING_REGS_SIZE // Это не удалять размер массива HOLDING_REGS.
//общее количество регистров для функции 3 и 16 разделяет тотже самый массив регистров
//т.е. то же самое адресное пространство
};
И дальше код переписать с использованием этих имён, а не грёбаных чёртовых идиотских номеров!
Чтобы код выглядел ТАК:
myservo.write(holdingRegs[Reg_Servo]);
и был понятным!!! Это исключает ошибки копипасты вида "Так... а под каким номером у меня серва? Вроде под пятым... тут поправил, тут нет".
Приведу ещё участочек. ХОСПОДЯ!! Я хочу насилия! Kill 'em All!!
holdingRegs[slave_to_master_val_3] = bmp180.getPressure();
holdingRegs[slave_to_master_val_2] = analogRead(sensorPin);
holdingRegs[slave_to_master_val_5] = reading;
Вот ШТО это за ужас? Что, куда и кому присваивается? Получается, если следовать старым объявлениям, что тут регистры, что ли, не по порядку идут? И вроде как с пятого мы что-то читаем, а для сервы в тот же "пятый" в ПЛК пишем, потому что думаем, что они идут подряд. А серва получается шестой.
По резистору 120Ом,это согласующий резистор и в данном случае он не причем. Разбор в адресных пространствах.
6ть регистров я сделал в процессе игры с адресами,что бы адресация начиналась с 1го адреса. Ардуино сляпал на скорую просто что бы данные шли какие нибудь для тестов.Замечания принимаю.
6ть регистров я сделал в процессе игры с адресами,что бы адресация начиналась с 1го адреса. Ардуино сляпал на скорую просто что бы данные шли какие нибудь для тестов.Замечания принимаю.
Ну а в итоге оказался двоичный код: два варианта адресации в ПЛК (с 0 и 1), два в Ардуино (с 0 и 1), два с числом регистров (5 или 6) дали 2 х 2 х 2 = 8 вариантов глюков =)
Не надо! Начни лучше последовательно:
а) Сделай карту регистров в Ардуино начисто
б) Присвой пока в коде Ардуино этим регистрам какие-то понятные значения типа 1, 2, 3, 4, 5
в) Добейся, чтобы ПЛК их верно читал или писал (вот тут пусть и будут опыты)
...а потом уже добавляй реальные датчики и устройства с реальными данными, чтобы в них не путаться.
65145 Вот что получилось .Данные все но как говориться не на своих местах.Сдвиг по кругу: Давление .диф. на 4м адресе. И таки запись в серу происходит по 06 и никак по другому. В Ардуино примере на базе которого устройство ошибка в комента.
И таки запись в серу происходит по 06 и никак по другому. В Ардуино примере на базе которого устройство ошибка в комента.
пока переписывайтесь с Cs-Cs а потом дождемся кто посоветует либо на бибки перейти либа стринг использовать, тогда станет интереснее
А какие данные должны быть? Вот 36275, 28, 54, 547 и 140 - это ж данные? Значит всё работает =)
Сделай тестовые данные, а?
capzap А это тут при чём? Мне самому интересно, что это и почему это так криво. И было бы интересно покопаться, если бы его железо было на столе у меня.
https://disk.yandex.ru/d/tdv-ICClHOXScg исправленные файлы(добавил файл конфигурации овенопс)
Скрин не получается загрузить но сдвиг остается :данные с Давление диф по третьему адресу в ПЛК .Почему так пока объяснений нет
В ОПС все четко, в кодесис со сдвигом по кругу
В ОПС все четко, в кодесис со сдвигом по кругу
Интересен этап выяснения что дело не в бобине.
Вам выше Cs-Cs норм советы дал. По пунктам. Особенно б)
kondor3000
13.01.2023, 18:17
исправленные файлы(добавил файл конфигурации овенопс)
Скрин не получается загрузить но сдвиг остается :данные с Давление диф по третьему адресу в ПЛК .Почему так пока объяснений нет
Конфигурация читает регистры по одному. Попробуйте прочитать все регистры группой, с помощью String 65159
ОРС сервер читает тоже группой.
Файл проекта выкладываю
А что-то я не понял... А что? Если в комментариях к коду Arduino поменять слово "10" на "06" - то Ардуино начнёт понимать команду Modbus 0x06?
//общее количество регистров для функции 3 и 06 разделяет тотже самый массив регистров
//т.е. то же самое адресное пространство
};
unsigned int holdingRegs[HOLDING_REGS_SIZE]; // функции 3 и 06 массив регистров
По имени включаемого файла <SimpleModbusSlave.h> нарыл ссылки на используемую библиотеку:
https://github.com/kolod/Arduino-Simple-Modbus-Slave
Там прям в ReadMe (https://github.com/kolod/Arduino-Simple-Modbus-Slave/blob/master/README.md) написано так:
Features
To keep it simple and to reduce memory consumption, only the two following Modbus functions are supported:
read holding registers (0x03)
write multiple registers (0x10)
Так какого же ж фига писать в Ардуинку функцией 6, а не 10-то?!
И ещё вот что. В попробуй-ка увеличить интервал между запросами. Это в дереве конфигурации ПЛК в настройках интерфейса.
Код в Ардуинке написан на гадких Delay(), а ПЛК110 - это скоростной пулемёт в запросах. Ардуинка может просто не справляться.
65162
О!! А ещё ж порядок байт может быть другой.
Я ещё и ещё раз советую начать с того, чтобы регистры возвращали простые числа длиной в 4 знака, типа "1111", "2222".
Это позволит разобраться с порядком и регистров и байт. А потом уже надо накручивать логику.
Всем спасибо за участие. С чтением группой попробую позже. Перехожу к связке Lectus 3.10-SCADA 3.12 .Похоже там тоже не все гладко.
65163 C String работает четко.
kondor3000
14.01.2023, 10:42
65163 C String работает четко.
Только у вас Старт не нажат, в переменных 0 везде.
И ещё удалите повторяющуюся переменную Ves из объявлений (Ves уже есть в конфигурации Слейва). И все переменные можно присвоить напрямую, без промежуточных Pa, Pd, T и подобных.
А можно узнать у гуру ST?
---
Для чего после END_IF многие в своих разработках ставят символ ;?
Или ткните носом - буду признателен за науку. :cool:
kondor3000
14.01.2023, 16:01
А можно узнать у гуру ST?
---
Для чего после END_IF многие в своих разработках ставят символ ;?
Или ткните носом - буду признателен за науку. :cool:
Ставят новички, прочитавшие, что строка должна заканчиваться ;
Но после END_IF его ставить не надо.
Ставят новички, прочитавшие, что строка должна заканчиваться ;
Но после END_IF его ставить не надо.
Я не новичек и делаю это всегда, компилятор бывает чудит, не всегда но страховка не мешает
А можно узнать у гуру ST?
---
Для чего после END_IF многие в своих разработках ставят символ ;?
Или ткните носом - буду признателен за науку. :cool:
Потому что ST в TIA Portal выдаёт ошибку при его отсутствии
Ищо предлагаю подисскутировать про () у функций/фб без параметров и про пробелы в матвыражениях (нет путать с выражениями матом). Архиважные проблемы, товарищи.
я для саморазвития (так сказать) спросил...
кстати с наступившим!
coctailnina
16.01.2023, 09:54
Есть ли ПО для ПЛК150-220.А-М под Linux?
Илья2282
17.01.2023, 01:20
Здравствуйте, помогите пожалуйста решить проблему. Я написал уже два проекта в Codesys, и каждый из них Codesys испортил выдавая такую ошибку. Я пишу проект,сохраняю его и закрываю, открываю его через день и выдает эту ошибку. Проект больше никак не получается открыть, данные потеряны. У меня вопрос, можно ли как-то восстановить проект или извлечь из него данные? 65202
Здравствуйте, помогите пожалуйста решить проблему. Я написал уже два проекта в Codesys, и каждый из них Codesys испортил выдавая такую ошибку. Я пишу проект,сохраняю его и закрываю, открываю его через день и выдает эту ошибку. Проект больше никак не получается открыть, данные потеряны. У меня вопрос, можно ли как-то восстановить проект или извлечь из него данные? 65202
Сохраняете в закодированном проекте (с паролем)?
Жёсткий диск стационарный или переносной/флеш?
Илья2282
17.01.2023, 17:07
Сохраняете в закодированном проекте (с паролем)?
Жёсткий диск стационарный или переносной/флеш?
Не закодированный проект, стационарный жесткий диск.
kondor3000
17.01.2023, 18:04
Не закодированный проект, стационарный жесткий диск.
Вы тему зачем создали? https://owen.ru/forum/showthread.php?t=37289
А пишите почему то сюда.
In_Da_Cher_A
23.01.2023, 14:37
Здравствуйте, проконсультируйте пожалуйста как мне получать данные в Oven Logic в ПР102-24.2416.06.2
для начала - написать пост в разделе по Овен Лоджик
во-вторых на сайте ОВЕН есть обучающие видео, изучить их
в третьих - для получения данных ВАМ надо написать программу и загрузить её в ПР102, за вас никто не будет изучать ваш проект и стороннее оборудование
поэтому начните с изучения среды программирования Овен Лоджик
potekot1345
24.01.2023, 13:31
Всем привет, вопрос будет немного не по теме ( так как ПЛК другой ). Но, прошу помочь : )
Вопрос в следующем: Имеется ПЛК, который подключается через COM порт ( RX end TX ). Но вот не задача, такое чувство, что COM порт не работает. Не могу подключиться.
Как мне проверить, проблема в COM порте, или он сдох у самого ПЛК
стать снифером при помощи другого порта на линию, ну и проверить адресацию в ПЛК, и правильность подключения
potekot1345
03.02.2023, 08:12
Всем привет еще раз ) Продолжаю осваивать программирование ПЛК и тут дошло до Modbus. Примерно понимаю, что это такое и для чего он нужен. Но нужно теперь научиться к нему обращаться.
Знакомый программист скинул свой код. Вот сижу и не понимаю, что это
такое и как с этим работать.
Объясните пожалуйста, как можно подключиться к Modbus.
CASE iCounter OF
1: (*READ 1000 AND 1001 (4096...4097)*)
Slave_Modbus := 1;
RW_Mode:=FALSE;
Adress_MB_Master:=404096;
Number_MB:=2;
TBL_MB:=600;
2: (*READ 3000...3009 (12288...12297)*)
Slave_Modbus := 1;
RW_Mode:=FALSE;
Adress_MB_Master:=412288;
Number_MB:=10;
TBL_MB:=610;
3: (*Write 1000 (4096) 1 OR 2 Start 5 Stop*)
Slave_Modbus := 1;
RW_Mode:=TRUE;
Adress_MB_Master:=404096;
Number_MB:=1;
TBL_MB:=630;
4: (*Write 2000 (8192) 0...10000 Procent*)
Slave_Modbus := 1;
RW_Mode:=TRUE;
Adress_MB_Master:=408192;
Number_MB:=1;
TBL_MB:=640;
5: (*READ 1000 AND 1001 (4096...4097)*)
Slave_Modbus := 2;
RW_Mode:=FALSE;
Adress_MB_Master:=404096;
Number_MB:=2;
TBL_MB:=650;
P.S Строго не судите, я же новичок :)
Всем привет еще раз ) Продолжаю осваивать программирование ПЛК и тут дошло до Modbus. Примерно понимаю, что это такое и для чего он нужен. Но нужно теперь научиться к нему обращаться.
Знакомый программист скинул свой код. Вот сижу и не понимаю, что это
такое и как с этим работать.
Объясните пожалуйста, как можно подключиться к Modbus.
CASE iCounter OF
1: (*READ 1000 AND 1001 (4096...4097)*)
Slave_Modbus := 1;
RW_Mode:=FALSE;
Adress_MB_Master:=404096;
Number_MB:=2;
TBL_MB:=600;
2: (*READ 3000...3009 (12288...12297)*)
Slave_Modbus := 1;
RW_Mode:=FALSE;
Adress_MB_Master:=412288;
Number_MB:=10;
TBL_MB:=610;
3: (*Write 1000 (4096) 1 OR 2 Start 5 Stop*)
Slave_Modbus := 1;
RW_Mode:=TRUE;
Adress_MB_Master:=404096;
Number_MB:=1;
TBL_MB:=630;
4: (*Write 2000 (8192) 0...10000 Procent*)
Slave_Modbus := 1;
RW_Mode:=TRUE;
Adress_MB_Master:=408192;
Number_MB:=1;
TBL_MB:=640;
5: (*READ 1000 AND 1001 (4096...4097)*)
Slave_Modbus := 2;
RW_Mode:=FALSE;
Adress_MB_Master:=404096;
Number_MB:=2;
TBL_MB:=650;
P.S Строго не судите, я же новичок :)
Ну так у знакомого программиста и спросите, что он вам прислал.
Это всего лишь фрагмент программы и без остального большого смысла не имеет.
Напишите хоть какой ПЛК у вас и для чего хотите использовать модбас
kondor3000
03.02.2023, 08:44
Всем привет еще раз ) Продолжаю осваивать программирование ПЛК и тут дошло до Modbus. Примерно понимаю, что это такое и для чего он нужен. Но нужно теперь научиться к нему обращаться.
Знакомый программист скинул свой код. Вот сижу и не понимаю, что это
такое и как с этим работать.
Объясните пожалуйста, как можно подключиться к Modbus.
Есть видео для обучения, как работать с конфигурацией, для чтения, записи по Модбас, начните с них. https://www.youtube.com/watch?v=eSTmoNeLa7A&list=PL2EcVEe6E9SB4F3WVm-MptpHA5ep0nrq5
Всё сразу, ссылки на видео, на примеры и документацию https://owen.ru/product/plk110_m02/software
Можно читать, писать по Модбас с помощью библиотек, есть готовые примеры для всех типов ПЛК, вот тема со ссылками на примеры и основные моменты https://owen.ru/forum/showthread.php?t=36679
potekot1345
03.02.2023, 08:44
Спросил бы, вот только спит человек. А программу изучаю щас.
ПЛК китайский. Существует "проект". Есть насосы и вентиляторы, которыми будет управлять частотники и есть панель. Я так понимаю, для этого и было создано обращение через модбас.
kondor3000
03.02.2023, 08:49
Спросил бы, вот только спит человек. А программу изучаю щас.
ПЛК китайский. Существует "проект". Есть насосы и вентиляторы, которыми будет управлять частотники и есть панель. Я так понимаю, для этого и было создано обращение через модбас.
Тут форум ОВЕН и ПЛК Овен, по китайским вам врядли что подскажут. У них своё ПО.
Выше выложил ссылки по ПЛК Овен.
potekot1345
03.02.2023, 08:51
Я понимаю. Но так как все программируется через Кодесис. Я думаю смысл должен быть один и тот же
Я понимаю. Но так как все программируется через Кодесис. Я думаю смысл должен быть один и тот же
Смысл одинаковый, а вот реализация на конкретном ПЛК разная может быть.
ПЛК на кодесисе, даже китайский, должен иметь руководство, и возможно даже примеры программирования таких вещей.
Вы таргет на ваш ПЛК нашли?
potekot1345
03.02.2023, 09:20
Смысл одинаковый, а вот реализация на конкретном ПЛК разная может быть.
ПЛК на кодесисе, даже китайский, должен иметь руководство, и возможно даже примеры программирования таких вещей.
Вы таргет на ваш ПЛК нашли?
Да, установил.
Да, установил.
Посмотрите в конфигурации, может быть там есть возможность работы с модбасом через неё - это скорее всего будет проще, чем непосредственная работа с портами и функциями модбас в программе
potekot1345
03.02.2023, 09:34
Посмотрите в конфигурации, может быть там есть возможность работы с модбасом через неё - это скорее всего будет проще, чем непосредственная работа с портами и функциями модбас в программе
Смотрел, они там действительно есть ( только китайцы рекомендуют все делать через функциональные блоки ).
Просто ради интереса хотел понять как обращаться к Модбас через программу ( ST язык )
Смотрел, они там действительно есть ( только китайцы рекомендуют все делать через функциональные блоки ).
Просто ради интереса хотел понять как обращаться к Модбас через программу ( ST язык )
Ну если рекомендуют, то наверно и показывают как это сделать?
potekot1345
03.02.2023, 09:43
Ну если рекомендуют, то наверно и показывают как это сделать?
Да, буквально пару минут нашел инструкцию у них на сайте.
Но все равно не понимаю некоторых параметров
In_Da_Cher_A
05.02.2023, 10:51
Спросил бы, вот только спит человек. А программу изучаю щас.
ПЛК китайский. Существует "проект". Есть насосы и вентиляторы, которыми будет управлять частотники и есть панель. а вы в этом проекте что делаете?
Я так понимаю, для этого и было создано обращение через модбас.кем создано и что такое "обращение"?
и ап чом вообще тогда разговор, если что-то уже кем-то создано?
Знакомый программист скинул свой кодкод от чего? какое это отношение имеет к "проЭкту"?
Вот сижу и не понимаю, что это
такое и как с этим работать.тупо написаны какие адреса и что он пытается с ними сделать. никакого отношения к вашей проблеме это не имеет.
как можно подключиться к Modbus.к модбас не подключаются, это вам не wi-fi :D
модбас сам по себе не является "объектом"
у вас вопросы даже не новичка, а вообще постороннего человека. начните с азов, что такое плк и что с ним делать. Хотя бы на том же Овене, по обучалкам.
Попытка в стиле школьника взять чужую программу и с чужой помощью на форуме адаптировать её к какому-то Проэкту - бесполезна
Здравствуйте!
Прошу не ругать за наивный вопрос.
Рекомендуется адреса модулей устанавливать кратные 8 но также возможно установить адреса 1, 2, ...n.
Подскажите в чём причины такого решения и как это может повлиять на качество опроса?
Здравствуйте!
Прошу не ругать за наивный вопрос.
Рекомендуется адреса модулей устанавливать кратные 8 но также возможно установить адреса 1, 2, ...n.
Подскажите в чём причины такого решения и как это может повлиять на качество опроса?
Скорее всего эта рекомендация связана с адресацией устройств при использовании протокола ОВЕН (что-то связанное с количеством каналов в устройстве). Для модбаса - без разницы
Скорее всего эта рекомендация связана с адресацией устройств при использовании протокола ОВЕН (что-то связанное с количеством каналов в устройстве). Для модбаса - без разницы
Я тоже заподозрил что то не ладное))) и скорее всего это как раз и связано с количеством каналов.
Интересно есть ли подводные камни?
Здравствуйте!
Прошу не ругать за наивный вопрос.
Рекомендуется адреса модулей устанавливать кратные 8 но также возможно установить адреса 1, 2, ...n.
Подскажите в чём причины такого решения и как это может повлиять на качество опроса?
Если имеются в виду овеновские модули Mx110, то они конфигурируются по протоколу ОВЕН, в котором адресуется каждый канал. Адрес первого канала = адресу устройства, адрес второго канала = адрес устройства +1 и т.д. Если Вы планируете перенастраивать модули и их у Вас несколько и они в одной цепочке, то имеет смысл адреса давать адрес следующего устройства = адрес предыдущего + кол-во каналов в предыдущем. Тогда Вы сможете перенастраивать модуль не исключая из цепочки.
In_Da_Cher_A
07.02.2023, 19:06
Здравствуйте!
Прошу не ругать за наивный вопрос.
Рекомендуется адреса модулей устанавливать кратные 8 но также возможно установить адреса 1, 2, ...n.
Подскажите в чём причины такого решения и как это может повлиять на качество опроса?внимательно читайте мануал - это для протокола Овен, у него такие особенности реализации
встречный вопрос - в чём измеряется "качество" опроса?:D
Александр 1230
07.02.2023, 19:12
Добрый день! Прошу дать совет! Возникла проблема, обратился к вашим официальным дилерам в Казахстане по замене блока Данфос на альтернативу. Скинул тех задание с оборудованием, которое у меня уже было, они посоветовали мне блок ТРМ 1032. Я приобрел этот блок, но возникли проблемы по подключению к седельному клапану Данфос AV24- MFT. На мой вопрос почему не работает клапан от этого блока, они после долгих раздумий сообщили мне, что блок с таким клапаном совместить нельзя. Нужно приобретать в сборе дополнительно новый клапан. Подскажите, пожалуйста, возможно ли подсоединение к транзисторным выходам управления КЗР такого клапана путем сбора дополнительной схемы через реле на время доставки рекомендованого ими нового клапана?
Добрый день! Прошу дать совет! Возникла проблема, обратился к вашим официальным дилерам в Казахстане по замене блока Данфос на альтернативу. Скинул тех задание с оборудованием, которое у меня уже было, они посоветовали мне блок ТРМ 1032. Я приобрел этот блок, но возникли проблемы по подключению к седельному клапану Данфос AV24- MFT. На мой вопрос почему не работает клапан от этого блока, они после долгих раздумий сообщили мне, что блок с таким клапаном совместить нельзя. Нужно приобретать в сборе дополнительно новый клапан. Подскажите, пожалуйста, возможно ли подсоединение к транзисторным выходам управления КЗР такого клапана путем сбора дополнительной схемы через реле на время доставки рекомендованого ими нового клапана?
Не знаю, почему вы задаёте вопрос именно в этом разделе, но вам нужно устройство, преобразующее сигналы "открыть/закрыть" от ТРМ в аналоговый сигнал 0...10В, управляющий клапаном.
В принципе, можно такое сделать на ПР200 с аналоговым выходом 0...10В.
Вот только время поставки ПР наверное соизмеримо с временем поставки нового клапана.
Вы задали вопрос не в той теме.
Но отвечу.
Для данного привода, вне зависимости от клапана, нет режима 3-позиционного управления. Поэтому или меняйте привод на 3-х позиционный + реле, желательно твердотельные, или меняйте контроллер на ТРМ1032М с аналоговым выходом. Я бы потребовал от дилера замены контроллера.
Евгений Кислов
10.02.2023, 16:54
Добрый день
Почему в byteArray[0] не 0, а 22 ?
Добрый день.
Потому что $ - это спецсимвол, указывающий, что следующие за ним символы надо трактовать особым образом.
Например, $N --> перенос строки (ASCII-код 0x0A).
В вашем случае $16 трактуется как "ASCII-символ с кодом 0x16".
Поэтому совершенно логично, что вы получаете 22, так как это представление 0x16 в десятичной системе счисления.
Newcomer
10.02.2023, 17:06
Добрый день.
Потому что $ - это спецсимвол, указывающий, что следующие за ним символы надо трактовать особым образом.
Например, $N --> перенос строки (ASCII-код 0x0A).
В вашем случае $16 трактуется как "ASCII-символ с кодом 0x16".
Поэтому совершенно логично, что вы получаете 22, так как это представление 0x16 в десятичной системе счисления.
А почему $L и $N кодируется одинаково, т.е. 10 ?
Евгений Кислов
10.02.2023, 17:09
А почему $L и $N кодируется одинаково, т.е. 10 ?
Потому что это разные обозначения одного и того же - переноса строки (New line / Line feed).
Newcomer
10.02.2023, 17:12
Потому что это разные обозначения одного и того же - переноса строки (New line / Line feed).
Перевод строки и возврат каретки в CoDeSys совмещены ?
Евгений Кислов
10.02.2023, 17:52
Перевод строки и возврат каретки в CoDeSys совмещены ?
Нет. Возврат строки - $R
Newcomer
10.02.2023, 18:21
Нет. Возврат строки - $R
Спасибо....
Gachok24
12.02.2023, 12:41
Добрый день, столкнулся с глупой проблемой.
Добавил пользователя для виртуального ПЛК Control win V3. CoDesys 3.5.14 сразу отключился от него.
Больше подключится я к нему не могу.
Как сбросить его в "0"
65855
Переустановка всей среды не помогла
Евгений Кислов
12.02.2023, 12:52
Добрый день, столкнулся с глупой проблемой.
Добавил пользователя для виртуального ПЛК Control win V3. CoDesys 3.5.14 сразу отключился от него.
Больше подключится я к нему не могу.
Как сбросить его в "0"
65855
Переустановка всей среды не помогла
Добрый день.
Попробуйте так:
https://owen.ru/forum/showthread.php?t=20069&p=400905&viewfull=1#post400905
P.S. - обратите внимание, это тема про CoDeSys V2.3.
Вопросы по V3.5 обсуждаются здесь:
https://owen.ru/forum/showthread.php?t=20069
Здравствуйте!
При подключении по схеме, представленной в руководстве по эксплуатации (рис.Б12), и подключении контроллера к компьютеру при использовании программы, представленной на фото, должно происходить включение светодиодной лампы (красная лампа на фото снизу). По итогу ничего не происходит. Подскажите, пожалуйста, правильно ли произведено подключение и как правильно объявлять переменные.
65889 65890 65891
Вячеслав@
15.02.2023, 12:00
День добрый! Как решаете вопрос объединения 8 штук COM на выходах ПЛК 110-60? У меня используются все выходы и при этом у них общий COM. Провода-перемычки на выходах? Каждый com тянуть на отдельную объединяющую колодку? Первое некрасиво, второе занимает место в шкафу.
Вячеслав@
15.02.2023, 15:05
Да пофигу. Это вопрос для самостоятельного принятия решения. А если не можете, то вводных мало - еще неизвестна реакция тёщи.
Теще все равно ) Собственно интересно, кто как выходит из положения. Возможно кто-то придумал более изящное решение.
Вячеслав@ Перемычки. Чтобы в перфокороб упрятывать =)
65893
....................
PS
65896
День добрый
Подвязал переменные ко всем выходам для гарантии, остальное расписал по вашему примеру, но все равно ничего не работает. Попробовал сделать визуализацию - там все ОК
Также не высвечиваются состояния выходов (не происходит смена сигнала на значение True(1))
65954 65953
День добрый
Подвязал переменные ко всем выходам для гарантии, остальное расписал по вашему примеру, но все равно ничего не работает. Попробовал сделать визуализацию - там все ОК
Также не высвечиваются состояния выходов (не происходит смена сигнала на значение True(1))
65954 65953
Уберите объявление одноимённых выходов в программе PLC_PRG - при использовании внутри PLC_PRG они имеют приоритет при совпадении имён. Переменные, которые вы создали в в конфигурации - глобальные, можете их применять в PLC_PRG не объявляя.
Емельянов Кирилл
16.02.2023, 00:29
Заказываете сборку, например, Cs-Cs.
Сами пьёте пиво
Можно ещё где-то с марта по апрель помолиться кому-нибудь. Может он ниспошлёт в коробку аккуратную заводскую перемычку
Заказываете сборку, например, Cs-Cs.
Сами пьёте пиво
Ахахаха! Нет уж!
Без внятного ТЗ - результат ХЗ! ©
Можно ещё где-то с марта по апрель помолиться кому-нибудь. Может он ниспошлёт в коробку аккуратную заводскую перемычку
Так а если часть этих выходов (мы же про перемычку на COMx говорим?) используется по разному? Где-то надо GND подать, где-то DC24V? В этом случае заводские перемычки не нужны.
Из ПР200 передаю на ПЛК110 три word переменный по адресам 512, 513, 514.
И одновременно обратно ещё три переменный по адресам 515, 516, 517 - всё проходит.
Пытаюсь всё поменять на Real (даже только одну переменную, другие удалил) - некая каша...
Час читал мануалы - перепробовал менять типы данных и переменных - каша разнообразнее.
Где засада? Что я упускаю?
Из ПР200 передаю на ПЛК110 три word переменный по адресам 512, 513, 514.
И одновременно обратно ещё три переменный по адресам 515, 516, 517 - всё проходит.
Пытаюсь всё поменять на Real (даже только одну переменную, другие удалил) - некая каша...
Час читал мануалы - перепробовал менять типы данных и переменных - каша разнообразнее.
Где засада? Что я упускаю?
Real - занимает 2 регистра, следовательно адреса нужны, например
512, 514, 516 - туда
518, 520, 522 - обратно
Real - занимает 2 регистра, следовательно адреса нужны, например
512, 514, 516 - туда
518, 520, 522 - обратно
Это первое что я сделал. Каша.
512 и только один Real.
В ПР всё соответственно меняю.
Это первое что я сделал. Каша.
512 и только один Real.
В ПР всё соответственно меняю.
Тогда в мастере изменить порядок регистров
Мастер кто?
ЗЫ.
Если мастер ПЛК, то для UMD это делается здесь
65969
Newcomer
16.02.2023, 16:13
А почему $L и $N кодируется одинаково, т.е. 10 ?
А для чего перед L и N стоит знак $ ?
А для чего перед L и N стоит знак $ ?
Чтобы отличить управляющие символы от литер L и N
Newcomer
16.02.2023, 16:23
Чтобы отличить управляющие символы от литер L и N
А ESC - это управляющий символ ?
А ESC - это управляющий символ ?
$L и $N управляют выводом текстовой информации, например, на экран. А ESC чем управляет?
Newcomer
16.02.2023, 16:33
$L и $N управляют выводом текстовой информации, например, на экран. А ESC чем управляет?
ESC используется как команда в некоторых устройствах. Почему в строке можно записать $L или $0A, это будет одно и то же и компилируется. Записать $1B можно, а на $ESC компилятор дает ошибку.
Тогда в мастере изменить порядок регистров
Мастер кто?
ЗЫ.
Если мастер ПЛК, то для UMD это делается здесь Супер.!!! Сразу всё заработало!
СПАСИБО! :)
А я с час репу чесал, перебирая варианты...
Help-ы, вероятно, лет 10 не оптимизируют...
Выше Вам 1exan пояснил.
Вот ни разу не по моему примеру. Просьба не приплетать мне того чего я не писал.
Просто Вы упорото пишете в PLC_PRG.LD даже не взглянув на предоставленное.
Извините за недопонимание в предыдущем сообщении. Подскажите, пожалуйста, как вы обращались к Y1(Denisa) в PlC_PRG.CFC (правильно ли я это сделал)? И подскажите почему иногда на выходе не появляется True, когда должна?
66006 66007
kondor3000
18.02.2023, 19:41
Извините за недопонимание в предыдущем сообщении. Подскажите, пожалуйста, как вы обращались к Y1(Denisa) в PlC_PRG.CFC (правильно ли я это сделал)? И подскажите почему иногда на выходе не появляется True, когда должна?
Неправильно, вы поставили вход и через точку добавили Denisa.Y1.
То есть обратились к переменной Y1, не вызвав программу.
А надо добавить квадратик элемент, назвать его Denisa, это вызов вашей программы. 66015
А уже с выхода Y1, соединить в верхним выводом Sel.
Привет всем!
Включил таргет PLCWinNT, и в реальном времени на компе всё заработало.
Это я получил БОЛЬШОЙ ПЛК-PC?
Будет ЭТО полноценно работать с RS485 используя порты ПК?
kondor3000
24.02.2023, 19:58
Привет всем!
Включил таргет PLCWinNT, и в реальном времени на компе всё заработало.
Это я получил БОЛЬШОЙ ПЛК-PC?
Будет ЭТО полноценно работать с RS485 используя порты ПК?
Не будет, у PLCWinNT нет конфигурации.
Зато можно проверить работу некоторых библиотек, например SysLibTime.lib. Или например, проверить вывод на Скаду 66132
Привет всем!
Включил таргет PLCWinNT, и в реальном времени на компе всё заработало.
Это я получил БОЛЬШОЙ ПЛК-PC?
Будет ЭТО полноценно работать с RS485 используя порты ПК?
про два часа работы предупреждений не было?
про два часа работы предупреждений не было?Было. Можно и перезапустить автоматом. :)
Не будет, у PLCWinNT нет конфигурации.
Зато можно проверить работу некоторых библиотек, например SysLibTime.lib. Или например, проверить вывод на Скаду 66132 Никак не прикрутить IO?
Неплохо бы получить настольный ПЛК из среды CoDeSYS. :)
kondor3000
24.02.2023, 21:31
Никак не прикрутить IO?
Неплохо бы получить настольный ПЛК из среды CoDeSYS. :)
Если только попробовать системный COM1 (RS232), только их давно в компах не ставят.
Никак не прикрутить IO?
Неплохо бы получить настольный ПЛК из среды CoDeSYS. :)
Зачем?
А вообще есть примеры использования RT Codesys как миддлваре под СКАДОЙ. Но естественно лицензированного RT.
Если только попробовать системный COM1 (RS232), только их давно в компах не ставят.Уже давно везде опять ставят!
Регулярно по офисам такие вижу.
Да и USB-сом переходники копейки стоят.
Кто-то пробовал системный сом?
Зачем?
А вообще есть примеры использования RT Codesys как миддлваре под СКАДОЙ. Но естественно лицензированного RT. Про RaspberryCodesysV3 читал.
Под IBM поподробнее можно?
Добрый день! Имеется системник с двумя сетевыми картами, есть идея использовать два плк110 в разных проектах, разнести визуализацию на два монитора возможна ли корректная работа двух программ одновременно.
kondor3000
25.02.2023, 13:29
Добрый день! Имеется системник с двумя сетевыми картами, есть идея использовать два плк110 в разных проектах, разнести визуализацию на два монитора возможна ли корректная работа двух программ одновременно.
Работают 2 разных ПЛК, с разными проектами, даже на 1 экране. Смотри скрин 66145
Всё находится в одной сети и подключено по ТСP/IP. Пример сделан за 1 минуту.
Разнести на 2 экрана думаю не проблема.
Ок, они соединены через свич, а мастером является скада, или есть еще какие то варианты?
kondor3000
25.02.2023, 14:01
Ок, они соединены через свич, а мастером является скада, или есть еще какие то варианты?
В примере скады нет, визуализация через Codesis 2.3. Можно добавить и скаду, только не понятно как одна Скада будет читать из 2 ПЛК.
Тогда надо наверно Codesis не использовать, а подключиться 2 портами к 2 ПЛК, например Лектусом и MasterOPC Universal Modbus Server и читать всё в скаду.
Вот и я о том, а можно поделиться как два плк присоединить к пк через одну сеть (обмен между ними не нужен-это независимые программы). Может скрин соединения покажете, пожалуйста. Мои соображения: адреса у плк разные, но в одной подсети с ПК, свитч, езернет и что будет работать?
возможна ли корректная работа двух программ одновременно.
Каких программ?..
СКАДА или CoDeSys?
Если CoDeSys, то пример с двумя открытыми проектами уже привели.
Если скада, то (купите лицензию с нужным количеством каналов) и задавайте этот вопрос уже не в этой теме.
CoDeSys буду пробовать для начала, только не пойму как создать такой обмен через один сетевой разъем..
CoDeSys буду пробовать для начала, только не пойму как создать такой обмен через один сетевой разъем..
Онлайн ~> Параметры связи ~> далее New и там уже выбрать Tcp/Ip (Level 2) для каждого ПЛК.
Далее для каждого соединения (ПЛК) ввести IP адрес, который ему присвоен.
kondor3000
25.02.2023, 14:50
Вот и я о том, а можно поделиться как два плк присоединить к пк через одну сеть (обмен между ними не нужен-это независимые программы). Может скрин соединения покажете, пожалуйста. Мои соображения: адреса у плк разные, но в одной подсети с ПК, свитч, езернет и что будет работать?
У компа адрес 192.168.0.120, у 1 ПЛК - 192.168.0.130, у 2 ПЛК - 192.168.0.140. Маска везде 255.255.255.0, шлюз везде 192.168.0.1.
Все адреса, маска и шлюз для ПЛК присваиваются через ПЛК-браузер в CoDeSys.
Всё подключено через свитч к роутеру с адресом 192.168.0.1, роутер к сети изернет.
Это понятно, спасибо, а как физически просто от каждого плк в свитч и из него одним кабелем езернет в сетевой разъем?
У компа адрес 192.168.0.120, у 1 ПЛК - 192.168.0.130, у 2 ПЛК - 192.168.0.140 всё подключено через свитч к роутеру с адресом 192.168.0.1, роутер к сети изернет. Вот теперь дошло, извините, спасибо kondor за развернутый ответ..
Это понятно, спасибо, а как физически просто от каждого плк в свитч и из него одним кабелем езернет в сетевой разъем?
Да почему нет?
Единственное условие - всем сетевым устройствам должно быть присвоены разные IP адреса (пример выше).
kondor3000
25.02.2023, 15:35
CoDeSys буду пробовать для начала, только не пойму как создать такой обмен через один сетевой разъем..
Вывести в Скаду можно например, через CoDeSys OPC.02, встроенный OPC с одного ПЛК (через Символьную конфигурацию) прямо по ТСР.
Можно например Owen OPC Server или Лектусом или MasterOPC Universal Modbus Server по ТСР
https://owen.ru/catalog/opc_serveri
( или через переходник USB-485), с любого порта второго ПЛК. 66154
И всё вывести в Скаду.
Вот вывел по ТСР в Скаду с 2 ПЛК,
через CoDeSys OPC.02 с одного ПЛК и через MasterOPC Universal Modbus Server с другого ПЛК 66150
Спасибо, очень содержательно, мне понравился второй вариант.
Вывести в Скаду можно например...
И для чего весь этот геморрой?
---
На скринах "SCADA SIMP Light free" (на 32 тега).
В настройках MudBus драйвера можно добавить сколько приспичило устройств TCP/IP + COM и напрямую с них получать данные.
В RTM, сами понимаете, более положенного лицензией не получите.
---
Неплохая СКАДА, кстати.
Скрины с двух ПЛК100 + ТРМ32 (висит на RS485) могу скинуть в понедельник.
kondor3000
25.02.2023, 20:27
И для чего весь этот геморрой?
---
На скринах "SCADA SIMP Light free" (на 32 тега).
В настройках MudBus драйвера можно добавить сколько приспичило устройств TCP/IP + COM и напрямую с них получать данные.
В RTM, сами понимаете, более положенного лицензией не получите.
---
Неплохая СКАДА, кстати.
Скрины с двух ПЛК100 + ТРМ32 (висит на RS485) могу скинуть в понедельник.
Проверил, с ПЛК слейва теги читаются, а вот с ПЛК мастера нет. 66159
А вот через CoDeSys OPC.02 и Символьную конфигурацию можно читать даже с мастера. Скрин выше.
Включил таргет PLCWinNT, и в реальном времени на компе всё заработало.
Это я получил БОЛЬШОЙ ПЛК-PC?
Будет ЭТО полноценно работать с RS485 используя порты ПК?
Зачем? Правильнее спросить:
- зачем писать прогу на ПК, потом грузить в ПЛК,
и выводить результаты на ... ПК через визуализацию???
А вообще есть примеры использования RT Codesys как миддлваре под СКАДОЙ. Но естественно лицензированного RT. Можно поподробнее варианты?
Там много чего написано.
Я сейчас использую в ПР200 (4 шт), ADС входы, и часть выходов, как I/O для ПЛК160.
Так оказалось эффективнее, чем передёргивать шланги каждый раз, для смены в ПР200 программ.
ПР контролируют только аварийные режимы - быстрее реакция.
А сбор с ADC ПР200, визуализацию и передачу в облако делает ПЛК.
Так-же и с ПК. Часть работы на ПК, а ПЛК частично как I/O.
Это как частный случай, а не стратегия для споров! :)
правильнее будет тогда в ответ спросить: зачем изучать языки для плк, когда всё можно сделать на языках, используемых на ПК, со своей логикой и визуализацией
>> Это как частный случай, а не стратегия для споров! :)
Ещё раз - не про стратегические перевороты в индустрии.
Надёжность ПЛК превышает надёжность ПК.
Размеры ПЛК компактнее офисного ПК.
Есть частный случай, напрашивается очевидное (для этого случая) решение.
Прикрутить COM порт, и упростить решение.
Вопрос: Как это сделать? (без революции в индустрии)
Или библиотеки работы с протоколами.
Да и платы ввода-вывода аналоговых-цифровых сигналов выпускаются. Да, для лабораторных исследований с огромным быстродействием и отсюда ценник - но есть.
Сокеты не ?
Прокладка eth/com физическая - например МКОН. Или логическая - всякие опсы/сами/кого попросите нашкрябать шлюзик в ком. Перспективы есть. Но кого просить? :)
Или библиотеки работы с протоколами.
Да и платы ввода-вывода аналоговых-цифровых сигналов выпускаются. Да, для лабораторных исследований с огромным быстродействием и отсюда ценник - но есть.Готового варианта такого нет.
Всё решается штатными стандартными средствами - в моём случае городить огород.
Готового варианта такого нет.
Всё решается штатными стандартными средствами - в моём случае городить огород.
Вы прямо напишите, что получить хотите.
Обработку на ПК ввода-вывода с ПР с выводом на визуализацию кодесис? Или что?
kondor3000
28.02.2023, 09:38
Вы прямо напишите, что получить хотите.
Обработку на ПК ввода-вывода с ПР с выводом на визуализацию кодесис? Или что?
Он хочет получить виртуальный PLCWinNT 2.4 с физическим выходом на ком-порт Компа (выход на RS485 и ТСР для обмена с внешними физическими устройствами)
Включил таргет PLCWinNT, и в реальном времени на компе всё заработало.
Это я получил БОЛЬШОЙ ПЛК-PC?
Будет ЭТО полноценно работать с RS485 используя порты ПК?
И зачем именно это надо?
Ну и я бы попробовали скажем овеновскую модбас.либ, если она будет работать через сислибком на ПК.
Просто не ясно, зачем это надо, если придется заплатить за лицензию РТ кодесис?
kondor3000
28.02.2023, 19:33
Предлагал уже проверить работу системного COM 1 (RS232), видно нет желания. Проверить не могу, у меня его нет.
Зато ради прикола проверил работу в 3.5, включил WIN NT3.5, назначил СОМ3, 66226
где стоит переходник RS485 и сходу подключился к живому ПЛК слейву. Вообще без проблем.
RomeoVar
28.02.2023, 22:43
Добрый день
Хочу в визуализации в Таблице отображать структуру. В структуре есть поля с перечислениями с поддержкой списка текстов
Для примера:
TYPE SERVO_INPUT :
STRUCT
input : SERVO_INPUTS;
signal : SERVO_INPUT_SIGNAL;
xLevel : BOOL := TRUE;
END_STRUCT
END_TYPE
Где SERVO_INPUTS - перечисление со списком текстов.
ХОтелось бы чтобы в таблице отображалось не числовое значение перечисления, а именно его текстовое значение
Аттрибут {attribute 'to_string'} не помогает.
Буду очень признателен
RomeoVar
01.03.2023, 07:21
Это чего такое ?
Во всяком случае обычный визу-квадратик для переменной типа перечисление с %i отображает число, а с %s имя константы перечисления. Дальше сами.
Для выпадающих списков такое работает, а для таблицы почему-то нет. У меня стоит %s но он все-равно отображает числовое значение, а не строковое. Я уже пробовал и динамические тексты использовать (список текстов), не помогает.
Что-то видимо не так делаю.
RomeoVar
01.03.2023, 08:15
ну тогда массив[(*inputs*)... ] of string...
То-то и оно что это не красиво. Я-то хотел чтобы в пользовательском интерфейсе были осмысленные имена регистров, а для машины передавались числовые значения этих регистров. А тут, получается, нужно подпрыгивать.
Прийдется использовать не таблицу, а набор элементов (метка, выпадающий список, чекбокс) но оно может так красивее будет
RomeoVar
01.03.2023, 08:42
Какое отношение к пользователю имеют имена констант перечисления которые видит кодер?
Возможно я не правильно выразился.
поясню - перечисления могут быть с поддержкой текстов, соответственно у каждого елемента перечисления есть имя, его числовое значение и текстовое значение. Имя и числовое значение перечисления используется в программе. Текстовое значение перечисления очень удобно использовать в интерфейсах пользователя. Или есть другой взгляд использование перечислений которые поддерживают список текстов. Мне кажется что так и было задумано, чтобы в программе использовались перечисления, а в интерфейсе пользователя его числовые значения.
В выпадающих списках это так и работает. Вот в таблицах не работает и это печально, когда нужно отобразить массив (особенно неопределенной длины)
И зачем именно это надо?
Ну и я бы попробовали скажем овеновскую модбас.либ, если она будет работать через сислибком на ПК.
Просто не ясно, зачем это надо, если придется заплатить за лицензию РТ кодесис?Я не в теме, хоть и прочитал, в общем, что это.
Тут терминология с сокращениями мало о чём говорит.
Лицензия на расбери - это понятно, и есть на IBM PC?
Предлагал уже проверить работу системного COM 1 (RS232), видно нет желания. Проверить не могу, у меня его нет.
Зато ради прикола проверил работу в 3.5, включил WIN NT3.5, назначил СОМ3, 66226
где стоит переходник RS485 и сходу подключился к живому ПЛК слейву. Вообще без проблем.
Это из CoDeSYS 3.5 возможно без ПЛК, в режиме эмуляции. обмениваться с внешним портом?
Алексей_99
02.03.2023, 07:18
Как можно сбросить сетевую переменную при старте устройства ?
На ПР200 сделано slave-устройство, которое управляет пускателями ии насосами. В Руководстве пользователя написано :
"Все сетевые переменные, используемые в режиме Modbus Slave, по умолчанию являются Retain переменными. "
В результате имеем, что при пропадании питания и перезагрузке системы, при включении выходы устанавливаются в состояние предшествовавшее выключению даже при отсутствии master-устройства.
Подскажите как осуществить сброс сетевых переменных при первоначальном старте ПР ?
Как можно сбросить сетевую переменную при старте устройства ?
На ПР200 сделано slave-устройство, которое управляет пускателями ии насосами. В Руководстве пользователя написано :
"Все сетевые переменные, используемые в режиме Modbus Slave, по умолчанию являются Retain переменными. "
В результате имеем, что при пропадании питания и перезагрузке системы, при включении выходы устанавливаются в состояние предшествовавшее выключению даже при отсутствии master-устройства.
Подскажите как осуществить сброс сетевых переменных при первоначальном старте ПР ?
Вы не в тот раздел вопрос пишете.
Поиск (https://owen.ru/forum/search.php?searchid=4444168) выдаёт много результатов
kondor3000
02.03.2023, 08:35
Это из CoDeSYS 3.5 возможно без ПЛК, в режиме эмуляции. обмениваться с внешним портом?
Да, только не в эмуляции, а используя виртуальный контроллер Codesys Control WIN V3. На скрине всё видно. Где стоит переходник RS485, такой порт и
назначаете в Codesys 3.5 и даже по TCP работает и даже с WEB - визуализацией.
https://www.youtube.com/watch?v=RgtfIOgKwTY
Да, только не в эмуляции, а используя виртуальный контроллер Codesys Control WIN V3. На скрине всё видно. Где стоит переходник RS485, такой порт и
назначаете в Codesys 3.5 и даже по TCP работает и даже с WEB - визуализацией. CDSv3.5_Faq_v.2.5 (https://ftp.owen.ru/CoDeSys3/11_Documentation/03_3.5.11.5/CDSv3.5_Faq_v.2.5.pdf) нашёл по теме, отлично!
Ставить ещё и 3.5. Буду пробовать.
Спасибо большое! :)
Попутно: Перешёл с ПЛК110 ни ПЛК160, сменил таргет, но в "Конфигурация ПЛК" осталось PLC110.
Вроде работает и с сетью, и с визуализацией.
Но с облаком упирается.
Как весь проект корректно перетащить?
kondor3000
02.03.2023, 19:33
Попутно: Перешёл с ПЛК110 ни ПЛК160, сменил таргет, но в "Конфигурация ПЛК" осталось PLC110.
Вроде работает и с сетью, и с визуализацией.
Но с облаком упирается.
Как весь проект корректно перетащить?
Обязательно сохраните проект.
После смены целевой платформы, надо нажать Дополнения/ Стандартная конфигурация. Вы получите новый чистый таргет.
Переменные таргета придётся переписать ручками.
Всё что было добавлено в конфигурации либо прописать по новой, либо использовать прогу для переноса. https://owen.ru/forum/showthread.php?t=18269
Для первого раза лучше потренироваться на пробном проекте.
По Codesys 3.5 советую поставить только одну версию SP5 патч 5 (ставить полную версию), она самая простая, также добавить биб-ки и таргеты, как в 2.3.
можно перенести проекты из Codesys 2.3, только отрыв проект из этой версии.
Обязательно сохраните проект.
После смены целевой платформы, надо нажать Дополнения/ Стандартная конфигурация. Вы получите новый чистый таргет.
Переменные таргета придётся переписать ручками.
Всё что было добавлено в конфигурации либо прописать по новой, либо использовать прогу для переноса. https://owen.ru/forum/showthread.php?t=18269
Для первого раза лучше потренироваться на пробном проекте. 20 переменных оказалось проще переписать вручную. :)
Не совсем понятно про Var_Global.exp, сохранил, но на "новом месте" переменные не объявляются из файла - необходимо забивать в шаблоны руками.
Аппаратные (что есть в ПЛК) пролезли нормально, а вот сетевые... Или я чё-то не въехал?
VAR_GLOBAL (* старшим байтом вперёд как в ПР200 - поменять в <Universal ModBUS device> Trace_mode на Native *)
In1 AT %IX0.0 : BOOL; (* именование I/O как переменных *)
In2 AT %IX0.1 : BOOL;
In3 AT %IX1.0.0 : BOOL;
In4 AT %IX1.0.1 : BOOL;
In5 AT %IX1.0.2 : BOOL; kAlarm AT %IX1.0.2: BOOL; (* дублировать входы *)
In6 AT %IX1.0.3 : BOOL; kStop AT %IX1.0.3: BOOL;
In7 AT %IX1.0.4 : BOOL; kStart AT %IX1.0.4: BOOL;
In8 AT %IX1.0.5 : BOOL; kPause AT %IX1.0.5: BOOL;
In9 AT %IX1.0.6 : BOOL;
In10 AT %IX1.0.7 : BOOL;
In11 AT %IX1.1.0 : BOOL;
In12 AT %IX1.1.1 : BOOL;
In13 AT %IX1.1.2 : BOOL;
In14 AT %IX1.1.3 : BOOL;
In15 AT %IX1.1.4 : BOOL;
In16 AT %IX1.1.5 : BOOL;
In17 AT %IX1.1.6 : BOOL;
In18 AT %IX1.1.7 : BOOL;
OUT1 AT %QX2.0 : BOOL;
OUT2 AT %QX2.1 : BOOL;
OUT3 AT %QX2.2 : BOOL;
OUT4 AT %QX2.3 : BOOL;
OUT5 AT %QX3.0.0 : BOOL; OutADC AT %QX3.0.0 : BOOL; (* дублировать выходы *)
OUT6 AT %QX3.0.1 : BOOL; Out500 AT %QX3.0.1 : BOOL;
OUT7 AT %QX3.0.2 : BOOL; Out380 AT %QX3.0.2 : BOOL;
OUT8 AT %QX3.0.3 : BOOL; Out100 AT %QX3.0.3 : BOOL;
OUT9 AT %QX3.0.4 : BOOL; Out2000 AT %QX3.0.4 : BOOL;
OUT10 AT %QX3.0.5 : BOOL; AlarmSV AT %QX3.0.5 : BOOL;
OUT11 AT %QX3.0.6 : BOOL;
OUT12 AT %QX3.0.7 : BOOL;
ZUM AT %QX5.0 : BOOL; (* утробный звук *)
InR AT %IX4.0 : BOOL; ResKEY AT %IX4.0 : BOOL; (* тумблер Работа/СТОП/СБРОС *)
(* --- удалённое управление ПР200 4 шт --- сетевые переменные *)
ADCa1 AT %QD6.1.0.0 :REAL; (* АЦП1 первый ПР200 512 0x03 *)
ADCb1 AT %QD6.1.1.0 :REAL; (* АЦП2 первый ПР200 514 0x03 *)
ADCc1 AT %QD6.1.2.0 :REAL; (* АЦП3 первый ПР200 516 0x03 *)
ADC4P1 AT %QD6.1.3.0 :REAL; (* АЦП3 первый ПР200 518 0x03 *)
По Codesys 3.5 советую поставить только одну версию SP5 патч 5 (ставить полную версию), она самая простая, также добавить биб-ки и таргеты, как в 2.3.
можно перенести проекты из Codesys 2.3, только отрыв проект из этой версии. Переносит проекты из v.2 в v.3 !!!
Но пришлось повозиться с разными новшествами...
kondor3000
03.03.2023, 23:42
20 переменных оказалось проще переписать вручную. :)
Не совсем понятно про Var_Global.exp, сохранил, но на "новом месте" переменные не объявляются из файла - необходимо забивать в шаблоны руками.
Аппаратные (что есть в ПЛК) пролезли нормально, а вот сетевые... Или я чё-то не въехал
In1 AT %IX0.0 : BOOL; (* именование I/O как переменных *)
Кто вас научил везде пихать прямые адреса, типа AT %IX0.0 ??? Теперь и огребаете)))
Достаточно просто объявить In1 в конфигурации.
Или просто в глобальных In1 : BOOL; если её нет в конфигурации.
И с переносом проблем не будет и наглядней. И в любом месте обращайтесь как к In1 .
Если вы переносите, через импорт- экспорт, то гораздо проще сделать копию проекта, изменив название, поменять целевую платформу, а конфигурацию перенести программой.
Но вы не ищите лёгких путей)))
Кто вас научил везде пихать прямые адреса, типа AT %IX0.0 ??? Теперь и огребаете)))
Достаточно просто объявить In1 в конфигурации.
Или просто в глобальных In1 : BOOL; если её нет в конфигурации.
И с переносом проблем не будет и наглядней. И в любом месте обращайтесь как к In1 .
Если вы переносите, через импорт- экспорт, то гораздо проще сделать копию проекта, изменив название, поменять целевую платформу, а конфигурацию перенести программой.
Но вы не ищите лёгких путей)))
На самом деле "пихать прямые адреса" не так уж сложно, если иметь небольшие навыки работы с EXCEL
kondor3000
04.03.2023, 11:34
На самом деле "пихать прямые адреса" не так уж сложно, если иметь небольшие навыки работы с EXCEL
Это плохая привычка и вам когда нибудь выйдет боком. Вот и пример уже есть выше.
Это плохая привычка и вам когда нибудь выйдет боком. Вот и пример уже есть выше.
Это пример того, когда делаешь что-то, не до конца понимая, как это работает.
Для меня, например, если имеется более чем десять слейв-переменных, именовать/сортировать их непосредственно в конфигурации очень неудобно. Я уж не говорю про смену целевой платформы
Да, только не в эмуляции, а используя виртуальный контроллер Codesys Control WIN V3. Чёт он явно не в 1мс работает.
Запускаю, и вижу, что не как "виртуальный на IBM PC",
а скорость маленькая, как в режиме эмуляции ПЛК160.
Или чё не так?
20 переменных оказалось проще переписать вручную. :)
Кто вас научил везде пихать прямые адреса, типа AT %IX0.0 ??? Теперь и огребаете)))
Достаточно просто объявить In1 в конфигурации.
Жуть. Это ПРОСТО???
Эта прямая адресация, позволила мне всё получить сразу при переносе.
А вот то, чего нет в ПЛК160 - пришлось прописывать в конфигурации...
И так по 30 сетевых переменных, по 4 раза.
Ох как это ПРОСТО! :)
Если вы переносите, через импорт- экспорт, то гораздо проще сделать копию проекта, изменив название, поменять целевую платформу, а конфигурацию перенести программой.
Но вы не ищите лёгких путей))) Будем голосовать? :)
Это плохая привычка и вам когда нибудь выйдет боком. Вот и пример уже есть выше.Держать под контролем написанный код,
а не пользоваться шаблоном - что не так с примером?
Переноса не получается без бубна,
технология CoDeSys этого не позволяет.
Всё надо руками переписывать (прописывать заново).
А всякие "примочки" - потеря времени на их изучение...
ПЛК110 и ПЛК160 v1_9 Программирование программируемых логических контроллеров.pdf
стр. 61 При этом, если предполагается переход от одного типа контроллера
к другому, то переменные следует задавать в режиме («ресурсе») «Глобальные пе-
ременные (Global Variables)». Связано это с тем, что при задании стандартной кон-
фигурации («Standard Configuaration») переменные, заданные в редакторе «Конфи-
гурация ПЛК (PLC Configuration)», пропадают, и ранее созданное распределение и
именование переменных теряется. При объявлении глобальных переменных их
имена не будут потеряны, и при переходе к другому Target-файлу достаточно только
скорректировать адреса.
Полез в таргет PLC160, нашёл там знакомы буквочки:
Channel1=Section=BitInput,Comment='Discrete input 1'
Channel2=Section=BitInput,Comment='Discrete input 2'
Channel3=Section=BitInput,Comment='Discrete input 3'
Channel4=Section=BitInput,Comment='Discrete input 4'
И добавил строку:
Channel5=Section=BitInput,Comment='Discrete input 5'
Отключил таргет в None, и опять подключил PLC160-M v2.
Прописал имя Inp5 и использовал в программе:
Out380:=Inp5; (понятно, что такого нет в железяке)
Всё работает.
Осталось разобраться, как прописать сетевые переменные.
P.S. Да, я знаю что это вредно и опасно.
Но только не для тех, кто раньше писал на асме. :)
Кто разбирался с архитектурой ПЛК - с кем поговорить?
...
Полез в таргет PLC160, нашёл там знакомы буквочки:
Channel1=Section=BitInput,Comment='Discrete input 1'
Channel2=Section=BitInput,Comment='Discrete input 2'
Channel3=Section=BitInput,Comment='Discrete input 3'
Channel4=Section=BitInput,Comment='Discrete input 4'
И добавил строку:
Channel5=Section=BitInput,Comment='Discrete input 5'
Отключил таргет в None, и опять подключил PLC160-M v2.
Прописал имя Inp5 и использовал в программе:
Out380:=Inp5; (понятно, что такого нет в железяке)
Всё работает.
Осталось разобраться, как прописать сетевые переменные.
....?
В отличие от физических входов/выходов, сетевых переменных - нет в новой конфигурации.
Для того чтобы "прописать" сетевые переменные, надо просто добавить в конфигурацию Modbus(slave) и наполнить его сетевыми переменными в том порядке, в котором они расположены у вас в объявлении (если например, копировали это объявление из другого проекта).
При этом конечно может не совпасть номер блока Modbus(slave) (идент. узла - например, это "8" в адресе AT %QD8.1....), т.к. эти идентификаторы присваиваются последовательно, и поэтому его значение зависит от того, каким по порядку расположен блок Modbus(slave) в конкретной конфигурации.
В отличие от физических входов/выходов, сетевых переменных - нет в новой конфигурации.
Для того чтобы "прописать" сетевые переменные, надо просто добавить в конфигурацию Modbus(slave) и наполнить его сетевыми переменными в том порядке, в котором они расположены у вас в объявлении (если например, копировали это объявление из другого проекта).
При этом конечно может не совпасть номер блока Modbus(slave) (идент. узла - например, это "8" в адресе AT %QD8.1....), т.к. эти идентификаторы присваиваются последовательно, и поэтому его значение зависит от того, каким по порядку расположен блок Modbus(slave) в конкретной конфигурации. Плохо дело.
Эти посредники создают софт-прослойку между железом и пользователями.
Громкие сочные рассказы о пользе - реклама денег заработать.
Не так часто надо переползать на другие ПЛК - раз можно и прописать... :(
Out1P1 AT %QW6.1.3.0 :WORD; (* первый ПР200 вых 1 *)
Out2P1 AT %QW6.1.4.0 :WORD; (* первый ПР200 вых 2 *)
Если не указано в конфигурации - сетевые не объявить как глобальные переменные.
Не объявить их сетевой адрес. Только долбать таблицу...
In_Da_Cher_A
05.03.2023, 15:19
P.S. Да, я знаю что это вредно и опасно.
Но только не для тех, кто раньше писал на асме.
Кто разбирался с архитектурой ПЛК - с кем поговорить?
Плохо дело.
Эти посредники создают софт-прослойку между железом и пользователями.
вот почему, когда все работают, допустим с фотошопом, автокадом, другими программами - никому не приходит в голову пытаться переделать интерфейс и сами принципы работы программы.
Все спокойно изучают юзер интерфейс и делают свою работу
Но как только заходит речь про плк, все классические программисты упорно пытаются использовать все те же самые свои классические представления и использовать привычные "шаблоны" из других программ
Неправильно, вы поставили вход и через точку добавили Denisa.Y1.
То есть обратились к переменной Y1, не вызвав программу.
А надо добавить квадратик элемент, назвать его Denisa, это вызов вашей программы. 66015
А уже с выхода Y1, соединить в верхним выводом Sel.
Спасибо большое, все заработало! Мне нужно подключить "кнопку" для вкл/выкл Do1-3. Подскажите, пожалуйста, как связать переменную X1 со входом Di1 в CFC
66317
Спасибо большое, все заработало! Мне нужно подключить "кнопку" для вкл/выкл Do1-3. Подскажите, пожалуйста, как связать переменную X1 со входом Di1 в CFC
66317
Можно просто поставить их на поле и соединить связью, но лучше всё-же через блок MOVE.
kondor3000
05.03.2023, 15:58
Спасибо большое, все заработало! Мне нужно подключить "кнопку" для вкл/выкл Do1-3. Подскажите, пожалуйста, как связать переменную X1 со входом Di1 в CFC
На вход нельзя ничего присвоить, можно включить вход в эмуляции, нажав на квадратик у входа Di1 .
А на выход можно присвоить, соединив вход (переменную) с выходом , посмотрите видео https://www.youtube.com/watch?v=w5cxmVMUwdU
и лучше все 10-15 шт. видео посмотреть, каждое по 1-2 минуты всего https://www.youtube.com/watch?v=w5cxmVMUwdU&list=RDCMUCbUaZ1JTZMIynGQRuom7YnQ&start_radio=1&rv=w5cxmVMUwdU&t=13
вот почему, когда все работают, допустим с фотошопом, автокадом, другими программами - никому не приходит в голову пытаться переделать интерфейс и сами принципы работы программы.
Все спокойно изучают юзер интерфейс и делают свою работу
Но как только заходит речь про плк, все классические программисты упорно пытаются использовать все те же самые свои классические представления и использовать привычные "шаблоны" из других программ
Не надо путать обработку и тупую логику.
Алгоритмы обработки будут совершенствоваться бесконечно.
А ПЛК иногда выполняют настолько простые операции,
что эти "умные прослойки" что серпом по...
Типа, "помогают пользователям".
Вот "почему". :)
In_Da_Cher_A
05.03.2023, 18:58
вы опять мыслите прежними шаблонами
нет никакой прослойки
есть программа со своим UI и есть конкретный ПЛК, со своими "принципами" работы с ним
вы опять мыслите прежними шаблонами
нет никакой прослойки
есть программа со своим UI и есть конкретный ПЛК, со своими "принципами" работы с ним
>> вы опять мыслите прежними шаблонами
Большая просьба - не переходите на личности.
>> нет никакой прослойки
>> есть программа
:)
Плохо дело.
Эти посредники создают софт-прослойку между железом и пользователями.
Громкие сочные рассказы о пользе - реклама денег заработать.
Не так часто надо переползать на другие ПЛК - раз можно и прописать... :(
Out1P1 AT %QW6.1.3.0 :WORD; (* первый ПР200 вых 1 *)
Out2P1 AT %QW6.1.4.0 :WORD; (* первый ПР200 вых 2 *)
Если не указано в конфигурации - сетевые не объявить как глобальные переменные.
Не объявить их сетевой адрес. Только долбать таблицу...
Ничего не понял про прослойку.
Не хотите через конфигурацию - используйте библиотеки (ModbusSlave - вроде де есть такое).
Но для слейва - использование конфигурации гораздо удобнее и проще.
Ничего не понял про прослойку. Это когда не напрямую управляешь железом,
а ещё и дополнительным софтом правила вводятся, нагромождая некие "стандарты" и "удобства".
Не хотите через конфигурацию - используйте библиотеки (ModbusSlave - вроде де есть такое).
Но для слейва - использование конфигурации гораздо удобнее и проще.
Нашёл OwenModbuSlave:
Библиотека OwenModbusSlave применяется для настройки ОВЕН ПЛК в режиме Modbus RTU
Slave. В отличие от настройки прибора через Конфигурацию ПЛК данный способ предоставляет более
широкий функционал и является удобным при работе с большим количеством переменных.
Спасибо за подсказку. Посмотрим! :)
Это когда не напрямую управляешь железом,
а ещё и дополнительным софтом правила вводятся, нагромождая некие "стандарты" и "удобства".
Нашёл OwenModbuSlave:
Библиотека OwenModbusSlave применяется для настройки ОВЕН ПЛК в режиме Modbus RTU
Slave. В отличие от настройки прибора через Конфигурацию ПЛК данный способ предоставляет более
широкий функционал и является удобным при работе с большим количеством переменных.
Спасибо за подсказку. Посмотрим! :)
Около 500 слейв-регистров - проблем при использовании конфигурации не замечено.
Необходимости в доп.функционале тоже не возникало
В отличие от настройки прибора через Конфигурацию ПЛК данный способ предоставляет более
широкий функционал и является удобным при работе с большим количеством переменных.
как может быть удобным трата целой строки кода на дополнительное прописывание переменной через АТ? А если копипаст и забывчивость/невнимательность программиста, компиляция пройдет успешно, а реальная установка кому нибудь руку оторвет
В конфигураторе только имена подставлять, весь этот код через АТ автоматом прописывается
И уж еще раз про удобство методов а что Вы видели кроме документа первые шаги?
https://owen.ru/forum/showthread.php?t=15455&p=142016&viewfull=1#post142016
https://owen.ru/forum/showthread.php?t=30683&p=300253&viewfull=1#post300253
в этих проектах ни одна АТ не пострадала(не использовалась)
In_Da_Cher_A
06.03.2023, 21:12
>> вы опять мыслите прежними шаблонами
Большая просьба - не переходите на личности.
>> нет никакой прослойки
>> есть программа
:)да я не перехожу никуда
ассемблер ваше фсё, развлекайтесь
Около 500 слейв-регистров - проблем при использовании конфигурации не замечено.
Необходимости в доп.функционале тоже не возникало
Дело не в проблемах, а в спрятанных настройках.
Строка видна, 20 строк - 20 регистров.
Через Конфигурацию ПЛК "побегай" по 20 регистрам, щёлкая мышкой,
чтоб глянуть их параметры - задолбаешься.
Очевидно - нагляднее и удобнее.
Но явно - каждому своё! :)
как может быть удобным трата целой строки кода на дополнительное прописывание переменной через АТ? Я ответил на это выше.
А если копипаст и забывчивость/невнимательность программиста, компиляция пройдет успешно, а реальная установка кому нибудь руку оторвет Ого аргумент...
А Конфигурацию ПЛК используют, и руки не отрываются, не бывает ошибок - волшебство! :)
да я не перехожу никуда
ассемблер ваше фсё, развлекайтесь Если точно - то в строке не могу указать значение регистра.
Inp1P1 AT %QW8.1.18.0 :WORD; (* ПР200-1 вход 1 registet 534 *)
Inp2P1 AT %QW8.1.19.0 :WORD; (* ПР200-1 вход 2 registet 535 *)
Inp3P1 AT %QW8.1.20.0 :WORD; (* ПР200-1 вход 3 registet 536 *)
Inp4P1 AT %QW8.1.21.0 :WORD; (* ПР200-1 вход 4 registet 537 *)
значение "registet 534" всё равно надо в таблице прописывать
Таки нашёл в инструкции:
Если предполагается переход от одного типа контроллера к другому, то переменные следует задавать в режиме («ресурсе») «Глобальные переменные». Во время задания стандартной конфигурации («Standard Configuaration») переменные, заданные в редакторе «Конфигурация ПЛК», пропадают, и ранее созданное распределение и именование переменных теряется.
Глобальные переменные и их имена не будут потеряны, и в случае перехода к другому target-файлудостаточно только скорректировать адреса.
Не убавить, не прибавить.
Я ответил на это выше.
Ого аргумент...
А Конфигурацию ПЛК используют, и руки не отрываются, не бывает ошибок - волшебство! :)
Вы решили что хихикать это что то поменяет, прибавить Вам веса. Просто логически где и у кого будет больше ошибок, кто помимо конфигурации ещё и некий файл правит или только конфигурацию. Ну не хотите , не прислушивайтесь к советам более опытных. Ждём когда Вы будете давать полезные советы по работе с плк
Вы решили что хихикать это что то поменяет, прибавить Вам веса. Просто логически где и у кого будет больше ошибок, кто помимо конфигурации ещё и некий файл правит или только конфигурацию. Ну не хотите , не прислушивайтесь к советам более опытных. Ждём когда Вы будете давать полезные советы по работе с плк Не могли бы вы чётко ответить на вопрос, который мне был задан, про отрывание рук?
Каким образом файл конфигурации защитит от ошибок "кривые руки"???
А объявление глобальных переменных разрушит эту защиту?
Я же привёл железобетонный аргумент:
1. Текстовый файл весь на виду - каждая строчка.
2. Конфигурационный скрыт, и надо "рыскать" по нему, для оценки КАЖДОЙ НАСТРОЙКИ.
Как можно с этим спорить?
И я сделал поправку, предвидя другую точку зрения.
Люди привыкают к своей среде, и не хотят менять.
Я же не требую/заставляю менять, а аргументированно обсуждаю очевидно более простой вариант.
Я в прямом смыслке "намудохался" с файлом конфигурации, и когда набрался опыта, то понял что это "шляпа",
Или - это была попытка сделать удобнее, но не получилась у фирмы... :(
А то что некоторые привыкли к ЭТОМУ - так мой вопрос был про альтернативу РАБОЧУЮ и УДОБНУЮ.
Я перечитываю мануал, и вижу замкнутость этой среды программирования.
Так решили авторы.
Но вижу и возможности более эффективно работать в этой системе.
И только. Никаких "священых войн"!!! :)
Кстати. Очень благодарен за "проявление" моих вопросов по теме.
Это очень сильно помогает!
Текстовый файл весь на виду - каждая строчка.это дополнительный файл, конфигурация всё равно должна прописываться, вероятность ошибок увеличивается от объема кода, это законы статистики, как с этим можно спорить?
Конфигурационный скрыт, и надо "рыскать" по нему, для оценки КАЖДОЙ НАСТРОЙКИа зачем искать там какие то настройки, в допфайле Вы просто присваиваете переменной адрес той области памяти которую среда разработки выделила после добавления в конфигурацию некой сущности. И, кстати, как Вы это делаете: лезете в конфигурацию, берете как минимум первый адрес и вставляете в созданный список глобальных переменных, далее либо копипастите, либо снова заглядываете в конфигурацию и прописываете очередной адрес. А можно просто присвоить имя в кнфиге и всё, хочется ручками поработать, для этого есть огород ну или у кого какие предпочтения
Люди привыкают к своей среде, и не хотят менять.если намекаете что я фанат конфигурации, то нет, я ей не пользуюсь, для меня достаточно её заполнить объявить в начале переменную, а затем работать в программе через указатели
Но вижу и возможности более эффективно работать в этой системе.видите так работайте, доказывайте. Пока что это вряд ли выглядит как эффективно делая дополнительные телодвижения
kondor3000
08.03.2023, 09:47
Человек просто упёрся рогом и сидит 2 недели ковыряя конфигурацию. Перенос с помощью программы занимает не больше минуты.
Не хочет слушать, как можно сделать быстро и просто, не зачем и объяснять.
За это время, можно было уже освоить несколько приёмов, вообще номинально не используя конфигурацию. Каждому своё.
Новички вообще без подготовки, обмен через библиотеки успевали освоить.
Дело не в проблемах, а в спрятанных настройках.
Строка видна, 20 строк - 20 регистров.
Через Конфигурацию ПЛК "побегай" по 20 регистрам, щёлкая мышкой,
чтоб глянуть их параметры - задолбаешься.
Очевидно - нагляднее и удобнее.
Но явно - каждому своё! :)
Так и не понял, зачем туда "бегать" и какие параметры там смотреть
Человек просто упёрся рогом и сидит 2 недели ковыряя конфигурацию. Перенос с помощью программы занимает не больше минуты.
Не хочет слушать, как можно сделать быстро и просто, не зачем и объяснять.
За это время, можно было уже освоить несколько приёмов, вообще номинально не используя конфигурацию. Каждому своё.
Новички вообще без подготовки, обмен через библиотеки успевали освоить.
Я всё и освоил.
И определил оптимальный вариант для себя.
Не надо меня загонять в рамки неких стандартов.
Я же этого от других не требую!!!
Я всех выслушал, и пробую.
Что не так???
это дополнительный файл, конфигурация всё равно должна прописываться, вероятность ошибок увеличивается от объема кода, это законы статистики, как с этим можно спорить?
Ага. Переменные в вашей программе не прописываются. :)
А конфиг программу не увеличивает... Законы статистики?
а зачем искать там какие то настройки, в допфайле Вы просто присваиваете переменной адрес той области памяти которую среда разработки выделила после добавления в конфигурацию некой сущности. И, кстати, как Вы это делаете: лезете в конфигурацию, берете как минимум первый адрес и вставляете в созданный список глобальных переменных, далее либо копипастите, либо снова заглядываете в конфигурацию и прописываете очередной адрес. А можно просто присвоить имя в кнфиге и всё, хочется ручками поработать, для этого есть огород ну или у кого какие предпочтения Посчитайте сколько движений вы описали...
И это вместо одной строчки глобальной переменной.
если намекаете что я фанат конфигурации, то нет, я ей не пользуюсь, для меня достаточно её заполнить объявить в начале переменную, а затем работать в программе через указатели
видите так работайте, доказывайте. Пока что это вряд ли выглядит как эффективно делая дополнительные телодвижения Намёков нет. Есть диалог.
Завтраки женам успели приготовить ? Я вот даже мусор вынес. Сегодня актуально! :)
Огромный минус если платят - за строки. За строки кода? Маразм...
Зачем работать на такие конторы... Рабство в чистом виде.
Там где работает маркетинг, программистам нечего делать в этой грязи.
Для меня реализация цельного проекта - это интересно!
Ну и оплата по результату. Сртемимся к идеалу. :)
Так и не понял, зачем туда "бегать" и какие параметры там смотреть
Это программирование называется! :)
А у вас это что?
Привет всем.
Использовал для лог-файла Модуль «Archiver» (Архиватор) в ПЛК160.
Подскажите, как надо сделать, чтоб заработало: (всё создано в конфигурации :)
– By command (по команде) – если в переменной Status модуля архивации записана специальная команда, то происходит старт архивации, либо ее остановка (0x00FE –«стоп», 0x00FF – «старт»)
Status :=255;
Status назвал, присвоил 255 - не пишет в файл.
Пробовал 0x00FF - пытается это объявить как переменную.
и не понятно, сколько надо ждать, чтоб все 16 переменных записались, и остановить запись.
Эти команды выполняются нормально:
By timer (по таймеру) – данные записываются в архив с заданным периодом архивации, значение по умолчанию;
By change value (по изменению значений) – если какая-то переменная, включенная в список архивации, меняет свое значение, то происходит ее архивация,
причем только этой переменной.
Правда, тут сохраняются все переменные - но что, в итоге, мне и надо. :)
Здравствуйте, такой вопрос есть датчик(который работает с таймером) и кнопка. Если вкл от кнопки, то свет будет гореть, пока повторно не нажать, а если датчик работает и при этом нажать на кнопку, то выкл.
66452
kondor3000
13.03.2023, 11:23
Здравствуйте, такой вопрос есть датчик(который работает с таймером) и кнопка. Если вкл от кнопки, то свет будет гореть, пока повторно не нажать, а если датчик работает и при этом нажать на кнопку, то выкл.
66452
А вопрос то в чём?
Здравствуйте, такой вопрос есть датчик(который работает с таймером) и кнопка. Если вкл от кнопки, то свет будет гореть, пока повторно не нажать, а если датчик работает и при этом нажать на кнопку, то выкл.
66452
Так, а что надо?
А вопрос то в чём?
Реализовать, он работает без таймера, а как обычная кнопка
Так, а что надо?
работает без таймера
In_Da_Cher_A
13.03.2023, 11:43
Реализовать, он работает без таймера, а как обычная кнопкареализуйте :D
то, что на картинке - это что и как отношается к вопросу?
реализуйте :D
то, что на картинке - это что и как отношается к вопросу?
мой вариант, который не работает
In_Da_Cher_A
13.03.2023, 12:31
мой вариант, который не работаетвы не хотите рассказать, что собственно и как вы делали в своём варианте?
почему поставили тот или иной блок? для чего?
почему вход rst на каком-то блоке switch1_129 - висит в воздухе и на него нет никакого воздействия, а?
почему порядок обработки блоков стоит - через задницу
что это за блок кстати и откуда он взялся, из какой бибилотеки?
было бы неплохо увидеть ваши рассуждения
простой алгоритм, ничего сверхъестественного нет, просто надо немного подумать
а пока всё это выглядит как "сделайте за меня"
мой вариант, который не работает
Возможно, вы такой вариант имели ввиду
66465
Только, обязательно соблюдайте порядок блоков как на картинке
kondor3000
13.03.2023, 14:07
Как я понял, включать надо по кнопке, а выключать по таймеру, с задержкой, тогда так 66466
Есть включатель, а есть датчик. Они включают одно и тоже, только датчик работает по таймеру(прошли, горит 5 секунд после того, как пропало движение), а включатель пока повторно не нажать.
Есть включатель, а есть датчик. Они включают одно и тоже, только датчик работает по таймеру(прошли, горит 5 секунд после того, как пропало движение), а включатель пока повторно не нажать.
Так бы сразу и сказал..
66489
Так бы сразу и сказал..
66489
Да, все верно, спасибо.
Alexandr88
15.03.2023, 01:00
Здравствуйте, подскажите пожалуйста, перечитал все в поиске, все видео пересмотрел не могу найти правильный подход.
Такая ситуация: СП307 (sleve), ПЛК 110-60 (мастер) (язык СFC) ; на СП создал иконки дата и время, в настройках проекта - экспорт даты и время прописал регистр. Как экспортировать год месяц день и время в ПЛК? что бы в итоге можно конвертировать в DATA, DT, time ? или хотя бы в значения которые можно прочитать, т.к. создаю модули стринг, реал , регистр,а они не целочисленные.... не могу вставить эти значения в свой таймер для работы по времени выходных сигналов...
Еще вопросы: как создать свой функциональный блок и сохранить и вставлять в другие проекты? можно ли его сделать на языке CFC?, как созданный мною макрос вставить в другой проект?
In_Da_Cher_A
15.03.2023, 06:39
Еще вопросы: как создать свой функциональный блок и сохранить и вставлять в другие проекты? можно ли его сделать на языке CFC?, как созданный мною макрос вставить в другой проект?
откройте документацию на CoDeSys 2.3 "Руководство пользователя по программированию ПЛК в CoDeSys 2.3"
и начните читать. На первых же страницах вы увидите в пункте 2 документации следующий текст
Проект
Проект включает следующие объекты: POU, типы данных, визуализации, ресурсы, библиотеки.
Каждый проект сохраняется в отдельном файле.
POU (Program Organization Unit)
К программным компонентам (POU) относятся функциональные блоки, функции и программы. Отдельные POU могут включать действия (подпрограммы).
ВАШ функциональный блок - это такой же программный компонент.
как его делать и что с ним делать - откройте документацию и в разделе 3, где описан пример "Блок управления светофором" - выполните этот пример и все вопросы "как работать в Кодесис?" - пропадут.
In_Da_Cher_A
15.03.2023, 06:49
Как экспортировать год месяц день и время в ПЛК? что бы в итоге можно конвертировать в DATA, DT, time ? или хотя бы в значения которые можно прочитать, т.к. создаю модули стринг, реал , регистр,а они не целочисленные.... не могу вставить эти значения в свой таймер для работы по времени выходных сигналов...а что ещё вы сделали помимо вот этого
на СП создал иконки дата и время, в настройках проекта - экспорт даты и время прописал регистр.?
судя по вот этому -
создаю модули стринг, реал , регистркакие модули? какой регистр? где создаёте? о чём это вообще?
вы вообще не читали документацию по работе с Кодесис и с ПЛК, даже базовые вещи
kondor3000
15.03.2023, 08:29
Здравствуйте, подскажите пожалуйста, перечитал все в поиске, все видео пересмотрел не могу найти правильный подход.
Такая ситуация: СП307 (sleve), ПЛК 110-60 (мастер) (язык СFC) ; на СП создал иконки дата и время, в настройках проекта - экспорт даты и время прописал регистр. Как экспортировать год месяц день и время в ПЛК? что бы в итоге можно конвертировать в DATA, DT, time ? или хотя бы в значения которые можно прочитать, т.к. создаю модули стринг, реал , регистр,а они не целочисленные.... не могу вставить эти значения в свой таймер для работы по времени выходных сигналов...
Еще вопросы: как создать свой функциональный блок и сохранить и вставлять в другие проекты? можно ли его сделать на языке CFC?, как созданный мною макрос вставить в другой проект?
Например в панели вы поставили экспорт времени в 501 регистр, у вас будут 7 регистров с 501 по 507 (год, месяц, день, часы, мин, сек, день недели).
Время в панели в формате HEX, для вывода в панели ставите формат HEX,
а ещё точнее в формате BCD, например секунды могут быть не 59, а 89, при отображении в десятичной системе.
ПЛК мастер читает эти 7 регистров в виде WORD (Register Input), приняв их в ПЛК, конвертируете с помощью биб-ки Util.lib,
блок BCD_TO_INT, в нормальные числа и делайте что угодно.
В Codesys, по кнопке F1, открываете справку и читаете про Типы Данных, про Функциональные блоки ФБ(типа макросы) и про импорт, экспорт блоков.
Напрмер таймеры это тоже функц. блоки, только библиотечные. Вы можете создать свой ФБ с нужными входами, выходами и так же как таймер поставить на поле и использовать.
Например в панели вы поставили экспорт времени в 501 регистр, у вас будут 7 регистров с 501 по 507 (год, месяц, день, часы, мин, сек, день недели).
Время в панели в формате HEX, для вывода в панели ставите формат HEX,
а ещё точнее в формате BCD, например секунды могут быть не 59, а 89, при отображении в десятичной системе.
ПЛК мастер читает эти 7 регистров в виде WORD (Register Input), приняв их в ПЛК, конвертируете с помощью биб-ки Util.lib,
блок BCD_TO_INT, в нормальные числа и делайте что угодно.
В Codesys, по кнопке F1, открываете справку и читаете про Типы Данных, про Функциональные блоки ФБ(типа макросы) и про импорт, экспорт блоков.
Напрмер таймеры это тоже функц. блоки, только библиотечные. Вы можете создать свой ФБ с нужными входами, выходами и так же как таймер поставить на поле и использовать.
В место экспорта времени в какие-то промежуточные регистры (501..507) просто сразу читайте мастером(ПЛК) системные регистры панели PSW30..PSW36 там и есть те самые (год, месяц, день, часы, мин, сек, день недели).
Остальное про BCD формат полученных данных верно.
Так бы сразу и сказал..
66489
А если будет 1 кнопка, работающая как свитч, 1 раз нажал вкл, 2 раз нажал выкл. и запустился таймер. Чтобы после выключения запускался таймер.
kondor3000
15.03.2023, 15:43
А если будет 1 кнопка, работающая как свитч, 1 раз нажал вкл, 2 раз нажал выкл. и запустился таймер. Чтобы после выключения запускался таймер.
Вы можете толком объяснять, что вам это надо?
1 раз нажал вкл, 2 раз нажал выкл. , а таймер что включать должен? Опять тот же выход, который вы только отключили ?
Подобную схему, вам уже нарисовал в прошлом посте, при выключении запускается таймер, на пред. странице.
Вы можете толком объяснять, что вам это надо?
1 раз нажал вкл, 2 раз нажал выкл. , а таймер что включать должен? Опять тот же выход, который вы только отключили ?
Подобную схему, вам уже нарисовал в прошлом посте, при выключении запускается таймер, на пред. странице.
Оба варианта правильные, один с одной кнопкой ваш, и второй с двумя petera. Спасибо.
Alexandr88
15.03.2023, 22:39
Всем большое спасибо, все получилось.
Единственное, еще не разобрался по написанию функциональных блоков, я так понял на языке CFC примера нет в мануале? как создать функциональный блок, а то я пока разбираюсь в CFC языке в другие не лезу...
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot