Через некоторое время (от секунд до десятков минут) после запуска Микро МРВ возникает ошибка в контроллере:
run-time error M6104: MATH - floating-point error: overflow
(данные строки появляются в терминальной программе) При этом Микро МРВ корректно завершает свою работу, лог работы профайлера Микро МРВ:
Professional Editional MRT 5.11a MFC,TKM,Teconik OEM version Adaptive control Yes Modal control Yes Auto turning Yes INFO:Load Starting... C:\PROJECT\orenb_25\cont_MFK.dbb INFO:Detected DOS = <1558 616> INFO:Found 587 channels FBD_DLL not found fbd1.dld FBD_DLL not found fbd2.dld FBD_DLL not found fbd3.dld FBD_DLL not found fbd4.dld FBD_DLL not found fbd5.dld FBD_DLL not found fbd6.dld FBD_DLL not found fbd7.dld FBD_DLL not found fbd8.dld FBD_DLL not found fbd9.dld NET:VECTOR 5C found NET:NCB for AutoSend = 5 NET:NCB for AutoSend float value = 2 NET:NCB for SendToNet = 1 NET:NCB for CopyFrom = 1 NET:NCB for Registrator = 0 NET:NCB for Recieving = 14 NET:iname ARG@@S2 NET:gname ARG@@S° NET:found 2 adapters NET: select 0 adapter with 0 number NET:init 0 adapter INFO: LoadTime=4.39s CalcPeriod=200ms INFO: resolution=0.05 NET:starting... RTM:math kernel starting... INFO: start time is 0 s JRT:timer constant is = <-6036 e86c> SCREEN load error screen.000 Load fbd_rate.dld Load fbd_reg.dld INFO:work mode NET:info:allocate memory for response INFO:stoping... JRT: mem lock 3626 1752 NET:total NCB send 1167,error 0 = 0 NET:total NCB recieve 1650,error 0 = 0 NET:rasf=68 rash=70 = 0 NET:SendToNet:send 3,recieve 6 = 0 NET:CopyFromNet:request 137,response 341 = 0 INFO: stop time is 0.06 s INFO:number of calculation = 342 END OF WORK
Чем может быть вызвана эта ошибка?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Вы используете какие-либо адаптивные алгоритмы в FBD?
Posted by Сафронов (Участник № / Member № 408) on :
Нет, адаптивные алгоритмы в FBD не используются, хотя Микро МРВ поддерживает их использование. Видимо, причина была в том, что на вход IT блока динамической балансировки (SSWT) в одном из алгоритмов подавалось значение больше 1, в некоторых случаях это приводило к данной ошибке...
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Да - эту ситуацию мы уже исправили в релизе 5.12.
Posted by Сафронов (Участник № / Member № 408) on :
В релизе 5.12 Микро МРВ? Где бы его взять? У нас только 5.11. Инструменталка и МРВ у нас обновлены до 5.12.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Пришлите, пожалуйста, письмо на адрес техподдержки с просьбой обновить микроМРВ до релиза 5.12 с обязательным указанием регистрационного номера имеющейся у Вас лицензии на МикроТМ.
Posted by Сафронов (Участник № / Member № 408) on :
Новую версию техподдержка Текона прислала, но с оговоркой "у нас данная версия тестирование еще не проходила" В связи с этим вопрос - есть ли еще какие-либо существенные изменения в версии Микро МРВ 5.12 по сравнению с 5.11 , из-за которых стоило бы переходить на новую "нетестированную" версию?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Особо больших объемов исправлений не было, поэтому можете попробовать заменить в Микро МРВ 5.11 только файлы dld из 5.12.
Posted by Сафронов (Участник № / Member № 408) on :
Нам обновили только Микро МРВ - exe файлы. Файлы dld оставили прежние, говорят что они не изменялись в новой версии. Самый свежий файл из этих dld - fbd_reg.dld изменен 22 марта 2002 г. Где взять обновленные версии файлов dld, на которые Вы ссылаетесь?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Да там только один DLD-файл и менялся: modbus.dld, остальные все прежние с датами от 2001 и 2002 года. ModBus Вам действительно критичен? Если да - то можем выслать его Вам по E-mail.
Posted by Сафронов (Участник № / Member № 408) on :
modbus нам не критичен. Нас интересует как избежать ситуации, описанной в этой теме. Файл Микро МРВ мы обновили, сейчас запускаем модуль m3_e.exe без поддержки адаптивного регулирования версии 5.12. Ошибка (в случае, если на вход IT блока динамической балансировки (SSWT) в одном из алгоритмов подается значение больше 1) повторяется. Выше Вы сообщили, что данная ошибка устранена в версии 5.12. Что еще нам нужно обновить?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
В справочной системе по блоку SSWT про вход IT сказано: "Это значение должно удовлетворять условию 0<= IT < 1;". Почему оно у Вас становится вдруг больше 1? Ведь при этом так или иначе система упадет, потому как произойдет переполнение памяти по параметру типа FLOAT - просто раньше он падал сразу же при подаче значения > 1, а теперь не сразу, но все равно упадет - тут уж ничего не поделаешь. Вам лучше ввести контроль достоверности данных для Вашего алгоритма и придерживаться ограничений, которые мы декларируем для данного блока.