Спасибо. До чего же все элементарно, главное не зацикливаться :). Сам дошел до того же методом "научного тыка" :). Начну решать обратную задачу - передачу задания прибору в том же формате.
Вид для печати
Спасибо. До чего же все элементарно, главное не зацикливаться :). Сам дошел до того же методом "научного тыка" :). Начну решать обратную задачу - передачу задания прибору в том же формате.
Добрый день!
В соседней теме прочитал, что в проекте можно использовать DIP-переключатели №1 и №4 на задней панели СП310 для организации своего "сервисного" режима.
После перевода переключателя №1 в положение ON значение регистра PSW18.0 действительно изменилось на "1".
Но после выключения питания панель больше не загружается. При подаче питания панель не издает никаких звуков, не включается экран.
Перевод DIP-переключателя №2 в положение ON для принудительной загрузки проекта никак не помогает решить проблему.
Можно ли привести панель в рабочее состояние?
Добрый день. Вот такая фигня:Вложение 31240
т.е. С контроллера время уходит, а на панеле в формате H:M:S не отображаются... Записаны в регистры 302, 304, 306, вывожу в таблице вывода данных в том же формате. Заранее благодарю.
Питание точно подается, т.к. моргают индикаторы Ethernet-порта на задней панели, и Windows находит неизвестное устройство, подключенное через usb.
Последовательность действий была следующая:
1. Добавил в проект индикатор и привязал его к биту PSW18.0;
2. Загрузил проект;
3. Перевел DIP-переключатель №1 в положение ON и убедился, что индикатор изменил цвет;
4. Выключил и включил питание с включенным DIP-переключателем №1;
5. Панель перестала загружаться.
Как я понимаю, данная последовательность действий не должна была привести к выходу панели из строя?
Прошу прощения, сначала невнимательно посмотрел на скрин. У вас на нем время 9:38:31? Тогда почему в REAL?
Как я уже писал, надо делать так:
Код:PSW302<-----16#2017 (Register Output Module)
PSW303<-----16#04 (Register Output Module)
PSW304<-----16#25 (Register Output Module)
Возможно, этот пример поможет понять ситуацию:
Да, ответ помог:
Вложение 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 как сигнальный дисплей, где задаешь диапазон, при выходе за пределы диапазона он начинает мигать. А нельзя ли считать этот бит и передать его в плк?
del...
Ответ нашел, попробую :).
Народ, добрый день... Вопрос не закрыт... Есть 3 дисплея вывода в 16#, где часы, минуты и секунды отображаются. Есть таблица - в которой мне нужно их выводить на разных строках. Там прочерки...
Может чего в регистрах таблицы?
PSW300 ?
PSW308 ?
PSW316 ?
и т.д. Причем значение значение в 1 столбец пишется именно с этими регистрами. Формат времени H:M:SВложение 31375
Антон, свяжитесь со мной по skype, пожалуйста.
Есть 2 экрана на СП307.
Когда остаюсь на 2 экране, нужно, чтобы через минуту переключался полноценно на 1 экран. Использую стандартные срества, которые находятся в Настройках. Получается так, оно вроде переходит на экран 1, но при нажатии на него, снова появляется экран 2. Или так и должно быть? Или все таки есть способ полноценно автоматически переключить экран?
Стандартные средства реализуют скринсэйвер - так что да, при нажатии на экран-скринсейвер вы должны вернуться на экран, на котором были до того, как включился скринсэйвер.
Вашу задачу (переключение экрана в случае заданного периода неактивности), в моем понимании, нельзя решить простыми средствами.
Итак, формулировка задачи: по истечению заданного периода неактивности оператора произвести переход на экран 1.
1. В настройках проекта выбираем режим Заставка, указываем интервал и номер экрана заставки - 1.
2. На экране 1 размещаем функциональную область, тип запуска - Переход на экран элемента. В ней инвертируем выбранный нами бит (например, PSB400) и выполняем макрос с функцией WakeupScreen.
3. На экране 1 размещаем функциональную область, тип запуска - После загрузки проекта. В ней сбрасываем в FALSE бит PSB400.
4. Создаем глобальную функциональную область, тип запуска - от бита PSB400. В ней осуществляем переход на экран 1.
Добрый день. Получил СП307, залил программу. Появляется табличка " соединение PLС порт 1". как избавиться?
Значит, проблема на уровне настройки обмена. Проверьте соответствие сетевых настроек устройств (четность, кол-во стоп бит), адреса устройств, адреса регистров, функции Modbus, распиновку кабеля и т.д.
Без настроек обмена вообще виснет. Интересно то, что при появлении этой таблички все работает. Есть показания и управление. Наблюдаю два часа уже. Табличка пропала и пока не появляется.
Пришлите, пожалуйста, проект для панели и описание подключенных к ней устройств на support@owen.ru
Если панель подключена к ПЛК ОВЕН, то как правило при включении питания, ПЛК переходит в рабочий режим позже панели из-за этого может возникать эта табличка. Когда ПЛК завершит свою инициализацию, то окошко пропадает.
Можно делать в панели стартовый экран(Экран приветствия) без элементов, с которого автоматически с заданной задержкой переходить на главный экран.
в режиме эмуляции offline макросы выполняются?
Добрый день.
Не получается соединить СП307Б и ПЛК100.К-М, на пробной программе все работает.
А на той, которую прописываю, не проходят сигналы ни в панель, ни из панели.
Настройки панели: 115200, 8, нет, 1, галочка на передаче данных есть, адрес 1, RTU Slave/ порт PLC.
Настройки плк: Modbus (Master), speed 11520, data 8 bits, one stop bit, RTU. Пробовал порт RS232 и RS485.
Обратил внимание на ошибку при загрузке проекта в плк.Вложение 31743
Подскажите, что не так...