Как организовать проверку на считывание регистров?

21 Dec Как организовать проверку на считывание регистров?

Добрый день, подскажите пожалуйста как лучше организовать проверку считывания регистров, я нашла функцию GetConnection Error (), но не поняла как ней воспользоваться, у меня около 1000 считываний, и если хоть один из них не читается, то код перестает работать правильно.
Пожалуйста напишите пример. Или подскажите какую еще можно использовать функцию или комбинацию функций для проверки на считывание регистров.
Очень жду ответа, спасибо.

1 answer

Добрый день! Зависит от задачи, или цели с которой проверка делается. Если значение регистра используется для ответственной логике, например включения механизма или проведения некоего точного вычисления, регистрации отчета и др.,  которое не должно делаться при отсутствии  или неверных данных, то нужно в скриптах проверить непосредственно сам регистр на валидность или nil в самом скрипте.
В Lua значение nil имеет также булевое значение false, поэтому проверить можно просто – 
local reg = R(“my_reg”) 
if not reg then 
     return — реакция на ошибку 
else 
— нормальная обработка
end 
Идеальных соединений не бывает, если есть вероятность ошибки в данных при чтении, которая может привести к некорректной работе, лучше от этого защититься таким способом. А о появлении критического количества ошибок нужно просигнализировать оператору. 
Появление ошибок в соединении можно отследить по разному. Например, можно настроить функцию автоматического отключения соединения при появлении более чем n ошибок более чем в к подряд идущих сканах, это делается в свойствах самого соединения. А в скрипте функцией IsConnectionDisabled(c) проверять, не отключено ли соединение и выставлять бит в регистре аварий, чтобы шла сигнализация оператору. 
либо так:
TESTED_CONN = 1
conn_err_counter = 0 — global
function main (userId)
if (GetConnectionErrors(TESTED_CONN) ~= 0) then
   conn_err_counter = conn_err_counter + 1
   INFO(“err counter now = ” .. conn_err_counter)
        if (conn_err_counter > 10) then
          ERROR(“Error! Set the bit in the alert register you use!”)
        end
  else
       conn_err_counter = 0
       INFO(“no errors, reset the bit in alert reg if it’s been set”)  
end — if conn err 
end — main 

#1

Пожалуйста войдите или зарегистрируйтесь чтобы добавить ответ