PDA

Просмотр полной версии : CODESYS V3.5. Вопросы и ответы



Страницы : [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

ООО "БЛС инжинеринг"
12.12.2014, 20:04
Здравствуйте! Очень нужен ваш совет-помощь.
1) Как можно в CODESYS V3.5 SP5 язык программирования LD сохранить вводимое значение чтоб оно сохранялось при выключении питания,
ну и соответственно когда включишь панельку прошлое вводимое значение уже было и не изменённым ну и не сброшенным.
2) И также для вводимого значения с кнопки для таймера
3) И как можно это подключить, желательно визуальный пример.

За ранее благодарен
Прилагаю скриншот
15691

ООО "БЛС инжинеринг"
13.12.2014, 20:14
Что не кто не знает ответа?

ASo
13.12.2014, 20:22
Ответ есть в инструкции. Объявить соответствующую переменную RETAIN.

ООО "БЛС инжинеринг"
14.12.2014, 00:02
Я ведь тока учусь и много чего не знаю.
Вас не затруднить показать пример?

smk1635
14.12.2014, 00:58
Я ведь тока учусь и много чего не знаю.
Вас не затруднить показать пример?

При объявлении:
15711

Или руками прописать:
15712

ООО "БЛС инжинеринг"
14.12.2014, 02:01
СПАСИБО получилось и работает, сначала не совсем понял а потом с примером сразу понял .
А как быть с вводом времени в TON вот пример как я сделал 15713 но это время в программе а как можно его вывести на кнопку?

smk1635
14.12.2014, 02:20
СПАСИБО получилось и работает, сначала не совсем понял а потом с примером сразу понял .
А как быть с вводом времени в TON вот пример как я сделал 15713 но это время в программе а как можно его вывести на кнопку?

Хотите изменять уставку времени с панели контроллера ?

ООО "БЛС инжинеринг"
14.12.2014, 14:25
Да верно и чтобы тоже сохранялось указанное время

smk1635
14.12.2014, 15:34
На входа функциональных блоков Вы всегда подаете переменные. Тип переменой для каждого ФБ есть в описании.
То есть на вход РТ нам надо подать переменую типа TIME. Это переменная в виде константы и имеет запись вида "T#...s". Задать просто числом мы не можем, так как число это переменная типа WORD или INT. Компилятор будет ругаться. Так что ни что не мешает нам подать на вход ретайн-переменую допустим VREMYA типа TIME. И дальше работать с ней.

ООО "БЛС инжинеринг"
14.12.2014, 20:21
Почему то не получается.
Я сделал А2 переменную тип TIME и к нему подключил кнопку
1 при вводе в окне получается T#0ms
2 не вводится значения
3 и почему получились мили секунды
15716

amn
14.12.2014, 20:32
Сделайте в визуализации переменную типа WORD, потом в программе преобразуйте ее WORD_TO_TIME и на вход PT. Время будет в миллисекундах. Если хотите в секундах, то перед тем как преобразовать в TIME сначала умножьте на 1000. Тогда в визуализации вводите просто цифру (в секундах).

ООО "БЛС инжинеринг"
14.12.2014, 20:40
Сейчас попробую

smk1635
14.12.2014, 21:13
Почему то не получается.
Я сделал А2 переменную тип TIME и к нему подключил кнопку
1 при вводе в окне получается T#0ms
2 не вводится значения
3 и почему получились мили секунды

1. По тому что А2 имеет тип TIME. Он, как писал выше, задаётся в виде "T#...s". Вы прописали выводить в окно значение A2, оно и выводится.
2. И не введется. С клавиатуры можно задать только числа. То есть переменные типа WORD или INT. А у нас тип TIME. Надо использовать для ввода не цифровую панель, а текстовый ввод (выбрать в выпадающем меню - текст).
3. Все временные параметры в программе работают в формате ms. Т.е. да же если ввели в секундах, то в программе будут обрабатываться ms.

Предлагаю сделать следующее.
1. Так как нам надо задавать значение выдержки времени в простом цифровом виде, то объявляем переменую А2 типом WORD и ретайн. На экране ни чего не трогаем.
2. Теперь надо преобразовать наш тип WORD в TIME. Делается это при помощи блока "WORD_TO_TIWE".
3. Так как пользователь задает в секундах, то их надо преобразовать в ms. КДС автоматически преобразовывет в миллисекунды если запись сделана в формате "Т#...s". Во всех остальных случаях надо преобразовывать самим. Т.е. после преобразования из ворд в тайм, мы в програме получаем значение ms. Т.е. если мы в панели введём 4, то после преобразования из ворд в тайм получим 4 ms. По этому после преобразования надо умножить на 1000.

Должны получить такую конструкцию:
15718

ООО "БЛС инжинеринг"
14.12.2014, 23:36
У меня вводится значение и работает но без умножителя так как в языке LD в умножителе больше ножек я везде вводил 1000 но...... нету результата
15720

smk1635
14.12.2014, 23:49
У меня вводится значение и работает но без умножителя так как в языке LD в умножителе больше ножек я везде вводил 1000 но...... нету результата

Это же LD. Он не очень заточен для работы с функциональными блоками.
Попробуйте так :
15721

ООО "БЛС инжинеринг"
15.12.2014, 21:39
Попробую ещё на CFC

Genek
16.12.2014, 10:23
Имею панель СПК107 (версия прошивки 3.939 версия таргета 3.5.4.0) и модуль MB110-A8. Необходимо отслеживать температуру и иметь возможность посмотреть историю изменения.
Для этого был выбран элемент "Тренд". Codesys v3.5 sp5.
Вставляю, привязываю переменную, но при компиляции выдаются ошибки
[ ERROR ] visutrendstorageaccess , 3.5.5.0 ( system ): TrendFbTable: C0086 : Не найдено определения для интерфейса ' STO .ITable2'
[ ERROR ] visutrendstorageaccess , 3.5.5.0 ( system ): TrendFbRow : C0086 : Не найдено определения для интерфейса ' STO .IRow2'
[ ERROR ] visutrendstorageaccess , 3.5.5.0 ( system ): TrendFbCursor: C0086 : Не найдено определения для интерфейса 'STO.ICursor2'
[ ERROR ] visutrendstorageaccess , 3.5.5.0 ( system ): TableOpen [TrendFbStorage]: C0032: Невозможно конвертировать тип 'TrendFbTable( visutrendstorageaccess , 3.5.5.0 ( system ))' в тип 'ITable(caa storage, 3.5.4.0 (caa technical workgroup))'
[ ERROR ] visutrendstorageaccess , 3.5.5.0 ( system ): TableOpen [TrendFbStorage]: C0032: Невозможно конвертировать тип 'TrendFbTable( visutrendstorageaccess , 3.5.5.0 ( system ))' в тип 'ITable(caa storage, 3.5.4.0 (caa technical workgroup))'
[ ERROR ] visutrendstorageaccess , 3.5.5.0 ( system ): CursorOpen [TrendFbTable]: C0032: Невозможно конвертировать тип 'TrendFbCursor( visutrendstorageaccess , 3.5.5.0 ( system ))' в тип 'ICursor(caa storage, 3.5.4.0 (caa technical workgroup))'
[ ERROR ] visutrendstorageaccess , 3.5.5.0 ( system ): RowDelete2 [TrendFbTable]: C0032: Невозможно конвертировать тип 'LINT' в тип 'DWORD'
[ ERROR ] visutrendstorageaccess , 3.5.5.0 ( system ): RowDelete2 [TrendFbTable]: C0032: Невозможно конвертировать тип 'LINT' в тип 'DWORD'
[ ERROR ] visutrendstorageaccess , 3.5.5.0 ( system ): RowSelect [TrendFbTable]: C0032: Невозможно конвертировать тип ' TrendFbRow ( visutrendstorageaccess , 3.5.5.0 ( system ))' в тип 'IRow(caa storage, 3.5.4.0 (caa technical workgroup))
........
Компиляция завершена -- 44 ошибок, 1 предупреждений
Компиляция завершена -- 44 ошибок, 1 предупреждений : загрузка невозможна!
Обновление в "Менеджер библиотек->Заполнители" библиотек CAA Storage и CAA Storage Imp 3.5.4.0->3.5.5.0 приводит к тому, что проект компилируется но под конец загрузки на панель выдает следующее http://floomby.ru/s2/jeGkFS
Не понимаю в чем может быть проблема, инструкции не нашел по этому поводу.
Нelp me!

Owl10
16.12.2014, 16:18
не забывайте об ограниченности WORD иногда необходимо применять (DWORD)!

ООО "БЛС инжинеринг"
16.12.2014, 21:44
Почему и в чём ограничение?

amn
17.12.2014, 01:42
WORD - от 0 до 65535
DWORD - от 0 до 4294967295
Например 65535 мс это всего лишь 65,535 секунд. Если надо больше, то надо использовать DWORD.

Эдуард_Н
17.12.2014, 15:30
Можно ещё и так:

ООО "БЛС инжинеринг"
18.12.2014, 19:16
А как можно сделать чтоб вводить значение к примеру полтора секунды?

ASo
18.12.2014, 20:09
Может, все таки поступите в школу и как следует ее окончите?

Эдуард_Н
18.12.2014, 20:44
Пробуй так

smk1635
18.12.2014, 21:04
Пробуй так

Вот не плохой способ конечно. Но обычно стремятся уменьшить количество переменных гоняемых по сети. :)

Эдуард_Н
18.12.2014, 21:10
Вот не плохой способ конечно. Но обычно стремятся уменьшить количество переменных гоняемых по сети. :)

Ваше какое будет решение? Интересно посмотреть.
Век живи, век учись.

smk1635
18.12.2014, 21:52
Ваше какое будет решение? Интересно посмотреть.
Век живи, век учись.

Так же как и предложил выше. Только переменная задания времени не WORD а REAL.
А так всё то же самое. Умножаем переменную на 1000 и конвертируем REAL_TO_TIME.

Эдуард_Н
19.12.2014, 04:12
Ваш вариант получаеться жесковат, мой более гибче. А переменных такое количество потому, что полный вариант показал.

ООО "БЛС инжинеринг"
19.12.2014, 21:43
Как можно сделать так чтоб нажимая на панель (фигуру) чтоб она меняла сваю форму?

Варелка
20.12.2014, 20:16
Всем добра. Вопрос по визуализации. Можно ли сменить отображаемую визуализацию из программы. То есть по нажатию кнопки вызвать функцию на СТ, к примеру, а в ней сменить визуализацию? Нужно для реализации парольной защиты. Сначала проверить, правильно ли введен пароль (с помощью VisuDialogs.KeyPad) и если правильно, перейти на другой экран. Если сделать последовательно два действия в обработчике кнопки (ст-код, а потом смена визуализации) ничего не выходит. Буду благодарен за помощь.

