ЖУРНАЛ СТА 3/2014

лающихся на одни и те же адреса сег- мента входных данных. При наличии более одной цикличе- ской задачи в приложении, загружен- ном в контроллер CPM70x, сервисная задача функционирует с периодом, на- именьшим среди всех циклических за- дач, и на очередном цикле атомарно устанавливает признак готовности об- новить сегмент входных данных, после чего ожидает, когда все циклические за- дачи завершат свои очередные циклы. Каждая из циклических задач, завер- шив очередной цикл, обнаруживает признак готовности сервисной задачи к обновлению сегмента входных данных и приостанавливается, пока данные не будут обновлены. Сервисная задача получает сигнал, когда все циклические задачи завер- шают свои очередные циклы, обнов- ляет сегмент входных данных, что при максимальном количестве модулей ввода-вывода и Holding-регистров (принимаемых по сети коммуника- ционных протоколов CANopen или PROFIBUS) в конфигурации приложе- ния занимает в среднем около 30 мкс, но не более 120 мкс, после чего сервис- ная задача сбрасывает ранее установ- ленный признак своей готовности к об- новлению сегмента и сигнализирует циклическим задачам, что они могут начинать свои очередные циклы. Если сразу нескольким циклическим зада- чам пришло время начинать очередные циклы, то процессор «получает» наибо- лее приоритетная из них, а если не- сколько задач имеют одинаковый при- оритет, то первой начнёт выполняться та из задач, которая ожидала процессор дольше всех. Из приведённого описания следует, что для сбалансированного функцио- нирования всех задач приложения в пределах заданных для них периодов на контроллерах CPM70x минимальный период задачи с наивысшим приорите- том должен быть более максимального времени выполнения наименее прио- ритетной задачи, в противном случае низкоприоритетные задачи будут задер- живать более приоритетные. Принципиально иной механизм обеспечения целостности сегмента входных данных приложения использу- ется в контроллерах CPM71x. Сразу после загрузки приложения в контрол- лер исполняемый код вместо реальных адресов переменных, которыми он опе- рирует, содержит ссылки на записи в таблице размещения переменных (re- location table), поскольку компилятор среды разработки CoDeSys 2.3 не знает, по каким физическим адресам в памя- ти контроллера будут расположены сег- менты данных приложения. Каждая за- пись в таблице содержит номер сегмен- та и смещение в сегменте. Система исполнения при запуске контроллера с загруженным в него при- ложением первым делом создаёт сег- менты данных приложения: сегмент входных данных, сегмент выходных данных и сегмент глобальных и внут- ренних переменных, запоминает адре- са созданных сегментов, а также адрес сегмента энергонезависимых перемен- ных, который располагается в статиче- ской памяти с питанием от встроенной батареи. Затем система исполнения путём ана- лиза исполняемого кода строит списки программных единиц (программ, эк- земпляров функциональных блоков и функций), вызываемых из каждой цик- лической задачи. Далее для каждой циклической задачи создаётся собственный сегмент входных данных, после чего выполняется замена 82 СТА 3/2014 АППА РАТ НЫЕ С Р Е ДС Т В А / П РОМЫШЛ Е ННЫЕ КОН Т РОЛЛ Е РЫ www.cta.ru Тел.: (495) 234-0636 • info@prosoft.ru • www.prosoft.ru О Ф И Ц И А Л Ь Н Ы Й Д И С Т Р И Б ЬЮ Т О Р К О М П А Н И И N S I

RkJQdWJsaXNoZXIy MTQ4NjUy