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

ПавелП
16.03.2023, 00:08
Привет всем.

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

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

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

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



Сам же и отвечу. Уже 4 дня всё работает нормально.

Проверил - работает Status :=255; пишет переменные в файл.
Сразу чтение Status ещё 255,
и сразу второй раз чтение Status уже =1.
Фактические это флаг выполнения операции записи переменных в файл.

In_Da_Cher_A
16.03.2023, 08:06
Всем большое спасибо, все получилось.
Единственное, еще не разобрался по написанию функциональных блоков, я так понял на языке CFC примера нет в мануале? как создать функциональный блок, а то я пока разбираюсь в CFC языке в другие не лезу...ээээээ даже не знаю как сказать
вы понимаете, то что прочитали? что вам вчера написали?

откройте документацию на CoDeSys 2.3 "Руководство пользователя по программированию ПЛК в CoDeSys 2.3"
и начните читать. На первых же страницах вы увидите в пункте 2 документации следующий текст

ВАШ функциональный блок - это такой же программный компонент.
как его делать и что с ним делать - откройте документацию и в разделе 3, где описан пример "Блок управления светофором" - выполните этот пример и все вопросы "как работать в Кодесис?" - пропадут.или вы принципиально не читаете ничего, а занимаетесь попрошайничеством на форумах? чтобы за вас всё сделали, разжевали и в рот положили?
66547

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

В Левой колонке где PLC_PRG, нажмите правую кнопку мыши Добавить объект и выберете функц. блок, дайте ему имя и выберете язык CFC, потом ОК.
или Воспользуйтесь командой Проект/ Объект / Добавить и выберете функц. блок

Для вызова блока, надо на поле поставить элемент и дать ему имя вашего блока, а так же сверху дать ему имя с номером, например 1,66549
это будет первый экземпляр вашего блока.

RomeoVar
16.03.2023, 21:43
Знатоки подскажите
Использую овеновскую библиотеку OwenCommunication для обмена с девайсом по RS485
ОТслеживая результаты обмена обратил внимание что периодически возникают ошибки CRC (RESPONSE_CRC_FAIL 60 Ошибка CRC ) . Других ошибок не возникает практически никогда.
Я так понимаю что целостность данных но каких? Вроде у меня все данные корректные приходят.
Но стандарт MODBUS сам должен обрабатывать ошибку CRC (повторной передачей)
Что это за ошибка и как ее правильно интерпретировать?
Блок вызывается примерно с такими входными параметрами:

fbSerialRequest
(
xExecute := TRUE,
hCom := hCom,
tTimeout := T#100MS,
usiRetry := 3,
xIsAsciiMode:= FALSE,
usiSlaveId := fbAxisDrives[iAxisIndex].usiSlaveId,
eFuncCode := fbAxisDrives[iAxisIndex].stStack.eFuncCode,
uiDataAddr:= fbAxisDrives[iAxisIndex].stStack.uiDataAddr,
uiDataCount := fbAxisDrives[iAxisIndex].stStack.uiDataCount,
pData := fbAxisDrives[iAxisIndex].stStack.pData,
szSize := fbAxisDrives[iAxisIndex].stStack.szSize
);

capzap
16.03.2023, 22:04
Знатоки подскажите
Использую овеновскую библиотеку OwenCommunication для обмена с девайсом по RS485
ОТслеживая результаты обмена обратил внимание что периодически возникают ошибки CRC (RESPONSE_CRC_FAIL 60 Ошибка CRC ) . Других ошибок не возникает практически никогда.
Я так понимаю что целостность данных но каких? Вроде у меня все данные корректные приходят.
Но стандарт MODBUS сам должен обрабатывать ошибку CRC (повторной передачей)
Что это за ошибка и как ее правильно интерпретировать?
Блок вызывается примерно с такими входными параметрами:

fbSerialRequest
(
xExecute := TRUE,
hCom := hCom,
tTimeout := T#100MS,
usiRetry := 3,
xIsAsciiMode:= FALSE,
usiSlaveId := fbAxisDrives[iAxisIndex].usiSlaveId,
eFuncCode := fbAxisDrives[iAxisIndex].stStack.eFuncCode,
uiDataAddr:= fbAxisDrives[iAxisIndex].stStack.uiDataAddr,
uiDataCount := fbAxisDrives[iAxisIndex].stStack.uiDataCount,
pData := fbAxisDrives[iAxisIndex].stStack.pData,
szSize := fbAxisDrives[iAxisIndex].stStack.szSize
);

https://owen.ru/forum/showthread.php?t=23897&page=98&p=403667&viewfull=1#post403667 это не помогает? Свежее вроде

kondor3000
16.03.2023, 22:19
Знатоки подскажите
Использую овеновскую библиотеку OwenCommunication для обмена с девайсом по RS485
ОТслеживая результаты обмена обратил внимание что периодически возникают ошибки CRC (RESPONSE_CRC_FAIL 60 Ошибка CRC ) . Других ошибок не возникает практически никогда.
Я так понимаю что целостность данных но каких? Вроде у меня все данные корректные приходят.
;

Почему вы упорно задаёте вопросы по Codesys 3.5, в разделе по Codesys 2.3 ?

Alexandr88
16.03.2023, 22:24
ээээээ даже не знаю как сказать
вы понимаете, то что прочитали? что вам вчера написали?
или вы принципиально не читаете ничего, а занимаетесь попрошайничеством на форумах? чтобы за вас всё сделали, разжевали и в рот положили?
66547

Вам тож же спасибо, я читал , но там нет примера как показал kondor3000, ему ОГРОМНОЕ СПАСИБО, то что показали вы я это делал даже без инструкции, но у меня почемуто не получились входы выходы в функциональном блоке ( который создал я)!
Зачем тратить свое время в данной ленте и гнобить новичков? (можете не отвечать)! )

RomeoVar
16.03.2023, 22:29
Да, у меня стоит время цикла 5 мс. И при таком времени цикла у меня период на чтение/блока регистров 35-40 мс. Эта ошибка в основном возникает только при чтении READ ONLY регистров (что в общем-то не очень критично)
Я попробовал поставить 10 мс. Сразу время одного чтения/записи возросло до 70, и ошибки не исчезли. При 20 мс. вообще начинает глючить прога, слишком медленно приходят данные.

RomeoVar
16.03.2023, 22:33
Сорян
блин

In_Da_Cher_A
17.03.2023, 00:09
Вам тож же спасибо, я читал , но там нет примера как показал kondor3000,
Теперь создайте еще три объекта. Воспользуйтесь командой ‘Проект’ ‘Объект - Добавить’ ("Project" "Object Add") в системном или в контекстном (нажмите правую кнопку мыши в Организаторе
объектов) меню. Создайте: программу на языке Sequential Function Chart (SFC) с именем
SEQUENCE, функциональный блок на языке Function Block Diagram (FBD) с именем
TRAFFICSIGNAL и еще один аналогичный блок - WAIT, который мы будем описывать на языке
Список Инструкции (IL).

в документации приведено ДВА (ДВА!!!!) примера создания СВОИХ блоков, на разных языках
даны картинки
66567
и чем вот эта картинка принципиально отличается от языка CFC?
66568

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

ПавелП
28.03.2023, 14:49
Привет всем!
Подскажите, как на ST переключать визуализацию по переменной CurrentVisu?
Создано два окна, но CurrentVisu не реагирует, только отображает, что в неё записано.

В таргет ПЛК160-M v2
Настройка целевой платформы > визуализация
опция "Активировать системную перем-ю "CurrentVisu" не активна.

И ещё CoDeSysHMI.exe не запускает
"C:\Program Files (x86)\3S Software\CoDeSys V2.3\CoDeSysHMI\CoDeSysHMI.exe" /target M1.pro /visu overview
выдаёт:
The project does not contain a visualization PLC_VISU
( Проект не содержит визуализации PLC_VISU ).

Николай Суриков
28.03.2023, 14:55
Привет всем!
Подскажите, как на ST переключать визуализацию по переменной CurrentVisu?
Создано два окна, но CurrentVisu не реагирует, только отображает, что в неё записано.

В таргет ПЛК160-M v2
Настройка целевой платформы > визуализация
опция "Активировать системную перем-ю "CurrentVisu" не активна.

И ещё CoDeSysHMI.exe не запускает
"C:\Program Files (x86)\3S Software\CoDeSys V2.3\CoDeSysHMI\CoDeSysHMI.exe" /target M1.pro /visu overview
выдаёт:
The project does not contain a visualization PLC_VISU
( Проект не содержит визуализации PLC_VISU ).

Создаете объект "Кнопка" -> Ввод -> Галочку на Переход в виз. -> В поле ввода через F2 указываете визуализацию для перехода.
66819

ПавелП
28.03.2023, 17:43
Создаете объект "Кнопка" -> Ввод -> Галочку на Переход в виз. -> В поле ввода через F2 указываете визуализацию для перехода.
66819
Связал три визуализации - с кнопок всё перескакивает!!!
Спасибо! :)

А переменная CurrentVisu в моём ПЛК160 не работает?
Или как переключать из программы?

kondor3000
28.03.2023, 18:56
А переменная CurrentVisu в моём ПЛК160 не работает?
Или как переключать из программы?

Можно сделать визу невидимой и включать по биту из программы. По другому никак не выйдет.

ПавелП
28.03.2023, 19:21
Можно сделать визу невидимой и включать по биту из программы. По другому никак не выйдет.
Похоже, так и придётся сделать...
Хороший вариант. Спасибо! :)

m.yaasee
29.03.2023, 09:49
Добрый день товарищи. Нужно автоматизировать работу 8 насосов, разделенных на 4 группы(2 насоса в группе соответственно). Перед каждым насосом стоят датчики перепада давления. Нужно настроить ротацию насосов(раз в сутки) и, сделать так, чтобы после ротации насос включился, создал перепад, датчик перепада замкнулся ну и соответственно насос перешел под его ''защиту''

kondor3000
29.03.2023, 10:00
Добрый день товарищи. Нужно автоматизировать работу 8 насосов, разделенных на 4 группы(2 насоса в группе соответственно). Перед каждым насосом стоят датчики перепада давления. Нужно настроить ротацию насосов(раз в сутки) и, сделать так, чтобы после ротации насос включился, создал перепад, датчик перепада замкнулся ну и соответственно насос перешел под его ''защиту''

Нужно, так делайте. Выкладывайте проект и задавайте конкретные вопросы по работе.

m.yaasee
29.03.2023, 10:03
Конкретный вопрос. Как автоматизировать работу так, чтобы насос сначала включился сам и создал перепад, а потом при замыкании датчика перепада перешел под его контроль

Dimensy
29.03.2023, 11:27
Конкретный вопрос. Как автоматизировать работу так, чтобы насос сначала включился сам и создал перепад, а потом при замыкании датчика перепада перешел под его контроль

Вы это имели ввиду?

66842

ПавелП
29.03.2023, 11:40
Добрый день товарищи. Нужно автоматизировать работу 8 насосов, разделенных на 4 группы(2 насоса в группе соответственно). Перед каждым насосом стоят датчики перепада давления. Нужно настроить ротацию насосов(раз в сутки) и, сделать так, чтобы после ротации насос включился, создал перепад, датчик перепада замкнулся ну и соответственно насос перешел под его ''защиту''
Под какое устройство управления ПЛК, ПР?

west
29.03.2023, 21:30
Конкретный вопрос. Как автоматизировать работу так, чтобы насос сначала включился сам и создал перепад, а потом при замыкании датчика перепада перешел под его контроль
Лишь для примера.
https://asutp-volgograd.com/blog/pumps-codesys.html

In_Da_Cher_A
30.03.2023, 00:04
Конкретный вопрос. Как автоматизировать работу так, чтобы насос сначала включился сам и создал перепад, а потом при замыкании датчика перепада перешел под его контрольпереведите на русский технический язык - чтобы насос сначала включился сам что это такое в вашем понимании? насос наделён разумом и сам хочет работает, хочет отдыхает? мы чего-то не знаем или Скайнет реально существует?
далее

при замыкании датчика перепада перешел под его контрольай луз контроул уэн ю лук эт ми лайк зис ....что-то навеяло :D


Как автоматизировать работу так, чтобы.....краткое перечисление всех хотелок заказчиканадо написать такой алгоритм автоматизации работы, чтобы все написанное курсивом, работало.
Поэтому конкретный ответ на

конкретный вопрос такой - "если надо что-то сделать, значит надо что-то сделать"
откройте документацию на кодесис и начните с выполнения того примера по управлению светофором
откройте любое обучающее видео по кодесис от овен и начните повторять то, что делают в видео
там такие же простейшие примеры
после этого попробуйте нарисовать свой алгоритм в классическом виде
66859
после этого попробуйте нарисовать свой алгоритм функциональными блоками
делайте, учитесь думать сами, это не ЕГЭ, списать не получится

m.yaasee
30.03.2023, 08:55
переведите на русский технический язык - чтобы насос сначала включился сам что это такое в вашем понимании? насос наделён разумом и сам хочет работает, хочет отдыхает? мы чего-то не знаем или Скайнет реально существует?
далее
ай луз контроул уэн ю лук эт ми лайк зис ....что-то навеяло :D

надо написать такой алгоритм автоматизации работы, чтобы все написанное курсивом, работало.
Поэтому конкретный ответ на
такой - "если надо что-то сделать, значит надо что-то сделать"
откройте документацию на кодесис и начните с выполнения того примера по управлению светофором
откройте любое обучающее видео по кодесис от овен и начните повторять то, что делают в видео
там такие же простейшие примеры
после этого попробуйте нарисовать свой алгоритм в классическом виде
66859
после этого попробуйте нарисовать свой алгоритм функциональными блоками
делайте, учитесь думать сами, это не ЕГЭ, списать не получится



Я что-то не понимаю. Тут вопрос-ответ или конкурс на лучший стеб. ''Чтобы насос включился сам''. Как тут еще можно понять со стороны технического языка автоматизации? Это значит, что насос должен включиться без какой либо защиты изначально(его защита - реле перепада). Он же должен толкнуть воду, чтобы создать перед и после себя перепад давления. А что потом? А потом датчик перепада замкнет контакты. Сигнал придет на ПР.
Так вот нужна схема, которая толкнет насос на условные 5 секунд, если реле перепада сработает и замкнет контакт - насос остается в работе, если нет, включиться в работу пробует второй насос по такому принципу. Всего насосов 8, поделены на 4 группы, по 2 на каждую соответственно. При этом в этих группах должна быть и ротация, и видимость аварии.