Варелка
20.12.2014, 20:58
Всем добра. Вопрос по визуализации. Можно ли сменить отображаемую визуализацию из программы. То есть по нажатию кнопки вызвать функцию на СТ, к примеру, а в ней сменить визуализацию? Нужно для реализации парольной защиты. Сначала проверить, правильно ли введен пароль (с помощью VisuDialogs.KeyPad) и если правильно, перейти на другой экран. Если сделать последовательно два действия в обработчике кнопки (ст-код, а потом смена визуализации) ничего не выходит. Буду благодарен за помощь.


кому интересно. нашел вот это http://ftp.owen.ru/index.html/CoDeSys3/docs/instructions/%C9%DA%CD%C5%CE%C5%CE%C9%C5%20%CF%D4%CF%C2%D2%C1%D 6%C1%C5%CD%CF%CA%20%D7%C9%DA%D5%C1%CC%C9%DA%C1%C3% C9%C9%20codesys%20v3.pdf

ООО "БЛС инжинеринг"
20.12.2014, 22:33
Как можно вывести время и дату на панель СПК 107 ?
15820

ООО "БЛС инжинеринг"
21.12.2014, 19:29
Как можно вывести время и дату на панель СПК 107 ну или другую?
15820

Кто подскажет как вывести время на панельку?

GoodLuck
21.12.2014, 22:12
Посмотрите здесь http://www.owen.ru/forum/showthread.php?t=15530

в разделе Примеры программ/системное время

ООО "БЛС инжинеринг"
24.12.2014, 23:48
Посмотрите здесь http://www.owen.ru/forum/showthread.php?t=15530

в разделе Примеры программ/системное время

А как это сделать в LD

жекон
25.12.2014, 07:04
Справка Вам в помощь 15888

Эдуард_Н
25.12.2014, 08:12
Откуда скрин? Может весь док интересен? Дайте ссылку на документ.

petera
25.12.2014, 08:21
Откуда скрин? Может весь док интересен? Дайте ссылку на документ.
Нажмите "F1" и будет Вам счастье:rolleyes:

жекон
25.12.2014, 08:21
Стандартная справка Кодесуса

Эдуард_Н
25.12.2014, 08:25
Понял, а ктонибудь знает как её всю распечатать? И в каком разделе там про время? Превели бы эту справку в PDF как во 2ом КДС.

жекон
25.12.2014, 08:49
Понял, а ктонибудь знает как её всю распечатать? И в каком разделе там про время? Превели бы эту справку в PDF как во 2ом КДС.15890
Там и кнопочка печать есть

Эдуард_Н
25.12.2014, 08:56
Печатает только она текущий раздел:)

жекон
25.12.2014, 09:02
Печатает только она текущий раздел:)Ну хоть так и то ладно

Sashokxxx
25.12.2014, 15:57
функция Modbus 16 H MB_WR_REGS - библиотека Modbus 3.2.0.
В буфере меняется содержимое, то есть первый запрос в норме,
далее в буфере каша, на выходе ерунда. Дело в задержках может?

send_Many_Parametrs_modbus(
Enable:= enabl AND (NOT cmpEndOperating), (* разрешение работы блока *)
Mode:= MB_RTU, (*режим передачи*)
DevAddr:=2, (*адрес*)
FirstAddr:=50, (*ячейка*)
Quantity:= 1,
ComHandle:= hand,
TimeOut:= TimeOutMy,
Buffer:=Buffer_My, (*Вот здесь косяк выходит*)
Complete => cmpEndOperating,
Exception => ExceptionMy,
RegCnt => Cmt_My
);

ООО "БЛС инжинеринг"
25.12.2014, 20:34
Справка Вам в помощь 15888

Работает
15898

amn
25.12.2014, 22:46
Sashokxxx, параметр send_Many_Parametrs_modbus.Enable надо после первого вызова сбросить в FALSE. Далее вызывать блок со сброшенным параметром до тех пор, пока Complete будет TRUE. И только потом смотрите буфер.

Sashokxxx
26.12.2014, 09:49
Sashokxxx, параметр send_Many_Parametrs_modbus.Enable надо после первого вызова сбросить в FALSE. Далее вызывать блок со сброшенным параметром до тех пор, пока Complete будет TRUE. И только потом смотрите буфер.

Согласен
send_Many_Parametrs_modbus(
Enable:= NOT cmpEndOperating, (* разрешение работы блока *)
Mode:= MB_RTU, (*режим передачи*)
DevAddr:=2, (*адрес*)
FirstAddr:=0, (*ячейка*)
Quantity:= 1,
ComHandle:= hand,
TimeOut:= TimeOutMy,
Buffer:=Buffer_My,
Complete => cmpEndOperating,
Exception => ExceptionMy,
RegCnt => Cmt_My
);

Buffer:=Buffer_My - первое, у меня в буфер Buffer_My - записывается, хотя я пишу в Buffer. Это нормально, что пишется в Buffer, а потом изменяется Buffer_My?
Это в принципе не проблема можно сделать так: перед тем как записать снова в Buffer, я пишу нужные данные в мой буфер Buffer_My (Buffer_My_copy:=Buffer_My; - сделал копию, а перед вызовом
send_Many_Parametrs_modbus делаю Buffer_My := Buffer_My_copy; ) Допустим работает, реально обмен идет, на выходе правильное значение.
Но периодически в CodeSys я наблюдаю Exception = 255 (то есть ошибка таймаута) TimeOutMy - делал разный 50 мс сейчас. В конфигураторе 50 мс, на аварию устройство настроено выходить при разрыве связи 5 секунд.
Вопрос почему возникает исключение(где посмотреть)?
И второе, можно ли как то посмотреть исходный код send_Many_Parametrs_modbus (функции библиотеки Modbus.lib) может тогда прояснится что делается с буфером, очевидно что она берет как то указатель на мой буфер и сует туда ответ какой то. Добрые люди поделитесь соображениями!)

Sashokxxx
26.12.2014, 11:32
Еще немного поразмыслив и порыв форум http://www.owen.ru/forum/showthread.php?t=8556&page=5 нашел что то похожее, начал экспериментировать, действительно, на скорости обмена 9600 появляется ошибка тайм аута, если поменять скорость выше 115200 - я использовал, ошибки нет. Дело в библиотеке. С OwenLib ошибок не возникало. Так что вопрос как отредактировать библиотеку остается открытым, если можно подробнее.??? Так же поделитесь кто чем пользуется для связи НЕ с овеновским оборудованием, у меня 2 устройства в системе сторонние из всего что я нашел - решил что Modbus.lib более менее подходит. Через конфигуратор Codesys возможно получится одно подключить, а вот второе оборудование только через библиотеку, так как там ASCii.

amn
26.12.2014, 13:06
Библиотека открытая, можно открыть ее как обычный проект. Сделать полный доступ для просмотра и редактирования Project -> Object -> Properties -> Full Access.

Буфер передается по ссылке (тип параметра VAR_IN_OUT). Зачем делать копию? Приготовили нужный буфер и передаем его в блок. Используйте конструкцию case.

case step of

0: кладем значение в буфер
step:=2;

1: (*вызываем блок с Enable:= TRUE*)
send_Many_Parametrs_modbus(
Enable:= TRUE, (* разрешение работы блока *)
Mode:= MB_RTU, (*режим передачи*)
DevAddr:=2, (*адрес*)
FirstAddr:=0, (*ячейка*)
Quantity:= 1,
ComHandle:= hand,
TimeOut:= TimeOutMy,
Buffer:=Buffer_My,
Complete => cmpEndOperating,
Exception => ExceptionMy,
RegCnt => Cmt_My
);

send_Many_Parametrs_modbus.Enable:=FALSE; (*изменяем параметр Enable* перед следующим вызовом блока)

step:=2;

2: (*продолжаем вызывать блок, пока не отработает полностью (Complete=TRUE)*)
send_Many_Parametrs_modbus(Buffer:=Buffer_My); (*остальные параметры можно не указывать, т.к. они не изменяются, а буфер надо указывать, иначе компилятор ругается*)
...
step=3;

3:
делаем паузу перед следующим опросом.

end_case

Sashokxxx
26.12.2014, 20:31
попробую, а задержку между посылками запроса с Enabl:=true какого порядка, 10мс, 50мс... ? И еще я так то встречал, что можно открыть как проект, может где еще качать такую надо? У меня на диске вот какая ( см. во вложении). Я не понял как ее можно открыть как проект. Может другое расширение должно быть, не подскажите, где тогда взять или у кого есть?
И такой общий вопрос, для поддержания связи мне нужно делать запрос как минимум раз в настроенное в конфигураторе время Аварии ? Если так то и время паузы между посылками может быть таким. Например мне нужно посылать значения раз в секунду, аварию настраиваю на 5 секунд, а паузу между запросами на 1, так я понимаю?
Может кто поделится небольшим проектиком в Codesys3.5?

ООО "БЛС инжинеринг"
26.12.2014, 21:24
Подскажите почему триггеры F_TRIG и R_TRIG в схеме не работают ведь у них выход BOOL и лампочка не загорается в работе не по переднему ни по заднему фронту?
15907
а на счетчике CTU правильно работает

ASo
26.12.2014, 21:36
Вы вообще что нибудь знаете????

Эдуард_Н
26.12.2014, 21:47
Подскажите почему триггеры F_TRIG и R_TRIG в схеме не работают ведь у них выход BOOL и лампочка не загорается в работе не по переднему ни по заднему фронту?
15907
а на счетчике CTU правильно работает

Читать то, когда начнёте?

ООО "БЛС инжинеринг"
26.12.2014, 22:05
Читать то, когда начнёте?

Не понял как мне сделать чтоб катушка сработала по заднему фронту?

amn
26.12.2014, 22:12
ООО "БЛС инжинеринг", потому что триггер так устроен. Принцип работы можно посмотреть в файле CoDeSys_V23_RU.pdf страница 345 (можно скачать с сайта).

ООО "БЛС инжинеринг"
26.12.2014, 23:20
Как можно сделать в LD так чтобы достигая указанной даты появилась TRUE?

kukla100
27.12.2014, 04:18
ООО «БЛС ИНЖИНИРИНГ», вы решили пересесть с буржуев на отечественных производителей?

Sashokxxx
27.12.2014, 15:03
Выкладываю рабочий пример записи в регистр команда 0x16, может кому пригодится. Внимание запись идет 1 раз в секунду. Авария в ведомом (Slave) устройстве выставлена больше этого времени, в моем случае 5 секунд. В примерах в описании библиотек есть ошибки, они описаны кое где на форуме, в частности нужно указывать дескриптор порта, а не номер при вызове функции записи. Так же в моем случае использовался СПК207, номер порта в функции открытия нужно указывать +1 от реального, так же как и в организации связи внутренними возможностями Codesys (я имею ввиду конфигуратор). То есть у меня порт COM2, значит указываю 3 номер.

ООО "БЛС инжинеринг"
27.12.2014, 23:39
ООО «БЛС ИНЖИНИРИНГ», вы решили пересесть с буржуев на отечественных производителей?

Пытаемся но не известно как получится в дальнейшем.
В данный момент пользуемся Дельтой.

ООО "БЛС инжинеринг"
28.12.2014, 00:03
Я понимаю что это элементарный вопрос но пака я его не решил…
Подскажите как мне в CODESYS V3.5 SP5 соединить параллельно несколько элементов, как показать на скрине
15913
И где можно подробнее прочитать о языке LD

kukla100
28.12.2014, 04:54
Пытаемся но не известно как получится в дальнейшем.
В данный момент пользуемся Дельтой.

И кто вам пишет проги под дельту?

жекон
28.12.2014, 18:25
Я понимаю что это элементарный вопрос но пака я его не решил…
Подскажите как мне в CODESYS V3.5 SP5 соединить параллельно несколько элементов, как показать на скрине
15913
И где можно подробнее прочитать о языке LD
Я не понимаю чего вы так зациклились на LD рисуйте на CFC, еще понятно когда выбора языков маловато, или один LD с IL впридачу

Эдуард_Н
28.12.2014, 19:13
Есть желание изучить язык ST. Подскажите какую литературу почитать? Может кто нибудь примерами с комментариями поделиться.

ООО "БЛС инжинеринг"
28.12.2014, 19:33
И кто вам пишет проги под дельту?

Один парень из Калуги

ООО "БЛС инжинеринг"
28.12.2014, 19:58
Я не понимаю чего вы так зациклились на LD рисуйте на CFC, еще понятно когда выбора языков маловато, или один LD с IL впридачу

Как я ранее был говорил что я только учусь.
Мы производим оборудование для розлива жидкости,
пример
15920 15922 15923
в нашей системе много датчиков (герконы и оптические) и пневмоцилиндров вот я лично думаю что больше нам подойдет язык LD не спорю удобнее конечно CFC но в данный момент я не видел примера как подключать (датчики герконы) как нормально открытые так и нормально закрытые.

smk1635
28.12.2014, 20:08
вот я лично думаю что больше нам подойдет язык LD не спорю удобнее конечно CFC но в данный момент я не видел примера как подключать (датчики герконы) как нормально открытые так и нормально закрытые.

Нормально. :)

Так. Давайте с самого начала. А то окончательно запутаемся.
1. Какие сигналы будут и сколько дискретных и сколько аналоговых?
2. Какие контроллеры и модули планируете применять?

ASo
28.12.2014, 20:08
в нашей системе много датчиков (герконы и оптические) и пневмоцилиндров вот я лично думаю что больше нам подойдет язык LD не спорю удобнее конечно CFC но в данный момент я не видел примера как подключать (датчики герконы) как нормально открытые так и нормально закрытые.


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

жекон
28.12.2014, 20:32
в нашей системе много датчиков (герконы и оптические) и пневмоцилиндров вот я лично думаю что больше нам подойдет язык LD не спорю удобнее конечно CFC но в данный момент я не видел примера как подключать (датчики герконы) как нормально открытые так и нормально закрытые.
Контроллеру всё равно что вы подключаете он не работает с конкретным датчиком, а с переменной которой Вы можете задать инверсию например получиться нормально замкнутый, а что сразу в КДС3,5 может сначала в 2.3, там попроще будет и примеров побольше
А что Дельта сильно подорожала?

ООО "БЛС инжинеринг"
28.12.2014, 21:04
Нормально. :)

Так. Давайте с самого начала. А то окончательно запутаемся.
1. Какие сигналы будут и сколько дискретных и сколько аналоговых?
2. Какие контроллеры и модули планируете применять?

Большинство мы используем дискретные входы и выходы, входов примерно 35 а выходов около 45 ну это взаимозависимости от модели машины.
Нам дали из ОВЕНА на растерзания СПК 107 без модулей вводи и вывода, я пытался писать на LD немного получается.
Не решили ещё какие будут контроллеры и модули, я где-то видел что в разработке есть СПКхххД ну это пока так.
Вот не знаю с таким количеством входов и выводах как нам быть и что лучше подобрать....

ООО "БЛС инжинеринг"
28.12.2014, 21:05
Контроллеру всё равно что вы подключаете он не работает с конкретным датчиком, а с переменной которой Вы можете задать инверсию например получиться нормально замкнутый, а что сразу в КДС3,5 может сначала в 2.3, там попроще будет и примеров побольше
А что Дельта сильно подорожала?

Да подорожал китаец и есть разница

жекон
28.12.2014, 21:25
Посмотрите кинул в личку,мне вчера на пробу привезли сказали что не дорого и как раз LD

smk1635
28.12.2014, 22:04
Посмотрите кинул в личку,мне вчера на пробу привезли сказали что не дорого и как раз LD

Если не затруднит, скинте то же в личку.

RomAl
29.12.2014, 14:19
как я понял в этой теме можно задавать разные наивные и глупые вопросы..
На сайте кодесис https://www.codesys.com/download.html
раздают версию CODESYS V3.5 SP5 Patch 4 (current version)
Может там уже почистили все баги? Или не брать в голову
и смело переходить с sp4 на ту sp5 которую Овен раздаёт?

RV9WFJ
29.12.2014, 20:59
(c) Хрен редьки не слаще ;-) А вообще качайте с CoDeSys.com, просто бывает что в новых релизах баги не только исправляются но и добавляются. И бывает, что первым кто узнает о появлении нового бага становишься ты, если используешь последние релизы. Глобально без изменения прошивки под последний релиз мало что меняется.

ООО "БЛС инжинеринг"
30.12.2014, 00:38
Подскажите счётчик CTU нормально посчитать около 50-100 импульсов в секунду?
Если нет то как можно посчитать их?

ООО "БЛС инжинеринг"
30.12.2014, 19:16
И сколько можно поставить CTU (количество в шт.) в СПК 107?

smk1635
30.12.2014, 19:32
Подскажите счётчик CTU нормально посчитать около 50-100 импульсов в секунду?
Если нет то как можно посчитать их?

Сложно с Вами. Вроде и разбираетесь, но иногда такие вопросы задаёте. :)

Зайдем с другой стороны. Вы к чему собираетесь подключать датчики ? Физически.

ООО "БЛС инжинеринг"
30.12.2014, 20:09
Сложно с Вами. Вроде и разбираетесь, но иногда такие вопросы задаёте. :)

Зайдем с другой стороны. Вы к чему собираетесь подключать датчики ? Физически.
Я планирую использовать СПК 107 и к нему модули ввода и вывода, а на входы подключать датчики (оптические и герконы) на выходы пневмораспределители, везде дискрет.

жекон
30.12.2014, 20:15
И где на перечисленном Вами оборудовании такое количество переключений, да еще и в секунду

ООО "БЛС инжинеринг"
30.12.2014, 20:24
И где на перечисленном Вами оборудовании такое количество переключений, да еще и в секунду

Вот с спрашиваю у спецов

smk1635
30.12.2014, 20:28
Проверте личку

жекон
30.12.2014, 20:31
Что я не много не пойму Вас, я делал(модернизировал) молокоразливочный станок М6-ОРЗ-Е на ПЛК 63 всё успевал, эксперементировал догонял скорость до 3600 л\сек при заводской 1200, всё успевало, только пневмоцилиндры нет

ASo
30.12.2014, 20:32
Подскажите счётчик CTU нормально посчитать около 50-100 импульсов в секунду?
Если нет то как можно посчитать их?


И сколько можно поставить CTU (количество в шт.) в СПК 107?

Послушайте, займитесь чем нибудь другим.
Тут у вас не хватает базового образования. И наскоками по форумам это не решается.

P.S. Посчитать можно счетчиками в модулях цифрового ввода.

жекон
30.12.2014, 20:52
Да не нужна там такая дикая скорость, если только все сигналя за раз посчитать да и то наврядли

smk1635
30.12.2014, 21:39
Послушайте, займитесь чем нибудь другим.
Тут у вас не хватает базового образования. И наскоками по форумам это не решается.

P.S. Посчитать можно счетчиками в модулях цифрового ввода.

Ну зачем же Вы так.
Человек честно пытается разобраться. Лично я сам начинал так же. :)

smk1635
30.12.2014, 21:41
Да не нужна там такая дикая скорость, если только все сигналя за раз посчитать да и то наврядли

Задача стоит в том что надо считывать данные со счетчиков расхода жидкости и по ним управлять клапанами. Задержка в секунду ведёт к солидному переливу.

жекон
30.12.2014, 21:54
То есть дозирование идет по расходомерам...тогда СПК107 с модулями ввода-вывода навряд-ли хорошая идея

smk1635
30.12.2014, 22:07
То есть дозирование идет по расходомерам...тогда СПК107 с модулями ввода-вывода навряд-ли хорошая идея

То же так думаю.

ASo
30.12.2014, 22:17
Скажем так - именно этот контроллер в данном режиме вообще работать не будет. Опрос всех модулей буюет около 1 секунды. Какие тут 100Гц?
Совсем другие решения и оборудование.

А так.... Очень похоже на желание соптимизировать людей (проектировщика). Я такие вещи не люблю.

smk1635
30.12.2014, 22:29
Скажем так - именно этот контроллер в данном режиме вообще работать не будет. Опрос всех модулей буюет около 1 секунды. Какие тут 100Гц?
Совсем другие решения и оборудование.

Угу.
Так, сходу, два ПЛК110.60 со связью по UDP.

жекон
31.12.2014, 06:21
Угу.
Так, сходу, два ПЛК110.60 со связью по UDP.
И СПК107 тупо в качестве панели

Эдуард_Н
01.01.2015, 09:29
Как это будет выглядеть в КДС3?

жекон
02.01.2015, 06:57
Да так же тупо скопируйте и вставьте

Эдуард_Н
02.01.2015, 10:26
Э нет, там вроде другая бибка должна быть.

жекон
02.01.2015, 14:30
Эдик ну запросит бибку дайте маленькому, не получиться тогда и голову ломать будем, тем более что она уже сломана с 31
P.S:Сейчас посмотрел на скоряк нет там ни каких особенных библиотек

MrNobody
05.01.2015, 11:50
Добрый день! Подскажите как с помощью библиотеки ArchvatorOwenLib сохранять архив с расширением csv? Полазив по форуму я обнаружил, что организовывать сохранение в столбец/строку надо вручную - в нужном месте символы возврата каретки '$r$n'. Однако после добавления данных символов в код программы, в самом файле архива переноса строки не происходит.


PROGRAM PLC_PRG
VAR
strT:STRING:='bla bla bla $r$n'; //некоторая текстовая переменная

(*Переменные архивирования*)
Arc1_1:GetData; //блок формирования строки и заголовка
Arc1_2:WriteData; // блок записи в архив*)
strT:STRING:='bla bla bla/r/n'; //некоторая текстовая переменная
in1:BYTE; //некоторые внутренние переменные
in2: WORD;
in3:DWORD;
b:BOOL; //вспомогательная переменная
tp1:ton; // таймер для задания периода архивации
(*конец переменных архивирования*)
END_VAR

IF tp1.Q THEN
b:=FALSE; // обеспечит перезапуск таймера(его циклическую работу)
END_IF
Arc1_1.SetHead(); //разрешаем составить заголовок (обязательно ставить перед объявление переменных для архивирования)
Arc1_1( Name:='in1', Tip:=0, Znachenie:=ADR(f1)); // записываем значение переменной «in1»
Arc1_1( Name:='in2', Tip:=2, Znachenie:=ADR(in2));
Arc1_1( Name:=left('in3 namelee',15), Tip:=3, Znachenie:=ADR(in3)); // имя переменной обязательно должно быть меньше 16 символов, если больше, то может вызвать ошибку
Arc1_1( Name:='text', Tip:=4, Znachenie:=ADR(strT));
//запишем все эти данные в архив, разрешение на работу свяжем с таймером, данныt берем из ФБ «Arc1_1», имя архива будет «ar1», и хранится будет в папке «/var/log/»(путь надо завершать косой чертой), режим оставляем по умолчанию равны «0»
Arc1_2(Enable:=tp1.Q, ArcPnt:=ADR(Arc1_1), NameArc:='ar1', Path:='/mnt/ufs/media/');
TP1(IN := b, PT:= T#22S); //запустим таймер*)
(*Конец Запись на SD карту*)

Спасибо!

MrNobody
08.01.2015, 18:31
и что компилятор даже не ругнулся что в объявлении две одинаковые переменные? Вы точно выложили тот код который запускаете? Не прверял, но может спецсимволы все же заглавными буквами надо писать, вдруг строчные невоспринимаются

спасибо за помощь!

Эдуард_Н
09.01.2015, 06:29
И всё таки не знаю я, на какую заменить библиотеку в этом проекте с КДС2 на КДС3, и как всё правильно заменить. Помогите.

petera
09.01.2015, 12:36
И всё таки не знаю я, на какую заменить библиотеку в этом проекте с КДС2 на КДС3, и как всё правильно заменить. Помогите.
Вместо библиотеки Time and Date нужно использовать SysTime23
16052
16053

Эдуард_Н
09.01.2015, 23:45
Вместо библиотеки Time and Date нужно использовать SysTime23
16052
16053

Поменял только теперь просит начальное значение, а какое поставить незнаю

petera
10.01.2015, 11:51
Поменял только теперь просит начальное значение, а какое поставить незнаю
А разве это предупреждение мешает работе программы?

Эдуард_Н
10.01.2015, 15:03
Да, нет в общем не мешает:). Но смущает.

Сергей0308
10.01.2015, 16:31
16090
Вопрос: кто нибудь собирал Float32 из двух шестнадцатибитных регистров? Если да, то как? Прочитал на форуме, что Float32 это тот же Real, только надо байты потусовать, чем и безуспешно занимаюсь! Для этих целей разбил каждый из регистров на два байта, потусовал затем собрал в DWORD и конвертировал в Real! В результате всех этих манипуляций температура "поднялась" до нескольких миллиардов градусов и в ходе манипуляций не опускается ниже нескольких миллионов градусов! Хотя СПК107 считывает эти регистры с ТРМ200 и пишет их в СМИ2 где нормально всё показывает(около 23 градусов)! Я впервые сталкиваюсь с ПЛК и с кодесис и вы не поверите потратил целый день что бы разобраться с этим и настроить чтобы всё работало как я хотел! Также я считываю этот же параметр с другого регистра ТРМ200 в Signed Int16 и у меня нормально отображается, конечно для меня это не критично, но всё же хочется разобраться и победить Float32! Я конечно и сам разберусь, но придётся глубже копать, как бы дыру в Америку не сделать! Короче буду рад, если кто поделится, как победил этого зверя(Float32)!!!

Сергей0308
10.01.2015, 16:34
Что я не так натворил? И просьба не ругайтесь, если что не так!

Сергей0308
10.01.2015, 16:45
Да забыл сказать, так как это не имеет отношения к Float32 , в сети помимо ТРМ200 и СМИ2 ещё опрашиваются и пишутся регистры в ПР114, всё идеально работает, не могу нарадоваться!!!

Сергей0308
10.01.2015, 21:34
Посмотрите СПК107 + ПР114 в качестве модулей ввода-вывода! У меня ПР110 успевало считать до 20 им/сек, ПР114 грозились сделать в 5-10 раз быстрей! Я его быстродействие не измерял, мне по работе не требуется большого быстродействия, но ПР110 очень понравилось по цене и за 5 лет ни разу не только не сломалось, даже ни разу не "глючило"! Логику работы задаёте в самом реле для большего быстродействия. Оно и программируется проще ну не скажу в миллион, но в тысячу раз точно проще, хотя за день "разобрался" с кодесис 3.5 и неразрешимых проблем пока не вижу! И у ПР114, если возникнет необходимость, есть аналоговые входы и выходы(выходы за доп. плату), а СПК107(по сети RS485)- для задания уставок, управления и контроля, можно даже с архивацией аварий и техпроцессов! К СПК107 можно подключить до 64 ПР114, у каждого 12 входов и 8 выходов! Посмотрите- может вам подойдёт!

ASo
10.01.2015, 21:48
16090
Вопрос: кто нибудь собирал Float32 из двух шестнадцатибитных регистров? Если да, то как?
Вот так

FloatPtr:= ADR (TOutdoor);
FloatPtr^:= hwAI1_1[5];
FloatPtr:= FloatPtr + 2;
FloatPtr^:= hwAI1_1[4];
Грубо, вам нужно поменять местами 2 считанных регистра. Байты внутри регистров поменяет сама CDS.

Сергей0308
10.01.2015, 22:18
Спасибо огромное! Смотрю на Ваш код, как баран на новые ворота, извините, что так мягко выражаюсь!

Сергей0308
10.01.2015, 22:26
И не знаю с чем его едят, мне с блоками намного понятнее, я ПР110-ПР114 давно(лет 5) программирую, а кодесис вижу ну не впервый раз, уже 10 дней как увидел!

Сергей0308
10.01.2015, 22:33
И не знаю с чем его едят, мне с блоками намного понятнее, я ПР110-ПР114 давно(лет 5) программирую, а кодесис вижу ну не впервый раз, уже 10 дней как увидел!

amn
10.01.2015, 23:01
Спасибо огромное! Смотрю на Ваш код, как баран на новые ворота, извините, что так мягко выражаюсь!

Посмотрите подробней в этой теме про указатели http://www.owen.ru/forum/showthread.php?t=17394&p=138024&viewfull=1#post138024

MrNobody
12.01.2015, 15:41
Я понимаю, что вопрос довольно глупый и может очевидный ... но всё-таки: будет ли работать web-визуализация для ПЛК323, если сим-карта имеет стандарт CDMA со статическим IP?

александр 64
14.01.2015, 15:39
делаю проект теплопункта столкнулся с проблемой уличной температуры в плане как увидеть ее в минусе с блока мв110 8а

RV9WFJ
14.01.2015, 15:42
А в чем проблема то? Читаете REAL и смотрите :-)

александр 64
14.01.2015, 15:52
А в чем проблема то? Читаете REAL и смотрите :-)
стандартный блок опроса считывает с блока в WORD или в INT а там минуса уже нет

RV9WFJ
14.01.2015, 16:10
Тогда используйте нестандартный подход http://www.owen.ru/forum/showthread.php?t=12081&page=7&p=140211&viewfull=1#post140211

ivydy
16.01.2015, 12:20
Здравствуйте. Объясните новичку, возможно ли в Codesys 3.5 программировать на языке SCL. И как его подключить. А то я вижу только стандартные языки LAD/FBD

ivydy
16.01.2015, 13:34
в кдс он входит в состав по умолчанию, в отличии от симаиика

да, спасибо. Уже разобрался.

Сергей0308
17.01.2015, 13:28
стандартный блок опроса считывает с блока в WORD или в INT а там минуса уже нет

Куда же он делся в INT е???16218

Сергей0308
21.01.2015, 22:10
16090
Вопрос: кто нибудь собирал Float32 из двух шестнадцатибитных регистров? Если да, то как? Прочитал на форуме, что Float32 это тот же Real, только надо байты потусовать, чем и безуспешно занимаюсь! Для этих целей разбил каждый из регистров на два байта, потусовал затем собрал в DWORD и конвертировал в Real! В результате всех этих манипуляций температура "поднялась" до нескольких миллиардов градусов и в ходе манипуляций не опускается ниже нескольких миллионов градусов! Хотя СПК107 считывает эти регистры с ТРМ200 и пишет их в СМИ2 где нормально всё показывает(около 23 градусов)! Я впервые сталкиваюсь с ПЛК и с кодесис и вы не поверите потратил целый день что бы разобраться с этим и настроить чтобы всё работало как я хотел! Также я считываю этот же параметр с другого регистра ТРМ200 в Signed Int16 и у меня нормально отображается, конечно для меня это не критично, но всё же хочется разобраться и победить Float32! Я конечно и сам разберусь, но придётся глубже копать, как бы дыру в Америку не сделать! Короче буду рад, если кто поделится, как победил этого зверя(Float32)!!!
Всем большое спасибо!!! Заработало, точнее запоказывало! Ура!!!16308

Сергей0308
21.01.2015, 23:05
Теперь лично мои впечатления: много пришлось воскрешать из памяти, это я насчёт мантиссы с экспонентой, короче теперь в совершенстве знаю "устройство" Float32, хоть на межгалактические соревнования ехай, жаль что пока нет таких по Float32! Если бы Уважаемые разработчики добавили в свою библиотеку блок наподобие блока аналогово ввода(там выход "Real" имеется), только добавить вход выбора адреса начального регистра и их количества(подобно конфигурации чтения и записи), то до сих пор неучем ходил бы!

Сергей0308
21.01.2015, 23:31
Не надо быть ясновидящим, чтобы предугадать, что на это Уважаемые разработчики никогда не пойдут, так как станут безработными! Им тогда не придётся создавать функциональный блок на каждый их модуль ввода-вывода! Одного будет достаточно на все их изобретения!!!

Сергей0308
21.01.2015, 23:52
Спасибо! Посмотрим!

Сергей0308
22.01.2015, 23:16
хорош ерунду писать, мы тут столько блоков конвертации тут повыкладывали, на любой вкус

ЗЫ разве сложно найти поиском темы по существу www.owen.ru/forum/showthread.php?t=17912

Спасибо за ссылку, но эта задача уже решилась! Тупо скопировал функцию, так как БМП в ST!

Сергей0308
23.01.2015, 06:49
Я в принципе и на CFC могу байты потусовать, но как потом из 4 байт(2 ворд или 1 дворд) сделать реал для меня так и осталось загадкой!

Сергей0308
23.01.2015, 11:12
Вы извините, но для понимания мне больше даёт гадание на кофейной гуще, чем всякая "писанина" на ST!

