Форум TRACE MODE: техническая поддержка Послать новую тему / Post New Topic  Послать ответ / Post A Reply
мой профиль / my profile авторизация / login | регистрация / register | поиск / search | часто задаваемые вопросы / faq | начало / forum home

  Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
» Форум TRACE MODE: техническая поддержка » ТЕХНИЧЕСКАЯ ПОДДЕРЖКА / TECHNICAL SUPPORT TRACE MODE 6 » Языки программирования в TRACE MODE 6 / Algorithm Programming Languages » О строках и не только

   
Автор / Author Тема / Topic: О строках и не только
Dmitry.niimm
Junior Member / Новичок
Участник № / Member № 3380


Icon 13 отправлено / posted      Профиль для / Profile for Dmitry.niimm           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Добрый (а, может, и не очень) день,

Нарыл я тут сразу несколько непоняток связанных со строками:

1. Создаем FBD программу с двумя аргументами типа STRING, один из них (s1) типа IN, второй (s2) - OUT. Пытаемся копировать s1 в s2 блоком move. После запуска в профайлере видим, что канал получает признак недостоверности и, соответственно, висит и не пересчитывается.

Абсолютно аналогичные результаты получаются если вместо FBD блока move использовать самописную ST-функцию, в теле которой делать переприсваивание строк. Более того, в процессе ковыряния выяснено, что для того, чтобы подвесить канал, достаточно из FBD вызвать функцию с одним входным аргументом:
FUNCTION_BLOCK ff
VAR_INPUT si : STRING; END_VAR
var s : STRING; end_var
s = si;
END_FUNCTION_BLOCK

2. В табличном редакторе аргументов невозможно корректно ввести строковую константу - без кавычек ввод не воспринимается, а если вводить с кавычками - то последние тоже попадают внутрь строки, что есть совсем нехорошо.

3. Предыдущий пункт касается также редактора SQL запросов, что приводит к неудобствам при проверке запросов.

4. Вот нужно мне в базу ложить дату/время. Естественно, SQL драйвер не желает, да и не имеет право желать получения даты в виде каких-то там секунд не поймешь с какой даты, а честно ждет строку, только вот кто ее ему даст? И приходится создавать лишний канал типа TIME для конвертации времени в строку, что не только не есть хорошо, но и может иметь неприятности, а именно:

а) в некой программе мы вычислили несколько параметров, в том числе и типа дата/время, которые нужно положить в базу, и активировали SQL канал посылкой в него номера запроса;
б) каналом TIME преобразовали время в строку;
в) каналом SQL положили все данные в базу.

Вроде все нормально, только вот где гарантия, что пересчет каналов будет идти именно в таком порядке, а не в порядке а) в) б) и в запрос попадет неактуальное значение timestamp'а?

5. (в дополнение к п.4) А как, собственно, можно ввести строковую константу типа DATE_AND_TIME в редактор аргументов SQL запроса?

Заранее благодарю за разъяснения/исправления/дополнения.

Дмитрий

Сообщения / Posts 19 | Из / From: Украина  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
AdAstrA Technical Support Ukraine
Forum Member / Участник форума
Участник № / Member № 2198


Icon 1 отправлено / posted      Профиль для / Profile for AdAstrA Technical Support Ukraine           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
1. FBD-блоки не работают со строчными типами данных.
2. Проверил в табличном редакторе аргументов программ – кавычки в строку не попадают.

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

5. Значение аргумента типа DATE_AND_TIME задается в формате dt#yyyy-mm-dd-hh:mm:ss (год, месяц, день, час, минута, секунда).

Сообщения / Posts 58 | Из / From: Украина  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Dmitry.niimm
Junior Member / Новичок
Участник № / Member № 3380


Icon 1 отправлено / posted      Профиль для / Profile for Dmitry.niimm           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Спасибо за ответ, все понятно, за частичным исключением п.2: _двойные_ кавычки не попадают, а вот от одинарных открывающая попадает, а закрывающая - нет.

Но это касается редактора аргументов, а в редакторе SQL запросов кавычки не убираются совсем, и при тестировании запроса приходится кавычки из текста запроса убирать, а потом, для работы монитора, вставлять обратно.

В целом, проблемы небольшие и решаемые, но все же доработать не помешало бы.

Сообщения / Posts 19 | Из / From: Украина  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Это происходит только в редакторе при отладке, в реальном времени все нормально. Поправим.
Сообщения / Posts 17317 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
drooha
Forum Haunter / Завсегдатай форума
Участник № / Member № 3306


Icon 1 отправлено / posted      Профиль для / Profile for drooha           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Хотелось бы узнать есть ли в языке Техно ST какая нибудь функция для перевода числа в строку и наоборот??

Заранее благадарю.

Сообщения / Posts 107 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Специальных функций преобразования таких данных друг в друга нет.
Число конвертируется в свое строковое отображение.
Строка конвертируется в число, если она представляет собой строковое отображение числа.

Сообщения / Posts 17317 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
   

Quick Reply
Сообщение / Message:

HTML код не разрешен. / HTML is not enabled.
UBB код разрешен. / UBB Code is enabled.

Значки Graemlins / Instant Graemlins
   


Послать новую тему / Post New Topic  Послать ответ / Post A Reply Закрыть тему / Close Topic   Feature Topic   Переместить топик / Move Topic   Удалить топик / Delete Topic Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
 - Printer-friendly view of this topic
Перейти к / Hop To


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us



Powered by Infopop Corporation
UBB.classic™ 6.7.2