Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
15
Добавлен:
31.08.2025
Размер:
5.84 Mб
Скачать

Приложение G: Сименс импорт.

Приложение G: Сименс импорт.

В подменю "Проект" "Сименс импорт" ("Project" "Siemens Import") вы найдете команды, которые позволяют импортировать компоненты (POU) и переменные из файлов Siemens STEP5/7. Команда "Импорт SEQ файла" (Import an SEQ symbol file) позволяет импортировать глобальные переменные из символьных файлов STEP5. Эта команда выполняется перед командой "Импорт проекта S5" (Import an S5 project file) для создания удобочитаемых идентификаторов при импортировании компонентов. Две эти команды позволяют импортировать компоненты из файлов STEP5 в открытый проект CoDeSys. Вы можете оставить компоненты на языке STEP5 IL или конвертировать их в МЭК языки.

Мы рекомендуем проводить импортирование в пустой проект CoDeSys. Обязательно включите библиотеку standard.lib, иначе вы не сможете импортировать таймеры.

Импорт из символьных файлов SEQ

SEQ - это обычный формат символьных файлов STEP5. Символьные определения считываются из файлов *. seq. Каждое определение включает абсолютный адрес S5 элемента программы (вход, выход, память, и т.д.), соответствующий идентификатор, а также может содержать комментарии. Это текстовый файл, каждое определение начинается с новой строки. Поля определения отделены пробелами. Каждый комментарий начинается с точки с запятой.

Определения из SEQ файла будут переведены в глобальные переменные в формате МЭК 61131-3, включая символьное имя, адрес и комментарий (если есть). Адрес будет приведен к требованиям МЭК 61131-3 (знак процента и т.д.). Так как S5 имена могут содержать не разрешенные МЭК символы, они будут изменены, где это необходимо. Недействительные знаки будут заменены символом подчеркивания. Если потребуется больше чем одно подчеркивание, каждый последующий знак будет заменен допустимым символом (например, "0"). Если имя изменено в процессе преобразования, исходное имя будет добавлено в виде комментария. Исходные SEQ комментарии также импортируются. Может быть создано несколько модулей определения глобальных переменных. Каждый блок включает не более 64КБ текста.

Описанный SEQ формат используется в Siemens STEP5-PG в большинстве версий Siemens STEP7300/400 и ACCON-PG от DELTALOGIC. Формат поддерживается в STEP7-SEQ файлах версии 3.x

или старше. Формат файлов STEP7 версии 2.x не поддерживается. Вместо разделительных табуляций он содержит символические имена фиксированной длины.

Для начала вы указываете необходимый SEQ файл в стандартном диалоге Windows и запускаете процесс импортирования. В течение этого процесса могут возникать ошибки. Это может случиться, если разные STEP5/7 идентификаторы преобразуются в одинаковые МЭК идентификаторы. Например, два STEP5 идентификата «A!» и «A?» будут конвертированы в «A_». В этом случае возникнет следующее сообщение: «Повторное определение идентификатора A_". Измените одну из переменных.

Ни при каких других обстоятельствах не стоит изменять список глобальных переменных. Если идентификаторы содержат адреса, допустимые в Siemens ПЛК, но не существующие в вашем контроллере, не изменяйте их пока, даже если Вы получаете тысячу сообщений об ошибках при компиляции. Сохранить исходные адреса важно для правильного импортирования компонентов.

Если проект, в который вы импортируете, уже содержит декларацию для глобальной переменной x с прямым адресом (например, "%MX4.0"), то может случиться, что импорт из SEQ содержит переменную с тем же самым адресом. Это допускается в МЭК 61131-3, но, возможно, не запланировано пользователем. Никаких сообщений об ошибке не будет, но ваша программа может функционировать неверно. Чтобы избежать этой проблемы, лучше импортировать в пустой проект или в проект, в котором еще нет никаких абсолютных адресов.

После импортирования SEQ можно переходить к импортированию программных компонентов STEP5/7. Вы можете также определить входы-выходы через конфигурацию ПЛК, это не требуется при импортировании, но позволяет своевременно обнаружить ошибки идентификаторов.

CoDeSys V2.3

10-79

Приложение G: Сименс импорт.

Импорт из файла проекта 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 (плав. запятая)

CoDeSys V2.3

10-80

Приложение G: Сименс импорт.

+, - с операндами: 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

CoDeSys V2.3

10-81

Приложение G: Сименс импорт.

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. Затем создайте соответствующие глобальные объявления:

CoDeSys V2.3

10-82

Приложение G: Сименс импорт.

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, их корректное преобразование нужно выполнить вручную.

Используйте список перекрестных ссылок, включающий входы, выходы и распределение памяти. Проверьте пересекающиеся области и исключите их там, где их не должно быть.

CoDeSys V2.3

10-83