Модератор
 Аватар для vxg
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,454

Trace Mode. Скрытые особенности

21.12.2012, 09:59. Показов 7499. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
относительно
Цитата Сообщение от Romer Посмотреть сообщение
int надо как long обозначать
выдержка из справки
====
BOOL (bool) – булево значение размерностью 1 байт (true (1) или false (0));
SINT (__int8) – целое со знаком размерностью 1 байт (-128 ... 127);
USINT (unsigned __int8) – целое без знака размерностью 1 байт (0 ... 255);
INT (short) – целое со знаком размерностью 2 байта (-32768 ... 32767);
UINT (unsigned short) – целое без знака размерностью 2 байта (0 ... 65535);
DINT (long) – целое со знаком (4 байта) (-2147483648 ... 2147483647);
UDINT (unsigned long) – целое без знака (4 байта) (0 ... 4294967295);
TIME, DATE, TIME_OF_DAY, DATE_AND_TIME – соответствуют DINT. Значения переменных этих типов задаются аналогично соответствующим временным константам (см. Числовые константы Техно ST );
REAL (float) – вещественное число (4 байта) (максимальное значение 3.402823466e+38);
LREAL (double) – вещественное число (8 байт) (максимальное значение 1.7976931348623158e+308);
STRING (char []) – 256 символов в кодировке UTF-8 (512 байт, см. также Строковые константы Техно ST );
HANDLE – специальный тип, используемый для хранения внешних данных в виде числа, имеет размерность 4 байта, не может быть использован в арифметических, логических и т.п. операциях.
====
не знаю как вам удалось int на long поменять... сейчас попробую)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.12.2012, 09:59
Ответы с готовыми решениями:

Trace mode 6
Здравствуйте все. Вопрос такого характера. Начал тут разбираться с Trace mode 6 и наткнулся на вот такую проблемку. Не пойму, как это...

Таймер в Trace Mode
Возможно ли в Trace mode в программе ST сделать таймер? К примеру есть сигнал управления который генерирует программа, в ответ должен...

Trace mode 6 под linux
Привет, Очень ищу дистрибутив рантйма trace mode 6 под linux, поделитесь, пожалуйста, у кого есть такой :)

8
13 / 13 / 0
Регистрация: 07.12.2012
Сообщений: 29
21.12.2012, 10:24
Ой, не смешите, в справке у ТМ много чего написано, я уже про сайт молчу, вот только на деле это все на двое делить надо и перепроверять тщательно. Плавали, знаем...

Как пример, для типа STRING написано: "256 символов в кодировке UTF-8" - уже туфта:
1) Не получится НИКОГДА аргументу такого типа в ТМ больше 4-х символов присвоить.
2) Чтобы присвоить что-то вменяемое типа строки больше 4-х символов, аргумент такого типа надо на строковый атрибут канала привязывать, и опять чудеса - если посмотреть ограничения на строковые атрибуты каналов в ТМ, то максимум комментарий получается самый большой, но он 39 символов вроде. И где, простите, 256 символов заявленные?
Конечно можно как внутреннюю переменную объявить, но вот вопрос - а какой в ней смысл внутри алгоритма, если я ее из него никуда не достану? Я внутри логики программы и числовыми данными обойдусь.

А насчет int на long, так имеется в виду, что если Вы подключаете внешнюю DLL где есть функция типа void MyFunc(int var), то эту самую "int var" в ТМ надо будет описать как "long var", иначе в некоторый момент получите неприятный сюрприз в виде фатальной ошибки в рантайме.
0
Модератор
 Аватар для vxg
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,454
21.12.2012, 11:54  [ТС]
Цитата Сообщение от Romer Посмотреть сообщение
эту самую "int var" в ТМ надо будет описать как "long var"
как только человечество пересело на 32 битные машины тип int который раньше, например, в C был 16 битным стал 32 битным (фактически стал long). поэтому в справке пишут в скобочках исчерпывающие сведения о том, что означает тот или иной тип.
0
13 / 13 / 0
Регистрация: 07.12.2012
Сообщений: 29
21.12.2012, 12:14
Цитата Сообщение от brauberg1989 Посмотреть сообщение
Привет. В общем в этом деле я еще новичок)
Нужно сделать кнопку которая включает или выключает выполнение программы. Не получается реализовать эту идею. Может посоветуете че нить?
У каналов есть атрибут "Состояние" - если он ненулевой, то канал не пересчитывается, если это канал вызова программы, то и программа не будет пересчитываться. Вот через этот атрибут и управляйте.

