Регистрация | Последние сообщения | Персональный список | Поиск | Настройка конференции | Личные данные | Правила конференции | Список участников | Top 64 | Статистика раздела | faq | Что нового v.2.3 | Чат
Skunk Forum - Техника, Наука, Общество » АСУТП »
Прямая адресация стандарт IEC 61131.

Версия для печати (настроить)

Новая тема | Написать ответ

Подписаться

Автор Тема:   Прямая адресация стандарт IEC 61131.
Seraphim
Junior Member

Сообщений: 1
Откуда: Минск
Регистрация: Март 2009

написано 30 Марта 2009 09:57ИнфоПравкаОтветитьIP

Может кто программировал в среде. Перерыл кучу материалов. В самом стандарте описан только форматЖ прямой адресации: at %QX ... Однако как точно понимать эту адресацию я не могу разобраться.
У меня 2 варианта:
1) %MW5 -обозначает что в ОЗУ по 5 адресу (словному) располагается слово. Таким образом, если адресация реального устройства 8 битная, то %MB10 = %MB5. И получается, что вся логическая адресация может быть ка LWORD,DWORD,WORD, BYTE (возможно bit).
2) Адресация как в Симантек, %MB5 - по адресу (байтному 8 бит) таким образом будет получаться , что %MB5 = %MW5. Только размер размещенных данных разный. Но как тогда размещать данные если адресация в реальном учтройстве 16 битная ?

IP
Member

Сообщений: 127
Откуда: Russia
Регистрация: Июнь 2006

написано 31 Марта 2009 11:43ИнфоПравкаОтветитьIP

Описанная непонятка есть и в разных МЭК средах встречаются отличия. Проблема не острая, поскольку возможность ручного размещения данных является данью истории. Нормальный конфигуратор контроллера делает это автоматически и в правильной МЭК программе никаких прямых адресов быть не должно никогда.

Реальная адресация (в смысле разрядность процессора) никак не влияет на адреса МЭК. Эту проблему закрывает система исполнения, сидящая в контроллере, выполняя соответствующее преобразование. Поэтому в одной среде программирования адресация будет абсолютно одинаковой на разных контроллерах.

В целом, могут быть следующие варианты:

1) Наиболее распространена линейная адресация. В этом случае:

%MB20 – 20-й байт. При объявлении переменной по этому адресу может быть только BYTE = строка из 8 бит.
%MW10 – 10-е 16-и разрядное слово. При объявлении переменной по этому адресу может быть только WORD = строка из 16 бит.
%MD5 – 5-е 32-х разрядное слово. При объявлении переменной по этому адресу может быть только DWORD = строка из 32 бит.
В любом случае, через точку можно выделить бит, например %MW10.2.
Сложность линейной адресации состоит в трудности вычисления адресов в голове. Легко можно сбиться и допустить пересечения данных. Хороший компилятор должен дать предупреждение.
2) Линейная байтовая адресация (может быть как опция для совместимости).
Тут число всегда выражает номер байта. Так %MW10 будет словом WORD, размещенным с 10-го байта.
Сложность в том, не все процессоры поддерживают такое выравнивание данных. Для 8 бит проц. модель хороша, для 32 бит может быть не реализуема.
3) Иерархическая адресация. Например: %IX2.5.7 – вторая корзина, пятый модуль, седьмой вход. Бывает и такое.

Какая именно среда?

Seraphim
Junior Member

Сообщений: 2
Откуда: Минск
Регистрация: Март 2009

написано 31 Марта 2009 14:38ИнфоПравкаОтветитьIP

Вопрос по среде .. ее то и приходится разрабатывать.
Вот и раз... Я думал стандартом определен вариант (1 или 2). Просто я найти это определение не могу. Может кто видел главу 3,4 в бумажном варианте от John Tiegelkamp& Может там чего написанно. Ибо прочитав сам стандарт 61131 много чего осталось непонятно.
Если есть выбор, можно остановиться на 2-м варианте (число это номер байта) как на более распространенном. И компилятором вызывать предупреждение если нужно произвести выравнивание данных ,например, если устройство 16битное а адресс указан %MW9.

Добавление от 31 Марта 2009 14:41:

Точнее книга Karl-Heinz John, Michael Tiegelkamp

