Извиняюсь, старый файл выбрал. Вот новый.
http://rgho.st/7QhDKFSYW
Извиняюсь, старый файл выбрал. Вот новый.
http://rgho.st/7QhDKFSYW
Укажите путь к тегу с проблемным скриптом.
Спасибо.
ТРМ210-уставка/уставка
Нет такого.
У похожего тип доступа стоит только на чтение.
Спасибо.
На скриншоте выделено.
скриншот.jpg
Последний раз редактировалось Alexandr Ryzhikov; 08.08.2016 в 14:32.
Попробуйте вначале скрипта записи добавить строчку:
if server.IsWriteFromScript( )==true then return; end;
Но в версии 3.2.10 эта функция работать перестала - мы с этим разберемся.
Спасибо.
Спасибо большое! Пока не заработало.
Добрый день! Возникли некоторые проблемы при опросе опс-сервером архивов. На объекте в программе плк забыл при формировании строки добавить символ =, в результате чего конец строки получается вида "#000512\N\R", вместо "#000=512\N\R"
Соответственно, скрипт
не обработает данные строки.Код:local n,l= string.find(str, "#" ); --флаг разбора символа " #" if n~=nil and l~=nil then --если найден символ local str1=string.sub(str,1,n-1 ); --выделяем строку после символа if TimeVal==nil then --получаем время строки NoErr,time=pcall(StrToTime,str1); --вызов функции преобразования в безопасном режиме if NoErr==true and time~=nil then TimeVal=time; --ошибки нет - сохраняем время else Correct=false; --ошибка - строка некорректная break; --выходим из цикла end; else local k,z= string.find(str1, "=" ); --разбираем остальные элементы после символа "=" if k~=nil and z~=nil then local str2=string.sub(str1,z+1); --символ найден - выделяем подстроку со значением local str3=string.sub(str1,1,z-1); --символ найден - выделяем подстроку с номером elem[str3+1]=str2; --вставляем в таблицу полученный элемент else Correct=false; TimeVal=nil; break; --символ не найден - ошибка end; end; str=string.sub(str,l+1 ); --выделяем оставшийся кусок строки и дальше разбираем его end;
Так как объект удаленный, решил скорректировать код скрипта, получив
Этот вариант кода не работает, хотя в терминале вижу корректные и номера и значения переменной в процессе обработки. Но запись при этом в тэги не происходит. Точнее записывается только если значение переменной (val) = 1. Значения же отличные от 1 не записываютсяКод:local n,l= string.find(str, "#" ); --флаг разбора символа " #" if n~=nil and l~=nil then --если найден символ local str1=string.sub(str,1,n-1 ); --выделяем строку после символа if TimeVal==nil then --получаем время строки NoErr,time=pcall(StrToTime,str1); --вызов функции преобразования в безопасном режиме if NoErr==true and time~=nil then TimeVal=time; --ошибки нет - сохраняем время else Correct=false; --ошибка - строка некорректная break; --выходим из цикла end; else local str2=string.sub(str1,1,3); --выделяем подстроку со значением server.Message("номер найден. sym=",str2); local str3=string.sub(str1,4); --символ найден - выделяем подстроку с номером server.Message("значение найдено. val=",str3); if string.len(str3)<6 then --(для случаев некорректного получения переменной) elem[str3+1]=str2; --вставляем в таблицу полученный элемент end; end; str=string.sub(str,l+1 ); --выделяем оставшийся кусок строки и дальше разбираем его end;
Что я делаю не так?
Кусок лога терминала
Скрытый текст:
Проверяйте - записались ли они в таблицу. Добавьте дальше по программе - где происходит запись в теги server.Message, где значения пропадают.
Спасибо.
добавил сообщений:
Скрытый текст:
В сообщении скриптов вижу следующее:
Код:12-08-2016 14:58:48.860 объект.архив:Значения=2016-08-05 08:57:30.000 nil nil 12-08-2016 14:58:48.860 объект.архив:вставили элемент в таблицу - 001 12-08-2016 14:58:48.860 объект.архив:значение найдено, val=16 12-08-2016 14:58:48.860 объект.архив:номер найден, 001 12-08-2016 14:58:48.860 объект.архив:найден символ # 12-08-2016 14:58:48.860 объект.архив:найден символ # 12-08-2016 14:58:48.860 объект.архив:Значения=2016-08-05 08:57:29.000 nil nil 12-08-2016 14:58:48.860 объект.архив:вставили элемент в таблицу - 001 12-08-2016 14:58:48.860 объект.архив:значение найдено, val=32 12-08-2016 14:58:48.860 объект.архив:номер найден, 001 12-08-2016 14:58:48.860 объект.архив:найден символ # 12-08-2016 14:58:48.860 объект.архив:найден символ # 12-08-2016 14:58:48.860 объект.архив:Значения=2016-08-05 08:57:28.000 nil nil 12-08-2016 14:58:48.860 объект.архив:вставили элемент в таблицу - 001 12-08-2016 14:58:48.860 объект.архив:значение найдено, val=16 12-08-2016 14:58:48.860 объект.архив:номер найден, 001 12-08-2016 14:58:48.860 объект.архив:найден символ # 12-08-2016 14:58:48.860 объект.архив:найден символ # 12-08-2016 14:58:48.860 объект.архив:Значения=2016-08-05 08:57:26.000 nil 001 12-08-2016 14:58:48.860 объект.архив:Значения=2016-08-05 08:57:26.000 nil 001 12-08-2016 14:58:48.860 объект.архив:записываем значение в тэг, 2 12-08-2016 14:58:48.860 объект.архив:вставили элемент в таблицу - 001 12-08-2016 14:58:48.860 объект.архив:значение найдено, val=1 12-08-2016 14:58:48.860 объект.архив:номер найден, 001 12-08-2016 14:58:48.859 объект.архив:найден символ # 12-08-2016 14:58:48.859 объект.архив:найден символ # 12-08-2016 14:58:48.859 объект.архив:str=16.8.5 8:57:26#0011 2016.8.5 8:57:28#00116 2016.8.5 8:57:29#00132 2016.8.5 8:57:30#00116