Цель следующая: Из СПАДа получать значения трех каналов.Требуется получать 60 значений каждый час.
Что делаю: Все делаю по хелперу . Каждый час в каналы типа КАНАЛ подтипа SetGetSPAD записывается отрицательное значение количества секунд, прошедшее с начала текущих суток.Таких каналов соответственно 3.В поле Time Mask стоит значение- 1 час.По идее каждый час(в случае если каналы из которых берутся данные обрабатываются поминутно)в текстовый файл должны записываться 60 значений каналов, причем таких файлов должно быть 3, по одному на каждый канал.
Что происходит: Так как обращение к СПАДу происходит для трех каналов одновременно(или по другими непонятным причинам), то обрабатывается только один канал, в результате чего появляется только один текстовый файл со значениями только одного канала.
Вопрос Каким образом это исправить?что нужно сделать чтобы каждый час появлялось 3 файла с необходимым количеством значений.
З.Ы. Пробовал вводить фазировку на канал - все работает, но тогда получается полная ерунда в файлах(дублирование информации), так как фазировка работает только для каналов с периодом обработки типа цикл.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
#### необходимо время на проверку ситуации.
Posted by bigshurik (Участник № / Member № 1869) on :
Хорошо.Жду.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Протестировал Вашу ситуацию на релизе 5.16 - все отлично работает, без разнесения по фазам в рамках одного цикла пересчета у всех каналов. Вы в каком релизе работаете?
Posted by bigshurik (Участник № / Member № 1869) on :
У меня стоит релиз 5.15 и, к сожалению, не работает. Еще раз опишу как все происходит:в FBD программе подсчитываю количество секунд с начала суток, умножаю на -1.Три значения посылаю по разным каналам.Период обработки у этих каналов для упрощения тестирования 1 минута, чтобы файлы создавались ежеминутно...но создается только один файл.Причем,если канал, ответственный за создание этого файла убрать, то будет создаваться опять же один файл, но для другого канала. Вот приблизительный лог:
Base Edition DRAWSERV 5.15 SUPPORT: NetBios INFO:Load Starting... C:\TraceMode5_Basic\TM50\NODE1.dbb INFO:Detected NT 5.1 INFO:Found 42 channels INFO: LoadTime=0.05s CalcPeriod=549ms ATTACH: default(PicMan) SIAD:starting... SIAD: opening file: C:\TraceMode5_Basic\TM50\spad.rep SIAD: changing file size to = 102400 SIAD: opening file: C:\TraceMode5_Basic\TM50\spad.rep SIAD: starting server... DDE:starting... DDE:wrong NetDDE: Не удается связать службу диспетчера общих баз данных (DSDM) RTM:math kernel starting... SCREEN load error screen.000 INFO:work mode INFO: start time is 18.747 s ODBC:start SQL:operator is: INSERT INTO Base (PRIHOD,RASHOD,PROD__,HR____,MIN___,SEC___,YR____,MON___,DAY___) VALUES(4.87042,0,0,0,0,0,0,0,0) SIAD: read request CH=0x20 Tmin:01.06.2006 22:06:59 0ms Tmax:01.06.2006 22:08:00 0ms BUF:10000, GOT:4 records SQL:operator is: INSERT INTO Base (PRIHOD,RASHOD,PROD__,HR____,MIN___,SEC___,YR____,MON___,DAY___) VALUES(4.81608,0,0,22,8,0,2006,6,1) SIAD: read request CH=0x20 Tmin:01.06.2006 22:07:59 0ms Tmax:01.06.2006 22:09:00 0ms BUF:10000, GOT:61 records
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
А можно взглянуть на Ваш проект? Есть такое подозрение, что причина может быть в том, что у Вас еше и по ODBC идет обмен SQL-запросами. А так как оба механизма работают по СОМ/DCOM с сервером МРВ, то вероятно - есть блокировка. Попробуйте пока отключить SQL-запросы. И протестировать экспорт в текстовый файл без него.
Posted by bigshurik (Участник № / Member № 1869) on :
по какому адресу можно послать проект?
Posted by bigshurik (Участник № / Member № 1869) on :
послал проект на forum@adastra.ru
Posted by bigshurik (Участник № / Member № 1869) on :
Отключение обмена по ODBC не помогает: 1.Сначала попробовал изменить канал SQL_выполнить на другой, чтобы не выполнялись запросы. 2.Потом, в дополнение к 1,удалил odbc.cfg Все то же самое -создается только один текстовый файл.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Посмотрел Ваш проект - все верно работает. У Вас же значения каналов RASHOD_ и kuski sahara не меняются в течение той минуты, что вы пытаетесь экспортировать данные - поэтому ничего и не создается, потому как нечего экспортировать.
Posted by bigshurik (Участник № / Member № 1869) on :
Анатолий, вы не правы. Во-первых, если даже данных нет, то должен создаваться файл с заголовком без значений.Этого не происходит. Во-вторых, если дождаться того момента, когда в требуемых каналах появляются значения, то данные файлы не появляются. В-третьих, не совсем понятно, что вы имеете в виду,говоря "в течение той минуты".Из FBD программы значение количества секунд с начала суток записывается в каждый из каналов ответственных за создание txt файла ежеминутно.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Вам необходимо внести некоторые изменения в программу и в настроку каналов экспорта: 1) В программе добавьте лок DIFF (Производная). На его вход подаете значение текущих минут, а его инвертированный выход на входы RUN блоков умножения на -1, чтобы они срабатывали только в момент изменения значения минут. 2) Перевести пересчет каналов spad_rashod, spad_prihod и spad_kuski в значение 1 цикл.
Просто получалось, что обработка каналов шла с циклом 1 минута, и значение в них Вы передавали с периодичностью 1 минута - обработав первый, остальные не успевали, по прицине того, что их значение снова менялось и они опять ждали 1 минуту, а там опять по-новой.
Posted by bigshurik (Участник № / Member № 1869) on :