Заметки программированию новой серии AS200/300/ES3

bayk
Сообщения: 887
Зарегистрирован: 30 май 2015, 21:20

Заметки программированию новой серии AS200/300/ES3

Сообщение bayk »

Данный пост будет добавляться и редактироваться по мере обнаружения мной косяков и ошибок или нестандартного относительно DVP подхода.
Ни для кого не секрет, что несмотря на все приятности в новых контроллерах, резко изменилась не только адресация системных реле и регистров, но и совершенно нелепым, неудобным, и неприятным способом изменилась работа с функциональными блоками.
в них:
1.исчезла возможность работы с импульсными сигналами LDF и LDP
2 .исчезла возможность работы с сигналом импульса по собравшейся цепи NP/PN
3.Ужасно ухудшилась работа со счетчиками и таймерами - теперь их надо подключать снаружи блока, а во время отладки их счет не виден внутри ФБ
4.место под следующие косяки

Как теперь жить (работать)
1, для того, чтобы можно было использовать импульсные команды, аналогичные LDF/LDP внутри ФБ, появились команды NED/PED, к которым в S1 подается анализируемый флаг, а на S2 УНИКАЛЬНЫЙ флаг типа BOOL, который надо создать в локальных переменных ФБ. ни в коем случае нельзя повторно применять этот флаг! его повторное применение не отслеживается компилятором, и может присвести к непредсказуемой работе ФБ
2. для того, чтобы можно было использовать импульсные команды, аналогичные NP/PN, появились FB_NP/FB_PN (находятся в том же меню, где и NP/PN). для их применения нужно поставить их в место нетворка, аналогичное NP/PN, но им нужно присвоить, как и в п.1 уникальный флаг типа BOOL (все требования к этому флагу, как и в п.1)
3. Ни в коем случае внутри ФБ нельзя дважды применять одно и то же имя переменной, заданное типом C_counter, T_counter, HC_counter. если вам надо 3 раза применить счетчик внутри ФБ то делайте 3 переменных C_counter и подключайте 3 счетчика снаружи. аналогично и для остальных, указанных мной в этом пункте типов. как и в п.1 ни компилятор ни прошивальщик, ни сам ПЛК никак не контролирует это условие. только приводит к непредсказуемым последствиям во время работы.
UPD Решил не разводить новую тему, а выкладывать любые нюансы программирования, найденные мной при написании проектов.
Последний раз редактировалось bayk 11 апр 2022, 19:47, всего редактировалось 3 раза.

skv8016
Сообщения: 6
Зарегистрирован: 03 дек 2017, 00:09

Re: Заметки по ФБ в новой серии AS200/300/ES3

Сообщение skv8016 »

Также стоит добавить, что в ST не доступно множество функций.
Мне кажется, что ISPSoft сильно не допилен под эту серию, отчего у меня лично возникли смешанные чувства при написании программы. Как выяснилось, реализовать удобные вычисления на ST не всегда получится и придётся опять лепить портянку на кучу экранов в LD

bayk
Сообщения: 887
Зарегистрирован: 30 май 2015, 21:20

Re: Заметки по ФБ в новой серии AS200/300/ES3

Сообщение bayk »

не расскажешь, хотя бы в кратце, что не работает на СТ? я просто еще ни разу не делал проектов с использованием СТ, посокльку чаще беру АС200 под простые ЛД проекты. но с удобным обменом по RS и ETH.

GoGo
Сообщения: 91
Зарегистрирован: 13 июн 2013, 16:14

Re: Заметки по ФБ в новой серии AS200/300/ES3

Сообщение GoGo »

Помню были различия в работе структурных переменных вне и внутри ФБ. Что-то связанное с невозможностью обращения к отдельному биту переменной. А в остальном удалось целиком реализовать код на ST для 200 серии. Да, еще неприятно удивился отсутствию UINT у 228, в ST для 16- битных чисел > 32768 пришлось изобретать велосипед.

skv8016
Сообщения: 6
Зарегистрирован: 03 дек 2017, 00:09

Re: Заметки по ФБ в новой серии AS200/300/ES3

Сообщение skv8016 »