Добавлено через 6 минут
Цитата Сообщение от vxg Посмотреть сообщение
как только человечество пересело на 32 битные машины тип int который раньше, например, в C был 16 битным стал 32 битным (фактически стал long). поэтому в справке пишут в скобочках исчерпывающие сведения о том, что означает тот или иной тип.
Вот только странно, что в С++ он все же как был int так int и остался, и там ничего не падает с критическими ошибками. А то получается, следуя Вашей логике, что как только все перешли на 32-разрядные системы, то они должны все свои исходники переделывать? А когда на 64-разрядную перейдут чем int надо будет объявлять?
Тут абсолютно не в этом причины, и не надо путать внутренние типы данных системы ТМ с типами данных, указанными при подключении внешних функций из внешних библиотек/приложений - это разные вещи.
0
Модератор
 Аватар для vxg
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,454
21.12.2012, 12:38  [ТС]
Цитата Сообщение от Romer Посмотреть сообщение
неприятный сюрприз
пример работы с численными типами (DLL и TM проект) - все отрабатывает как надо в соответствии с документацией. по поводу строк: адвокатом TM наниматься не буду - самому не нравиться их реализация.
Вложения
Тип файла: rar TM_DLL_test (dll).rar (9.0 Кб, 56 просмотров)
Тип файла: rar TM_DLL_test (tm prj).rar (120.8 Кб, 51 просмотров)
0
Модератор
 Аватар для vxg
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,454
21.12.2012, 12:41  [ТС]
Цитата Сообщение от Romer Посмотреть сообщение
А то получается, следуя Вашей логике, что как только все перешли на 32-разрядные системы, то они должны все свои исходники переделывать
если разработчики этих исходников предполагали, что размер int = 16 бит вместо того что бы использовать конструкцию sizeof(int) сборка этих исходников новым компилятором (у которого размер int равен 32 бит) даст нам неработоспособную программу. если программа уже собрана все будет работать. хотя где сейчас найдешь 16 битную программу....
0
13 / 13 / 0
Регистрация: 07.12.2012
Сообщений: 29
21.12.2012, 12:53
В вашем примере int в С++ исходнике как раз не используется, мне приходилось подключать как раз такие функции, у которых не short типы были, а int и изменить его не представлялось возможным, не мои библиотеки были.
0
Модератор
 Аватар для vxg
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,454
21.12.2012, 13:07  [ТС]
в примере используются типы соответствующие документации: если сказано, что это знаковое целое число размером 4 байта, то нужно подобрать в вашей среде разработки соответствующий тип. в той среде в которой выполнялись примеры для этой цели можно было бы использовать любой из типов: int, long, __int32. если бы я собирал в среде которая сопоставляет ключевому слову int знаковое целое число размером 2 байта я бы наверное выбрал тип long.

Добавлено через 2 минуты
...если вы берете заголовочный файл библиотеки и видите слово int не спешите сопоставлять ему TM тип INT - поглядите в начале на разрядность DLL
0
13 / 13 / 0
Регистрация: 07.12.2012
Сообщений: 29
21.12.2012, 13:12
Спасибо, учту на будущее в других решениях, потому как к ТМ уже врятли когда-нибудь вообще вернусь....
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.12.2012, 13:12
Помогаю со студенческими работами здесь

Trace Mode: управление жалюзи
Буду очень признателен. По заданию, в Trace Mode 6 нужно создать прогу, которая управляет жалюзи. С помощью селекторного переключателя...

Связь Trace Mode 6 - Siemens
Здравствуйте, возникла вот такая проблема: АРМ с Trace Mode 6 связан через Profibus с контроллером Siemens. Сегодня пропала связь,...

Trace Mode 6.07.7. Объединение проектов
Мне необходимо в один проект добавить доработки. делаю это через бибилиотеку компонентов. Но при переносе узла проекта выходит ошибка...

Достоверность (атрибут) в Trace Mode
0 бит достоверности - аппаратная недостоверность 1 бит достоверности - системная недостоверность в итоге 3 значения принимает: 0...

[Trace mode 6] Рандом чисел
Всем привет. Подскажите, как можно сделать прогу, которая каждые 10 секунд выдает новое значение (ну допустим в диапазоне от 50 до 100) и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru