PDA

Просмотр полной версии : ПЛК 110-60 [M02] - ограничение по Modbus через конфигуратор?



DmitriiAnyushin
05.10.2016, 16:08
Здравствуйте! Подскажите пожалуйста! Контроллер ПЛК110-60-Р-М [M02], таргет 3.10, прошивку обновил до 3.53
Прописал элементарную программу - при включении DI1 включается DO1 - все работает
Создаю через конфигуратор элемент Modbus Slave (RS-485) с 100 двухбайтовыми переменными (регистров) - программа с включением выхода работает и данные мастером считываются
Увеличиваю количество двухбайтовых переменных до 500 - данные мастером считываются, но выход уже не включается (хотя по логике и в конфигураторе все отрабатывает)
Если количество двухбайтовых переменных увеличиваю до 800, то программа при зашивки отключается и стирается в контроллере

Подскажите пожалуйста, с чем это может быть связано? Нужно ли выставлять какие то доп. настройки или же прошивка находится еще в стадии разработки. Проекты реализовывал до этого на старой версии ПЛК110-60-Р-М - там до 700 регистров все работало без сбоев и по выполнению программы и по передачи данных на верхний уровень (хотя по конфигуратору предоставляется возможность задать 1000 двухбайтовых переменных).
Спасибо!

Филоненко Владислав
05.10.2016, 17:43
Мы обнаружили проблему с неработоспособностью DO при огромных конфигурациях и она уже решена в версии 0.3.57 (пока на тестировании).
Проблема с пропаданием прошивки не подтверждается. Уточните что конкретно происходит.

DmitriiAnyushin
06.10.2016, 09:18
Мы обнаружили проблему с неработоспособностью DO при огромных конфигурациях и она уже решена в версии 0.3.57 (пока на тестировании).
Ясно. А нет информации когда ориентировочно версия будет?

Проблема с пропаданием прошивки не подтверждается. Уточните что конкретно происходит.
Прошу прощения - не прошивка, а программа, которая загружена в контроллер
Конфигуратор дает мне возможность в подэлементе Modbus(slave) создать тысячу переменных, но когда я создаю 750 переменных, то при прошивке контроллера выдается сообщение "Ошибка связи (#0) произошло отключение". И далее в контроллере оказывается та программа, которая была когда-то создана как загрузочный проект (либо пустой контроллер, если загрузочный проект никогда не создавался)

И еще я не поминаю принцы работы тумблера "Работа/Стоп/Сброс" - контроллер в стоп с помощью тумблера не переходит - переход в нужный режим я могу задать только программно. Нужно ли его как-нибудь активировать? (в документации и на форуме по данному вопросу ничего не нашел). Спасибо!

DmitriiAnyushin
14.10.2016, 13:39
Установил я новую прошивку (3.62), которую скинул Евгений Дударев (http://www.owen.ru/forum/showthread.php?t=25325&page=5)
1) С выходами проблема решена
2) По поводу максимального количества элементов в блоке Modbus Slave - где то около 900 элементов он прошить контроллер дает (правда когда больше 750 только со второй попытки), а уже больше начинает происходить то, что я писал в предыдущем сообщение
3) А вот по поводу переключателя я так и не понял. В моем понимании в положении "Работа" программа выполняться должна, в режиме "Стоп" не должна (как у трехсотого контроллера Siemens). Но контроллер абсолютно не реагирует на положение этого переключателя, а выполняет/останавливает программу в зависимости от программного "Онлайн - Старт/Стоп". В документации я про этот переключатель ничего не нашел, только про кнопку из контроллера [М01] (к ней вопросов нет). Методом тыка понял, что переход между режимами происходит при пересбросе питания. Подскажите пожалуйста, так и задумано?

Филоненко Владислав
14.10.2016, 14:06
Да, так и задумано.
Символьный файл используете?

DmitriiAnyushin
14.10.2016, 15:16
Нет. А про это где-нибудь можно почитать?

Филоненко Владислав
16.10.2016, 20:41
Плохо задумано

По многочисленным просьбам потребителей. Мечты сбываются.

DmitriiAnyushin
17.10.2016, 08:34
По многочисленным просьбам потребителей. Мечты сбываются.
А в документации про этот принцип работы где-нибудь указано и все же интересно,что за символьный файл про который Вы написали ранее (http://www.owen.ru/forum/showthread.php?t=25302&p=223786&viewfull=1#post223786) ?
Нашел Ваше сообщение http://www.owen.ru/forum/showthread.php?t=14520&page=103&p=197239&viewfull=1#post197239. В принципе имея данный бит ход выполнения программы можно реализовать как угодно. Спасибо!

Гарчев Евгений
17.10.2016, 11:58
А в документации про этот принцип работы где-нибудь указано
Указано, п. 3.4.6 - http://www.owen.ru/uploads/re_plc110[m02]_2279.pdf
27059

DmitriiAnyushin
17.10.2016, 15:04
Указано, п. 3.4.6 - http://www.owen.ru/uploads/re_plc110[m02]_2279.pdf
27059
Большое спасибо!

Филоненко Владислав
18.10.2016, 13:19
Когда просто ставим галочку "создавать символьный файл" - и, это же трудно, не выбираем реально нужные переменные - в символьный файл попадает всё, в больших проектах десятки тысяч переменных.

DmitriiAnyushin
19.10.2016, 10:53
Вернулся к тестированию ПЛК110-60 М02
Создал проект и разметил 700 подэлементов (2-byte) в конфигураторе ModBus Slave для RS232 и RS485-1 и еще 40 подэлементов для RS485-2
Загружается хорошо, выхода при этом работают. Но когда я создаю загрузочный проект и сбрасываю питание, то при восстановлении питания мигает индикатор "Работа" и проект не запускается. Если таблицу из конфигуратора удалить, то все загружается.
В контроллере ПЛК110-60 М01 все загружалось и после пересброса работало
Проект во вложении (все программные блоки удалиил)
Скажите, с чем это может быть связано? Спасибо!

DmitriiAnyushin
25.10.2016, 08:36
В общем, т.к. программный мастер работает как часы уж который год (забыл про таржеты&прошивки), на всякий случай запилил программный слейв (правда на МО2 еще не гонял) - видимо придется юзать ))
А можно где-нибудь посмотреть на программный слейв?

