Главная   Downloads   Разное  
FAQ     Поиск   Регистрация   Вход 
Текущее время: Пт мар 29, 2024 12:51

Часовой пояс: UTC + 3 часа (Russia: MSK)




Начать новую тему Ответить на тему  [ 31 сообщений ]  На страницу 1, 2, 3  Вперёд
Автор Сообщение
 Заголовок сообщения: Функциональные блоки и массивы на ST
СообщениеДобавлено: Пт июл 03, 2015 11:09 
Не в сети

Регистрация: Пн июн 29, 2015 14:22
Сообщения: 18
Здравствуйте! ПЛК CJ2M CPU32, CX-Programmer 9.35.
Столкнулся с несколькими проблемами при реализации элементарных вещей на ST:
1) Мне нужно передать массив UINT внутрь функционального блока, произвести некоторые манипуляции с ним и вернуть полученный новый массив. Как это сделать на ST? Пробую такую конструкцию myArray := myFB(returnedArray); - компилятор ругается, что переменной с типом UINT нельзя присвоить FB (но я же присваиваю не FB, а возвращаемое этим FB значение!).
2) Можно ли передавать в такой ФБ массив произвольной длины (т.е. и массив из 10-ти и из 100-а элементов)? Или можно только жестко задать размер входной-выходной переменной (например inputArray[10]) и ФБ будет принимать только массивы из 10-ти элементов?
3) Есть ли в cx-programmer в ST метод поиска максимального и минимального значения в массиве, а так же определения его длины (типа int a = myArray.Length() в с-подобных языках)?
4) Можно ли в cx-programmer создать некую структуру ключами (индексами) которой будут некоторые значения (типа К1, Т4 и т.п.), а значениями будут адреса в памяти ПЛК (типа W10.04 и т.п.), чтобы можно было записывать необходимое значение (TRUE/FALSE) по нужному адресу?
5) В мониторе отладки переменные с типом UINT все равно отображаются как INT, т.е. 65535 отображается как -1, но на программу это не влияет - все считается правильно. Можно ли как-то изменить формат отображения в таблице монитора отладки?

Вроде пока все... Несколько дней сижу в cx-programmer и вместо программирования "хожу по граблям" особенностей языка и ПЛК... Буду очень признателен за помощь!


В начало
 Профиль  
 
 Заголовок сообщения: Re: Функциональные блоки и массивы на ST
СообщениеДобавлено: Пт июл 03, 2015 12:20 
Не в сети

Регистрация: Пт окт 14, 2011 17:04
Сообщения: 726
5)


У вас нет необходимых прав для просмотра вложений в этом сообщении.


В начало
 Профиль  
 
 Заголовок сообщения: Re: Функциональные блоки и массивы на ST
СообщениеДобавлено: Пт июл 03, 2015 12:33 
Не в сети

Регистрация: Пн июн 29, 2015 14:22
Сообщения: 18
alexjdie писал(а):
5)


Спасибо! сделано:)


В начало
 Профиль  
 
 Заголовок сообщения: Re: Функциональные блоки и массивы на ST
СообщениеДобавлено: Пт июл 03, 2015 13:25 
Не в сети
Site Admin
Аватара пользователя

Регистрация: Вт сен 19, 2006 21:13
Сообщения: 3510
Откуда: Москва
По поводу массивов тут уже было.

2) Создайте внутри ФБ длинный массив привязанный к реальным адресам контроллера.

3) по поводу ST нужно справку смотреть, на LAD min, max есть. Определение длины массива? Есть принципиальное отличие программирования подобных контроллеров от программ для компа или кодесиса, Вы адресам памяти присваиваете названия т.е. распределяете память самостоятельно, а не компилятор пихает ваши переменные неизвестно куда.
Даже используя в программере автоматическое распределение адресов переменных, вы всегда знаете адреса этих переменных

4) Вы про косвенную адресацию?


В начало
 Профиль  
 
 Заголовок сообщения: Re: Функциональные блоки и массивы на ST
СообщениеДобавлено: Пт июл 03, 2015 15:04 
Не в сети

Регистрация: Пн июн 29, 2015 14:22
Сообщения: 18
Олег, спасибо за помощь!
2) А как привязать переменные массива к реальным адресам ПЛК внутри ФБ?
3) Да, вот как раз я и пересел с Codesys и ОВЕНа на Omron. В ST тоже есть функция МIN MAX, но она находит мин и макс только среди своих аргументов, т.е. через запитую нужно перечислить ссылки на каждый элемент массива(!). А если массив в 1000 элементов... в общем, видимо придется перебором это делать... И опять же, я не могу сделать универсальный ФБ для определения мин и макс значения, потому что чтобы перебрать все элементы входного массива нужно знать его длину, а метода определения длины нет... :evil:
4) Что-то вроде того, хочется иметь массив в котором в качестве значений реальные адреса плк, а в качестве индексов (вернее ключей) элементы типа М1, М2 ну или подобные.

И еще все-таки, как в ST передать и вернуть массив из ФБ? На LD все понятно - цепляем некую переменную к выходному терминалу ФБ, а какой синтаксис в ST?


В начало
 Профиль  
 
 Заголовок сообщения: Re: Функциональные блоки и массивы на ST
СообщениеДобавлено: Пн июл 06, 2015 12:54 
Не в сети

Регистрация: Пн июн 29, 2015 14:22
Сообщения: 18
Коллеги, помогите пожалуйста!( Самый главный вопрос на данный момент как в ST передать и вернуть массив из ФБ? Какой синтаксис в ST для этого? (


В начало
 Профиль  
 
 Заголовок сообщения: Re: Функциональные блоки и массивы на ST
СообщениеДобавлено: Пн июл 06, 2015 19:00 
Не в сети

Регистрация: Пт янв 30, 2009 21:25
Сообщения: 518
В CJ2 есть очень интересный способ.
Создаешь структуру данных.
И передаешь в ФБ структуру. Т.е. на входе ФБ только один вход с именем структуры, а внутри ФБ все переменные структуры Ваши.
Можно передавать и массивы структур.
Жаль что ФБ нельзя создать массивом, а тоб такого написал :? .

_________________
А нам, все равно, и ровно.


В начало
 Профиль  
 
 Заголовок сообщения: Re: Функциональные блоки и массивы на ST
СообщениеДобавлено: Вт июл 07, 2015 09:00 
Не в сети

Регистрация: Пн июн 29, 2015 14:22
Сообщения: 18
Ярослав, спасибо! Со структурами я разобрался, довольно полезная штука:). Но еще раз - я уже несколько дней не могу разобраться как на ST вернуть массив из ФБ в основную программу?
типа: myArray = myFB(returnedArray);
Не подскажете?


В начало
 Профиль  
 
 Заголовок сообщения: Re: Функциональные блоки и массивы на ST
СообщениеДобавлено: Вт июл 07, 2015 12:25 
Не в сети
Site Admin
Аватара пользователя

Регистрация: Вт сен 19, 2006 21:13
Сообщения: 3510
Откуда: Москва
Указываете внутри блока какую-то переменную, массив привязанный к адресам, с этими адресами и работаете перед или после ФБ (если несколько экземпляров этого ФБ)
Можно сделать переменую на входе фб как указатель массива, а внутри фб здоровенный массив, который большой кусок памяти цепляет, получите возможность из фб работать с любым куском памяти, необходимость в переносе массивов просто отпадёт.

перебросить пачку значений из одних адресов в другие, на LD служит XFER,

В Омроне переместить кучу данных и наити минимум с максимумом проще на LD.
Цитата:
В ST тоже есть функция МIN MAX, но она находит мин и макс только среди своих аргументов, т.е. через запитую нужно перечислить ссылки на каждый элемент массива(!). А если массив в 1000 элементов...

На LD только управляющее слово с кол-вом данных и адрес первого слова из массива

После Codesys будут некоторые сложности с пониманием отличия переменных от адресов в памяти у Омрона, Дельты, Мицубиши и.т.п.


У вас нет необходимых прав для просмотра вложений в этом сообщении.


В начало
 Профиль  
 
 Заголовок сообщения: Re: Функциональные блоки и массивы на ST
СообщениеДобавлено: Вт июл 07, 2015 13:53 
Не в сети

Регистрация: Пн июн 29, 2015 14:22
Сообщения: 18
Олег, большое спасибо! Все становится на свои места и приходит понимание)


В начало
 Профиль  
 
 Заголовок сообщения: Re: Функциональные блоки и массивы на ST
СообщениеДобавлено: Ср июл 08, 2015 14:30 
Не в сети

