Здравствуйте!
Возникла проблема с UltraLogik 2.00 Build 050a, а именно с подключением внешних программ. Я использую стандартный блок FDB EXT c выставленной галочкой CALL FAR. Я подключаю к блоку EXT файл *.obj созданный в ВС++ 3.0. Параметры компиляции в ВС++ 3.0:
a) model: MEDIUM
б) application: DOS STANDART EXE
в) assume ss=ds: NEVER (ss<>ds)
г) generate underbars: ON
д) calling convention: C (STANDART STACK FRAME)
е) case-sensitive link: OFF
ж) Floating Point: Emulator.
Используемый контроллер - Fastwel CPU188-5 v.3 (CPC10102).
Исходный код программы (*.С):
void pascal innt(int *i0, int *i1)
{
*i1 = *i1 + *i0;
}
void pascal flut(float *f0, float *f1)
{
*f1 = *f1 + *f0;
}
В UL параметрам функций С соответствуют переменные i0 = 1, i1 = 0 c атрибутом N (сетевая) и типом INTEGER, и f0 = 0.0001, f1 = 0 атрибутом N (сетевая) и типом FLOAT.
PLCNET OPC Server v2.35 фирмы Fastwel находит узел CPU188 с загруженным *.exe файлом UL, но тег соответсвующий переменной f1 не изменяется, тогда как тег соответствующий переменной i1 изменяется соответственно функции innt. Предположительно проблема в отсутствии математического сопроцессора у CPU188.
Не могли бы Вы пояснить возникшую проблему? Как добиться, что бы функция flut заработала?