This is topic Специальные функции в ST-программе 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/000711.html

Posted by shippite (Участник № / Member № 3060) on :
 
Здравствуйте.
Подкажите пожалуйста. Используя специальные функии в ST программе, запись и чтение в порт, не получается за одно выполнение программы считать более 16 байт.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Эти функции изначально планировались для использования в DOS контроллерах. Как они работают в Windows не проверялось.
 
Posted by shippite (Участник № / Member № 3060) on :
 
именно в DOS я их и использую
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Скорее всего, у Вас буфер регистра хранит только 16 байт, поэтому и считывать больше не получается. Уточните это в спецификации устройства, с которым Вы работаете.
 
Posted by shippite (Участник № / Member № 3060) on :
 
Добрый день.
Я соеденил два компьютера нуль-модемным кабелем, через сом порт.
На первом компьютере стоит DOS 6.2, на втором Windows XP.
на втором компе поставил снифер компорта и смотрю что прилетает в порт.
на первом компьютере запускаю МикроТрэйс под ДОС, и в программе пытаюсь послать 50 байт, больше чем

26-27 байт за один проход программы не посылается, при этом корректно посылаются первые 20-21 байт,

(посылаю целочисленные значения от 1 до 50).

Настройки порта MicroRTM:
номер - СОМ1
Скороть - 19200
адрес - 0x3f8
контроль четности - 8-n-1
прерывание - 4
Управление - нет
Таймаут - 1
RS передача - 0
Включение передатчика - 0
Задержка запроса - 0
CRS16 - пусто

пересчет MicroRTM:
период -1
Разрешение - 0.01

программа срабатывает 1 раз в секунду.


первый раз я посылал 5 байт и пытался считать 50 байт
больше 16 не считывалось
5 байт посылка
16 прием
общий 21 байт.

С Уважением Петр.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Еще раз повторим. FIFO буфер в DOS скорее всего 16 байт, поэтому все остальные данные либо не попадают в него, либо затирают предыдущие. Проблема не в нашей функции, а в устройстве.
 
Posted by shippite (Участник № / Member № 3060) on :
 
Добрый день.
Возникла вновь необходимость работы со специальными функии в ST программе, запись и чтение в порт.
Интересует вопрос. Можно ли в DOS, используя специальные функии в ST программе, запись и чтение в порт, считывать с порта свыше 16 байт?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Сама по себе функция чтения из порта в ST-программе не имеет ограничений на ее повторение.
Чем Вам отвечает порт, зависит от его заполнения и правильности работы с ним (проверки готовности очередного байта, в частности).
Это выходит за рамки Trace Mode 6.
Надо работать с портом в соответствии с его регламентом.
 
Posted by shippite (Участник № / Member № 3060) on :
 
Существует ли способ, в ST программе очистить "сбросить" очередь СOM порта?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Есть ST-функция "запись в порт" (имеется в виду "Запись в регистр").
У какой регистр порта и что нужно записать, чтобы очистить очередь COM-порта, надо брать из описания COM-порта.

Еще раз вынужден повторить:
"Это выходит за рамки Trace Mode 6.
Надо работать с портом в соответствии с его регламентом."
 
Posted by shippite (Участник № / Member № 3060) on :
 
Добрый день.
Драйверы обмена с УСО для MS DOS, через точку входа.
int RWH(unsigned short type, IA *ia, unsigned short *v);
v – выходное/входное значение канала или значение атрибута канала, 16-разрядное число без знака или 16-разрядное число со знаком.
а как можно передать переменную real(double)?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Нельзя в драйвер передать число больше 2 байт.
Драйвер RWH предназначен для поддержки плат УСО.
В реальных платах УСО значения переменной передаются и принимаются в целочисленном формате не более 16 разрядов.
 
Posted by shippite (Участник № / Member № 3060) on :
 
Добрый день.
а можно примерчик по новому механизму создания драйверов, Обмен по произвольному протоколу по RS.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Реализации драйверов привязаны к конкретным протоколам. Без их публикации примеры смысла не имеют. А публиковать чужие протоколы мы не можем.

Попробуйте создать драйвер для протокола Modbus и проверить его на любом эмуляторе Modbus (их много в интернете).
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Отправлен пример.
 
Posted by ПавелТ (Участник № / Member № 3834) on :
 
А какой эмулятор Modbus конкретно посоветуете?
 
Posted by Romсheg (Участник № / Member № 3792) on :
 
Берите ModSim32 (ModScan32)
 
Posted by shippite (Участник № / Member № 3060) on :
 
Новый механизм создания драйверов, обмен по произвольному протоколу по RS, поддерживается в МикроТрэйс под ДОС?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Нет, для DOS не поддерживается.
 


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



Powered by Infopop Corporation
UBB.classic™ 6.7.2