PDA

Просмотр полной версии : Связь СП270 и ПЛК100



Vladimir_tat
14.11.2012, 16:45
Доброго времени суток! Для пробы соединения панели и контроллера скачал проги из раздела "примеры", по какой-то причине связь не пилится, в бортовом наблюдается следующее:
http://fotki.yandex.ru/users/wowanne/view/594306/?page=0
Вопрос - как же быть, что же делать?

Пантелеев Дмитрий
15.11.2012, 09:58
Побольше данных напишите. По какому интерфейсу соединяете? Панель мастер или слейв? Что считываете и т.д.

Vladimir_tat
15.11.2012, 11:45
Пример взял с этой страницы
http://www.owen.ru/catalog/47674334
называется "Пример связи МВУ8, ПЛК100 и СП270"
думаю его просмотр будет нагляднее чем мои кривые объяснения)

Пантелеев Дмитрий
15.11.2012, 14:41
Каким кабелем соединяете панель и плк? Необходим специальный кабель КС2. Тот, который идет вместе с плк не подойдет.

Vladimir_tat
15.11.2012, 14:44
Отфигачил перемычку в кабеле КС1, вроде дело пошло на лад, спасибо

petera
19.11.2012, 12:35
Каким кабелем соединяете панель и плк? Необходим специальный кабель КС2. Тот, который идет вместе с плк не подойдет.
А у меня ПЛК160+СП270 работают через кабель КС1, правда порт RS232 в ПЛК использую второй, тот который не Debug:)

Anry65
26.11.2012, 20:27
Помогите ЧАЙНИКУ!!! Хочу на ПК создать виртуальный проект ПЛК 110-32 соединённый с СП270. Но в CoDeSys в конфигурации ПЛК в входных сигналах не вижу Modbus. Что делать??? Подскажите плиззз;)

capzap
26.11.2012, 21:07
Помогите ЧАЙНИКУ!!! Хочу на ПК создать виртуальный проект ПЛК 110-32 соединённый с СП270. Но в CoDeSys в конфигурации ПЛК в входных сигналах не вижу Modbus. Что делать??? Подскажите плиззз;)

Правую кнопки "мышки" нажимали?

Anry65
26.11.2012, 23:21
Capzap спасибочки:). Я же говорил что я чайник. Теперь понемногу буду продвигаться дальше, с Божей и Вашей помощью!!!

capzap
26.11.2012, 23:36
да как бы не зачто, главное чтоб помогло

Vladimir_tat
30.11.2012, 12:55
Возник очередной вопрос - скорость получения ответа панелью. Суть в следующем - на панели сконфигурирована кнопка с индикацией, когда ее нажимаешь МУ отрабатывает практически моментально, а вот до того как загорится индикатор проходит примерно 1 секунда. Соответственно вопрос - отчего появляется эта задержка?

Адрей
30.11.2012, 18:13
Событие записи происходит сразу. А чтение параметров интерфейса по времени. Чем больше параметров опроса тем больше задержка.

Vladimir_tat
24.12.2012, 14:47
Еще возник вопрос - SysTimeLib считает DayOfWeek не с 1 до 7 (1-2-3-4-5-6-7), а с 1 до 0 (1-2-3-4-5-6-0)?

Amko
24.12.2012, 16:08
Скорее 0-6. Неделя начинается с воскресенья.

Vladimir_tat
26.12.2012, 13:13
Котаны! Дайте пжлст пример получения реального времени на языке ST

petera
26.12.2012, 14:19
Котаны! Дайте пжлст пример получения реального времени на языке ST
Пжлст см. библ. OSCAT (раздел Time&Date).:D http://www.owen.ru/forum/showpost.php?p=99042&postcount=1

Гарчев Евгений
26.12.2012, 18:29
Котаны! Дайте пжлст пример получения реального времени на языке ST

На форуме в разделе ПЛК/Приемеры программ и полезности тоже можно много интересного найти.
http://www.owen.ru/forum/showthread.php?t=13588 - 6-ой пример - пример работы с библиотекой SysLibTime.

Vladimir_tat
27.12.2012, 12:54
Нашел, воспользовался, всем большое спасибо!

Vladimir_tat
21.01.2013, 15:02
Еще вопрос - как в контроллер получить данные, записанные в PFW регистр панели?

petera
21.01.2013, 15:14
Еще вопрос - как в контроллер получить данные, записанные в PFW регистр панели?
Зависит от
1. Панель Master или Slave
2. Когда в контроллере нужно получить
а) при нажатии кнопки на панели
б) при вводе нового значения в этот PFW
с) по запросу из ПЛК
д) и т.д (при включении питания, например или в определенное время или... или...)
По конкретнее нужно спрашивать.

