Показано с 1 по 10 из 44

Тема: работа несколько функциональных блоков (PID_FUNCTION) на ПЛК110-60 М2

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #26

    По умолчанию

    Цитата Сообщение от Евгений Пашигоров Посмотреть сообщение
    Пунктом "Очистить все" действительно, я не пользуюсь (даже не знаю, что он делает). Всегда делаю "Компилировать все".

    Непонятная мне необходимость в указателях! А зачем они вам?
    Чтобы можно было оперировать не целиком данными, а указателями на них, но это достаточно сложное для понимания колдунство. Утрированный пример таков: есть два человека в отеле, которые хотят поговорить (обменяться данными), и можно их друг с другом свести лицом к лицу т.е. доставить целиком человека из одного номера в другой, материально переместить, и есть телефонистка, которая может просто соединить телефонное гнездо первого человека с телефонным гнездом второго человека, и произойдёт передача данных от одного человека к другому. Указатели используются для достижения полиморфизма, когда вам, грубо говоря, не важен сам человек, а важен человек в том номере, с которым соединит телефонистка, а будет там мужчина, женщина или ребёнок не так принципиально, утрировано как-то так.

    Частный случай использования указателей, как принципиального способа структурирования данных - это массивы.
    И тогда ваша запись вида:
    Код:
    PROGRAM temperature_ctrl
    VAR
    	pwm1chan,
    	pwm2chan,
    	pwm3chan,
    	pwm4chan,
    	pwm5chan,
    	pwm6chan,
    	pwm7chan,
    	pwm8chan: PWM_B;
    END_VAR
    превращается в:
    Код:
    pwmchan: array[1..8] of PWM_B;
    А конструкция вида:

    (
    Код:
    *формируем код устройства*)
    ...
    panel_error1 :=
    BOOL_TO_INT(cmd_l_mould_forw OR cmd_l_mould_back
    	OR cmd_l_mould_open OR cmd_l_mould_close) * 1 +		(*левая форма*)
     BOOL_TO_INT(cmd_r_mould_forw OR cmd_r_mould_back
    	OR cmd_r_mould_open OR cmd_r_mould_close) * 2 +	(*правая форма*)
    BOOL_TO_INT(cmd_screw_rising OR cmd_screw_lower) * 4 +...	(*шнек*)
     ...
    Превращается в:
    Код:
    panel_error1.0:=cmd_l_mould_forw OR cmd_l_mould_back OR cmd_l_mould_open OR cmd_l_mould_close;
    panel_error1.1:=cmd_r_mould_forw OR cmd_r_mould_back OR cmd_r_mould_open OR cmd_r_mould_close;
    ...
    т.е. не целиком числовые значения перемещать, переммножать и суммировать в переменные, а работать напрямую с битами.
    Последний раз редактировалось Parovoz; 01.04.2021 в 06:50.

Похожие темы

  1. Написание функциональных блоков
    от bobovich в разделе Среда программирования OWEN Logic
    Ответов: 10
    Последнее сообщение: 11.11.2020, 17:35
  2. Ответов: 15
    Последнее сообщение: 25.06.2020, 11:42
  3. Макс. число функциональных блоков
    от diman_ob_304 в разделе Программируемые реле
    Ответов: 3
    Последнее сообщение: 18.10.2017, 00:31
  4. Ответов: 1
    Последнее сообщение: 27.04.2017, 21:07
  5. Ответов: 13
    Последнее сообщение: 10.07.2009, 17:21

Ваши права

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