Как именно выглядит зависание? Скрипт падает (посмотрите в сообщениях скриптов)?
Какая версия ОРС?
Вид для печати
Как именно выглядит зависание? Скрипт падает (посмотрите в сообщениях скриптов)?
Какая версия ОРС?
И так, зашёл я на форум с другого компа, оформление форму другое, вложение скачивается.
разобрался, как убивать. теперь перезапуск раборает.
Осталась другая проблема, скрипт глючить по-разному. Если сам заглючил, то перезапуск срабатывает, если usb-server (com->ethernet) помог, то уже никак.
Скрипт:
во вложении ошибки. одна, когда свет моргнёт, другая случайно, может через сутки, может два раза за час.
У вас скрипт падает. Что у вас в 27 строке?
Разбирайтесь - видимо какие то проверки добавить надо.
На первый взгляд:
b1=dest[3]-48;
b2=dest[4]-48;
b3=dest[5]-48;
b4=dest[6]-48;
b5=dest[7]-48;
b6=dest[8]-48;
А если пакет будет не полным и будет только 5 элементов например?
И где у вас проверка контрольной суммы? Или ее нет?
ну тут всё четко.
пробовал запросами, не раззобрался. и с XOR проверкой не разобрался.
Поставил непрерывную передачу.
Примерно за день разобрался, как заставить функцию только читать. (справка такаааая кривааая! да и интруция по протоколам тоже!!! Мануалы симинса на английском понятнее и в разы подробнее.)
в порт летит пакет 12 байт постоянно. начинается на [02], заканчивается на [03].
Функция сама видит начало и конец.
но пролетают и отрывки, поэтому в repeat проверяется длина (12шт) и начало (02).
Как говорил, с XOR не разобрался, поэтому не проверяю. И без него данные летят прекрасно.
так вот, если в нужном байте прилетает "0", то выглядит он 16х30, отнимаем 10х48, получаем 10х0. Максимум - 10х9.
Перед умножением проверяю на минимуи и максимум.
Плохое значение не пролетит.
Так же бывала ошибка функции записи тэга. не сфоткал. так же наглухо виснет скрипт.
Вообще даже если все функции засунуть в pcall, всё равно скрипт зависает.
всегда так зависает, что скада думает - всё норм. пришлось проверку делать.
У вас скрипт не зависает - происходит его падение, и он даже выдает строчку в которой это падение происходит.
Смотрите что вы делаете в этой строчке
неделю смотрю.
добавляю проверки.
ничего криминального не делаю.
максимально просто всё, я ж выложил то, что выстрадал.
Хорошо, что с перезапуском всего сервера разобрался, помогает чаще всего.
Но почему на работает "реинициализация узла при ошбке"? и почему сервер вообще сам не пытается перезапустить скрипт. бред же.
лучше б доусрачки перезапускал. И все были бы счастливы.
Лог вам выдает ошибку - в какой строчке падает. В том что на скриншотах - 27 строка.
Что у вас там?
я то думал, скрины помуогт в орпеделении ошибки. нагуглить не удалось.
когда скрипт падает сам, то ругается на этистрочки::
Если скрипту помогают падать, то на строчку с функцией записи тэга по имени. (это когда отваливается COM порт)
сделайте перед этим кодом:
if table.maxn(dest)~=8 then
end;
Выйдите из скрипта или снова выполните запрос
Спасибо, помогло! (только 12 элементов поставил)
С тех пор была пара перезапусков сервера, и по нескольку сообщений за день от скады об ошибке переменной.
Раньше сообщений не было, видимо скрипт теперь не падает, а отсылает плохое качество.
Результатом я доволен, система работает без вмешательства.