Written on: 24. 10. 2013 [10:19]
|
monia
Олег Намятов
Topic creator
registered since: 21.05.2012
Posts: 173
|
Случайно заметил, что контроллеры созданные в DAQ.ModBus и их параметры живут своей жизнью
по подробней:
1) я создал контроллер 22_cp с опросом 1 раз в 30 сек по TCP/IP и его параметр 22_SumParam с использованием шаблона
2) создал параметры для записи и чтения регистров
после того как скада заработала в паре с контроллером я увидел на
контроллере:
1) что время записи и опроса контроллера не постоянно, колеблется от 1 сек до 20 сек (должно быть ровно 30 сек)
2) иногда бывает случайная запись регистров на контроллер (произвольным значением). Когда я отключил запись регистров на контроллер (в скаде), регистры перестали изменяться (т.е. на них влияла скада, а не сам контроллер)
скаде:
1) в параметре 22_SumParam есть переменная, которая следит за временем опроса контроллера. Так вот, она должна изменяться если произошел опрос (т.е 1 раз в 30 сек), а реально она изменяется несколько раз в 30 сек примерно 5 или 6 раз, с произвольным интервалом.
|
Written on: 24. 10. 2013 [10:33]
|
roman
Roman Savochenko
Moderator Contributor Developer
registered since: 12.12.2007
Posts: 3750
|
"monia" wrote:
Случайно заметил, что контроллеры созданные в DAQ.ModBus и их параметры живут своей жизнью
У Вас может и живут, а у меня таких проблем нет.
"monia" wrote:
1) я создал контроллер 22_cp с опросом 1 раз в 30 сек по TCP/IP и его параметр 22_SumParam с использованием шаблона
Какое значение поля "Планирование опроса" а не абстрактное 1 раз в 30 сек?
"monia" wrote:
2) создал параметры для записи и чтения регистров
1) что время записи и опроса контроллера не постоянно, колеблется от 1 сек до 20 сек (должно быть ровно 30 сек)
С чего взяли, что колеблется?
"monia" wrote:
2) иногда бывает случайная запись регистров на контроллер (произвольным значением). Когда я отключил запись регистров на контроллер (в скаде), регистры перестали изменяться (т.е. на них влияла скада, а не сам контроллер) скаде:
Что пишете то и пишется, не верите, отслеживайте в отчёте запросов ModBus.
"monia" wrote:
1) в параметре 22_SumParam есть переменная, которая следит за временем опроса контроллера. Так вот, она должна изменяться если произошел опрос (т.е 1 раз в 30 сек), а реально она изменяется несколько раз в 30 сек примерно 5 или 6 раз, с произвольным интервалом.
Что здесь для этого контроллера?
Отметил как "Не ошибка", пока не воспроизведёте в ДемоБД, где такого и нигде на живых конфигурациях нет!
Learn, learn and learn better than work, work and work.
|
Written on: 24. 10. 2013 [11:06]
|
monia
Олег Намятов
Topic creator
registered since: 21.05.2012
Posts: 173
|
тут дела такое
мое дело сообщить, а ваше принять решение
я говорю то что видел реально на контроллере
период опроса регистров не постоянен и в регистрах иногда появляются левые значения
если я отключаю скаду то в регистрах нет случайных данных.
Я к тому, что в моем проекте, значения из скады должны записываться в контроллер по команде (железно, кусок кода проверил), а они записываются без команды и в произвольное время со случайными значениями
using Special.FLibSYS;
if((vfReadMask)&&(pmaV1fA.isEVal() == false))
{
vmaV1fA = pmaV1fA;
vmaV1fB = pmaV1fB;
vmaV1fC = pmaV1fC;
vmaV1 = pmaV1;
vmaV2fA = pmaV2fA;
vmaV2fB = pmaV2fB;
vmaV2fC = pmaV2fC;
vmaV2 = pmaV2;
vmaCH1 = pmaCH1;
vmaCH2 = pmaCH2;
vmaCO1 = pmaCO1;
vmaCO2 = pmaCO2;
vmaEssa = pmaEssa;
vmaFire = pmaFire;
vmaSecurity = pmaSecurity;
vmaSGV = pmaSGV;
vmaLPNotPS = pmaLPNotPS;
vmaAVR = pmaAVR;
vmaHeater = pmaHeater;
vmaDGU = pmaDGU;
vmaTorch1 = pmaTorch1;
vmaTorch2 = pmaTorch2;
vmaTorch3 = pmaTorch3;
vmaDPmpsKK = pmaDPmpsKK;
vmaPmp1KK = pmaPmp1KK;
vmaPmp2KK = pmaPmp2KK;
vmaPmp3KK = pmaPmp3KK;
vmaPmp4KK = pmaPmp4KK;
vmaPmp5KK = pmaPmp5KK;
vmaDPmpsKO = pmaDPmpsKO;
vmaPmp1KO = pmaPmp1KO;
vmaPmp2KO = pmaPmp2KO;
vmaPmp3KO = pmaPmp3KO;
vmaCWS = pmaCWS;
vmaPmp1CWS = pmaPmp1CWS;
vmaPmp2CWS = pmaPmp2CWS;
vmaT_EA = pmaT_EA;
vmaT_prKK = pmaT_prKK;
vmaT_obrKK = pmaT_obrKK;
vmaT_prKO = pmaT_prKO;
vmaT_obrKOv1 = pmaT_obrKOv1;
vmaT_obrKOv2 = pmaT_obrKOv2;
vmaT_obrKOv3 = pmaT_obrKOv3;
vmaT_obrKOv4 = pmaT_obrKOv4;
vmaT_obrKOv5 = pmaT_obrKOv5;
vmaT_prKGVS = pmaT_prKGVS;
vmaT_obrKGVSv1 = pmaT_obrKGVSv1;
vmaP_prKK = pmaP_prKK;
vmaP_obrKK = pmaP_obrKK;
vmaP_prKO = pmaP_prKO;
vmaP_obrKOv1 = pmaP_obrKOv1;
vmaP_obrKOv2 = pmaP_obrKOv2;
vmaP_obrKOv3 = pmaP_obrKOv3;
vmaP_obrKOv4 = pmaP_obrKOv4;
vmaP_obrKOv5 = pmaP_obrKOv5;
vmaP_prKGVS = pmaP_prKGVS;
vmaP_obrKGVSv1 = pmaP_obrKGVSv1;
vmaLinkDstch = pmaLinkDstch;
vmaLinkTh1SHU = pmaLinkTh1SHU;
vmaLinkTh2SHU = pmaLinkTh2SHU;
vmaLinkTh3SHU = pmaLinkTh3SHU;
vmaLinkVit333 = pmaLinkVit333;
vmaLinkVit100_1 = pmaLinkVit100_1;
vmaLinkVit100_2 = pmaLinkVit100_2;
vmaLinkVit100_3 = pmaLinkVit100_3;
vmaLinkTh1SHUN1 = pmaLinkTh1SHUN1;
vmaLinkTh2SHUN1 = pmaLinkTh2SHUN1;
vmaLinkTh3SHUN1 = pmaLinkTh3SHUN1;
vmaLinkTh4SHUN1 = pmaLinkTh4SHUN1;
vmaLinkTh1SHUN2 = pmaLinkTh1SHUN2;
vmaLinkTh2SHUN2 = pmaLinkTh2SHUN2;
// vfReadMask = false;
f_err = "0";
}
if((vfWriteMask)&&(pmaV1fA.isEVal() == false)) [b]// команда на запись регистров[/b]
{
pmaV1fA = vmaV1fA;
pmaV1fB = vmaV1fB;
pmaV1fC = vmaV1fC;
pmaV1 = vmaV1;
pmaV2fA = vmaV2fA;
pmaV2fB = vmaV2fB;
pmaV2fC = vmaV2fC;
pmaV2 = vmaV2;
pmaCH1 = vmaCH1;
pmaCH2 = vmaCH2;
pmaCO1 = vmaCO1;
pmaCO2 = vmaCO2;
pmaEssa = vmaEssa;
pmaFire = vmaFire;
pmaSecurity = vmaSecurity;
pmaSGV = vmaSGV;
pmaLPNotPS = vmaLPNotPS;
pmaAVR = vmaAVR;
pmaHeater = vmaHeater;
pmaDGU = vmaDGU;
pmaTorch1 = vmaTorch1;
pmaTorch2 = vmaTorch2;
pmaTorch3 = vmaTorch3;
pmaDPmpsKK = vmaDPmpsKK;
pmaPmp1KK = vmaPmp1KK;
pmaPmp2KK = vmaPmp2KK;
pmaPmp3KK = vmaPmp3KK;
pmaPmp4KK = vmaPmp4KK;
pmaPmp5KK = vmaPmp5KK;
pmaDPmpsKO = vmaDPmpsKO;
pmaPmp1KO = vmaPmp1KO;
pmaPmp2KO = vmaPmp2KO;
pmaPmp3KO = vmaPmp3KO;
pmaCWS = vmaCWS;
pmaPmp1CWS = vmaPmp1CWS;
pmaPmp2CWS = vmaPmp2CWS;
pmaT_EA = vmaT_EA;
pmaT_prKK = vmaT_prKK;
pmaT_obrKK = vmaT_obrKK;
pmaT_prKO = vmaT_prKO;
pmaT_obrKOv1 = vmaT_obrKOv1;
pmaT_obrKOv2 = vmaT_obrKOv2;
pmaT_obrKOv3 = vmaT_obrKOv3;
pmaT_obrKOv4 = vmaT_obrKOv4;
pmaT_obrKOv5 = vmaT_obrKOv5;
pmaT_prKGVS = vmaT_prKGVS;
pmaT_obrKGVSv1 = vmaT_obrKGVSv1;
pmaP_prKK = vmaP_prKK;
pmaP_obrKK = vmaP_obrKK;
pmaP_prKO = vmaP_prKO;
pmaP_obrKOv1 = vmaP_obrKOv1;
pmaP_obrKOv2 = vmaP_obrKOv2;
pmaP_obrKOv3 = vmaP_obrKOv3;
pmaP_obrKOv4 = vmaP_obrKOv4;
pmaP_obrKOv5 = vmaP_obrKOv5;
pmaP_prKGVS = vmaP_prKGVS;
pmaP_obrKGVSv1 = vmaP_obrKGVSv1;
pmaLinkDstch = vmaLinkDstch;
pmaLinkTh1SHU = vmaLinkTh1SHU;
pmaLinkTh2SHU = vmaLinkTh2SHU;
pmaLinkTh3SHU = vmaLinkTh3SHU;
pmaLinkVit333 = vmaLinkVit333;
pmaLinkVit100_1 = vmaLinkVit100_1;
pmaLinkVit100_2 = vmaLinkVit100_2;
pmaLinkVit100_3 = vmaLinkVit100_3;
pmaLinkTh1SHUN1 = vmaLinkTh1SHUN1;
pmaLinkTh2SHUN1 = vmaLinkTh2SHUN1;
pmaLinkTh3SHUN1 = vmaLinkTh3SHUN1;
pmaLinkTh4SHUN1 = vmaLinkTh4SHUN1;
pmaLinkTh1SHUN2 = vmaLinkTh1SHUN2;
pmaLinkTh2SHUN2 = vmaLinkTh2SHUN2;
vfWriteMask = false;
f_err = "0";
}
if(pmaV1fA.isEVal() == true)
f_err = "1: Ошибка чтения/записи масок";
else
f_err ="0";
В принципе я эту проблему решил, путем увеличения времени опроса контроллера (с 30 сек увеличил до 5 мин), но это нехорошее решение :)
Я просто предлагаю тебе проверить, а вдруг если что. Ну если нет, так нет
[This article was edited 1 times, at last 24.10.2013 at 11:09.]
|
Written on: 24. 10. 2013 [11:23]
|
roman
Roman Savochenko
Moderator Contributor Developer
registered since: 12.12.2007
Posts: 3750
|
"monia" wrote:
мое дело сообщить, а ваше принять решение
Какое решение если у меня нет проблемы?
"monia" wrote:
я говорю то что видел реально на контроллере
Проблема у Вас, разбирайтесь!
"monia" wrote:
период опроса регистров не постоянен и в регистрах иногда появляются левые значения
если я отключаю скаду то в регистрах нет случайных данных.
Если не путать запись с опросом то постоянный. Запись это синхронная функция, если не стоит флаг "Асинхронная запись"
Вы мне так и не ответили с чего взяли, что период опроса не постоянный и не привели строку статуса этой задачи!
"monia" wrote:
Я к тому, что в моем проекте, значения из скады должны записываться в контроллер по команде (железно, кусок кода проверил), а они записываются без команды и в произвольное время со случайными значениями
Ну так и разбирайтесь в своём скрипте почему он пишет не по команде и со случайными значениями.
Ещё раз повторяю, что такой проблемы в самом DAQ.ModBus нет нигде, значит это Ваша проблема!
"monia" wrote:
Я просто предлагаю тебе проверить, а вдруг если что. Ну если нет, так нет
Я и проверил, на Демо и в реальных задачах такой проблемы нет или Вы думаете у меня таких задач мало?
Learn, learn and learn better than work, work and work.
|