Форум 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 бесплатная Базовая версия / TRACE MODE 6 free Base version » Проблема со сборкой STRING из аргументов программы

   
Автор / Author Тема / Topic: Проблема со сборкой STRING из аргументов программы
Hip67
Forum Member / Участник форума
Участник № / Member № 4427


Icon 5 отправлено / posted      Профиль для / Profile for Hip67           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Здравствуйте.

Проект переводит время из контроллера из формата BCD в строку, чтобы потом записать в MS SQL. FBD программой я разбиваю BCD числа на string аргументы: year_e, month_e, ... sec_e. Следующей программой на ST я складываю из этих аргументов строку следующим образом:
datetime_end_CMNT:=day_e+'-'+month_e+'-'+year_e+' '+hour_e+':'+min_e+':'+sec_e;

В комментарии канала datetime_end ожидаю увидеть строку типа "6-10-15 12:11:59", но по факту получаю строку "6-10-15 12:11:11", т.е. значение sec_e в конце строки дублирует значение min_e. Путем экспериментов выявил, что проблема именно в значении sec_e.

Пробовал привязать аргумент программы FBD sec_e к входному значению HEX канала, а реальное значение этого канала привязать к аргументу sec_e в программе ST. В результате вижу, что значение канала HEX принимает правильное значение 59, но в datetime_end все равно получаю "6-10-15 12:11:11".

Перепроверил ВСЕ привязки. Ну не могу найти затык и все тут.

Сообщения / Posts 46 | Из / From: Russia  |  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 
Введите промежуточную локальную переменную VAR_STRING с типом данных STRING.
Модифицируйте ST-программу:
VAR_STRING:=day_e+'-'+month_e+'-'+year_e+' '+hour_e+':'+min_e;
datetime_end_CMNT:=VAR_STRING':'+sec_e;

Другой вариант.
Полученные из FBD-программы данные передайте в соответствующие атрибуты канала класса TIME.
Этот канал сам преобразует эти данные в переменную формата Date&Time.
Привяжите эту переменную к аргументу типа Date&Time CALL.SQL и передавайте время в БД штатным образом.

Сообщения / Posts 17106 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Hip67
Forum Member / Участник форума
Участник № / Member № 4427


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

Над вторым вариантом попробую. Отпишусь.

Сообщения / Posts 46 | Из / From: Russia  |  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 
Второй вариант лучше.

Но вот такая конструкция сработала.

PROGRAM
VAR_INPUT D : USINT; END_VAR
VAR_INPUT M : USINT; END_VAR
VAR_INPUT Y : USINT; END_VAR
VAR_INPUT H : USINT; END_VAR
VAR_INPUT Min : USINT; END_VAR
VAR_INPUT Sec : USINT; END_VAR
VAR_INOUT String_out : STRING; END_VAR
VAR VAR_string : STRING; END_VAR



VAR_string := D + '-'+ M + '-'+ Y + ' ';

VAR_string := VAR_string + H + ':' + Min + ':';

String_out := VAR_string + sec;

END_PROGRAM

Сообщения / Posts 17106 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Hip67
Forum Member / Участник форума
Участник № / Member № 4427


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

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


Icon 1 отправлено / posted      Профиль для / Profile for ProKa           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Здравствуйте, пытаюсь в подсказку к ГЭ вывести значение типа STRING, сгенерированное в программе (тип аргумента string, in/out). Привязку осуществляю напрямую к аргументу программы. В подсказку выводятся только 4 знака. Правильно ли я понимаю, что для передачи большего количеству знаков необходимо использовать канал CALL.string?
Вопрос снят, спасибо.

Сообщения / Posts 15 | Из / 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 17106 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
ProKa
Junior Member / Новичок
Участник № / Member № 6538


Icon 1 отправлено / posted      Профиль для / Profile for ProKa           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Получилось. НО! в комментарий передается не больше 40 знаков? Можно увеличить размер сообщения хотя бы до 64?
Сообщения / Posts 15 | Из / 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 
Можно, если использовать в качество промежуточных аргументы канала CALL.STRING.
Сообщения / Posts 17106 | Из / 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