MrNobody
26.01.2015, 11:05
Подскажите,пожалуйста, как можно посчитать время бездействия СПК.
Например, если на панель СПК 30 сек. никто не нажимал, то перейти к другой визуализации.

Andrew_Stranger
26.01.2015, 11:39
Смотрите библиотеку SPK Tools, примеры также выложены.

MrNobody
26.01.2015, 11:42
Смотрите библиотеку SPK Tools, примеры также выложены.
Спасибо :)

Oleg_gelo
26.01.2015, 11:45
Добрый день Господа. Вопрос по визуализации Codesys 3.5 SP5 Patch3, только пробую разбираться. Сделал PLC_PRG для СПК207…WEB, рис.1. Хочу получить на визуализации «Переключатель изображений». В описании «Визуализация CODESYS 3 v1.1», с.8 описано о создании «Image Pool». У меня, с моими руками», так не получается, рис.2. Может в 3.5 данную функцию сделали как то иначе? Или я плохо читаю?

capzap
26.01.2015, 15:38
на рисунке, как я представляю на CFC преобразование двух слов в реал

Oleg_gelo
26.01.2015, 23:33
Добрый день Господа. Вопрос по визуализации Codesys 3.5 SP5 Patch3, только пробую разбираться. Сделал PLC_PRG для СПК207…WEB, рис.1. Хочу получить на визуализации «Переключатель изображений». В описании «Визуализация CODESYS 3 v1.1», с.8 описано о создании «Image Pool». У меня, с моими руками», так не получается, рис.2. Может в 3.5 данную функцию сделали как то иначе? Или я плохо читаю?

Наверное сделал неверно, но получилось. В проекте, или неважно, сделал папку "Image", в неё загрузил рисунки .bpm. В полях "Изображение ВКЛ/ОТКЛ" добавил путь к файлам. Правда после подтверждения остаются только названия файлов. Загрузил в контроллер - работает.1638216383

Сергей0308
27.01.2015, 00:51
на рисунке, как я представляю на CFC преобразование двух слов в реал

Спасибо! Посмотрим!

Lyohin
27.01.2015, 16:06
Какие возможности дает WEB визуализация? Где об этом можно полноценно почитать? Встал вопрос о выборе СПК-110 или СПК207web. В принципе под нашу задачу подходит СПК110, но важно принять правильное решение, узнав и о возможностях удаленного доступа для СПК 207 WEB. Т.к. это будет типовое решение, в дальнейшем повторяющейся на объектах.
В частности интересует:
1. Можно ли удаленно производить все те же действия с мнемосхемами, что и непосредственно на экране СПК? Т.е. экраны так само отображаются?
2. Возможно ли удаленно загружать в СПК программу пользователя? Возможно ли онлайн подключение кодесис?
3. Какие еще преимущества?
Кто может, просьба выложить скриншот WEB интрефейса СПК, отображаемого на ПК, планшетных компьютерах, или мобильных телефонах.

Lyohin
30.01.2015, 18:39
Еще вопрос: в редакторе СFC блок "MACRO" в CoDeSys 2.3 - есть ли его аналог в CoDeSys 3.5?

Сергей0308
31.01.2015, 20:42
на рисунке, как я представляю на CFC преобразование двух слов в реал

Как я представляю на CFC преобразование массива из двух WORD в REAL.16497
Для этого добавил шаблоны MX110 и функцию MV110_Get_Real 16498
и
хотя она предназначалась для модулей MX110, мне ничто не помешало использовать её для отображения значения переменной с ТРМ200! На входе массив из двух WORD, на выходе REAL, как раз то, что надо, так что получается зря я Уважаемых разработчиков ругал!

Сергей0308
01.02.2015, 02:10
Как я представляю на CFC преобразование массива из двух WORD в REAL.16497
Для этого добавил шаблоны MX110 и функцию MV110_Get_Real 16498
и
хотя она предназначалась для модулей MX110, мне ничто не помешало использовать её для отображения значения переменной с ТРМ200! На входе массив из двух WORD, на выходе REAL, как раз то, что надо, так что получается зря я Уважаемых разработчиков ругал!
Для "полного счастья" не помешала бы обратная функция!

RV9WFJ
01.02.2015, 07:37
Для "полного счастья" не помешала бы обратная функция!Зачем? приведите ситуацию когда она потребуется.

RV9WFJ
01.02.2015, 07:39
Какие возможности дает WEB визуализация? Где об этом можно полноценно почитать? Встал вопрос о выборе СПК-110 или СПК207web. В принципе под нашу задачу подходит СПК110, но важно принять правильное решение, узнав и о возможностях удаленного доступа для СПК 207 WEB. Т.к. это будет типовое решение, в дальнейшем повторяющейся на объектах.
В частности интересует:
1. Можно ли удаленно производить все те же действия с мнемосхемами, что и непосредственно на экране СПК? Т.е. экраны так само отображаются?
2. Возможно ли удаленно загружать в СПК программу пользователя? Возможно ли онлайн подключение кодесис?
3. Какие еще преимущества?
Кто может, просьба выложить скриншот WEB интрефейса СПК, отображаемого на ПК, планшетных компьютерах, или мобильных телефонах.
Все вами сказанное работает в СПК207.web. На счет скринов это не имеет смысла так как все выглядит практически так же. Только вот пунктирные линии пока сплошными отображаются и шрифты немного другие. В остальном все так же.

capzap
01.02.2015, 08:38
Как я представляю на CFC преобразование массива из двух WORD в REAL.16497
Для этого добавил шаблоны MX110 и функцию MV110_Get_Real 16498
и
хотя она предназначалась для модулей MX110, мне ничто не помешало использовать её для отображения значения переменной с ТРМ200! На входе массив из двух WORD, на выходе REAL, как раз то, что надо, так что получается зря я Уважаемых разработчиков ругал!

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

Сергей0308
01.02.2015, 12:00
Зачем? приведите ситуацию когда она потребуется.

Например, чтобы передать(записать) переменную REAL с СПК в СМИ2! Когда я считываю переменную с ТРМ200 или другого прибора у меня нет проблем и достаточно, уже имеющийся массив записать в СМИ2! А если я "получаю" REAL в СПК возникают проблемы, тогда бы и не помешала функция(вход - REAL, выход - массив двух WORD)! Если спросите зачем REAL(FLOAT) - передавайте в INT, я так и делаю, но не от хорошей жизни, а отсутствия такой функции!

Сергей0308
01.02.2015, 13:47
так Вы зачем в таком случае на меня сослались? из моего кода, разве не очевидно как сделать обратное преобразование?

Лично для меня(я не могу говорить от имени всех новичков, но думаю, что большая часть со мной согласится) не всё так очевидно(радужно), как должно быть на Ваш взгляд! На форуме нашёл много вопросов, аналогичных моему! Считаю, что для практического их решения достаточно было "ткнуть носом" в нужную функцию, а не заниматься многодневными(многонедельными) объяснениями! Хотя и это может пригодиться в перспективе и ассоциируется у меня в голове с "кузнецой" будущих гениев, за примерами далеко ходить не надо, тот же Эйнштейн, плохо учился в школе!!!

ASo
01.02.2015, 13:59
Вот когда Вы получите нормальное образование, Вы поймете, почему типом Real надо пользоваться крайне осторожно.

Сергей0308
01.02.2015, 14:52
Вот когда Вы получите нормальное образование, Вы поймете, почему типом Real надо пользоваться крайне осторожно.

Вы хотите сказать, что знаете что-то о REAL(FLOAT), чего не знаю я???
16507

ASo
01.02.2015, 15:02
Вопрос не в Real.
Вопрос в значащих цифрах измерения. Стандартный курс метрологии.
И в способе хранения данных.

capzap
01.02.2015, 15:19
Лично для меня(я не могу говорить от имени всех новичков, но думаю, что большая часть со мной согласится) не всё так очевидно(радужно), как должно быть на Ваш взгляд! На форуме нашёл много вопросов, аналогичных моему! Считаю, что для практического их решения достаточно было "ткнуть носом" в нужную функцию, а не заниматься многодневными(многонедельными) объяснениями! Хотя и это может пригодиться в перспективе и ассоциируется у меня в голове с "кузнецой" будущих гениев, за примерами далеко ходить не надо, тот же Эйнштейн, плохо учился в школе!!!

загляните в свободную бибку от oscat.de там есть функции ...ай, ну там же на ST написано, Вам же как новичку ни зачто не разобраться как в граф.язык это перевести, создаст тех.поддержка на CFC такую функцию и обязательно появится умник которому она нужна на языке IL к примеру

Сергей0308
01.02.2015, 15:21
Вопрос не в Real.
Вопрос в значащих цифрах измерения. Стандартный курс метрологии.
И в способе хранения данных.

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

Сергей0308
01.02.2015, 15:26
загляните в свободную бибку от oscat.de там есть функции ...ай, ну там же на ST написано, Вам же как новичку ни зачто не разобраться как в граф.язык это перевести, создаст тех.поддержка на CFC такую функцию и обязательно появится умник которому она нужна на языке IL к примеру

Тут с Вами полностью согласен!!!

Сергей0308
01.02.2015, 15:44
согласны в чем? Какая разница на чем написана функция, если Вы используете CFC то у Вас СТешная функция всёравно будет в виде квадратика, меня возмущает когда люди хотят видеть код на каком то определенном языке, нафига, если требуете тупо код, даже не пытаясь самообразовываться

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

capzap
01.02.2015, 16:19
неужели писать о том что как хорошо было бы чтоб за меня работу сделали, намного легче чем функцию написать

Сергей0308
01.02.2015, 17:47
неужели писать о том что как хорошо было бы чтоб за меня работу сделали, намного легче чем функцию написать

Я об элементарных функциях речь веду! Таких как преобразование массива из 2 ворд в реал и обратной функции! Смысл какой каждому изобретать велосипед, тем более когда не знаешь как это сделать! Вам же не приходит в голову изобрести например свой реверсивный счётчик, а Вы берёте уже готовый "квадратик" и пользуетесь! Хотя мне приходилось такое делать в овен лоджик, когда его ещё не было в библиотеке! Неужели Вы считаете это хорошо, не лучше ли выложить готовый счётчик, чтобы каждый не "заморачивался" с его созданием! По моему библиотеки для этого и существуют!

capzap
01.02.2015, 18:06
Я об элементарных функциях речь веду! Таких как преобразование массива из 2 ворд в реал и обратной функции! Смысл какой каждому изобретать велосипед, тем более когда не знаешь как это сделать! Вам же не приходит в голову изобрести например свой реверсивный счётчик, а Вы берёте уже готовый "квадратик" и пользуетесь! Хотя мне приходилось такое делать в овен лоджик, когда его ещё не было в библиотеке! Неужели Вы считаете это хорошо, не лучше ли выложить готовый счётчик, чтобы каждый не "заморачивался" с его созданием! По моему библиотеки для этого и существуют!

чем Вам оскат не устраивает, берите и пользуйтес, в чем плачь то?

