Печать этикеток в системе WMS

Какие этикетки печатает WMS

Практика внедрения WMS на российских складах показывает, что самым распространенным способом идентификации объектов на складе является штрих-кодирование. В связи с этим, из системы WMS печатаются разные виды этикеток:

  • Этикетки стационарных объектов (стеллажей, мест, порталов)
  • Этикетки единиц хранения (контейнеров, коробов)
  • Этикетки-идентификаторы сборных единиц хранения
  • Справочные этикетки на товары для соответствия требованиям перевозки грузов

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

Способы печати этикеток WMS

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

  • Нужно оснащать рабочие места кладовщиков промышленными компьютерами, чтобы подключить принтер
  • Не используются внутренние средства принтера для создания штрих-кодов
  • Этикетка сначала преобразуется в графический образ (bitmap), а потом печатается принтером как картинка
  • Для принтеров, подключенных через последовательный порт, скорость печати недостаточна
  • Нельзя использовать специальные возможности принтера (например, изменить направление печати)

Однако, большинство промышленных принтеров этикеток имеют специальный внутренний язык программирования (наиболее известны EPL2/ZPL2), который позволяет преодолеть ограничения стандартного драйвера.

Решение OpenWMS

Диаграмма подсистемы печати этикеток OpenWMS

Дизайн этикетки в OpenWMS начинается с создания шаблона. Шаблон строится на координатной сетке X=(0...1) Y=(0...1) и записывается в XML-файле:

<template name="box-seti.conf">
  <element type="multiline" break_chars=",.-/ " comment="Название товара">
   <content>${#root['articleName']}</content>
   <line x="0.0" y="0.2" hints="font=4" maxlength="45"/>
   <line x="0.0" y="0.3" hints="font=4" maxlength="45"/>
   <line x="0.0" y="0.4" hints="font=4" maxlength="45"/>
  </element>
  <element type="SPELtext" x="0.8" y="0.4" hints="font=5" comment="Торг.сеть">${#root['fedseti_symbol']}</element>
  <element type="SPELtext" x="0.1" y="0.5" hints="font=4">Изг:${#root['dateizg']} Годен до:${#root['datereal']}</element>
  <element type="SPELtext" x="0.1" y="0.6" hints="font=4">Партия:${#root['part_number']} Кол-во:${#root['qty']}</element>
  <element type="SPELtext" x="0.1" y="0.7" hints="font=4">Нетто:${#root['netto_w']} Брутто:${#root['brutto_w']} Тара:${#root['tare_w']}</element>
 </template>

OpenWMS поддерживает следующие типы полей этикетки:

text
статичный текст
barcode
статичный баркод
SPELtext
динамический текст, формируемый spring expression language
SPELbarcode
динамический баркод
multiline
многострочный текст с автоматическим переносом слов на новую строку

Для элементов этикетки можно указать координаты X и Y, а так же угол поворота в градусах по часовой стрелке (большинство принтеров поддерживают поворот только кратно 90 градусам). В аттрибуте hint задаются расширенные аттрибуты поля:

Имя Применимость Значение
narrow_width Баркоды Ширина узкой полосы баркода
wide_width Баркоды Ширина широкой полосы баркода
humanreadable Баркоды Печатать расшифровку баркода для человека
humanreadable_above Баркоды Печатать расшифровку баркода сверху (если поддерживает принтер)
font Текст Имя логического шрифта
inverse Текст Печатать текст инверсией (если поддерживает принтер)

Далее в конфигурационном файле описывается принтер:

<printer name="ZEBRA">
<port classinstance="com.bitIntegro.wms.core.service.barprint.FilePort"
    fname="COM4"/>

  <driver classinstance="com.bitIntegro.wms.core.service.barprint.PrinterDriverZPL2" 
    transfer="direct" width="1000" charset="cp866" XScale="600" YScale="480">
   <zebrafonts>
    <font name="0" symbol="0" xsize="5" ysize="9"/>
    <font name="1" symbol="0" xsize="5" ysize="9"/>
    <font name="2" symbol="0" xsize="10" ysize="18"/>
    <font name="3" symbol="0" xsize="10" ysize="18"/>
    <font name="4" symbol="0" xsize="20" ysize="36"/>
    <font name="5" symbol="0" xsize="20" ysize="36"/>
   </zebrafonts>
  </driver>
 </printer>

В описании принтера задаются коэффициенты преобразования логических координат в физические: XScale, XOffset и YScale, YOffset. Там же настраивается таблица соответствия физических и логических шрифтов и указываются специфичные настройки драйвера принтера. Поддерживаются семейства принтеров: EPL/EPL2, ZPL2, Fingerprint.

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

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

Смотри также:

Примеры проектов | Другие статьи | Заказать внедрение