Показано с 1 по 7 из 7

Тема: Функциональный блок, как сетевая переменная

  1. #1
    Пользователь Аватар для Солнечный заяц
    Регистрация
    16.08.2009
    Адрес
    г. Рыбинск, Яр.обл.
    Сообщений
    209

    Question Функциональный блок, как сетевая переменная

    Здравствуйте.
    Упрощенно опишу систему:
    2 контроллера плк110: ведущий и ведомый. На ведомом вызывается функциональный блок (ФБ) с десятком входов и выходов, объявленный как сетевая переменная. Ведущий должен записывать на входы этого ФБ данные и читать информацию с выходов.
    Я создаю папку с этой сетевой переменной (сетевым ФБ) с галками на чтение и запись в обоих контроллерах.
    Т.е. входы ФБ записывает ведущий, - читает ведомый. Выходы наоборот.
    Т.о. наложений данных быть не должно. Но будет ли это работать? И нет ли каких подводных камней?
    Например при присваивании значения входу ФБ "FBlock(in_1:=true)" будет производиться вызов этого блока на ведущем контроллере, хотя некоторые его (блока) выходы привязаны к физическим выходам ведомого контроллера...

    П.С.
    Можно конечно было бы наобъявлять кучу переменных, которые присвоить входам и выходам ФБ, но это дополнительная трата веремени и ухудшение читаемости проекта.
    Последний раз редактировалось Солнечный заяц; 03.06.2011 в 10:35.

  2. #2
    Пользователь
    Регистрация
    11.01.2009
    Адрес
    Кострома
    Сообщений
    3,144

    По умолчанию

    Соедините как в примере по UDP и создайте общую область данных.
    Все будет работать.

  3. #3
    Пользователь Аватар для Солнечный заяц
    Регистрация
    16.08.2009
    Адрес
    г. Рыбинск, Яр.обл.
    Сообщений
    209

    По умолчанию

    Цитата Сообщение от lara197a Посмотреть сообщение
    Соедините как в примере по UDP и создайте общую область данных.
    Все будет работать.
    Про пример с UDP все понятно. Но что значит создание общей области данных? Создание дополнительного листа сетевых переменных? Или какое то другое выделение памяти?

  4. #4
    Пользователь
    Регистрация
    11.01.2009
    Адрес
    Кострома
    Сообщений
    3,144

    По умолчанию

    у вас будут переменные, общие для обоих контроллеров.
    Делайте с ними. что угодно.
    Я пробовал так с 3 контроллерами. Первый давал значение второму, ВТОРОЙ ТРЕТЬЕМУ, а третий передавал значения в первый.

  5. #5
    Пользователь Аватар для Солнечный заяц
    Регистрация
    16.08.2009
    Адрес
    г. Рыбинск, Яр.обл.
    Сообщений
    209

    По умолчанию

    Не рекомендую использование функциональных блоков в качестве сетевых переменных с разрешением одновременных чтения и записи.
    Обмен производился с передачей по изменению данных и минимальным интервалом передачи 1 сек. При старте контроллеров события развивались по одному из 2-х сценариев:
    1. Обмен сетевыми переменными функциональных блоков не происходил (восстановился сам по себе примерно через 10 минут)
    2. Происходило наложение противоречивых данных на выходные сигналы функциональных блоков. Вероятно из-за вызова одного и того же ФБ на разных контроллерах с разными входными сигналами или задержек передачи сигнала. (Технологически опасно. Приходилось останавливать выполнение программы).

    Обмен остальными сетевыми переменными происходил нормально всегда. Рекомендовал бы использовать сетевые ФБ с разрешением либо на запись, либо на чтение, а сигналы противоположного направления организовать через промежуточные переменные.

  6. #6

    По умолчанию

    Объясните, каков смысл передачи всего ФБ? Все равно вам нужен результат работы ФБ. Скажем если еще его входы нужны, заведите их тоже в сетевые переменные. А смысл ФБ передавать, я не вижу.

  7. #7
    Пользователь Аватар для Солнечный заяц
    Регистрация
    16.08.2009
    Адрес
    г. Рыбинск, Яр.обл.
    Сообщений
    209

    По умолчанию

    Проще программировать, и легче читать программу потом. У функционального блока десяток входов и десяток выходов и самих ФБ 7 штук, итого: 140 переменных. Вот и получается, что проще объявить 7 ФБ как сетевые переменные (даже не объявить, а переместить из листа глобальных переменных в лист сетевых), чем создавать 140 дополнительных переменных.

    UPD.
    Хотя есть один вариант: переделать ФБ так, чтобы у него на входе и выходе было по одной структуре. Получится по 2-е структуры на 1 ФБ, итого 14 объявлений в нашем случае...
    Последний раз редактировалось Солнечный заяц; 06.07.2011 в 08:29.

Ваши права

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