Добавление от 31 Марта 2009 14:49:

ссылка
ну может кто даст хоть одним глазком взглянуть ? )))))

IP
Member

Сообщений: 128
Откуда: Russia
Регистрация: Июнь 2006

написано 01 Апреля 2009 14:12ИнфоПравкаОтветитьIP

Гораздо более распространен вариант 1. В хороших МЭК системах поддержаны все 3 варианта на выбор.

Книжки по МЭК системам у меня есть все, могу посмотреть что надо, либо приезжайте в гости. В Тигелькампа на эту тему 1 стр. – кратко описан формат прямого адреса, буквы областей памяти, типа адреса и собственно все. Лучше всего тонкости стандарта расписаны у Robert Lewis. Купить книжки по МЭК языкам можно на сайте PLCopen. Присылают DHL за 2 дня. См. тут: ссылка

Почему возникла такая нужда самим разрабатывать МЭК систему программирования? Это же зверски дорого и долго, если делать все как положено. Годы работы на изобретение велосипеда + ее поддержку, приобретение доверия пользователей и др. Почему нельзя взять готовую и адаптировать под себя?

Seraphim
Junior Member

Сообщений: 3
Откуда: Минск
Регистрация: Март 2009

написано 01 Апреля 2009 15:43ИнфоПравкаОтветитьIP

В хороших МЭК системах поддержаны все 3 варианта на выбор.
По-моему это уж слишком рачительно давать 3 варианта. Притом Честно говоря 3-й то как и за вариант не сойдет, его как с первым можно использовать так и со вторым.

Почему возникла такая нужда самим разрабатывать МЭК систему программирования? Это же зверски дорого и долго, если делать все как положено.

Определяющая фраза как положенно(((.

IP
Member

Сообщений: 129
Откуда: Russia
Регистрация: Июнь 2006

написано 01 Апреля 2009 19:08ИнфоПравкаОтветитьIP

ИМХО лучше бы вообще прямые адреса не применять. Делаем конфигуратор, в нем пользователь сопоставляет свои переменные каналам аппаратуры и все. Это можно даже автоматизировать путем сканирования железа. Никаких адресов. Точнее они есть внутри, но пользователю до них дела нет. Все переменные размещаются автоматически.

Делать нечто усеченное, путь тупиковый. Сделать можно, но продать (даже подарить) нельзя. Это как пытаться приученным к MS Word пользователям объяснять, что все эти модные функции лишние и правильнее использовать некую новую версию Лексикона...

Приезжайте к нам на конференцию в мае (благо близко совсем). Там как раз можно пообщаться со многими людьми, кто занимается аналогичной работой с разным успехом. Основная тема развитие МЭК языков.

Seraphim
Junior Member

Сообщений: 4
Откуда: Минск
Регистрация: Март 2009

написано 02 Апреля 2009 11:07ИнфоПравкаОтветитьIP

цитата:
ИМХО лучше бы вообще прямые адреса не применять. Точнее они есть внутри, но пользователю до них дела нет.

Согласен, но в любом случае нужно самому определиться что значат адреса ))). Чтобы это реализовать. И до конфигуратора придется написать пару десятков тестовых программ, чтобы потом уже работать с конфигуратором.
цитата:
Делать нечто усеченное, путь тупиковый.

Опять же согласен! Но задача поставлена ((((.
Я как понимаю вы работаете с кодесисом. Хотя мое личное субъективное мнение: я бы лучше работал с изаграфом. Ну ставил я и тот и тот пакет - смотрел (признаюсь что вскользь). Однако, более прост в использовонии изаграф. Опять же простота - не признак лучшего качества )))).
Задача использовать эти продукты не стоит - хотя жаль .

Чтобы не создавать новую тему может вы подскажете ответ.
В стандарте 61131-3(2003) раздел 2.5.1.1 Textual invocation of functions fot non- formal arument list. Порядок переменных - фиксирован. Это подразумевает, что если в функции
объявленны данные, то они все имеют порядковый номер(0,1,2...) и не важно какая секция объявлена (var_input, var_output, var_In_out). В таком порядке данные и подставляются ?

Valera
Member

Сообщений: 1048
Откуда: novosibirsk
Регистрация: Май 2004

написано 02 Апреля 2009 11:37ИнфоПравкаОтветитьIP

Seraphim
Какой у Вас процессор?

Seraphim
Junior Member

Сообщений: 5
Откуда: Минск
Регистрация: Март 2009

написано 02 Апреля 2009 12:21ИнфоПравкаОтветитьIP

atmega 128

IP
Member

Сообщений: 130
Откуда: Russia
Регистрация: Июнь 2006

написано 02 Апреля 2009 14:29ИнфоПравкаОтветитьIP

Простота освоения вопрос не простой. С одной стороны есть запросы продвинутых пользователей, которым не хватает функционала всегда. Многозадачность – надо, распределенные системы и составные сети – надо вчера, горячее обновление кода – дайте скорее, встроенный в контроллер web с графической визуализацией – дате два и понеслось... Все это делается и продвинутые счастливы. Для них простота использования растет. Но, растет и сложность начального освоения. Если пользователь любопытен и хочет освоить все и быстро, то проблемы у него будут. Есть красивая идея как это преодолеть в CoDeSys V3. Уже делаем, пока секрет.

Генератора кода atmega 128 в CoDeSys нет и не будет.

Вопрос не понял, уточните. Что за данные? В смысле переменные? Подставляются они куда?

Seraphim
Junior Member

Сообщений: 6
Откуда: Минск
Регистрация: Март 2009

написано 02 Апреля 2009 15:16ИнфоПравкаОтветитьIP

цитата:
Простота освоения вопрос не простой.

Вот а для наладчиков это время и редко желание посему чем проще и интуитивно понятно тем лучше. Многозадачность она то хороша - но для нас пока что из ряда фантастики!
цитата:
Генератора кода atmega 128 в CoDeSys нет и не будет.

Чем же вам процессор не угодил )?
Уточняю вопрос:
В стандарте 61131-3(2003) раздел 2.5.1.1 Textual invocation of functions fot non- formal arument list. Получается функцию можно вызвать таким образом _имя_функции (параметр1, параметр2, параметр3); И в самой спецификации описано, что порядок параметров должен быть строго определен.
В языке си все понятно есть прототип функции из которого определяется в каком порядке идут данные.
А сдесь каким образом я могу узнать именно сам порядок.
Приведу пример:
function fun1 :word
var_input
aaa:word;
end_var;
var_output
bbb:bool;
end_var;
var
ccc:byte;
end_var;
var_in_out
ddd:int;
end_var;
end_function;
чтобы осуществить вызов: k = fun1(5,7,c); аналог k = fun1(aaa:=5,ddd :=7,bbb=>c);
1)Нужно определиться или считываем из потока все секции и если в секция данных (var_input var_output var_in_out), то просто устанавливаем позицию переменной (0,1,2,3 и так далее).
2)Или определяем, что сначала переменные нумеруются в секции var_input - далее var_in_out - далее var_output
Таким образом, в первом случае порядок вызова будет очень завсить от объявления, а во втором без разницы какая секция будет следовать за какой.

Хотя есть вероятность что я вообще не правильно понял концепцию(.


Добавление от 02 Апреля 2009 15:18:

Буду премного благодарен. За хоть какой-то ответ ...

IP
Member

Сообщений: 131
Откуда: Russia
Регистрация: Июнь 2006

написано 02 Апреля 2009 17:01ИнфоПравкаОтветитьIP

Пользователю это не все равно? Как сделаете, так и будет. В CoDeSys секции сортируются транслятором (вариант 2). При вызове функции аргументы можно передавать перечислением и присвоением (через :=) в любой последовательности. Порядок вызова паскалевский.

ddd :=7 быть не может. var_in_out – это ссылка, константу ей присваивать нельзя.

Чем процессор не угодил ?
Ничем, просто не ставят его в МЭК контроллеры. Сейчас есть 32 бит процессоры которые стоят дешевле. Самый ходовой вариант: проц. ARM, сверху Linux и CoDeSys SP. Адаптация 2 дня работы и функционал работает весь! Разрабатывать не надо, оно уже разработано двадцать раз. Нормальная многозадачность, огромный размер программы, удаленная отладка, все библиотеки, включая сложную математику, TCP/IP, сетевые переменные, полевые сети на выбор, графическая визуализация встроенная через VNC из любой точки мира, архивация данных на обычную флешку USB и др. и пр. Сделать это все на вашем процессоре можно не все и с большими усилиями = долго и дорого.

Seraphim
Junior Member

Сообщений: 7
Откуда: Минск
Регистрация: Март 2009

написано 02 Апреля 2009 17:18ИнфоПравкаОтветитьIP

Книжки по МЭК системам у меня есть все.
Может чего из русских авторов подскажте ?

Добавление от 03 Апреля 2009 11:20:

Программируемые контроллеры. Стандартные языки и приемы прикладного проектирования. Петрова. В нете нашел. Интересно там чего нибудь толкового есть? Ибо бумажный вариант пока не нашел(((. Буду шариться по книжным пока что.

IP
Member

Сообщений: 132
Откуда: Russia
Регистрация: Июнь 2006

написано 03 Апреля 2009 11:48ИнфоПравкаОтветитьIP

> …Петрова. В нете нашел.
Так сложно? А что на сайте PLCopen (см. ссылку выше) ее уже нет?

> Интересно там чего нибудь толкового есть?
Действительно интересно. Когда я ее писал, то казалось что есть, теперь уже кажется что надо все переделать...

> Ибо бумажный вариант пока не нашел(((
Заезжайте в гости подарю.

Посмотрите еще:

Ганс Бергер. Автоматизация посредством STEP 7 с использованием STL и SCL и программируемых контроллеров SIMATIC S7-300/400

Деменков Н.П. Языки программирования промышленных контроллеров: Учебное пособие/ Под ред. К.А.Пупкова. – М.: Изд-во МГТУ им. Н.,Э.Баумана, 2004. – 172 с.

Кстати, вопрос был именно по вызову функций, а не экземпляра функционального блока?

Seraphim
Junior Member

Сообщений: 8
Откуда: Минск
Регистрация: Март 2009

написано 03 Апреля 2009 13:15ИнфоПравкаОтветитьIP

>> …Петрова. В нете нашел.
>Так сложно? А что на сайте PLCopen (см. ссылку выше) ее уже нет?
Вы меня не правильно поняли нашел я в интернет магазине книжжку даже у нас в беларуси. И ценник вроде как не кусачий. Просто, по анатации не всегда можно определить нужна ли книга или нет.
Посему, хочу полистать и уже решить для себя. Нужна ли она мне или нет.
>> Ибо бумажный вариант пока не нашел(((
>Заезжайте в гости подарю.
Не ожидал получить ответ от автора ). Спасибо, за предложение ))). И за литературу тоже спасибо по контроллеру читал информацию s7-200.

Кстати, вопрос был именно по вызову функций, а не экземпляра функционального блока?

По вызову функций. Хотя я думал что для функционального блока вызов аналогичен.

[Это сообщение изменил Seraphim (изменение 03 Апреля 2009 13:33).]

IP
Member

Сообщений: 133
Откуда: Russia
Регистрация: Июнь 2006

написано 09 Июня 2009 11:15ИнфоПравкаОтветитьIP

Случайно наткнулся на полный вариант книжки Тигелькампа. см. тут

+ Еще одна книга: Э. Парр, Программируемые контроллеры: руководство для инженера. – М. БИНОМ – 516 стр.
Есть в магазинах. Введение о ПЛК, классические языки и приемы программирования (в основном LD), способы адресации c разными вариантами(Siemens, ABB, Allen Bradley), аналоговые сигналы и регулирование, распределенные системы, HMI. 15 лет назад, когда книга была написана, ей бы цены не было в русском переводе, но увы, сделан он был только в 2007 году. Поэтому технические данные по 'современным' ПЛК устарели, но базовые основы написаны хорошо. ИМХО неплохая вводная книга для начинающих и тех, кто хочет проникнуть в исторические корни

Ваш ответ:

Коды форума
Смайлики


Ник:    Пароль       
Отключить смайлики

Все время MSK

Склеить | Разбить | Закрыть | Переместить | Удалить

Новая тема | Написать ответ
Последние сообщения         
Перейти к:

Свяжитесь с нами | skunksworks.net

Copyright © skunksworks.net, 2000-2018

Разработка и техническая поддержка: skunksworks.net


Рейтинг@Mail.ru Яндекс.Метрика