PDA

Просмотр полной версии : ВОПРОС-ОТВЕТ (отвечаем на простые вопросы от новичков)



Страницы : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 [38] 39 40 41 42

kondor3000
09.12.2022, 09:28
Проверил, биты можно менять местами уже в дополнительных блоках Out_n_n и Out_m_m, можно даже со смещением. 64439
Тут уже не влияет на запись.
Важно не запутаться и не применять переменные дважды.

Duvall
09.12.2022, 10:40
Проверил, биты можно менять местами уже в дополнительных блоках 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).
А для остальных оставить какой был.

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

Если переменная назначена дважды, то она поменяется там, где номер ближе к концу. Это надо просто учитывать.

Duvall
09.12.2022, 12:26
Послушайте, вы хоть что то поняли, из того что я пишу?
Я вам максимально доступно всё разжевал, почему раньше нельзя было менять, а теперь стало можно. И где можно. Внимательно смотрите скрины.

Если переменная назначена дважды, то она поменяется там, где номер ближе к концу. Это надо просто учитывать.

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, перенесённая ниже присвоится. Но ели она не нужна выше, лучше всё равно удалить.

И работу программы обязательно надо проверять.

Duvall
09.12.2022, 14:09
Ну по идее всё должно работать, главное если вы перенесли переменную в новый блок, то лучше всё таки её удалить из старого. 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, там все по поводу перестановки бит. Я дописал уже.

1exan
09.12.2022, 15:30
Конечно некорректно, вы опять за своё, в этом блоке нельзя менять порядок, меняйте в дополнительном блоке.
Начинайте внимательно перечитывать последние 2 страницы, надоело уже вам по 100 раз повторять.
И перечитайте пост #9260, там все по поводу перестановки бит. Я дописал уже.

Завидую вашей выдержке

дрю
14.12.2022, 11:38
ПЛК 110_Комутатор КСН210-5_Ноутбук с кодесисом_компютер со СКАДОЙ
Ребят подскажите, 110ПЛК через изернет скомутирован с овеновским не управляемым комутатором КСН210-5. Если я подключаю в комутатор ноутбук с кодесисом - соединение работает, если подключаю в следоющий порт комп со СКАДОЙ этот комп не может установить соединение с ПЛК. Если наоборот с начало подключаю СКАДУ - соединение работает, но когда вторым подключаю ноут с КДС- соединение не появляется с ноутом. Если короче то вместе работать одноврименно ноут с КДС и комп со скадой отказываються, кто первый скомутирован с комутатором тот и работает а второй уже не ,,лезет,,. Что делать?

дрю
14.12.2022, 11:58
IP адреса ноута и другого компа?

дрю
14.12.2022, 12:00
Сейчас схожу сфоткаю.

дрю
14.12.2022, 12:34
Когда работал ктото один изкомпов в свойствах изернет и там и там стояла галка ,,получать IP адрес автоматичиски,,. Я присвоил ноуту с КДС адрес 64520 и компу со СКАДОЙ 64521. Теперь ни один не может подключится к ПЛК через комутатор

дрю
14.12.2022, 12:39
Да там и сети нет, два компа комутатор и ПЛК , между собой временными шнурами их соединяю

дрю
14.12.2022, 12:46
Поменял комутатор на аналогичный - не помогло..

melky
14.12.2022, 12:53
ПЛК при этом тоже надо назначать адреса...

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, напрямую и без шлюза можно.

melky
14.12.2022, 12:57
kondor3000 ну вот с фига ле? у меня например шлюз 0.200 и ПК спокойно с 0.1 работает и шлюзом не является. Да и шлюза может не быть вовсе в одной сети, если надо только в ней. Вот просто может отсутствовать как класс...

дрю
14.12.2022, 12:57
Не подскажите пример как это выполнить?

melky
14.12.2022, 13:02
дрю по поводу настройки IP адреса для ПЛК должно быть все в руководстве описано. Сильно сомневаюсь, что по умолчанию ПЛК имеет сеть 192.168.0.х Вот вы его и не видите, когда на эту сеть настраиваете ПК.

дрю
14.12.2022, 13:02
Сейчас доем быстро, и побегу попробую

YuriBel
14.12.2022, 13:03
Покажи IP адрес контроллера.
Покажи настройки связи в Codesys.

дрю
14.12.2022, 13:53
Настройки связи в КДС64524

дрю
14.12.2022, 13:57
А вот это наверно настройки связи В ПЛК?64525

kondor3000
14.12.2022, 14:02
А вот это наверно настройки связи В ПЛК?64525

Если у ПЛК адрес 10.0.6.10, то и комп надо настраивать например 10.0.6.20, напрямую и без шлюза можно.
Если с коммутатором, то шлюз 10.0.6.1

дрю
14.12.2022, 14:02
А что необходимо показать?

kondor3000
14.12.2022, 14:17
А что необходимо показать?

Реальный адрес ПЛК, открываете ПЛК браузер и в нём нажимаете кнопку с тремя точками и выбираете PLC Info и ввод.

дрю
14.12.2022, 14:20
Вот ребят, наконец то получилось. Настройки ноута с КДС64526. Настройки компа со скадой 64527. Сейчас одноврименно установлена связь и с КДС и СКАДОЙ. Большое спасибо всем кто откликнулся, и простите за , возможно, наивные вопросы.

дрю
14.12.2022, 14:22
Вот скрин из ПЛК браузера64528

melky
14.12.2022, 14:28
kondor3000 и что? роутер не может иметь адрес 0.>1 ? и вам еще больше скажу, сеть может быть 10.0.0.Х а шлюз собака такая может иметь адрес 10.0.3.Х вы тогда вообще пристрелитесь? :)

YuriBel
14.12.2022, 14:43
А что необходимо показать?
Для того, чтобы всё работало, нужно , чтобы все устройства находились в одной сети. Поскольку устройств три, предлагаю "есть удава по частям" и сначала разобраться со связью ПЛК и ПК с Codesys.
Для работы в Codesys нужно, чтобы: IP адрес ПЛК и ПК принадлежали одной сети, и в насторйках связи Codesys был указан актуальный адрес ПЛК. Сейчас у вас ПЛК, судя по всему, имеет адрес 10.0.6.10, а компьютер - 192.168.1.1, поэтому связи нет. Определитесь сначала, в какую сеть вы собираетесь объединять устройства, то есть какие IP адреса вам нужны. тогда станет ясно, что, где и как менять.

saii
14.12.2022, 14:53
Вот скрин из ПЛК браузера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. Но увы, не получается.

YuriBel
14.12.2022, 15:51
С этим вопросом лучше обратиться в аналогичную ветку в разделе Codesys 3.5

Андрей1992
16.12.2022, 11:32
как сравнить предудущее значение с датчика с настоящим на фбд, или ст?

capzap
16.12.2022, 11:40
как сравнить предудущее значение с датчика с настоящим на фбд, или ст?

на фбд используя линию задержки

1exan
16.12.2022, 11:46
На ST тоже только через линию задержки снаружи блока т.к. на ST в ПР200 можно создать только функции, а в них нет внутренних переменных, позволяющих сохранить предыдущее значение.

И точнее выбирайте подраздел, вы написали свой вопрос про ПР200 в ветке "ПЛК (среда CoDeSys V2.3)".

дрю
21.12.2022, 14:52
Добрый день, подскажите как найти одноименную переменную в проекте, кажись какой то механизм есть но как его запустить не нашёл

petera
21.12.2022, 15:05
Добрый день, подскажите как найти одноименную переменную в проекте, кажись какой то механизм есть но как его запустить не нашёл

Проект --> Глобальный поиск --> Окно сообщений

saii
21.12.2022, 15:05
Добрый день, подскажите как найти одноименную переменную в проекте, кажись какой то механизм есть но как его запустить не нашёл

Если нужно нацти какой-то текст по всему проекту, то Проект -> Глобальный поиск (Project -> Global Search...). Если нужно найти, где используется переменная, то Project -> Show Cross Reference...

capzap
21.12.2022, 15:17
Добрый день, подскажите как найти одноименную переменную в проекте, кажись какой то механизм есть но как его запустить не нашёл

правой кнопкой по переменной и последний пункт TODO...что_то_там_Strg+F3

Юрий Ганыч
22.12.2022, 00:44
Доброй ночи. Подскажите, где почитать про кодесис HMI. Интересует работа в полноэкранном режиме- как,, где, цены ...

In_Da_Cher_A
22.12.2022, 09:49
кодесис HMI. Интересует работа в полноэкранном режиме- как,, где, цены ...
переведите на русский, что такое для вас кодесис ХМИ и что такое "как", что такое "где" и причём здесь "цена"

IVM
22.12.2022, 11:15
Доброй ночи. Подскажите, где почитать про кодесис HMI. Интересует работа в полноэкранном режиме- как,, где, цены ...

Лицензия для CoDeSys HMI ранее стоил 200 евро.

https://www.codesys.com/products/codesys-visualization/hmi.html

Софья56
26.12.2022, 13:17
Добрый вечер нужен программный код Выполнить проект по управлению станцией водоподготовки в интегрированной среде разработки (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.
вы даже не снизошли до того, чтобы переписать ТЗ своими словами и тупо его скопипастили
выполнить проект - это работа. За неё надо платить.
Если вы рассчитываете, что здесь за вас сделают вашу работу и бесплатно - вы ошибаетесь
и да - вы ошиблись разделом.

Sandkon
12.01.2023, 09:25
День добрый ! Произвожу опрос по RS485 Ардуино-Устройство.Данные по регистрам: 01 - Чтение Диф.Давление ,02 -Чтение АтмДавление ,03-Чтение Температура 04-Чтение Весы,05-Запись СервоДвиг. При опросе через ОвенOPC все происходит четко ,данные корректны и с адресами все понятно.65112 При подключении к ПЛК-100 не получается добиться понятного обмена.
65113 Данные получается принять с 4х регистров при этом наблюдается как бы смещение,т.е. данные с 02го идут на первом адресе ,03 на втором 04-на третьем ,а на четвертом адресе присутствуют данные с регистра 01. При добавлении пятого адреса на запись обмен по нему начинает идти,но по четвертому проподают данные с регистра 01. Разъясните пожалуйста "куда копать"65114

Sandkon
12.01.2023, 09:29
Настройки: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 адреса.
Либо с настройками что то напутали. Либо от сервопривода идут сильные помехи.

Cs-Cs
12.01.2023, 09:46
В какой-то теме такое недавно было. Там тоже была библиотека для Arduino, которая отдавала регистры с нуля, а не с 1.
Вот: https://owen.ru/forum/showthread.php?t=37051

Sandkon
12.01.2023, 10:49
Поставил адреса начиная с 0 65121 Первые три регистра выровнялись, но отвалились весы и серва.Может не там адрес ставлю?

Sandkon
12.01.2023, 10:52
В теме на которую ссылается Cs-Cs проблема решилась распределением памяти по адресам кратным длине данных (2,4,6),но как это сделать я не понимаю пока

Cs-Cs
12.01.2023, 10:58
Поставил адреса начиная с 0 65121 Первые три регистра выровнялись, но отвалились весы и серва.Может не там адрес ставлю?
Адрес ставишь правильно - именно в этом поле, которое отмечено. В том примере чел читал FLOAT, который занимает два регистра. Поэтому там адреса шли через один.
У тебя, если я не путаю (и не ошибаюсь), адресация должна просто идти подряд и начинаться с нуля:
Чтение:
0 = Диф.Давление
1 = Атм.Давление
2 = Температура
3 = Весы
Запись:
4 = СервоСдвиг

Попробуй так.

Sandkon
12.01.2023, 11:21
65128 Все кроме весов.Желтым это смещения в адресном пространстве ПЛК? Синим адрес запрашиваемого регистра в MODBAS?

Sandkon
12.01.2023, 11:28
на 4 серва не работает только на 5м адресе(как и надо) но логика по другим адресам тогда мутная. Данные типа WORD по идее т.е. двубайтные

Sandkon
12.01.2023, 11:34
65130 Замена 3го адреса на весах на 4й и пропадает уже и температура.

Cs-Cs
12.01.2023, 12:16
Так! "Жёлтые" - ВООБЩЕ НЕ ТРОГАТЬ! А если трогал - то удали и заново всё создай Менять надо только "красные"!

kondor3000
12.01.2023, 13:14
Сделайте Очистить всё и Компелировать всё. Поставьте галку автоматически вычислять адреса. И создайте конфигурацию заново.
А ещё лучше создайте новый проект.
И прежде чем лезть настраивать, хоть бы обучающие видосы посмотрели.

Sandkon
12.01.2023, 13:20
Пересоздал! Картина осталась прежняя :с весов на адресе 3 данных нет( перепроверил на ОPC - все есть там где надо) серва работает на 5м

kondor3000
12.01.2023, 13:26
Пересоздал! Картина осталась прежняя :с весов на адресе 3 данных нет( перепроверил на ОPC - все есть там где надо) серва работает на 5м

Разница между подключением ПЛК и ОРС сервера только в переходнике типа АС-4, там есть резистор 120 ом.
Поставьте резистор параллельно линии RS485, при подключении к ПЛК. Надеюсь вы сервер и переходник отключаете?

Sandkon
12.01.2023, 14:12
Комп с OPC и ПЛК практически развязаны, я перекидываю провода с преобразователя USB -485 - устройство и ПЛК-устройство, КодеСис через изернет

In_Da_Cher_A
12.01.2023, 14:49
Пересоздал! Картина осталась прежняя :с весов на адресе 3 данных нет( перепроверил на ОPC - все есть там где надо) серва работает на 5м
ну так и сделайте таблицу - слева настройки обмена на ПЛК, справа - ОРС
и сами увидите где у вас косяк

и да - тупо сделайте конфиг на одни весы. Их и считайте для начала. А потом добавите то, что у вас якобы работает

Cs-Cs
12.01.2023, 14:49
Sandkon Выложите, что ли, проект. Хочу на Конфигурацию ПЛК посмотреть.
И под Ардуино тоже (у меня среда разработки какой-то версии есть).

Sandkon
13.01.2023, 08:41
Это ссылка на файлы КодеСис и Ардуино :https://disk.yandex.ru/d/tdv-ICClHOXScg Данные с весов в общем комплекте данных так и не получил.Грызу проект дальше.Цель проекта : Удаленный мониторинг на MasterSCADA 3.12 и управление ПЛК100 по линии Lectus-ПМ01-OSD-ПМ01.

Sandkon
13.01.2023, 08:45
В этом же проекте данные через модем тоже как то не стабильно передаются,может это нормально , но 5ть регистров передать и то не стабильно получается, что то проходит что то нет

Sandkon
13.01.2023, 08:46
может надо загрузочный проект создавать для более стабильной работы?

In_Da_Cher_A
13.01.2023, 09:03
может надо загрузочный проект создавать для более стабильной работы?есть два варианта - один - продолжать играть в угадайку "может/не может" и не вижу с вашей стороны никаких препятствий в этом - развлекайтесь как хотите, только зачем мы вам нужны?,
второй - открыть наконец-то документацию и прочесть что такое загрузочный проект и для каких целей он нужен.

Sandkon
13.01.2023, 09:22
Лог с 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
Можно ли считать такое поведение в пределах нормы?Как то не стабильною.

Валенок
13.01.2023, 10:04
...
сделайте пока так

(*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
После того как с чтением разберётесь.

Cs-Cs
13.01.2023, 11:37
Я придерусь к этому участку в Ардуино-Идиотино-Дурино:

//////////////// Регистры вашего 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;
Вот ШТО это за ужас? Что, куда и кому присваивается? Получается, если следовать старым объявлениям, что тут регистры, что ли, не по порядку идут? И вроде как с пятого мы что-то читаем, а для сервы в тот же "пятый" в ПЛК пишем, потому что думаем, что они идут подряд. А серва получается шестой.

Sandkon
13.01.2023, 11:37
По резистору 120Ом,это согласующий резистор и в данном случае он не причем. Разбор в адресных пространствах.

Sandkon
13.01.2023, 11:45
6ть регистров я сделал в процессе игры с адресами,что бы адресация начиналась с 1го адреса. Ардуино сляпал на скорую просто что бы данные шли какие нибудь для тестов.Замечания принимаю.

Cs-Cs
13.01.2023, 11:57
6ть регистров я сделал в процессе игры с адресами,что бы адресация начиналась с 1го адреса. Ардуино сляпал на скорую просто что бы данные шли какие нибудь для тестов.Замечания принимаю.
Ну а в итоге оказался двоичный код: два варианта адресации в ПЛК (с 0 и 1), два в Ардуино (с 0 и 1), два с числом регистров (5 или 6) дали 2 х 2 х 2 = 8 вариантов глюков =)
Не надо! Начни лучше последовательно:
а) Сделай карту регистров в Ардуино начисто
б) Присвой пока в коде Ардуино этим регистрам какие-то понятные значения типа 1, 2, 3, 4, 5
в) Добейся, чтобы ПЛК их верно читал или писал (вот тут пусть и будут опыты)
...а потом уже добавляй реальные датчики и устройства с реальными данными, чтобы в них не путаться.

Sandkon
13.01.2023, 12:15
65145 Вот что получилось .Данные все но как говориться не на своих местах.Сдвиг по кругу: Давление .диф. на 4м адресе. И таки запись в серу происходит по 06 и никак по другому. В Ардуино примере на базе которого устройство ошибка в комента.

capzap
13.01.2023, 12:17
И таки запись в серу происходит по 06 и никак по другому. В Ардуино примере на базе которого устройство ошибка в комента.

пока переписывайтесь с Cs-Cs а потом дождемся кто посоветует либо на бибки перейти либа стринг использовать, тогда станет интереснее

Cs-Cs
13.01.2023, 12:38
А какие данные должны быть? Вот 36275, 28, 54, 547 и 140 - это ж данные? Значит всё работает =)
Сделай тестовые данные, а?

capzap А это тут при чём? Мне самому интересно, что это и почему это так криво. И было бы интересно покопаться, если бы его железо было на столе у меня.

Sandkon
13.01.2023, 16:12
https://disk.yandex.ru/d/tdv-ICClHOXScg исправленные файлы(добавил файл конфигурации овенопс)
Скрин не получается загрузить но сдвиг остается :данные с Давление диф по третьему адресу в ПЛК .Почему так пока объяснений нет

Sandkon
13.01.2023, 16:15
6515465155

Sandkon
13.01.2023, 16:17
В ОПС все четко, в кодесис со сдвигом по кругу

Валенок
13.01.2023, 17:46
В ОПС все четко, в кодесис со сдвигом по кругу
Интересен этап выяснения что дело не в бобине.
Вам выше Cs-Cs норм советы дал. По пунктам. Особенно б)

kondor3000
13.01.2023, 18:17
исправленные файлы(добавил файл конфигурации овенопс)
Скрин не получается загрузить но сдвиг остается :данные с Давление диф по третьему адресу в ПЛК .Почему так пока объяснений нет
Конфигурация читает регистры по одному. Попробуйте прочитать все регистры группой, с помощью String 65159
ОРС сервер читает тоже группой.
Файл проекта выкладываю

Cs-Cs
13.01.2023, 18:28
А что-то я не понял... А что? Если в комментариях к коду 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".
Это позволит разобраться с порядком и регистров и байт. А потом уже надо накручивать логику.

Sandkon
14.01.2023, 09:17
Всем спасибо за участие. С чтением группой попробую позже. Перехожу к связке Lectus 3.10-SCADA 3.12 .Похоже там тоже не все гладко.

Sandkon
14.01.2023, 09:45
65163 C String работает четко.

kondor3000
14.01.2023, 10:42
65163 C String работает четко.

Только у вас Старт не нажат, в переменных 0 везде.
И ещё удалите повторяющуюся переменную Ves из объявлений (Ves уже есть в конфигурации Слейва). И все переменные можно присвоить напрямую, без промежуточных Pa, Pd, T и подобных.

west
14.01.2023, 15:45
А можно узнать у гуру ST?
---
Для чего после END_IF многие в своих разработках ставят символ ;?
Или ткните носом - буду признателен за науку. :cool:

kondor3000
14.01.2023, 16:01
А можно узнать у гуру ST?
---
Для чего после END_IF многие в своих разработках ставят символ ;?
Или ткните носом - буду признателен за науку. :cool:

Ставят новички, прочитавшие, что строка должна заканчиваться ;
Но после END_IF его ставить не надо.

capzap
14.01.2023, 17:12
Ставят новички, прочитавшие, что строка должна заканчиваться ;
Но после END_IF его ставить не надо.

Я не новичек и делаю это всегда, компилятор бывает чудит, не всегда но страховка не мешает

1exan
14.01.2023, 18:03
А можно узнать у гуру ST?
---
Для чего после END_IF многие в своих разработках ставят символ ;?
Или ткните носом - буду признателен за науку. :cool:

Потому что ST в TIA Portal выдаёт ошибку при его отсутствии

west
14.01.2023, 20:37
Ищо предлагаю подисскутировать про () у функций/фб без параметров и про пробелы в матвыражениях (нет путать с выражениями матом). Архиважные проблемы, товарищи.
я для саморазвития (так сказать) спросил...
кстати с наступившим!

coctailnina
16.01.2023, 09:54
Есть ли ПО для ПЛК150-220.А-М под Linux?

Илья2282
17.01.2023, 01:20
Здравствуйте, помогите пожалуйста решить проблему. Я написал уже два проекта в Codesys, и каждый из них Codesys испортил выдавая такую ошибку. Я пишу проект,сохраняю его и закрываю, открываю его через день и выдает эту ошибку. Проект больше никак не получается открыть, данные потеряны. У меня вопрос, можно ли как-то восстановить проект или извлечь из него данные? 65202

1exan
17.01.2023, 04:53
Здравствуйте, помогите пожалуйста решить проблему. Я написал уже два проекта в 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 порте, или он сдох у самого ПЛК

melky
24.01.2023, 14:10
стать снифером при помощи другого порта на линию, ну и проверить адресацию в ПЛК, и правильность подключения

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 Строго не судите, я же новичок :)

1exan
03.02.2023, 08:24
Всем привет еще раз ) Продолжаю осваивать программирование ПЛК и тут дошло до 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
Я понимаю. Но так как все программируется через Кодесис. Я думаю смысл должен быть один и тот же

1exan
03.02.2023, 09:09
Я понимаю. Но так как все программируется через Кодесис. Я думаю смысл должен быть один и тот же

Смысл одинаковый, а вот реализация на конкретном ПЛК разная может быть.
ПЛК на кодесисе, даже китайский, должен иметь руководство, и возможно даже примеры программирования таких вещей.
Вы таргет на ваш ПЛК нашли?

potekot1345
03.02.2023, 09:20
Смысл одинаковый, а вот реализация на конкретном ПЛК разная может быть.
ПЛК на кодесисе, даже китайский, должен иметь руководство, и возможно даже примеры программирования таких вещей.
Вы таргет на ваш ПЛК нашли?

Да, установил.

1exan
03.02.2023, 09:29
Да, установил.

Посмотрите в конфигурации, может быть там есть возможность работы с модбасом через неё - это скорее всего будет проще, чем непосредственная работа с портами и функциями модбас в программе

potekot1345
03.02.2023, 09:34
Посмотрите в конфигурации, может быть там есть возможность работы с модбасом через неё - это скорее всего будет проще, чем непосредственная работа с портами и функциями модбас в программе

Смотрел, они там действительно есть ( только китайцы рекомендуют все делать через функциональные блоки ).
Просто ради интереса хотел понять как обращаться к Модбас через программу ( ST язык )

1exan
03.02.2023, 09:37
Смотрел, они там действительно есть ( только китайцы рекомендуют все делать через функциональные блоки ).
Просто ради интереса хотел понять как обращаться к Модбас через программу ( ST язык )

Ну если рекомендуют, то наверно и показывают как это сделать?

potekot1345
03.02.2023, 09:43
Ну если рекомендуют, то наверно и показывают как это сделать?

Да, буквально пару минут нашел инструкцию у них на сайте.

Но все равно не понимаю некоторых параметров

In_Da_Cher_A
05.02.2023, 10:51
Спросил бы, вот только спит человек. А программу изучаю щас.
ПЛК китайский. Существует "проект". Есть насосы и вентиляторы, которыми будет управлять частотники и есть панель. а вы в этом проекте что делаете?

Я так понимаю, для этого и было создано обращение через модбас.кем создано и что такое "обращение"?
и ап чом вообще тогда разговор, если что-то уже кем-то создано?

Знакомый программист скинул свой кодкод от чего? какое это отношение имеет к "проЭкту"?

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


как можно подключиться к Modbus.к модбас не подключаются, это вам не wi-fi :D
модбас сам по себе не является "объектом"

у вас вопросы даже не новичка, а вообще постороннего человека. начните с азов, что такое плк и что с ним делать. Хотя бы на том же Овене, по обучалкам.

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

ZETs
07.02.2023, 03:32
Здравствуйте!
Прошу не ругать за наивный вопрос.
Рекомендуется адреса модулей устанавливать кратные 8 но также возможно установить адреса 1, 2, ...n.
Подскажите в чём причины такого решения и как это может повлиять на качество опроса?

1exan
07.02.2023, 05:17
Здравствуйте!
Прошу не ругать за наивный вопрос.
Рекомендуется адреса модулей устанавливать кратные 8 но также возможно установить адреса 1, 2, ...n.
Подскажите в чём причины такого решения и как это может повлиять на качество опроса?

Скорее всего эта рекомендация связана с адресацией устройств при использовании протокола ОВЕН (что-то связанное с количеством каналов в устройстве). Для модбаса - без разницы

ZETs
07.02.2023, 08:10
Скорее всего эта рекомендация связана с адресацией устройств при использовании протокола ОВЕН (что-то связанное с количеством каналов в устройстве). Для модбаса - без разницы

Я тоже заподозрил что то не ладное))) и скорее всего это как раз и связано с количеством каналов.
Интересно есть ли подводные камни?

saii
07.02.2023, 09:45
Здравствуйте!
Прошу не ругать за наивный вопрос.
Рекомендуется адреса модулей устанавливать кратные 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. На мой вопрос почему не работает клапан от этого блока, они после долгих раздумий сообщили мне, что блок с таким клапаном совместить нельзя. Нужно приобретать в сборе дополнительно новый клапан. Подскажите, пожалуйста, возможно ли подсоединение к транзисторным выходам управления КЗР такого клапана путем сбора дополнительной схемы через реле на время доставки рекомендованого ими нового клапана?

1exan
07.02.2023, 19:29
Добрый день! Прошу дать совет! Возникла проблема, обратился к вашим официальным дилерам в Казахстане по замене блока Данфос на альтернативу. Скинул тех задание с оборудованием, которое у меня уже было, они посоветовали мне блок ТРМ 1032. Я приобрел этот блок, но возникли проблемы по подключению к седельному клапану Данфос AV24- MFT. На мой вопрос почему не работает клапан от этого блока, они после долгих раздумий сообщили мне, что блок с таким клапаном совместить нельзя. Нужно приобретать в сборе дополнительно новый клапан. Подскажите, пожалуйста, возможно ли подсоединение к транзисторным выходам управления КЗР такого клапана путем сбора дополнительной схемы через реле на время доставки рекомендованого ими нового клапана?

Не знаю, почему вы задаёте вопрос именно в этом разделе, но вам нужно устройство, преобразующее сигналы "открыть/закрыть" от ТРМ в аналоговый сигнал 0...10В, управляющий клапаном.
В принципе, можно такое сделать на ПР200 с аналоговым выходом 0...10В.
Вот только время поставки ПР наверное соизмеримо с временем поставки нового клапана.

ASo
07.02.2023, 19:33
Вы задали вопрос не в той теме.
Но отвечу.
Для данного привода, вне зависимости от клапана, нет режима 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

Denisa
13.02.2023, 19:37
Здравствуйте!
При подключении по схеме, представленной в руководстве по эксплуатации (рис.Б12), и подключении контроллера к компьютеру при использовании программы, представленной на фото, должно происходить включение светодиодной лампы (красная лампа на фото снизу). По итогу ничего не происходит. Подскажите, пожалуйста, правильно ли произведено подключение и как правильно объявлять переменные.
65889 65890 65891

Вячеслав@
15.02.2023, 12:00
День добрый! Как решаете вопрос объединения 8 штук COM на выходах ПЛК 110-60? У меня используются все выходы и при этом у них общий COM. Провода-перемычки на выходах? Каждый com тянуть на отдельную объединяющую колодку? Первое некрасиво, второе занимает место в шкафу.

Вячеслав@
15.02.2023, 15:05
Да пофигу. Это вопрос для самостоятельного принятия решения. А если не можете, то вводных мало - еще неизвестна реакция тёщи.

Теще все равно ) Собственно интересно, кто как выходит из положения. Возможно кто-то придумал более изящное решение.

Cs-Cs
15.02.2023, 16:11
Вячеслав@ Перемычки. Чтобы в перфокороб упрятывать =)

Denisa
15.02.2023, 18:14
65893
....................

PS
65896

День добрый
Подвязал переменные ко всем выходам для гарантии, остальное расписал по вашему примеру, но все равно ничего не работает. Попробовал сделать визуализацию - там все ОК
Также не высвечиваются состояния выходов (не происходит смена сигнала на значение True(1))
65954 65953

1exan
15.02.2023, 18:48
День добрый
Подвязал переменные ко всем выходам для гарантии, остальное расписал по вашему примеру, но все равно ничего не работает. Попробовал сделать визуализацию - там все ОК
Также не высвечиваются состояния выходов (не происходит смена сигнала на значение True(1))
65954 65953

Уберите объявление одноимённых выходов в программе PLC_PRG - при использовании внутри PLC_PRG они имеют приоритет при совпадении имён. Переменные, которые вы создали в в конфигурации - глобальные, можете их применять в PLC_PRG не объявляя.

Емельянов Кирилл
16.02.2023, 00:29
Заказываете сборку, например, Cs-Cs.
Сами пьёте пиво

Можно ещё где-то с марта по апрель помолиться кому-нибудь. Может он ниспошлёт в коробку аккуратную заводскую перемычку

Cs-Cs
16.02.2023, 11:59
Заказываете сборку, например, Cs-Cs.
Сами пьёте пиво
Ахахаха! Нет уж!
Без внятного ТЗ - результат ХЗ! ©


Можно ещё где-то с марта по апрель помолиться кому-нибудь. Может он ниспошлёт в коробку аккуратную заводскую перемычку
Так а если часть этих выходов (мы же про перемычку на COMx говорим?) используется по разному? Где-то надо GND подать, где-то DC24V? В этом случае заводские перемычки не нужны.

ПавелП
16.02.2023, 15:01
Из ПР200 передаю на ПЛК110 три word переменный по адресам 512, 513, 514.
И одновременно обратно ещё три переменный по адресам 515, 516, 517 - всё проходит.
Пытаюсь всё поменять на Real (даже только одну переменную, другие удалил) - некая каша...
Час читал мануалы - перепробовал менять типы данных и переменных - каша разнообразнее.
Где засада? Что я упускаю?

petera
16.02.2023, 15:09
Из ПР200 передаю на ПЛК110 три word переменный по адресам 512, 513, 514.
И одновременно обратно ещё три переменный по адресам 515, 516, 517 - всё проходит.
Пытаюсь всё поменять на Real (даже только одну переменную, другие удалил) - некая каша...
Час читал мануалы - перепробовал менять типы данных и переменных - каша разнообразнее.
Где засада? Что я упускаю?

Real - занимает 2 регистра, следовательно адреса нужны, например
512, 514, 516 - туда
518, 520, 522 - обратно

ПавелП
16.02.2023, 15:11
Real - занимает 2 регистра, следовательно адреса нужны, например
512, 514, 516 - туда
518, 520, 522 - обратно
Это первое что я сделал. Каша.
512 и только один Real.
В ПР всё соответственно меняю.

petera
16.02.2023, 15:16
Это первое что я сделал. Каша.
512 и только один Real.
В ПР всё соответственно меняю.

Тогда в мастере изменить порядок регистров
Мастер кто?

ЗЫ.
Если мастер ПЛК, то для UMD это делается здесь

65969

Newcomer
16.02.2023, 16:13
А почему $L и $N кодируется одинаково, т.е. 10 ?

А для чего перед L и N стоит знак $ ?

petera
16.02.2023, 16:16
А для чего перед L и N стоит знак $ ?

Чтобы отличить управляющие символы от литер L и N

Newcomer
16.02.2023, 16:23
Чтобы отличить управляющие символы от литер L и N

А ESC - это управляющий символ ?

petera
16.02.2023, 16:28
А ESC - это управляющий символ ?

$L и $N управляют выводом текстовой информации, например, на экран. А ESC чем управляет?

Newcomer
16.02.2023, 16:33
$L и $N управляют выводом текстовой информации, например, на экран. А ESC чем управляет?

ESC используется как команда в некоторых устройствах. Почему в строке можно записать $L или $0A, это будет одно и то же и компилируется. Записать $1B можно, а на $ESC компилятор дает ошибку.

ПавелП
16.02.2023, 16:41
Тогда в мастере изменить порядок регистров
Мастер кто?

ЗЫ.
Если мастер ПЛК, то для UMD это делается здесь Супер.!!! Сразу всё заработало!
СПАСИБО! :)
А я с час репу чесал, перебирая варианты...
Help-ы, вероятно, лет 10 не оптимизируют...

Denisa
18.02.2023, 18:26
Выше Вам 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.

ПавелП
24.02.2023, 19:43
Привет всем!

Включил таргет PLCWinNT, и в реальном времени на компе всё заработало.
Это я получил БОЛЬШОЙ ПЛК-PC?
Будет ЭТО полноценно работать с RS485 используя порты ПК?

kondor3000
24.02.2023, 19:58
Привет всем!

Включил таргет PLCWinNT, и в реальном времени на компе всё заработало.
Это я получил БОЛЬШОЙ ПЛК-PC?
Будет ЭТО полноценно работать с RS485 используя порты ПК?

Не будет, у PLCWinNT нет конфигурации.
Зато можно проверить работу некоторых библиотек, например SysLibTime.lib. Или например, проверить вывод на Скаду 66132

capzap
24.02.2023, 20:38
Привет всем!

Включил таргет PLCWinNT, и в реальном времени на компе всё заработало.
Это я получил БОЛЬШОЙ ПЛК-PC?
Будет ЭТО полноценно работать с RS485 используя порты ПК?
про два часа работы предупреждений не было?

ПавелП
24.02.2023, 21:04
про два часа работы предупреждений не было?Было. Можно и перезапустить автоматом. :)

ПавелП
24.02.2023, 21:08
Не будет, у PLCWinNT нет конфигурации.
Зато можно проверить работу некоторых библиотек, например SysLibTime.lib. Или например, проверить вывод на Скаду 66132 Никак не прикрутить IO?
Неплохо бы получить настольный ПЛК из среды CoDeSYS. :)

kondor3000
24.02.2023, 21:31
Никак не прикрутить IO?
Неплохо бы получить настольный ПЛК из среды CoDeSYS. :)

Если только попробовать системный COM1 (RS232), только их давно в компах не ставят.

ASo
24.02.2023, 21:56
Никак не прикрутить IO?
Неплохо бы получить настольный ПЛК из среды CoDeSYS. :)
Зачем?

А вообще есть примеры использования RT Codesys как миддлваре под СКАДОЙ. Но естественно лицензированного RT.

ПавелП
24.02.2023, 22:07
Если только попробовать системный COM1 (RS232), только их давно в компах не ставят.Уже давно везде опять ставят!
Регулярно по офисам такие вижу.
Да и USB-сом переходники копейки стоят.

Кто-то пробовал системный сом?

ПавелП
24.02.2023, 22:12
Зачем?

А вообще есть примеры использования RT Codesys как миддлваре под СКАДОЙ. Но естественно лицензированного RT. Про RaspberryCodesysV3 читал.
Под IBM поподробнее можно?

greyboy
25.02.2023, 11:59
Добрый день! Имеется системник с двумя сетевыми картами, есть идея использовать два плк110 в разных проектах, разнести визуализацию на два монитора возможна ли корректная работа двух программ одновременно.

kondor3000
25.02.2023, 13:29
Добрый день! Имеется системник с двумя сетевыми картами, есть идея использовать два плк110 в разных проектах, разнести визуализацию на два монитора возможна ли корректная работа двух программ одновременно.

Работают 2 разных ПЛК, с разными проектами, даже на 1 экране. Смотри скрин 66145
Всё находится в одной сети и подключено по ТСP/IP. Пример сделан за 1 минуту.
Разнести на 2 экрана думаю не проблема.

greyboy
25.02.2023, 13:56
Ок, они соединены через свич, а мастером является скада, или есть еще какие то варианты?

kondor3000
25.02.2023, 14:01
Ок, они соединены через свич, а мастером является скада, или есть еще какие то варианты?

В примере скады нет, визуализация через Codesis 2.3. Можно добавить и скаду, только не понятно как одна Скада будет читать из 2 ПЛК.
Тогда надо наверно Codesis не использовать, а подключиться 2 портами к 2 ПЛК, например Лектусом и MasterOPC Universal Modbus Server и читать всё в скаду.

greyboy
25.02.2023, 14:12
Вот и я о том, а можно поделиться как два плк присоединить к пк через одну сеть (обмен между ними не нужен-это независимые программы). Может скрин соединения покажете, пожалуйста. Мои соображения: адреса у плк разные, но в одной подсети с ПК, свитч, езернет и что будет работать?

west
25.02.2023, 14:27
возможна ли корректная работа двух программ одновременно.
Каких программ?..
СКАДА или CoDeSys?
Если CoDeSys, то пример с двумя открытыми проектами уже привели.
Если скада, то (купите лицензию с нужным количеством каналов) и задавайте этот вопрос уже не в этой теме.

greyboy
25.02.2023, 14:35
CoDeSys буду пробовать для начала, только не пойму как создать такой обмен через один сетевой разъем..

west
25.02.2023, 14:47
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, роутер к сети изернет.

greyboy
25.02.2023, 14:51
Это понятно, спасибо, а как физически просто от каждого плк в свитч и из него одним кабелем езернет в сетевой разъем?

greyboy
25.02.2023, 14:53
У компа адрес 192.168.0.120, у 1 ПЛК - 192.168.0.130, у 2 ПЛК - 192.168.0.140 всё подключено через свитч к роутеру с адресом 192.168.0.1, роутер к сети изернет. Вот теперь дошло, извините, спасибо kondor за развернутый ответ..

west
25.02.2023, 14:56
Это понятно, спасибо, а как физически просто от каждого плк в свитч и из него одним кабелем езернет в сетевой разъем?
Да почему нет?
Единственное условие - всем сетевым устройствам должно быть присвоены разные 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

greyboy
25.02.2023, 19:26
Спасибо, очень содержательно, мне понравился второй вариант.

west
25.02.2023, 19:54
Вывести в Скаду можно например...
И для чего весь этот геморрой?
---
На скринах "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 и Символьную конфигурацию можно читать даже с мастера. Скрин выше.

ПавелП
25.02.2023, 22:12
Включил таргет PLCWinNT, и в реальном времени на компе всё заработало.
Это я получил БОЛЬШОЙ ПЛК-PC?
Будет ЭТО полноценно работать с RS485 используя порты ПК?


Зачем? Правильнее спросить:
- зачем писать прогу на ПК, потом грузить в ПЛК,
и выводить результаты на ... ПК через визуализацию???


А вообще есть примеры использования RT Codesys как миддлваре под СКАДОЙ. Но естественно лицензированного RT. Можно поподробнее варианты?
Там много чего написано.

Я сейчас использую в ПР200 (4 шт), ADС входы, и часть выходов, как I/O для ПЛК160.
Так оказалось эффективнее, чем передёргивать шланги каждый раз, для смены в ПР200 программ.
ПР контролируют только аварийные режимы - быстрее реакция.
А сбор с ADC ПР200, визуализацию и передачу в облако делает ПЛК.

Так-же и с ПК. Часть работы на ПК, а ПЛК частично как I/O.
Это как частный случай, а не стратегия для споров! :)

ПавелП
26.02.2023, 23:38
правильнее будет тогда в ответ спросить: зачем изучать языки для плк, когда всё можно сделать на языках, используемых на ПК, со своей логикой и визуализацией

>> Это как частный случай, а не стратегия для споров! :)

Ещё раз - не про стратегические перевороты в индустрии.
Надёжность ПЛК превышает надёжность ПК.
Размеры ПЛК компактнее офисного ПК.

Есть частный случай, напрашивается очевидное (для этого случая) решение.

Прикрутить COM порт, и упростить решение.

Вопрос: Как это сделать? (без революции в индустрии)

ASo
27.02.2023, 08:39
Или библиотеки работы с протоколами.
Да и платы ввода-вывода аналоговых-цифровых сигналов выпускаются. Да, для лабораторных исследований с огромным быстродействием и отсюда ценник - но есть.

ПавелП
27.02.2023, 20:05
Сокеты не ?

Прокладка eth/com физическая - например МКОН. Или логическая - всякие опсы/сами/кого попросите нашкрябать шлюзик в ком. Перспективы есть. Но кого просить? :)

ПавелП
27.02.2023, 23:01
Или библиотеки работы с протоколами.
Да и платы ввода-вывода аналоговых-цифровых сигналов выпускаются. Да, для лабораторных исследований с огромным быстродействием и отсюда ценник - но есть.Готового варианта такого нет.
Всё решается штатными стандартными средствами - в моём случае городить огород.

ASo
28.02.2023, 08:57
Готового варианта такого нет.
Всё решается штатными стандартными средствами - в моём случае городить огород.

Вы прямо напишите, что получить хотите.
Обработку на ПК ввода-вывода с ПР с выводом на визуализацию кодесис? Или что?

kondor3000
28.02.2023, 09:38
Вы прямо напишите, что получить хотите.
Обработку на ПК ввода-вывода с ПР с выводом на визуализацию кодесис? Или что?

Он хочет получить виртуальный PLCWinNT 2.4 с физическим выходом на ком-порт Компа (выход на RS485 и ТСР для обмена с внешними физическими устройствами)

Включил таргет PLCWinNT, и в реальном времени на компе всё заработало.
Это я получил БОЛЬШОЙ ПЛК-PC?
Будет ЭТО полноценно работать с RS485 используя порты ПК?

ASo
28.02.2023, 17:33
И зачем именно это надо?
Ну и я бы попробовали скажем овеновскую модбас.либ, если она будет работать через сислибком на ПК.
Просто не ясно, зачем это надо, если придется заплатить за лицензию РТ кодесис?

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
Какое отношение к пользователю имеют имена констант перечисления которые видит кодер?

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

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

ПавелП
01.03.2023, 23:42
И зачем именно это надо?
Ну и я бы попробовали скажем овеновскую модбас.либ, если она будет работать через сислибком на ПК.
Просто не ясно, зачем это надо, если придется заплатить за лицензию РТ кодесис?Я не в теме, хоть и прочитал, в общем, что это.
Тут терминология с сокращениями мало о чём говорит.
Лицензия на расбери - это понятно, и есть на IBM PC?

ПавелП
01.03.2023, 23:58
Предлагал уже проверить работу системного 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-устройства.
Подскажите как осуществить сброс сетевых переменных при первоначальном старте ПР ?

1exan
02.03.2023, 07:56
Как можно сбросить сетевую переменную при старте устройства ?
На ПР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

ПавелП
02.03.2023, 19:19
Да, только не в эмуляции, а используя виртуальный контроллер 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, только отрыв проект из этой версии.

ПавелП
03.03.2023, 23:31
Обязательно сохраните проект.
После смены целевой платформы, надо нажать Дополнения/ Стандартная конфигурация. Вы получите новый чистый таргет.
Переменные таргета придётся переписать ручками.
Всё что было добавлено в конфигурации либо прописать по новой, либо использовать прогу для переноса. 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 .

Если вы переносите, через импорт- экспорт, то гораздо проще сделать копию проекта, изменив название, поменять целевую платформу, а конфигурацию перенести программой.
Но вы не ищите лёгких путей)))

1exan
04.03.2023, 09:59
Кто вас научил везде пихать прямые адреса, типа AT %IX0.0 ??? Теперь и огребаете)))
Достаточно просто объявить In1 в конфигурации.
Или просто в глобальных In1 : BOOL; если её нет в конфигурации.
И с переносом проблем не будет и наглядней. И в любом месте обращайтесь как к In1 .

Если вы переносите, через импорт- экспорт, то гораздо проще сделать копию проекта, изменив название, поменять целевую платформу, а конфигурацию перенести программой.
Но вы не ищите лёгких путей)))

На самом деле "пихать прямые адреса" не так уж сложно, если иметь небольшие навыки работы с EXCEL

kondor3000
04.03.2023, 11:34
На самом деле "пихать прямые адреса" не так уж сложно, если иметь небольшие навыки работы с EXCEL

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

1exan
04.03.2023, 12:38
Это плохая привычка и вам когда нибудь выйдет боком. Вот и пример уже есть выше.

Это пример того, когда делаешь что-то, не до конца понимая, как это работает.

Для меня, например, если имеется более чем десять слейв-переменных, именовать/сортировать их непосредственно в конфигурации очень неудобно. Я уж не говорю про смену целевой платформы

ПавелП
04.03.2023, 22:49
Да, только не в эмуляции, а используя виртуальный контроллер Codesys Control WIN V3. Чёт он явно не в 1мс работает.
Запускаю, и вижу, что не как "виртуальный на IBM PC",
а скорость маленькая, как в режиме эмуляции ПЛК160.

Или чё не так?

ПавелП
04.03.2023, 22:54
20 переменных оказалось проще переписать вручную. :)


Кто вас научил везде пихать прямые адреса, типа AT %IX0.0 ??? Теперь и огребаете)))
Достаточно просто объявить In1 в конфигурации.

Жуть. Это ПРОСТО???
Эта прямая адресация, позволила мне всё получить сразу при переносе.
А вот то, чего нет в ПЛК160 - пришлось прописывать в конфигурации...
И так по 30 сетевых переменных, по 4 раза.
Ох как это ПРОСТО! :)


Если вы переносите, через импорт- экспорт, то гораздо проще сделать копию проекта, изменив название, поменять целевую платформу, а конфигурацию перенести программой.
Но вы не ищите лёгких путей))) Будем голосовать? :)

ПавелП
04.03.2023, 22:57
Это плохая привычка и вам когда нибудь выйдет боком. Вот и пример уже есть выше.Держать под контролем написанный код,
а не пользоваться шаблоном - что не так с примером?
Переноса не получается без бубна,
технология 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. Да, я знаю что это вредно и опасно.
Но только не для тех, кто раньше писал на асме. :)

Кто разбирался с архитектурой ПЛК - с кем поговорить?

1exan
05.03.2023, 09:52
...

Полез в таргет 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) в конкретной конфигурации.

ПавелП
05.03.2023, 14:10
В отличие от физических входов/выходов, сетевых переменных - нет в новой конфигурации.
Для того чтобы "прописать" сетевые переменные, надо просто добавить в конфигурацию 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
05.03.2023, 15:28
Неправильно, вы поставили вход и через точку добавили Denisa.Y1.
То есть обратились к переменной Y1, не вызвав программу.
А надо добавить квадратик элемент, назвать его Denisa, это вызов вашей программы. 66015
А уже с выхода Y1, соединить в верхним выводом Sel.

Спасибо большое, все заработало! Мне нужно подключить "кнопку" для вкл/выкл Do1-3. Подскажите, пожалуйста, как связать переменную X1 со входом Di1 в CFC
66317

1exan
05.03.2023, 15:37
Спасибо большое, все заработало! Мне нужно подключить "кнопку" для вкл/выкл 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

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

Не надо путать обработку и тупую логику.
Алгоритмы обработки будут совершенствоваться бесконечно.

