1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

Помогите дилетанту

Обсуждение вопросов, не относящихся ни к одному из других подразделов

Модератор: kirillio

Ответить

Автор темы
Бурлак
здесь недавно
здесь недавно
Сообщения: 32
Зарегистрирован: 07 ноя 2012, 11:16
Имя: Моисеев Владимир Николаевич
Страна: Россия
город/регион: п. Редкино

Помогите дилетанту

Сообщение Бурлак »

Коллеги, помогите дилетанту.

Имею Simatic PCS7 v7.1 sp4 и необходимое "железо".

Задача: создать систему управления манипулятором.

Манипулятор имеет "руку", движения которой: 1.Вверх, 2.Вниз, 3.Вперед, 4.Назад, 5.Поворот к конвейеру, 6. Поворот к питателю.
На руке закреплен схват, действия: 1. Сжать, 2. Расжать.
Все движения и действия по принципу "до упора".
Вероятность отказа механики не нулевая.
Циклограмму работы делим на шаги. Основной режим работы - автоматическое выполнение шагов циклограммы (АУ) = штатный режим.
При нарушении условий штатного режима, останов и мигающий красный фонарь.
В любой момент оператор может перейти на ручное управление (РУ). Здесь доступны все движения и действия манипулятора, видно его текущее состояние.
Переход на АУ допускается как с текущего шага, так и с любого шага циклограммы по выбору.
В автомате можно пройти всю циклограмму или только конкретный шаг (полуавтомат).
Обычно (но не всегда - выход на исходную позицию), шаг имеет начальное состояние (НС) и конечное (ожидаемое) состояние (ОС).
Переход в АУ с конкретного шага возможен, если текушее состояние = начальному состоянию. Оператор должен видеть НС, чтобы "подогнать" к нему состояние манипулятора.

С чего начать решение задачи? На каком языке писать ПО для контроллера? На чем создавать ПО операторской станции?

С уважением, Владимир.
Аватара пользователя

aranea
знаток Eplan
знаток Eplan
Сообщения: 1136
Зарегистрирован: 21 сен 2012, 22:45
Имя: aranea
Благодарил (а): 30 раз
Поблагодарили: 165 раз

Re: Помогите дилетанту

Сообщение aranea »

хороша задача для дилетанта...
если у вас PCS7 то откуда вопросы о языке и ПО?
Step7 с его LAD/FBD/STL, SCL, CFC, GRAPH и WinCC для АРМ
на чем умеете на том и пишите
начать надо с реализации ручного режима
Изображение
Аватара пользователя

VADR
администратор
администратор
Сообщения: 4727
Зарегистрирован: 25 июл 2008, 07:12
Имя: Диев Александр Васильевич
Страна: Россия
город/регион: г. Сегежа, Карелия
Благодарил (а): 225 раз
Поблагодарили: 392 раза

Re: Помогите дилетанту

Сообщение VADR »

Бурлак писал(а):Манипулятор имеет "руку", движения которой: 1.Вверх, 2.Вниз, 3.Вперед, 4.Назад, 5.Поворот к конвейеру, 6. Поворот к питателю.
На руке закреплен схват, действия: 1. Сжать, 2. Расжать.
Все движения и действия по принципу "до упора".
Насчёт "поворот к конвейеру" и "поворот к питателю" - насчёт "до упора" есть некоторые сомнения. Да и для остальных операций - тоже. Чем, кстати "упор" определяется? Концевые выключатели? Ток двигателя?
Повторное использование кода не отменяет повторного использования мозга при его повторном использовании.

Автор темы
Бурлак
здесь недавно
здесь недавно
Сообщения: 32
Зарегистрирован: 07 ноя 2012, 11:16
Имя: Моисеев Владимир Николаевич
Страна: Россия
город/регион: п. Редкино

Re: Помогите дилетанту

Сообщение Бурлак »

>VADR » Сегодня, 10:06
>Насчёт "поворот к конвейеру" ...
Химия и электричество обычно не дружат. Воздух. Демферы. До концевика.

С уважением, Владимир.

Автор темы
Бурлак
здесь недавно
здесь недавно
Сообщения: 32
Зарегистрирован: 07 ноя 2012, 11:16
Имя: Моисеев Владимир Николаевич
Страна: Россия
город/регион: п. Редкино

Re: Помогите дилетанту

Сообщение Бурлак »

> aranea » Сегодня, 09:55
> ... откуда вопросы о языке ...
Меня не интересуют простые перечисления возможностей.
Меня интересуют "кочки и овраги" и возможные "шишки" того или иного подхода.
Реальный опыт.
"Мордочка" приложения может выглядеть как то так:


Как прикрепить изображение на локальном компьютере к ответу?

С уважением, Владимир
Аватара пользователя

CHANt
эксперт
эксперт
Сообщения: 1465
Зарегистрирован: 25 июл 2008, 10:25
Имя: Эдуард Владимирович
Страна: СССР
город/регион: Оренбург
Благодарил (а): 45 раз
Поблагодарили: 104 раза

Re: Помогите дилетанту

Сообщение CHANt »

Бурлак писал(а):> aranea » Сегодня, 09:55
> ... откуда вопросы о языке ...
Меня не интересуют простые перечисления возможностей.
Меня интересуют "кочки и овраги" и возможные "шишки" того или иного подхода.
А Вам и не перечисляли подходы!
"На чем создавать ПО операторской станции " aranea Вам и сказал, что выбора у Вас нет - WinCC.
ПО одно - PCS7.
Языки, по хорошему, лучше использовать несколько. Так как есть расчеты (текстовые языки) и есть дискретная логика (подойдут и SFC/FBD/LAD). Да и никуда не денетесь от CFC, это основа PCS7.

Задачу Вам декомпозировали, почти, в задании. Да еще и указали что надо делать в виде Автоматов и как. Вот и начинайте продумывать единичные куски отвечающие за каждое действие. Затем управление от оператора этим куском. Затем как выполнять их по циклограмме в автомате и полуавтомате. Расчетная часть циклограммы, так как там и должно быть задание в виде цифирек)))
Бурлак писал(а):"Меня не интересуют простые перечисления возможностей. ...Мордочка" приложения может выглядеть как то так:....
Вряд-ли за Вас кто-то делать будет Вашу работу.Да и свой тон стоит по умерить. :ges_down:

P.S. Скачайте в интернете курсы по PCS7, очень пригодятся
Последний раз редактировалось CHANt 09 ноя 2012, 14:59, всего редактировалось 1 раз.
--------------------------------------------------------------------------------------------
Аватара пользователя

VADR
администратор
администратор
Сообщения: 4727
Зарегистрирован: 25 июл 2008, 07:12
Имя: Диев Александр Васильевич
Страна: Россия
город/регион: г. Сегежа, Карелия
Благодарил (а): 225 раз
Поблагодарили: 392 раза

Re: Помогите дилетанту

Сообщение VADR »

Бурлак писал(а):Как прикрепить изображение на локальном компьютере к ответу?
Нажать кнопку "Ответить" для полной формы ответа (быстрый ответ внизу страницы не имеет функции добавления вложений). Ниже поля ответа - вторая вкладка "добавить вложения". Выбрать файл, добавить, и если он имеет графический формат - вставится в текст, как картинка.
Повторное использование кода не отменяет повторного использования мозга при его повторном использовании.

Автор темы
Бурлак
здесь недавно
здесь недавно
Сообщения: 32
Зарегистрирован: 07 ноя 2012, 11:16
Имя: Моисеев Владимир Николаевич
Страна: Россия
город/регион: п. Редкино

Re: Помогите дилетанту

Сообщение Бурлак »

>CHANt » Сегодня, 14:42

>...Да и свой тон стоит по умерить..
Извините, никого не хотел обидеть.

Внешний вид:
Робот-1.jpg
С уважением, Владимир
У вас нет необходимых прав для просмотра вложений в этом сообщении.

Автор темы
Бурлак
здесь недавно
здесь недавно
Сообщения: 32
Зарегистрирован: 07 ноя 2012, 11:16
Имя: Моисеев Владимир Николаевич
Страна: Россия
город/регион: п. Редкино

Re: Помогите дилетанту

Сообщение Бурлак »

>VADR » Сегодня, 14:45
Спасибо.

С уважением, Владимир
Аватара пользователя

CHANt
эксперт
эксперт
Сообщения: 1465
Зарегистрирован: 25 июл 2008, 10:25
Имя: Эдуард Владимирович
Страна: СССР
город/регион: Оренбург
Благодарил (а): 45 раз
Поблагодарили: 104 раза

Re: Помогите дилетанту

Сообщение CHANt »

Вероятность отказа механики не нулевая.
Насколько я понимаю задание, при разработке алгоритмов единичных движений, необходимо ввести контроль с помощью таймера, между начальным состоянием и срабатыванием концевика в конце движения, соответственно и возврат обратно контролировать. В случае истечения таймера и отсутствия концевика - блокировка алгоритма, с выдачей сигнала неисправности. Есс-но, циклограмма должна также тормозится в режимах автомат/полуавтомат при неисправности.

Составляйте алгоритмы и структуру программы. На первом этапе работы программирование не требуется.
--------------------------------------------------------------------------------------------

Автор темы
Бурлак
здесь недавно
здесь недавно
Сообщения: 32
Зарегистрирован: 07 ноя 2012, 11:16
Имя: Моисеев Владимир Николаевич
Страна: Россия
город/регион: п. Редкино

Re: Помогите дилетанту

Сообщение Бурлак »

> CHANt » Сегодня, 19:20
Видимо не туда попал.
Меня интересуют мнения профессионалов по Simatic PCS7, сам же не имею достаточного опыта.
Это задача чисто программистская и её надо решить средствами PCS7.
Прикладное ПО контроллера разработал на S7-SCL, ПО АРМ - Visual Basic скрипт WinCC.
Но туда ли гребу? Нет ли инструментария разработки ПО для получения более элегантного решения в данной области?
У меня получается достаточно коряво. Для примера привожу реализацию шага циклограммы

//== Штатное состояние автоматического режима - выполнение шагов рабочего цикла
//-- Выбор
VBR:
CASE intShag OF
0: //-- Шаг 00 - В исходное положение
CASE intCase OF
. . .
1: //-- Шаг 01 = Схват вверх, вперед, к питателю, сжать - Схват над питателем
CASE intCase OF
0: //--Синхронизация с конвейером
//..
intCase := intCase + 1; //-- Заглушка на месте синхронизации
//..
1:
//-- Команда питателю
//..

//-- Проверка начального состояния
idxNS :=3;
GOTO PrNS; //-- intCase := intCase+1;

2:
idxAU:=4;
idxOS:=4;
idxMS:=3;
idxTOShagi:=0;
GOTO PSH;
3: //-- Ожидание состояния
GOTO SOS;
4: //-- Завершение шага
GOTO ZSH;
END_CASE;

2: //-- Шаг 02 = Схват вниз, вперед, к питателю, сжать - Схват в кассете
CASE intCase OF
0: //.. Синхронизация с питателем
intCase := intCase + 1; //-- Заглушка на месте синхронизации

. . .
Извините за многословие.
С уважением, Владимир

Василий Иванович
авторитет
авторитет
Сообщения: 878
Зарегистрирован: 21 авг 2009, 14:25
Имя: Василий Иванович
Благодарил (а): 1 раз
Поблагодарили: 3 раза

Re: Помогите дилетанту

Сообщение Василий Иванович »

Владимир, как я понял, Вы на курсе где-то третьем учитесь. PCS7 - это вообще-то process control system. Т.е. предназначен для управления непрерывным технологическим процессом, но уж никак не роботом. Ну уж если на то пошло - то для поставленной Вам задачи лучше всего будет воспользоваться не SCL (тем более, что со структурным программированием Вы не очень дружите), а SFC - оно самое то для реализации конечного автомата на примере Вашей циклограммы. Нарисовал квадратики-стрелочки - и порядок.
Аватара пользователя

CHANt
эксперт
эксперт
Сообщения: 1465
Зарегистрирован: 25 июл 2008, 10:25
Имя: Эдуард Владимирович
Страна: СССР
город/регион: Оренбург
Благодарил (а): 45 раз
Поблагодарили: 104 раза

Re: Помогите дилетанту

Сообщение CHANt »

Все же останусь при своем мнение - научитесь проектировать программу, потом, будете просто выбирать язык реализации, который Вам удобен, либо который требует заказчик.
Достаточно современная книжка - http://is.ifmo.ru/books/_book.pdf Попробуйте вчитаться и вдуматься со второй главы. По крайней мере там приведены примеры как структурировать программу, как ее проектировать в виде конечных автоматов. А не мешать все в кучу как в Вашем листинге.
К способам реализации дойдете самостоятельно.
И еще поворчать хотел - по Вашему заданию в первом посте, циклограмма это некий алгоритм, в который можно ввести задание в виде последовательности выполнения простых движений, хошь 6-5-1-4-2-3, хочешь 3-5-1-4-6-2 и т.д. В Вашем же примере реализации четко выставлена очередь движений, т.е. все привязано к конкретной технологической операции. Ну некрасиво а? Конкретика то проще ведь, чем разработка абстрактно-универсального "монстрика" :D
Василий Иванович дело говорит, GRAPH (SFC) еще и в реал-тайме отлаживать гораздо наглядней будет, чем тыкатся с точками останова в SCL.
--------------------------------------------------------------------------------------------

Михайло
почётный участник форума
почётный участник форума
Сообщения: 3572
Зарегистрирован: 10 ноя 2009, 04:58
Имя: Толмачев Михаил Алексеевич
город/регион: г. Чехов, МО
Благодарил (а): 6 раз
Поблагодарили: 270 раз

Re: Помогите дилетанту

Сообщение Михайло »

CHANt писал(а):Все же останусь при своем мнение - научитесь проектировать программу, потом, будете просто выбирать язык реализации, который Вам удобен, либо который требует заказчик.
Уж ЧАНт-то знает, как это делается... ;)
Бурлак писал(а):Имею Simatic PCS7 v7.1 sp4 и необходимое "железо".

Задача: создать систему управления манипулятором.
Составляйте список входов и выходов, человеко-машинный интерфейс (если он есть) также рассматривайте как систему, которая имеет входа и выхода. В основе автоматного программирования лежит системный подход, а не "давайте-ка напишем программку".
А пока у вас даже элементы всей системы неясны. Что значит "необходимое железо"? Чертите прямоугольники и связи между ними. У Вас, значит, есть ПЛК, операторская станция, какой-то красный фонарь, концевики. Перечисляйте все это с конкретикой.
Потом, когда появится некий набросок, нарисуете на бумаге последовательность шагов (граф) и потом установите Step7 и WinCC Flexible (которые необходимы для программирования ПЛК и операторской станции соответственно) и будете писать программу. На любом языке.
Сначала сделайте АУ или лучше РУ (последнее - для освоения азов программирования самое то). Потом соедините оба режима в единое целое.
Бурлак писал(а):Вероятность отказа механики не нулевая.
Нештатные ситуации - это уже после составления последовательности шагов автомата в штатном режиме. Проведете анализ рисков и анализ неисправностей мозговым штурмом. Так появится у вас подсистема диагностики и все такое.
Аватара пользователя

