This is topic Подключение принтера VideoJet 43s in forum TRACE MODE 6 бесплатная Базовая версия / TRACE MODE 6 free Base version at Форум TRACE MODE: техническая поддержка.


To visit this topic, use this URL:
http://forum.adastra.ru/ultimatebb.php/ubb/get_topic/f/31/t/001295.html

Posted by Ave Oleg (Участник № / Member № 6246) on :
 
Здравствуйте!
По заданию требуется подключить к TraceMode (TM) каплеструйный принтер VideoJet 43s.
Возникли следующие вопросы:
1) Так как принтер подключается через RS232, значит в RTM создаем Com-порты, назначение ставим Slave?
2)Что нужно выбрать в Источники/приемники?
3) Как можно сформировать буквенно-цифровое сообщение из данных хранимых в аргументах? Генератор отчетов, так понимаю, не может быть применим, т.к. ТМ - базовая версия.
4) И как можно это сообщение передать на принтер?
Благодарю Вас за помощь!
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
В Trace Mode 6 нет доступных пользователю драйверов поддержки формирования собственных отчетов и вывода их на принтер.
Отчеты формируются с помощью штатных средств формирования документов (см. Справочную систему).
 
Posted by Ave Oleg (Участник № / Member № 6246) on :
 
Я не совсем ясно знаю возможности TraceMode, скажите пожалуйста, можно ли в TraceMode написать драйвер самостоятельно для подключения принтера VideoJet 43s и отправки какого-нибудь сигнала на него (для начала)?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Если у этого принтера есть штатный драйвер, воспринимаемый ОС, то в написании собственного драйвера нет необходимости.
Можно сформировать в Trace Mode 6 штатный документ и отправить его на печать через сервер печати, входящий в состав Trace Mode 6.
 
Posted by Ave Oleg (Участник № / Member № 6246) on :
 
Спросил у представителей фирмы этого принтера про штатные драйвера, что уже достаточно для работы в TraceMode. Они сказали, что в принципе печать можно реализовать через протокол и предоставили информацию с его описанием. Вот как я понял здесь описана его основная конструкция:

Simple Protocol Packed Structure Part 1

Each protocol packed sent to the machine must at here to the following general format:

[STX][TYPE][DATA][ETX]

[STX] is a fixed single ASCII character 02h which is used to indicate the start of a protocol packet.
 
[TYPE] is a single ASCII character in the range ‘A’ to ‘Z’ used to describe the type of protocol packet which is being sent.
 
[DATA] is a multiple ASCII character field, where all character codes are within the range ASCII 20h to FFh plus 0AH (i.e. no control codes, apart from 0Ah is used as a field separator). This field is of variable length format.
 
[ETX] is a fixed single ASCII character 03h which is used to indicate the end of a protocol packet.

Это вырезка из презентации по протоколу. Могу даже выслать ее вам для большей наглядности вместе с изображениями.
Насколько я понимаю, это можно как-то написать в TraceMode, но как это конкретно сделать?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Высылайте документацию на hotline@adastra.ru.
 
Posted by Ave Oleg (Участник № / Member № 6246) on :
 
Документация отправлена, "Документация по протоколу для VideoJet 43s".
 
Posted by Ave Oleg (Участник № / Member № 6246) on :
 
Уважаемая "AdAstra Technical Support", ответ по отправленной документации для VideoJet 43s я не получил. Вы могли бы прокомментировать этот вопрос?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Документация получена и изучается разработчиками.
По завершении работы мы Вам сообщим результат.
 
Posted by Ave Oleg (Участник № / Member № 6246) on :
 
Благодарю за помощь!! Буду ждать.
 
Posted by Ave Oleg (Участник № / Member № 6246) on :
 
Пробую создать подключение и возникли вопросы.

Создал:
- порт Com1 как Master;
- канал UniversalPLC_type3_1 (от TYPE11_1);
- канал CALL с типом вызова ChGroupReq;
- временную кнопку на экране для ввода и отправки сообщения на принтер.

