Страница 3 из 4

Re: Вопросы по Step 7 Pro (Ka3ax)

Добавлено: 15 май 2018, 21:51
mr_Frodo
язык только СТЛ - так бывает?
Безымянный.jpg

Re: Вопросы по Step 7 Pro (Ka3ax)

Добавлено: 15 май 2018, 22:26
Ka3ax
спасибо, такая идея посещала. но подумал следующее,
исполнение, время наверное то же останется, инструкции теже.
размер, да, уменьшится.
я полагал вы предлагаете типа с помощью sfb больщее количество
переменных считывать и далее... а далее я не осилил представить.
мне кажется, в FC2 можно цикл организовать, знать бы как.

Да, только STL, извращенцы, млин.
кто то полагает, что STL стандар в индустрии.

Re: Вопросы по Step 7 Pro (Ka3ax)

Добавлено: 16 май 2018, 05:05
Михайло
Ka3ax писал(а):Да, только STL, извращенцы, млин.
кто то полагает, что STL стандар в индустрии.
Наоборот, новый стандарт IEC61131 вроде собирается отменить IL (STL). Правда никак не может. Но Сименс уже отказался в ТИА Портале от STL, там всё прекрасно делается в LD (LAD) и ST (SCL).

Re: Вопросы по Step 7 Pro (Ka3ax)

Добавлено: 16 май 2018, 05:29
Ka3ax
Михайло писал(а):
Ka3ax писал(а):Да, только STL, извращенцы, млин.
кто то полагает, что STL стандар в индустрии.
Наоборот, новый стандарт IEC61131 вроде собирается отменить IL (STL). Правда никак не может. Но Сименс уже отказался в ТИА Портале от STL, там всё прекрасно делается в LD (LAD) и ST (SCL).
это не мне знакомо, вчера то же самое говорил "коллеге", еще добавил, что SCL единственный язык которым можно SFCблоки PCS7 создавать.

но все одно

- а у нас SCL запрещен..

ps
хотел цикл организовать, но все покраснело,
неверно к элементу массива обращаюсь?

psps
что то не так, счетчик еще нужно уменьшать.
извините, на работу я, нет там у меня кирилицы

Re: Вопросы по Step 7 Pro (Ka3ax)

Добавлено: 16 май 2018, 10:21
Автоматизатор
На STL нельзя использовать такую конструкцию. SCL позволяет, а STL - нет.

Надо пользоваться косвенной адресацией. Получается витиевато. Где-то тут на форуме выкладывал пример.

Re: Вопросы по Step 7 Pro (Ka3ax)

Добавлено: 16 май 2018, 16:40
Ka3ax
я так и знал,, что не так все просто

Re: Вопросы по Step 7 Pro (Ka3ax)

Добавлено: 16 май 2018, 22:02
mr_Frodo
Цикл на СТЛ просто организовать используя прыжок в начало по результату выполнения JC или не выполнения JCN условия формирования РЛО.
Пример: автоматического последовательного конвертирования данных из одной дб инт в дб реал.
Безымянный.jpg

Re: Вопросы по Step 7 Pro (Ka3ax)

Добавлено: 16 май 2018, 22:08
Ka3ax
черт, меня опередили, я только пытаюсь.
спасибо, буду смотреть.

ps

еще и гибкая функция, я о количестве преобразумых переменных!

Re: Вопросы по Step 7 Pro (Ka3ax)

Добавлено: 16 май 2018, 22:32
mr_Frodo
в данном примере есть недоработка: при асимметрии начальных адресов источника и цели, возможно переполнение целевого адреса, если он в ДБ "выше" источника а ДБ того же размера... тогда сами понимаете что ))) ЦПУ некуда будет складывать результаты конвертирования. Возможен вариант "горячего" создания целевой ДБ с помощью SFC22, но я пока с этим не разбирался и по описанию не понял до конца как она работает. В частности как формирует тип переменных %) ... Поэтому пока не знаю.

Re: Вопросы по Step 7 Pro (Ka3ax)

Добавлено: 16 май 2018, 22:49
Ka3ax
спасибо за время которое уделили.
но все одно мне нужно дорабатывать. мне нужны переменные Out ,
я должен еще задать имена переменным. без цикла и массива не обойтись.
ваш первый вариант реализует идею. попробую скрестить два варианта.

Re: Вопросы по Step 7 Pro (Ka3ax)

Добавлено: 17 май 2018, 23:12
Ka3ax
подскажите, отчего и такая конструкция не идет?

Re: Вопросы по Step 7 Pro (Ka3ax)

Добавлено: 18 май 2018, 03:44
Михайло
Arraj -> Array

Re: Вопросы по Step 7 Pro (Ka3ax)

Добавлено: 18 май 2018, 07:01
Ka3ax
Михайло писал(а):Arraj -> Array
утро доброе, так Arraj это переменная нет тип.
ps

наверное индекс массива только INT может быть

Re: Вопросы по Step 7 Pro (Ka3ax)

Добавлено: 19 май 2018, 09:18
Ka3ax
как все не просто, из справки, обращение к элементу массива при косвенной адресации
из справки

Код: Выделить всё

Adresse = (Array_Index * 8) * размермассива + начальныйадресмассива
получается не обратиться элементу массива в FC?
создал пустой FC с array as Int в INPUT и array as real in Out в надежде, что FC будет представлять собой блок с количеством входов равному количеству элементов в массиве и так же относительно выходов.
но в реале блок с одним входом и одним выходом...
я возрадовался, что получил блок с автоматическим добавлением входов по мере присвоения им переменных.
но радость была не долгой, входа и выхода не акцептируют переменные INT и Real..

где и что почитать, сузьте, пожалуйста область поиска

Re: Вопросы по Step 7 Pro (Ka3ax)

Добавлено: 19 май 2018, 14:37
mr_Frodo
Переменные типа ARRAY Вы можете применять в качестве параметров
блоков типа ARRAY с такой же структурой или как параметры блоков типа
ANY. Например, они могут быть скопированы с помощью системной
функции SFC 20 BLKMOV. Вы можете также определить отдельные
элементы массива в качестве параметров блока типа
ARRAY, если параметры блока относятся к тому же типу данных, что и эти элементы.
Если отдельные элементы массива относятся к простым типам данных, то
Вы можете обрабатывать их с помощью обычных STL-операторов.
Доступ к элементу массива обеспечивается по имени массива и индексу в
квадратных скобках. Индекс имеет фиксированное значение в STL и не
может быть изменен во время выполнения программы (не может быть
переменной).
Индекс в SCL может быть переменной или выражением с данными типа
INT; значение индекса может быть изменено во время выполнения программы.
SCL - наше Фсё!

Re: Вопросы по Step 7 Pro (Ka3ax)

Добавлено: 19 май 2018, 19:24
Михайло
Ka3ax
Чтобы ты не заблуждался, важно знать следующую информацию: S7-300 был разработан в 1995-м году и безбожно устарел. Тут невозможна гибкая работа с различными типами данными, с массивами вообще беда. Многие функции работают только с определёнными типами данными и приходится конвертировать. Большинство того, что работает в STL, нельзя реализовать в LAD/FBD.

В ТИА Портале с новыми S7-1x00 всё гораздо прикольнее. Здесь реально можно обойтись двумя языками: LAD и SCL. SCL очень удобен для обработки массивов данных, в остальных 97% случаев всё делается в LAD. В ТИА Портале язык STL доступен только для S7-1500 и он там нафиг не нужен, так как Сименс придерживалась политики, что все три языка LAD/FBD/STL должны быть равнофункциональными.

Re: Вопросы по Step 7 Pro (Ka3ax)

Добавлено: 19 май 2018, 21:26
Ka3ax
Михайло писал(а):Ka3ax
В ТИА Портале язык STL доступен только для S7-1500 и он там нафиг не нужен, так как Сименс придерживалась политики, что все три языка LAD/FBD/STL должны быть равнофункциональными.
выше уже говорили об этом.
мне никогда не нужен был STl, обходился SCL для самописных небольших решений. Хватало не глубоких знаний и хелпа.
Но фирма, где я, забила на мнение сименса.
политика фирмы STL, все на STL
мне нужно, как в анекдоте выучить китайскй к утру, понять, как
все это крутится, хотя бы принцип. Опять же старые проекты нужно поддерживать.
я понимаю код, понимаю что произойдет при его исполнении, но отчего
только так и не по другому.
я о невозможности передать число массиву

Код: Выделить всё

T    Arraj[AR1,P#0.0]
тут как бы понял, в этом случае весь массив передается
[quote]пробовал так
T    #Arraj[AR1,P#0.0]
и
так
T    DW#Arraj[AR1,P#0.0]
если существует массив, то с ним же можно работать
или если пустой блок FC с Input и Out массивами сохранился, без ошибок и вызывается, то отчего не принимает переменные.
об этом в книгах не пишут, выучить быстро не получается, от этого и спрашиваю.

еще вариант обращения , не вызывающий синтактических ошибок в блоке

Код: Выделить всё

L p##InputInt
LAR1 
L p##OutReal
LAR2
....
L W[AR1,p#0.0]
T D[AR2,p#0.0]
но не принимаются входные данные и выходные , как и в случае с пустым блоком.
[наврал]ошибка не совпадение типов.
но элементы массива же теже Int и Real, что пытаюсь входу и выходу присвоить. так как вижу вместо ожидаемых нескольких входов и выходов только по одному, то полагаю, что тип данных требуется массив. но в коде же DW и W[/наврал]
в этом случае компилятор информаирует в FBU редакторе , что пустой операнд.
[наврал]а случае с пустым блоком не совпадение типов[/наврал]
так же пустой операнд.

Re: Вопросы по Step 7 Pro (Ka3ax)

Добавлено: 20 май 2018, 10:48
Ka3ax
ответ на мои вопросы

при косвенной адресации в STL не допускается символьная адресация, только абсолютная.
Так как в FC отсутствует внутрення адресация, то обращение через индекс к элементу массива невозможно.
Или?

одно не понятно, от чего редактор позволяет создавать неработающие конструкции

Re: Вопросы по Step 7 Pro (Ka3ax)

Добавлено: 20 июл 2018, 06:08
Ka3ax
специально код весь привел. что бы понятнее было.
каким образом обеспечивается точность длительности выходного импульса?
там же и пемеремнная Ts, заявленные еденицы секунды и таймер Timer1 как бы считатем в секундах
или код нужно размещать только в ob35? а если мне 100 раз нужно вызывать блок? все в 35 OB тянуть?
Блок одновибратора.
1. Исходный код на языке структурированного текста IEC 61131-3.

Код: Выделить всё

FUNCTION_BLOCK FB11 //Одновибратор (генератор одиночного импулса по нарастающему фронту входного сигнала).
TITLE = 'Одновибратор';

VAR_INPUT //Входные переменные, сохраняемые.
X:BOOL:=FALSE; //Вход.
TimePulse:REAL:=0.0; //Длительность выходного импульса [с].
Ts:REAL:=0.0; //Шаг дискретизации по времени [с].
END_VAR

VAR_OUTPUT //Выходные переменные, сохраняемые.
Y:BOOL:=FALSE; //Выход.
END_VAR

VAR //Внутренние переменные, сохраняемые.
Timer1:REAL:=0.0; //Текущее время программного таймера1 в секундах.
XPrevios:BOOL:=FALSE; //Предыдущее состояние входа для детектора нарастающего фронта.
Trigger1:BOOL:=FALSE; //Встроенный RS- триггер1.
END_VAR

VAR_TEMP //Внутренние переменные, несохраняемые.
Set1:BOOL; //Встроенный RS- триггер1.
Reset1:BOOL; //Встроенный RS- триггер1.
END_VAR

//Алгоритм.
//Детектор нарастающего фронта входного импульса.
Set1:=(X AND NOT(XPrevios));
//Условие сброса RS- триггера1.
Reset1:=(Timer1>=TimePulse);
//RS- триггер1.
Trigger1:=(Trigger1 OR Set1) AND (NOT(Reset1));
//Управление таймера1 по RS- триггеру.
IF (Trigger1=TRUE)
THEN
Y:=TRUE;
Timer1:=Timer1+Ts;
ELSE
Timer1:=0.0;
Y:=FALSE;
END_IF;
//Запомнить предидущее состояние входа.
XPrevios:=X;
END_FUNCTION_BLOCK

Re: Вопросы по Step 7 Pro (Ka3ax)

Добавлено: 20 июл 2018, 18:42
Михайло
Какая точность-то нужна? Пока можно сказать, что алгоритм рабочий, не более.