Здравствуйте! Как узнать что Панель не связывается с ПЛК. по Модбасу РТУ РС485.
PSB51 вытаскиваю на СП310 , бит всегда отключен, что епсть связь, что нет.
ПЛК мастер.
Вид для печати
Здравствуйте! Как узнать что Панель не связывается с ПЛК. по Модбасу РТУ РС485.
PSB51 вытаскиваю на СП310 , бит всегда отключен, что епсть связь, что нет.
ПЛК мастер.
Если панель слэйв - то она не "связывается с ПЛК". Это ПЛК "связывается с ней".
Классический подход - постоянно записывать что-то из ПЛК в панель (например, увеличивающееся на единицу значение в какой-то регистр) и в панели макросами проверять, меняется его значение или нет. Если не меняется - значит, ПЛК перестал присылать запросы.
Добрый день. Хочу подключить ПЛК 110 к СП315, в наличии нет кабеля кс 16, зато есть кабель з раземом DB 9F, хочу подключиться по 485 интерфейсу, соответствено вопрос - какие сигналы подключать?
Добрый день.
Распиновка КС16 приведена тут:
https://owen.ru/product/kabeli
5-6 можно не подключать
Пример есть в посте 1623
https://owen.ru/forum/showthread.php?t=22915&page=163
Добрый день!
Как можно реализовать выбор изображения?
Т.е. переменная - для определенных значений - выбор определенного изображения.
Или возможно как то изменять цвет кнопки?
Добрый день.
Можно использовать элемент Динамическое изображение.
Вложение 51176
Но надо учитывать, что он не поддерживает изображения с прозрачным фоном.
Спасибо. Подойдет.
Еще вопрос:
Эмулятор работает на запись по TCP Coil (0x) в адрес 256, но не хочет работать на запись Coil в адрес 257-258 и т.д. Я так понимаю кратно 8.
При этом функция 4х - работает нормально.
Это ограничение эмулятора? Панели нет, проверить негде (Хотя из других проектов - по-моему все работало нормально)
Добрый день!
Подскажите, пожалуйста, возможное решение по архивации.
Есть несколько (около 10-15) булевских значений, срабатывание которых необходимо архивировать на USB. Желательно, чтобы были только строки с наименованием сработанного сигнала и временем.
Если это возможно реализовать, скиньте, пожалуйста, какой-нибудь пример.
Добрый день.
Можно начать с этого примера:
https://ftp.owen.ru/SP300/99_ForumFi...EventTable.zip
Без макросов сформировать строку с временем будет достаточно затруднительно - лучше потратить немного времени на изучение примера и адаптировать его под свои нужды.
Добрый день.
Начал осваивать панель СП307. Подключил ТРМ 210 к нему.
Считываю показание с ТРМ и пытаюсь сделать float.
WORD tek_temp_read=0;
WORD dpt=0;
DWORD t1=0;
DWORD t2=0;
float tek_temp=0.0;
Read(PLC, 1, MODBUS_RTU_REG_4X, 1, 0, TYPE_WORD, &tek_temp_read);
Read(PLC, 1, MODBUS_RTU_REG_4X, 513, 0, TYPE_WORD, &dpt);
t1=tek_temp_read;
t2=dpt;
tek_temp=DWord_2_Float(t1)/(10.0*DWord_2_Float(t2)); (dpt<>0)
*(float*)(PSW+256)=tek_temp;
И этот код не работает. В SP300_help нет описания преобразования word в float. Как это правильно сделать?
В цифровом дисплее ставлю тип word и формат float отображает 22.0 вместо 22,1. Если ставить тип dword и формат float, то 0.00.
Заработал такой вариант:
Read(PLC, 1, MODBUS_RTU_REG_4X, 1, 0, TYPE_WORD, &tek_temp_read);
Read(PLC, 1, MODBUS_RTU_REG_4X, 513, 0, TYPE_WORD, &dpt);
t1=tek_temp_read;
t2=dpt;
tek_temp=DWord_2_Float(t1)/(DWord_2_Float(t2)*10.0);
*(float*)(PSW+256)=tek_temp;
И отображение тоже заработало :)
А сразу значение float прочитать из ТРМ не судьба?
Вложение 51238
Код:float tek_temp;
Read(PLC, 1, MODBUS_RTU_REG_4X, 4105, 0, TYPE_DWORD, &tek_temp); //PV - 0x1009; 0x100A Float32
*(float*)(PSW+256)=tek_temp;
Не посмотрел, что есть дублирование значения еще и во float. Спасибо ваш вариант работает.Цитата:
float tek_temp;
Read(PLC, 1, MODBUS_RTU_REG_4X, 4105, 0, TYPE_DWORD, &tek_temp); //PV - 0x1009; 0x100A Float32
*(float*)(PSW+256)=tek_temp;
А все таки есть адекватный вариант преобразования WORD во Float (может понадобиться в будущем там где нет дублирования)?
После выполнения - в регистрах PSW300-301 значение 16.50.Код:WORD IntValue = 11;
*(float*)(PSW+300) = IntValue * 1.5;
Еще одна проблема :).
В ТРМ написано:
Вложение 51247
Я пытаюсь записать параметр DPt, который имеет тип Int16.
Write(PLC, 1, MODBUS_RTU_REG_4X, 513, 0, TYPE_WORD, w_val); Использует 6 функцию и соответственно ТРМ выдает ошибку функция не поддерживается. Тут все понятно.
Writes(PLC, 1, MODBUS_RTU_REG_4X, 513, 1, w_val); Использует тоже 6 функцию и ошибка та же.
Writes(PLC, 1, MODBUS_RTU_REG_4X, 513, 2, w_val); использует уже 10 функцию, но ТРМ выдает некорректные данные, потому что пытаюсь записать 2 регистра.
Как записать 10 функцией 1 регистр как того требует ТРМ?
Добрый день. Уважаемые коллеги, прошу направить на нужный путь. Впервые мне пришлось работать с ПЛК, а конкретно с ПЛК 160МО, и панелью оператора СП307Р. И то и другое устройство находятся в пути и к концу этой недели должны быть у меня. Я готовлюсь к их изучению, и пока той информации которую нашел на оф. сайте ОВЕН мне достаточно, но есть один вопрос: я не могу понять где прописаны адреса регистров ПЛК. Прошу подсказки. Заранее благодарен.
Добрый день.
Посмотрите учебное видео, пожалуйста: https://youtu.be/yJkwRU33I80
Спасибо. Сейчас посмотрю.
Подскажите пожалуйста как на языке LAD это будет выглядеть, не могу понять, и как принять это по модбасу на спк107
Добрый день.
При выполнении этого макроса каждую секунду панель зависает
Если закоментировать строку *(float*)(PSW+259)=out_pow, то панель не зависает.Цитата:
if (ind_read==0)
{
Read(PLC, 1, MODBUS_RTU_REG_4X, 4105, 0, TYPE_DWORD, &tek_temp);
*(float*)(PSW+256)=tek_temp;
ind_read=ind_read+1;
}
else if (ind_read==1)
{
Read(PLC, 1, MODBUS_RTU_REG_4X, 4111, 0, TYPE_DWORD, &out_pow);
*(float*)(PSW+259)=out_pow;
ind_read=ind_read+1;
}
else if (ind_read==2)
{
Read(PLC, 1, MODBUS_RTU_REG_4X, 4107, 0, TYPE_DWORD, &zad_temp);
//*(float*)(PSW+261)=zad_temp;
ind_read=ind_read+1;
}
else if (ind_read==3)
{
Read(PLC, 1, MODBUS_RTU_REG_4X, 513, 0, TYPE_WORD, &dpt);
PSW[258]=dpt;
ind_read=ind_read+1;
}
else if (ind_read>=4)
ind_read=0;
Условия - это попытка делать запросы по очереди, но это не помогло.
Адрес под указателем должен быть четным.
Вложение 51272
Добрый день!
Не много не разобрался с макросом этим.
Нужно оставить столбцы Время и Событие. Сейчас при удалении столбцов, отображение выводится какое-то хаотичное.
Что нужно удалить/откорректировать, чтобы удалив 2 последних столба в таблице, алгоритм работал правильно?
Всем привет!
Добавил на экран СП310 индикатор регистра PSB51: "Ошибка связи для порта PLC". Хотелось также записать это событие в историческую таблицу, но от этой идеи пришлось отказаться, поскольку каждые 6-7 сек. данный бит включается примерно на 200-300 мс. и записей слишком много :(
Изменение настроек скорости, четности и т.п. (естественно с обоих сторон) ничего не изменили.
Подробности: RS232 ModBus RTU, панель мастер: СП310P -> ПЛК 110-30 [M02]; кабель 2,5 м, неэкранированный.
Собственно вопрос: это нормальное поведение для бита PSB51 или есть какая-то проблема в моём проекте?
И снова здравствуйте!
Подскажите пожалуйста: нужно в СП307 сделать что-то вроде дросселя, чтобы однократное нажатие вызывало изменение переменной на опр.величину, а удержание кнопки - постоянный рост этой переменной:
Вложение 51318
Пока сделал на кнопке "Операции с данными", но она делает операцию только при нажатии, а удержания "не понимает".
Получается нужно через кнопку управления битом и модуль в ПЛК... И вроде был такой модуль в какой-то библиотеке CodeSys, с настройкой задержек и т.п. только не помню: в какой и как называется?
Библиотека OSCAT Basic, ФБ Tune или Tune2.Цитата:
И вроде был такой модуль в какой-то библиотеке CodeSys, с настройкой задержек и т.п. только не помню: в какой и как называется?
Всем привет. Реализовываю обмен данными между ПЛК 210 и панелью сп310 через TCP IP, но когда загружаю проект в панель, любой, даже не касающийся данного проекта, панель отказывается нажимать на переключатели и вообще выполнять какие-либо действия, просто происходит звук нажатия, после которого тапнуть по экрану представляется возможным через сек. 5, хотелось бы узнать, что не так делаю. Собственно всю настойку и пробный вариант из видео 11 о таком методе обмена тоже пробовал, и такая же история.