Для начала попробовал просто выводить на ГЭ "Текст" введенный текст через канал CALL ChGroupReq (Комментарий). Все работает.
Далее рассуждаю, UniversalPLC_type3_1 это канал типа Float. Но канал UniversalPLC_type3_1 имеет числовой тип, а нужно передавать также слова. Однако создал еще просто новый канал Float и хочу ему передать числовое значение из CALL ChGroupReq и вывести это сообщение на экране. Пробовал делать разные привязки каналов, что-то не получается. Как же можно связать каналы?
 
Posted by Ave Oleg (Участник № / Member № 6246) on :
 
Получилось сделать вывод чисел на ГЭ "Текст" с канала CALL ChGroupReq через CALL FLOAT с помощью ST программы.
Теперь нужно выполнить задачу - отправка сообщения на принтер.
 
Posted by Ave Oleg (Участник № / Member № 6246) on :
 
Скажите пожалуйста:
1.Что означает слово UDEF (справка "Обмен по произвольному протоколу по RS" выражение "...Атрибут Комментарий шаблона должен содержать следующую строку: UDEF ...")?
2. В справке по каналу Vector сказано, что можно работать с ASCII протоколом и Vector аналогичен ChGroupReq, лишь имеет ограничения по привязке. Значит можно использовать ChGroupReq?
3.Также не ясно далее. Для протокола типа t11 по RS нужен COM порт с назначением Master (Обмен по произвольному протоколу по RS), а к каналу Vector могут быть привязаны источники/приемники UniversalPLC_user1...UniversalPLC_user4 при значениях RS: E_Meter, Host Variant, Host OEM RS. Это относится только к дополнительным каналам?
Вывод:
Я так понимаю нужно создать:
1. Com порт (Master)
2. Создать CALL.Vector или CALL.ChGroupReq. Отдаю предпочтение к последнему.
Правильно ли я понял?
 
Posted by Ave Oleg (Участник № / Member № 6246) on :
 
В дополнение к предыдущему комментарию.

Нашел обучающее видео "Драйвер Modbus ASCII для SCADA без программирования", где в качестве симулятора реальных аппаратов используется программа ModSim32 - Simulator_ModbusASCII.
Вопросы:
1.Как вы думаете, можно ли применить подобную программу для проверки отсылаемых сообщений?
А потом уже пробовать на принтере.
2.Не пойму пока, как можно передать сообщение из аргумента в канал источника. Это нужно делать привязку по атрибуту?
 
Posted by Ave Oleg (Участник № / Member № 6246) on :
 
Согласно изученной документации по принтеру VideoJet 43s, я так понимаю, сообщения на принтер подаются в ASCII коде.
Планируется с помощью ST программы генерировать ASCII сообщение со "спецсимволами" (смайлик[STX], сердечко[ETX] и т.д.) и отправлять его через CALL.ChGroupReq с привязанным к нему источником UniversalPLC_user3.
Пробовал вставлять спецсимволы в код программы, взятые из таблицы символов в Windows, все нормально вставляется.
Вопросы:
1. Передача ASCII кода через CALL.ChGroupReq -> UniversalPLC_user3 и без доп. преобразований возможна?
2. Вместо спецсимволов из программы на ГЭ"Текст", появляются буквы или знаки (?,^ и т.д.). Можно ли настроить ГЭ"Текст" для вывода этих спецсимволов?
 
Posted by Nico (Участник № / Member № 5342) on :
 
1) - да
2) - нет

через Call.Vector:
SENDCMD=<команда> – набор байтов в формате HEX без префикса "0x" для посылки (для бинарных и ASCII протоколов). Кроме 0..F, набор может содержать следующие предопределенные выражения/символы:

c<0..5> – подставляется соответствующий байт удаленного адреса ((93, C0)..(98, C5));

i<0..2> – подставляется соответствующее слово удаленного адреса ((90, I0)..(92, I2));

I<0..2> – то же, что i<0..2>, но в ((90, I0)..(92, I2)) меняется порядок следования байтов;

z<2,,9> – подставляется соответственно 2..9 нулей;

x – подставляется число от 0 до 255, это число меняется;

l – подставляется (<число байтов в посылке после l>-1);

L – подставляется (<число байтов в посылке после L>+1);

n – подставляется число байтов в посылке;

