Руководство пользователя по программированию плк в CoDeSys 3
Скачать 5.57 Mb.
|
Импорт из файла проекта S5 Компоненты (POU) читаются из файла программы Siemens S5 (*.s5d). Исходным является MC5 код, исполняемый S5 SPS. В целом MC5 код соответствует знакомым программистам инструкци- ям STEP5 IL (без символьных имен). Кроме того, S5D включает комментарии из исходного текста STEP5. Поскольку S5D файл содержит абсолютные адреса без символических имен, CoDeSys оты- скивает соответствующие символические имена, определенные в проекте. Если таковые отсутст- вуют, абсолютный адрес остается без изменений. Именно поэтому символьный файл SEQ должен быть обработан до S5 файла. Для начала вы указываете необходимый S5D файл в стандартном диалоге Windows. В следующем диалоговом окне вы должны просмотреть список POU и выбрать необходимые. Наиболее простой путь – выбрать все. Здесь же вы решаете оставлять компоненты в STEP5 IL либо конвертировать их в IL, LD или FBD. Везде, где это возможно, CoDeSys будет отыскивать и включать в код символические имена. Так, для инструкции "U M12.0" он возьмет имя переменной, расположенной по адресу M12.0. Будет использовано первое объявление в проекте. В результате переменная будет импортирована как, например "U-Name" вместо "U M12.0". Некоторые дополнительные глобальные объявления будут выполнены в процессе импорта. На- пример, экземпляр функционального блока R_TRIG будет добавлен при необходимости переклю- чаемого по фронту входа. Конвертирование языка S5 в МЭК C 61131-3 При конвертировании STEP5 в МЭК языки вы должны знать, что некоторые части вашего проекта не могут быть автоматически преобразованы. Для кода, который не может быть конвертирован в МЭК 61131-3, будет дано сообщение об ошибке, и критическая часть оригинального STEP5 IL бу- дет вставлена как комментарий в МЭК POU. В этом случае вы должны поправить текст вручную. Не конвертируются системные команды, специфичные для конкретного CPU. Базовую часть ко- манд STEP5 можно преобразовать в МЭК нажатием клавиши даже в случае, если при этом меня- ется смысл кода. Базовый список команд, которые конвертируются в МЭК 61131-3, содержит все команды, преоб- разуемые в LD или FBD в системе программирования STEP5, и также команды, допустимые в программных блоках STEP5-PB. Кроме того, общие для всех S5 CPU команды функциональных блоков (например, абсолютные и условные переходы, командах сдвига, и т.д.). Единственное ограничение связано с переустанавливаемыми таймерами STEP5, которые не имеют прямых аналогов в МЭК 61131-3. Конвертируемые команды: U, UN, O, ON, S, R, = с операндами: I (входы), O (выходы), M (память), S (S память), D (блоки данных) U, UN, O, ON с операндами: T (таймер), C (счетчик) S, R с операндами: C SU, RU, P, PN с операндами: E, A, M, D O, O(, U(, ) L, T со следующим диапазоном операндов: E, A, M, D, T, C, P (Periphery) и размером операндов: B (byte), W (word), D (double word), L (left byte), R (right byte) L со следующими форматами констант: DH, KB, KF, KH, KM, KT, KZ, KY, KG, KC SI, SE, SA с операндами: T ZV, ZR с операндами: C +, -, X, : с операндами: F (фикс. запятая), G (плав. запятая) Приложение G: Сименс импорт. CoDeSys V2.3 10-81 +, - с операндами: D (32 бит фикс. запятая) !=, ><, >, <, >=, <= с операндами: F, D, G ADD с операндами: BF, KF, DH SPA, SPB с операндами: PB, FB (с большинством типов параметров), SB A, AX с операндами: DB, DX BE, BEA, BEB BLD, NOP, *** UW, OW, XOW KEW, KZW, KZD SLW, SRW, SLD, RRD, RLD SPA=, SPB= SPZ=, SPN=, SPP=, SPM= TAK D, I Большинство основных операторов Не конвертируемые команды: U, UN, O, ON, S, R, = с битовыми операндами: T0.0, C0.0 (таймер и счетчик) L, T с диапазоном операндов: Q (расширенная периферия) LC с операндами: T, C SV, SS, R, FR с операндами: T FR с операндами: C Формальные операторы старта сброса и остановки таймеров Все команды с диапазоном операндов BA, BB, BS, BT (данные ОС). SPA, SPB с некоторыми операндами: OB BA, BAB с операндами: FX E, EX с операндами: DB, DX STP, STS, STW DEF, DED, DUF, DUD SVW, SVD SPO=, SPS=, SPR AS, AF, AFS, AFF, BAS, BAF ENT SES, SEF B с операндами: DW, MW, BS LIR, TIR, LDI, TDI, TNW, TXB, TXW MAS, MAB, MSA, MSB, MBA, MBS MBR, ABR LRW, LRD, TRW, TRD TSG LB, TB, LW, TW с операндами: GB, GW, GD, CB, CW, CD ACR, TSC BI Приложение G: Сименс импорт. CoDeSys V2.3 10-82 SIM, LIM Если вы внимательно посмотрите на неконвертируемые команды, то обнаружите, что это допол- нительные команды, которые специфичны для некоторых CPU. Из основных команд не конверти- руются: BCD таймер или счетчик значений (LC T, LC C), таймер типов SV и SS и переустанавли- ваемый таймер. Блоки данных: Блоки данных STEP5 преобразуются в POU, имеющие объявления, но не содержащие кода. Некоторые типовые проблемы импорта STEP5, требующие ручной правки: 1. Значения времени в переменных word В STEP5 значения времени могут размещаться в любом слове памяти (word) или блока данных. В МЭК 61131-3, переменные или константы TIME не совместимы с WORD адресацией. Отсутствие явного указания типа времени может приводить к ошибочным последовательностям команд при импорте. При обнаружении некорректного использования таких переменных вы увидите сообще- ние "Incompatible Types: Cannot convert WORD to TIME." либо "Incompatible Types: Cannot convert TIME to WORD." В этом случае нужно изменить объявление переменной WORD в TIME. 2. Сложности с блоками данных В МЭК 61131-3 отсутствуют блоки данных (DB) и нет прямого аналога этой концепции. В STEP5 DB применяются для размещения переменных (по словам, как в области памяти), допускают мас- сивы (B DW), указатели (B MW100 A DB 0) или объединения (доступ как к байту, слову или двойному слову). Конвертирование STEP5 DB проходит успешно, только если их применение упорядочено. При доступе к переменным блока данных, необходимо знать, какой блок сейчас от- крыт (команда A DB х, где х = номер блока). Это можно определить, если в начале POU стоит ко- манда A DB и номер блока передается в качестве параметра. Если же команда A DB отсутствует, то нет возможности определить, какой блок использовать и соответственно конвертировать такой POU нельзя. Об этой проблеме вас оповестит сообщение "No open data block (insert an A DB)". При конвертировании будут получаться обращения к несуществующим переменным, например "ErrorDW0". Вы должны будете вручную поставить обращение к необходимому DB (заменить "ErrorDW0" на "DB10.DW0"). Конечно, проще заранее явно расставить в самих STEP5 POU необ- ходимые команды A DB. В случае пропуска команды A BD существует опасность, что при преобразовании сформируется обращение к ошибочному DB. 3. Косвенное обращение к блокам данных В STEP5 вы можете создавать подобие нескольких экземпляров блоков данных и косвенно (через индекс) выбирать нужный: L KF +5 T MW 44 B MW 44 A DB 0 В конце этой последовательности будет открыт блок данных DB5 (в целом DB, номер которого записан по адресу %MW44). Такой прием не распознается при конвертировании. Поэтому ручная правка будет необходима в итоговом проекте: Прежде всего все экземпляры DB должны быть импортированы (как DB5, DB6 и т.д) в стандарт- ные IL, LD или FBD (по вашему желанию) POU. Каждый такой POU не имеет кода и содержит только объявления. Создайте теперь новый тип данных (например DBType) и перенесите в него объявления данных из соответствующего конвертированного POU. Затем создайте соответст- вующие глобальные объявления: Приложение G: Сименс импорт. CoDeSys V2.3 10-83 VAR_GLOBAL DB5, DB6 : DBType; END_VAR Теперь вы можете удалить ненужные более POU (бывшие DBs). Доступ к нужному DB блоку теперь можно получить путем передачи программному компоненту дополнительного параметра VAR_INPUT типа DBType. Вы можете использовать один программ- ный компонент с разными блоками данных путем задания соответствующего актуального пара- метра при его вызове. 4. В S5 существуют встроенные функциональные блоки. Пользователю доступен только их ин- терфейс, программный код реализован не в STEP5 (или MC5) или защищен специальным меха- низмом. Результатом импорта таких блоков являются пустые POU, имеющие только объявление интерфейса. Программный код вам придется написать самостоятельно 5. Помимо этого, могут встретиться блоки (OB) реализованные в виде ассемблерных вставок (805xx например). Преимущественно таким способом реализуется ПИД регулятор (OB251), ис- пользующий для приема параметров и хранения локальных переменных отдельный блок данных. Естественно, код регулятора не попадет в импортированный проект. Для понимания работы таких блоков используйте документацию по данному процессору. 6. Конфигурационные блоки (такие, как DB1 [S5-95U], DX0, и DX2), применяемые иногда в S5 CPU, конвертируются в бессмысленные МЭК компоненты. Чтобы понять смысл их содержимого, используйте руководство по программированию данного CPU. В крайнем случае можно исследо- вать определенную данным блоком конфигурацию в системе программирования S5. Она включает настройку коммуникаций, обработку аналоговых значений, мультипроцессорную работу и т.д. Ес- тественно, все эти параметры имеют смысл только в Siemens SPS. По окончании импортирования внимательно просмотрите полученный код. Не конвертированные автоматически фрагменты снабжены комментарием: (*Warning! Unconvertible STEP5/7 code shown as comment:*) Здесь же в комментарии содержится и исходный код. Обязательно проверьте адреса. При импорте создаются исходные Siemens адреса, в формате: Биты: Байтовое-Смещение.Номер-Бита Не биты: Байтовое-Смещение Два последовательных адреса слов могут пересекаться. Так %MW32 и %MW33 имеют общий байт %MB33 (только в Siemens SPS). В CoDeSys %MW32 и %MW33 обычно не имеют пресечения. Ваш ПЛК может иметь иерархическую модель адресации памяти, например "%MW10.0.0.Вы мо- жете сразу переделать все адреса либо попробовать оставить их как есть. Делать это нужно очень осторожно! В Siemens программах попеременное обращение к одной и той же области памяти - как слову, байту или биту - является обычной практикой. При импортировании блоков данных CoDeSys создает WORD определения для соответствующих слов. Обращение к словам выполня- ется напрямую. В МЭК нет возможности объявить в общей памяти несколько пересекающихся пе- ременных разного типа. Но это возможно в прямоадресуемой (M) памяти и памяти входов- выходов. Если применяли адреса типа %MX33.3, %MB33, %MW32 или %MD30, их корректное преобразование нужно выполнить вручную. Используйте список перекрестных ссылок, включающий входы, выходы и распределение памяти. Проверьте пересекающиеся области и исключите их там, где их не должно быть. Приложение H: Опции целевых систем CoDeSys V2.3 10-84 Приложение H: Опции целевых систем Системные опции целевых платформ (Target Platform) Intel 386 совместимые Пункт диалога Пояснение Платформа ( Platform ) Тип целевой платформы Математический сопро- цессор ( Floating point processor ) если активна: разрешает применять FPU команды в операциях с плавающей запятой. Многозадачная отладка ( Debugging in multitasking environment ) если активна: генерируется дополнительный код, позволяющий проводить отладку в многозадачной среде. Оптимизация переходов ( Optimized jumps ) если активна: разрешена оптимизация переходов в операциях сравнения; быстрый + компактный код (особенно на 386/486); Строки, содержащие сравнения перед переходом, будут отображаться серым в режиме контроля выполнения. Оптимизация операций с констанами ( Optimized operations with constants ) (A = A + 1, A < 500 etc.); быстрый + компактный код (особенно на 386/486); Константы будут отображаться серым в режиме контроля выполнения. Оптимизация чтения прменных ( Optimized Loadoperations ) Исключаются повторные операции загрузки при множественном доступе к переменным/константам; быстрый + компактный код Приложение H: Опции целевых систем CoDeSys V2.3 10-85 Motorola 68K Пункт диалога Пояснение Платформа ( Platform ) Тип целевой платформы. Процессор ( CPU ) Вариант 68k CPU: базовый 68000 либо CPU32 и старше. Математический сопро- цессор ( Floating point processor ) если активна: разрешает применять FPU команды в операциях с плавающей запятой. Использовать 16 бит пе- реходы ( Use 16 bit jump offsets ) если активна: переходы при вычислении логических выражений используют относительные 16 бит смещения (более сложные выражения, но больше раз- мер кода). не активна: 8 бит смещения . Побайтовое выравнива- ние структур ( Allow byte- aligned structures ) если активна: выравнивание только по четным адресам. не активна: произвольное расположение. Не использовать рег. 1 ( Reserved Register 1 ) A2,A4,A5,A6: Указанные адресные регистры зарезервированы и не исполь- зуются Иначе: регистр используется генератором кода Не использовать рег. 2 ( Reserved Register 2 ) Дополнительный зарезервированный регистр адреса Базовый рег. данных библиотек ( Base register for library data ) Регистр для адресации статических данных в C библиотеках (перед вызовом библиотечной функции, загружается адресом свободной памяти). Если "None", используется A5. Вывод ( Output-Mode ) Nothing = ничего Assembler = генерируется файл "code68k.hex" в директории компиляции (См. "Проект/Опции/Директории" - "Project/Options/Directories"). Disassembler = Дополнительно создает файл дизассемблера Приложение H: Опции целевых систем CoDeSys V2.3 10-86 Infineon C16x Пункт диалога Пояснение Платформа ( Platform ) Тип целевой платформы Код / Компилятор ( Code / Compiler ) Компилятор, использованный для построения RTS и библиотек (определя- ет порядок вызова C функций) Код / Размер стека ( Code / Stack size ) Максимальная глубина вызовов (вложений) Код / Данные ( Code / Data ) Модель памяти данных Код / Функции ( Code / Functions ) Модель памяти кода Иниц. функций ( Init. Func- tions ) если активна: функции включают код инициализации локальных перемен- ных Отимизация ( Optimize ) если активна: оптимизация кода, если индекс элемента массива константа Вывод / Hex ( Output / HEX- File ) если активна: формируется выходной HEX код Вывод / BIN ( Output / BIN- File ) если активна: формируется двоичный код Вывод / MAP ( Output / MAP ) если активна: формируется map-файл кода Вывод / LST ( Output / LST ) если активна: формируется листинг кода Вывод / LST с адресами ( Output / LST with ad- dresses ) если активна: листинг включает адреса DPPs / DPP0..DPP2 В экземлярах (In Instances) Выбор DPP для DPP0, DPP1, DPP2 DPP для короткой адресации функциональных блоков Приложение H: Опции целевых систем CoDeSys V2.3 10-87 Библиотеки / Код ( Libraries /Code ) Таблицы ( Tables ) Данные ( Data ) Размер ( Data length ) POUs Ссылки ( References ) Опции для библиотек ARM и Power PC В обеих системах пункты диалога одинаковы. Пункт диалога Пояснение Платформа ( Platform ) Тип целевой платформы Математический сопро- цессор ( Floating point processor ) если активна: разрешает применять FPU команды в операциях с плавающей запятой Рег. первого целового параметра ( First parame- ter Register (integer) ) Регистр, в котором передается первый целочисленный параметр при вызове C-функции Рег. последнего целого параметра ( Last parame- ter Register (Integer) ) Регистр, в котором передается последний целочисленный параметр при вызо- ве C-функции Рег. целого результата ( Register for return values (Integer) ) Регистр, в котором возвращается целочисленный результат C-функции Рег. первого параметра (плав. зап.) ( First parame- ter Register (Float) ) Регистр, в котором передается первый параметр в формате с плавающей запя- той при вызове C-функции Рег. посл. параметра (плав. зап.) ( Last parame- ter Register (Float) |