Сергей0308
01.02.2015, 18:22
неужели писать о том что как хорошо было бы чтоб за меня работу сделали, намного легче чем функцию написать

За функцию спасибо! Будем смотреть!

Сергей0308
01.02.2015, 18:26
чем Вам оскат не устраивает, берите и пользуйтес, в чем плачь то?

Вот я и пытаюсь найти необходимые мне функции, а не изобретать велосипед!

Сергей0308
01.02.2015, 19:38
я их все показал: указатель, смещение и маска, Вам космический что ли велосипед нужен

Спасибо! Мне пока не до космических велосипедов, хорошо бы лапти на ноги сплести!

Lyohin
03.02.2015, 15:48
Подскажите пожалуйста, не нашел в редакторе СFC КДС 3.5 макроблок для формирования вхождения блоков в состав другого блока (аналог "MACRO" в CoDeSys 2.3). Есть ли такой?

MrNobody
03.02.2015, 15:55
Добрый день!
Стоит задача на СПК 110 листать около 30 визуализаций с картинками (вес картинки 150 КБ) с периодом 30 секунд.
С обычными примитивами на каждом слайде, типа квадратик, кружок слайды листаются всё отлично, но когда вместо этих примитивов ставишь рабочие изображения, СПК начинает виснуть на 11 слайде.
Параметры Цикла PLC_PRG и Цикла VISU_PRG выставлены согласно рекомендациям из этой темы:
http://www.owen.ru/forum/showthread.php?t=18290&p=148072&viewfull=1#post148072
Codesys 3.5 SP5 Patch 4
Прошивка 3.939

Andrew_Stranger
03.02.2015, 16:26
Тоже были проблемы с зависаниями, решилось созданием проекта заново.

MrNobody
03.02.2015, 16:33
Тоже были проблемы с зависаниями, решилось созданием проекта заново.
Сейчас работаю в новом проекте и всё равно виснет

Эдуард_Н
20.02.2015, 08:30
Как можно открыть compiled-library для редактирования?

Трофимов Артем
20.02.2015, 09:49
библиотеки для того и компилируются, чтобы в них не изменили ничего.

iAHTOH
20.02.2015, 11:43
Добрый день!
Не подскажите как переключить визуализацию из кода программы.
По нажатию кнопки понятно как, а вот как переключить по событию в программе?

Нашел ответ в FAQ http://www.owen.ru/forum/showthread.php?t=15530&p=115706&viewfull=1#post115706

AlNik
22.02.2015, 07:17
Здравствуйте уважаемые...! Как это исправить? Где взять и как установить? Контроллера пока нет.16817

RV9WFJ
22.02.2015, 08:29
Для начала режим эмуляции отключите. Дальше, возможно, надо в CODESYS Control Win правой кнопкой выбрать PLC Start.

Postoronniy
24.02.2015, 15:46
Добрый день! Что-то нигде не могу найти примера или описания как проверять работу МВ110-24.32ДН. Нужно если пропала с ним связь-выводить сообщение на СПК110. Кто-нибудь может поделиться инструкцией или примером как проверять наличие слэйвов в сети?

Philosof
24.02.2015, 17:09
Помогите добрые люди! Задача: в визуализации прямоугольник с float переменной, по клику происходит ввод значения с numpad. Необходимо после ввода значения (нажатия кнопки ok) инициировать в программе запись переменной по модбас(переменные пишутся не в цикле а по фронту бита). Как отследить событие ввод значения ? Подозреваю задача тривиально но ума не хватает :-)

amn
25.02.2015, 01:12
Postoronniy: Если опрос слэйва через конфигурацию, то контролируем Modbus(Master) Last addres и Last error. Если Last adress=0, то связь с устройством есть, а если не равно 0, то смотрим расшифровку кода ошибки. Если связь пропадает, то будет ошибка таймаута.

Philosof : Предусмотрите еще одну кнопочку специально для отправки. Наверняка надо не одну переменную вводить, сразу все вместе и отправите.

Philosof
25.02.2015, 11:43
Philosof : Предусмотрите еще одну кнопочку специально для отправки. Наверняка надо не одну переменную вводить, сразу все вместе и отправите.

Спасибо за совет. Рисовать дополнительные элементы в визуализации (кнопки которые будут записывать значения) не удобно получается. Дорисовывать элемент в цифровой клавиатуре из стандартной библиотеки это сложно и извращенно. Вопрос как вытянуть событие из стандартной Numpad.

Postoronniy
25.02.2015, 15:03
[QUOTE=amn;163082]Postoronniy: Если опрос слэйва через конфигурацию, то контролируем Modbus(Master) Last addres и Last error. Если Last adress=0, то связь с устройством есть, а если не равно 0, то смотрим расшифровку кода ошибки. Если связь пропадает, то будет ошибка таймаута.
А нет ли какого-нибудь небольшого примерчика? У меня несколько слэйвов. Codesys 3.5. Где смотреть код ошибки и как его расшифровывать???

amn
25.02.2015, 15:44
Прошу прощения, не обратил внимание, что тема про КДС3, а я в нем не работал, может там по-другому, не так как в КДС2.

JonPol
25.02.2015, 16:18
Здравствуйте. Начинаю осваивать КДС 3.5 почитал инструкции, и сразу же какой-то баг!!! При добавлении устройств протокола ModBus у меня маленькое окно и никак не могу его раздвинуть, на скрине все видно. переустанавливал КДС, н е помогает. что делать ?16851

GoodLuck
25.02.2015, 16:32
JonPol, поставьте галочку "Отображать все версии"

iAHTOH
25.02.2015, 16:40
JonPol, поставьте галочку "Отображать все версии"

Подозреваю тут какой то общий глюк. У мена нет проблем с добавлением устройств, зато к примеру если я хочу менять цвета фона та же проблема.
16852

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

JonPol
25.02.2015, 16:43
Ставил галку... не помогает - оно просто не раздвигается. Качал КДС с сайта ОВЕН, без изменений, устанавливал с диска с СПК110 которым шел - не помогает! =(

JonPol
25.02.2015, 16:52
Все... свершилось, я второй день мучаюсь с такими траблами.. Ниже есть полоска, нужно ее взять, зафиксировать мышкой и потянуть. Вот скрин16853

iAHTOH
25.02.2015, 17:00
Странно. А на первом скрине у вас этой полоски нет (как собственно и у меня) тянуть не зачто

JonPol
25.02.2015, 17:17
Я сделал скрин уже активированной полоски, то есть нажатием на ее ЛК мыши. Там где написано слово "Информация"

serj885588
25.02.2015, 17:34
привет ребята, помогите новичку, codesys 3.5, спк 107, МК110-8д.4р, цепляю все это счастье, опрашиваю входы по modbus все отлично, начинаю записывать 16ой функцией и начинаются чудеса, выходы отрабатывают верно, согласно кнопкам на дисплее но они щелкают, тоесть реле не замирают во включенном состоянии, а постоянно выключаются и включаются, подскажите где рыть=)

Lyohin
25.02.2015, 17:34
Возможно ли задать начальное значение переменой экземпляра функционального блока непосредственно в самом экземпляре? Или только создав переменную и связав с входом блока?

16855

ASo
25.02.2015, 18:17
Через какой регистр записываете?

serj885588
25.02.2015, 18:22
записываю через 0x0032

sslaventiy_85
26.02.2015, 12:53
Добрый день! Я новичок в программировании. У нас в наличии СПК105 и с его помощью необходимо отображать количество топлива. Датчики уровня топлива Стрела D485, которые работают по протоколу модбас. Считывать что-то я научился, но это совсем не литры, которые выдает датчик. Может кто сталкивался с таким проектом (или похожим) или кто-то может подсказать или подсказать где посмотреть, я буду очень признателен.

MrNobody
27.02.2015, 17:32
подскажите, возможно ли в codesys 3.5 организовать обмен по протоколу овен?

GoodLuck
28.02.2015, 00:31
Можно, используйте библиотеку OWENNET

Эдуард_Н
15.03.2015, 16:49
Вместо библиотеки Time and Date нужно использовать SysTime23
16052
16053

В КДС3 блок " clock_week", должен работать в эмуляции или нет?

приборист
15.03.2015, 17:28
В КДС3 блок " clock_week", должен работать в эмуляции или нет?

В эмуляции не работает только запись часов.
Если закомментировать эту часть, то все работает.

Эдуард_Н
15.03.2015, 18:29
В эмуляции не работает только запись часов.
Если закомментировать эту часть, то все работает.

А, как это закомментировать?

приборист
15.03.2015, 19:57
Sys_Time вроде не рекомендуют использовать.
Я использую часть из примера из FAQ
http://www.owen.ru/forum/attachment.php?attachmentid=10163&d=1379502563
Вот этот пример.
Там в коде есть Set (дальше управление SetTime), его и надо комментить.

dnsss
16.03.2015, 23:11
Добрый день! Подскажите, существует ли какая-либо документация на библиотеки овен, в частности, modulsowenlib?

Виктор10220
03.04.2015, 09:24
Добрый день. Есть панель СПК207 (кодсис3.5) и модуль МВ110_32ДН, при выборе в библиотеке ModulsOwenLib этого модуля нет. Подскажите как подключить этот модуль. Может у кого есть пример?

RadistDog
07.04.2015, 11:16
Начинаю новый проект.
Подготовлен новый ПК (WinServer 2008 R2 Standard). Установлен КДС - 3.5 SP5 Patch 2.
Контроллер - СПК207.03.web.

Затык в том, что не могу в КДС установить соединение с СПК.
Скриншот в приложении.
17574
Гейтвэй подключается. СПК207 с ПК пингуется и через Путти заходится.
КДС запускал уже от имени Адинистратора - не помогает.
В "любимых устройствах" задавал СПК через IP-адрес и через сетевое имя - не помогает.

Что я не так делаю??

Евгений Кислов
07.04.2015, 11:30
Вы установили в проект target-файл для СПК2xx?

RadistDog
07.04.2015, 11:38
Вы установили в проект target-файл для СПК2xx?

Да! Таргет 3.5.4.20
см. скриншот:17575

RadistDog
07.04.2015, 12:54
Начинаю новый проект.
Подготовлен новый ПК (WinServer 2008 R2 Standard). Установлен КДС - 3.5 SP5 Patch 2.
Контроллер - СПК207.03.web.
...
Что я не так делаю??

Так. Выяснилось, что с ПК под Win7, находящимся в той же ЛВС, на тот-же СПК207 соединение устанавливается!
Правда там КДС чуть по старее - CODESYS V3.5 SP4.

Будем искать дальше.

RadistDog
07.04.2015, 13:09
Так. Выяснилось, что с ПК под Win7, находящимся в той же ЛВС, на тот-же СПК207 соединение устанавливается!
Правда там КДС чуть по старее - CODESYS V3.5 SP4.

Будем искать дальше.

Ой, всё!!
Х*ень какая-то. Простите за мой французский!
После соединения с СПК с другого компа (из той же сетки, всё делалось даже без перестыковки сетевых кабелей) из под старого КДС, после запуска того же старого проекта на новом компе на новом КДС, Новый проект так же стал нормально коннектиться к СПК!

