0

Конвертирование языка 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 ON с операндами: T (таймер), C (счетчик)

S, R 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 L со следующими форматами констант: DH, KB, KF, KH, KM, KT, KZ, KY, KG, KC

SI, SE, SA SA с операндами: T

ZV, ZR с операндами: C

+, -, X, : с операндами: F (фикс. запятая), 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 FR с операндами: T

FR с операндами: C

Формальные оператора старта сброса и остановки таймеров

Все команды с диапазоном операндов BA, BB, BS, BT (данные ОС).

SPA, SPB с некоторыми операндами: OB

BA, BAB с операндами: FX

E, EX with the following operands: 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

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

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 адреса, в формате:

Bits: Byte-Offset.Bit-Nummer

Non-Bits:Byte-Offset

Два последовательных адреса слов могут пересекаться. Так %MW32 и %MW33 имеют общий байт %MB33 (только в Siemens SPS). В CoDeSys %MW32  и %MW33 обычно не имеют пресечения.

Ваш ПЛК может иметь иерархическую модель адресации памяти, например «%MW10.0.0.Вы можете сразу переделать все адреса либо попробовать оставить их как есть. Делать это нужно очень осторожно! В Siemens программах попеременное обращение к одной и той же области памяти как слову, байту или биту является обычной практикой. При импортировании блоков данных CoDeSys создает WORD определения для соответствующих слов. Обращение к словам выполнятся напрямую. В МЭК нет возможности объявить в общей памяти несколько пересекающихся переменных разного типа. Но это возможно в прямоадресуемой (M) памяти и памяти входов-выходов. Если применяли адреса типа %MX33.3, %MB33, %MW32 или %MD30, их корректное преобразование нужно выполнить вручную.

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

    Раздел: CoDeSys. Теория. Метки: , ,

    Оставить комментарий

    Отправить сообщение

    CoDeSys GSM/GPRS модем Lectus OPC MasterSCADA Modbus MX110 Omron OPC-сервер owen owen logic PLC Configuration PROFIBUS s-200 SCADA scada системы siemens siemens plc SIMATIC Simplight SMS step7 TRACE MODE Динамизация ИП-320 МЭК 1131–3 ОВЕН ОВЕН ПЛК ОВЕН ПЧВ ПЛК ПЛК ОВЕН ПР 110 Панель оператора Программируемое реле Частотный преобразователь библиотека в CoDeSys визуализация диспетчеризация конфигурация панели программирование ПЛК серия NS сименс плк частотник частотное управление язык CFC язык ST
    .