Страница 3 из 3 ПерваяПервая 123
Показано с 21 по 28 из 28

Тема: Как разместить адресное пространство MODBUS в энергонезависимой области ПЛК?

  1. #21

    По умолчанию

    1exan
    Цитата Сообщение от 1exan Посмотреть сообщение
    Ну, размещение структуры в Slave-переменных - тоже по сути, прямая адресация.
    Я сделал не так (в исходном сообщении ранее показано): я назначил переменную на самый первый регистр и подставляю структуру по её адресу через ADR. То есть, если адрес этой переменной изменится, ADR() всё автоматически подсчитает. Руками править ничего не надо.
    Цитата Сообщение от 1exan Посмотреть сообщение
    В CDS2.3 есть ещё такая штука как "bitaccess". Но мне это показалось несколько замороченным способом обращения с битами
    Ой! Так я ж через это и сделал, если мы про одно и то же: через именованные биты.
    Валенок
    Цитата Сообщение от Валенок Посмотреть сообщение
    Пройдет некоторое время и маска аварий будет формироватся тупо одном месте
    BitsAlarmsMain, BitsAlarmsDevices превратятся просто в Alarm[1..XX], т.к. достаточным комментарием будет путь к источнику (а не в приемник)
    А имена битов аварий уйдут как страшный сон т.к. смысла в именах для юзания в одном месте не будет.
    Так я бы и номера битов в массие бы тоже константами окучил бы. Чтобы красиво было.
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net

  2. #22

    По умолчанию

    Цитата Сообщение от Cs-Cs Посмотреть сообщение
    я бы и номера битов в массие бы тоже константами окучил бы. Чтобы красиво было.
    Просто вы работаете с малыми проектами, а там где механизмов 1000 и более, а ещё и scada сторонняя, то удобнее делать массив как alarm[i].
    А кроме этого ещё и статусы и прочее. Да, когда всё расписано, удобно, согласен, но когда всё как массив, то это позволяет код из 2000 строк свернуть в код до 50 строк. А работоспособный код нет смысла менять, он уже опробован на живучесть и его проще переносить на другие объекты ничего в нём не меняя. Главное файл ексель не потерять, где всё расписано)

  3. #23

    По умолчанию

    МихаилГл
    Цитата Сообщение от МихаилГл Посмотреть сообщение
    удобнее делать массив как alarm[i].
    О чём идёт речь? Массив структур-объектов? Или прям подряд массив типа "10 тревог объекта 1, 10 тревог объекта 2"?
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net

  4. #24

    По умолчанию

    Цитата Сообщение от Cs-Cs Посмотреть сообщение
    МихаилГл
    О чём идёт речь? Массив структур-объектов? Или прям подряд массив типа "10 тревог объекта 1, 10 тревог объекта 2"?
    Mec(i).Alarm(j) я реализую так. Куча механизмов с другой кучей аварий именно этого механизма. Сейчас у меня например 32 типа аварии на механизм, ограничено только из-за modbus формата работы с панелью СП315, а так можно и больше. Но пока хватает 32 (механизм не запустился, не остановился, не сошёл с концевого при запуске..., выбило автомат какой либо, силовой или цепей автоматики, сработал датчик защиты и пр. с выдержкой времени или без).
    Кроме того в программе добавлены массивы вывода из работы соответствующих защит, квитирования и пр.

    Просто мне удобней видеть программу, ужатую до 3..4 циклов с минимумом строк.

    У меня механизм это структура, которая в зависимости от количества сама как массив. А внутри структуры массив аварий и прочих элементов.

  5. #25

    По умолчанию

    МихаилГл Блин, так мы об одном и том же. Массив структур или массив массивов. Всё ОК, мысль принята.
    Но это не отменяет того, что надо нормально именовать все объекты. Вот эта вот советская школа програмирования с i, j, k - меня тошнит от этого.
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net

  6. #26

    По умолчанию

    Цитата Сообщение от Cs-Cs Посмотреть сообщение
    МихаилГл Блин, так мы об одном и том же. Массив структур или массив массивов. Всё ОК, мысль принята.
    Но это не отменяет того, что надо нормально именовать все объекты. Вот эта вот советская школа програмирования с i, j, k - меня тошнит от этого.
    Кстати, о массиве структур. У rockwell, например, если делать каждый булевый элемент значимым, то структура по объему памяти занимает кратное вордовскому значение. Ввели в структуру 1 буль, структура 32 буля минимум стала, поэтому или завести ещё 31 буль, чтоб использовать тот же объем, или просто массив воткнуть из 32 булей. Не знаю как ведёт себя кодесис.

  7. #27

    По умолчанию

    Cs-Cs
    Спасибо огромное за разъяснение. Всё понятно и доступно.

  8. #28

    По умолчанию

    Цитата Сообщение от Васильев Посмотреть сообщение
    Cs-Cs
    Спасибо огромное за разъяснение. Всё понятно и доступно.
    Пожалуйста! Мне ОЧЕНЬ приятно это слышать!
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net

Страница 3 из 3 ПерваяПервая 123

Похожие темы

  1. Ответов: 9
    Последнее сообщение: 04.06.2019, 09:38
  2. Ответов: 9
    Последнее сообщение: 19.07.2016, 13:00
  3. адресное простраество OPM
    от lis471 в разделе OWEN Proces Manager
    Ответов: 3
    Последнее сообщение: 23.04.2014, 13:02
  4. Ответов: 4
    Последнее сообщение: 15.02.2010, 06:55

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •