Начну с постановки задачи. Их вообще-то несколько, но решаться они будут идентично.
Ко мне приходит по 104-му мэку ~400 управляющих сигналов. Причем приходит тупо "1".
Надо:
1. Сигналы, идущие на DOUT16-T80 сбрасывать в "0" через 2 секунды.
2. Вместо "1", идущих на RTU2 записывать в них импульс (2).
3. Некоторые сигналы подавать на два выхода.
4. Все сигналы управления проводить через логический элемент "И", где второй вход - разрешение управления.
Т.о. имеем кучу сигналов, которые нужно проводить через одинаковую логику.
Экземпляров компонентов я могу добавить только 16 (да это и неудобно).
Идеально было бы сделать компонент, выглядящий в конфигураторе аналогично "Авто-Алгоритмы" - "Имульсы1", т.е. чтобы этот компонент конфигурировался таблицей с полями "входной дискрет", "разрешающий дискрет", "импульс", "выход1", "выход2", и можно было бы добавлять свои строки в любом количестве.
Реальны ли мои хотелки?
Может у кого-то другие идеи появятся? А то городить компонент с четырехстами одинаковыми диаграммами как-то влом...
Вопросы по Разработчику
Прочесал весь форум - нашел как писАть импульс в DOUT16. Почему до сих пор это не описано в документации?
Есть идея блокировать управление через блокировку базы-клиент. НО: в параметрах связи блокировка прописывается для всего сервера. Почему нельзя было сделать блокировку для списков номеров по отдельности (предлагаю в таблице параметры связи заменить столбец "Сервер" на столбец "Список номеров", или просто добавить его с дефолтным значением "не используется" или "0").
Еще пожелание в руководство для чайников добавить существующий там примерчик, только реализованный на С.
Есть идея блокировать управление через блокировку базы-клиент. НО: в параметрах связи блокировка прописывается для всего сервера. Почему нельзя было сделать блокировку для списков номеров по отдельности (предлагаю в таблице параметры связи заменить столбец "Сервер" на столбец "Список номеров", или просто добавить его с дефолтным значением "не используется" или "0").
Еще пожелание в руководство для чайников добавить существующий там примерчик, только реализованный на С.
lifcey писал(а):Есть идея блокировать управление через блокировку базы-клиент. НО: в параметрах связи блокировка прописывается для всего сервера. Почему нельзя было сделать блокировку для списков номеров по отдельности (предлагаю в таблице параметры связи заменить столбец "Сервер" на столбец "Список номеров", или просто добавить его с дефолтным значением "не используется" или "0").
Базу-клиент можно использовать, если команды по МЭК приходят в один контроллер, а модули подключены к другому контроллеру. Для индивидуальной блокировки списков предназначен аналог "Текущий период" в таблице "Каталог списков". Но такое решение как то не кажется универсальным и надежным.
lifcey писал(а):Начну с постановки задачи. Их вообще-то несколько, но решаться они будут идентично.
Ко мне приходит по 104-му мэку ~400 управляющих сигналов. Причем приходит тупо "1".
Надо:
1. Сигналы, идущие на DOUT16-T80 сбрасывать в "0" через 2 секунды.
2. Вместо "1", идущих на RTU2 записывать в них импульс (2).
3. Некоторые сигналы подавать на два выхода.
4. Все сигналы управления проводить через логический элемент "И", где второй вход - разрешение управления.
п.1 и 2. Компонент МЭК умеет сам формировать импульсы вместо простой записи "1" (подробно описано в справке к таблице "Прием ТУ")
п.3 один сигнал размножать на много выходов удобно в компоненте "Обработка дискретов", просто для одного дискрета надо прописать несколько строк в таблице "Выходные дискреты".
А вот с п.4 сложнее. Надо делать компонент "Разработчика".
Т.о. имеем кучу сигналов, которые нужно проводить через одинаковую логику.
Экземпляров компонентов я могу добавить только 16 (да это и неудобно).
Идеально было бы сделать компонент, выглядящий в конфигураторе аналогично "Авто-Алгоритмы" - "Имульсы1", т.е. чтобы этот компонент конфигурировался таблицей с полями "входной дискрет", "разрешающий дискрет", "импульс", "выход1", "выход2", и можно было бы добавлять свои строки в любом количестве.
Реальны ли мои хотелки?
Может у кого-то другие идеи появятся? А то городить компонент с четырехстами одинаковыми диаграммами как-то влом...
Компонент с огромным кол-вом диаграмм делать не надо. Если диаграмма не использует внутренних переменных, лучше сделать цикл. Тогда конфигурационные данные могли бы выглядеть так:
"разрешающий дискрет"
"Первый входной дискрет"
"Количество"
"Первый выходной дискрет"
...
Но дискреты (входные, выходные...) должны лежать по известному компоненту правилу (например, подряд).
Когда добавите пример на С, отпишите на форум, пожалуйста.
За идею размножения сигналов через обработку дискретов, СПАСИБО. Я, правда, уже сделал через автоалгоритмы, но Вашим путем немного проще, да менее ресурсоемко.
С п.4 дело хуже - так уж сложилось (не по моей воле), что управляющие дискреты перемешаны с ТС, но за идею использования циклов спасибо. Буду ковырять, если что - продолжу Вас доставать ))
За идею размножения сигналов через обработку дискретов, СПАСИБО. Я, правда, уже сделал через автоалгоритмы, но Вашим путем немного проще, да менее ресурсоемко.
С п.4 дело хуже - так уж сложилось (не по моей воле), что управляющие дискреты перемешаны с ТС, но за идею использования циклов спасибо. Буду ковырять, если что - продолжу Вас доставать ))
Могу скинуть ряд компонентов мною писаных на си , для проверки большого кол-ва дискретов, например дискретов связи или ещё каких...
есть следующие :
"ноль в группе"
входные параметры, дискрет начала / и конца
выдаёт еденицу если в диапазоне дискретов есть ноль, удобно проверять дискреты связи
"еденица в группе" тоже что и в предыдущем но наоборот.
"До первого" входные параметры, что ищем, начало и конец, на выходе номер найденого
проверяет диапазон и если находит соответсвующий то возвращает номер иначе ноль...
так же есть и другие .. вообще пора депу ораганизавать секцию для залитвки и обмена...
ещё есть компонент, дял создания интересного меню... тока чтото работать перкестал в новом дистрибутиве, но будем думать над его ремонтом.
есть следующие :
"ноль в группе"
входные параметры, дискрет начала / и конца
выдаёт еденицу если в диапазоне дискретов есть ноль, удобно проверять дискреты связи
"еденица в группе" тоже что и в предыдущем но наоборот.
"До первого" входные параметры, что ищем, начало и конец, на выходе номер найденого
проверяет диапазон и если находит соответсвующий то возвращает номер иначе ноль...
так же есть и другие .. вообще пора депу ораганизавать секцию для залитвки и обмена...
ещё есть компонент, дял создания интересного меню... тока чтото работать перкестал в новом дистрибутиве, но будем думать над его ремонтом.