bayk писал(а):
07 авг 2020, 12:09
не расскажешь, хотя бы в кратце, что не работает на СТ? я просто еще ни разу не делал проектов с использованием СТ, посокльку чаще беру АС200 под простые ЛД проекты. но с удобным обменом по RS и ETH.
Точно не помню. Что-то из математики, вроде функции работы с Real. Сразу вернулся в LD, т.к. тратить время на попытки больше не захотелось. Можно попробовать в ST повтыкать библиотечные функции, может в вашем случае и прокатит, хотя я не очень понимаю, почему не прописали ограничения на использование в доках.
В общем после перехода с DVP сплошное расстройство. AS серия, на мой взгляд не дотягивает до своей стоимости, тогда как DVP серия просто идеал по соотношению цена/функционал.
Сейчас бы отдал предпочтение S7-1200, т.к. всё и везде работает одинаково, доки понятней и гибкость в программировании не уступает СИ.

Sfinx
Сообщения: 14
Зарегистрирован: 12 июн 2018, 15:26

Re: Заметки по ФБ в новой серии AS200/300/ES3

Сообщение Sfinx »

УНИКАЛЬНЫЙ флаг типа BOOL, который надо создать в локальных переменных ФБ
Так всегда было в Siemens, начиная с 300 серии. Всегда бесило....

bayk
Сообщения: 887
Зарегистрирован: 30 май 2015, 21:20

Re: Заметки программированию новой серии AS200/300/ES3

Сообщение bayk »

В контроллерах отключили возможность выбора инициализировать ли стартовые значения переменных при прошивке.
я нашел способ как это теперь делать:
ля этого переводим контроллер в «стоп» (иначе выдаст ошибку, что в RUN нельзя) и далее в меню ISPsoft > PLC > Initial value sett. > Initialize retentive symbols !!! все! супер! когда надо, тогда и прописываю инициализационные значения из проекта!

Еще при работе на ST выяснил, что типы переменных он проверять не может и надо самостоятельно за этим следить и применять в блоках на ST привычные для LD команды mmov, rmov, int, float и т.д.
еще обращаю внимание что специализированные команды цикла с перебором from to требуют тип переменной обязательно INT/DINT. если указать word, то будете долго искать, почему не компилируется.

Поскольку теперь все переменные на AS серии по умолчанию не привязаны к адресам, то необходимо конвертировать данные word/dword между собой специализированными командами mmov и rmov.

После разговора с техподдержкой они настоятельно советуют высокоскоростные инструкции не располагать в блоках/pou на языке ST

bayk
Сообщения: 887
Зарегистрирован: 30 май 2015, 21:20

Re: Заметки программированию новой серии AS200/300/ES3

Сообщение bayk »

Заметил одну очень критичную беду при написании FB на ST. не дай бог тронуть сортировку локальных переменных! там куда вставлен этот FB все разваливается. то есть если при корректировке FB на LD при изменении порядка сортировки просто в тексте программы сортировка меняется и все привязанные переменные просто перемещаются вслед за изменением положения внутренних входных/выходных точек, то FB на ST все привязанные переменные остаются на местах, а положение
входных/выходных точек изменяется. и все надо заново перепривязывать. поскольку имя переменной не может начинаться с цифры, то и простой нумерацией не прокатит. можно делать префикс из букв латинского алфавита+цифры. но это очень неудобно.

НУ и на последок еще один, уже более приятный момент. при применении (по крайней мере я пробовал с простыми математическими FB) FB внутри другого FB, написанного на ST допускается применять только один идентификатор этого FB во время работы цикла FOR/Next. тоесть вот такая конструкция:

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

FOR i:=0 TO 9 BY 1 DO 
fb_ident0 (mm := var1[i], eGear := var2, Pulses => var3[i]);     
END_FOR; 
работает корректно.

bayk
Сообщения: 887
Зарегистрирован: 30 май 2015, 21:20

Re: Заметки по ФБ в новой серии AS200/300/ES3

Сообщение bayk »

GoGo писал(а):
10 авг 2020, 14:27
Помню были различия в работе структурных переменных вне и внутри ФБ. Что-то связанное с невозможностью обращения к отдельному биту переменной. А в остальном удалось целиком реализовать код на ST для 200 серии. Да, еще неприятно удивился отсутствию UINT у 228, в ST для 16- битных чисел > 32768 пришлось изобретать велосипед.
надо использовать тип WORD для этого.

GoGo
Сообщения: 91
Зарегистрирован: 13 июн 2013, 16:14

Re: Заметки программированию новой серии AS200/300/ES3

Сообщение GoGo »

Спасибо, кэп ))))))))

Ответить