SIEMENS, DF&PD

Предыдущее посещение: Чт июн 30, 2016 0:59 Текущее время: Чт июн 30, 2016 0:59

Часовой пояс: UTC + 3 часа




 [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: Чем плох скрипт?
СообщениеДобавлено: Вт июл 23, 2013 14:07 
Не в сети
Новый писатель

Зарегистрирован: Пт июл 12, 2013 16:12
Сообщения: 14
WinCC 2008 Flexible

Что с ним не так?

Код:

Dim read_tag_mask = 2 ^ read_tag_number
Dim write_tag_mask = 2 ^ write_tag_number
If (read_tag And read_tag_mask) == 0 Then
   write_tag = (write_tag Or write_tag_mask)
Else
   write_tag = (write_tag And Not write_tag_mask)
End If



Параметры скрипта:
read_tag - тег
write_tag - тег
read_tag_number - число
write_tag_number - число


Данный скрипт должен устанавливать значение бита (write_tag_number) одного тега (write_tag), в зависимости от значения бита (read_tag_number) другого тега (read_tag)

Сделал кнопочку, по событию вызываю данный скрипт. Параметры read_tag и write_tag выбрал теги из списка, read_tag_number и write_tag_number ввел числа.

При попытке собрать проект такое сообщение "Error : Script InvertBitByAnotherBit compiled with errors".

У меня сложилось впечатление, что я не правильно передаю параметры в скрипт.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт июл 23, 2013 18:10 
Не в сети
Известный Писатель

Зарегистрирован: Ср фев 16, 2011 14:23
Сообщения: 434
Откуда: Санкт-Петербург, Москва
Вероятно потому что надо явно указать тип UInteger

А вообще не работайте с числами и битами на бейсик, это очень дурной тон.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср июл 24, 2013 7:34 
Не в сети

Зарегистрирован: Пн июл 22, 2013 13:09
Сообщения: 6
Alexey_Spb_82 писал(а):
А вообще не работайте с числами и битами на бейсик, это очень дурной тон.

А можно поинтересоваться, почему? И тогда что считается не дурным? Или это относится только к Flexible.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср июл 24, 2013 10:32 
Не в сети
Известный Писатель

Зарегистрирован: Ср фев 16, 2011 14:23
Сообщения: 434
Откуда: Санкт-Петербург, Москва
Си: Работа с тэгами / их статусами / числами / битами и т.д. Работа с графикой на мнемосхемах WinCC (при понимании того как это правильно делается).
Бейсик: Работа с БД / Exel / внешними приложениями и т.д.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср июл 24, 2013 11:11 
Не в сети
Известный Писатель

Зарегистрирован: Чт дек 15, 2005 18:57
Сообщения: 308
Откуда: Одесса, Украина
Простите, не хочу разводить очередной холивар басикVSс - но без конкретных примеров и цифр ваше заявление о плохом стиле сильно тянет на ИМХО. На сколько я помню тут бегала цифра только по скоростям выборки из бд где басик делал С. А басик достаточно сильная платформа, чтобы отводить ей столь малую нишу. Погуглите справочник по басик скрипту - сильно можно удивиться его возможностям. Это так - мысли и имхо. И это все для взрослой скады а не тонких кастратов.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср июл 24, 2013 11:31 
Не в сети
Ведущий специалист

Зарегистрирован: Пт дек 31, 2004 13:25
Сообщения: 2248
Откуда: SIEMENS I IA AS Москва
Не вмешиваясь в спор о том, что круче С или VBS, только замечу о "плохости" приведенного скрипта - в VBS нет оператора "==" :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср июл 24, 2013 11:31 
Не в сети
Известный Писатель

Зарегистрирован: Пн янв 24, 2011 19:45
Сообщения: 167
Откуда: Ukraine, Zp
и пусть начнется битва? :)
Работа с байтами/битами в си конечно лучше. А вот визуализацию предпочитаю vbs.
Изображение


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср июл 24, 2013 11:39 
Не в сети
Новый писатель

Зарегистрирован: Пт июл 12, 2013 16:12
Сообщения: 14
Кроме "==" еще одна странная "плохость"

Код:
Dim read_tag_mask = 2 ^ read_tag_number
Dim write_tag_mask = 2 ^ write_tag_number


меняем на
Код:
Dim read_tag_mask, write_tag_mask
read_tag_mask = 2 ^ read_tag_number
write_tag_mask = 2 ^ write_tag_number


Теперь ошибок нет.


Разве можно во Flexible использовать C? Если да, то подскажите как. Лично мне намного привычнее C, чем VBS.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср июл 24, 2013 13:08 
Не в сети
Известный Писатель

Зарегистрирован: Ср фев 16, 2011 14:23
Сообщения: 434
Откуда: Санкт-Петербург, Москва
Diemon ну это как удобнее :-) Это же тоже важно.

Просто, к сожалению, судя по этому форуму не все знают как правильно использовать скрипты Си в графике. Обычно в скриптах используют тормозные Set/GetPropXXX применительно к внешним объектам, что не рекомендует делать Siemens уже не помню в каком мануале видел это).

Вместо этого следует возвращать значение непосредственно на свойство объекта по изменению. По такому принципу, кстати, работает Dynamic Dialog (по сути это скрипт C).

По приведенной вами таблице (третья строчка сверху) видно что в этом случае производительность С почти в два раза выше VBS.

Впрочем, пообщаться на эту тему можно по личке, а то оффтоп :-)

dkzup, если не ошибаюсь во флексе нет Си (не работал с ним). Не обратил вначале внимания что у вас флекс, извините.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
 [ Сообщений: 9 ] 

Часовой пояс: UTC + 3 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


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

Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group