Вопрос решился. Как именно - категорически непонятно.

poduhakupob
08.04.2015, 16:44
Добрый день!Подскажите, пожалуйста, как мне создать в КДС блок-аналог DB(step7), чтобы ввести туда таблицу температурного режима,как на картинке? ВРоде можно создать FB,как DB, но как там сделать таблицу? заранее спасибо!
D



17602

poduhakupob
08.04.2015, 17:01
точно так же как в степе, создаете пользовательский тип данных в виде структуры и объявляете его в глобальных переменных



я извиняюсь,КДС изучаю неделю,можете подробнее описать как это сделать, или наглядно показать?

poduhakupob
09.04.2015, 15:18
в справке к среде разработки достаточно полное руководство чтоб разобраться

Спасибо с этим разобрался! А BLKMOVE,т.е. извлечение данных,он существует в КДС?

извините,что много вопросов

capzap
09.04.2015, 15:25
Спасибо с этим разобрался! А BLKMOVE,т.е. извлечение данных,он существует в КДС?

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

poduhakupob
09.04.2015, 16:35
спасибо за помощь!

Diamond1309
09.04.2015, 21:06
Codesys 3.5 SP5.
По протоколу модбас пытаюсь записать больше одного регистра за один пакет.
1. Если отправляю 2 регистра ARRAY[0..1]OF WORD, то отправляет только первый регистр правильно, а второй регистр равен 0x0000
2. Если отправляю 6 регистров ARRAY[0..5]OF WORD, то все отправленные регистры равны нулю.
Значения в самих сопоставленных переменных правильные, не равны нулю - проверял в режиме "Онлайн" (логин).
Что я делаю не так?
Modbus_COM 3.4.0.0
Modbus_Master_COM_Port 3.5.0.0
Modbus_Slave_COM_Port 3.5.4.0
17637
17638
17639
Пробывал подставлять DWORD, REAL, ARRAY[0..1]OF WORD, ничего не работает. Если два регистра записывать - один из них будет 0, если больше - все регистры нули. Я даже не знаю, как сделать обновление библиотеки в уже готовом проекте.
Проект сделан не мной, я пытаюсь исправить данную ошибку. Автор не знает как делать.

dima.ul
13.04.2015, 14:48
Добрый день, подскажите пожалуйста, для отображения даты и времени использую вот такой формат %t[dd.MM.yyyy HH:mm:ss] , отображает дату и время, но с разницей с системным в минус 4 часа, допустим отображает 10:46:00 а системное время 14:46:00, заранее спасибо

Евгений Кислов
13.04.2015, 14:55
Вы, вероятно, запускаете проект на виртуальном контроллере?

dima.ul
13.04.2015, 16:36
да, на виртуальном

Евгений Кислов
13.04.2015, 19:45
У виртуального контроллера, видимо, UTC+0 по умолчанию. На самом реальном контроллере смещения не будет.

dima.ul
13.04.2015, 20:58
спасибо ...

astroavenger12345
14.04.2015, 09:51
Здравствуйте! при попытке изменить установки среды по умолчанию со стандартных на профессиональные всё опять возвращается к стандартным настройкам. у меня установлена КДС v.3.5 sp5 patch 3. в чём может причина?

Евгений Кислов
14.04.2015, 10:43
Здравствуйте! при попытке изменить установки среды по умолчанию со стандартных на профессиональные всё опять возвращается к стандартным настройкам. у меня установлена КДС v.3.5 sp5 patch 3. в чём может причина?

Ответил на ваши вопросы в этой теме:
http://www.owen.ru/forum/showthread.php?t=17597&page=22

dima.ul
17.04.2015, 17:15
Добрый день, подскажите, в эмуляции элемент тренд работает или только на спк, целый день просидел, а уговорить тренд не смог заработать, просто тупо компиляция не проходит, заранее спасибо

Евгений Кислов
18.04.2015, 00:37
Добрый день, подскажите, в эмуляции элемент тренд работает или только на спк, целый день просидел, а уговорить тренд не смог заработать, просто тупо компиляция не проходит, заранее спасибо

В эмуляции тренды не работают, только на виртуальном контроллере. Чтобы использовать виртуальный контроллер - устанавливаете target-файл CODESYS Control Win V3, запускаете виртуальный контроллер с помощью иконки в системном трее (см. скриншот 1), в установках соединения (компонент Device) производите сканирование сети и выбираете устройство, чье имя совпадает с именем ПК (см. скрин 2):

17361

17362

Эдуард_Н
19.04.2015, 10:49
Кто ни будь пробовал подключить СПК110 к CODESYS V3.5 SP6 Patch 1 или к CODESYS V3.5 SP6 Patch 2 ? У меня ни чего не получается. Вылазит вот такая ошибка:

Евгений Кислов
19.04.2015, 11:26
Кто ни будь пробовал подключить СПК110 к CODESYS V3.5 SP6 Patch 1 или к CODESYS V3.5 SP6 Patch 2 ? У меня ни чего не получается. Вылазит вот такая ошибка:

Я предположу, что у вас подключена библиотека SPKtools. Попробуйте ее удалить и подключиться опять.

Эдуард_Н
19.04.2015, 13:20
Я предположу, что у вас подключена библиотека SPKtools. Попробуйте ее удалить и подключиться опять.

Да, удалил, всё пошло... Раньше такого не было. Наверно связанно с новыми выпусками КДС, в старой версии SPKtools работала.

Эдуард_Н
19.04.2015, 13:39
Не понимаю вчера всё работало, сегодня не хочет. Что не так? Помогите.

Евгений Кислов
19.04.2015, 14:24
Не понимаю вчера всё работало, сегодня не хочет. Что не так? Помогите.

На виртуальном контроллере запускается, чекбоксы и кнопки работают. CODESYS 3.5 SP6. Или я не улавливаю проблему?

17804

Эдуард_Н
19.04.2015, 20:11
Вроде понял, нумерация дней недели не совпадала. После 12 ночи узнаю точнее.
Так и есть: понедельник = 1, вторник = 2....воскресение = 7, а было воскресение = 0

dima.ul
20.04.2015, 11:12
В эмуляции тренды не работают, только на СПК или виртуальном контроллере. Чтобы использовать виртуальный контроллер - устанавливаете target-файл CODESYS Control Win V3, запускаете виртуальный контроллер с помощью иконки в системном трее (см. скриншот 1), в установках соединения (компонент Device) производите сканирование сети и выбираете устройство, чье имя совпадает с именем ПК (см. скрин 2):

17361

17362



По умолчанию

большое спасибо, немного потупил еще конечно я, сразу не понял, что данный данный файл входит в стандартный набор КДС, потом прочитал про точки останова, Вы там конкретно рассматриваете мою ситуацию, спасибо

dima.ul
20.04.2015, 11:51
17817

сделал все как описано, но выдает вот такую ошубку

Евгений Кислов
20.04.2015, 12:49
17817

сделал все как описано, но выдает вот такую ошубку

Проблема очевидна: версия target-файла запущенного виртуального контроллера не совпадает с версией, выбранной в CODESYS.
Выберите нужную версию target'a:

17821

dima.ul
20.04.2015, 14:24
Проблема очевидна: версия target-файла запущенного виртуального контроллера не совпадает с версией, выбранной в CODESYS.
Выберите нужную версию target'a:

17821

спасибо, мало у меня опыта программирования КДС, поэтому и возникают такие вопросы ...

Эдуард_Н
21.04.2015, 06:12
Переустановил КДС, в промежутке удалил папку "3S CODESYS" из паки "Program Files (x86)", бибки остались на месте, вопрос: как удалить все библиотеки при удалении КДС3? Где они прячутся? Полностью почистить после удаления КДС.

Эдуард_Н
21.04.2015, 07:08
В репозитории библиотек, при этом ни одного пакета ещё не ставил. Из-за этого были проблемы с бибкой "SPK Tools", пока не удалил из репозитория все оставшиеся бибки.
Оказалось, что бибки держаться в паке "Program Data".

dima.ul
21.04.2015, 17:24
Подскажите пожалуйста, как получить системное время в переменную на виртуальном контроллере, спасибо

Евгений Кислов
22.04.2015, 09:08
Подскажите пожалуйста, как получить системное время в переменную на виртуальном контроллере, спасибо

1. Добавляем в Менеджере библиотек библиотеку DATE and TIME

17857

2. В этой библиотеке нас интересует подбиблиотека CAA Real Time Clock Extern (CAA RTCLK). В нее входят два функциональных блока для работы с системным временем - GetDateAndTime (считывание системного времени) и SetDateAndTime (запись системного времени).

17859

3. Для упрощения взаимодействия с блоками создадим программу на языке CFC. Добавим элемент, вставим в него интересующий нас функциональный блок:

17860

4. Системное время хранится в формате DT (DATE and TIME). Физически - это переменная типа DWORD, в которой записывается число секунд, прошедшее с 00:00 часов 1 января 1970 года. Поэтому сразу добавим блоки конвертации DT в DWORD и STRING (для наглядности). Не забываем привязать нашу программу к какой-нибудь задаче.

17861

5. После запуска проекта, при условии, что вход блока GetDateAndTime принял значение TRUE, получаем на выходе системное время в формате DT, и после преобразований - в DWORD и STRING. Нужно понимать, что в данном случае блок сработает один раз - в момент запуска программы (потому что на входе сразу TRUE).

17858

Как уже упоминалось, виртуальный контроллер живет по UTC+0, поэтому в данном случае видна разница с моим временем в трее - т.к. у меня UTC+3.

Блок SetDateAndTime работает аналогично - подаем на вход время в формате DT, смотрим на изменение времени в трее.

Эдуард_Н
24.04.2015, 05:17
Подскажите как в КДС3 конвертировать с одного языка в другой.

Евгений Кислов
24.04.2015, 07:52
Подскажите как в КДС3 конвертировать с одного языка в другой.

17888

Других видов конвертации, насколько мне известно, не существует.

приборист
25.04.2015, 12:24
Добрый день!
Не могу победить функцию SysFileSetPos.
Данные всегда дописываются в конец файла (используешь SysFileSetPos с любым значением или не используешь вовсе, флаги доступа пробовал и append и append_plus)

Сам себе и отвечу - работает если флаг доступа выставить read_plus.

Евгений Кислов
27.04.2015, 09:19
Добрый день. Не могу понять почему не появляется сенсорная клавиатура при вводе пароля , на контроллере ее тоже нет.
17913

Ваше вложение не открывается.

dima.ul
27.04.2015, 09:23
1. Добавляем в Менеджере библиотек библиотеку DATE and TIME

17857

2. В этой библиотеке нас интересует подбиблиотека CAA Real Time Clock Extern (CAA RTCLK). В нее входят два функциональных блока для работы с системным временем - GetDateAndTime (считывание системного времени) и SetDateAndTime (запись системного времени).

