Основы программирования
5.4 Согласованность данных
S7-1200 Programmable controller
100 System Manual, 11/2009, A5E02669003-02
5.4 Согласованность данных
CPU поддерживает согласованность данных для всех элементарных типов данных
(например, Word или DWord) и всех определяемых системой структур (например,
IEC_TIMERS или DTL). Процесс чтения или записи такого значения не может быть
прерван. (Например, CPU защищает доступ к значению типа DWord, пока все четыре
байта DWord не будут прочитаны или записаны.) Чтобы гарантировать невозможность
одновременной записи в одно и то же место памяти со сторо
ны OB про
граммного
цикла и OB прерываний, CPU не выполняет OB прерываний, пока операция чтения или
записи в OB программного цикла не будет завершена.
Если в вашей пользовательской программе несколько значений в памяти
используются OB программного цикла и OB прерываний, то ваша пользовательская
программа должна также обеспечить, чтобы эти значения изменялись или
счит
ывали
сь согласованно. Чтобы защитить доступ к совместно используемым
значениям, вы можете использовать в своем OB программного цикла команды
DIS_AIRT и EN_AIRT.
● Вставьте в кодовый блок DIS_AIRT, чтобы не допустить исполнения OB прерываний
во время операции чтения или записи.
● Вставьте команды чтения или записи значений, к4оторые может изменить OB
прерываний.
● Вставьте команду EN_AIRT в конце этой последовательности, чтобы отменить
DIS_AIRT и разрешить исполнение OB прерываний.
Коммуникационный запрос от устройства человеко-машинного интерфейса или
другого CPU также может прервать исполнение OB программного цикла.
Коммуникационные запросы также могут привести к проблемам с со
гласованностью
данных. CPU гарантирует,
что элементарные типы данных всегда будут считываться и
записываться согласованно командами программы пользователя. Так как программа
пользователя периодически прерывается коммуникационными запросами, то нет
возможности гарантировать, чтобы несколько значений в CPU не обновлялись
одновременно устройствами человеко-машинного интерфейса. Например, значения,
отображаемые на экране устройства человеко-машинного интерфейса, могут
происходить из различны
х циклов скан
ирования CPU.
Команды двухточечной связи (Point-to-Point, PtP) и команды PROFINET (например,
TSEND_C и TRCV_C) передают буфера данных, которые могут быть прерваны.
Обеспечивайте согласованность данных для этих буферов, избегая операций чтения
или записи в эти буфера как в OB программного цикла, так и в OB прерываний. Если
же необходимо изменить значения в буфере для этих команд в OB прерываний,
восп
ользу
йтесь командой DIS_AIRT, чтобы отложить прерывание (OB прерываний или
коммуникационное прерывание от устройства человеко-машинного интерфейса или
другого CPU), пока не будет выполнена команда EN_AIRT.
Указание
Использование команды DIS_AIRT задерживает обработку OB прерываний до тех пор,
пока не будет выполнена команда EN_AIRT, оказывает воздействие на латентность
прерывания (интервал времени от возникновения события до исполнения OB
прерываний) в вашей пользовательской программе.