doza
завсегдатай
завсегдатай
Сообщения: 539
Зарегистрирован: 05 ноя 2012, 07:38
Имя: Дозморов Владимир Владимирович
Страна: Россия
город/регион: Северск
Благодарил (а): 1 раз
Поблагодарили: 25 раз

Re: Помогите дилетанту

Сообщение doza »

Взаимодействие контроллер или модуль усо, концевик, мотор, реле подводные камни: выход контроллера или модуля усо; мотор под нагрузкой перестал крутить; концевик не выдал сигнал о том что манипулятор завершил цикл или во время начало работы цикла не выдал сигнал об отрыве манипулятора; залипание или не контакт выходных реле контроллера или модуля усо. Вам надо было просмотреть все эти варианты не на стадии создания по, а как только пришло в голову поставить манипулятор.
Ну да ладно начнем выход контроллера или модуль усо если фантазии хватит квиктируем вторым контроллером или модулем усо, лучше использовать полноценный контроллер без скада для выполнения основной задачи.
Выход из строя концевика или мотора в манипуляторе, создание вторую программу которая будет следить за первой программой, выполнение заданного цикла к привязке текущего во времени, начало цикла время останавливается прибавляется к нему выдержка с учетом +-5%, получаем отрезок времени в котором должен закончится цикл, в случае когда это не произошло ну там остановка заживание лампочки на ваше усмотрение.
Выходное реле контроллера или модуля усо снизить на него нагрузку дополнив террористом хотя лучше симистором который в свою очередь можно квиктировать 2 симистором дополнив индикацией работы оных.
Подводные камни Simatic PCS7 v7.1 sp4 программное обеспечение затачивалось не 1 год.
Выбор языка программирования все цело в вашей фантази, если не очень сильны в программировании выберите фбд хотя ст дает больше возможностей, можно и гибрид все равно после компиляции разницы никакой в чем был написан алгоритм.
Чебурашку видишь???? я тоже не вижу, а он есть.

Василий Иванович
авторитет
авторитет
Сообщения: 878
Зарегистрирован: 21 авг 2009, 14:25
Имя: Василий Иванович
Благодарил (а): 1 раз
Поблагодарили: 3 раза

Re: Помогите дилетанту

Сообщение Василий Иванович »

CHANt писал(а):, GRAPH (SFC)
GRAPH и SFC - это разные и несовместимые продукты, хотя и имеют схожие принципы построения. PCS7 не поддерживает GRAPH, и чтобы переделать в SFC, придется переписать программу.
Аватара пользователя

CHANt
эксперт
эксперт
Сообщения: 1465
Зарегистрирован: 25 июл 2008, 10:25
Имя: Эдуард Владимирович
Страна: СССР
город/регион: Оренбург
Благодарил (а): 45 раз
Поблагодарили: 104 раза

Re: Помогите дилетанту

Сообщение CHANt »

Василий Иванович писал(а):GRAPH и SFC - это разные и несовместимые продукты, хотя и имеют схожие принципы построения. PCS7 не поддерживает GRAPH, и чтобы переделать в SFC, придется переписать программу.
Да, да, мои извинения, вечно забываю что S7-Graph отдельное приложение, со своими ... Имел ввиду конечно же SFC в PCS7.
--------------------------------------------------------------------------------------------

Автор темы
Бурлак
здесь недавно
здесь недавно
Сообщения: 32
Зарегистрирован: 07 ноя 2012, 11:16
Имя: Моисеев Владимир Николаевич
Страна: Россия
город/регион: п. Редкино

Re: Помогите дилетанту

Сообщение Бурлак »

>CHANt » Сегодня, 00:48
Большое спасибо за книгу, жаль что не видел раньше.

> ... чем разработка абстрактно-универсального "монстрика".
Это Вы в точку, в самое яблочко. Цель именно в этом - написать прототип ("рыбу", эскизный проект) этого "монстрика", но с заданными ограничениями по реализации - Simatic PCS7 v7.1.

> ... циклограмма это некий алгоритм, в который можно ввести задание в виде последовательности выполнения простых движений ... и действий технологической головки.
Да, именно так, и нужно уметь аккуратно и эффективно записывать эту последовательность в рамках реализации.
1. Уходим от конкретики управлений-состояний и переходим к индексам.
Имеем:
а) Некоторое множество допустимых, реально необходимых, а не математически возможных действий. Именно множество, а не последовательность.
Формируем статический вектор (массив) управлений (битовый вектор типа WORD, например). Порядок в векторе вообще говоря не связан с последовательностью движений и действий.
Пример:
б) Некоторое множество технологически допустимых состояний.
Формируем статический вектор состояний.
в) Перевод механизма из состояния неопределенности в исходное состояние требует маскирования некоторых состояний.
Формируем статический вектор масок состоляний (МС).
г) Необходимо задать временные ограничения (timeout)
Формируем статический вектор timeout (ТО)
д) Создаем динамический компонент - контекст механизма.
Содержит : компоненты векторов - начальное состояние (НС), управления (АУ), текущее состояние (ТС), ожидаемое состояние (ОС), маску состояния, режим (и состояние режима) работы. Struct. Tag.
е) Команда оператора. Пока WORD. Tag.