Vladimir_tat
21.01.2013, 15:24
Панель в слэйве, на ней есть несколько полей цифрового ввода, данные в которых нужны в сохраненном виде. Оттуда эти данные в программе загружаются для дальней шей обработки по нажатию кнопки. Когда регистр PSW все проходит нормально, но при вкл/выкл панели данные теряются, а когда регистр PFW данные не теряются, но из регистра я их вытащить не могу

petera
21.01.2013, 17:44
Панель в слэйве, на ней есть несколько полей цифрового ввода, данные в которых нужны в сохраненном виде. Оттуда эти данные в программе загружаются для дальней шей обработки по нажатию кнопки. Когда регистр PSW все проходит нормально, но при вкл/выкл панели данные теряются, а когда регистр PFW данные не теряются, но из регистра я их вытащить не могу
Если коротко, то нужно для одной пары регистров PFWxxx=>PSWxxx
добавить связку из двух элементов из расширенного режима READ и WRITE
Идея такая то, что нужно вводить и должно храниться без питания сразу вводим например в PFW300, элемент REAR сам без всяких функций читает содержимое PFW300 и передает его элементу WRITE в качестве входного параметра. WRITE сам запишет например в регистр PSW256. PSW256 должен читать ПЛК (когда захочет или по команде от кнопки).
Если экранов больше одного, и ввод значений происходит не на стартовом экране, то связку (READ => WRITE) сделать глобальным элементом. В противном случае при включении питания операция PFWxxx=>PSWxxx не будет выполнена пока не будет переход на этот экран.
Попробую сделать пример с картинками и выложить в теме СП270 Tips & Tricks. Маленькие хитрости. http://www.owen.ru/forum/showthread.php?t=14132
ЗЫ. Уже сделал http://www.owen.ru/forum/showpost.php?p=100714&postcount=35

Amko
21.01.2013, 18:16
Как вариант, написать скриптик в три строчки, вызывать его функциональной областью, которую можно сделать глобальной.

WORD wValue; // вспомогательная переменная
READ(HMI_LOCAL_MCH, 0, TYPE_PFW, 256, 1, &wValue); // откуда читать. PFW256
WRITE(HMI_LOCAL_MCH, 0, TYPE_PSW, 256, 1, wValue); // куда записывать PSW256
Если нужно добавить регистры переноса, скриптик корректировать. Переменную можно использовать только одну.

petera
21.01.2013, 19:24
Как вариант, написать скриптик в три строчки, вызывать его функциональной областью, которую можно сделать глобальной.

WORD wValue; // вспомогательная переменная
READ(HMI_LOCAL_MCH, 0, TYPE_PFW, 256, 1, &wValue); // откуда читать. PFW256
WRITE(HMI_LOCAL_MCH, 0, TYPE_PSW, 256, 1, wValue); // куда записывать PSW256
Если нужно добавить регистры переноса, скриптик корректировать. Переменную можно использовать только одну.
Переменную одну нельзя использовать.
Vladimir_tat, посмотрите мое решение в картинках здесь http://www.owen.ru/forum/showpost.php?p=100714&postcount=35
Шесть простых действий, четыре из которых выполняются мышкой.:)

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

Amko
21.01.2013, 20:15
Переменную одну нельзя использовать.

Ну как.
К примеру, нужно добавить еще 1 регистр для копирования.
Просто к данному коду добавляем еще 2 строчки.

WORD wValue; // вспомогательная переменная
READ(HMI_LOCAL_MCH, 0, TYPE_PFW, 256, 1, &wValue); // откуда читать. PFW256
WRITE(HMI_LOCAL_MCH, 0, TYPE_PSW, 256, 1, wValue); // куда записывать PSW256
READ(HMI_LOCAL_MCH, 0, TYPE_PFW, 257, 1, &wValue); // откуда читать. PFW257
WRITE(HMI_LOCAL_MCH, 0, TYPE_PSW, 257, 1, wValue); // куда записывать PSW257

Итого: одна переменная.
Почему вы считаете, что так не получится?
Мое решение быстро масштабируемое, из одного места. При добавлении еще одного регистра нужно провести:
1. Выделить 2 строчки кода.
2. CTRL + C.
3. CTRL + V.
4. Исправить адрес регистра.
5. F7
Итого 5 действий, если уж начинать мериться простотой :)

petera
21.01.2013, 21:29
Ну как.
К примеру, нужно добавить еще 1 регистр для копирования.
Просто к данному коду добавляем еще 2 строчки.

WORD wValue; // вспомогательная переменная
READ(HMI_LOCAL_MCH, 0, TYPE_PFW, 256, 1, &wValue); // откуда читать. PFW256
WRITE(HMI_LOCAL_MCH, 0, TYPE_PSW, 256, 1, wValue); // куда записывать PSW256
READ(HMI_LOCAL_MCH, 0, TYPE_PFW, 257, 1, &wValue); // откуда читать. PFW257
WRITE(HMI_LOCAL_MCH, 0, TYPE_PSW, 257, 1, wValue); // куда записывать PSW257

