Шкаф управления и пульт управления системой маркировки

+
<
>
Проект нанесения считывания и верификации маркировки, VIN-номера, мы выполняли совместно с нашими партнерами, а точнее выступали у них на субподряде Наша часть проекта заключалась в разработке и производстве шкафа управления, пульта управления и написании программного обеспечения для установки.
Алгоритм работы системы и цикл маркировки:

Установка маркировки получает информацию о VIN-номере путем ручного ввода  при помощи сканера штрих-кода или через панель HMI. Сканер штрих-кода подключается через EtherNet к ПЛК производства OMRON серии NX102.

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

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

Пневматический цилиндр перемещает оснастку в рабочее положение.

Маркиратор выдвигается в рабочее положение, прижимает деталь, маркирующая головка жестко центрируется с деталью при помощи 2-ух цилиндрических пинов.

Выполняется маркировка. После чего маркиратор отводится в парковочное положение.

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

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

При отрицательном результате загорается красная лампа световой колонны.

Оператор выясняет и исправляет причины отрицательного результата. Цикл маркировки начинается сначала.

База данных.

В качестве СУБД используется Microsoft SQL EXPRESS 2019. В базе данных создана таблица по согласованной  структуре. После получения информации с ручного сканера или с панели HMI в базу данных заносится VIN-номер (создается новая запись). Контроллер хранит всю информацию о VIN-номере в течение всего периода обработки детали.

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

У ВАС ПОХОЖАЯ ЗАДАЧА? ОСТАВЬТЕ ЗАЯВКУ И МЫ РАСЧИТАЕМ ПРОЕКТ
Нажимая на кнопку, вы даёте согласие на обработку персональных данных в соответствии с политикой конфиденциальности
Похожие проекты
Робототехнические ячейки. Лабораторный стенд робот Дельта серии Quattro OMRON
Пищевая промышленность
Фармацевтика
Автомобильная отрасль
Самарская область
2024
Робототехнические ячейки. Лабораторная установка для паллетирования на базе коллаборативного робота
Пищевая промышленность
Фармацевтика
Автомобильная отрасль
Электротехника
Самарская область
2024
Подобрать оборудование
+
{{ in_view_website }} <div class="product_item" product-id="{{ id }}" order-multiplicity="{{ stock.order_multiplicity }}" catalog-elem="product-item"> <div class="img-container"> {% if productimage_set|length > 0 %} {% for productimage in productimage_set %} {% if productimage.photo and productimage.hide == false %} {% if loop.first %}<img src="{{ productimage.photo }}" alt="img" />{% endif %} {% else %} <img src="/static/core/images/nophoto1.png" alt="img"> {% endif %} {% endfor %} {% else %} <img src="/static/core/images/nophoto1.png" alt="img"> {% endif %} </div> <div class="right_product_content"> <div class="product-item_description"> <a class="name" href="{{ url }}">{{ name }}</a> <div class="article">Артикул: {{ article }}</div> {% if productproperty_set|length != 0 %} <div class="charactiristics"> {% for productproperty in productproperty_set %} <div class="char"> {% if loop.index < 4 %}<span>{{ productproperty.name }}</span> <span>{{ productproperty.value }}</span>{% endif %} </div> {% endfor %} </div> {% endif %} </div> <div class="price_conainer"> <div class="lot">{{ stock.lot_complect }} {{ stock.lot }}</div> <div class="price"> {% if price.rub_price_supplier and price.rub_price_supplier != 0 %} <span class="price_item">{{ price.rub_price_supplier }}</span> ₽ {% else %} по запросу {% endif %} </div> <div class="item-buttons_container"> <div class="quantity-buttons"> <button disabled class="minus-button"></button> <input type="number" value="1" oninput="javascript: if (this.value.length > this.maxLength) this.value = this.value.slice(0, this.maxLength);" maxlength="3" onkeypress='validate(event)'> <button class="plus-button"></button> </div> <button class="add-specification-button"> В корзину <span></span> </button> </div> </div> </div> </div>
<div class="order_item" order-id="{{ id }}" order-elem="order-item"> <div class="description_order"> <div class="order_number">Заказ №{{ id_bitrix }}</div> <div class="order_date"> от <span class="order_date_value">{{ date_order }}</span> </div> <div class="order_status">{{ status_full }}</div> </div> <div class="order_composition"> <div class="order_composition_container"> {% for specification_list_item in specification_list.productspecification_set %} <div class="order_composition_item"> {{ specification_list_item.product_name }} - {{ specification_list_item.quantity }} {{ specification_list_item.lot.lot }} </div> {% endfor %} </div> <a href="{{ url }}"> <div class="add_more_btn">подробнее</div> </a> </div> <div class="order_invoice_details_container"> {% if bill_sum %} <div class="bill_sum_details"> <span class="price">{{ bill_sum_paid }}</span> ₽ <br> / <span class="price">{{ bill_sum }}</span> ₽ </div> {% else %} <div class="bill_sum_details none-invoice">счет не сформирован</div> {% endif %} </div> <div class="order_documents"> {% if specification_list.file %} <a href="{{ specification_list.file }}" target="_blank" class="order_documents_item">спецификация №{{ specification_list.number }} от {{ specification_list.date }}</a> {% endif %} {% if bill_file %} <a class="order_documents_item" href="{{ bill_file }}" target="_blank">счёт № {{ bill_name }} от {{ bill_date_start }}</a> {% endif %} {% for documentshipment_item in documentshipment_set %} <a class="order_documents_item" href="{{ documentshipment_item.file }}" target="_blank">акт № {{ documentshipment_item.id }} от {{ documentshipment_item.date }}</a> {% endfor %} {% if act_file %}<a class="order_documents_item">акт {{ act_file }}</a>{% endif %} </div> </div>
<div class="document_item" document-id="{{ id }}" document-elem="document-item"> <div class="name"> {% if name == "спецификация" %} {{ name }} № {{ number_document }} от {{ date_created }} {% elif name == "счёт" %} {{ name }} № {{ number_document }} от {{ date_created }} {% elif name == "акт" %} {{ name }} № {{ number_document }} от {{ date_created }} {% else %} {% endif %} </div> <div class="contract"> {% if requisites_contract %}№{{ requisites_contract }} c{% endif %} {{ requisites_legal_entity }} </div> <div class="summ_and_status"> <div class="summ_container"> {% if amount != 0 %} <span class="summ price">{{ amount }}</span> ₽ {% else %} {% endif %} </div> <div style="display:none" class="status">Подтверждена</div> </div> <div class="download"> <a href="{{ pdf }}" target="_blank">скачать</a> </div> </div>
<div class="project_item" project-id="{{ id }}" project-elem="project-item"> <a class="title_link" href="{{ url }}"> {{ category_name }}. {% if projectclientcategoryprojectmarking_set|length > 0 %} {% for marking_categ in projectclientcategoryprojectmarking_set %} {{ marking_categ.category_name }} {% if loop.last %} : {% else %} , {% endif %} {% endfor %} {% endif %} {{ name }} </a> <div class="project_description_content"> <div class="category_content"> {% for client_category in projectclientcategoryproject_set %} <div class="{% if client_category.category_check %}check{% endif %} category_elem"> {{ client_category.client_category_name }} </div> {% endfor %} </div> {{ category_project_marking_get }} <div class="place_content"> <div>{{ place_object }}</div> <div>{{ data_project }}</div> </div> </div> </div>
<!-- все заказы --> {% if specification_list.id %} <div class="specification_item table_item {% if status == "CANCELED" and bill_file %}bill_notpayment {% elif status == "COMPLETED" %} completed_order {% endif %} {% if bill_status == None and specification_list.tag_stop == false %}disabled{% endif %}" specification-id="{{ specification_list.id }}" data-cart-id="{{ specification_list.cart }}" order-id="{{ id }}" status="{{ status }}" superuser="{% if is_superuser == true %}true{% endif %}" specification-elem="specification-item"> <div class="table_item_value first_table_value"> <a class="order_number" href="{{ specification_list.url }}">№ {{ id }} от {{ specification_list.date }}</a> <input class="cart_id" type="hidden" value={{ specification_list.cart }}> {% if specification_list.date_update and specification_list.date != specification_list.date_update %} <div class="table_item_value_span">Обновлен: {{ specification_list.date_update }}</div> {% endif %} {% if date_completed %}<div class="table_item_value_span">Завершен: {{ date_completed }}</div>{% endif %} </div> <div class="table_item_value"> <div class="client">{{ name_req_full }}</div> </div> <div class="table_item_value"> {{ status_full }} {% if status == "CANCELED" %} {% if bill_file %} счет был до {{ bill_date_stop }} {% else %} спецификация была до <br> {{ specification_list.date_stop }} {% endif %} {% elif status == "COMPLETED" %} {{ date_completed }} {% elif status == "PAYMENT" %} {% if bill_sum_paid %} от {{ bill_date_start }} {% else %} до {{ bill_date_stop }} {% endif %} {% elif status == "PROCESSING" %} до {{ bill_date_stop }} {% endif %} </div> <div class="table_item_value "> <span class="price"> <b bill-sum-paid="{% if bill_sum_paid %}{{ bill_sum_paid }}{% else %}0{% endif %}" class="price_bill_sum_paid {% if bill_file and bill_sum_paid < bill_sum and status != "CANCELED" %}add_payment_button{% endif %}"> {% if bill_sum_paid %} {{ bill_sum_paid }} {% else %} 0 {% endif %} </b> <b>₽</b> / {{ specification_list.total_amount }} ₽ </span> {% if prepay_persent %} <div class="paument_tupe"> {% if postpay_persent != 0 %} предоплата: {{ prepay_persent }}% {% else %} предоплата: {{ prepay_persent }}% {% endif %} </div> {% endif %} </div> <div class="table_item_value invoice-table_item_value"> <a target="_blank" class="invoice-link" href="{{ bill_file }}">Cчет №{{ bill_name }} от {{ bill_date_start }}</a> {% if specification_list.file %} <a target="_blank" class="invoice-link" href="{{ specification_list.file }}">Cпецификация №{{ specification_list.number }} от {{ specification_list.date }} {{ specification_list.pdf.url }} </a> {% endif %} </div> <div class="table_item_value table_item_value_change_buttons_container"> <div data-type-save="update" class="change-bill-button">Изменить счет</div> <div data-type-save="hard_update" class="change-specification-button">Выставить новый счет</div> </div> </div> <!-- корзины без заказа--> {% else %} <div class="specification_item table_item spetification_item_no_complite_order {% if bill_status == false %}bill_notpayment{% endif %}{% if bill_status == None and specification_list.tag_stop == false %}disabled{% endif %}" specification-id="{{ specification_list.id }}" order-id="{{ id }}" status="{{ status }}" data-cart-id="{{ cart_list.id }}" superuser="{% if is_superuser == true %}true{% endif %}" specification-elem="specification-item"> <div class="table_item_value"> <a data-cart-id="{{ cart }}" href=""></a> <p>Заказ № {{ id }}</p> </div> <div class="table_item_value"> {% if name_req_full %} <div>{{ name_req_full }}</div> {% else %} <div class="">Отсутсвует</div> {% endif %} </div> <div class="table_item_value"> Статус: {{ status_full }} <br> </div> <div class="table_item_value "> <span class="price"> <b bill-sum-paid="{% if bill_sum_paid %}{{ bill_sum_paid }}{% else %}0{% endif %}" class="price_bill_sum_paid {% if bill_file and bill_sum_paid < bill_sum and status != "CANCELED" %}add_payment_button{% endif %}"> {% if bill_sum_paid %} {{ bill_sum_paid }} {% else %} 0 {% endif %} </b> <b>₽</b> / {{ specification_list.total_amount }} ₽ </span> {% if prepay_persent %} <div class="paument_tupe"> {% if postpay_persent != 0 %} предоплата: {{ prepay_persent }}% {% else %} предоплата: {{ prepay_persent }}% {% endif %} </div> {% endif %} </div> <div class="table_item_value table_item_value_change_buttons_container"> <div data-type-save="new" class="change-specification-button">Продолжить оформление</div> </div> </div> {% endif %}
<div product-id="{{id}}" search-specification-elem="search-specification-item" class="product_search_item"><span class="name">${el.name}</span><span class="search_button">Добавить</span></div>
<div class="invoice-item" invoice-elem="invoice-item" invoice-elem-id="{{ id }}"> <div class="name"> {% if product_new == None %} {{ product_okt_name }} {% else %} {{ product_new }} {% endif %} </div> <div class="article"> {% if product_new_article == None %} {{ product_okt_article }} {% else %} {{ product_new_article }} {% endif %} </div> <div class="stock"> {% if stock %} <div class="stock_item"> {% if stock.to_order %} Поставщик: <br> Под заказ {% else %} {% if stock.stock_supplier != None %} Поставщик: <span class="supplier_unit">{{ stock.stock_supplier_unit }}</span> шт {% else %} Поставщик: - {% endif %} {% endif %} </div> <div class="stock_item"> Motrum: <span class="motrum_unit">{{ stock.stock_motrum }}</span> {% if stock.stock_motrum_reserve %} Motrum резерв: <span class="motrum_unit_reserve">{{ stock.stock_motrum_reserve }}</span> {% endif %} </div> {% if stock.stock_supplier != None %} <span class="span-transit"style=" font-size: 10px; line-height: 5px; ">{{ stock.data_update }}</span> <br> <span class="span-transit"style=" font-size: 10px; line-height: 5px; "> {% if stock.transit_count %}Ближайшая поставка: {{ stock.data_transit }} - {{ stock.transit_count }} шт.{% endif %} </span> {% endif %} {% else %} {% if stock.to_order %}Под заказ{% endif %} Неизвестно {% endif %} </div> <label> <input placeholder="Укажите срок поставки" class="invoice-data-input" type="text" value="{{ text_delivery }}" /> <div class="error"></div> </label> </div>
<div class="vacancy_item" vacancy-id="{{ id }}" vacancy-elem="vacancy-item"> <div> <div class="vacancy_item_description"> <div class="vacancy_tilte_content"> <div class="title_content"> <div class="vacancy_name">{{ name }}</div> <div class="vacancy_title_content_descr"> <div class="vacancy_exp">{{ experience }}</div> <div class="vacancy_busyness">{{ busyness }}</div> </div> <div class="vacancy_price"> <div class="price_container"> {% if first %} <span class="price_description"> от <span class="price">{{ first }}</span> ₽ </span> {% endif %} {% if last %}<span class="price_description">до <span class="price">{{ last }}</span> ₽</span>{% endif %} {% if fixed %}<span class="price_description"><span class="price">{{ fixed }}</span> ₽</span>{% endif %} {% if first or last or fixed %}в месяц{% endif %} </div> <div class="price_type_payments">{{ type_payments }}</div> </div> </div> <div class="show_btn">подробнее</div> </div> <div class="vacancy_description_content"> {% if text %}<div class="vacancy_description">{{ text|safe }}</div>{% endif %} {% if responsibiliti %} <div class="vacancy_description_elem"> <div class="title">Что нужно:</div> <div class="description">{{ responsibiliti|safe }}</div> </div> {% endif %} {% if requirement %} <div class="vacancy_description_elem"> <div class="title">Что мы приветствуем:</div> <div class="description">{{ requirement|safe }}</div> </div> {% endif %} {% if conditions %} <div class="vacancy_description_elem"> <div class="title">Мы предлагаем:</div> <div class="description">{{ conditions|safe }}</div> </div> {% endif %} </div> <div class="submit_btn">откликнуться на вакансию</div> <div class="overlay_vacancy"> <div class="modal_window"> <div class="close_btn">+</div> <div class="title">Отклик на вакансию</div> <div vacancy-name="{{ name }}" class="vacancy_modal_form"> <label> <input class="name_input" type="text" placeholder="Ваше имя" /> <div class="error name_error"></div> </label> <label> <input class="phone_input" type="tel" placeholder="Ваш телефон"> <div class="error phone_error"></div> </label> <label class="file_label"> <div class="img_container"> <svg width="27" height="26" viewBox="0 0 27 26" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M15.195 20.5424L22.5666 13.1708L24.4204 11.317C26.6599 9.07747 26.6599 5.44641 24.4204 3.20685V3.20685V3.20685C22.0968 0.883299 18.3296 0.883297 16.006 3.20685L9.26445 9.94844L2.18613 17.0268C0.42648 18.7864 0.426476 21.6394 2.18612 23.399V23.399V23.399C3.65059 24.8635 6.02496 24.8635 7.48942 23.399L20.1421 10.7463" stroke="black" stroke-width="1.5" /> </svg> </div> <div class="file_description"> Прикрепить резюме </div> <input class="file_input" style="display:none" type="file" accept=".xls,.xlsx,.png,.jpeg,.jpg,.pdf,.txt,.doc,.docx,.ppt,.rtf,.tiff" /> <div class="error file_error"></div> </label> <textarea class="vacancy_textarea" placeholder="Ваше сообщение"></textarea> <button class="submit_btn">Отправить</button> <div class="politic_description"> Нажимая на кнопку, вы даёте согласие на обработку персональных данных в соответствии с <a target="_blank" href="/privacy-policy/">политикой конфиденциальности</a> </div> </div> </div> </div> </div> </div> </div>
<a href="{{ url }}" class="search_elem" search-elem-id="{{ id }}" search-elem="search-elem" data-url="{{ url }}"> <div class="search_elem_name">{{ name }}</div> <button class="product_link"> <div>Перейти</div> </button> </a>