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

Тема: примеры для программирования

  1. #21

    По умолчанию Спасибо!

    Все получилось!

  2. #22
    Пользователь
    Регистрация
    23.04.2009
    Адрес
    Чеченская респ., с. Чири-Юрт
    Сообщений
    128

    По умолчанию

    Здравствуйте всем!
    Никто не подскажет мне, как будет выглядеть "записать в канал команду 00FF?" Необходимо подключить к ПЛК110 4 модуля тензодатчиков Seneca Z-CG. Чтобы как-то увеличить быстродействие, предполагаю в разных шагах цикла программы орпашивать только соответствующие датчики. Это можно сделать?
    Спасибо

  3. #23

    Smile Мой вариант

    Я бы сделал так как во вложении. Показано и для протокола овен и модбас.
    Пишиш в переменную 255 и опрос останавливается :-)
    Изображения Изображения
    Автоматизация Диспетчеризация Сервис
    e-mail: ads-kaluga@mail.ru

  4. #24
    Пользователь
    Регистрация
    23.04.2009
    Адрес
    Чеченская респ., с. Чири-Юрт
    Сообщений
    128

    По умолчанию

    Благодарю!

  5. #25

    По умолчанию

    Я делал так:
    2 слэйва (для примера). Можете добавить нужное количество. Мастером опрашивается только тот(те), который(е) "в работе", т.е. подключены и связь с ними установлена.
    С остальными раз в секунду проверяется "контакт".

    (*Конфигурация*)
    LastAddress: DWORD;
    LastError: WORD;
    Command1:BYTE; (*1-ый девайс, Address1, Work mode:By command*)
    Command2:BYTE; (*2-ой девайс, Address2, Work mode:By command*)

    (*POU*)
    VAR
    LastError1, LastError2: WORD;
    Timer1, Timer2:TON;
    Pause:TIME:=t#1s;
    END_VAR

    CASE LastAddress OF
    1: LastError1:=LastError;
    2: LastError2:=LastError;
    END_CASE

    IF LastError1=0 THEN Command1:=255;
    ELSIF LasrError1<>0 THEN Timer1(IN:=Command1=0,PT:=Pause);
    IF Timer1.Q THEN Timer1(IN:=FALSE); Command1:=255; END_IF
    IF LastAddress=1 THEN
    IF LastError=0 THEN LastError1:=0; END_IF
    END_IF
    ELSE Command1:=254;
    END_IF

    IF LastError2=0 THEN Command2:=255;
    ELSIF LasrError2<>0 THEN Timer2(IN:=Command2=0,PT:=Pause);
    IF Timer2.Q THEN Timer2(IN:=FALSE); Command2:=255; END_IF
    IF LastAddress=2 THEN
    IF LastError=0 THEN LastError2:=0; END_IF
    END_IF
    ELSE Command2:=254;
    END_IF

    P.S. Думаю, можно сделать код более "компактным". Но писалось в спешке, однако уже пару лет работает. Удачи!

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

Ваши права

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