This is topic О строках и не только in forum Языки программирования в TRACE MODE 6 / Algorithm Programming Languages at Форум TRACE MODE: техническая поддержка.


To visit this topic, use this URL:
http://forum.adastra.ru/ultimatebb.php/ubb/get_topic/f/33/t/000069.html

Posted by Dmitry.niimm (Участник № / Member № 3380) on :
 
Добрый (а, может, и не очень) день,

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

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 запроса?

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

Дмитрий
 
Posted by AdAstrA Technical Support Ukraine (Участник № / Member № 2198) on :
 
1. FBD-блоки не работают со строчными типами данных.
2. Проверил в табличном редакторе аргументов программ – кавычки в строку не попадают.

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

5. Значение аргумента типа DATE_AND_TIME задается в формате dt#yyyy-mm-dd-hh:mm:ss (год, месяц, день, час, минута, секунда).
 
Posted by Dmitry.niimm (Участник № / Member № 3380) on :
 
Спасибо за ответ, все понятно, за частичным исключением п.2: _двойные_ кавычки не попадают, а вот от одинарных открывающая попадает, а закрывающая - нет.

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

В целом, проблемы небольшие и решаемые, но все же доработать не помешало бы.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Это происходит только в редакторе при отладке, в реальном времени все нормально. Поправим.
 
Posted by drooha (Участник № / Member № 3306) on :
 
Хотелось бы узнать есть ли в языке Техно ST какая нибудь функция для перевода числа в строку и наоборот??

Заранее благадарю.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Специальных функций преобразования таких данных друг в друга нет.
Число конвертируется в свое строковое отображение.
Строка конвертируется в число, если она представляет собой строковое отображение числа.
 


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



Powered by Infopop Corporation
UBB.classic™ 6.7.2