Объясните пожалюйста на примере TPM-138 как сформировать запрос на получение данных параметра "rEAd". А точнее как узнать размер блока данных в байта и как он зависит от настроек "параметров обмена в сети" для данного прибора.
Вид для печати
Объясните пожалюйста на примере TPM-138 как сформировать запрос на получение данных параметра "rEAd". А точнее как узнать размер блока данных в байта и как он зависит от настроек "параметров обмена в сети" для данного прибора.
Если Вы программируете для Windows попробуйте скачать библиотеку для работы с приборами ОВЕН - WIN DLL
Пробовал owen_io.dll c примером на Delphi и функцию по обмену ReadIeee32. Функция работает, данные получаю, но медленно. А хотелось бы чтобы опрос прибора не влиял на работу всего приложения. Поэтому и хотелось узнать какой размер блока данных в запросе указывать.
TRM-138 в параметре dAtA содержит S.FL.b (знаковое число с односторонней точкой в двоичном виде).
Кстати а на исходники owen_io.dll поглядеть можно, тогда все вопросы я думаю решаться.
Если не секрет - как часто получаете данные и какова скорость опроса. Для того что бы не тормозило используйте отдельный поток
Хотелось бы успеть опросить 8 каналов за 1 сек.
Можно и чаще, ( примерно 20 раз в секунду), только уточните что у Вас за прошива - ежели ниже 037 будут траблы.
Каким образом можно перепрошить ТРМ - 138 на более позднюю версию, чтобы уменьшить время опроса каналов (1 секунда до 20каналов как ранее писалось)
Прежде всего посмотрите какую версию показывает прибор при включении питания, если PO37, то перепрошивать не надо. Если номер меньше, то прибор надо отправить в сервис центр. Для проверки скорости опроса можете взять демо-версии OPM 1.2 http://www.owen.ru/documents/catalog...tup_v1_2-3.zip, она использует ту же библиотеку.
на нашем приборе написано B0600 Это новая версия или старая?
Работаю с Вашим прибором Tpm-138. Базовый адрес 128
Пробовал owen_io.dll c примером на Delphi и функцию по обмену ReadIeee32.
Без проблем считаваю значение температуры
res:=ReadIEEE32(128+port,0,'rEAd',val,tm,0); {port=0..7}
Не получается управлять релейными выводами.
При попытке управлять релейными выводами и считывать их состояние
использовал разные варианты.
tm:=1;{tm:=0;}
res:=WriteWord(128+port,0,'dr.dG',tm,0);
{или res:=WriteByte(128+port,0,'dr.dG',tm,0); ?}
Для чтения
res:=ReadSInt(128+port,0,'dr.dG',tm,0); {tm-состояние}
{или}
res:=ReadUInt(128+port,0,'dr.dG',tm,0); {tm-состояние}
Подскажите правильный вариант функции чтения/записи
состояния релейного выхода