Codesys (824048), страница 65
Текст из файла (страница 65)
Это допускается в МЭК 61131-3, но, возможно, не запланировано пользователем. Никаких сообщений об ошибке не будет, но ваша программа может функционировать неверно. Чтобы избежать этой проблемы, лучше импортировать в пустой проект или в проект, в которомеще нет никаких абсолютных адресов.После импортирования SEQ можно переходить к импортированию программных компонентовSTEP5/7.
Вы можете также определить входы-выходы через конфигурацию ПЛК, это не требуется приимпортировании, но позволяет своевременно обнаружить ошибки идентификаторов.CoDeSys V2.310-82Приложение G: Сименс импорт.Импорт из файла проекта S5Компоненты (POU) читаются из файла программы Siemens S5 (*.s5d). Исходным является MC5 код,исполняемый S5 SPS. В целом MC5 код соответствует знакомым программистам инструкциям STEP5IL (без символьных имен).
Кроме того, S5D включает комментарии из исходного текста STEP5. Поскольку S5D файл содержит абсолютные адреса без символических имен, CoDeSys отыскивает соответствующие символические имена, определенные в проекте. Если таковые отсутствуют, абсолютныйадрес остается без изменений. Именно поэтому символьный файл SEQ должен быть обработан до S5файла.Для начала вы указываете необходимый S5D файл в стандартном диалоге Windows. В следующемдиалоговом окне вы должны просмотреть список POU и выбрать необходимые.
Наиболее простойпуть – выбрать все. Здесь же вы решаете оставлять компоненты в STEP5 IL либо конвертировать их вIL, LD или FBD.Везде, где это возможно, CoDeSys будет отыскивать и включать в код символические имена. Так, дляинструкции "U M12.0" он возьмет имя переменной, расположенной по адресу M12.0. Будет использовано первое объявление в проекте. В результате переменная будет импортирована как, например "UName" вместо "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 с операндами: CSU, RU, P, PN с операндами: E, A, M, DO, 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, KCSI, SE, SA с операндами: TZV, ZR с операндами: CCoDeSys V2.310-83Приложение G: Сименс импорт.+, -, X, : с операндами: F (фикс. запятая), G (плав.
запятая)+, - с операндами: D (32 бит фикс. запятая)!=, ><, >, <, >=, <= с операндами: F, D, GADD с операндами: BF, KF, DHSPA, SPB с операндами: PB, FB (с большинством типов параметров), SBA, AX с операндами: DB, DXBE, BEA, BEBBLD, NOP, ***UW, OW, XOWKEW, KZW, KZDSLW, SRW, SLD, RRD, RLDSPA=, SPB=SPZ=, SPN=, SPP=, SPM=TAKD, IБольшинство основных операторовНе конвертируемые команды:U, UN, O, ON, S, R, = с битовыми операндами: T0.0, C0.0 (таймер и счетчик)L, T с диапазоном операндов: Q (расширенная периферия)LC с операндами: T, CSV, SS, R, FR с операндами: TFR с операндами: CФормальные операторы старта сброса и остановки таймеровВсе команды с диапазоном операндов BA, BB, BS, BT (данные ОС).SPA, SPB с некоторыми операндами: OBBA, BAB с операндами: FXE, EX с операндами: DB, DXSTP, STS, STWDEF, DED, DUF, DUDSVW, SVDSPO=, SPS=, SPRAS, AF, AFS, AFF, BAS, BAFENTSES, SEFB с операндами: DW, MW, BSLIR, TIR, LDI, TDI, TNW, TXB, TXWMAS, MAB, MSA, MSB, MBA, MBSMBR, ABRLRW, LRD, TRW, TRDCoDeSys V2.310-84Приложение G: Сименс импорт.TSGLB, TB, LW, TW с операндами: GB, GW, GD, CB, CW, CDACR, TSCBISIM, 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 toWORD." В этом случае нужно изменить объявление переменной WORD в TIME.2. Сложности с блоками данныхВ МЭК 61131-3 отсутствуют блоки данных (DB) и нет прямого аналога этой концепции. В STEP5 DBприменяются для размещения переменных (по словам, как в области памяти), допускают массивы (BDW), указатели (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 +5T MW 44B MW 44A DB 0CoDeSys V2.310-85Приложение G: Сименс импорт.В конце этой последовательности будет открыт блок данных DB5 (в целом DB, номер которого записан по адресу %MW44). Такой прием не распознается при конвертировании. Поэтому ручная правкабудет необходима в итоговом проекте:Прежде всего все экземпляры DB должны быть импортированы (как DB5, DB6 и т.д) в стандартныеIL, LD или FBD (по вашему желанию) POU. Каждый такой POU не имеет кода и содержит только объявления. Создайте теперь новый тип данных (например DBType) и перенесите в него объявления данных из соответствующего конвертированного POU.
Затем создайте соответствующие глобальныеобъявления:VAR_GLOBALDB5, DB6 : DBType;END_VARТеперь вы можете удалить ненужные более POU (бывшие DBs).Доступ к нужному DB блоку теперь можно получить путем передачи программному компоненту дополнительного параметра VAR_INPUT типа DBType. Вы можете использовать один программныйкомпонент с разными блоками данных путем задания соответствующего актуального параметра приего вызове.4.
В S5 существуют встроенные функциональные блоки. Пользователю доступен только их интерфейс, программный код реализован не в STEP5 (или MC5) или защищен специальным механизмом.Результатом импорта таких блоков являются пустые POU, имеющие только объявление интерфейса.Программный код вам придется написать самостоятельно5. Помимо этого, могут встретиться блоки (OB) реализованные в виде ассемблерных вставок (805xxнапример). Преимущественно таким способом реализуется ПИД регулятор (OB251), использующийдля приема параметров и хранения локальных переменных отдельный блок данных.