Когда происходит обмен с WinCC в цикле
контроллера?
Иван Жуков;
26.3.03
Приветствую!
кто-нибудь знает, в какие моменты времени происходит запись данных
в DB из WinCC? Ситуация такая: Есть блок DB1, к которому привязаны
теги WinCC. Этот блок для обработки копируется в другой блок DB2,
после того как обработка завершена, содержимое DB2 копируется
обратно в DB1. Манипуляции с копированием и обработкой производятся
в FC, вызываемой из OB1. Не спрашивайте, зачем это нужно - долго
объяснять - говоря кратко, это делается для экономии памяти. Так
вот: может ли оказаться так, что пока данные блока DB1 находятся в
DB2, в этот момент вклинится обмен с WinCC, который обновит DB1,
после чего DB2 будет скопировано обратно в DB1, при этом обновления
сделанные WinCC в DB1 _БУДУТ_ЗАТЕРТЫ_?
Re: Когда происходит обмен с WinCC в цикле
контроллера?
Чистяков Дмитрий "СеверСталь"; 26.3.03
WinCC использует прямой доступ коммуникационного процессора
контроллера к памяти в CPU. Таким образом образуется свой цикл,
который примерно равен циклу обмена по сети или (если мало данных)
циклу, установленному на обновление тэгов.
Таким образом достигается асинхронная работа системы управления
(контроллер) и системы визуализации. Что в свою очередь увеличивает
надёжность этих систем по раздельности за счёт независимости одной
подсистемы от другой.
Re: Когда происходит обмен с WinCC в цикле
контроллера?
Иван Жуков;
28.3.03
Это плохо. И нет никакого способа ввести синхронизацию - т.е.
программно со стороны контроллера регулировать доступ извне к его
памяти? Хотелось бы, чтобы WinCC производила обмен не когда попало,
а откладывала его до определенного момента (допустим пока не
установлен какой-то бит). Такой возможности нет?
Второй вопрос: как работает процессор контроллера S7-300 -
предположим я делаю операцию AND на каком-то байте в памяти, это
будет операция атомарная? Т.е. может ли этот байт быть измененен
внешним обменом с WinCC до окончания операции AND?
Re: Когда происходит обмен с WinCC в цикле
контроллера?
Илья;
1.4.03
Есть разница в коммуникациях S7-300 (кроме 318 CPU)и S7-400. В 300
все коммуникации - по завершению цикла. В 400 коммуникации
вклиниваются в выполнение программы. Бывает ситуация, когда народ
пишет FB по обработке чего-либо и в параметр RESULT_VALUE пишет
промежуточные значения. Этот параметр привязывается к тэгу WinCC. В
результате у оператора периодически вылезают дебильные значения в
этом тэге.
Re: Когда происходит обмен с WinCC в цикле
контроллера?
Чистяков Дмитрий "СеверСталь"; 1.4.03
Ну, решается-то эта задача достаточно просто.
1. Создаём два DB.
2. Один DB используем в программе контроллера.
3. Другой для приёма данных из WinCC
4. А в конце (или начале) скана пересылаем один DB в другой при
помощи SFC20.
Re: Когда происходит обмен с WinCC в цикле
контроллера?
Илья;
7.4.03
Ну, наверное, лучше использовать SFC81 - она все-таки
непрерываемая... А еще лучше читать книжечки, которые приходят с
CPU - там написано КАКИЕ SFC-шки НУЖНО использовать в ДАННОМ цпу.
Вот...