ЖУРНАЛ СТА 3/2014
ных данных, размер которых не превы- шает естественной разрядности процес- сора (WORD для 16-разрядного и DWORD для 32-разрядного процессо- ра), данная проблема может быть реше- на путём копирования данных в проме- жуточные переменные перед началом вычислений, как показано на рис. 9. Но если размер такой переменной превы- шает естественную разрядность процес- сора, что бывает при использовании пе- ременных типа LREAL, структур и мас- сивов, то нарушение целостности дан- ных может произойти во время копиро- вания, поскольку задача может быть вытеснена более приоритетной задачей в любой момент времени. В контроллерах FASTWEL I/O ука- занная проблема решена на системном уровне двумя способами: 1. В контроллерах CPM70x, где может использоваться до трёх циклических задач, ввод данных из окружения в сегмент, на который ссылаются пере- менные при помощи директивы %I, производится отдельной системной высокоприоритетной задачей, кото- рая в документации называется сер- висной, и только тогда, когда все циклические задачи закончили свой очередной цикл. 2. В контроллерах CPM71x каждая из 16 циклических задач имеет собствен- ный сегмент входных данных, то есть разные задачи никогда не могут нару- шить целостность переменных, ссы- АППА РАТ НЫЕ С Р Е ДС Т В А / П РОМЫШЛ Е ННЫЕ КОН Т РОЛЛ Е РЫ 81 СТА 3/2014 www.cta.ru Рис. 8. Исходные тексты программ и конфигурация задач проекта CoDeSys 2.3 (две задачи ссылаются на один адрес в сегменте входных данных приложения) Рис. 9. Исходный текст программы с обеспечением неизменности значения входной переменной на очередном цикле Тел.: (495) 234-0636 • Факс: (495) 234-0640 • info@prosoft.ru • www.prosoft.ru ОФИЦИАЛЬНЫЙ ДИСТРИБЬЮТОР КОМПАНИЙ SMARTEK, VISIOSENS
Made with FlippingBook
RkJQdWJsaXNoZXIy MTQ4NjUy