2. Реализуем набор неодходимых инструкций (команд).
а) Проверка начального состояния. Параметр - индекс вектора ОС
б) Выдать вектор управления. Параметры - индексы АУ, ОС, МС, ТО
г) Ждем состояние. Информация в контексте.
д) Завершения шага. В случае полуавтомата, переход в ручной режим.

3) Реализуем обработку команд оператора.

С уважением, Владимир.
p.s. Есть ли ассемблер в PCS7?

Автор темы
Бурлак
здесь недавно
здесь недавно
Сообщения: 32
Зарегистрирован: 07 ноя 2012, 11:16
Имя: Моисеев Владимир Николаевич
Страна: Россия
город/регион: п. Редкино

Re: Помогите дилетанту

Сообщение Бурлак »

Извините, забыл примеры, а Simatic PCS7 другой виртуальной машине.
Исправляю недочет.

//== Матрица управлений
// |---------------- схват разжать
// | |-------------- схват сжать
// | | |------------ схват к питателю
// | | | |---------- схват к конвейеру
// | | | | |-------- схват назад
// | | | | | |------ схват вперед
// | | | | | | |---- схват вниз
// | | | | | | | |-- схват вверх
// --------- ---------
// |7|6|5|4| |3|2|1|0|
// --------- ---------
//-- Шаг 00 = Схват вверх, назад, к питателю, сжать - В исходное положение
// |0|1|0|0| |0|0|0|0| - B#16#40 00 - Шаг 00 = Схват сжать
// |0|1|0|0| |0|0|0|1| - B#16#41 01 - Шаг 00 = Схват вверх, сжать
// |0|1|0|0| |1|0|0|1| - B#16#49 02 - Шаг 00 = Схват вверх, назад, сжать
// |0|1|1|0| |1|0|0|1| - B#16#69 03 - Шаг 00 = Схват вверх, назад,к питателю, сжать
// |0|1|1|0| |0|1|0|1| - B#16#65 04 - Шаг 01 = Схват вверх, вперед, к питателю, сжать - Схват над питателем
// |0|1|1|0| |0|1|1|0| - B#16#66 05 - Шаг 02 = Схват вниз, вперед, к питателю, сжать - Схват в кассету
// |1|0|1|0| |0|1|1|0| - B#16#A6 06 - Шаг 03 = Схват вниз, вперед, к питателю, расжать - Схват берет
// |1|0|1|0| |0|1|0|1| - B#16#A5 07 - Шаг 04 = Схват вверх, вперед, к питателю, расжать - над питателем
// |1|0|1|0| |1|0|0|1| - B#16#A9 08 - Шаг 05 = Схват вверх, назад, к питателю, расжать - к питателю
// |1|0|0|1| |1|0|0|1| - B#16#99 09 - Шаг 06 = Схват вверх, назад, к конвейеру, расжать - к конвейеру
// |1|0|0|1| |0|1|0|1| - B#16#95 10 - Шаг 07 = Схват вверх, вперед, к конвейеру, расжать - над конвейером
// |1|0|0|1| |0|1|1|0| - B#16#96 11 - Шаг 08 = Схват вниз, вперед, к конвейеру, расжать - в полусборке
// |0|1|0|1| |0|1|1|0| - B#16#56 12 - Шаг 09 = Схват вниз, вперед, к конвейеру, сжать - Вставить
// |0|1|0|1| |0|1|0|1| - B#16#55 13 - Шаг 10 = Схват вверх, вперед, к конвейеру, сжать - Схват над конвейером
// |0|1|0|1| |1|0|0|1| - B#16#59 14 - Шаг 11 = Схват вверх, назад, к конвейеру, сжать - Схват к конвейеру
aAU :ARRAY[0..14] OF WORD :=
//-- Шаг 00 = Схват вверх, назад, к питателю, сжать - В исходное положение
W#16#40, //-- 00 - Шаг 00 = Схват сжать
W#16#41, //-- 01 - Шаг 00 = Схват вверх, сжать
W#16#49, //-- 02 - Шаг 00 = Схват вверх, назад, сжать
W#16#69, //-- 03 - Шаг 00 = Схват вверх, назад, к питателю, сжать
W#16#65, //-- 04 - Шаг 01 = Схват вверх, вперед, к питателю, сжать - Схват над питателем
W#16#66, //-- 05 - Шаг 02 = Схват вниз, вперед, к питателю, сжать - Схват в кассету
W#16#A6, //-- 06 - Шаг 03 = Схват вниз, вперед, к питателю, расжать - Схват берет
W#16#A5, //-- 07 - Шаг 04 = Схват вверх, вперед, к питателю, расжать - над питателем
W#16#A9, //-- 08 - Шаг 05 = Схват вверх, назад, к питателю, расжать - к питателю
W#16#99, //-- 09 - Шаг 06 = Схват вверх, назад, к конвейеру, расжать - к конвейеру
W#16#95, //-- 10 - Шаг 07 = Схват вверх, вперед, к конвейеру, расжать - над конвейером
W#16#96, //-- 11 - Шаг 08 = Схват вниз, вперед, к конвейеру, расжать - в полусборке
W#16#56, //-- 12 - Шаг 09 = Схват вниз, вперед, к конвейеру, сжать - Вставить
W#16#55, //-- 13 - Шаг 10 = Схват вверх, вперед, к конвейеру, сжать - Схват над конвейером
W#16#59; //-- 14 - Шаг 11 = Схват вверх, назад, к конвейеру, сжать - Схват к конвейеру

DATA_BLOCK DBmZrd1
//-- Контекст манипулятора установки внешнего ряда
//-------------------------------------------------------
//== Структура wdAU
//-- 0 бит (16#01) - схват вверх
//-- 1 бит (16#02) - схват вниз
//-- 2 бит (16#04) - схват вперед
//-- 3 бит (16#08) - схват назад
//-- 4 бит (16#10) - схват к конвейеру
//-- 5 бит (16#20) - схват к питателю
//-- 6 бит (16#40) - схват сжать
//-- 7 бит (16#80) - схват разжать
//
//== Структура wdTS, wdOS, wdMS
//-- 0 бит (16#01) - схват вверху
//-- 1 бит (16#02) - схват внизу
//-- 2 бит (16#04) - схват впереди
//-- 3 бит (16#08) - схват сзади
//-- 4 бит (16#10) - схват к конвейеру
//-- 5 бит (16#20) - схват к питателю
//-- 6 бит (16#40) - схват сжат
//-- 7 бит (16#80) - схват разжат
//
//== Структура wdDTS - Дополнение текущего состояния:
//-- 15 бит (W#16#8000) - режим работы (1 - автоматический, 0 - ручной)
//-- 14 бит (W#16#4000) - рабочий цикл (1 - да, 0 - завершён)
//-- 13 бит (W#16#2000) - не штатная ситуация (1 - да, 0 - нет)
//-- 12 бит (W#16#1000) - состояние конвейера (1 - рабочий ход, 0 - стоит)
//-- Расшифровка не штатной ситуации
//-- 0 бит (W#16#0001) - TimeOut шага
//-- 1 бит (W#16#0002) - Блокировка по рабочему ходу конвейера
//
STRUCT
wdAU :WORD; //-- Вектор управления
wdTS :WORD; //-- Текущее состояние
wdNS :WORD; //-- Шаг: Начальное состояние
wdOS :WORD; //-- Ожидаемое состояние
wdMS :WORD; //-- Маска состояния
wdDTS :WORD; //-- Дополнение текущего состояния
wdShag :WORD; //-- Номер шага
wdTOShag :WORD; //-- TimeOut шага
END_STRUCT
BEGIN
END_DATA_BLOCK

//== Команда оператора
// ---------------------------------
// |F|E|D|C|B|A|9|8|7|6|5|4|3|2|1|0|
// ---------------------------------
// Бит F=1 - требование выполнения команды оператора
// Биты ЕВС - код команды оператора
// Биты B..0 - параметры
// EBC=
// 000 - Переход на автоматический режим с заданного шага
// 001 - Переход на автоматический режим с текущего шага
// 010 - Переход на ручной режим
// 011 - Резерв
// 100 - Выполнить заданный шаг
// 101 - Выполнить текущий шаг
// 110 - Получить начальное состояние определенного шага
// 111 - Выполнить команду управления заданную оператором (биты B..0)

//== Реализация абстрактных инструкций
//---------------------------------------------------
//-- Шаг: Проверка начального состояния
PrNS:
DBmZrd1.wdNS := aOS[idxNS];
IF (((aOS[idxNS] XOR DBmZrd1.wdTS) AND aMS[idxMS]) = 0) THEN //-- Есть начальное состояние
intCase := intCase+1;
GOTO VBR;
END_IF;
DBmZrd1.wdDTS := DBmZrd1.wdDTS OR W#16#02 OR dtsErr; //-- Установить флажок не штатной ситуации (Начальное состояние)
RETURN;

