а как определить что идет запись в PFW?
Вид для печати
а как определить что идет запись в PFW?
Как вы записываете ? Вводите значение в PFW ? Если вводите, нужный бит включится Вложение 67873
static WORD ArrValueDW[2];
static float RegFloat;
WORD Temp1;
if (GetPSBStatus(318)) {//1
SetPSB(400);//для проверки тоже не загорается
Read(HMI_LOCAL_MCH, 0, TYPE_PFW, 300, 0, TYPE_DWORD, &ArrValueDW);
ResetPSB(318);
RegFloat= *(float*)(ArrValueDW);
*(float*)(PSW+318)=RegFloat;//регистр для проверки
RegFloat=RegFloat*10.0;
Temp1=(WORD)RegFloat;
PSW[320]=Temp1;//регистр для проверки
}//1
пока хотя бы это...потом еще мне по сети эти данные надо переслать
почему то Read не работает...сразу виснет
убираю Read и пишу свое какое то значение в RegFloat -работает
Вот здесь
Read(HMI_LOCAL_MCH, 0, TYPE_PFW, 300, 0, TYPE_DWORD, &ArrValueDW);
Уверены, что нужен "&" ?
Ведь ArrValueDW это массив, и его имя уже является указателем (если проводить аналогию с С)
Зачем там вообще массив не понятно.
static DWORD ValueDW;
static float RegFloat;
WORD Temp1;
if (GetPSBStatus(318)) {//1
SetPSB(400);//для проверки тоже не загорается
Read(HMI_LOCAL_MCH, 0, TYPE_PFW, 300, 0, TYPE_DWORD, &ValueDW);
ResetPSB(318);
RegFloat= *(float*)(ValueDW);
*(float*)(PSW+318)=RegFloat;//регистр для проверки
RegFloat=RegFloat*10.0;
Temp1=(WORD)RegFloat;
PSW[320]=Temp1;//регистр для проверки
}//1
Пробуй через функциональную кнопку. когда нажата то------------>Вложение 67876
в макросе функцию записи writes написать из pfw
Опять проблемы...использую цифровой ввод в регистрах PSW, по вкл питания панели заполняю регистры нужными значениями и не трогаю их пока не понадобится-работает....через какой то промежуток времени хлоп и значения обнуляются...как с этим бороться
если бы питание пропадало то по вкл питания опять бы регистры заполнились нужными значениями(у меня макрос на вкл панели) а тут просто обнулились и все
как будто я обязан периодически прописывать заново значения
и самое плохое что может бит уведомления о изменении встать если я тоже самое значение пропишу в регистр
запускаю симулятор в регистрах высвечивается 0...проходит несколько секунд и в регистрах появляются какие то значения левые (в регистры при этом никто не пишет)
запускаю симулятор панели и все идеально 0 остается нулем Вложение 67880
с обнулением регистров разобрался ....у меня вкл силовая нагрузка и после этого в панели происходит какой то сбой и те регистры которые не в опросе обнуляются...пришлось подтверждать значения этих регистров периодически...в симуляторе проблема почему то пропала
посмотрел старую версию...если стоит цифровой ввод в который пишется из макроса, то в симуляторе через небольшое время в этом цифровом вводе появляются левые значения! В последующих версиях заменил цифровой ввод на цифровой дисплей.
и по помехе обнуляются именно регистры цифрового ввода которые не могу заменить на цифровой дисплей.
Здравствуйте в глобальном макросе пишу функцию
WORD ARRAY_DATA[2];
WORD Sum(ARRAY_DATA)
{
WORD res=0;
res=ARRAY_DATA[0]+ARRAY_DATA[1];
return res;
}
но компиляция с ошибками. в чем причина?
Всем добрый вечер. Поделитесь что не надо изменять (или наоборот) в начальных настройках элементов отображения/управления для более быстрой работе панели. Например, замечено, что применение косвенной адресации приводит к заторможенному отклику панели на произведенные действия. Проект: по кнопке на панели включается выход ПЛК и через другой регистр попадает обратно на панель в качестве индикатора. При смене косвенной адресации на прямую панель работает более менее адекватно. Скорость пробовал и 9600 и 115200, разницы никакой. Тайм аут 20мс.
Шрифт все равно какой? Кнопки рисованные. Может лучше из Галереи?
Косвенную адресацию лучше не использовать. Тайм аут можно и 10 ms.
Для ускорения обмена, надо использовать групповой запрос, регистры компоновать по типу, Маски битов и целочисленные без пропусков, потом все REAL.
В панели мастере не должно быть неиспользованных регистров ( в том числе в таблицах и трендах), не подключённых слейвов. Шрифт и кнопки по барабану.
В ПЛК мастере групповой запрос можно сделать так https://owen.ru/forum/showthread.php...l=1#post244022
У меня панель Master и вроде влиять на групповые запросы можно только косвенно - кучковать соседние регистры на одном экране, остальное делает ПО панели. Насколько хорошо не могу судить.
А чтением строки частенько пользуюсь, например две строки для чтения всего MВ110-8A.
Здравствуйте. как лучше для производительности панели СП3XX создавать одну функциональную область с несколькими методами в ней или несколько функциональных областей с одним методом в каждой?Вложение 67975
Здравствуйте. Вопрос по отключению опроса панелью некоторых слэйвов регистром PFW130.
имеем панель СП310-мастер и несколько слэйвов.
в проекте есть экран1(стартовый) и экран2.
все цифровые дисплеи опрашиваемых устройств расположены на экране2.
допустим у одного из слэйвов снято питание, нужно чтобы панель его не опрашивала.
если на экране1 отключить опрос этого устройства, то при переходе на экран2 не опрашиваются все устройства.
если отключать опрос на экране2, тогда все работает как надо, но при этом на стартовом экране1 до отключения опроса панель заметно тормозит, включается бит ошибки PSB50.
непонятно почему находясь на экране1, появляется ошибка связи если опрос всех слэйвов на экране2 ??
как можно ли решить эту проблему?
Ну или так,
мне другое не понятно, панель должна опрашивать блок ( так вы пишите программу), отключение опроса слейва это аварийная ситуация, то есть программа уже работает не правильно. Не получает данные с блока.
Нужно заменить блок или поверить и поставить назад. Вы же хотите сделать аварийную ситуацию штатной. Зачем вам это?
это не аварийная ситуация. На панель выводится несколько технологических линий, оператор до запуска на стартовом экране выбирает линии, которые не работают.
на нерабочей линии могут проводиться ремонты, отключается питание и нужно отключать опрос.
если опрос отключать на стартовом экране, то при переходе на рабочий экран не опрашиваются все слэйвы.
чтобы работало нужно на стартовом экране расположить дисплеи опрашиваемых устройств, тогда все работает.
я сделал их минимального размера, чтоб не загромождать стартовый экран, но это вроде не совсем правильно.
т.е. для отключения опроса слэйва, нужно чтобы на экране находился дисплей этого слэйва??