m.yaasee
30.03.2023, 08:57
Лишь для примера.
https://asutp-volgograd.com/blog/pumps-codesys.html

Ссылка не работает. ''Страница не может быть отражена''

m.yaasee
30.03.2023, 08:58
Под какое устройство управления ПЛК, ПР?

Это под ПР. Поздно заметил, что это тема не про ПР, зашел и написал потому что называется ''вопрос-ответ''. Потом уже как удалить сообщение не нашел

1exan
30.03.2023, 09:12
Я что-то не понимаю. Тут вопрос-ответ или конкурс на лучший стеб. ''Чтобы насос включился сам''. Как тут еще можно понять со стороны технического языка автоматизации? Это значит, что насос должен включиться без какой либо защиты изначально(его защита - реле перепада). Он же должен толкнуть воду, чтобы создать перед и после себя перепад давления. А что потом? А потом датчик перепада замкнет контакты. Сигнал придет на ПР.
Так вот нужна схема, которая толкнет насос на условные 5 секунд, если реле перепада сработает и замкнет контакт - насос остается в работе, если нет, включиться в работу пробует второй насос по такому принципу. Всего насосов 8, поделены на 4 группы, по 2 на каждую соответственно. При этом в этих группах должна быть и ротация, и видимость аварии.

У вас спрашивают: каким образом запускаются ваши насосы - сразу после подачи питания на ПР или по какому то сигналу?

Есть ещё много вопросов:
- как выбираются насосы, участвующие в работе/исключаются из работы?
- каким образом производится сброс аварии?
- как связаны между собой группы насосов и зачем вообще это разбиение?

А обход датчика перепада, про который вы спрашиваете - это как раз самое простое в этой задаче

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

m.yaasee
30.03.2023, 09:24
У вас спрашивают: каким образом запускаются ваши насосы - сразу после подачи питания на ПР или по какому то сигналу?

Есть ещё много вопросов:
- как выбираются насосы, участвующие в работе/исключаются из работы?
- каким образом производится сброс аварии?
- как связаны между собой группы насосов и зачем вообще это разбиение?

А обход датчика перепада, про который вы спрашиваете - это как раз самое простое в этой задаче

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

По сигналу

По форуму искал - не нашел

1exan
30.03.2023, 09:29
По сигналу

По форуму искал - не нашел

Поиск (https://owen.ru/forum/search.php?searchid=4476782&pp=)
_____

capzap
30.03.2023, 09:41
Я по вашему не нашел строку ''Поиск'' на форуме?

складывается впечатление что нет 66861

In_Da_Cher_A
30.03.2023, 09:45
Я что-то не понимаю. Тут вопрос-ответ или конкурс на лучший стеб. ''Чтобы насос включился сам''. Как тут еще можно понять со стороны технического языка автоматизации? Это значит, что насос должен включиться без какой либо защиты изначально(его защита - реле перепада). Он же должен толкнуть воду, чтобы создать перед и после себя перепад давления. А что потом?
я тоже не понимаю - это вообще форум про конкретные контроллеры и конкретную среду программирования Кодесис 2.3, куда приходят какие-то странные товарищи с банальными вопросами общего порядка по информатике школьного курса,
не относящиеся ни к контроллерам, ни к среде программирвоания
дословно ваше описание звучит так - мне надо чтобы машина поехала со скоростью 100 км/ч, мне нужна программа
нужна - так делайте.
Вы же не делаете ничего вообще, тупо требуете чтобы за вас сделали готовый достаточно сложный алгоритм, а вы тупо спишете
месяц назад вы уже котельную таким образом автоматизировали, как результат?
за месяц уже спокойно можно было пересмотреть тонну обучающих видео и уж элементарные вопросы про уставку по давлению сами бы сделали



Так вот нужна схема, которая толкнет насос на условные 5 секунд, если реле перепада сработает и замкнет контакт - насос остается в работе, если нет, включиться в работу пробует второй насос по такому принципу. Всего насосов 8, поделены на 4 группы, по 2 на каждую соответственно. При этом в этих группах должна быть и ротация, и видимость аварии.и ротация и видимость аварии и архив событий и отправка смс и много чего ещё скоро появится:D
делайте схему. Как? - выше написано

ПавелП
30.03.2023, 10:16
По сигналу

( из школьной программы )

Дано:
1. тип контроллера
2. чем управлять
3. что надо от этого :)

1. Ответ будет - ссылка на форум по теме.
2. Ссылка на готовое похожее решение.
3. Или различный флейм не по теме! :)

Выберите правильные пункты.

ПавелП
30.03.2023, 10:42
Привет всем!

ПЛК160 аналоговые входы
переменные Real автоматом назначены
Подаю на АЦП +5.15в, получаю значение 1030.
Читаю мануал - нет про это удвоение.
Делаю ADC8/2/1000 - получаю то что надо.

В ПЛК160 вообще намудрили с АЦП,
пишут, что только напряжение меряет.

И ещё
AI read time (10ms) - не совсем понятно что считает беспрерывно.

kondor3000
30.03.2023, 11:24
Привет всем!

ПЛК160 аналоговые входы
переменные Real автоматом назначены
Подаю на АЦП +5.15в, получаю значение 1030.
Читаю мануал - нет про это удвоение.
Делаю ADC8/2/1000 - получаю то что надо.

В ПЛК160 вообще намудрили с АЦП,
пишут, что только напряжение меряет.

И ещё
AI read time (10ms) - не совсем понятно что считает беспрерывно.

Прямо детский сад, что стоит в настройках входа? По умолчанию 0-20 мА, для 0-10 В надо изменить 20 на 10, ВСЁ !!!

ПавелП
30.03.2023, 11:42
Прямо детский сад, что стоит в настройках входа? По умолчанию 0-20 мА, для 0-10 В надо изменить 20 на 10, ВСЁ !!!
Так не работает. :)

В моём садике воспиталка злая... :(

PichBah
30.03.2023, 13:03
Добрый день, расскажите про энерго не зависимые переменные в Кодесис 2,3.
Для моего устройства необходимо хранить некоторые значения,
такие как время задержки и частота Частотного преобразователя.
Сейчас эти значения меняю вручную, во время отладки, переменные обьявлены внутри VAR RETAIN END_VAR,
в будущем планирую использовать ип120 или ип320 для изменения их значений.
Проблема в том что при запуске программы с ПК через меню "Онлайн" программа работает корректно,
но при запуске при помощи переключателя на панели ПЛК, программа ведет себя не адекватно.
Но если эти переменные объявить внутри VAR END_VAR все работает корректно.

kondor3000
30.03.2023, 13:14
Добрый день, расскажите про энерго не зависимые переменные в Кодесис 2,3.
Для моего устройства необходимо хранить некоторые значения,
такие как время задержки и частота Частотного преобразователя.
Сейчас эти значения меняю вручную, во время отладки, переменные обьявлены внутри VAR RETAIN END_VAR,
в будущем планирую использовать ип120 или ип320 для изменения их значений.
Проблема в том что при запуске программы с ПК через меню "Онлайн" программа работает корректно,
но при запуске при помощи переключателя на панели ПЛК, программа ведет себя не адекватно.
Но если эти переменные объявить внутри VAR END_VAR все работает корректно.

Всё зависит от программы, как у вас не известно. Можно и не объявлять RETAIN переменные, а просто добавить их в конфигурацию слейва,
там все переменные по умолчанию глобальные и RETAIN.
Если ПЛК мастер, можно сделать начальную инициализацию.
А вообще надо выкладывать проект или хотя бы скрины.

In_Da_Cher_A
30.03.2023, 13:51
Для моего устройства необходимо хранить некоторые значения,
такие как время задержки и частота Частотного преобразователя.
Сейчас эти значения меняю вручную, во время отладки, переменные обьявлены внутри VAR RETAIN END_VAR,
скорее всего - поэтому всё неправильно и работает

такие как время задержки и частота Частотного преобразователя.которые вы получаете по модбас вероятно
а переменные "внутри" конфигурации уже являются RETAIN, поэтому всё зависит от того, как вы их "вручную" меняете и что с ними дальше делаете.
Если у вас нет железа, то правильнее не делать какую-то псевдоимитацию обмена внутри плк, а нормально делать внешней программой обмен по сети.

kondor3000
30.03.2023, 14:03
Так не работает. :)

В моём садике воспиталка злая... :(

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

PichBah
30.03.2023, 14:11
Вы не правильно поняли. Ни какой имитации нет. Сейчас значение переменных меняю в режиме "Онлайн" из Кодесис. Проблема в том что программа по разному ведет себя при запуске с ПК и самостоятельном запуске. Если эти переменные
Pallet_run_length:WORD:= 2360; (*Длина пробега поддона*)
Braking_distance:WORD:=150; (*Расстояние торможения*)
Network_delay_time: TIME := T#250ms; (*время на задержку сети 485*)
High_frequencyPCH3:WORD := 650; (*высокая скорость линии*)
low_frequencyPCH3:WORD := 200; (*низкая скорость линии*)
strike_holding_time: TIME := T#150ms; (*время удержания удара*)
объявить как локальные VAR то все работает нормально. Если их объявить как RETAIN программа перестает верно считать
Run_time_at_high_speed := REAL_TO_TIME ((Pallet_run_length - Braking_distance) / (High_frequencyPCH3 * 5.42814737) * 10000) - Network_delay_time;
(Это мое предположение), из за чего таймер High_speed_timer_TP : TP; (*таймер высокой скорости*) не останавливается.
При этом если этот же код запустить с ПК, он нормально работает.

kondor3000
30.03.2023, 14:23
объявить как локальные VAR то все работает нормально. Если их объявить как RETAIN программа перестает верно считать
Run_time_at_high_speed := REAL_TO_TIME ((Pallet_run_length - Braking_distance) / (High_frequencyPCH3 * 5.42814737) * 10000) - Network_delay_time;
(Это мое предположение), из за чего таймер High_speed_timer_TP : TP; (*таймер высокой скорости*) не останавливается.
При этом если этот же код запустить с ПК, он нормально работает.

Начнём с того что, в секунде 1000 ms, а вы умножаете на 10 000. Таймер и не остановится.

PichBah
30.03.2023, 14:32
Еще раз для понимания. Код работает на ПЛК если его запустить с ПК. Работает так как и задуман. Умножение на 1000 необходимо для перевода секунд в мс. Так как расчет идет в секундах, еще умножение на 10 необходимо потому что частотник принимает значения в целых числах умноженных на 10, если передать ему число 650, частота будет 65,0Гц.
Проблема в том что код перестает работать если его запустить тумблером на ПЛК.

kondor3000
30.03.2023, 14:37
Еще раз для понимания. Код работает на ПЛК если его запустить с ПК. Работает так как и задуман. Умножение на 1000 необходимо для перевода секунд в мс. Так как расчет идет в секундах, еще умножение на 10 необходимо потому что частотник принимает значения в целых числах умноженных на 10, если передать ему число 650, частота будет 65,0Гц.
Проблема в том что код перестает работать если его запустить тумблером на ПЛК.

Хорошо, а загрузочный проект вы сделали, при последнем запуске?

PichBah
30.03.2023, 14:41
Естественно, писал же - Если объявить эти переменные в VAR END_VAR, программа запускается с тумблера и работает как корректно.

kondor3000
30.03.2023, 14:49
Естественно, писал же - Если объявить эти переменные в VAR END_VAR, программа запускается с тумблера и работает как корректно.

Вообще странно, Retain переменные сохраняются только при выключении ПЛК по питанию, а у вас программа не корректно начинает работать.
Возможно при включении они перезаписываются из памяти нулями. Можете скрин сделать с RETAIN, сразу после нажатия тумблера, что в переменных?

In_Da_Cher_A
30.03.2023, 15:14
код перестает работать если его запустить тумблером на ПЛКтак а какие процессы вы запускаете при переводе тумблера в положение Работа:?
что вы хотите "изобразить" , стартуя подобным образом?
откройте документацию наконец-то

In_Da_Cher_A
30.03.2023, 15:15
Ни какой имитации нет. Сейчас значение переменных меняю в режиме "Онлайн" из Кодесис.это и есть имитация переменных. Они у вас мимо турникета проскочили зайцем

PichBah
30.03.2023, 15:20
66875 66879 Два варианта, в одном переменные объявлены глобальными во втором локальными. В обоих случаях переменные обнуляются и таймер уходит в безконечность.

PichBah
30.03.2023, 15:25
так а какие процессы вы запускаете при переводе тумблера в положение Работа:?
что вы хотите "изобразить" , стартуя подобным образом?
откройте документацию наконец-то

Отвечайте пожалуйста по делу. Ответы в стиле "Откройте документацию там все есть" будут игнорироваться.

kondor3000
30.03.2023, 15:26
Как у вас тогда работает, если все переменные по 0 ?

Кроме того у вас несколько ошибок в конфигурации есть.
Вы используете 28 дискретных выходов, при наличии 24 всего ( 4 быстрых и 20 обычных) последних 4 у вас физически нет. Вы проверяли их в работе ?
Для чтения с ПЧ, везде у вас чтение по изменению, а чтение должно быть циклическим.

PichBah
30.03.2023, 15:31
На скринах как раз не рабочий вариант. Какие ошибки в конфигурации?

PichBah
30.03.2023, 15:43
Да, тут меня спутал файл целевой платформы. В нем для потра B2.3 указаны 8 бит, и лишь в комментарии подписано что используются только 4ре. В моем проекте эти выходы не используются. Чтение и запись с ПЧ по изменению сделано для увеличения скорости работы. Пч поддерживает только скорость 9600 и реакция системы при циклическом опросе очень медленная. В дальнейшем при необходимости сделаю чтение с ПЧ по циклу в несколько секунд.

kondor3000
30.03.2023, 15:49
Хорошо, теперь по поводу RETAIN, они у вас 0 при включении. Первый раз их надо забить ручками или сделать инициализацию.
Потом они запомнятся при перезагрузке.
К основной программе добавляете Действие, в нём

IF NOT Init THEN
// присвоить переменным нужное
Init:=TRUE;
END_IF

PichBah
30.03.2023, 15:53
То есть когда в коде их объявляю и сразу присваиваю значения этого не достаточно? "сделать инициализацию" тут по подробнее, как это?

PichBah
30.03.2023, 15:56
В вашем примере переменная Init, надо понимать что тип BOOL, и её так же нужно объявить в окне переменных?

In_Da_Cher_A
30.03.2023, 15:57
Отвечайте пожалуйста по делу. Ответы в стиле "Откройте документацию там все есть" будут игнорироваться.игнорируйте документацию, игнорируйте
66880
ну а что происходит с переменными при запуске программы - это тоже в игнорируемой документации, другая табличка

PichBah
30.03.2023, 16:00
игнорируйте документацию, игнорируйте
66880
ну а что происходит с переменными при запуске программы - это тоже в игнорируемой документации, другая табличка

Что же там происходит?

kondor3000
30.03.2023, 16:03
В вашем примере переменная Init, надо понимать что тип BOOL, и её так же нужно объявить в окне переменных?

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

PichBah
30.03.2023, 16:04
Еще вопрос про RETAIN переменные. При перезаписи программы, их значения стираются или остаются без изменений? Если инициализировать их один раз, а потом убрать этот код из программы, их значения сохранятся или нет? Если каждый раз вызывать их инициализацию их смысл теряется.

petera
30.03.2023, 16:07
Еще вопрос про RETAIN переменные. При перезаписи программы, их значения стираются или остаются без изменений? Если инициализировать их один раз, а потом убрать этот код из программы, их значения сохранятся или нет? Если каждый раз вызывать их инициализацию их смысл теряется.

переменная Init, тип BOOL + RETAIN.
И все...

PichBah
30.03.2023, 16:34
Ситуация прояснилась, после ввода значений ручками все заработало. Вывод, присваивать значения переменным RETAIN при объявлении нет смысла. Код запущенный из Кодесис и с тумблера на ПЛК - разный. В первом случае (даже если создан загрузочный проект) при отключении питания запись в RETAIN не происходит. С одной стороны хорошо что такие переменные автономны, но без доступа к записи напрямую их возможности весьма скудные. Спасибо за помощь. Буду изучать запись данных на внешний носитель, но это тоже ерунда, флешка или сломается или ее украдут.

1exan
30.03.2023, 16:38
Ситуация прояснилась, после ввода значений ручками все заработало. Вывод, присваивать значения переменным RETAIN при объявлении нет смысла. Код запущенный из Кодесис и с тумблера на ПЛК - разный. В первом случае (даже если создан загрузочный проект) при отключении питания запись в RETAIN не происходит. С одной стороны хорошо что такие переменные автономны, но без доступа к записи напрямую их возможности весьма скудные. Спасибо за помощь. Буду изучать запись данных на внешний носитель, но это тоже ерунда, флешка или сломается или ее украдут.

Смысл есть: если после загрузки программы выполнить команду сброса, то этим переменным будут присвоены начальные значения

In_Da_Cher_A
30.03.2023, 16:39
Что же там происходит?а вы как думаете?


Онлайн изменение не приводит к переинициализации переменных, таким
образом, модификация начальных значений не приведет к изменению Retain переменных. В этих
случаях необходимо перезагрузить проект целиком командой 'Онлайн' 'Загрузка' ('Online'
'Download'). я бы задумался после прочтения этого абзаца - а что собственно у меня тогда происходит? может вот этот абзац мне поможет понять, что я что-то не так делаю?

Существуют два типа реманентных переменных:
Retain variables, сохраняющие свои значения при выключении питания и сбросе 'Онлайн' 'Сброс' ('Online' 'Reset') в CoDeSys.
Persistent variables сохраняют свои значения при сбросе без выключения питания, управляемом останове системы исполнения (стоп, старт).
так что у ВАС происходит, когда вы дёргаете тумблер Старт-Стоп?
не хотите вот эту табличку посмотреть?
66881

Код запущенный из Кодесис и с тумблера на ПЛК - разный.:D

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

ПавелП
30.03.2023, 16:41
Ситуация прояснилась, после ввода значений ручками все заработало. Вывод, присваивать значения переменным RETAIN при объявлении нет смысла. Код запущенный из Кодесис и с тумблера на ПЛК - разный. В первом случае (даже если создан загрузочный проект) при отключении питания запись в RETAIN не происходит. С одной стороны хорошо что такие переменные автономны, но без доступа к записи напрямую их возможности весьма скудные. Спасибо за помощь. Буду изучать запись данных на внешний носитель, но это тоже ерунда, флешка или сломается или ее украдут. Чтоб не украли, писать в файл внутри! :)

