Выложите, пожалуйста, эти проекты для ПЛК и панели.
Вид для печати
Возможно, этот пример поможет понять ситуацию:
Да, ответ помог:
Вложение 31252
Так все вижу - все меняется...
А вот таблица:
Вложение 31253
Там вместо времени прочерки...
Попробуйте настроить вторую таблицу по аналогии с первой (которая работает).
Каким образом работает в СП307 глобальный макрос?
Стоит задача - из преобразователя частоты читаю код аварии, и использую результат в таблице событий реального времени.
Для этого в глобальном макросе читаю регистр по адресу чтения кода аварии, и устанавливаю биты в памяти панели, которые потом используются в таблице
событий реального времени для формирования сообщений.
Создан и откомпилирован глобальный макрос (немного сократил число устанавливаемых битов :) ):
Результат не увидел. Выполняется ли глобальный макрос "раз в цикл" общей программы СП, или же надо сделать внутриКод:void main (void)
{
WORD AlarmCode = 0;
// read alarm code from ESQ
Read(PLC, 1, MODBUS_RTU_REG_4X, 7683, 0, TYPE_WORD, &AlarmCode);
if(AlarmCode == 0) SetPSB(300);
else ResetPSB(300);
if(AlarmCode == 1) SetPSB(301);
else ResetPSB(301);
if(AlarmCode == 2) SetPSB(302);
else ResetPSB(302);
if(AlarmCode == 3) SetPSB(303);
else ResetPSB(303);
if(AlarmCode == 4) SetPSB(304);
else ResetPSB(304);
}
глобального макроса бесконечный цикл чтения, например вот такой:
Если нужен бесконечный цикл, то не станет ли чтение в нем регистра по интерфейсу причинойКод:void main (void)
{
WORD AlarmCode = 0;
while(1)
{
// read alarm code from ESQ
Read(PLC, 1, MODBUS_RTU_REG_4X, 7683, 0, TYPE_WORD, &AlarmCode);
if(AlarmCode == 0) SetPSB(300);
else ResetPSB(300);
if(AlarmCode == 1) SetPSB(301);
else ResetPSB(301);
if(AlarmCode == 2) SetPSB(302);
else ResetPSB(302);
if(AlarmCode == 3) SetPSB(303);
else ResetPSB(303);
if(AlarmCode == 4) SetPSB(304);
else ResetPSB(304);
}
}
ухудшения динамики обновления данных на экранах панели, читаемых привязаными к экранам средствами
визуализации типа индикаторы/дисплеи и т.п? Если да, то как правильнее сделать запросы на чтение из глобального макроса более редкими по времени?
Глобальный макрос используется для объявления глобальных переменных и прототипов функции. Сам по себе он не вызывается.
Необходимо вызвать его в пользовательском макросе с нужным аргументами. Пользовательский макрос, в свою очередь, в большинстве случаев циклически вызывается через элемент Функциональная область - так что while не нужен, и да, бесконечный цикл в подавляющем большинстве случаев создаст только проблемы.
Частота вызова макроса настраивается в настройках функциональной области.
Более подробно см. в статье: http://www.owen.ru/uploads/aip_47_sait_kislov_36-37.pdf и Руководстве пользователя.
Здравствуйте. Есть такой элемент в сп300 как сигнальный дисплей, где задаешь диапазон, при выходе за пределы диапазона он начинает мигать. А нельзя ли считать этот бит и передать его в плк?