Итого: одна переменная.
Почему вы считаете, что так не получится?
Мое решение быстро масштабируемое, из одного места. При добавлении еще одного регистра нужно провести:
1. Выделить 2 строчки кода.
2. CTRL + C.
3. CTRL + V.
4. Исправить адрес регистра.
5. F7
Итого 5 действий, если уж начинать мериться простотой :)
На счет одной временной переменной, ИЗВИНИТЕ, я не прав :( . Что-то немного затупил. :)
А на счет остального не согласен.
Я у себя считал элементарные действия и они выполняются в основном мышкой!. А у Вас, если их учитывать? Давайте посмотрим

http://toolson.net/ImageData/GifAnimation/509971.gif

А еще сколько нужно и саму функцию создать в дереве проекта -не один щелчок мышки. И символов еще сколько нужно вводить (комментарии можно не вводить)

WORD wValue;
READ(HMI_LOCAL_MCH, 0, TYPE_PFW, 256, 1, &wValue);
WRITE(HMI_LOCAL_MCH, 0, TYPE_PSW, 256, 1, wValue);

И еще F7 для компиляции нужно нажимать.
И кто быстрее сделает? Я или Вы?
А самое главное зачем?:D
Эти функции и так доступны в ф. области.:)
http://toolson.net/ImageData/GifAnimation/509990.gif

Так ЗАЧЕМ еще и код на Си???
И самое интересное. Без загрузки в панель работу вашей функции не проверить и не отладить.

Amko
21.01.2013, 21:35
То, что код не проверить - косяк, согласен. Не удобно.
То, что код на Си повторяет действие кнопок на поле, согласен.
Я не оспариваю Ваше решение, оно доступней.

С другой стороны, можно поспорить, что быстрее, мышкой тыкать, или строчки исправлять, тут вопрос скорости набора и умения пользоваться ПК :)

Ну, и лично мне удобно, когда все неявные действия с регистрами (копирование туда-сюда, фильтрация, ограничения) - в одном месте, на одном поле, и перед глазами. Я не тыкаю мышкой потом, не ищу, в каком же окне какой WRITE меняет мои поля.
Повторюсь, дело вкуса)

petera
21.01.2013, 21:37
То, что код не проверить - косяк, согласен. Не удобно.
То, что код на Си повторяет действие кнопок на поле, согласен.
Я не оспариваю Ваше решение, оно доступней.

С другой стороны, можно поспорить, что быстрее, мышкой тыкать, или строчки исправлять, тут вопрос скорости набора и умения пользоваться ПК :)

Ну, и лично мне удобно, когда все неявные действия с регистрами (копирование туда-сюда, фильтрация, ограничения) - в одном месте, на одном поле, и перед глазами. Я не тыкаю мышкой потом, не ищу, в каком же окне какой WRITE меняет мои поля.
Повторюсь, дело вкуса)
К одной цели можно идти разными путями.
Я же не сказал, что у Вас работать не будет.:)
ЗЫ. Здесь даже не в Си дело, а в том что эти функции в ф. области уже и так есть.
И потом все равно придется мышкой тыкать по неявным ф. областям и искать в которой из них нужная функция на Си. Они тоже имен не имеют.

Vladimir_tat
25.01.2013, 08:02
Большое спасибо!
В итоге запилили функциональную область с функцией передачи данных из PFW регистров в PSW, вроде работает.

petera
25.01.2013, 09:02
Ответ из серии "А знаете ли вы..."
Если в Вашем проекте нужно копировать блок(массив последовательно идущих регистров) из области PFW в блок(массив последовательно идущих регистров) в области PSW, то это можно сделать всего одной связкой (READ => WRITE). Не важно 2 регистра, или 10, или 100. Нужен всего ОДИН макрос из ДВУХ элементов!:)
Эта связка (READ => WRITE) полностью эквивалентна варианту с выбором функции "Копировать блок данных" в ф. области, показанной здесь. При условии выполнения "Непрерывно"
http://toolson.net/ImageData/GifAnimation/509990.gif
Только без лишних элементов расширенного режима, которые находятся внутри стандартного элемента "Функциональная область".
Нужно будет выложить на всеобщее обозрение препарированный элемент "Функциональная область". И будет видно сколько там остается лишнего, не используемого кода, если нужно выполнить элементарные действия.
Даже если Вы используете ф. область для вызова скрипта на Си. На экране (внутри самого элемента "Функциональная область") остается масса элементов, которые по сути не используются, а память панели(экрана) съедают.:D