DmitriiAnyushin
25.10.2016, 16:18
А еще в новой версии контроллера не удается:
1. Залить программу в контроллер с помощью plc_io
2. Поменять настройки порта с помощью EasyWorkPlc
В версии [01] заливалось и менялось все хорошо
Скажите пожалуйста, появились ли какие-то особенности либо данные возможности на данный момент в стадии разработки? Спасибо!

Филоненко Владислав
26.10.2016, 12:22
Какой версией PLC_IO Вы пользуетесь? Есть старая версия, которая содержит ошибки и полноценная новая, с поддержкой команд PLCBrowser из командной строки. Старую я бы не рекомендовал использовать.

EasyWorkPLC и не заявлялась. Ей вообще кто-то пользуется? Первый отзыв на много лет.

DmitriiAnyushin
26.10.2016, 13:02
Какой версией PLC_IO Вы пользуетесь? Есть старая версия, которая содержит ошибки и полноценная новая, с поддержкой команд PLCBrowser из командной строки. Старую я бы не рекомендовал использовать.

EasyWorkPLC и не заявлялась. Ей вообще кто-то пользуется? Первый отзыв на много лет.

1. Я использую программу, которую выкладывали на форуме http://www.owen.ru/forum/showthread.php?p=82459
2. А каким способом менять настройки порта RS-485 (адрес, скорость и т.д.) не используя исходный проект? Год назад мне подсказали именно такой способ
Скажите пожалуйста, каким образом и какими инструментами сейчас возможно решить данные задачи (прошивка и смена настроек порта без исходника)? Спасибо!

Филоненко Владислав
26.10.2016, 21:27
1. Я использую программу, которую выкладывали на форуме http://www.owen.ru/forum/showthread.php?p=82459
2. А каким способом менять настройки порта RS-485 (адрес, скорость и т.д.) не используя исходный проект? Год назад мне подсказали именно такой способ
Скажите пожалуйста, каким образом и какими инструментами сейчас возможно решить данные задачи (прошивка и смена настроек порта без исходника)? Спасибо!

1. О, ещё и левый клон PLCIO непонятного содержания. Он точно нами не поддерживается.
2. Да, на предыдущей линейке был такой способ, но он не пользовался популярностью и его не поддержали. Хотя, если это так важно и будет несколько "потребителей" - мы можем вернуться к этому вопросу.
Обычно проект программы на ПЛК всегда есть и поменять что-либо не сложно. Для защиты кода от копирования в ПЛК М02 есть разнообразные средства, которых не было в предыдущей линейке.

smk1635
26.10.2016, 22:36
1. Для защиты кода от копирования в ПЛК М02 есть разнообразные средства, которых не было в предыдущей линейке.

А где можно глянуть по этой теме?

DmitriiAnyushin
29.10.2016, 10:08
Какой версией PLC_IO Вы пользуетесь? Есть старая версия, которая содержит ошибки и полноценная новая, с поддержкой команд PLCBrowser из командной строки. Старую я бы не рекомендовал использовать.

Попробовал загрузить файлы (DEFAULT.CHK и DEFAULT.PRG) с помощью PLC_IO которая шла в комплекте на диске с контроллером ПЛК110[М02]. Однако не выгруженные с контроллера, ни созданные в среде codesys не работают, хотя процесс загрузки в командной строке шел и загруженные файлы на контроллер записались. Актуальная ли версия программы на диске и есть ли какие-нибудь особенности записи проектов с помощью данной программы в контроллер M02 (повторюсь, в М01 все загружалось)?


Да, на предыдущей линейке был такой способ, но он не пользовался популярностью и его не поддержали. Хотя, если это так важно и будет несколько "потребителей" - мы можем вернуться к этому вопросу.
Обычно проект программы на ПЛК всегда есть и поменять что-либо не сложно. Для защиты кода от копирования в ПЛК М02 есть разнообразные средства, которых не было в предыдущей линейке.
Ну я устанавливаю контроллер в систему к которой в дальнейшем (через год, два, а может и больше лет) будет подключаться верхний уровень. Естественно проект отдаваться никому не будет, только таблица регистров в руководство приложено. И как в данном случае изменить настройки порта?
Спасибо!

Филоненко Владислав
31.10.2016, 07:58
Сравните файлы, скачанные с ПЛК с файлами, созданными средой (Create boot project) без логина

DmitriiAnyushin
02.11.2016, 08:38
Спасибо разобрался - файл "DEFAULT.CHK" не всегда с первого раза зашивается или после перезагрузки пропадает. Когда второй раз только его загружаю - все начинает работать

Спорягин Кирилл
14.11.2016, 23:19
Спасибо разобрался - файл "DEFAULT.CHK" не всегда с первого раза зашивается или после перезагрузки пропадает. Когда второй раз только его загружаю - все начинает работать

Дмитрий, расскажите, чем окончился Ваш вопрос о работе ПЛК при большом количестве переменных в конфигураторе?

DmitriiAnyushin
15.11.2016, 11:07
Дмитрий, расскажите, чем окончился Ваш вопрос о работе ПЛК при большом количестве переменных в конфигураторе?

Я конечно переписал программу в контроллер M02 с прошивкой v62 (там и выхода работают и регистров можно больше сделать, чем в заводской v53 (при использовании 4byte элементов еще больше, но я не проверял)), но в текущих проектах использую контроллер M01, т.к. официально на сайте прошивка 62 еще не выложена, да и у М01 есть некоторые приемущества (перепрограммирование порта, маркировка на корпусе, стабильная работа конфигуратора Modbus). Конечно есть ряд плюсов у М02, но пока с переходом подожду

Филоненко Владислав
15.11.2016, 22:33
Спасибо разобрался - файл "DEFAULT.CHK" не всегда с первого раза зашивается или после перезагрузки пропадает. Когда второй раз только его загружаю - все начинает работать

Вот! опять перезагрузка. Вы спать ложитесь и бьёте себя по голове для засыпания?
При перезагрузке (особенно сразу после записи файла) - сохранение файла не гарантируется. Используйте штатное выключение питания.

DmitriiAnyushin
16.11.2016, 08:34
Вот! опять перезагрузка. Вы спать ложитесь и бьёте себя по голове для засыпания?
При перезагрузке (особенно сразу после записи файла) - сохранение файла не гарантируется. Используйте штатное выключение питания.
Не логичное сравнение с записью проекта и укладыванием спать. Мне же plc_io выдает, что все записано. Ну а про то что подождать и сколько нигде не написано. И что значит штатное выключение питание? (я естественно перезагружаюсь, сбрасывая питание)

Спорягин Кирилл
21.08.2017, 12:27
Добрый день, уважаемы форумчане и тех поддержка.

Хочу продолжить тему так как, мне кажется, она осталась не раскрытой до конца (поясняю, что прочел полностью вот эту (http://www.owen.ru/forum/showthread.php?t=26933) и вот эту (http://www.owen.ru/forum/showthread.php?t=25325&page=2&highlight=modbus+slave) тему.)

Появился объект, где уже закуплена лицензия на 1000 тегов для MasterSCADA. Проект большей частью уже сделан - количество используемых тэгов будет - 950 +/- 20.

Зная (читал форум), что есть некоторые ограничения на размер области Modbus Slave стал внимательно изучать вопрос.

Имею на стенде ПЛК110-24.30.Р-М (см. PLCInfo.jpg).

Написана простая тестовая программа TestRegsCount.pro (прикрепляю).
В программе в конфигурацию ПЛК добавлен ModbusSlave через TCP и в него 998 dwordов.
998 dword поименован, как dwReg998. Он инкрементируется в PLC_PRG.
Поименовал 12 дискретный выход, как DO12. В PLC_PRG запрограммировано "мигание" DO12 каждые 2 секунды (2 секунды включен, 2 секунды выключен).

Данная программа успешно работает - dwReg998 инкрементируется и опрашивается (см. "Работает с 998 dwordами.jpg"), 12 выход "мигает".
Если в данную программу в ModbusSlave добавить 999-й dword. Программа перестает работать после перезагрузки ПЛК по питанию. Проявляется следующим образом:
светодиод "работа" то горит, то нет. Дискретный выход 12 не "мигает" с периодом 2 секунды (периодически то включается, когда светодиод работа загорается, но тут же выключается).

Причем, если попытаться подключиться к ПЛК из CodeSys, то первые несколько попыток заканчиваются неудачей, а после 3-й или 4-й происходит подключение. После подключения CodeSys ПЛК начинает работать корректно.


Вопросы:
1. Некорректная работа с 999 dwordами это ошибка?
2. Если необходимо передать на верхний уровень больше 998*4 = 3992 байта, то единственный выход это библиотеки?
3. Есть ли ограничения на размер Modbus slave на ПЛК110 старой модификации. Вопрос не праздный, так как в реальном проекте будет использоваться старая модификация. ПЛК110 М02 на стенде.

Филоненко Владислав
21.08.2017, 13:51
1. Для начала надо ответить на вопрос - зачем я хочу передавать на верхний уровень 3992 байта, если ему и 30 будет достаточно. Чтобы лицензию MasterSCADA выбрать. Не съим так понадкусываю?
2. Посмотреть на размер области I/O в вкладке таргета
3. Проверить правильность доступа к регистрам (правильно без использования указателей)
4. Добавить модуль статистики и проверить свободные ресурсы ПЛК.

P.S. и таки да, ресурсы ПЛК не бесконечные

Спорягин Кирилл
21.08.2017, 13:56
1. Владислав, ошибка с 999 dwordом у Вас проявляется?
2. Подробнее - это нигде не описано.
3. Правильно (указатели не используются). Хотя для практически пустого проекта - это не важно.
4. Модуль статистики есть. Все в порядке.

Будет таки вразумительный ответ?

Спорягин Кирилл
22.08.2017, 11:04
Повторю вопросы немного в другом ключе:
1. Если с 998 dwrodами работает, а с 999 нет, то, видимо, имеет место какая-то ошибка. Так это или нет? Будет ли она удалена?
2. Время выполнения проекта с 998 dwordами составляет 100 мкс. А какой перегрузке ресурсов может идти речь?
3. На мой взгляд, 1000 тэгов - это средняя автоматизация, на что и заявлен ПЛК110.

Спорягин Кирилл
22.08.2017, 11:13
Цикл 100 мкс (см. скриншот).

Филоненко Владислав
23.08.2017, 10:17
Спасибо разобрался - файл "DEFAULT.CHK" не всегда с первого раза зашивается или после перезагрузки пропадает. Когда второй раз только его загружаю - все начинает работать
проблема в перезагрузке - используйте выключение питания

Филоненко Владислав
23.08.2017, 10:21
Правильный подход к такому объёму данных - использовать библиотеку.
каков размер файла программы (пустой, только конфигурация) при вызове "Create boot project" БЕЗ ЛОГИНА. Обычно файлы записываются в каталог проекта.

Спорягин Кирилл
23.08.2017, 10:42
каков размер файла программы (пустой, только конфигурация) при вызове "Create boot project" БЕЗ ЛОГИНА. Обычно файлы записываются в каталог проекта.

Для прикрепленного ранее проекта (TestRegsCount.pro) размер файла проекта TestRegsCount.prg - 116528 байт (в PLC_PRG 3 строки кода и 1 строка объявления). Прикрепляю.



Правильный подход к такому объёму данных - использовать библиотеку.
1. В конфигураторе стоит ограничение на добавление элементов в Modbus Slave. Как раз 999 элементов. Более добавить нельзя. Почему тогда не создано более жесткое ограничение на добавление элементов?
2. Хотелось бы понять с чем связано, это ограничение. Так же об этом нигде не написано в документации.
3. Можно ссылку на пример организации обмена по Modbus TCP через библиотеки.

Спорягин Кирилл
23.08.2017, 10:46
После удаления строк из PLC_PRG (т.е. проект стал пустой - только конфигурация) файл *.prg стал весить 115653 байта.

Спорягин Кирилл
23.08.2017, 13:33
Валенок, где-то Вы писали, что на 100-ке делали слейв из 4000 регистров через конфигуратор. Тогда не было ограничения на ввод 999 элементов или Вы использовали несколько элементов Modbus Slave?

capzap
23.08.2017, 13:40
Валенок, где-то Вы писали, что на 100-ке делали слейв из 4000 регистров через конфигуратор. Тогда не было ограничения на ввод 999 элементов или Вы использовали несколько элементов Modbus Slave?

Валенок и конфигуратор, так так, это что то новенькое :)

Спорягин Кирилл
24.08.2017, 11:45
Уважаемая тех. поддержка, жду ответа.

Если есть возможность добавить 999 dwordов, но с 999 dwordами практически пустой проект не работает, значит что-то некорректно.
Прошу дать пояснения.

Филоненко Владислав
24.08.2017, 14:12
После удаления строк из PLC_PRG (т.е. проект стал пустой - только конфигурация) файл *.prg стал весить 115653 байта.

Вот и ответ. Размер конфигурации (а она большая часть пустой программы) не может быть более 100кБайт. Хотитет уменьшить? сделайте имена параметров поменьше, заменив "4 byte" на пустую строку.
И в др. местах аналогично

Спорягин Кирилл
24.08.2017, 14:35
Вот и ответ. Размер конфигурации (а она большая часть пустой программы) не может быть более 100кБайт. Хотитет уменьшить? сделайте имена параметров поменьше, заменив "4 byte" на пустую строку.
И в др. местах аналогично

Да, удалил имена "4 byte" и пустой проект (только конфигурация) стал весить 110651 байт. Т.е. меньше.

Спорягин Кирилл
24.08.2017, 14:36
А энто как ? 8(

На вкладке "Параметры модуля" для элемента "4 byte" для Name.

Спорягин Кирилл
24.08.2017, 14:50
Что-то не понял что за Name. Это поле перед "AT ..." ?

Нет это вот это (см. картинку).

Спорягин Кирилл
24.08.2017, 14:54
А когда я удалил значение поля Name для канала (см. картинку), то пустой проект с 999 dwordами стал весить еще меньше, а именно - 99 671 байт.

Да, теперь проект с 999 dwordами успешно работает.
Спасибо.

capzap
24.08.2017, 14:59
А когда я удалил значение поля Name для канала (см. картинку), то пустой проект с 999 dwordами стал весить еще меньше, а именно - 99 671 байт.

Да, теперь проект с 999 dwordами успешно работает.
Спасибо.
в меню проект-экспорт, выделяете только конфигурацию, сохраняете в файл, далее открываете файл в текстовом редакторе и удаляете всё что стоит в одинарных кавычках, затем после сохранения делаете импорт

Спорягин Кирилл
24.08.2017, 15:02
в меню проект-экспорт, выделяете только конфигурацию, сохраняете в файл, далее открываете файл в текстовом редакторе и удаляете всё что стоит в одинарных кавычках, затем после сохранения делаете импорт

Буду иметь ввиду. Спасибо.

Спорягин Кирилл
24.08.2017, 15:02
Видимо я отстал

Да, уж......

capzap
24.08.2017, 15:31
Но даже с "4 byte" файл *.prg для плк100 весит-то 33Кб.
И какие у нас ограничения для плк 100 ?

ну так то М02 нужно тогда сравнивать со своим старшим братом, а не с соткой чтоб о размерах говорить. На самом деле то что структура конфигурации будет отличаться должно быть понятно потому что контроллер обновленый, то что там много бесполезной информации, так все жеж делается на основе статистики за предыдущие годы, ни кому и в голову не приходит конфигуратор наполнять таким количеством регистров, вот и не задумывались об этом

Спорягин Кирилл
24.08.2017, 16:11
Владислав, появились еще вопросы.

1. Как определить размер файла конфигурации без удаления всего из проекта, кроме конфигурации? Существует ли какой-либо другой способ?
2. Удаление имен модулей и каналов может ли как-то сказаться на выполнении программы? Для чего вообще эти переменные (никогда их не использовал)?
3. Теория с размером файла конфигурации в 100 кБайт, имеет, пример, показывающий, что это не совсем так.
Прикрепляю проект TestRegsCount2Slave.pro - это проект, полученный из выкладываемого ранее добавлением второго слейва Modbus (slave).
Во втором слейве сейчас сконфигурировано 200 dwordов. Размер пустого проекта (только конфигурация) составляет 122 444 байт, что явно больше 100 кБайт.
Но при этом данный проект успешно работает.
Прошу дать пояснения.
4. Какое ограничение размера конфигурации для ПЛК110 старой модификации (прошивка 2.15.9).

Сергей Лысов
24.08.2017, 19:38
Владислав, появились еще вопросы.

Теория с размером файла конфигурации в 100 кБайт, имеет, пример, показывающий, что это не совсем так.
Прикрепляю проект TestRegsCount2Slave.pro - это проект, полученный из выкладываемого ранее добавлением второго слейва Modbus (slave).
Во втором слейве сейчас сконфигурировано 200 dwordов. Размер пустого проекта (только конфигурация) составляет 122 444 байт, что явно больше 100 кБайт.
Но при этом данный проект успешно работает.
Прошу дать пояснения.
4. Какое ограничение размера конфигурации для ПЛК110 старой модификации (прошивка 2.15.9).

При 100кБайт контроллер ведёт себя корректно. Всё, что выше, будет вызывать пробьемы. Увеличьте количество переменных, добавьте код и контроллер может отключить отдельные порты, перезагружаться и отказываться подключаться к CODESYS.
Для старых контроллеров ограничение 25кБайт, на сайте это указано.

Филоненко Владислав
24.08.2017, 21:01
Владислав, появились еще вопросы.

1. Как определить размер файла конфигурации без удаления всего из проекта, кроме конфигурации? Существует ли какой-либо другой способ?
2. Удаление имен модулей и каналов может ли как-то сказаться на выполнении программы? Для чего вообще эти переменные (никогда их не использовал)?
3. Теория с размером файла конфигурации в 100 кБайт, имеет, пример, показывающий, что это не совсем так.
Прикрепляю проект TestRegsCount2Slave.pro - это проект, полученный из выкладываемого ранее добавлением второго слейва Modbus (slave).
Во втором слейве сейчас сконфигурировано 200 dwordов. Размер пустого проекта (только конфигурация) составляет 122 444 байт, что явно больше 100 кБайт.
Но при этом данный проект успешно работает.
Прошу дать пояснения.
4. Какое ограничение размера конфигурации для ПЛК110 старой модификации (прошивка 2.15.9).

1. Делаете бутпроджект в оффлайне и ищите "Conf" (4 символа). Это начало конфигурации. Далее всё - конфигурация
2. Пока никак
3. С 1 Slave c 999 dword не работает, а ещё 200 - работает?
4. На всех ПЛК размер 100к.

Спорягин Кирилл
25.08.2017, 10:06
3. С 1 Slave c 999 dword не работает, а ещё 200 - работает?

Описываю подробней.
Итак имеем с 998 регистрами (так удобней называть dwordы) работал, с 999 регистрами не работал, до тех пор пока я для проекта с 999 регистрами не удалил имена модулей и каналов, тем самым уменьшив размер конфигурации. Затем я в работающий проект с 999 регистрами добавляю еще одну область Modbus Slave с 200 регистрами (можно попробовать и другие значения). Проверяю размер конфигурации. Она оказывается больше 100 кБ, а именно 122 кБ. Но проект работает. Значит не совсем корректно говорить, что конфигурация должна быть не более 100 кБ. Или еще что-то.
Прошу дать пояснения. Проект с 2 Modbus Slavами прикреплен выше.

Спорягин Кирилл
25.08.2017, 10:07
При 100кБайт контроллер ведёт себя корректно. Всё, что выше, будет вызывать пробьемы. Увеличьте количество переменных, добавьте код и контроллер может отключить отдельные порты, перезагружаться и отказываться подключаться к CODESYS.
Для старых контроллеров ограничение 25кБайт, на сайте это указано.

Сергей, дайте, пожалуйста, ссылку. Не могу найти где это указано.

Филоненко Владислав
25.08.2017, 10:10
Описываю подробней.
Итак имеем с 998 регистрами (так удобней называть dwordы) работал, с 999 регистрами не работал, до тех пор пока я для проекта с 999 регистрами не удалил имена модулей и каналов, тем самым уменьшив размер конфигурации. Затем я в работающий проект с 999 регистрами добавляю еще одну область Modbus Slave с 200 регистрами (можно попробовать и другие значения). Проверяю размер конфигурации. Она оказывается больше 100 кБ, а именно 122 кБ. Но проект работает. Значит не совсем корректно говорить, что конфигурация должна быть не более 100 кБ. Или еще что-то.
Прошу дать пояснения. Проект с 2 Modbus Slavами прикреплен выше.

А Вы 2-й slave проверяли?

Спорягин Кирилл
25.08.2017, 10:24
А Вы 2-й slave проверяли?

Нет, но первый работает (опрос через Modbus Master OPC Server идет), 12 выход "мигает".
Второй слейв не проверял.

Сергей Лысов
25.08.2017, 11:05
Сергей, дайте, пожалуйста, ссылку. Не могу найти где это указано.

Пожалуйста: http://www.owen.ru/catalog/programmiruemij_logicheskij_kontroller_oven_plk_10 0/46885663
Вот информация из РЭ: 32828


Она оказывается больше 100 кБ, а именно 122 кБ. Но проект работает. Значит не совсем корректно говорить, что конфигурация должна быть не более 100 кБ.

С размером конфигурации до 100кБ ПЛК ведёт себя корректно. Всё, что выше используйте на свой страх и риск. О последствиях я уже рассказывал:

При 100кБайт контроллер ведёт себя корректно. Всё, что выше, будет вызывать проблемы. Увеличьте количество переменных, добавьте код и контроллер может отключить отдельные порты, перезагружаться и отказываться подключаться к CODESYS.

Спорягин Кирилл
25.08.2017, 11:32
Бывает не видишь, а оно на самом видном месте)

Но не смотря на некоторую ясность, вопросов по-прежнему много.

1. Все же необходима, ясность. Как это так, размер конфигурации 122 Кб, 12 выход мигает, 998 регистр опрашивается. А потом, я программирую, программирую и раз все перестало работать?
На мой взгляд, необходимо при компиляции или еще где-то (как-то) выдавать сообщение, что конфигурация больше 100 Кб, если она превысила эти размеры.

2. В РП на ПЛК110 М02 на стр. 9 сказано, цитата: "По умолчанию суммарный объем
памяти ввода (%I) и вывода (%Q) установлен равным 16кБ. Этого доста-
точно для большинства задач, но этот объем может быть увеличен поль-
зователем до 32 кБ (на вкладке «Memory Layout» окна «Target Setting», в
строках Input и Output, см. рисунок 2.4)."
Так до 100 Кб или до 32 Кб?

3. Рисунка 2.4 я в РП так и не смог найти.

4. Все равно есть некоторая неточность. Если я конфигурирую 999 регистров по 4 байта, то для меня сконфигурированная область обмена по смыслу равна 999*4 = 3996 байт или 3,9 Кб. Но на деле, ввиду того, что в конфигурации еще масса каких-то дополнительных объявлений эти 3,9 Кб "съедают" все 100 Кб.
Требует пояснений в инструкции.

5. Желательно тогда дать возможность пользователю просто выделять кусок памяти в Modbus Slave, например, через объявление String или Array.

Филоненко Владислав
25.08.2017, 13:37
1. Да, было бы хорошо, но 3S перестала развивать 2-й КоДеСис и теперь только ручками. Но 99% пользователей никогда не добираются до предела.
2. Память I/O и размер конфигурации это 2 абсолютно разные вещи
4. Конфигурация - это описание всего, что вставили в дерево конфигурации, описание гораздо больше данных I/O, формат не "компактный" у КоДеСиса.
5. Welcome to library, young Padawan!

P.S. Второй slave проверьте!

Спорягин Кирилл
25.08.2017, 15:46
1. Да, было бы хорошо, но 3S перестала развивать 2-й КоДеСис и теперь только ручками. Но 99% пользователей никогда не добираются до предела.

1. Второй слейв проверю, но позже (понедельник, вторник). Сейчас не доступен ПК с CoDeSys.
Все же не понятно, как это так, что может работать с конфигурацией больше 100 Кб, а может не работать?
Было бы легче, если бы всегда не работал.



2. Память I/O и размер конфигурации это 2 абсолютно разные вещи


2. Если у меня не получается через конфигуратор организовать 999 регистров (без бубна имеется ввиду) для передачи на верхний уровень, то как я тогда организую 32 Кб памяти I/O.
И разве регистры для передачи на верхний уровень не являются памятью I/O?
Т.е. в РЭ имеется ввиду только I/O, когда ПЛК мастер?




4. Конфигурация - это описание всего, что вставили в дерево конфигурации, описание гораздо больше данных I/O, формат не "компактный" у КоДеСиса.
5. Welcome to library, young Padawan!

3. Подправьте РП, там нет рисунка 2.4.

4. Уж больно не компактный формат у КоДеСиса.

5. Звездным войнам предпочитаю советские фильмы, а потому вопрос:
Для Modbus Masterа можно для модуля добавить String переменную, значит должно быть можно и для слейва.
Разве это зашивается не в таргет файл?
Быть может это решит все вопросы?

Спорягин Кирилл
27.08.2017, 13:35
Провел тест.
В конфигурацию добавлено 2 слейва. 1-й с 999 регистрами (dwordами), второй с 500 регистрами (dwordами).

Размер пустого проекта (только конфигурация) составляет 148 611 байт (см. файл TestRegsCount2SlaveWith1500Regs.rar), что явно больше 100 Кб.

При этом проект прекрасно работает:
1. Из Modbus Master OPC сервера опрашиваются регистры 1-й и 999-й первого слейва, и 1-й и 500-й второго слейва (см. рисунок).
2. "Мигают" четные и нечетные дискретные выходы ПЛК (алгоритм мигания можно понять по коду программы см. "Весь код ПЛК".jpg)
3. После перезагрузки по питанию проект продолжает свою работу (выходы мигают, регистры опрашиваются).

Проект прикрепляю.

Итак, вопрос открытый:
Конфигурация больше 100 Кб, но все работает. Почему?

capzap
27.08.2017, 14:08
Провел тест...
Итак, вопрос открытый:
Конфигурация больше 100 Кб, но все работает. Почему?

потому что М02, например, а документация написана еще под старые контроллеры

Филоненко Владислав
27.08.2017, 14:09
Конфигурация внутри разбирается по логическим частям. Если часть не лезет в 100к - происходит эпик фейл.

Спорягин Кирилл
28.08.2017, 11:51
Конфигурация внутри разбирается по логическим частям. Если часть не лезет в 100к - происходит эпик фейл.

Владислав, тогда требует объяснения следующее.
В работающий проект с 1499 регистрами (dwordами), во второй слейв добавляю еще 499 регистров. Т.е. теперь в проекте 2 слейва с 999 регистрами каждый.
И такой проект уже не загружается (см. рисунок).

Пустая конфигурация с 2 слейвами по 999 регистров весит 196 515 байт (см. *.rar).

Если одна логическая часть с 999 регистрами весит меньше 100 Кб, то и другая должна, а не работает.

Прошу пояснений.

Филоненко Владислав
28.08.2017, 15:43
начали с 999 двордов, теперь уже 2 тысячи.

Кирилл - конфигурация более 100кБ ЗАПРЕЩЕНА и не поддерживается ПЛК. Ежели что-то как-то работает и свыше - радуйтесь. Но не факт что после добавления ещё параметра будет работать. Или после смены прошивки.

P.S. В следующую версию включу совсем жёсткое ограничение размера в 100кБайт. Что сразу рубило под корень. И не было тупых вопросов.

Спорягин Кирилл
28.08.2017, 15:49
P.S. В следующую версию включу совсем жёсткое ограничение размера в 100кБайт. Что сразу рубило под корень. И не было тупых вопросов.

Вот это другое дело!
Раз нельзя так пусть и не грузит.

Но тогда, все же что с возможностью объявления String или Array в Modbus Slave?
В противном случае получается, что 1000 тэгов (а реально меньше) - это предел ПЛК110, без библиотек.

Спорягин Кирилл
30.08.2017, 17:20
Так есть возможность добавить String или Array в Modbus Slave в таргет-файл?

Филоненко Владислав
30.08.2017, 19:27
А зачем? Откуда Вы берете данные на 1000 dword?
Это как минимум (если ПЛК работает как тупой коуплер) - 125 8-ми канальных аналоговых модулей или 1000 32-х канальных дискретных?
Реальные задачи (а не забить лицензию мастерскады) на 1 ПЛК с таким количеством данных - это нонсенс. Даже крупные крейтовые системы стараются сделать с меньшим количеством I/O.
32000 дискретных сигналов, это весть конвейер Автоваза раз 10 туда поместится! или 3-4 Ростовские АЭС (по 4 блока).

Мало получить эти 1000 двордов/флоатов - надо ещё их обработать. если условно взять 20 операций на дворд (что соответствует простейшей аварийной логике), получается 20000 операций или 80 кБайт кода.
Учитывая размер данных и кода в кэш мы не попадаем - 250мкс на обработку всех I/O только в режиме если дворд!=0 - включить сирену.
А ежели 1000 ПИД-регуляторов запустить? Тут и Corei7 может поплохеть.

Так что границы применимости ПЛК по конфигурации и размеру I/O и так находятся далеко за пределами здравого смысла.
А уж ежели ПЛК, работающий с 32к DI/DO или с 1000 AI/AO вдруг откажет (топор в щит прилетит), последствия увидят на орбите.

Не надо делать таких монстров, стройте распределённую систему.

Ведь сейчас, сделав 1-й шаг и выведя 2к двордов в скаду вы получите ТЗ на их обработку, опрос и т.п. и внезапно окажется, что ПЛК не тянет такое количество лог. операций.

Спорягин Кирилл
31.08.2017, 10:21
А зачем? Откуда Вы берете данные на 1000 dword?
Это как минимум (если ПЛК работает как тупой коуплер) - 125 8-ми канальных аналоговых модулей или 1000 32-х канальных дискретных?
Реальные задачи (а не забить лицензию мастерскады) на 1 ПЛК с таким количеством данных - это нонсенс. Даже крупные крейтовые системы стараются сделать с меньшим количеством I/O.
32000 дискретных сигналов, это весть конвейер Автоваза раз 10 туда поместится! или 3-4 Ростовские АЭС (по 4 блока).

Мало получить эти 1000 двордов/флоатов - надо ещё их обработать. если условно взять 20 операций на дворд (что соответствует простейшей аварийной логике), получается 20000 операций или 80 кБайт кода.
Учитывая размер данных и кода в кэш мы не попадаем - 250мкс на обработку всех I/O только в режиме если дворд!=0 - включить сирену.
А ежели 1000 ПИД-регуляторов запустить? Тут и Corei7 может поплохеть.

Так что границы применимости ПЛК по конфигурации и размеру I/O и так находятся далеко за пределами здравого смысла.
А уж ежели ПЛК, работающий с 32к DI/DO или с 1000 AI/AO вдруг откажет (топор в щит прилетит), последствия увидят на орбите.

Не надо делать таких монстров, стройте распределённую систему.

Ведь сейчас, сделав 1-й шаг и выведя 2к двордов в скаду вы получите ТЗ на их обработку, опрос и т.п. и внезапно окажется, что ПЛК не тянет такое количество лог. операций.



Владислав, эта тема уже ни раз обсуждалась.

Поясняю.

На каждый аналоговый вход в СКАДе я создаю 10 тэгов:
1. Текущее значение;
2. Минимум диапазона датчика;
3. Максимум диапазона датчика (п. 2-3 позволяют менять датчик например с 0-6 атм на 0-10 атм и ничего не перепрошивать, только в СКАДе поменять диапазон);
4. Верхняя критическая граница;
5. Верхняя предупредительная граница;
6. Нижняя предупредительная граница;
7. Нижняя критическая граница (п. 4-7 позволяют мне в контроллере формировать признаки выхода за границы и по ним строить технологические алгоритмы);
8. Гистерезис снятия тревог;
9. Тревога (битовая маска тревог выработанных в ПЛК и переданных на ВУ);
10. Маска ввода/вывода технологических границ.

Таким образом 1000 тэгов - это все лишь 100 аналоговых датчиков.
У меня в системе, о которой идет речь, их 57.

Но зато еще есть 14 насосов с частотными преобразователями, для каждого из них я передаю в СКАДу 10 тэгов:
1. Состояние (включен, выключен, включается, выключается);
2. Режим (Автоматический, ручной, от пульта ЧП и т.п.);
3. Текущая частота;
4. Заданная частота;
5. Наработка насоса;
6. Тревога (ошибки ЧП и прочее);
7. Команда (включить, выключить, сбросить тревоги);
8. Коэф. П;
9. Коэф. И;
10. Коэф. Д (п. 8-10 для работы ПИД-регулятора).

Таким образом у меня 57 датчиков и 14 насосов - это уже 710 тэгов.
Цикл старого ПЛК110 при обработке 57 датчиков, 14 насосов и прочей технологической логики - 7 мс.

Спорягин Кирилл
31.08.2017, 10:35
Дополню.

Есть проекты, которые успешно работают, когда в конфигурации в Modbus Slave у меня создано 230 Dword.
Я не ожидал, что увеличение с 230 до 950 будет проблемой.

Спорягин Кирилл
31.08.2017, 10:40
А то как же Владислав, я Союзом-то управлять буду (http://www.owen.ru/forum/showthread.php?t=22002&page=11&p=207260&viewfull=1#post207260).

capzap
31.08.2017, 10:58
А то как же Владислав, я Союзом-то управлять буду (http://www.owen.ru/forum/showthread.php?t=22002&page=11&p=207260&viewfull=1#post207260).

в показанных Вами структурах половина тегов будет менятся раз в жизни. Даже если датчик какой то решили сменить, его диапазоны не поменяются от запроса к запросу, чтоб постоянно их передавать. Часть показаний вобще дальше скады может не уходить, архивирование, сигнализация всё это гораздо удобнее делать на ПК, а не в контроллере.
Вам пытаются объяснить что путешествовать из Москвы во Владивосток удобнее на самолете, а не пешком, а Вы доказываете что мы вживем в свободной стране что хочу то и делаю

Спорягин Кирилл
31.08.2017, 10:59
Capzap, Вы не правы.

capzap
31.08.2017, 11:14
Я работаю через бибки, в моем распоряжении чуть больше 65 тысячи регистров для тегов, продолжайте искать свой предел через конфигуратор. За это время уже можно давно было перестроить свою программу и иметь ограничения только стандарта протокола

ЗЫ обед закончился, продолжу
в конфигураторе можно держать одну структуру для аналогово входа и одну для ПСЧ, дополнительно два регистра. В плк создать два массива структур, в скаде открыв окно для редактирования входа или псч, в контроллер посылается сигнал, изменяющий соответствующий регистр, по нему в слейв из программы пишется требуемый элемент массива, после редактирования либо по кнопке сохранить(подтверждение всегда являлось дополнительной безопасностью, защитой от дурака), либо по закрытию окна посылается обнуление регистра, по которому в программе плк из слейва записывается измененная структура в массив. Подобным способом я сокращу Ваш конфигуратор как минимум в 50 раз

Как видите можно пойти как по сокращению элементов, так и увеличению

Филоненко Владислав
31.08.2017, 11:51
1. 99% всех задаваемых параметров легко упаковываются
2. Выносить всё в скаду - зачем Вам ПЛК тогда, управляйте из скады напрямую модулями расширения.
Любая система управления - это пирамида и на вершину идёт 3-5% информации. Для настроек лучше иметь доступ к проекту, чем рулить горой параметров по ModBus.
Ну и как правильно заметили, для таких объёмов воспользуйтесь библиотекой, не придётся сканировать каждый цикл все 2000 параметров в поисках "что же поменялось..."

Спорягин Кирилл
31.08.2017, 12:13
Я работаю через бибки, в моем распоряжении чуть больше 65 тысячи регистров для тегов, продолжайте искать свой предел через конфигуратор. За это время уже можно давно было перестроить свою программу и иметь ограничения только стандарта протокола

ЗЫ обед закончился, продолжу
в конфигураторе можно держать одну структуру для аналогово входа и одну для ПСЧ, дополнительно два регистра. В плк создать два массива структур, в скаде открыв окно для редактирования входа или псч, в контроллер посылается сигнал, изменяющий соответствующий регистр, по нему в слейв из программы пишется требуемый элемент массива, после редактирования либо по кнопке сохранить(подтверждение всегда являлось дополнительной безопасностью, защитой от дурака), либо по закрытию окна посылается обнуление регистра, по которому в программе плк из слейва записывается измененная структура в массив. Подобным способом я сокращу Ваш конфигуратор как минимум в 50 раз

Как видите можно пойти как по сокращению элементов, так и увеличению

Способ известный. Помню, когда был ограничен лицензией WinCC, использовал его. Хотя он имеет свои недостатки и дополнительные усилия при создании системы.
Но сейчас уже проект сделан под другую структуру (идеологию).

Спорягин Кирилл
31.08.2017, 12:16
1. 99% всех задаваемых параметров легко упаковываются
2. Выносить всё в скаду - зачем Вам ПЛК тогда, управляйте из скады напрямую модулями расширения.
Любая система управления - это пирамида и на вершину идёт 3-5% информации. Для настроек лучше иметь доступ к проекту, чем рулить горой параметров по ModBus.
Ну и как правильно заметили, для таких объёмов воспользуйтесь библиотекой, не придётся сканировать каждый цикл все 2000 параметров в поисках "что же поменялось..."

1. Что-то упаковать можно. Я бы оценил возможности сокращения тэгов в 20-30% не больше.
2. СКАДА, для отображения, архивации, сигнализации. Но все настройки доступны пользователю! Думал, что это прогрессивный способ. А оказывается, что нет. Нужно поменять настройку ?! Будь любезен подключайся к ПЛК и из среды программирования и меняй.

Crusash
31.08.2017, 14:41
Владислав, эта тема уже ни раз обсуждалась.

На каждый аналоговый вход в СКАДе я создаю 10 тэгов:
1. Текущее значение;
.....
10. Маска ввода/вывода технологических границ.

....


Реализую термоцикл: один шаг это - температура, время выхода, выдержка - и того 3 ворда (это если без влаги и битовой маски комутаций, тогда еще 2 ворда).
99 программ и 99 шагов в одной программе и того - 3 х 99 х 99 = 29403 слова.

Оператор соответственно имеет доступ к любому шагу любой программы, но по вашей логике я для этого должен реализовать обмен ПЛК с HMI минимум в 29403 регистра.
как то это больно не реально!
и не правильно.

вместо этого я за раз предоставляю доступ к пяти шагам и у меня получается: 3 х 5 + 1 номер страницы + 1 номер программы = 17 регистров вместо 29403.
ранее делал реализацию где за раз доступ предоставляется тока к одному шагу и того получалось: 3 регистра шага + 1 номер шага +1 номер программы= 5 регистров...

Crusash
31.08.2017, 14:52
1. Что-то упаковать можно. Я бы оценил возможности сокращения тэгов в 20-30% не больше.


8 регистров настройки + 1 номер настраиваемого датчика = 9 регистров (ну пусть десять с командным регистром записи/чтения).
100 регистров на температуру + 100 регистров на аварии по датчикам + 10 регистров для настройки = 210 регистров. и того сокращение на 79%

Это если не объединять температуру и аварию в одном регистре...

Спорягин Кирилл
01.09.2017, 15:06
Все же тема о том, сколько можно сэкономить тэгов не совсем та, которую я хочу обсуждать.

В предельном случае все настройки системы можно вообще передать в 3-4 тэгах. В качестве примера можно привести ТРМ, где с помощью 2 окошек и пары кнопок настраиваются все параметры ТРМ (программы, ПИД-регуляторы и т.д.).
Я с этим не спорю. Но у того способа, который описал я чуть выше (где на каждый элемент в системе используется 5-10 тэгов), есть свои преимущества.

Сведу свои вопросы к 2-м.

1. Теоретический.
Все же не понимаю, почему нельзя добавить в Modbus Slave переменную типа string, на подобии той, которая есть в Modbus Master. С помощью переменной string в Modbus Mastere можно успешно опрашивать группы регистров (см. тут (http://www.owen.ru/forum/showthread.php?t=21799&highlight=string+%EE%EF%F0%EE%F1)).
На мой взгляд, это бы решило проблему, когда 4 Кб осмысленных данных "съедают" все 100 Кб конфигурации. И не пришлось бы спорить о том, сколько тэгов нужно.

2. Практический.
30.08.17 вечером отправил в тех. поддержку письмо, где описал, что для старого ПЛК110 уже с 450 dwordами в конфигурации контроллер реального объекта отказывался работать. При этом файл конфигурации был меньше 100 Кб.
Прошу пояснить и дать рекомендации. Хотелось бы ужиматься в максимальное число dwordов.

Филоненко Владислав
01.09.2017, 17:29
ПЛК110М02 появился как раз по тому, что старый уже не справлялся с задачами.