//-- Задание параметров для автоматического управления
PSH:
intCase := intCase+1; //-- К следующей точке CASE
DBmZrd1.wdAU := aAU[idxAU]; //-- Вектор управления
DBmZrd1.wdOS := aOS[idxOS]; //-- Вектор ожидаемого состояния
DBmZrd1.wdMS := aMS[idxMS]; //-- Вектор маски состояния
DBmZrd1.wdShag := INT_TO_WORD(intShag); //-- Номер шага циклограммы робота
rlToShag := INT_TO_REAL(aToShagi[idxTOShagi]); //-- Timeout
DBmZrd1.wdTOShag := INT_TO_WORD(aToShagi[idxTOShagi]);
GOTO BAR; //-- Блокировки автоматического режима
//-- Ожидание состояния выполнения команды автоматического управления
SOS:
IF ((DBmZrd1.wdOS XOR DBmZrd1.wdTS) <> 0) THEN //-- Нет ожидаемого состояния
rlToShag := rlToShag - SAMPLE_T; //-- Счетчик TimeOut
DBmZrd1.wdTOShag := INT_TO_WORD(REAL_TO_INT(rlToShag));
IF (rlToShag <= 0) THEN //-- Ошибка TimeOut
rlToShag := 0;
DBmZrd1.wdDTS := DBmZrd1.wdDTS OR W#16#00 OR dtsErr; //-- Установить флажок не штатной ситуации (Timeout)
END_IF;
ELSE //-- Есть ожидаемое состояние
intCase := intCase+1; //-- К следующей точке CASE
idxAU := idxAU+1; //-- Следующий компонента вектора управления
idxOS := idxOS+1; //-- Следующий компонента вектора ожидаемого состояния
END_IF;
RETURN;

//-- Завершение шага
ZSH:
intShag := intShag+1;
intCase:=0;
DBmZrd1.wdNS := DBmZrd1.wdOS; //-- Начальное состояние <-- Конечное состояние
//-- Если выполнить только один шаг, то стоп
IF fPSHR <> 0 THEN //-- Да
fPSHR := 0;
wdCMD := wdCMD AND cmdMRU;
DBmZrd1.wdDTS := DBmZrd1.wdDTS AND (NOT dtsRabCikl); //-- Шаг рабочего цикла выполнен
DBmZrd1.wdDTS := DBmZrd1.wdDTS AND (NOT dtsErr); //-- ошибок нет
RETURN;
END_IF;
GOTO VBR;

//-- Задержка
ZDR:
rlToShag := rlToShag - SAMPLE_T; //-- Счетчик
DBmZrd1.wdTOShag := INT_TO_WORD(REAL_TO_INT(rlToShag/1000));
IF (rlToShag <= 0) THEN
intCase := intCase+1; //-- К следующей точке CASE
END_IF;
RETURN;

С уважением, Владимир
Последний раз редактировалось Бурлак 11 ноя 2012, 02:06, всего редактировалось 1 раз.

Михайло
почётный участник форума
почётный участник форума
Сообщения: 3572
Зарегистрирован: 10 ноя 2009, 04:58
Имя: Толмачев Михаил Алексеевич
город/регион: г. Чехов, МО
Благодарил (а): 6 раз
Поблагодарили: 270 раз

Re: Помогите дилетанту

Сообщение Михайло »

Упс, математики из МГУ.. Чем мы должны помочь Вам?

Автор темы
Бурлак
здесь недавно
здесь недавно
Сообщения: 32
Зарегистрирован: 07 ноя 2012, 11:16
Имя: Моисеев Владимир Николаевич
Страна: Россия
город/регион: п. Редкино

Re: Помогите дилетанту

Сообщение Бурлак »

>Михайло » Вчера, 18:24
>...Чем мы должны помочь Вам?
Вопрос так ставить нельзя. Помогите, помогите вот в чем, смотрите.
Пользовательская часть пока реализована на VBS, имеем:

Sub OnObjectChanged(ByVal Item)
Dim oX,oY,i,j,vx

'-- Объект изменил ширину - пришло время опроса тегов контроллера
If Item.Width=puls_rr Then Exit Sub '-- Еще не время опроса тегов контроллера
puls_rr=Item.Width

'-- Тик-Так (Мигание) режима
If ((iTikTak_rr > 0) And (iTikTak_rr < 4)) Then '-- Тик-Так есть и не квитирован
iTikTak_rr = iTikTak_rr Xor 1
If (iTikTak_rr Mod 2) = 0 Then
Item.BackColor = colTak_rr
Else '-- Так
Item.BackColor = colTik_rr
End If
End If

On Error Resume Next '-- Обработка ошибок программистским кодом

'== Обработка команд оператора
'-- Читаем и анализируем тег команд оператора
If fGetTag(TGP_CMD,wdCmd) <> 128 Then '-- Ошибка связи с контроллером
If iTikTak_sv=0 Then '-- Тик-Так не запущен
colTik_sv=colNSK
iTikTak_sv=3
End If
Exit Sub
End If
'-- Связь есть
'colTik_sv=colButton
'iTikTak_sv=0

ObrCmd() '-- Обработка состояния исполнения команд оператора

'-- Читаем и анализируем тег контекста робота
If fGetTag(TGP_CON,aCon) <> 128 Then '-- Ошибка связи с контроллером
If iTikTak_sv=0 Then '-- Тик-Так не запущен
colTik_sv=colNSK
iTikTak_sv=3
End If
Exit Sub
End If
. . .

Программировать не очень удобно и не очень эффективно. Хотелось бы C# использовать, но как? Что-то у меня WinCC разваливается, как только запускаю Visual Studio. Visual Basic 6 еще держит.
Хотелось бы иметь и графическую динамику и/или изображение видеокамеры поручить в Image на форме и пр. пр. пр.
Научите как подружить WinCC с Visual Studio.