N – подставляется (<число байтов в посылке>+2);

t0 – подставляется значение атрибута 59 (4 байта);

t1 – подставляется (<значение атрибута 59>+<период архивирования>);

ts – подставляется значение атрибута 59, преобразованное в соответствии с TFRT<n> (поддерживается только n=0, 10, 3 и 13; все форматы поддерживаются в релизе 6.08 и старше);

T<1, 2, 3, 4 или h> – подставляется значение даты и времени, полученное из текущего времени компьютера по следующему алгоритму.

Шаг 1 – преобразуется считанное время компьютера:

h – начало предыдущего часа;

1 – начало текущего дня;

2 – начало предыдущего дня;

3 – начало текущего месяца;

4 – начало предыдущего месяца.

Шаг 2 – результат шага 1 преобразуется в соответствии с TFRT;
 
Posted by Ave Oleg (Участник № / Member № 6246) on :
 
Спасибо большое за помощь, Nico!
Буду дальше разбираться.
Сразу вопрос:
Информация подаваемая на принтер будет постоянно меняться с помощью ST программы. В источники/приемники UniversalPLC_user и в его канале в RTM нет атрибута Дополнительно. Следовательно куда нужно передавать текст ( SENDCMD=<команда>... ) через аргумент программы и по какому атрибуту?
 
Posted by Nico (Участник № / Member № 5342) on :
 
47 атрибут
и не надо все менять пользуйтесь call.move.(8,9)
 
Posted by Ave Oleg (Участник № / Member № 6246) on :
 
Просмотрел 2 видеоурока по написанию драйвера Modbus для SCADA без программирования.
Не понятно как можно подавать сообщение для печати на принтер.
Например нужно отправить командное ASCII сообщение - запуск принтера, без получения обратного ответа. И согласно документации простого протокола для принтера, сообщение построится по схеме [STX][TYPE][EXT] т.е. [STX]J[EXT], где J - start printer. Значит в HEX будет SENDCMD=024A03; ASCII;

1. Если строка-команда 024A03 будет подаваться из ST - программы, что тогда нужно записать в атрибут Дополнительно в UniversalPLC_user3?
2. Не понятно как работает конкатенация в CALL.MOVE (8,9)?
3. В итоге получается связка: ST программа -> CALL.MOVE -> CALL.VECTOR -> UniversalPLC_user3.
Так ли это?
 
Posted by Nico (Участник № / Member № 5342) on :
 
CALL.MOVE (8,9) - конкатенация аргументов преобразованных в строке = одна строка

из программы не надо подавать строки из нее нужно
запускать на выполнение CALL.VECTOR

все известные последовтельности заранее вбить и хранить

под ASCII протоколом вообще-то понимается протокол включающий печатные символы (SB,цифры буквы зн препинания)
 
Posted by Ave Oleg (Участник № / Member № 6246) on :
 
1.Вы могли бы посоветовать, есть ли более подробная/наглядная информация по работе с CALL.MOVE с параметрами 8,9?

2.Куда нужно заранее вбить последовательности? В аргументы CALL.VECTOR? Но полагаю это невозможно, так как на печать еще должны выдаваться уникальные данные в строках:
- Индивидуальный номер считанный сканером штрих кода;
- Дата и Время.

3. А по какому атрибуту нужно запускать CALL.VECTOR?
 
Posted by Nico (Участник № / Member № 5342) on :
 
1) создать call.move. 34atr становить = 8.
создать аргументы input
создать output
привязать к строкам если нужно
ничего сложного нет

2) аргументы all.vector не причем
Параметр=8,9 – записывает в аргумент OUT результат конкатенации строковых представлений предшествующих аргументов IN (если Параметр=9 – через пробел). Если к аргументу OUT привязан атрибут (140, ARG00) канала CALL, отличного от CALL.STRING, коды символов итоговой строки записывается в аргументы CALL следующим образом:
в аргумент SINT/USINT – 1 символ;
в аргумент INT/UINT – 2 символа;
в аргумент другого типа данных – 4 символа;
4) результат направить куда надо
3) отработать например
 


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us



Powered by Infopop Corporation
UBB.classic™ 6.7.2