Взаимодействие ADAM5510-M с Fastwel Universal OPC |
Ответить |
Автор | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Новичок Присоединился: 22 Май 2011 Online Status: Offline Публикации: 3 |
Опубликовано: 22 Май 2011 18:24 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Здравствуйте. Имеется ADAM-5510M, с его слотах модули 5050 и 5017 (подробнее в таблице). Соединение с ПК происходит по COM порту. Нужно на ПК с помощью программы Fastwel Universal OPC управлять каналами модулей и отслеживать их состояние.
Хочу узнать мнение о написанном программном коде - какие есть в нем ошибки. Не путаю ли я понятия мастер и слэйв. Правильные ли я выбрал функции для опроса модулей (Set5050 и Get5050 и др.) или я ошибся и нужно было бы использовать ADAMRTU_ForceMultiCoils и ей подобные? Буду признателен за любой совет. Спасибо.
#include <stdio.h> #include <dos.h> #include <time.h> #include <conio.h> #include "5510drv.h" #include "RTU.h" #define sizeofShareMem 100 int count; unsigned int LocalDIO(void); void main() { unsigned int Share_Mem[sizeofShareMem]; unsigned int tmpcnt, tmpcnt1; if(Modbus_COM_Init(COM2, Slave, (unsigned long)9600, NO_PARITY, DATA8, STOP1)!=0) { printf("error\n"); return; } printf("init success!!\n");
if(!ADAMRTU_ModServer_Create(1, (unsigned char *)Share_Mem, sizeof(Share_Mem))) { printf("err code is %d\n", Error_Code()); return; } printf("server started..\n"); while(1) { disable(); Share_Mem[0] = LocalDIO(); enable(); for(tmpcnt=0; tmpcnt<50000; tmpcnt++) {for(tmpcnt1=0; tmpcnt1<8; tmpcnt1++){}} } } unsigned int LocalDIO(void) { unsigned Bdata1, Bdata2; char dov1, dov2; int aiv[8]; /*массив значений аналогового напряжения*/ int value, i; Init501718(1); dov1=0; Set5050(&dov1, 0, 0, AWord); //slot 0, все дискретные выходы (0-15) выставляем в «0» if(AiUpdate(1, &ch)==0) { for (int j=0; j<8; j++) { Get501718(1, j, &(aiv[value])); //slot 1 } } Get5050(3, 8, AByte, &Bdata1); //slot 3, читаем данные каналов 8-15 Get5050(3, 5, ABit, &Bdata2); //5 канал Get5050(3, 6, ABit, &Bdata2); //6 канал Get5050(3, 7, ABit, &Bdata2); //7 канал dov2=0; for (i=0; i<5; i++) { Set5050(&dov2, 3, i, ABit); //slot 3, все дискретные выходы (0-4) выставляем в «0» } Release_All(); return (unsigned int)~div; } |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 14 Май 2003 Online Status: Offline Публикации: 770 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Я что-то не понял, причем здесь Universal OPC, если вы пытаетесь сделать связь по Modbus?
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Инженер-системотехник
+7 (916) 477 3925 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Новичок Присоединился: 22 Май 2011 Online Status: Offline Публикации: 3 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
прошу прощения, конечно же не Universal OPC, а Modbus OPC Server for RTU. ADAMRTU_ModServer_Create(1, (unsigned char *)Share_Mem, sizeof(Share_Mem)); где unsigned int get50_0(void) Аналогично get50_1 для канала 1. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Ответить |
Переход на форум | Права доступа на форуме Вы не можете публиковать новые темы в этом форуме Вы не можете отвечать на сообщения в этом форуме Вы не можете удалять Ваши сообщения на этом форуме Вы не можете редактировать Ваши сообщения на этом форуме Вы не можете создавать голосования на этом форуме Вы не можете выражать своё мнение в голосованиях на этом форуме |