С уважением, Владимир.

Василий Иванович
авторитет
авторитет
Сообщения: 878
Зарегистрирован: 21 авг 2009, 14:25
Имя: Василий Иванович
Благодарил (а): 1 раз
Поблагодарили: 3 раза

Re: Помогите дилетанту

Сообщение Василий Иванович »

Михайло писал(а):Упс, математики из МГУ.. Чем мы должны помочь Вам?
Как чем? Помочь написать курсовик на заказ!
Аватара пользователя

CHANt
эксперт
эксперт
Сообщения: 1465
Зарегистрирован: 25 июл 2008, 10:25
Имя: Эдуард Владимирович
Страна: СССР
город/регион: Оренбург
Благодарил (а): 45 раз
Поблагодарили: 104 раза

Re: Помогите дилетанту

Сообщение CHANt »

Бурлак писал(а): Есть ли ассемблер в PCS7?
Есть. Называется STL.
Бурлак писал(а): Хотелось бы иметь и графическую динамику и/или изображение видеокамеры поручить в Image на форме и пр. пр. пр.
Научите как подружить WinCC с Visual Studio.
Граф. динамика лишняя в нашем деле. Попробуйте поставить себя на место оператора и смотреть всю смену на мультики :)
--------------------------------------------------------------------------------------------
Аватара пользователя

DelSnos
не первый раз у нас
не первый раз у нас
Сообщения: 323
Зарегистрирован: 26 сен 2010, 10:18
Имя: Artur
Страна: Russia
Поблагодарили: 2 раза

Re: Помогите дилетанту

Сообщение DelSnos »

Есть ли ассемблер в PCS7?

Есть. Называется STL.
Подправлю чуток. Удобнее и лучше в PCS будет SCL.
Научите как подружить WinCC с Visual Studio.
Подружить можно через Wincc ODK.

Автор темы
Бурлак
здесь недавно
здесь недавно
Сообщения: 32
Зарегистрирован: 07 ноя 2012, 11:16
Имя: Моисеев Владимир Николаевич
Страна: Россия
город/регион: п. Редкино

Re: Помогите дилетанту

Сообщение Бурлак »

>CHANt » Сегодня, 17:26
> ... Попробуйте поставить себя на место оператора ...

Тридцать лет назад был запущен проект создания роботизированной линии сборки. 10 роботов.
Неотъемлемой составной частью являлась компьютерная система управления и телевизионная система наблюдения.
ТВ-Камеры показывали на мониторах изображения всех рабочих зон и были постоянно включены, все смены. Вот такие мультики.
Это принципиально важно, иначе трудно, точнее, невозможно выйти из нештатной ситуации.
В помещении, где работали механизмы, люди отсутствовали.
Все рабочее управление (не наладка), АУ и РУ, только через компьютер.
Было бы удобнее, если бы изображение рабочей зоны робота (ов), транслировалсь прямо на экранную форму управления.
По определенным соображениям фото рабочих зон не привожу, слайд обрезан по вертикали.

Принципиальным моментом является то, что разработкой компьютерной системы управления занимались профессиональные программисты.
Без промежуточных инстанций.
"Железо" - RPT-80, процессор INTEL-8080, 16KB RAM, 32KB ROM.

Создали свою операционную систему (прототип имелся).
Разработали свой метод описания функционирования механизмов - элементы приведены выше - статические структуры данных и динамический контекст

Мы пошли еще дальше - создали релиз абстрактной машины с функциями, заточенными на управление механизмами, примеры даны выше.
В контекст добавили указатель инструкций абстратной машины, набор регистров и стек.
Там где в выше приведенном фрагменте листинга находится двойное CASE, у нас переход к программе абстрактой (логической) машины.
Прервать работу инструкции аб. маш. внутри и перейти к другой невозможно - атомарность.
Код инструкции - байт, размерность параметров в большинстве случаев - байт (индексы). Программа управления роботом очень компактна.
Реализция - библиотека подпрограмм на ассемблере.
Проект "отпахал" своё в течении 5 лет, до момента че, и отбыл в небытие.
Так получилось, что пришлось блудному сыну вернутся в родное РОКБА. Предложили освоить Simatic PCS7 v7.1.
4-ре месяца назад впервые услышал об этом продукте. Нет лучшего способа освоить что-то, не иначе как применяя его.
Попытался реализовать в новой среде то, что отложилось в памяти.
Реально, программа управления конкретным роботом, куда сложнее - появляются подпрограммы -
иначе нельзя описать ситуацию выхода из неш. сит. при резьбовым соединениям - иногда головка с элементом шлифует резьбу.
Приходилось: несколько раз (обратное вращение, потом прямое), не получается - стоп, головку вверх, головку вниз и опять
несколько раз первое. Нет - не штатная ситуация - сигнал оператору.
Еще сложнее описание процесса передачи полусборки от одного робота - другому. Синхроницация. Роботы работают асинхронно.

С уважением, Владимир.
Ответить

Вернуться в «Общие вопросы»