5.1.40 Массив датчиков, рассчитанных в DLL

 Данный метод создает не один датчик, а массив датчиков. Поэтому тип объекта, создаваемого этим методом, записывается в файле проекта не как sensor, а как sensor_array.
Метод используется для вычисления в программе пользователя значений датчиков, называемых выходными, по значениям входных параметров. Выходные датчики можно использовать при описании механизма в соответствии с общими правилами. Программа пользователя должна быть оформлена в виде DLL-модуля.
Датчики массива являются не дифференцируемыми по параметрам положения механизма.
Синтаксис метода создания
sensorDLL(DLLName, FunctionName, Input, Output)
Обязательные позиционные параметры метода
string DLLName
Имя DLL-модуля.
string FunctionName
Имя функции из DLL-модуля, которая используется для расчета.
string Input
Строка описания имен входных параметров – скаляров и/или датчиков с указанием единиц измерения, в которых они передаются в функцию DLL-модуля. Объекты в строке отделяются друг от друга запятыми, единицы измерения каждого объекта указываются после его имени в квадратных скобках. Если величина безразмерная, то квадратные скобки можно опустить.
Пример строки, описывающей входные параметры:
«sensorIn_1 [kg], scalarIn_2, sensorIn_3 [m/s], …»
string Output
Строка описания имен выходных датчиков и единиц измерения их значений, в которых они передаются из функции DLL-модуля в программный комплекс. Объекты в строке отделяются друг от друга запятыми, единицы измерения каждого объекта указываются после его имени в квадратных скобках. Если величина безразмерная, то квадратные скобки можно опустить.
Пример строки, описывающей выходные датчики:
«sensorOut_1, sensorOut_2 [N], sensorOut_3 [m], …»
Описание
Расчет проходит по следующей схеме. Когда требуются значения датчиков, вычисляемых с использованием DLL-модуля, программный комплекс определяет значения объектов, заданных в качестве входных параметров. С этими значениями вызывается функция из DLL-модуля, а затем вычисляются значения выходных датчиков. Если возвращаемое значение функции равно нулю, расчет продолжается. Если значение отлично от нуля, расчет будет остановлен с выдачей соответствующей диагностики.
Входные данные передаются в функцию DLL-модуля в единицах измерения, заданных пользователем в строке Input. Значения выходных данных (датчиков) должны вычисляться в единицах измерения, указанных пользователем в строке Output.
Алгоритм для расчета должен быть оформлен в виде функции, которая имеет в терминологии языка Си следующее описание:
int имя_функции (int sInput, double *input, int sOutput, double *output).
Возвращаемое значение функции
Переменная целого типа. Если значение переменной равно нулю, то расчет прошел корректно. В других случаях это значение – код ошибки, который будет выведен при расчете механической системы в информационном окне.
Входные параметры
      int sInput – количество входных параметров. Значение sInput вычисляется перед обращением к функции.
      double *input – указатель на массив значений входных параметров. Выделение памяти под массив и определение значения указателя происходит в программном комплексе. Перед обращением к функции в данный массив записываются значения входных параметров. При этом в первый элемент массива записывается значение первого входного параметра, во второй – второго параметра и т.д.
Выходные параметры
      int sOutput – количество выходных датчиков. Значение sOutput вычисляется перед обращением к функции.
      double *output – указатель на массив значений выходных датчиков. Выделение памяти под массив и определение значения указателя происходит в программном комплексе. После обращения к функции из этого массива извлекаются значения выходных датчиков. При этом из первого элемента массива извлекается значение первого выходного датчика, из второго – второго датчика и т.д.
Имя функции может быть произвольным. При вызове функции программный комплекс EULER использует соглашение о вызове функций в стиле Си (__cdecl).