Добрый день!
Прошу порекомендовать решение следующих задач на базе ПЛК-40:
Необходим обмен большого объема данных по ModBUS RTU между АСУТП и ПЛК АГАВА, при этом ПЛК выступает SLAVE устройством
при реализации столкнулся со следующими особенностями:
- использование рекомендуемого функционального блока TMBRTUSlave (из примера) работает односторонне: чтение данных из ПЛК осуществляется нормально, запись же данных в ПЛК стандартной функцией присвоения ":=" между переменными и буфером RegHoldingBuf, соответственно, невозможна, в качестве полумеры решилось объявлениием переменных в одном адресном пространстве через "AT", что не выглядит лучшим решением
- при объявлении единого пространства через "AT" столкнулся с ограничением в 2048 адресов, это достаточно для текущей задачи, но мало для более крупных проектов
- часть переменных (уставки) должна хранится в энергонезависимой (RETAIN) памяти ПЛК, при использовании единого адресного пространства RegHoldingBuf и переменных, объединенного через "AT", при перезагрузке ПЛК по питанию выявлено обнуление переменных RETAIN, предположительно обусловлено перезаписью нулевыми значениями из буфера RegHoldingBuf при запуске ПЛК, решено вынесением RETAIN из указанного пространства и добавлением дополнительных переменных (при загрузке чтение из RETAIN, при работе - запись в RETAIN, если значение изменилось), даже на 20 переменных такой метод неудобен и высока вероятность ошибки.
Прошу порекомендовать решение следующих задач на базе ПЛК-40:
Необходим обмен большого объема данных по ModBUS RTU между АСУТП и ПЛК АГАВА, при этом ПЛК выступает SLAVE устройством
при реализации столкнулся со следующими особенностями:
- использование рекомендуемого функционального блока TMBRTUSlave (из примера) работает односторонне: чтение данных из ПЛК осуществляется нормально, запись же данных в ПЛК стандартной функцией присвоения ":=" между переменными и буфером RegHoldingBuf, соответственно, невозможна, в качестве полумеры решилось объявлениием переменных в одном адресном пространстве через "AT", что не выглядит лучшим решением
- при объявлении единого пространства через "AT" столкнулся с ограничением в 2048 адресов, это достаточно для текущей задачи, но мало для более крупных проектов
- часть переменных (уставки) должна хранится в энергонезависимой (RETAIN) памяти ПЛК, при использовании единого адресного пространства RegHoldingBuf и переменных, объединенного через "AT", при перезагрузке ПЛК по питанию выявлено обнуление переменных RETAIN, предположительно обусловлено перезаписью нулевыми значениями из буфера RegHoldingBuf при запуске ПЛК, решено вынесением RETAIN из указанного пространства и добавлением дополнительных переменных (при загрузке чтение из RETAIN, при работе - запись в RETAIN, если значение изменилось), даже на 20 переменных такой метод неудобен и высока вероятность ошибки.
Комментарий