Язык технологического программирования TechnoC v2.1.6 /2010-05-14/ Copyright (C) 2003-2010 НТФ "Инкотех" Что нового в TechnoC v2.1.6 (в сравнении с v2.1.5)? [ История: ] [ ! Существенное улучшение ] [ + Добавленная функциональность ] [ * Исправлена/изменена функция ] [ - Исправлена ошибка (надеемся) ] [-] В отладчике исправлены ошибки при просмотре информации в окнах при изменении размеров окон отладчика [-] В отладчике более комфортно для глаз проводится изменение размеров его окон [-] В компиляторе и интерпретаторе исправлены ошибки, связанные с реализацией оператора try ... catch [+] В отладчике при щелчке правой кнопки на элементе языка (служебное слово или макрооператор) вызывается помощь по языку TC50; эта помощь требует доработки - необходимо добавить туда поиск по таким элементам [+] В драйвер устройств ввода/вывода добавлена возможность работы с переменными типа 'double' [!] В отладчике по Shift+F2 во время останова программы можно получить трассировку операторов (до 128 операторов), выполненных к моменту останова [+] При получении состояния задач (по Alt+'i') дополнительно передается информация о занятых блоках динамической памяти (эта же информация фиксируется в log-файле интерпретатора), а также IP-адреса клиентов, подключенных к интерпретатору. Кроме того, в состоянии задач формируется информация о символьных метках выполненных функций MessName и отключенных секциях программы [+] В исходный язык добавлена функция 'long GetLoadFreeBlock(void)', которая возвращает объем в байтах динамической памяти, занятой в данный момент интерпретатором [!] В исходный язык добавлен цикл типа 'foreach', который позволяет перебирать элементы не только массивов, но и таких 'немассивных' данных, как все секции или функциональные блоки [+] В исходный язык добавлен оператор #NOMESS_OPTIM (по умолчанию нет оптимизации сообщений) и #MESS_OPTIM (есть такая оптимизация). Задание оптимизации означает, что для функции MessName в случае отсутствия перерыва в выводе сообщения не вычисляются параметры сообщения и функция сразу завершает свое выполнение. Тем самым в большинстве случаев происходит существенное ускорение выполнения функции MessName, т.к. параметры функци MessName не вычисляются и не передаются через стек [!] В исходный язык добавлен тип вещественных чисел 'double' и функции для работы с ними: Double и TestDouble [+] В исходный язык добавлена возможность не употреблять служебное слово 'struct' при объявлении соответствующих структурных объектов, т.е. два следующих фрагмента программы а) и б) будут эквивалентными: а) // Определение типов структур struct STR1 {int a, b}; struct STR2 {float x, y; struct STR1 z;}; ... // Объявление структурных объектов struct STR1 n1, n2[20]; struct STR2 n3; б) // Определение типов структур struct STR1 {int a, b}; struct STR2 {float x, y; STR1 z;}; ... // Объявление структурных объектов STR1 n1, n2[20]; STR2 n3; ---- История изменений ------------------------------------------------------ 2.1.5 [+] : Добавлена диагностическая переменная "TrialVersion". Если её значение не равно нулю, это означает, что сервер работает в демонстрационном режиме. [+] : Исправление ошибки: RunTcGetAddrByName DEADLOCK. [*] : Поддержка работы ключей HASP HL обратно совместимая с HASP4. [!] В отладчике добавлена возможность просмотра 'мгновенного снимка' глобальных данных и коэффициентов функциональных блоков всех текущих программ в виде дерева; аналогично есть возможность автономного просмотра таких снимков (созданных по директиве 'I' чтения состояния контроллера в виде файлов с расширением ".glb") при помощи программы ViewTreeGlbTC50.exe [!] В отладчике добавлена возможность изменения размеров его основных окон отображеня [!] В отладчике добавлена возможность получения списка заблокированных технологических переменных и динамических коэффициентов функциональных блоков для всего проекта, для чего в меню, вызываемому по F10, добавлена соответствующая позиция СПИСОК ЗАБЛОКИРОВАННЫХ ПЕРЕМЕННЫХ; аналогичная информация сохраняется в файлах с расширением .blk по команде Alt+I [!] В отладчике добавлена возможность для проекта, состоящего только из интерфейсов localhost, останавливать и вновь запускать задачи без использования startup.exe [!] В интерпретаторе добавлена возможность сохранения наиболее важных событий функционирования системы управления в символьном файле runtc.log, который располагается в директории, определенной параметром PATH_LOG; к таким событиям, в частности, относятся события очередного запуска или останова интерпретатора, события по перегрузке задач или устройств ввода/вывода, события по ручному переключению активности контроллеров. Содержимое файла runtc.log передается в отладчик по команде СОСТОЯНИЕ КОНТРОЛЛЕРОВ [+] В исходный язык добавлена возможность применения конструкции '... goto default' внутри switch, содержащего 'default' [+] В исходный язык добавлена возможность применения конструкции '... goto case 12' или '... goto case "символьное выражение"' внутри switch, содержащего соответствующий case [+] Для выбора имен файлов с исходными программами наряду с операцией F3 добавлена аналогичная возможность при помощи щелчка мыши на титульной строке отладчика [+] Для выбора имени диска или узла контроллера в менеджере файлов наряду с операциями Alt+F1, Alt+F2, Ctrl+F1 и Ctrl+F2 добавлена аналогичная возможность при помощи щелчка мыши на имени диска или узле контроллера [-] Исправлена ошибка runtcopc сервера, проявлявшаяся при превышении количества используемых переменных количества тегов, прописанных в лицензии [-] Исправлена ошибка TCIDE, проявлявшаяся при отображении всплывающих подсказок в операционной системе Windows 2003 SP1 в профиле пользователя с ограниченными правами 2.1.4 [+] В конфигурационном файле tc.cfg добавлена возможность задавать комментарий к проекту [+] В интегрированной среде разработки поддержан переход в файле по номеру строки [+] В интегрированной среде разработки появилась возможность выборки отдельных задач при компиляции проекта [+] В интегрированной среде разработки при просмотре свойств файла добавлена информация о расположении этого файла, его размере в количестве строк и байтов, а также о дате создания файла [+] В интегрированной среде разработки добавлена реакция на внешнее изменение файлов проекта [+] В интегрированной среде разработки добавлена возможность преобразования всех символов выделенного блока в прописные (Ctrl+Shift+U) или строчные (Ctrl+U) символы [+] В язык ТехноСи добавлена возможность дублирования явно заданной символьной строки, например, запись строки в виде "abc "(3) эквивалентна записи строки в виде "abc abc abc " [+] В язык ТехноСи добавлена возможность передачи в качестве формального параметра произвольного символьного выражения следующим образом. Если функция описана с формальным параметром как char &p[1], то в качестве фактического параметра можно передавать не только ссылку на любой символьный массив, но и произвольное символьное выражение (имеется в виду нечто вроде A + "bbbb" + D). Именно длина, равная 1, говорит о такой возможности. Для любой другой длины в качестве фактического параметра допускается только соответствующая ссылка. При этом надо учитывать, что длина вычисляемого символьного выражения не должна превышать длину переменной string. [+] В язык ТехноСи добавлена возможность вычисления возвращаемого значения функции в виде произвольного символьного выражения следующим образом. Если функция описана с возвращаемым значением как char [1]&func(...), то в качестве результата функции можно возвращать не только ссылку на любой символьный массив, но и произвольное символьное выражение (имеется в виду нечто вроде A + "bbbb" + D). Именно длина, равная 1, говорит о такой возможности. Для любой другой длины в качестве результата функции допускается только соответствующая ссылка. При этом надо учитывать, что длина вычисляемого символьного выражения не должна превышать длину переменной string. [+] В язык ТехноСи добавлена возможность объявления приватными не только глобальные данные, но и секции. [+] В языке ТехноСи операция PRIVATE_FUNCTIONAL_BLOCK теперь распространяется не только на статические функциональные блоки, но и на динамические. [+] В отладчике добавлена возможность чтения имени текущего выполняемого функционального блока в момент останова внутри этого функционального блока; это реализуется при задании имени переменной в виде одного символа '~' для просмотра (по Alt+F6) или же при нажатии на клавишу '~'. [!] В отладчике добавлена возможность выполнения скриптов по изменению значений глобальных переменных и коэффициентов функциональных блоков (как статических, так и динамических) [!] Добавлена функция FormatStrNum, у которой форматная строка может быть не только явно заданной символьной строкой (как это требуется для функции FormatStr), но и динамическим символьным выражением; при этом спецсимволы подстановки определяются в виде %1, %2 и так далее; таким образом, функция FormatStrNum является аналогом API-функции Windows FormatMessage [!] Добавлена функция Scanf, которая является аналогом API-функции Windows sscanf [!] Добавлена функция FirstArrival, которая позволяет самостоятельно отслеживать перерывы в выдаче технологических сообщений [!] Добавлены функции DisableWrite и EnableWrite, которые позволяют динамически в контроллере устанавливать/снимать запрет на запись в глобальные переменные со стороны системы отображения [!] Добавлены функции FileTimeToLocalFileTime, FileTimeToSystemTime, FindFirstFile, FindClose, FindNextFile, SetFileAttributes, GetFileAttributes, которые являются аналогами соответствующих API-функции Windows [!] Добавлена функция MinMax, которая позволяет одновременно получить минимум и максимум [+] Функция RunStr теперь может изменять значения не только глобальных переменных, но и коэффициентов функциональных блоков (как статических, так и динамических) [!] Разработана утилита MAKE_SCRIPTS, которая на основе конфигурационного файла tc.cfg автоматически генерирует все скрипты для загрузки по FTP протоколу необходимых файлов в контроллеры [!] Добавлена возможность автоматического запуска многоконтроллерного проекта для его отладки [!] Добавлена локализация литовского и английского языков [-] В интегрированной среде разработки исправлены некоторые ошибки [+] В отладчике добавлена возможность просмотра информации об обмене драйвера устройств ввода/вывода отдельно с каждым устройством - число запросов, ответов и потерянных пакетов [-] В драйвере устройств ввода/вывода исправлены некоторые ошибки по работе с устройствами I-8000 и по протоколу Modbus ASCII 2.1.3 [+] Используется параметр CODE_PAGE из файла tc.cfg при выдаче технологических сообщений. [!] В настройках задачи появилась возможность задавать список внешних макроимен [!] В язык ТехноС добавлена макропеременная __CONFIGURATION__, которая содержит название текущей компилируемой конфигурации. Для анализа содержимого __CONFIGURATION__ возможно применение макрооператора следующего вида: #if __CONFIGURATION__ == "Debug" или #if __CONFIGURATION__ != "Debug" [+] В интегрированной среде разработки поддержан просмотр/изменение списка внешних макроимен [!] В интегрированной среде разработки поддержан выбор активной конфигурации. Все изменения в активной конфигурации сохраняются в ней и не затрагивают остальных конфигураций [-] В интегрированной среде разработки исправлены некоторые ошибки [+] В интерпретатор добавлен контроль на недопустимость изменения явно заданных символьных строк [+] В отладчике добавлена возможность выбора для просмотра переменной, содержашейся на произвольном уровне доступа структуры, т.е. для выбора переменной D из записи A.B[1].C.D достаточно щелкнуть мышью на символе D [!] Добавлена функция RunStr для динамической инициализации глобальных данных; сценарий инициализации задается в символьном виде, аналогичном инициализации переменных в языке ТехноС. Данная функция предназначена для изменения значений нескольких переменных или структур через OPC-сервер в виде одного символьного запроса [!] Реализованы чтение/запись массивов в одном запросе. Поддержка атрибута collapsed для массивов [-] Исправление ошибки при разборе ItemID 2.1.2 [!] Появилась возможность определения функций, у которых параметры могут быть значениями по умолчанию [!] В отладчике появилась возможность получения обзорной перекрестной информации о переменных программы [!] Для системы программирования можно задавать несколько разных конфигураций разработки проекта [+] В качестве опущенного параметра возможно задание одиночной структуры [+] Операцию "запятая" можно использовать в тернарных операциях [*] В драйвере устройств ввода/вывода для устройств типа MODBUS допускается задание адресов каналов в диапазоне 0...0xFFFF (было 0...10000); исправлена ошибка позиционирования в случае использования блоков с пользователь скими функциями (было смещение на 1 строку); компилятору передается дополнительная информация для создания файлов с browse информацией; в случае невозможности открытия последовательного порта (указано неверное имя или порт отсутствует в системе) в фдайвере все равно создается соответствующий класс порта, а устройствам (и их каналам) на этом порту устанавливается признак FAILURE [-] В интегрированной среде разработки исправлены некоторые ошибки 2.1.1 [+] В справочной информации о результате компиляции содержатся данные о числе каналов ввода/вывода; каналы разделены по типам использования (ввод/вывод, аналоговые/дискретные/счетчики/генераторы импульсов) [+] Добавлены функции для работы с календарными датами в виде unsigned long в диапазоне от 1970-01-01-00:00:00 до 2106-02-07-06:28:15 [+] В синтаксис языка добавлена возможность чтения бита по его номеру [*] Длина строки исходной программы увеличена до 2500 символов [!] В синтаксис языка добавлена возможность задания макросов (#define) с параметрами [*] В случае зацикливания программы, повторяющегося подряд более 5-ти циклов задачи, происходит отключение секции, в которой обнаружено зацикливание. При этом выдается соответствующее сообщение [+] Добавлен функциональный блок FB_PID_CHECK [*] В функциональном блоке FB_PI_CHECK параметры InP (параметр), InN (задание) и OutN (действительное задание) переименованы соответственно в PV, SP и SPA [*] Устранено периодическое переключение активности контроллеров в дублированном режиме в состоянии коллизии [+] При выборе имени файла в окне отладчика, заданного в #include, при помощи щелчка левой кнопки мыши или нажатия клавиши F6 происходит переход к просмотру выбранного файла [+] При нажатии клавиши Ctrl+Tab в окне отладчика происходит циклическое переключение между двумя последними выбранными файлами [+] В основное меню отладчика, вызываемое по клавише F10, добавлены операции: 1) ПРОВЕРКА PING - для динамического отображения наличия связи со всеми узлами проекта 2) ИНФОРМАЦИЯ О ЧИСЛЕ КАНАЛОВ В/В - для получения информации о числе каналов ввода/вывода для всех узлов проекта; каналы разделены по типам использования (ввод/вывод, аналоговые/дискретные/счетчики/генераторы импульсов) [+] В интегрированной среде разработки добавлена возможность открытия криптованных файлов с исходными кодами [-] В OPC-сервере исправлены некоторые ошибки и выполнены оптимизации [-] Исправлена ошибка компиляции криптованных исходных кодов [-] В интегрированной среде разработки исправлены некоторые ошибки