Я вот тут так (https://owen.ru/forum/showthread.php?t=10555&p=403621&viewfull=1#post403621) и сделал - всё работает.
По надобности сваливать в комп, или на внешнюю флешку.
Но это уже другая история.

ПавелП
30.03.2023, 16:56
Будем дальше гадать или скрины выложите?
И после применения изменений, надо перезагрузить ПЛК по питанию.

Ваша правда. Изменил с 2000.0 на 10 - получилось,
попробовал разные величины - зависимость видна!

Фактически как в ПР200.

Смутил предустановленный верхний предел в 2000.0.

Перезапуски не понадобились, только загрузка проги.

Спасибо! :)

ПавелП
02.04.2023, 21:05
Привет всем!

QR-код, Шрих-код считать и распознать.

Принтер узкий ленточный"типа кассовый" не термо?

Для ПЛК160.
Кто подскажет по теме, куда копать?

In_Da_Cher_A
02.04.2023, 22:23
это вас что-ли наняли автоматизаторы со склада? :D
никуда не надо копать.
перестаньте ерундой заниматься. Для всего этого есть готовые решения, вагон и тележка
никакой ваш дешёвый труд и рукописные костыли не обойдутся дешевле готового POS терминала

ПавелП
02.04.2023, 23:06
это вас что-ли наняли автоматизаторы со склада? :D Нет.
Прочитать номер изделия, установить параметры испытания по номеру.
Провести испытания.
Результаты проверки напечатать - сопроводилка изделия.

никуда не надо копать.
перестаньте хернёй заниматься. Для всего этого есть готовые решения, вагон и тележка
никакой ваш дешёвый труд и рукописные костыли не обойдутся дешевле готового POS терминала Нет.
Готовый не подходит.
Необходимо обработать полученный код,
произвести манипуляции,
зафиксировать.

kakTyc2000
12.04.2023, 10:37
добрый день уважаемые, не могу найти библиотеку SysFile.lib. для работы с энергонезависимой памятью, а может сможете и так что то подсказать новичку, на codesys хочу написать наработку часов и мин, но не могу записать значения так чтобы после перезагрузки или отключения питания значения сохранялись

kondor3000
12.04.2023, 10:45
добрый день уважаемые, не могу найти библиотеку SysFile.lib. для работы с энергонезависимой памятью, а может сможете и так что то подсказать новичку, на codesys хочу написать наработку часов и мин, но не могу записать значения так чтобы после перезагрузки или отключения питания значения сохранялись

Зачем вам эта биб-ка и работа с файлами?
Сохранение в памяти делается RETAIN переменными или если ПЛК слейв, то в конфигурации все переменные глобальные и энергонезависимые.

Биб-ка SysLibFile выложена на сайте https://owen.ru/product/codesys_v2/libraries

petera
12.04.2023, 10:46
добрый день уважаемые, не могу найти библиотеку SysFile.lib. для работы с энергонезависимой памятью, а может сможете и так что то подсказать новичку, на codesys хочу написать наработку часов и мин, но не могу записать значения так чтобы после перезагрузки или отключения питания значения сохранялись

Может "SysLibFile.lib"?
67220

Только мне кажется, что фрагмент

VAR RETAIN

NARABOTKA:INT; (*Сохраняемая переменная*)

END_VAR
"Спасет отца русской демократии" и без SysLibFile.lib

kakTyc2000
12.04.2023, 10:55
я пробовал через RETAIN и VAR RETAIN PERSISTENT ну или я может что то не так делаю или не понимаю, но после сброса питания(даже записав перед этим значение) на плк он устанавливает переменную в 0

kakTyc2000
12.04.2023, 10:57
PROGRAM PLC_PRG
VAR_INPUT
PUSK: BOOL:=TRUE;
END_VAR
VAR
time_ton: TIME:=T#1s;
TON1: TON;

result: BOOL;
fileName: STRING := 'myFile';
mode: STRING := 'w';
state: INT:=0;
in_ton: BOOL;
cycle: INT;
OUT_flag: BOOL;
PULSE: BOOL:=TRUE;
END_VAR
VAR RETAIN PERSISTENT
counter:INT ;
END_VAR


IF PUSK=TRUE THEN
cycle:=counter;
PUSK:=FALSE;
END_IF

CASE state OF
0: IF PULSE=TRUE THEN

in_ton:=TRUE;
state:=10;
END_IF
10:
IF in_ton=TRUE THEN
cycle:=cycle+1;
state:=20;
END_IF
20:
TON1(IN:=in_ton, PT:= time_ton, Q=>OUT_flag);
state:=30;
30:
in_ton:=FALSE;
OUT_flag:=FALSE;
state:=40;
40:
IF PULSE=FALSE THEN
counter:=cycle;
ELSE
state:=0;
END_IF
END_CASE
вот такой тестовый код написал для проверки и пробы

kondor3000
12.04.2023, 10:57
я пробовал через RETAIN и VAR RETAIN PERSISTENT ну или я может что то не так делаю или не понимаю, но после сброса питания(даже записав перед этим значение) на плк он устанавливает переменную в 0

Какой у вас ПЛК? Если старый, меняйте аккумулятор.

kakTyc2000
12.04.2023, 11:09
Какой у вас ПЛК? Если старый, меняйте аккумулятор.

плк160м2 новый, ему максимум пол года, на retain можно делать наработку часов который будет писать в течении года?, f (EEPROM или FRAM) так зависят от аккума? я в том плане что тоже будут сбрасываться из за отключения питания

petera
12.04.2023, 11:12
PROGRAM PLC_PRG
VAR_INPUT
PUSK: BOOL:=TRUE;
END_VAR
VAR
time_ton: TIME:=T#1s;
TON1: TON;

result: BOOL;
fileName: STRING := 'myFile';
mode: STRING := 'w';
state: INT:=0;
in_ton: BOOL;
cycle: INT;
OUT_flag: BOOL;
PULSE: BOOL:=TRUE;
END_VAR
VAR RETAIN PERSISTENT
counter:INT ;
END_VAR


IF PUSK=TRUE THEN
cycle:=counter;
PUSK:=FALSE;
END_IF

CASE state OF
0: IF PULSE=TRUE THEN

in_ton:=TRUE;
state:=10;
END_IF
10:
IF in_ton=TRUE THEN
cycle:=cycle+1;
state:=20;
END_IF
20:
TON1(IN:=in_ton, PT:= time_ton, Q=>OUT_flag);
state:=30;
30:
in_ton:=FALSE;
OUT_flag:=FALSE;
state:=40;
40:
IF PULSE=FALSE THEN
counter:=cycle;
ELSE
state:=0;
END_IF
END_CASE
вот такой тестовый код написал для проверки и пробы

Сюда
40:
IF PULSE=FALSE THEN
counter:=cycle;
ELSE
state:=0;
END_IF
Программа никогда не заходит, т.к. PULSE ВСЕГДА TRUE
и соответственно
counter:=cycle; не выполняется
и counter всегда остается равным 0

petera
12.04.2023, 11:26
Сюда
40:
IF PULSE=FALSE THEN
counter:=cycle;
ELSE
state:=0;
END_IF
Программа никогда не заходит, т.к. PULSE ВСЕГДА TRUE
и соответственно
counter:=cycle; не выполняется
и counter всегда остается равным 0

https://owen.ru/forum/attachment.php?attachmentid=67224&d=1681287886

ЗЫ.
Там уже и циклы стали отрицательными :D

kakTyc2000
12.04.2023, 11:30
Сюда
40:
IF PULSE=FALSE THEN
counter:=cycle;
ELSE
state:=0;
END_IF
Программа никогда не заходит, т.к. PULSE ВСЕГДА TRUE
и соответственно
counter:=cycle; не выполняется
и counter всегда остается равным 0

да, но я подключил кнопку которая изменяет PULSE и он нормально записывает, даже разорвав соединение он хорошо показывает что counter присвоена переменная которая была cycle, я так сделал что бы не записывал каждый цикл и не убить память, а записывал когда я изменю PULSE

kakTyc2000
12.04.2023, 11:34
https://owen.ru/forum/attachment.php?attachmentid=67224&d=1681287886

ЗЫ.
Там уже и циклы стали отрицательными :D

ого:D, но у меня положительные, хорошо я на всякий случай исправлю у себя, чтобы такого не было

petera
12.04.2023, 11:46
да, но я подключил кнопку которая изменяет PULSE и он нормально записывает, даже разорвав соединение он хорошо показывает что counter присвоена переменная которая была cycle, я так сделал что бы не записывал каждый цикл и не убить память, а записывал когда я изменю PULSE

Из всего этого нужно всего лишь

PROGRAM PLC_PRG
VAR
TON1: TON:=(PT:=T#1s);
OUT_flag: BOOL;
END_VAR

VAR RETAIN
cycle: UDINT;
END_VAR

TON1(IN:=NOT OUT_flag, Q=>OUT_flag );
cycle:= cycle + BOOL_TO_INT(OUT_flag);

Память убить нельзя, т.к. RETAIN переменные физически записываются в момент выключения питания

kakTyc2000
12.04.2023, 11:51
https://owen.ru/forum/attachment.php?attachmentid=67224&d=1681287886

ЗЫ.
Там уже и циклы стали отрицательными :D

просто вопрос, почему в codyses 2.3 при эмуляции он нормально ведет счет раз в секунду, а при подключённом плк он cycle считает по +10....+30(тут я неопытен и не понимаю)

petera
12.04.2023, 12:13
просто вопрос, почему в codyses 2.3 при эмуляции он нормально ведет счет раз в секунду, а при подключённом плк он cycle считает по +10....+30(тут я неопытен и не понимаю)

Потому, что анализировать
10:
IF in_ton=TRUE THEN
cycle:=cycle+1;
state:=20;
нужно не сигнал запуска таймера in_ton, а значение Q на его выходе

И вообще весь CASE мутный..

kondor3000
12.04.2023, 13:24
я пробовал через RETAIN и VAR RETAIN PERSISTENT ну или я может что то не так делаю или не понимаю, но после сброса питания(даже записав перед этим значение) на плк он устанавливает переменную в 0

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

Для работы со временем и наработкой есть примеры на сайте, используется биб-ка SysLibTime,
в эмуляции она не работает, только на ПЛК или виртуальном ПЛК.

ПавелП
14.04.2023, 11:38
Привет всем!

В ПЛК160 создал файл "File LOG" с пробелом в названии.
Не могу прочитать/удалить через ПЛК-браузер.

plc_io.exe /TCP192.168.1.250 /del "File log"
Удаление файла File
Ошибка: невозможно удалить файл
Удаление файла log
Ошибка: невозможно удалить файл

plc_io.exe /TCP192.168.1.250 /del "File log."
Удаление файла File log.
Ошибка: невозможно удалить файл

plc_io.exe /TCP192.168.1.250 /del "File log.*"
Удаление файла File log.*
Ошибка: невозможно удалить файл

1exan
14.04.2023, 13:03
Привет всем!

В ПЛК160 создал файл "File LOG" с пробелом в названии.
Не могу прочитать/удалить через ПЛК-браузер.

plc_io.exe /TCP192.168.1.250 /del "File log"
Удаление файла File
Ошибка: невозможно удалить файл
Удаление файла log
Ошибка: невозможно удалить файл

plc_io.exe /TCP192.168.1.250 /del "File log."
Удаление файла File log.
Ошибка: невозможно удалить файл

plc_io.exe /TCP192.168.1.250 /del "File log.*"
Удаление файла File log.*
Ошибка: невозможно удалить файл

Попробуйте filedir

ПавелП
14.04.2023, 13:24
Попробуйте filedir Вывести список файлов:
filedir
File LOG
local_addres.dat
Journal.dat
debug.txt
File_name.log
DEFAULT.PRG
DEFAULT.CHK
source.dat

melky
14.04.2023, 13:32
у файла имя File LOG

ПавелП
14.04.2023, 13:36
у файла имя File LOG

Из ПЛК-браузера:
filedelete File LOG
Could not delete file (Не удалось удалить файл)

In_Da_Cher_A
14.04.2023, 15:59
а зачем вы его название сделали с пробелом?

Не удалось удалить файли не получится скорее всего. А считать его удаётся?

ПавелП
14.04.2023, 17:54
а зачем вы его название сделали с пробелом?
и не получится скорее всего. А считать его удаётся?
Да. Нулевой длины.

petera
14.04.2023, 18:44
Да. Нулевой длины.

А если программку маленькую сделать и удалить с помощью SysLibFile?

ПавелП
14.04.2023, 22:16
А если программку маленькую сделать и удалить с помощью SysLibFile? Не факт что поможет... :)

Он как бы не мешает.
Лишь немного озадачил, что такие вывихи возможны
в такой уважаемой корпорации...

SysLibFile - порог вхождения в тему - много нагромождений.

Кто бы на ЭТОМ написал нормальную файловую систему,
с краткой и ЛАКОНИЧНОЙ системой команд.

Эдакий МС-ДОС с Нортоном в придачу. :)

In_Da_Cher_A
15.04.2023, 08:26
Не факт что поможет... :)

Он как бы не мешает.
Лишь немного озадачил, что такие вывихи возможны
в такой уважаемой корпорации...

SysLibFile - порог вхождения в тему - много нагромождений.

Кто бы на ЭТОМ написал нормальную файловую систему,
с краткой и ЛАКОНИЧНОЙ системой команд.

Эдакий МС-ДОС с Нортоном в придачу. :)какие вывихи, какая корпорация, какой мсдос....
вас предупреждали - перестаньте требовать от ПЛК каких-то чудес, это просто выполнитель простых логических последовательностей, а не ПК с форточками-линуксами
и кодесис и то, что создатели напихали в него в 90ые - это не относится к конкретному ПЛК, который делался другими, и не факт, что там что-то будет реализовано идеально, как фантазировали авторы КДС про абстраткный ПЛК в начале 90ых
сколько ещё граблей вы готовы отловить своей головой? :D

ПавелП
15.04.2023, 11:19
какие вывихи, какая корпорация, какой мсдос....
вас предупреждали - перестаньте требовать от ПЛК каких-то чудес, это просто выполнитель простых логических последовательностей, а не ПК с форточками-линуксами
и кодесис и то, что создатели напихали в него в 90ые - это не относится к конкретному ПЛК, который делался другими, и не факт, что там что-то будет реализовано идеально, как фантазировали авторы КДС про абстраткный ПЛК в начале 90ых
сколько ещё граблей вы готовы отловить своей головой? :D Ведите диалог в рамках приличия.
Пахабщина из вас так и прёт...

bort992
21.04.2023, 16:41
Всем привет.
Создал проект для управления электроприводом на база ПЛК-160 2015года (старая версия), применив счетчик. Если задавать значения уставки 0 или 100%, привод работает согласно сохраненным количествам импульсов. А вот если задавать уставку произвольно, то привод переезжает либо не доезжает к крайним точка, одним словом происходит смещение точек. Хотя счетчик отображает правильное значение.
Который день пытаюсь понять данную проблему.... Счетчики применял разные, параметры входов также менял, но все, - УВЫ....
Применяю оптический ИК транзисторный выключатель от принтера в связке с транзисторным ключом. Частота импульса в 1-ну секунду, не более.
Нужна ваша помощь в данной.
Заранее, спасибо!

Newcomer
21.04.2023, 17:56
Что за привод ?

Vitali74
22.04.2023, 17:46
Добрый день! Подскажите как настроить СИ 8 (первичный прибор стоит СТВХ 100 ДГ1), для считывания расхода воды в метрах кубических.

bort992
23.04.2023, 07:40
Что за привод ?

Привод для штор, на принтере напечатал.

IVM
23.04.2023, 11:30
Привод для штор, на принтере напечатал.

И что это за привод такой получился ?

bort992
23.04.2023, 12:38
И что это за привод такой получился ?
Рабочий и эстетично красивый.
Но вопрос не об этом, а о проге!!!!

Newcomer
23.04.2023, 13:58
Рабочий и эстетично красивый.
Но вопрос не об этом, а о проге!!!!

Физически этот привод что из себя представляет ?

bort992
23.04.2023, 18:35
Физически этот привод что из себя представляет ?

А что может из себя представлять привод: мотор, группа шестеренок, импульсный датчик Вот и весь привод.
Мне нужно проблему в Codesys решить....... :confused:

bort992
23.04.2023, 18:38
Всем привет.
Создал проект для управления электроприводом на база ПЛК-160 2015года (старая версия), применив счетчик. Если задавать значения уставки 0 или 100%, привод работает согласно сохраненным количествам импульсов. А вот если задавать уставку произвольно, то привод переезжает либо не доезжает к крайним точка, одним словом происходит смещение точек. Хотя счетчик отображает правильное значение.
Который день пытаюсь понять данную проблему.... Счетчики применял разные, параметры входов также менял, но все, - УВЫ....
Применяю оптический ИК транзисторный выключатель от принтера в связке с транзисторным ключом. Частота импульса в 1-ну секунду, не более.
Нужна ваша помощь в данной.
Заранее, спасибо!

Вот моя проблема на данный момент!!!!!

In_Da_Cher_A
23.04.2023, 19:20
Вот моя проблема на данный момент!!!!!вы предлагаете каким-то телепатическим способом считать информацию из вашей головы?
привод датчик от принтера импульс плк вот так не работает вот так работает - вот всё, что вы сообщили
схему нарисуйте, чтобы хоть что-то понять в том колхозинге, что вы сделали

bort992
23.04.2023, 20:30
вы предлагаете каким-то телепатическим способом считать информацию из вашей головы?
привод датчик от принтера импульс плк вот так не работает вот так работает - вот всё, что вы сообщили
схему нарисуйте, чтобы хоть что-то понять в том колхозинге, что вы сделали

Про схему забыл :rolleyes:
Датчик подключен к первому входу ПЛК, хотя по проекту это итак видно!
И еще, есть исходник для ПЛК, он лежит на предыдущей странице.
Продублирую еще раз!!!

bort992
25.04.2023, 21:19
Похоже на, что ответа так и не получу......

xxxx
05.05.2023, 14:04
Приветствую, нарисуйте на lad как зацепить DERIVATIVE к примеру. Интересует подключение аналоговых входов

petera
05.05.2023, 14:18
Приветствую, нарисуйте на lad как зацепить DERIVATIVE к примеру. Интересует подключение аналоговых входов

67740
10++

xxxx
05.05.2023, 14:29
Спасибо большое

VaBo
11.05.2023, 16:53
Портирую прогу от ПЛК160 на ПЛК160 М02.
В руководстве
https://ftp.owen.ru/CoDeSys23/06_Documentation/Transferring_project_to_PLC160(M02).pdf
сказано "Откройте старый проект и его копию для переноса", т.е. два проекта одновременно. А вот что-то не получается! ЧЯДНТ?

kondor3000
11.05.2023, 17:27
Портирую прогу от ПЛК160 на ПЛК160 М02.
В руководстве
https://ftp.owen.ru/CoDeSys23/06_Documentation/Transferring_project_to_PLC160(M02).pdf
сказано "Откройте старый проект и его копию для переноса", т.е. два проекта одновременно. А вот что-то не получается! ЧЯДНТ?

Что не получается? Два проекта открыть? Надеюсь второй проект с другим именем?

VaBo
11.05.2023, 17:37
Да, надеетесь правильно, имена разные. V 2.3.9.41

ЗЫ; Оппс-с-с. Нужно вторым экземпляром CDS открывать, а я одним пытался...

vitalij
16.05.2023, 06:51
Здравствуйте. если в конфигурации плк добавляю два слейва. один rs232 другой TCP. по rs232 добавляю переменные по 4 byte. Вопрос данные переменные они становятся доступны и по слейву TCP? то есть мне не надо вводить эти же переменные по данному интерфесу 67840

1exan
16.05.2023, 07:08
Здравствуйте. если в конфигурации плк добавляю два слейва. один rs232 другой TCP. по rs232 добавляю переменные по 4 byte. Вопрос данные переменные они становятся доступны и по слейву TCP? то есть мне не надо вводить эти же переменные по данному интерфесу 67840

Нет, эти переменные различные.
Чтобы сделать общие переменные для двух портов, добавьте оба порта в ОДИН и тот-же слейв (в MODBUS[FIX])

vitalij
16.05.2023, 07:44
Нет, эти переменные различные.
Чтобы сделать общие переменные для двух портов, добавьте оба порта в ОДИН и тот-же слейв (в MODBUS[FIX])

спасибо67843

Newcomer
19.05.2023, 23:11
Добрый день

Проблема с загрузкой программы в старый ПЛК160 по Ethernet. Проект нормально открывается, программа компилируется без ошибок. Подключение к ПЛК происходит нормально, но при загрузке выскакивает сообщение "Ошибка связи #0. Произошло отключение". Интересно, что программа сделанная на родном ПК загружается нормально, а вот программа сделанная на стороннем ПК не загружается. Может ли это быть связано с тем что на стороннем ПК стоит таргет отличный от таргета, установленного на родном ПК ?

Cs-Cs
19.05.2023, 23:46
Newcomer Да, тарегты стоит проверить, так как они же есть обычной версии и версии 2.0. Обычно CodeSys сразу на это ругается, но вдруг там что-то не то и не так.

kondor3000
20.05.2023, 00:03
Добрый день

Проблема с загрузкой программы в старый ПЛК160 по Ethernet. Проект нормально открывается, программа компилируется без ошибок. Подключение к ПЛК происходит нормально, но при загрузке выскакивает сообщение "Ошибка связи #0. Произошло отключение". Интересно, что программа сделанная на родном ПК загружается нормально, а вот программа сделанная на стороннем ПК не загружается. Может ли это быть связано с тем что на стороннем ПК стоит таргет отличный от таргета, установленного на родном ПК ?

Надо поставить все таргеты и открыть исходную программу, нужный таргет сам подтянется. Либо 160М, либо 160М[v02], есть ещё 160L, либо160L[v02]67909
Потом просто смотрите какой подтянулся.
У старого корпус с синими наклейками, у переходной модели и нового корпус с тёмными стёклами, без синего. Кажется так.

medvedits
22.05.2023, 01:15
Добрый день!
Подскажите,есть ли вариант на ST реализовать работу по уставке с дельтой, при достижении температурой значения меньше t_Set-d_delta нагрев включается, а при достижении температуры уставки t_Set выключается? как ни крутил, по алгоритму вроде верно пишу,а физически выход отключается при величине больше t_Set-d_delta
Функция написана в таком виде 67924

medvedits
22.05.2023, 01:20
или подскажите как сделать функцию на CFC, а потом использовать в её в ST

1exan
22.05.2023, 04:58
Добрый день!
Подскажите,есть ли вариант на ST реализовать работу по уставке с дельтой, при достижении температурой значения меньше t_Set-d_delta нагрев включается, а при достижении температуры уставки t_Set выключается? как ни крутил, по алгоритму вроде верно пишу,а физически выход отключается при величине больше t_Set-d_delta
Функция написана в таком виде 67924

Всё у вас нормально отключается, только условий многовато:

xOutCtrl := FALSE;
IF xModeWork THEN
IF rPV < (iSP - iDlt) THEN xOutCtrl := TRUE;
ELSIF rPV > iSP THEN xOutCtrl := FALSE;
END_IF;
END_IF;


Да, и как написали ниже, нужно сделать ФБ, а не функцию

Dimensy
22.05.2023, 06:14
Добрый день!
Подскажите,есть ли вариант на ST реализовать работу по уставке с дельтой, при достижении температурой значения меньше t_Set-d_delta нагрев включается, а при достижении температуры уставки t_Set выключается? как ни крутил, по алгоритму вроде верно пишу,а физически выход отключается при величине больше t_Set-d_delta
Функция написана в таком виде 67924

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

medvedits
22.05.2023, 10:15
Так это функция - она не хранит информацию, поэтому в таких сравнениях работать не будет. Используйте функциональный блок, либо RS-триггер
Хранить данные нужно чтобы на следущий цикл было предыдущее значение? А как внутри PLS_PRG использовать функциональный блок, можно простенький пример с объявлением и в самой программе?не сочтите за хамство,справку читать умею, но даже простеньких примеров на ST категорически не хватает...
P.S. А есть RS триггер на ST? думал его функционал так и реализуется, одно условие на 1,второе на 0, чем важнее приоритет, тем "выше" условие в цикле.

medvedits
22.05.2023, 10:17
Всё у вас нормально отключается, только условий многовато

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

