Удалил из 120Мб ушло 10) Я помню что Пётр Артюков как то делал что любой проект в 10 раз меньше становился. Но где это посмотреть не могу найти.
Вид для печати
Добрый день! Имеется: СП-310Р (master), ПР102 (slave), Овен МСД-200 (slave).
Панель СП-310Р опрашивает ПР102 по modbus RTU данные типа "float" с установленной галочкой "изменить порядок регистров" через функциональную область и записывает в PSW область, далее через еще одну функциональную область передает эти значения (с PSW области, принятые с ПР-ки) на МСД-200.
На МСД-200 значения отображаются некорректно. Я так понял, для МСД 200 необходимо поменять порядок регистров, но не знаю как это сделать (точнее знаю, что надо написать макрос, но это пока слишком сложно для меня.) Помогите пожалуйста.
Если вам не нужна эта переменная в панели, то снимите галку и передайте эту переменную дальше с переставленными регистрами.
Вот скрин, 2 ФО и 2 раза переставил регистры Вложение 74530 снял галку Вложение 74535
Если в панели она нужна, то галку оставьте, переменную примите как Float (например адрес 2) , WORD (адреса 2 и 3) переставьте местами и отправьте дальше.
Макросы не нужны, просто в ФО второй адрес например отправляете в 257 регистр, а 3 в 256 и читаете из 256 с переставленными регистрами.
Переменных несколько, а именно 9, все они нужны для отображения в панели СП310 (целочисленные не нужны для отображения в панели). Не совсем понял как это сделать через ФО. Задача - опрос ПР-ки, вывод значений типа Float на экран, далее - передача этих значений на МСД-200. Проблема еще в том, что МСД-200 почему-то не принимает значения WORD, отправленные с СП310. Скрин как я сейчас настроил приложил.Вложение 74534
Добрый день! В документации "СП3xx-Р. Пример обмена с ПЛК210 по Modbus TCP, панель - Slave" на 19 странице запись каналов происходит по переднему фронту переменной xWriteCommand, но в теле программы она нигде не фигурирует.
Почему запись происходит не циклически и что мы от этого выигрываем? По каким критериям можно формировать переменную xWriteCommand?
Вложение 74671
Вложение 74672
Запись по триггеру, то есть по булевой переменной, вы делаете когда вам нужно. Достаточно одной булевой переменной на всю группу записываемых регистров.
Например вам надо передать только уставки в панель, это можно сделать однократно, зачем тогда нагружать обмен циклической записью. А например Маску бит надо передавать при каждом нажатии кнопки, тогда делаете запись, при каждом изменении числа в Маске.
Запись по изменению в ПЛК2хх не реализована, а циклическую запись поддерживают не все приборы.
Все проекты с СП310, у меня запись по изменению, поэтому по поводу циклической записи сказать не могу. Раз сделана запись по триггеру, значит с циклической будут проблемы, хотя проверить вы можете сами.
Аналог записи по изменению, вы можете сделать сами, проверяя изменились ли переменные, и выставляя флаг записи. Бит записи должен быть TRUE, не менее одного цикла ПЛК.
Ещё два варианта, включения бита записи,
например вам надо передать только уставки в панель, это можно сделать однократно. Или например Маску бит надо передавать при каждом нажатии кнопки, тогда делаете запись, при каждом изменении числа в Маске.
Здравствуйте, подскажите, пожалуйста, есть ли возможность отключать чтение регистров контроллера трендами? Например, если произошёл обрыв связи контроллера 1, чтобы панель не пробегалась по каждому тренду контроллера 1, а сразу переходила к опросу следующего контроллера.
АПД: Пока вижу только 1 вариант - привязывать к трендам внутренние переменные и в отдельном макросе делать блокировки чтения регистров в эти переменные по какому-то флагу связи.
Есть ли ещё способы?
Не так, есть биты отключения слейва целиком, тогда вам или вручную отключать не работающие или мониторить обмен. Если обмен пропал, включить бит выключения данного слейва.
Здесь описано как настроить биты отключения разных слейвов https://owen.ru/forum/showthread.php?t=35196&page=2#13
Про отключение обмена со слейвом мне известно, но как тогда восстанавливать обмен, если ты его выключаешь через эти переменные? У меня смысл был такой, что есть некоторый флаг обмена. Если этот флаг не отработал - не делаю чтение регистров с этого контроллера и иду на следующий контроллер. Ну и соответственно, если отработал, то делаю опрос и только потом иду к следующему контроллеру. А когда мы сделаем отключение обмена со слейвом, то восстановить без включения обмена не выйдет, но и при этом мы не знаем, восстановилась ли связь.
Извините, если такой вопрос уже был.
Панель СП307. Данные температуры в формате Word пишутся в панель по Modbus RTU в регистр PSW. Отображаются элементом "Цифровой дисплей", формат DEC, с включенным "Линейным масштабированием".
Источник: Тип - DEC, максимум - 65535, минимум - 0.
Результат: максимум +150, минимум "-50" (датчик -50..+150С).
До температуры +50 все хорошо, потом старший бит PSW становится 1 и панель отображает "-50". Как побороть без переводов дополнительный/прямой код и т.п.?
P.S. Похоже нужно было использовать формат "Дисплея" не DEC, a Unsigned.
Добрый день! Подскажите, пожалуйста, с трендами:
Панель СП310-Р
В проекте использую 9 страниц с компонентом "Тренд", в каждом по 3 переменных типа float.
Если я правильно понял смысл использования памяти, получается, что для 1 записи одной страницы потребуется 3*2=6 регистров для переменных + 6 регистров для метки времени, итого 12 регистров. Для 9 страниц 108 регистров.
Таким образом объёма памяти хватит примерно на 37 записей? (4096/108).
Скажите, я что-то неправильно понимаю или нужен другой подход?
Не правильно считаете, не страница, а 1 запись 18 регистров. Всего в PFW памяти 4 000 000 регистров. Автообласть начинается с 4096 регистра Тут как считать
https://owen.ru/forum/showthread.php...&page=158#1573
Главное не пишите очень часто и делайте максимальную глубину записи, неделю (месяц) используя всю память.
Правильней сказать, что в проекте используется 9 экранов, в каждом экземпляр компонента "Тренд", т.е. в проекте используется 9 компонентов "тренд" на разных экранах. В таком случае как будет происходить запись в память в момент среза: каждый экземпляр "тренда" будет записывать свою метку времени (и получится 9 одинаковых записей) или запишется одна метка времени и значения со всех трендов?
Есть несколько вопросов:
1. Можно ли подключить несколько панелей оператора к ПЛК?
2. Если можно, то сколько максимум, чтобы сильно не загружать ПЛК?
3. И как вообще подключить несколько панелей оператора?
Добрый день. В онлайн симуляции пр попытке использования битового переключателя в формате 4х Номер регистра. Номер бита симулятор автоматически закрывается.
В чем может быть проблема?
Добрый день! Подскажите пожалуйста, хочу создать макрос (вызывается непррывно) в СП307 с логикой AND и ИЛИ. Как в руководстве (и по правилам СИ) использую && и || соответственно, но при загрузке проекта возникает ошибка. В чем может быть проблема? Спасибо!
&& в пятой линии.
Пробовал и в обычном и в глобальном (проект во вложении, там сейчас оба)
&& стр.183 https://owen.ru/uploads/sp3xx._rukov..._%5B1.1%5D.pdf
Даже если я ставлю == ошибка та же.
В скриптах всегда делал простую логику (присвоение) и считывание с порта - с этим проблем не было. А для этих задач (И, ИЛИ) даже примеров в сети не нашел
Скобки добавь
void MK_MASK_WRITE(BYTE DevAdr, WORD RegAdr, WORD Mask, WORD Error)
{
WORD TimeUTC[8], i, UTC, VSK;
Reads (PLC, 1, MODBUS_RTU_REG_4X, 265, 8, &TimeUTC);
if ((TimeUTC[4]=31) && (TimeUTC[4]=1))
{PSW[1269]=1;}
else
{
PSW[1269]=TimeUTC[4];
}
}
WORD TimeUTC[8], i, UTC, VSK;
Reads (PLC, 1, MODBUS_RTU_REG_4X, 265, 8, &TimeUTC);
if ((TimeUTC[4]=31) && (TimeUTC[4]=1))
{PSW[1269]=1;}
else
{
PSW[1269]=TimeUTC[4];
ЗЫ.
Чтобы найти ошибку не надо загружать в панель
Достаточно "F7" нажимать в редакторе
Вложение 75201 Вложение 75202
Вложение 75203
Добрый день.
Подскажите как при помощи макросов найти конец текстового(csv) файла, что бы продолжить писать существующий файл.
Хочу при включении панели, отсутствующие значения забивать нулями.
Работа, обычно начинается с 0 значений датчиков, нет давления, низкая температура, нет момента, потом всё начинает расти. Если пишите и после остановки, то всё начинает падать.
Отличить вообще не проблема.
Если отвалилась связь, то панель и так будет писать нули. Записью можно управлять по биту.
Кроме того есть время и дата, а так же есть начало нового файла, если пишите по дате или новый файл, если пишите по номеру.
Зачем, интересно, так сделано? Не нашел где можно привести дату в исторической таблице к нормальному виду
Вложение 75503
Замени два файла в папке конфигуратора ".\template"
и будет тебе счастье
Вложение 75505