17859

3. Для упрощения взаимодействия с блоками создадим программу на языке CFC. Добавим элемент, вставим в него интересующий нас функциональный блок:

17860

4. Системное время хранится в формате DT (DATE and TIME). Физически - это переменная типа DWORD, в которой записывается число секунд, прошедшее с 00:00 часов 1 января 1970 года. Поэтому сразу добавим блоки конвертации DT в DWORD и STRING (для наглядности). Не забываем привязать нашу программу к какой-нибудь задаче.

17861

5. После запуска проекта, при условии, что вход блока GetDateAndTime принял значение TRUE, получаем на выходе системное время в формате DT, и после преобразований - в DWORD и STRING. Нужно понимать, что в данном случае блок сработает один раз - в момент запуска программы (потому что на входе сразу TRUE).

17858

Как уже упоминалось, виртуальный контроллер живет по UTC+0, поэтому в данном случае видна разница с моим временем в трее - т.к. у меня UTC+3.

Блок SetDateAndTime работает аналогично - подаем на вход время в формате DT, смотрим на изменение времени в трее.


спасибо, за развернутый ответ ...

dima.ul
27.04.2015, 18:20
Евгению Кислову, dtDateAndTime преобразовал в DT_TO_String получил строку в которой содержится дата и время, в стандартной библиотеке КДС 2.3 RTC время от установленного прибавляет по 1 сек, а в КДС 3.5 нет, может что то не понимаю, подскажите, мне нужно что бы переменная времени т.е системное время сверялось с заданными переменными времени и запускались запланированные задания по расписанию, спасибо

Евгений Кислов
27.04.2015, 20:16
Евгению Кислову, dtDateAndTime преобразовал в DT_TO_String получил строку в которой содержится дата и время, в стандартной библиотеке КДС 2.3 RTC время от установленного прибавляет по 1 сек, а в КДС 3.5 нет, может что то не понимаю, подскажите, мне нужно что бы переменная времени т.е системное время сверялось с заданными переменными времени и запускались запланированные задания по расписанию, спасибо

Извините, не до конца понял вопрос. Если задача сводится к тому, чтобы, например, каждый день в 20-00 сбрасывать значения переменных в файл, то можно преобразовать DT в DWORD, вырезать из него часы-минуты-секунды и в коде программы прописать:

IF CurrentHour=20 AND CurrentMinute=0 AND CurrentSecond=0 THEN .... <все, что хотите>

dima.ul
27.04.2015, 20:29
Извините, не до конца понял вопрос. Если задача сводится к тому, чтобы, например, каждый день в 20-00 сбрасывать значения переменных в файл, то можно преобразовать DT в DWORD, вырезать из него часы-минуты-секунды и в коде программы прописать:

IF CurrentHour=20 AND CurrentMinute=0 AND CurrentSecond=0 THEN .... <все, что хотите>


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

Евгений Кислов
27.04.2015, 20:43
Тогда, как я уже говорил, надо конвертировать DT в DWORD - получим дату и время в виде числа секунд, прошедших с 0 часов 1 января 1970 года. Дальше из него надо вырезать отдельные разряды - секунды, минуты и т.д. Для пользователя надо подготовить поля ввода пользовательских значений этих разрядов. Потом просто сравниваем то, что вырезали из текущего времени с тем, что ввел пользователь.

По поводу вырезания часов-минут-секунд из DWORD: вот пример
http://www.owen.ru/forum/showthread.php?t=17597&page=3&p=143389&viewfull=1#post143389

а вот, как его подгрузить в CODESYS
http://www.owen.ru/forum/showthread.php?t=17597&page=21&p=164567&viewfull=1#post164567

sslaventiy_85
28.04.2015, 05:30
Здравствуйте! Подскажите - можно ли сделать так, чтоб slave устройства опрашивались поочередно, по порядку?

sslaventiy_85
28.04.2015, 05:33
Здравствуйте! Подскажите - можно ли сделать так, чтоб slave устройства опрашивались поочередно, по порядку?

Например - опрашивает один slave, дождался ответа переходит к другому, и т.д.

RadistDog
28.04.2015, 11:42
Здравствуйте!
Элементу, к примеру - прямоугольнику, можно задать цвет с помощью переменной типа DWORD, указанной в Свойствах -> Переменная цвета -> Цвет заливки.
Мне нужно, чтобы цвет прямоугольника (символизирующего температуру в камере) плавно менялся от голубого (холодно) через светло-зелёный (норма) к розовому (горячо).

Как узнать какому числу какой цвет соответствует??

Евгений Кислов
28.04.2015, 11:53
Здравствуйте!
Элементу, к примеру - прямоугольнику, можно задать цвет с помощью переменной типа DWORD, указанной в Свойствах -> Переменная цвета -> Цвет заливки.
Мне нужно, чтобы цвет прямоугольника (символизирующего температуру в камере) плавно менялся от голубого (холодно) через светло-зелёный (норма) к розовому (горячо).

Как узнать какому числу какой цвет соответствует??

Например, http://www.rapidtables.com/web/color/RGB_Color.htm
Ну и в самом CODESYS при выборе статического цвета можно увидеть его значения в RGB.

Вот хороший пример работы с цветом:
http://www.owen.ru/forum/showthread.php?t=17597&page=20&p=164421&viewfull=1#post164421

RadistDog
28.04.2015, 21:07
Например, http://www.rapidtables.com/web/color/RGB_Color.htm
Ну и в самом CODESYS при выборе статического цвета можно увидеть его значения в RGB.

Вот хороший пример работы с цветом:
http://www.owen.ru/forum/showthread.php?t=17597&page=20&p=164421&viewfull=1#post164421

Спасибо! Это то, что нужно!!

sslaventiy_85
29.04.2015, 10:29
Например - опрашивает один slave, дождался ответа переходит к другому, и т.д.

Если это просто делается - подскажите где посмотреть, пожалуйста!!

Эдуард_Н
07.05.2015, 08:17
Почему в СПК при добавлении каналов (пустых и с нуля) в устройство Modbus_Slave_COM_Port их можно добавить очень много, но как только начинаешь расписывать адреса регистров кнопка добавления каналов отключается? Получается, что в процессе наладки если понадобится добавить канал придётся переписывать всё по новой?

приборист
07.05.2015, 08:24
Почему в СПК при добавлении каналов (пустых и с нуля) в устройство Modbus_Slave_COM_Port их можно добавить очень много, но как только начинаешь расписывать адреса регистров кнопка добавления каналов отключается? Получается, что в процессе наладки если понадобится добавить канал придётся переписывать всё по новой?

По всей видимости не более 10 переменных с опросом каждой в 100ms?
Правильнее вычитывать сразу несколько переменных (те же 10, но одним запросом)
И потом разбирать по переменным.

Эдуард_Н
07.05.2015, 08:41
А если это переменные типа real то как их одним запросом считать? Уменьшил опрос с 100 до 10 всё без толку.

Kvazar
12.05.2015, 16:56
Как известно, настроить запуск чтения/записи по RS-485 можно либо циклически, либо по логической переменной (речь идёт о настройках в разделе конфигуратора Modbus Slave, настройка каналов).
По поводу циклически вопросов не возникает.
А вот по триггерной переменной вопрос.
Мне нужно запустить однократно опрос некоторых регистров и лишь только после этого дальше что-то делать.
Пусть, к примеру, запустить опрос по нажатию на кнопку. Нажимаем кнопку - переменная переключилась в TRUE. И вопрос - через какое время система прочитает значение переменной и запустит чтение? Когда можно сбросить переменную в FALSE? Как настроить это время?
В хелпе что-то про частоту дискретизации планировщика задач написано, но ничего больше не сказано.

ASo
12.05.2015, 17:36
В данном случае лучше воспользоваться библиотекой ОВЕН Модбас и выполнять опрос вручную.

Kvazar
12.05.2015, 18:33
Понятно, это как вариант. Но тут уже именно интересно выяснить.
По "перепаду" логической переменной можно и задачи запускать.
Отвлечемся от RS, вопрос звучит так:
через какое время после "логического перепада" начнёт выполняться соответствующее событие? Каково минимальное время нахождения логической переменной в TRUE?

Sergey666
12.05.2015, 23:43
Как известно, настроить запуск чтения/записи по RS-485 можно либо циклически, либо по логической переменной (речь идёт о настройках в разделе конфигуратора Modbus Slave, настройка каналов).
По поводу циклически вопросов не возникает.
А вот по триггерной переменной вопрос.
Мне нужно запустить однократно опрос некоторых регистров и лишь только после этого дальше что-то делать.
Пусть, к примеру, запустить опрос по нажатию на кнопку. Нажимаем кнопку - переменная переключилась в TRUE. И вопрос - через какое время система прочитает значение переменной и запустит чтение? Когда можно сбросить переменную в FALSE? Как настроить это время?
В хелпе что-то про частоту дискретизации планировщика задач написано, но ничего больше не сказано.

При такой организации надо контролировать соотв. контрольные регистры - "адрес" и "Статус" . Если Адрес соответствует и ошибок нет значит все ОК .На следующий модуль переходи .

приборист
13.05.2015, 09:03
А если это переменные типа real то как их одним запросом считать? Уменьшил опрос с 100 до 10 всё без толку.

Разница то какая?
Я МВ8А разом вычитываю, все 96 байт.
А потом разбираю.

Эдуард_Н
13.05.2015, 09:08
Разница то какая?
Я МВ8А разом вычитываю, все 96 байт.
А потом разбираю.

Как это разом? Можете в примере показать или скрины?

Kvazar
13.05.2015, 09:36
При такой организации надо контролировать соотв. контрольные регистры - "адрес" и "Статус" . Если Адрес соответствует и ошибок нет значит все ОК .На следующий модуль переходи .
Хорошо, спасибо за предложенный вариант.
Если кто-то подскажет еще по нижеприведенному вопросу,то для меня на данном этапе всё станет прозрачно совершенно.
Вот в этой теме
http://www.owen.ru/forum/showthread.php?t=19404&page=3
уважаемый Осинский Алексей приводит код такой:


PROGRAM PLC_PRG
VAR
xTrigger:BOOL:=FALSE; //Триггер для Rising Edge
END_VAR

IF xTrigger THEN //Если триггер установлен - сбросим его
xTrigger:=FALSE;
ELSIF
xTrigger:=TRUE; //подадим команду на запись
END_IF

То есть по сути запускает запись параметров по RS-485 по изменению состояния логической переменной (переходу FALSE-TRUE).
Если ранее уже установлено состояние TRUE, то переменная сбрасывается в FALSE и следующей же командой - в TRUE.
Система успеет отследить, что был логический переход? От чего зависит, успеет или нет? Где хотя бы это смотреть, читать?

приборист
13.05.2015, 09:37
Как это разом? Можете в примере показать или скрины?
18135
На примере 2а.
Для 8а длина - 48.
А в соотнесении уже выбираете какие данные нужны.