А ПЛК иногда выполняют настолько простые операции,
что эти "умные прослойки" что серпом по...

Типа, "помогают пользователям".

Вот "почему". :)

In_Da_Cher_A
05.03.2023, 18:58
вы опять мыслите прежними шаблонами
нет никакой прослойки
есть программа со своим UI и есть конкретный ПЛК, со своими "принципами" работы с ним

ПавелП
06.03.2023, 08:30
вы опять мыслите прежними шаблонами
нет никакой прослойки
есть программа со своим UI и есть конкретный ПЛК, со своими "принципами" работы с ним
>> вы опять мыслите прежними шаблонами

Большая просьба - не переходите на личности.

>> нет никакой прослойки
>> есть программа

:)

1exan
06.03.2023, 08:45
Плохо дело.
Эти посредники создают софт-прослойку между железом и пользователями.
Громкие сочные рассказы о пользе - реклама денег заработать.

Не так часто надо переползать на другие ПЛК - раз можно и прописать... :(

Out1P1 AT %QW6.1.3.0 :WORD; (* первый ПР200 вых 1 *)
Out2P1 AT %QW6.1.4.0 :WORD; (* первый ПР200 вых 2 *)

Если не указано в конфигурации - сетевые не объявить как глобальные переменные.
Не объявить их сетевой адрес. Только долбать таблицу...

Ничего не понял про прослойку.
Не хотите через конфигурацию - используйте библиотеки (ModbusSlave - вроде де есть такое).
Но для слейва - использование конфигурации гораздо удобнее и проще.

ПавелП
06.03.2023, 10:06
Ничего не понял про прослойку. Это когда не напрямую управляешь железом,
а ещё и дополнительным софтом правила вводятся, нагромождая некие "стандарты" и "удобства".


Не хотите через конфигурацию - используйте библиотеки (ModbusSlave - вроде де есть такое).
Но для слейва - использование конфигурации гораздо удобнее и проще.

Нашёл OwenModbuSlave:
Библиотека OwenModbusSlave применяется для настройки ОВЕН ПЛК в режиме Modbus RTU
Slave. В отличие от настройки прибора через Конфигурацию ПЛК данный способ предоставляет более
широкий функционал и является удобным при работе с большим количеством переменных.

Спасибо за подсказку. Посмотрим! :)

1exan
06.03.2023, 11:46
Это когда не напрямую управляешь железом,
а ещё и дополнительным софтом правила вводятся, нагромождая некие "стандарты" и "удобства".



Нашёл OwenModbuSlave:
Библиотека OwenModbusSlave применяется для настройки ОВЕН ПЛК в режиме Modbus RTU
Slave. В отличие от настройки прибора через Конфигурацию ПЛК данный способ предоставляет более
широкий функционал и является удобным при работе с большим количеством переменных.

Спасибо за подсказку. Посмотрим! :)

Около 500 слейв-регистров - проблем при использовании конфигурации не замечено.
Необходимости в доп.функционале тоже не возникало

capzap
06.03.2023, 12:11
В отличие от настройки прибора через Конфигурацию ПЛК данный способ предоставляет более
широкий функционал и является удобным при работе с большим количеством переменных.

как может быть удобным трата целой строки кода на дополнительное прописывание переменной через АТ? А если копипаст и забывчивость/невнимательность программиста, компиляция пройдет успешно, а реальная установка кому нибудь руку оторвет
В конфигураторе только имена подставлять, весь этот код через АТ автоматом прописывается
И уж еще раз про удобство методов а что Вы видели кроме документа первые шаги?
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
>> вы опять мыслите прежними шаблонами

Большая просьба - не переходите на личности.

>> нет никакой прослойки
>> есть программа

:)да я не перехожу никуда
ассемблер ваше фсё, развлекайтесь

ПавелП
07.03.2023, 18:55
Около 500 слейв-регистров - проблем при использовании конфигурации не замечено.
Необходимости в доп.функционале тоже не возникало
Дело не в проблемах, а в спрятанных настройках.
Строка видна, 20 строк - 20 регистров.
Через Конфигурацию ПЛК "побегай" по 20 регистрам, щёлкая мышкой,
чтоб глянуть их параметры - задолбаешься.

Очевидно - нагляднее и удобнее.

Но явно - каждому своё! :)

ПавелП
07.03.2023, 18:59
как может быть удобным трата целой строки кода на дополнительное прописывание переменной через АТ? Я ответил на это выше.


А если копипаст и забывчивость/невнимательность программиста, компиляция пройдет успешно, а реальная установка кому нибудь руку оторвет Ого аргумент...
А Конфигурацию ПЛК используют, и руки не отрываются, не бывает ошибок - волшебство! :)

ПавелП
07.03.2023, 19:02
да я не перехожу никуда
ассемблер ваше фсё, развлекайтесь Если точно - то в строке не могу указать значение регистра.

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-файлудостаточно только скорректировать адреса.

Не убавить, не прибавить.

capzap
07.03.2023, 21:50
Я ответил на это выше.

Ого аргумент...
А Конфигурацию ПЛК используют, и руки не отрываются, не бывает ошибок - волшебство! :)

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

ПавелП
07.03.2023, 23:12
Вы решили что хихикать это что то поменяет, прибавить Вам веса. Просто логически где и у кого будет больше ошибок, кто помимо конфигурации ещё и некий файл правит или только конфигурацию. Ну не хотите , не прислушивайтесь к советам более опытных. Ждём когда Вы будете давать полезные советы по работе с плк Не могли бы вы чётко ответить на вопрос, который мне был задан, про отрывание рук?
Каким образом файл конфигурации защитит от ошибок "кривые руки"???
А объявление глобальных переменных разрушит эту защиту?

Я же привёл железобетонный аргумент:
1. Текстовый файл весь на виду - каждая строчка.
2. Конфигурационный скрыт, и надо "рыскать" по нему, для оценки КАЖДОЙ НАСТРОЙКИ.

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

Я же не требую/заставляю менять, а аргументированно обсуждаю очевидно более простой вариант.

Я в прямом смыслке "намудохался" с файлом конфигурации, и когда набрался опыта, то понял что это "шляпа",

Или - это была попытка сделать удобнее, но не получилась у фирмы... :(

А то что некоторые привыкли к ЭТОМУ - так мой вопрос был про альтернативу РАБОЧУЮ и УДОБНУЮ.

Я перечитываю мануал, и вижу замкнутость этой среды программирования.
Так решили авторы.
Но вижу и возможности более эффективно работать в этой системе.

И только. Никаких "священых войн"!!! :)

Кстати. Очень благодарен за "проявление" моих вопросов по теме.
Это очень сильно помогает!

capzap
08.03.2023, 09:16
Текстовый файл весь на виду - каждая строчка.это дополнительный файл, конфигурация всё равно должна прописываться, вероятность ошибок увеличивается от объема кода, это законы статистики, как с этим можно спорить?

Конфигурационный скрыт, и надо "рыскать" по нему, для оценки КАЖДОЙ НАСТРОЙКИа зачем искать там какие то настройки, в допфайле Вы просто присваиваете переменной адрес той области памяти которую среда разработки выделила после добавления в конфигурацию некой сущности. И, кстати, как Вы это делаете: лезете в конфигурацию, берете как минимум первый адрес и вставляете в созданный список глобальных переменных, далее либо копипастите, либо снова заглядываете в конфигурацию и прописываете очередной адрес. А можно просто присвоить имя в кнфиге и всё, хочется ручками поработать, для этого есть огород ну или у кого какие предпочтения

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

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

kondor3000
08.03.2023, 09:47
Человек просто упёрся рогом и сидит 2 недели ковыряя конфигурацию. Перенос с помощью программы занимает не больше минуты.
Не хочет слушать, как можно сделать быстро и просто, не зачем и объяснять.
За это время, можно было уже освоить несколько приёмов, вообще номинально не используя конфигурацию. Каждому своё.
Новички вообще без подготовки, обмен через библиотеки успевали освоить.

1exan
08.03.2023, 10:08
Дело не в проблемах, а в спрятанных настройках.
Строка видна, 20 строк - 20 регистров.
Через Конфигурацию ПЛК "побегай" по 20 регистрам, щёлкая мышкой,
чтоб глянуть их параметры - задолбаешься.

Очевидно - нагляднее и удобнее.

Но явно - каждому своё! :)

Так и не понял, зачем туда "бегать" и какие параметры там смотреть

ПавелП
08.03.2023, 14:11
Человек просто упёрся рогом и сидит 2 недели ковыряя конфигурацию. Перенос с помощью программы занимает не больше минуты.
Не хочет слушать, как можно сделать быстро и просто, не зачем и объяснять.
За это время, можно было уже освоить несколько приёмов, вообще номинально не используя конфигурацию. Каждому своё.
Новички вообще без подготовки, обмен через библиотеки успевали освоить.

Я всё и освоил.

И определил оптимальный вариант для себя.

Не надо меня загонять в рамки неких стандартов.

Я же этого от других не требую!!!

Я всех выслушал, и пробую.

Что не так???

ПавелП
08.03.2023, 14:19
это дополнительный файл, конфигурация всё равно должна прописываться, вероятность ошибок увеличивается от объема кода, это законы статистики, как с этим можно спорить?
Ага. Переменные в вашей программе не прописываются. :)
А конфиг программу не увеличивает... Законы статистики?


а зачем искать там какие то настройки, в допфайле Вы просто присваиваете переменной адрес той области памяти которую среда разработки выделила после добавления в конфигурацию некой сущности. И, кстати, как Вы это делаете: лезете в конфигурацию, берете как минимум первый адрес и вставляете в созданный список глобальных переменных, далее либо копипастите, либо снова заглядываете в конфигурацию и прописываете очередной адрес. А можно просто присвоить имя в кнфиге и всё, хочется ручками поработать, для этого есть огород ну или у кого какие предпочтения Посчитайте сколько движений вы описали...
И это вместо одной строчки глобальной переменной.


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

ПавелП
08.03.2023, 14:26
Завтраки женам успели приготовить ? Я вот даже мусор вынес. Сегодня актуально! :)


Огромный минус если платят - за строки. За строки кода? Маразм...
Зачем работать на такие конторы... Рабство в чистом виде.
Там где работает маркетинг, программистам нечего делать в этой грязи.

Для меня реализация цельного проекта - это интересно!
Ну и оплата по результату. Сртемимся к идеалу. :)

ПавелП
08.03.2023, 14:28
Так и не понял, зачем туда "бегать" и какие параметры там смотреть

Это программирование называется! :)

А у вас это что?

ПавелП
10.03.2023, 22:43
Привет всем.

Использовал для лог-файла Модуль «Archiver» (Архиватор) в ПЛК160.
Подскажите, как надо сделать, чтоб заработало: (всё создано в конфигурации :)

– By command (по команде) – если в переменной Status модуля архивации записана специальная команда, то происходит старт архивации, либо ее остановка (0x00FE –«стоп», 0x00FF – «старт»)
Status :=255;
Status назвал, присвоил 255 - не пишет в файл.
Пробовал 0x00FF - пытается это объявить как переменную.
и не понятно, сколько надо ждать, чтоб все 16 переменных записались, и остановить запись.

Эти команды выполняются нормально:

By timer (по таймеру) – данные записываются в архив с заданным периодом архивации, значение по умолчанию;
By change value (по изменению значений) – если какая-то переменная, включенная в список архивации, меняет свое значение, то происходит ее архивация,
причем только этой переменной.
Правда, тут сохраняются все переменные - но что, в итоге, мне и надо. :)

Duvall
13.03.2023, 11:16
Здравствуйте, такой вопрос есть датчик(который работает с таймером) и кнопка. Если вкл от кнопки, то свет будет гореть, пока повторно не нажать, а если датчик работает и при этом нажать на кнопку, то выкл.
66452

kondor3000
13.03.2023, 11:23
Здравствуйте, такой вопрос есть датчик(который работает с таймером) и кнопка. Если вкл от кнопки, то свет будет гореть, пока повторно не нажать, а если датчик работает и при этом нажать на кнопку, то выкл.
66452

А вопрос то в чём?

Dimensy
13.03.2023, 11:26
Здравствуйте, такой вопрос есть датчик(который работает с таймером) и кнопка. Если вкл от кнопки, то свет будет гореть, пока повторно не нажать, а если датчик работает и при этом нажать на кнопку, то выкл.
66452

Так, а что надо?

Duvall
13.03.2023, 11:40
А вопрос то в чём?

Реализовать, он работает без таймера, а как обычная кнопка

Duvall
13.03.2023, 11:41
Так, а что надо?

работает без таймера

In_Da_Cher_A
13.03.2023, 11:43
Реализовать, он работает без таймера, а как обычная кнопкареализуйте :D
то, что на картинке - это что и как отношается к вопросу?

Duvall
13.03.2023, 11:49
реализуйте :D
то, что на картинке - это что и как отношается к вопросу?

мой вариант, который не работает

In_Da_Cher_A
13.03.2023, 12:31
мой вариант, который не работаетвы не хотите рассказать, что собственно и как вы делали в своём варианте?
почему поставили тот или иной блок? для чего?
почему вход rst на каком-то блоке switch1_129 - висит в воздухе и на него нет никакого воздействия, а?
почему порядок обработки блоков стоит - через задницу
что это за блок кстати и откуда он взялся, из какой бибилотеки?
было бы неплохо увидеть ваши рассуждения
простой алгоритм, ничего сверхъестественного нет, просто надо немного подумать
а пока всё это выглядит как "сделайте за меня"

Dimensy
13.03.2023, 13:58
мой вариант, который не работает

Возможно, вы такой вариант имели ввиду

66465

Только, обязательно соблюдайте порядок блоков как на картинке

kondor3000
13.03.2023, 14:07
Как я понял, включать надо по кнопке, а выключать по таймеру, с задержкой, тогда так 66466

Duvall
14.03.2023, 11:55
Есть включатель, а есть датчик. Они включают одно и тоже, только датчик работает по таймеру(прошли, горит 5 секунд после того, как пропало движение), а включатель пока повторно не нажать.

petera
14.03.2023, 12:08
Есть включатель, а есть датчик. Они включают одно и тоже, только датчик работает по таймеру(прошли, горит 5 секунд после того, как пропало движение), а включатель пока повторно не нажать.
Так бы сразу и сказал..
66489

Duvall
14.03.2023, 15:11
Так бы сразу и сказал..
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, открываете справку и читаете про Типы Данных, про Функциональные блоки ФБ(типа макросы) и про импорт, экспорт блоков.
Напрмер таймеры это тоже функц. блоки, только библиотечные. Вы можете создать свой ФБ с нужными входами, выходами и так же как таймер поставить на поле и использовать.

petera
15.03.2023, 10:05
Например в панели вы поставили экспорт времени в 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 формат полученных данных верно.

Duvall
15.03.2023, 15:34
Так бы сразу и сказал..
66489

А если будет 1 кнопка, работающая как свитч, 1 раз нажал вкл, 2 раз нажал выкл. и запустился таймер. Чтобы после выключения запускался таймер.

kondor3000
15.03.2023, 15:43
А если будет 1 кнопка, работающая как свитч, 1 раз нажал вкл, 2 раз нажал выкл. и запустился таймер. Чтобы после выключения запускался таймер.

Вы можете толком объяснять, что вам это надо?
1 раз нажал вкл, 2 раз нажал выкл. , а таймер что включать должен? Опять тот же выход, который вы только отключили ?

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

Duvall
15.03.2023, 16:35
Вы можете толком объяснять, что вам это надо?
1 раз нажал вкл, 2 раз нажал выкл. , а таймер что включать должен? Опять тот же выход, который вы только отключили ?

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

Оба варианта правильные, один с одной кнопкой ваш, и второй с двумя petera. Спасибо.

Alexandr88
15.03.2023, 22:39
Всем большое спасибо, все получилось.
Единственное, еще не разобрался по написанию функциональных блоков, я так понял на языке CFC примера нет в мануале? как создать функциональный блок, а то я пока разбираюсь в CFC языке в другие не лезу...