Просмотр полной версии : отрицательная уставка в трм-251
Танец Ветра
16.10.2010, 12:42
Использую OWEN_IO.dll и Delphi. Базовый адрес прибора 16. Запись SP (уставки) для 1й программы технолога, 1й шаг.
var tmpr: integer;
...
WriteWord(16,0,'SP',tmpr,0);
...
При tmpr>0 все проходит отлично. Уставка пишется, все счастливы. При tmpr<0 - сетевая ошибка ERR_NERR (-104) :eek:
Пробовал до кучи WriteFloat24 и WriteIEEE32. Та же история.
Что я делаю не так?
P.S. У меня одного поиск по форуму не работает?
UPDATE
Проблема решена. WriteStoredDotS отлично пишет любые уставки в прибор.
Танец Ветра
17.10.2010, 20:08
Ребята. Это абзац. Расшифровав пакеты, идущие с конфигуратора (с помощью этой утилиты отрицательная уставка (SP) писалась отлично) - я, мягко говоря, оторопел.
В ТРМ-251 уставка "-35" отправлялась как 0х8023. Т.е. представление программистов ОВЕН об отрицательных числах - это не дополнительный код, как во всем мире в вычислительной технике, а положительное число с установленным старшим разрядом в "1". :rolleyes:
Теперь вопрос:
Как с помощью OWEN_IO.dll передать отрицательную уставку в прибор? :confused:
Малышев Олег
18.10.2010, 09:00
1) Уточните - какая версия библиотеки - последняя ли?
2)WriteWord - не понятно из какой экспортируемой функции взята?
3) Вообще то, с библиотекой в каталоге Docs идет список тегов для всех приборов См. п 16
По хорошему, надо использовать WriteStoredDotS - именно эту а не WriteStoredDotU.
Программисты Овен, конечно не понимают в векторных вычислениях с использованием модных наборов комманд MMX4+ и по старинки пытаются ~10000 параметров записать 8 кБ eeprom. Простите нас, навсегда отставших от облачных вычислений.
Танец Ветра
18.10.2010, 09:52
Версия библиотеки: 1.2.0.17
Кусок кода, взятого из примера для Delphi, представленного в архиве вместе с библиотекой:
...
type
// Запись целочисленного значения размером в два байта
TProcWriteWord=function (adr,adr_type:DWORD;command:pchar;value:integer;in dex:integer):integer;stdcall;
...
var
WriteWord:TProcWriteWord;
...
function InitLib:boolean;
begin
hLibInst:=LoadLibrary('owen_io');
if(hLibInst=INVALID_HANDLE_VALUE) then begin result:=false;exit;end;
WriteByte:=GetProcAddress(hLibInst,'WriteByte');
if(not Assigned(WriteByte)) then begin result:=false;exit;end;
...
end;
...
Теги, п.16 не содержит ничего про ТРМ-251
WriteStoredDotS не пробовал. Сегодня вечером попробую. Спасибо за совет.
По-секрету, для программистов ОВЕН: записанное в слово (2 байта) отрицательное число что в представлении ОВЕН, что в дополнительном коде - занимает все те же 2 байта. не больше и не меньше.
Отсталость программистов ОВЕН в вопросах облачных и векторных вычислений, а также не знание модных наборов команд SSE4+, думаю, является их проблемой, слабо связанной с темой этого топа :)
Малышев Олег
18.10.2010, 10:45
C точки зрения команд трм251=трм151
по-секрету, для программистов овен: записанное в слово (2 байта) отрицательное число что в представлении овен, что в дополнительном коде - занимает все те же 2 байта. не больше и не меньше.
да вообщем то я толсто намекаю что формат хранения и передачи параметров не совпадает с форматом в котором ведутся вычисления.
Танец Ветра
18.10.2010, 11:56
c точки зрения команд трм251=трм151
да вообщем то я толсто намекаю что формат хранения и передачи параметров не совпадает с форматом в котором ведутся вычисления.
формат "дополнительный код" был придуман как раз для упрощения проведения арифметических действий в цифровых устройствах. иначе - все бы давно уже пользовались форматом, придуманным на фирме "овен" :d
--
в любом случае, ответ на свой вопрос я получил, и обязательно отпишусь здесь о результате применения вышеуказанной функции.
Танец Ветра
18.10.2010, 23:42
Проблема решена. WriteStoredDotS отлично пишет любые уставки в прибор.
разрешите поинтересоваться, с какой целью вы записываете в трм251 отрицательную уставку? трм251 работает только по логике «нагреватель», все, что может сделать трм251 для охлаждения объекта регулирования – это выключить нагреватель.
Танец Ветра
19.10.2010, 11:14
разрешите поинтересоваться, с какой целью вы записываете в трм251 отрицательную уставку? трм251 работает только по логике «нагреватель», все, что может сделать трм251 для охлаждения объекта регулирования – это выключить нагреватель.
охлаждение детали - азотом, через испарительную камеру. расход азота - постоянный. для поддержки необходимой температуры детали в требуем коридоре - ПИД управляет работой подогревающего ТЕНа
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot