This is topic Подключение принтера VideoJet 43s in forum TRACE MODE 6 бесплатная Базовая версия / TRACE MODE 6 free Base version at Форум TRACE MODE: техническая поддержка.
Здравствуйте! По заданию требуется подключить к 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, набор может содержать следующие предопределенные выражения/символы:
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) отработать например