kondor3000
22.05.2023, 10:29
Хранить данные нужно чтобы на следущий цикл было предыдущее значение? А как внутри PLS_PRG использовать функциональный блок, можно простенький пример с объявлением и в самой программе?не сочтите за хамство,справку читать умею, но даже простеньких примеров на ST категорически не хватает...
P.S. А есть RS триггер на ST? думал его функционал так и реализуется, одно условие на 1,второе на 0, чем важнее приоритет, тем "выше" условие в цикле.

Так же как и функцию, только ФБ надо объявить вверху (можно с номером 1, 2, 3, если блоков несколько) и вызвать в программе. Скрин 67930
Вызвать любой блок в ST, можно нажав F2 и выбрав его. Свой блок будет в Пользовательских ФБ, а библиотечный в Стандартных ФБ
Все входы надо поместить в INPUT, а выходы в OUTPUT, если они нужны.
А триггеры на ST, будут например такие

IF Res THEN (* RS триггер, приоритет сброса *)
Q:=FALSE;
ELSIF Set THEN
Q:=TRUE;
END_IF
(*
IF Set THEN (* SR триггер, приоритет установки *)
Q:=TRUE;
ELSIF Res THEN
Q:=FALSE;
END_IF *)

Или ещё проще

RS1: RS; (* Объявление *)

RS1(SET:=Set1 , RESET1:=Res1 , Q1=>Q1 ); (* В программе *)

vitalij
23.05.2023, 09:22
Здравствуйте. Хотел уточнить вопрос по параметру Polling Time. Если в Universal module задать этот параметр 100 мс и в этом универсале модуле добавить 20 регистров, то 20*100 и получаем на самом деле 2000 ms Polling time?
67951

kondor3000
23.05.2023, 09:25
Здравствуйте. Хотел уточнить вопрос по параметру Polling Time. Если в Universal module задать этот параметр 100 мс и в этом универсале модуле добавить 20 регистров, то 20*100 и получаем на самом деле 2000 ms Polling time?
67951

Поэтому и надо делать обмен групповыми запросами, до 40 регистров за одну передачу, с помощью String https://owen.ru/forum/showthread.php?t=22915&page=40&p=244022&viewfull=1#post244022
А Polling Time можно спокойно уменьшить до 10 ms, и того меньше чем за секунду возможно передать больше 4000 регистров

vitalij
23.05.2023, 09:28
Поэтому и надо делать обмен групповыми запросами, до 40 регистров за одну передачу, с помощью String https://owen.ru/forum/showthread.php?t=22915&page=40&p=244022&viewfull=1#post244022

это понятно. а есть ли разница в скорости либо в одном унивресале добавить 20 регистров либо сделать 20 универсалов с одним регистром?

kondor3000
23.05.2023, 09:39
это понятно. а есть ли разница в скорости либо в одном унивресале добавить 20 регистров либо сделать 20 универсалов с одним регистром?

Вы же сами посчитали, 20*100=2000, если 10 UMD, либо с 1 UMD 20 регистров подряд -100ms

kondor3000
23.05.2023, 14:30
Не совсем.
Poll time это не через сколько опрашивать после каждого, а стремление опросить все за 100.
На пальцах:
5 отдельных регистров. Poll = 100мс
Транзакция займет условно 10мс.
Тогда в течении 50мс (5x10) опросится всё. И будет пауза 50мс, т.к. чаще - не надо, сами сказали

20 отдельных регистров. Poll = 100мс
Транзакция те же 10мс.
Т.к. общее время 20x10 больше 100мс, общий цикл займет 200мс, т.к. 100 хочется, но не получается физически

Все остальное (про групповые) - в силе

Разговор был про 20 разных UMD по 1 регистру (100 ms в каждом). Сколько в итоге займёт опрос?
Я так думаю, что открытие 20 портов не меньше секунды + опрос 20 устройств ещё пусть 200 ms, в итоге где то 1,2 секунды минимум, а по факту будет все 2000 ms
Про 1 UMD и 20 регистров понятно, займёт 200 ms

ПавелП
24.05.2023, 11:24
В визуализации, для занесения цифровых данных в переменную,
её надо выбрать мышкой, ввести с клавиатуры значение, и нажать ввод.

Переменных много, и их можно выбрать мышкой.

Как вводить ОДНУ переменную, без выбора мышкой?
Только одну переменную с клавиатуры, и нажимать ввод?

ПавелП
24.05.2023, 12:30
В визуализации, для занесения цифровых данных в переменную,
её надо выбрать мышкой, ввести с клавиатуры значение, и нажать ввод.

Переменных много, и их можно выбрать мышкой.

Как вводить ОДНУ переменную, без выбора мышкой?
Только одну переменную с клавиатуры, и нажимать ввод?

Нашёл документ CoDeSys visu (owen.ru) (https://ftp.owen.ru/CoDeSys23/06_Documentation/Cds23_Visu_v1.7.pdf) стр. 64.
Но там придётся "покурить" хорошенько. :)


'Дополнения' 'Клавиатурный ввод' ('Extras' 'Keyboard usage')
Здесь можно назначить быстрые комбинации клавиш для управления элементами визуализации.
Например, можно сопоставить комбинацию клавиш <CTRL>+<F2> в online режиме, нажатию (посредством
мыши или сенсорного экрана) на определенный элемент визуализации.
Назначение комбинаций клавиш быстрого ввода оптимизирует использование клавиатуры.
По умолчанию клавиши <Tab>, <Space> и <Enter> (<табуляция>, <пробел>, и <ввод>)
позволяют в online режиме выбирать элемент визуализации.

Всё оказалось не так сложно, как в доке описано! :)

Посмотреть в списке окон: 'Дополнения' 'Список элементов' номер нужного окна.
У меня это "#193", "Скругленный прямоугольник" {X,Y,W,H}.
Если эллемент выделен в редактое, то на него сразу указанно в списке.

Выбрать пункт: 'Дополнения' 'Клавиатурный ввод'.
действие "TEXT", клавиша "VK_SPACE", выражение "#193"

В нужную переменную после нажатия пробела,
напрямую вводится нужное число после "Ввода"!

Leet
24.05.2023, 19:40
День добрый, возникла такая проблема. Необходимо функцию вызывать раз в 100 мс. Вопрос, как можно это сделать, каким таймером и каким подключением. С данной средой работаю впервые и в распоряжении имеется ПЛК 150.

ASo
24.05.2023, 20:00
BLINK->RTIG->вызов ФБ.

ПавелП
24.05.2023, 23:13
День добрый, возникла такая проблема. Необходимо функцию вызывать раз в 100 мс. Вопрос, как можно это сделать, каким таймером и каким подключением. С данной средой работаю впервые и в распоряжении имеется ПЛК 150.

На ST и ещё на чём?
Какая задача?

iv.kmz
02.06.2023, 13:52
Здравствуйте!

ПЛК160 2021 г.в. с последней прошивкой.

Сбрасывается программа после отключения питания. Загружаю правильно: очистить всё, компилировать всё, создание загр. проекта, подключение, заводской сброс, отключение, подключение, загрузка проекта, загрузка исх. текстов.

Так же не работает сброс с рычажка на корпусе.

Подскажите, в чём м.б. дело? Неисправность, Какой-нибудь переключатель внутри? Что-то ещё?

iv.kmz
02.06.2023, 14:21
может быть все же надо пункт создание загр. проекта делать после подключения к плк, а то в оффлайне он так и остается на ПК, исходные тексты это несколько иное

так тоже пробовал - не помогло

kondor3000
02.06.2023, 14:40
Здравствуйте!

ПЛК160 2021 г.в. с последней прошивкой.

Сбрасывается программа после отключения питания. Загружаю правильно: очистить всё, компилировать всё, создание загр. проекта, подключение, заводской сброс, отключение, подключение, загрузка проекта, загрузка исх. текстов.

Так же не работает сброс с рычажка на корпусе.

Подскажите, в чём м.б. дело? Неисправность, Какой-нибудь переключатель внутри? Что-то ещё?

Проект Очисить всё, компилировать всё и сохранить. Подключиться к ПЛК, создать загрузочный проект, включить тумблер Старт и запустить проект Старт из программы.
После можно отключиться и перезагрузить ПЛК. Проверить снова подключившись.

Тумблер Старт и Стоп срабатывает только после перезагрузки по питанию,
чтобы прога не остановилась, если шаловливые ручёнки его выключат ненароком во время работы.

iv.kmz
02.06.2023, 15:11
Проверить снова подключившись.

не, увы.

Уже не уверен, что с прошивкой всё в порядке:

PLCInfo
PLC model MODEL PLC 160
Версия ПО метр: 2.0
Binary VERSION 1.2.42
Need Target version >= 3.12
Compiled: 14:40:51 Feb 8 2021
STM32 binary version 114

Правильно ли я понимаю, что прошивку нужно обновить до v.2.17.0_PLC160 и взять таргет Install_Target_v2.12_for_PLC110_PLC160?

kondor3000
02.06.2023, 15:28
не, увы.
Уже не уверен, что с прошивкой всё в порядке:
Правильно ли я понимаю, что прошивку нужно обновить до v.2.17.0_PLC160 и взять таргет Install_Target_v2.12_for_PLC110_PLC160?

Это не обязательно, работать должно и так.
У вас программа проверена вообще, проблем с таргетами и подключением, загрузкой нет? Выходы аналоговые настроены правильно?
Можно попробовать ещё это, отформатировать память https://owen.ru/forum/showthread.php?t=37966&p=409597#post409597

iv.kmz
05.06.2023, 10:39
Это не обязательно, работать должно и так.
У вас программа проверена вообще, проблем с таргетами и подключением, загрузкой нет? Выходы аналоговые настроены правильно?
Можно попробовать ещё это, отформатировать память https://owen.ru/forum/showthread.php?t=37966&p=409597#post409597

Программа загружается и работает. Всё хорошо пока не отключаю питание.

В общем обновил последней прошивкой с сайта (UpdateCore). Написало Ok и после перезагрузки ПЛК превратился в кирпич.

Взял 2-й, такой же. То же самое. Обновлять уже не хочется. PlcInfo пишет Need Target version >= 3.12. На странице контроллера выложена 3.3, в разделе с CoDeSys 2.12. Зашёл в архив и на шёл там Target 3.18. Но это не мопогло.

capzap
05.06.2023, 10:48
ПЛК превратился в кирпич.

в итоге плк у Вас с тумблером? Прощивку заливали 2.17 что ли?

iv.kmz
05.06.2023, 10:57
в итоге плк у Вас с тумблером? Прощивку заливали 2.17 что ли?

Да

2-й ПЛК кстати заработал как надо.

kondor3000
05.06.2023, 10:59
Программа загружается и работает. Всё хорошо пока не отключаю питание.

В общем обновил последней прошивкой с сайта (UpdateCore). Написало Ok и после перезагрузки ПЛК превратился в кирпич.

Взял 2-й, такой же. То же самое. Обновлять уже не хочется. PlcInfo пишет Need Target version >= 3.12. На странице контроллера выложена 3.3, в разделе с CoDeSys 2.12. Зашёл в архив и на шёл там Target 3.18. Но это не мопогло.

Да уж, писал же, должно работать без прошивки. Теперь звоните в техподдержку и везите в сервис.

capzap
05.06.2023, 12:13
Да

2-й ПЛК кстати заработал как надо.

уверены? Те плк что с тумблером это [M02] у них явно не 2.17 68161

kondor3000
05.06.2023, 13:54
Здравствуйте. заметил в эмуляторе delay_time_.IN:=FALSE; и delay_time_(IN:= FALSE, PT:= , Q=> , ET=> ) ведут себя по разному. как такое обьяснить? на железе так же будет?