Регистрация: Пн июн 29, 2015 14:22
Сообщения: 18
Коллеги, появился еще один банальный вопрос - каким методом/функцией запускаются/останавливаются задачи? В LD это TKON и TKOF. Как это делается в ST?
Вообще, создается впечатление, что омрон не дает возможности полноценно писать на ST. Все примеры в мануалах на LD, нет многих функций, легко разобраться как что-то сделать на LD и непонятно и ни где не описано как то же самое реализовать на ST... В Codesys с этим гораздо лучше, там ST полноценный язык. Я писал довольно большие программы не прибегая ни к LD ни к чему-то еще.


В начало
 Профиль  
 
 Заголовок сообщения: Re: Функциональные блоки и массивы на ST
СообщениеДобавлено: Ср июл 08, 2015 19:13 
Не в сети
Site Admin
Аватара пользователя

Регистрация: Вт сен 19, 2006 21:13
Сообщения: 3510
Откуда: Москва
Цитата:
Вообще, создается впечатление, что омрон не дает возможности полноценно писать на ST
Вы правы, ST для омрона просто дань моде...и как дополнительный инструмент к основному LD.

В папке программера есть мануал по ST, и некоторые функции вроде удобнее чем на LD.
--------------------------
На LD кстати можно перетаскивать блоки мышкой, и копировать перетаскиванием, нажав Ctrl, и посмотрите это contents/content.php
------------------------------
Кодесис для совсем другого класса контроллеров, фактически для маленьких писишек со своей операционкой, и даже с линуксом и виндой, т.е. кодесис что то вроде Visual Studio со своим рантаймом вроде NET Framework (кодесису до VS на мой взгляд как до луны пешком)

Слишком разные устройства, классический ПЛК, и например планшет с рантаймом кодесиса (СПК107).
Переварите разницу, будет проще....

-----------------------
не задавайте время цикла контроллера, как принято в ОВЕНе :lol:


В начало
 Профиль  
 
 Заголовок сообщения: Re: Функциональные блоки и массивы на ST
СообщениеДобавлено: Чт июл 09, 2015 15:59 
Не в сети

Регистрация: Пн июн 29, 2015 14:22
Сообщения: 18
Вроде бы, все удалось сделать что было задумано, но теперь проблема с IDE - при попытки запустить эмуляцию вываливается ошибка "Не удалось запустить лестничный обработчик" (у меня локализованная версия). Никаких настроек не менял, просто в один прекрасный момент при отладки перестал запускаться эмулятор...
Куда смотреть? Заранее спасибо:)

К тому же, если просто создать новый проект и попробовать запустить его в эмуляторе появляется ошибка "Не удалось подключиться к ПЛК" и предложение проверить источник питания и соединение между ПЛК и ПК).


В начало
 Профиль  
 
 Заголовок сообщения: Re: Функциональные блоки и массивы на ST
СообщениеДобавлено: Чт июл 09, 2015 16:53 
Не в сети

Регистрация: Пт янв 30, 2009 21:25
Сообщения: 518
nikitab900 писал(а):
Ярослав, спасибо! Со структурами я разобрался, довольно полезная штука:). Но еще раз - я уже несколько дней не могу разобраться как на ST вернуть массив из ФБ в основную программу?
типа: myArray = myFB(returnedArray);
Не подскажете?


Сегодня попозже соображу пример, выложу сюда.

_________________
А нам, все равно, и ровно.


В начало
 Профиль  
 
 Заголовок сообщения: Re: Функциональные блоки и массивы на ST
СообщениеДобавлено: Чт июл 09, 2015 17:12 
Не в сети

Регистрация: Пн июн 29, 2015 14:22
Сообщения: 18
Ярослав писал(а):
nikitab900 писал(а):
Ярослав, спасибо! Со структурами я разобрался, довольно полезная штука:). Но еще раз - я уже несколько дней не могу разобраться как на ST вернуть массив из ФБ в основную программу?
типа: myArray = myFB(returnedArray);
Не подскажете?


Сегодня попозже соображу пример, выложу сюда.


Спасибо! Я воспользовался советом Олега по размещению массива в памяти (в области D, например) и через эту область обмениваться массивами с ФБ. Пока работает).


В начало
 Профиль  
 
Показать сообщения за:  Сортировка  
Начать новую тему Ответить на тему  [ 31 сообщений ]  На страницу 1, 2, 3  Вперёд

Часовой пояс: UTC + 3 часа (Russia: MSK)


Кто сейчас на конференции

Сейчас этот форум просматривают: BingBot и гости: 5


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Переход:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская документация по phpBB 3