IF start_delay THEN
delay_time_(IN:=TRUE , PT:=t#2000ms , Q=> , ET=> );


Это вообще не правильно, сам таймер надо вынести за пределы IF... THEN ... END_IF
а уже в нём включать ( выключать) входы, менять время в РТ, если надо.

petera
05.06.2023, 14:16
не выдерживается 2 секунды каждый цикл счетчик добавляется на 1. а если delay_time_(IN:= FALSE, PT:= , Q=> , ET=> ) то все работает корректно счетчик увеличивается на 1 через 2 сек

Так и должно быть. Все правильно.

vitalij
05.06.2023, 14:36
Так и должно быть. Все правильно.

понял. скобки имеют значение ... скобки это вызов фб. а без скобок просто запись была

iv.kmz
05.06.2023, 16:44
уверены? Те плк что с тумблером это [M02] у них явно не 2.17 68161

Да, М02. Наверное при прошивке версию перепутал.

iv.kmz
08.06.2023, 09:25
Здравствуйте!

Существуют ли какие-либо рекомендации по частоте/интенсивности записи RETAIN PERSISTENT переменных и записи данных в файлы, с точки зрения износа FLASH-памяти?
Или этим можно пренебречь?

kondor3000
08.06.2023, 09:38
Здравствуйте!

Существуют ли какие-либо рекомендации по частоте/интенсивности записи RETAIN PERSISTENT переменных и записи данных в файлы, с точки зрения износа FLASH-памяти?
Или этим можно пренебречь?

Такие вопросы надо задавать с указанием точного названия ПЛК.
В новых ПЛК [M02] ( V2 ), кол-во перезаписей не ограничено. Но надо ко всему подходить с умом и не писать в память каждую секунду.
Например в RETAIN PERSISTENT автоматически пишется при отключении питания.

iv.kmz
08.06.2023, 11:19
Такие вопросы надо задавать с указанием точного названия ПЛК.
В новых ПЛК [M02] ( V2 ), кол-во перезаписей не ограничено. Но надо ко всему подходить с умом и не писать в память каждую секунду.
Например в RETAIN PERSISTENT автоматически пишется при отключении питания.

ПЛК160 [M02]. Запись нескольких показателей наработки раз в 30 сек не слишком часто будет?

kondor3000
08.06.2023, 12:10
ПЛК160 [M02]. Запись нескольких показателей наработки раз в 30 сек не слишком часто будет?

Если вы про RETAIN (RETAIN PERSISTENT) то всё равно, она сама записывается в память при отключении питания.

melky
08.06.2023, 13:45
iv.kmz Если у вас ПЛК Овен на руках вы можете это легко проверить, просто вызвав сброс ПЛК без отключения питания. Все, что вы записали не сохранится. Вроде так было на 100-й серии.
То есть фактически все переменные находятся в ОЗУ до момента отключения питания и только потом сохраняются на флеш. Из-за этого на старых ПЛК при умирании батарейки и не сохранялись данные.

Duvall
09.06.2023, 11:32
Здравствуйте, подскажите пожалуйста, как добавить таргет в готовую программу пишет not found, но при запуске программы я указал путь, на этот таргет 68240 68241

kondor3000
09.06.2023, 13:14
Здравствуйте, подскажите пожалуйста, как добавить таргет в готовую программу пишет not found, но при запуске программы я указал путь, на этот таргет

Таргет дожен быть установлен в КДС 2.3, надо нажать Настройки целевой платформы, в окне выбрать нужный таргет, 68243нажать ОК,
потом нажать Дополнения / Стандартная конфигурация. Получите чистый таргет вашего ПЛК.

Duvall
11.06.2023, 21:32
Таргет дожен быть установлен в КДС 2.3, надо нажать Настройки целевой платформы, в окне выбрать нужный таргет, 68243нажать ОК,
потом нажать Дополнения / Стандартная конфигурация. Получите чистый таргет вашего ПЛК.
Добавил в коде сис 2.3 папку с Плк от овна, а в таргеты файл из папки плк в формате trg и все равно не видит он этот тапнет,если создаю новый проект, то видит

Cs-Cs
12.06.2023, 09:51
Добавил в коде сис 2.3 папку с Плк от овна, а в таргеты файл из папки плк в формате trg и все равно не видит он этот тапнет,если создаю новый проект, то видит
Насколько я понимаю, таргеты всегда ставились через программу InstallTarget, которая ещё и в реестре под них ключи с путями прописывала. Просто так закинуть тарегт в папку с CodeSys не прокатывает.

Вот:
68279

Duvall
12.06.2023, 12:10
Насколько я понимаю, таргеты всегда ставились через программу InstallTarget, которая ещё и в реестре под них ключи с путями прописывала. Просто так закинуть тарегт в папку с CodeSys не прокатывает.

Вот:
68279

само собой перед этим добавил это 68281

kondor3000
12.06.2023, 14:43
само собой перед этим добавил это 68281

Вот видео, как поставить таргеты, если не знаете https://www.youtube.com/watch?v=eSTmoNeLa7A&t=23s
Советую посмотреть все обучающие видео, их около 12-15 шт.
https://www.youtube.com/watch?v=eSTmoNeLa7A&list=RDCMUCbUaZ1JTZMIynGQRuom7YnQ&start_radio=1&rv=eSTmoNeLa7A&t=23

Duvall
12.06.2023, 14:54
Вот видео, как поставить таргеты, если не знаете https://www.youtube.com/watch?v=eSTmoNeLa7A&t=23s
Советую посмотреть все обучающие видео, их около 12-15 шт.
https://www.youtube.com/watch?v=eSTmoNeLa7A&list=RDCMUCbUaZ1JTZMIynGQRuom7YnQ&start_radio=1&rv=eSTmoNeLa7A&t=23
Так и сделал, если новый проект создаю то видит, а если в уже готовый, то почему-то нет на одном пк все Гуд, а на этом вот такая проблема.
И к плк не подкл через эзернет, пишет ошибку 0

kondor3000
12.06.2023, 20:37
Так и сделал, если новый проект создаю то видит, а если в уже готовый, то почему-то нет на одном пк все Гуд, а на этом вот такая проблема.
И к плк не подкл через эзернет, пишет ошибку 0

Выложите свой проект, и скажите какой таргет надо поставить. Так проще будет.

Скорее всего у вас в Рабочая область/ Директории прописана ссылка на таргеты, не по умолчанию. 68288
Должно быть так, удалите все ссылки в проекте

Даже если все правильно настроено, бывает иногда ошибка 0 по изернет (особенно после не правильной настройки), просто попробуйте несколько раз подключиться.

vitalij
13.06.2023, 14:14
зачем Вам эти проблемы, если документация не помогает


foo : INT := 13;
bar : INT := -1111;
ptr : POINTER TO INT;
Buffer : ARRAY[0..15] OF BYTE;


ptr := ADR(Buffer[0]);
ptr^ := foo;
ptr := ADR(Buffer[2]);
ptr^ := bar;



меня просто интересовал вопрос связанный с modbus.lib с функцией send wr reg.. при записи в прибор одного регистра с помощью sysmemcpy. так понимаю проблем не будет..
если будет проблема то пользоватьсяя скорее всего функцией single register функция 6 для записи одиночного регистра

vitalij
13.06.2023, 14:32
какое отношение к записи в массив более объемного типа данных имеет какой функцей модбас будете пользоваться, Вы вообще что именно спрашиваете. Даже методом тыка давно уже можно было решить свой вопрос, чем глупости писать

примерно понял что в modbus.lib фукция записи 06 и 16 при записи в прибор только одного регистра результат будет разным, если предваоительно в 16 функции не разложить ворд в правильные байты буфера

Duvall
14.06.2023, 17:15
Выложите свой проект, и скажите какой таргет надо поставить. Так проще будет.

Скорее всего у вас в Рабочая область/ Директории прописана ссылка на таргеты, не по умолчанию. 68288
Должно быть так, удалите все ссылки в проекте

Даже если все правильно настроено, бывает иногда ошибка 0 по изернет (особенно после не правильной настройки), просто попробуйте несколько раз подключиться.

Да все пусто 68313
На одном пк ошибка 0 при подключении к плк, но в эмуляции все работает.
На другом не видел таргет, сейчас увидел почему-то хотя я ничего не трогал)).

Туман
15.06.2023, 00:37
Столкнулся с проблемой при Online обновлении, обновление проходит с ошибкой (см. скрин) коннект подвисает, перезапуск Gateway не позволяет подключиться к ПЛК, ПЛК в принципе пингуется, но не доступен для работы спецпрограммами, и в целом уходит в Стоп. Приходится идти передергивать ему питание, данные переменных Retain cохраняются. ПЛК Wago 750-8212, стоит "Всегда загрузочный проект" (пока мысль в эту сторону, галку убрал буду мониторить). Произошло с несколькими ПЛК с разными программами, программы немаленькие, 2-3 Мб.
68315
Если кто подскажет какие идеи - буду признателен.

qqq
15.06.2023, 07:07
Наверное где-то уже было, можно ли объявлять slave-переменные не в конфигураторе ПЛК, а где-нибудь в текстовом варианте, например в VAR_GLOBAL, типа:

wVariable AT %QW7.1.0:WORD;
rVariable AT %QD7.2.0:REAL;

Будет ли это аналогично объявлению в конфигураторе ПЛК? A то я с ума сойду там вручную объявлять сотни переменных.

ASo
15.06.2023, 07:18
В принципе, есть экспорт-импорт в/из текстовых файлов.

Валенок
15.06.2023, 07:53
Столкнулся с проблемой при Online обновлении,.... Если кто подскажет какие идеи -.. .
Забыть про ОНЛАЙН-обновление

Валенок
15.06.2023, 07:59
... slave-переменные не в конфигураторе ПЛК, а где-нибудь в текстовом варианте, например в VAR_GLOBAL, типа:

wVariable AT %QW7.1.0:WORD;
rVariable AT %QD7.2.0:REAL;

Будет ли это аналогично объявлению в конфигураторе ПЛК? A то я с ума сойду там вручную объявлять сотни переменных.
Структура + 1 переменная с at%

qqq
15.06.2023, 08:11
Структура + 1 переменная с at%

Можно, пожалуйста, подробнее? :confused:

Lukasevich
15.06.2023, 08:59
Например, так)
Как мне объявить сетевые переменные, которых будут сотни, но не ручками в конфигураторе ПЛК?

1exan
15.06.2023, 09:04
Наверное где-то уже было, можно ли объявлять slave-переменные не в конфигураторе ПЛК, а где-нибудь в текстовом варианте, например в VAR_GLOBAL, типа:

wVariable AT %QW7.1.0:WORD;
rVariable AT %QD7.2.0:REAL;

Будет ли это аналогично объявлению в конфигураторе ПЛК? A то я с ума сойду там вручную объявлять сотни переменных.

Можно, только сами переменные (без имён) всё равно нужно добавить в конфигурацию. Но обычно это не занимает много времени (Ctrl+C / Ctrl+V)

kondor3000
15.06.2023, 09:58
Например, так)
Как мне объявить сетевые переменные, которых будут сотни, но не ручками в конфигураторе ПЛК?

Можно, пожалуйста, подробнее? :confused:

Например так, без структуры 68323 А это работа 68324
В конфигурации ничего не объявлено. Массивы из 20 REAL и 20 INT прописаны с указанием адреса массива. Размер массива можно увеличить сколько надо, хоть 100 переменных и в конфиге по 80 добавить Ctrl+V ( адреса конечно поменять). Переменные будут r_[1] ; r_[2] ; и т. д.
i_[1] ; i_[2] ; и т. д.

А вообще, к такому принципу надо привыкнуть,
можно ведь проще, добавить 2BYTE, дать ему имя, например iVar и затем тиражировать (Ctrl+C / Ctrl+V), сколько надо, потом проставить только циферки.
Так намного быстрее и не запутаетесь в названии переменных.

dekart
15.06.2023, 10:08
Здравствуйте подскажите пожалуйста кто знает , в инструкции пишут что на пр102 нужна два блок питания один для выходных сигналов другой для входных сигналов . Объясните зачем два блок питания для чего такая защита ? Я думаю можно и одним блок питанием справиться и нечего страшного

IVM
15.06.2023, 10:14
Здравствуйте подскажите пожалуйста кто знает , в инструкции пишут что на пр102 нужна два блок питания один для выходных сигналов другой для входных сигналов . Объясните зачем два блок питания для чего такая защита ? Я думаю можно и одним блок питанием справиться и нечего страшного

Помехи замучают с одним БП.

kondor3000
15.06.2023, 10:15
Здравствуйте подскажите пожалуйста кто знает , в инструкции пишут что на пр102 нужна два блок питания один для выходных сигналов другой для входных сигналов . Объясните зачем два блок питания для чего такая защита ? Я думаю можно и одним блок питанием справиться и нечего страшного

Вы пишите в раздел ПЛК (среда CoDeSys V2.3), а надо в раздел Программируемых реле писать.
Можно и от одного блока, если не нужна развязка по питанию.

Туман
15.06.2023, 11:04
Забыть про ОНЛАЙН-обновление

Иди ка ты Валенок отлаживать процесс непрерывный на установке, когда в ней продукт, без Online обновления. Очешуеть какой полезный совет

Туман
15.06.2023, 22:51
Продолжайте отлаживать проект на продукте

Хватит валенком прикидываться. Не всегда возможно заменить чем-то аналогичным по физико-химическим свойствам продукт, часто процесс идет динамический, который и на суррогатах не желательно прерывать т.к. потери времени с новым запуском и выходом на режим, неприемлемы. Разработка и тестирование через мат модели, стенды пробивает брешь в бюджете и не подходит экономически. Я уж молчу про то, если выявляются какие-то баги в системе которая работает и которую нельзя останавливать. Понятно, что все это не о каких-то ответственных задачах типа АСУТП ядерного реактора, но большинство задача автоматизации решаются именно так. Пора оторваться от своих фантазий и/или уютных условий и выйти в реальный мир. И не раздавать подобные "советы"

Валенок
16.06.2023, 00:50
Если кто подскажет какие идеи - буду признателен.
.. предложено ..

..Очешуеть какой полезный совет

..Пора оторваться от своих фантазий и/или уютных условий и выйти в реальный мир. ..И не раздавать подобные "советы"
А надо было чего ? Вы сами определитесь с необходимыми советами. А там глядишь - и советы не нужны будут.



Иди ка ты .. отлаживать процесс непрерывный на установке, когда в ней продукт, без Online обновления.

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

..Приходится идти передергивать ему питание..
Ну так продолжайте передергивать питание на непрерывном процессе. Я не против.


PS
Причес тут WAGo не понял.
Ну и банальность в виде выкладывания проекта видимо не актуальна. Да еще и 2-3М

Duvall
17.06.2023, 10:02
Да, скрин не тот, но сделал, как написано. В итоге скачал заново прогу ту же самую прогу и открыл ее ииии вуаля все заработало, никогда такого не было и вот опять

Duvall
17.06.2023, 10:04
Кстати интересно. Есть вход на нем посажены принудительно отключении розеток физически, ну без проги просто нажали на кнопку он отрубает розетки. Но еще допустим, на нес посажена лампа, и когда розетки ты вырубаешь, то загорается лампа и наоборот. Как сделать, чтобы они работали вместе?

kondor3000
17.06.2023, 11:31
Кстати интересно. Есть вход на нем посажены принудительно отключении розеток физически, ну без проги просто нажали на кнопку он отрубает розетки. Но еще допустим, на нес посажена лампа, и когда розетки ты вырубаешь, то загорается лампа и наоборот. Как сделать, чтобы они работали вместе?

Значит не правильно подключили, вы похоже переключаете контакты фазы или ноля, а надо их разорвать.

Duvall
17.06.2023, 13:20
Еще вопрос, если убрать питание с плк контроллера, на котором горели выхода, они выкл, и когда питание снова даешь на контроллер, то они остаются выкл. Возможно ли при возврате питания, чтобы автоматически загорелись те выхода, которые были вкл до отключения контроллера?

kondor3000
17.06.2023, 18:29
Еще вопрос, если убрать питание с плк контроллера, на котором горели выхода, они выкл, и когда питание снова даешь на контроллер, то они остаются выкл. Возможно ли при возврате питания, чтобы автоматически загорелись те выхода, которые были вкл до отключения контроллера?

У вас же схема включает то, что запомнено по кнопке, сделайте при включении, чтобы кнопка срабатывала на секунду, например таймером PT.68364

Cs-Cs
18.06.2023, 09:27
Еще вопрос, если убрать питание с плк контроллера, на котором горели выхода, они выкл, и когда питание снова даешь на контроллер, то они остаются выкл. Возможно ли при возврате питания, чтобы автоматически загорелись те выхода, которые были вкл до отключения контроллера?
Да. Надо сделать те части программы, которые управляют выходами, RETAIN.

Туман
19.06.2023, 14:56
Да. Надо сделать те части программы, которые управляют выходами, RETAIN.

По мне вредный совет, состояния выходов должны формироваться каждый цикл в зависимости от входов и прочих входных воздействий

Валенок
19.06.2023, 18:39
.. состояния выходов должны формироваться каждый цикл...
По мне, так тоже вредный совет. Но подходит для большинства прикладных задача ввиду не значительного объёма вычислений.

Про CS CS предположу что сказал сильно обобщенно. Видимо имелось ввиду сохранение в ретайне данных история которых влияет на текущее состояние выходов.

Cs-Cs
19.06.2023, 20:51
Видимо имелось ввиду сохранение в ретайне данных история которых влияет на текущее состояние выходов Да. Я тут, по ходу, от стресса из-за кризисов в деменцию скатываюсь и начинаю плохо мысли формулировать.
Я имел ввиду вот что. Например, у меня есть FBшки, "импульсные реле", которые управляют светом. Я их объявляю как RETAIN (прям целиком, всю FBшку) - и их состояние сохраняется на момент пропажи питания.

Валенок
19.06.2023, 21:29
от стресса ...
помогает созерцание зелени
68375

Cs-Cs
20.06.2023, 09:23
Валенок /ОФФТОП/Пока нервы внутренние, не помогает. С прошлого года начинаю тупить и выгорать, так как переживаю за работу и проекты.
Успокаивает то, когда делаю что-то рассудочное и не читаю новости вообще, а (как страус в песок) погружаюсь в свои проекты и доделываю остатки щитов на ABB. А когда думаю о том, что будет дальше без ABB - то охота самовыпилиться. /ОФФТОП/

Короче, мы ща будет играть в XY-problem. Я рассуждал так:
* Чувак пишет про лампы. Значит управляет светом по кнопкам, ибо на ПЛК по другому никак. И значит не использует термин "свет" как синоним "электропитание".
* Значит имеет какие-то FB для управления по кнопкам
* Чувак пишет в теме про CDS 2.3. Значит там визуализации нет, и второго управления с экрана (по нарисованному переключателю на экране, который повторяет кнопку) - нет.

Поэтому для простого случая ему всё и написал. А если он хочет что-то точнее - то пусть даёт инфу точнее.
Ибо алгоритм вида "...при включении питания такие-то группы восстановить из RETAIN, а такие-то - привести в состояние по дискретным входам (выключателям)" - я делал в 2019.

PS. А на биту у меня есть плётки и аккумуляторная болгарка. Ей и кидаться можно, если чо =)

melky
20.06.2023, 09:41
Cs-Cs
Значит управляет светом по кнопкам, ибо на ПЛК по другому никак

ошибаетесь, давно была тема, как человек (заказчик) купил дорогие выключатели дизайнерской серии, а потом решил сделать вкл/выкл из разных мест на них. Там применили ПР еще 110(114) для реализации задачи, так как это оказалось дешевле замены выключателей.
Так что всякое бывает :)

Cs-Cs
20.06.2023, 11:12
melky Дай-ка, дружочек-балаблочек, пруф о том, где я СЕЙЧАС ошибаюсь.
Я написал ход своих рассуждений, основанный на том, какая информация была в теме.
А если её не дали - то это вопросы не ко мне.

melky
20.06.2023, 11:47
Cs-Cs вы не учитываете все ньюансы, а которых написал Валенок, если сами не сталкивались с ними, это не значит, что их нет или не может быть.

vitalij
21.06.2023, 09:20
Здравствуйте.
Использовал библиотеку модбас либ для чтения с устройств 8А, и обнаружил ,если после получения ответа от устройства не делать паузу допустим 10 мс, и сразу начинать опрашивать след.устройство. то в итоге процент ошибок выше 5%. Если же паузу делать в 10 мс. то процент ошибок минимизируется до 0.1%. Минимальное время цикла контроллера 1 мс. С чем связана такая особеннось модбас либ ?

Cs-Cs
21.06.2023, 10:01
vitalij .8А иногда при куче запросов к ним чудят и дают ошибки связи. Причмё чем длиннее запрос (например, если сразу половину регистров читать) - тем вероятнее ошибки проскакивают.

vitalij
21.06.2023, 10:40
спасибо.понял

In_Da_Cher_A
22.06.2023, 08:31
Минимальное время цикла контроллера 1 мс. если мне не изменяет память, то сам ОВЕН на своих курсах, первым делом учит ставить цикл минимум 10 мс

In_Da_Cher_A
22.06.2023, 12:58
Таких "учителей" - в садучителей не выбирают :D

An4343475
23.06.2023, 10:21
Ошибка при компиляции 3740, Неизвестный тип ALARM_2, какую библиотеку нужно подключить?

kondor3000
23.06.2023, 11:12
Ошибка при компиляции 3740, Неизвестный тип ALARM_2, какую библиотеку нужно подключить?

Oscat_Basic_333.lib https://owen.ru/product/codesys_v2/libraries

Semagar
26.06.2023, 09:10
Имею ПЛК63, скачал примеры программ: "Работа с библиотеками Ind_Mode и Work_Mode. Вывод информации на ЖКИ": https://ftp.owen.ru/CoDeSys23/07_Examples/02_Plc63_73/01_Ind_Mode_and_Work_Mode.zip
Открываю проект "Переключение режимов.pro" - среда пишет: "Следующие библиотеки не могут быть загружены...: systaskinfo.lib 20.2.06". На сайте такую библиотеку не нашел - где её взять?

Dimensy
26.06.2023, 09:28
Имею ПЛК63, скачал примеры программ: "Работа с библиотеками Ind_Mode и Work_Mode. Вывод информации на ЖКИ": https://ftp.owen.ru/CoDeSys23/07_Examples/02_Plc63_73/01_Ind_Mode_and_Work_Mode.zip
Открываю проект "Переключение режимов.pro" - среда пишет: "Следующие библиотеки не могут быть загружены...: systaskinfo.lib 20.2.06". На сайте такую библиотеку не нашел - где её взять?

Да это, вроде, родная библиотека

Semagar
26.06.2023, 09:36
Спасибо! У меня в дистрибутиве её почему-то нет.

vitalij
29.06.2023, 11:38
Здравствуйте. заметил такую особенность при использовании конфигуратора ,если UMD ставлю поллинг 200ms то обновление данных примерно 4 секунды, если поставлю поллинг 1000ms то обновление данных на входах занимает 16 секунд. как будто конфигуратор опрашивает только по одному регистру через интревал поллинг по порядку...(1 регистр прошла 1 секунда далее 2 регистр и тд.) Это нормально?
68526

petera
29.06.2023, 12:01
Здравствуйте. заметил такую особенность при использовании конфигуратора ,если UMD ставлю поллинг 200ms то обновление данных примерно 4 секунды, если поставлю поллинг 1000ms то обновление данных на входах занимает 16 секунд. как будто конфигуратор опрашивает только по одному регистру через интревал поллинг по порядку...(1 регистр прошла 1 секунда далее 2 регистр и тд.) Это нормально?
68526

Да, конфигуратор так и работает - по одному регистру за раз.

kondor3000
29.06.2023, 12:23
Здравствуйте. заметил такую особенность при использовании конфигуратора ,если UMD ставлю поллинг 200ms то обновление данных примерно 4 секунды, если поставлю поллинг 1000ms то обновление данных на входах занимает 16 секунд. как будто конфигуратор опрашивает только по одному регистру через интревал поллинг по порядку...(1 регистр прошла 1 секунда далее 2 регистр и тд.) Это нормально?

Советую скомпоновать вместе регистры WORD (до 40 шт.), потом Float (до 20 шт.) и читать их группами с помощью String https://owen.ru/forum/showthread.php?t=22915&page=39&p=244022&viewfull=1#post244022
А тут пример чтения всех регистров МВ110-8А, с помощью String https://owen.ru/forum/showthread.php?t=35094#10

vitalij
29.06.2023, 12:35
Советую скомпоновать вместе регистры WORD (до 40 шт.), потом Float (до 20 шт.) и читать их группами с помощью String https://owen.ru/forum/showthread.php?t=22915&page=39&p=244022&viewfull=1#post244022
А тут пример чтения всех регистров МВ110-8А, с помощью String https://owen.ru/forum/showthread.php?t=35094#10
спасибо. понимаю. стал пользоваться библиотекой модбас либ.

vitalij
29.06.2023, 12:37
Да, конфигуратор так и работает - по одному регистру за раз.

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

Kickit
02.07.2023, 23:10
Здравствуйте! Есть контроллер и сеть Modbus-RTU с несколькими slave-модулями в ней.

Задача: опрашивать один из slave-модулей более часто чем остальные.

Вопрос: можно ли этого добиться, задав в конфигураторе задач 2 задачи: одна задача - с более частым опросом одного модуля, вторая задача - опрос остальных модулей с меньшей частотой?

In_Da_Cher_A
03.07.2023, 04:46
Вопрос: можно ли этого добиться, задав в конфигураторе задач 2 задачи: одна задача - с более частым опросом одного модуля, вторая задача - опрос остальных модулей с меньшей частотой?сами попробуйте для начала сделать в КДС то, что пишите
и увязать ЗАДАЧУ с опросом
и опкажите скриншоты что у вас получается во всех конфигураторах

senkos
03.07.2023, 15:19
Здравствуйте, подскажите пожалуйста как правильно построить систему мастер-слэйв. Имеется ПЛК110 - МВ110.8а - СП307. Аналоговые данные с МВ110 поступают на ПЛК110, там обрабатываются и отправляются на СП307 для отображения. В СП307 задаются уставки, которые отправляются в контроллер для сверки с аналоговыми данными. Как мне связать все эти устройства?

kondor3000
03.07.2023, 16:02
Здравствуйте, подскажите пожалуйста как правильно построить систему мастер-слэйв. Имеется ПЛК110 - МВ110.8а - СП307. Аналоговые данные с МВ110 поступают на ПЛК110, там обрабатываются и отправляются на СП307 для отображения. В СП307 задаются уставки, которые отправляются в контроллер для сверки с аналоговыми данными. Как мне связать все эти устройства?

Сделайте ПЛК мастером для МВ110 и мастером для панели по одному порту ( добавлять в один Мастер только UMD для чтения и записи). Скорость, чётность и стоп бит одинаковые, разные только адреса слейвов.
Или ПЛК мастером для МВ110 и слейвом для панели по разным портам, как делать решайте сами.

Пример группового чтения всех параметров МВ110-8А https://owen.ru/forum/showthread.php?t=35094#10
По аналогии можно сделать и чтение, запись панели.

senkos
03.07.2023, 16:15
Сделайте ПЛК мастером для МВ110 и мастером для панели по одному порту ( добавлять в один Мастер только UMD для чтения и записи). Скорость, чётность и стоп бит одинаковые, разные только адреса слейвов.


Спасибо большое!
Получается я создаю в ModBus мастере один UMD для МВ110 и второй UMD для панели?

kondor3000
03.07.2023, 16:28
Спасибо большое!
Получается я создаю в ModBus мастере один UMD для МВ110 и второй UMD для панели?

Для панели один UMD для чтения, второй для записи (меняете настройку на By Value Change (запись по изменению).

senkos
03.07.2023, 19:30
Для панели один UMD для чтения, второй для записи (меняете настройку на By Value Change (запись по изменению).

Расскажите пожалуйста каким образом эти устройства будут соединяться, если все будет работать на одном порту. Например через RS485-1 я подключаю кабель от ПЛК к МВ, а куда мне подключать СП? Во второй порт на МВ?
Спасибо!

kondor3000
03.07.2023, 21:36
Расскажите пожалуйста каким образом эти устройства будут соединяться, если все будет работать на одном порту. Например через RS485-1 я подключаю кабель от ПЛК к МВ, а куда мне подключать СП? Во второй порт на МВ?
Спасибо!

Выше уже написал, если ПЛК мастер для МВ110 и панели, то подключается всё на один порт последовательно ( с одинаковыми настройками). ПЛК будет обращаться по очереди и к панели и к модулю, т. к. у них разные слейв адреса. Читать с модуля, читать с панели уставки и записывать в панель нужные регистры. Например так68609
С помощью String, читаю группой все регистры (48 шт. всего за 2 запроса) из модуля, а так же читаю и записываю по 20 REAL (Float) в панель. Ссылка выше.

senkos
03.07.2023, 21:58
Выше уже написал, если ПЛК мастер для МВ110 и панели, то подключается всё на один порт последовательно ( с одинаковыми настройками). ПЛК будет обращаться по очереди и к панели и к модулю, т. к. у них разные слейв адреса. Читать с модуля, читать с панели уставки и записывать в панель нужные регистры. Например так68609

Простите, я наверное не правильно вопрос последний поставил, мне не понятна тут электрическая схема подключения этих трех приборов в общую сеть RS485. Программно вроде как все понятно теперь.

Предполагаю что это подключение А1 к А2, далее А2 к А3 и тд. Б1 к Б2, далее Б2 к Б3 и тд. Но нарисовав схему как то это не похоже на последовательное соединение, электрически это параллельное соединение устройств. Или тут это все условно?

kondor3000
03.07.2023, 22:24
Простите, я наверное не правильно вопрос последний поставил, мне не понятна тут электрическая схема подключения этих трех приборов в общую сеть RS485. Программно вроде как все понятно теперь.

Предполагаю что это подключение А1 к А2, далее А2 к А3 и тд. Б1 к Б2, далее Б2 к Б3 и тд. Но нарисовав схему как то это не похоже на последовательное соединение, электрически это параллельное соединение устройств. Или тут это все условно?

Последовательно в смысле от ПЛК к модулю, от модуля к панели, можно и далее до 32 устройств без повторителя.

igro_r
04.07.2023, 15:26
68631 как такое могло получиться? причем на другом пк все нормально, переставил КДС и таргеты, ничего не помогает, проект загружается, но модули не опрашиваются. Может кто-то сталкивался с чем-то подобным. Это на ноуте рабочем, на объекте вот такое совсем не надо

kondor3000
04.07.2023, 15:32
68631 как такое могло получиться? причем на другом пк все нормально, переставил КДС и таргеты, ничего не помогает, проект загружается, но модули не опрашиваются
Такое бывает при замене целевой платформы со старой на новую ( на v2 или M[02] )
Вы вероятно меняли целевую платформу, либо поставили не тот таргет.

Здесь описана подобная проблема при переносе конфигурации https://owen.ru/forum/showthread.php?t=18269&page=2#17
и как можно исправить.

igro_r
04.07.2023, 15:41
Такое бывает при замене целевой платформы со старой на новую ( на v2 или M[02] )
Вы вероятно меняли целевую платформу ( при чём не правильно), либо поставили не тот таргет.

Таргет последний 3.3 для ПЛК110 60 М02, проект делался под ПЛК110 60 М02 изначально и в этом смысле ничего не менялось.

kondor3000
04.07.2023, 15:59
Таргет последний 3.3 для ПЛК110 60 М02, проект делался под ПЛК110 60 М02 изначально и в этом смысле ничего не менялось.

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

igro_r
04.07.2023, 16:23
[QUOTE=kondor3000;411644]Может был сбой или при первой установке программы или забыли поставить новый таргет. А проект пересохранили.
Попробуйте очистить всё, компилировать всё. Или выложите проект для проверки.
В таких случаях нужно иметь резервную копию

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

sanek1106
05.07.2023, 09:51
Здравствуйте, интересует следующий вопрос - на объектах стоят контроллеры плк-100, которые собирают информацию от счётчика количества жидкости по 8-му дискретному входу. Данные контроллеры передают информацию по 485 выходу через модем на телемеханику и являются 2013 года выпуска. Много лет подряд когда снимали счётчики количества жидкости, то питание данного контроллера отключали по причине того, чтобы при дальнейшем подключении счётчика количества жидкости не закоротили концы 24 вольта. Вопрос в следующем - прошло 10 лет с момента выпуска и эксплуаиации этого контроллера, не слетит ли программа спустя 10 лет и не придётся ли искать новую программу для заливки, а возможно и производить смену аккумулятора или в целом контроллер на аналогичный? Или же можно не беспокоиться и отключать питание данного контроллера и в дальнейшем для безопасности?

kondor3000
05.07.2023, 11:20
Здравствуйте, интересует следующий вопрос - на объектах стоят контроллеры плк-100, которые собирают информацию от счётчика количества жидкости по 8-му дискретному входу. Данные контроллеры передают информацию по 485 выходу через модем на телемеханику и являются 2013 года выпуска. Много лет подряд когда снимали счётчики количества жидкости, то питание данного контроллера отключали по причине того, чтобы при дальнейшем подключении счётчика количества жидкости не закоротили концы 24 вольта. Вопрос в следующем - прошло 10 лет с момента выпуска и эксплуаиации этого контроллера, не слетит ли программа спустя 10 лет и не придётся ли искать новую программу для заливки, а возможно и производить смену аккумулятора или в целом контроллер на аналогичный? Или же можно не беспокоиться и отключать питание данного контроллера и в дальнейшем для безопасности?

Сама программа не слетит, аккумулятор меняют по необходимости. Чтобы поменять контроллер на другой, нужен исходник программы или писать заново.
Если всё работает, то и продолжайте отключать питание, как делали.

Вячеслав@
07.07.2023, 13:39
Добрый день.
Подскажете, пожалуйста, кто знает, требуется ли перезагрузка ПЛК при загрузке нового файла local_addres.dat для применения новых сетевых настроек? Или достаточно залить новый файл?

EFrol
07.07.2023, 13:47
Требуется!

Вячеслав@
07.07.2023, 15:03
Требуется!
Спасибо! Обязательно питанием, или холодный сброс достаточно?

Ильнур
13.07.2023, 16:01
Всем привет!

Никто не подскажет как переменную типа REAL преобразовать в строку с форматированием?

Необходимо вывести REAL записать в строку в формате например 7.5e+002

kondor3000
13.07.2023, 16:05
Всем привет!

Никто не подскажет как переменную типа REAL преобразовать в строку с форматированием?

Необходимо вывести REAL записать в строку в формате например 7.5e+002

А подробней можно? Куда надо вывести? Почему 7.5e+002, а не 750 ?

Ильнур
13.07.2023, 16:21
У меня есть переменная типа REAL. Я вывожу эту переменную на панель оператора. В панели оператора нет формата типа 7.5e+002 (нет такого формата вывода), а мне нужно именно в таком формате показывать эту переменную на панели. Вот подумал, что можно преобразовать в строку с форматированием типа 7.5e+002.

Если переменной REAL задать значение 0,01 и потом преобразовать в строку, то получиться '1.e-002' и передать на панель эту строку и все норм. Но если значение будет равно 750, то строка тоже будет '750', а мне надо чтобы было 7.5e+002

kondor3000
13.07.2023, 16:27
У меня есть переменная типа REAL. Я вывожу эту переменную на панель оператора. В панели оператора нет формата типа 7.5e+002 (нет такого формата вывода), а мне нужно именно в таком формате показывать эту переменную на панели. Вот подумал, что можно преобразовать в строку с форматированием типа 7.5e+002.

Если переменной REAL задать значение 0,01 и потом преобразовать в строку, то получиться '1.e-002' и передать на панель эту строку и все норм. Но если значение будет равно 750, то строка тоже будет '750', а мне надо чтобы было 7.5e+002

Без специальных ухищрений не получится, строка в таком формате будет только в 7-8 степени и выше.
Придётся писать программу, которая отслеживает сколько знаков и выводит строку.
Обычно вопрос стоит наоборот, как убрать степень)))

EFrol
13.07.2023, 21:36
У меня есть переменная типа REAL. Я вывожу эту переменную на панель оператора. В панели оператора нет формата типа 7.5e+002 (нет такого формата вывода), а мне нужно именно в таком формате показывать эту переменную на панели. Вот подумал, что можно преобразовать в строку с форматированием типа 7.5e+002.

Если переменной REAL задать значение 0,01 и потом преобразовать в строку, то получиться '1.e-002' и передать на панель эту строку и все норм. Но если значение будет равно 750, то строка тоже будет '750', а мне надо чтобы было 7.5e+002

Значит ли это, что:


strVal := REAL_TO_STRING(750/1000); // strVal := '7.5e-001'?
exp := STRING_TO_INT(RIGHT(strVal, 4)) + 3; // exp := 2

IF exp < 0 THEN
sign := '-'
exp := -exp;
ELSE
sign := '+' // sign := '+'
END-IF

strVal := LEFT(strVal, LEN(strVal) - 4) + sign + RIGHT('00' + INT_TO_STRING(exp), 3); // strVal := '7.5e+002'

Валенок
14.07.2023, 03:22
... на панель оператора..
Подробней, говорили же

Ильнур
15.07.2023, 11:09
Подробней, говорили же

Панели одинаковые, ПЛК разные...два разных проекта.

Здесь тоже преобразование реализовано на ПЛК.

Easy_Enemy
15.07.2023, 14:07
Доброго дня!
Есть ПЛК160 (Codesys 2.3). По модбас опрашивает другие модули (овен и не овен). Пришел момент "свалить все в одну кучу". Условно, есть у нас где-то там модуль 16Р, у которого на 1 выходе сидит привод, коий можно ворочать в положении вкл/выкл. На отладке управление было простое: WS20_21.Ai[1] присваиваем то, либо иное значение. Дошло дело до написания управления и хотелось бы сделать некий общий список устройств по всей системе с более интуитивным кодом, например MV201.close (название крана на схеме, который и сидит на первом выходе 16P и необходимое действие). Вопрос (после смеси паскаля с си, немножко луа и пайтона уже поплыл в синтаксисе): в какой форме правильно объявить все сетевые переменные (устройства на входах) и добавить к ним действия? Думал, что через универсальную функцию, да что-то по документации не срастается. Вроде как нельзя просто взять и написать FUNCTION (*название устройства с последующем указанием в коде где оно есть*, *че делать с ним*) ввиду проблем с глобальными переменными. Спасибо!

1exan
15.07.2023, 14:23
А к модулю то как подключаетесь? Через конфигурацию или библиотеки?

Cs-Cs
15.07.2023, 14:32
Easy_Enemy Так не принято. Но если очень хочется - то можно оформить какие-то управляторы и элементы в виде фунциональных блоков. А к ним добавить Действия. Тогда можно вызывать действия в виде "MyFB.Close".
Но где-то потом всё равно надо будет забрать из FB обычные данные и обычным способом передать их на модули IO.

Easy_Enemy
15.07.2023, 14:46
А к модулю то как подключаетесь? Через конфигурацию или библиотеки?
Библиотеками, реализовал через Универсальный диспетчер modbus


Easy_Enemy Так не принято. Но если очень хочется - то можно оформить какие-то управляторы и элементы в виде фунциональных блоков. А к ним добавить Действия. Тогда можно вызывать действия в виде "MyFB.Close".
Но где-то потом всё равно надо будет забрать из FB обычные данные и обычным способом передать их на модули IO.

Двойной кошмар.. И кодесис чуднОй сам по себе, а тут еще и эти блоки.. Нас такому не учили, чистый код всегда роднее) Штош, тогда пойдем длинным путем. Спасибо!

Cs-Cs
15.07.2023, 16:06
Двойной кошмар.. И кодесис чуднОй сам по себе, а тут еще и эти блоки.. Нас такому не учили, чистый код всегда роднее) Штош, тогда пойдем длинным путем. Спасибо!
Фигушки =) В терминах CodeSys как раз FB - это чистый код и есть. А попытки из него сделать ООП - это дичь =)
Ну, образно, если хочется - то ты можешь считать что FB - это классы, которые имеют несколько экземпляров и действия (методы без аргументов).
ПЛК - это ни фига не СИ, и не похож на виндовские языки программирования.

1exan
15.07.2023, 17:17
Доброго дня!
Есть ПЛК160 (Codesys 2.3). По модбас опрашивает другие модули (овен и не овен). Пришел момент "свалить все в одну кучу". Условно, есть у нас где-то там модуль 16Р, у которого на 1 выходе сидит привод, коий можно ворочать в положении вкл/выкл. На отладке управление было простое: WS20_21.Ai[1] присваиваем то, либо иное значение. Дошло дело до написания управления и хотелось бы сделать некий общий список устройств по всей системе с более интуитивным кодом, например MV201.close (название крана на схеме, который и сидит на первом выходе 16P и необходимое действие). Вопрос (после смеси паскаля с си, немножко луа и пайтона уже поплыл в синтаксисе): в какой форме правильно объявить все сетевые переменные (устройства на входах) и добавить к ним действия? Думал, что через универсальную функцию, да что-то по документации не срастается. Вроде как нельзя просто взять и написать FUNCTION (*название устройства с последующем указанием в коде где оно есть*, *че делать с ним*) ввиду проблем с глобальными переменными. Спасибо!

Я не сильно понял, в чём затруднение, но я как-бы и не "гуру чистого кода", но можно сделать например так:
создать структуру "VALVE" с переменными "close" и "open" (ну и другими полями если нужно)
Добавить в программу переменную типа "VALVE" с названием "MV201", обращаться внутри программы по "MV201.close"("MV201.ореn").

Отдельно где-то потом присваивать выходной переменной (можно в виде MODULE.IN.b, где MODULE - экземпляр модуля вывода, IN- вход модуля (битовая маска выходов), и b - номер бита (выхода)) нужное поле структуры "VALVE"

Валенок
15.07.2023, 18:51
Панели одинаковые.. .
Прямоугольные и черные небось?

Александр Ч.
17.07.2023, 09:19
Добрый день! Подскажите пожалуйста в чем может быть дело. Есть два ПЛК110-(220/24)-30.М, заливаю программу(не мной написанную) на 190 кб(есть предупреждения о несоответствии типов UINT /INT) - раз в полсекунды мигает светодиод "Работа"(у обоих). В инструкции что то про сбой в ОС ПЛК. Любая другая прога, в частности простейший Ген(BLINK), вполне себе четко отрабатывает и длительное время(тоже на обоих). Предположу, что виновата программа. Может кто сталкивался с подобным? Спасибо

kondor3000
17.07.2023, 09:24
Добрый день! Подскажите пожалуйста в чем может быть дело. Есть два ПЛК110-(220/24)-30.М, заливаю программу(не мной написанную) на 190 кб(есть предупреждения о несоответствии типов UINT /INT) - раз в полсекунды мигает светодиод "Работа"(у обоих). В инструкции что то про сбой в ОС ПЛК. Любая другая прога, в частности простейший Ген(BLINK), вполне себе четко отрабатывает и длительное время(тоже на обоих). Предположу, что виновата программа. Может кто сталкивался с подобным? Спасибо

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

Александр Ч.
17.07.2023, 13:07
Программа во вложении

Cs-Cs
17.07.2023, 13:24
Программа во вложении Какая ужасная. На будущее:
1. В дереве POU можно создавать папки и подпапки. Элементы программы надо разложить по ним.
2. В коде нужно делать комментарии.
3. Переменные надо называть понятными именами. Все. Включая и всякие tp1, tp2 и так далее.
4. Некоторые вещи, где пакетно что-то обрабатывается, нужно писать на ST в цикле и массивах, а не через CFC.

kondor3000
17.07.2023, 14:35
Добрый день! Подскажите пожалуйста в чем может быть дело. Есть два ПЛК110-(220/24)-30.М, заливаю программу(не мной написанную) на 190 кб(есть предупреждения о несоответствии типов UINT /INT) - раз в полсекунды мигает светодиод "Работа"(у обоих). В инструкции что то про сбой в ОС ПЛК. Любая другая прога, в частности простейший Ген(BLINK), вполне себе четко отрабатывает и длительное время(тоже на обоих). Предположу, что виновата программа. Может кто сталкивался с подобным? Спасибо

Первое, что бросается в глаза, во всех блоках на языке CFC не правильный порядок работы элементов,
надо правой кнопкой мыши по холсту выставить Порядок/ В соответствии с потоком данных.
Второе, не подключены 2 входа в блоках программы.
Третье, в двух местах надо заменить тип INT на UINT и наоборот.

А так программа компилируется, значит явных ошибок нет, нужна отладка программы вами или автором.
Да, ещё несколько блоков не работают, (не вызваны в программе), в дереве выделены серым цветом (может так и задумано автором).

1exan
17.07.2023, 18:13
Программа во вложении

Проверяйте значения индексов массивов - скорее всего там проблема

kondor3000
18.07.2023, 20:23
Программа во вложении

Сделал всё, что написал, в предыдущем посте.
Запустил программу в эмуляции, в программе включил Имитатор, отработали 4 ПЧ, 4 насоса, 4 RGB подсветки, 68970
Прога проработала 1 час без проблем и 7 шагов. Но в ней не хватает 2 визуализаций и частично не подключены блоки
Если и есть проблемы, то в связи с панелью, ПЧ или модулями ВВ, возможны мелкие недочёты, но в целом прога рабочая. 68972

Doffy
25.07.2023, 10:03
Здравствуйте, вот такие 2 ошибки не подскажите, как решить