Люди добрые, если у кого-то есть пример работы с модулями МДВВ, и МВА8 с использованием протокола ОВЕН и библиотеки owen_io.dll написанный на delphi, поделитесь, пожалуйста. Мой e-mail: mr.rail@mail.ru
Люди добрые, если у кого-то есть пример работы с модулями МДВВ, и МВА8 с использованием протокола ОВЕН и библиотеки owen_io.dll написанный на delphi, поделитесь, пожалуйста. Мой e-mail: mr.rail@mail.ru
И со мной поделитесь примерами работы с модулями МДВВ, и МВА8 с использованием протокола ОВЕН и библиотеки owen_io.dll написанный на delphi, пожалуйста.
epe@udm.ru
Имеется несколько модулей ввода/вывода МК110, МУ110, МВ110. Модули объеденены в сеть RS-485 и сконфигурированы, нормально опрашиваются конфигуратором М110, через преобразователь АС4.
Обязательно ли использование библиотеки owen_io.dll для работы с модулями через AC4???
Ранее я писал программу на VB .NET для работы с контроллерами ADAM по протоколу DCON. Посмотрел руководства на модули, поменял соответственно передаваемые команды. Но с ОВЕН прога не работает, пробовал DCON, MODBUS, ОВЕН протоколы, смотрел снифером передаваемые команды конфигуратора М110 при опросе входов. От модулей ответа нет.
Вообще после установки драйвера AC4, я могу работать с появившимся COM3, как с обычным COM RS-232 или нет?
помогите пожалуйста решить проблемуКод:1109 0.00000502 Mx110.exe IOCTL_SERIAL_GET_HANDFLOW Silabser2 SUCCESS 1110 0.00375355 Mx110.exe IOCTL_SERIAL_SET_BAUD_RATE Silabser2 SUCCESS Rate: 9600 1111 0.00001017 Mx110.exe IOCTL_SERIAL_SET_RTS Silabser2 INVALID PARAMETER 1112 0.00294542 Mx110.exe IOCTL_SERIAL_CLR_DTR Silabser2 SUCCESS 1113 0.00108344 Mx110.exe IOCTL_SERIAL_SET_LINE_CONTROL Silabser2 SUCCESS StopBits: 1 Parity: NONE WordLength: 8 1114 0.00386592 Mx110.exe IOCTL_SERIAL_SET_CHAR Silabser2 SUCCESS EOF:1a ERR:0 BRK:0 EVT:d XON:11 XOFF:13 1115 0.00398516 Mx110.exe IOCTL_SERIAL_SET_HANDFLOW Silabser2 SUCCESS Shake:0 Replace:80000040 XonLimit:128 XoffLimit:128 1116 0.00297524 Mx110.exe IOCTL_SERIAL_CLR_RTS Silabser2 SUCCESS 1117 0.00001109 Mx110.exe IOCTL_SERIAL_SET_TIMEOUTS Silabser2 SUCCESS RI:2 RM:4 RC:100 WM:10 WC:500 1118 0.00294100 Mx110.exe IOCTL_SERIAL_PURGE Silabser2 SUCCESS Purge: TXCLEAR RXCLEAR 1119 0.00195705 Mx110.exe IOCTL_SERIAL_PURGE Silabser2 SUCCESS Purge: TXABORT TXCLEAR RXCLEAR 1120 0.00001246 Mx110.exe IOCTL_SERIAL_SET_WAIT_MASK Silabser2 SUCCESS Mask: RXFLAG BRK ERR 1121 0.00091432 Mx110.exe IRP_MJ_WRITE Silabser2 SUCCESS Length 14: #HPHGTMOHVIJH. 1122 0.04798078 Mx110.exe IOCTL_SERIAL_WAIT_ON_MASK Silabser2 SUCCESS 1123 0.00001404 Mx110.exe IOCTL_SERIAL_GET_COMMSTATUS Silabser2 SUCCESS 1124 0.00000144 Mx110.exe IRP_MJ_READ Silabser2 SUCCESS Length 30: #HPGOTMOHJKJOITJGJHJHKRKTNOVO.![]()
Последний раз редактировалось O_o; 11.09.2012 в 07:32.
Нащет ас4 после установки дров появившийся виртуальный com порт для програмиста ничем не отличаетса от реального а нащет работы с модульми на форуме вроде видел пример на си
Имеется прибор ТРМ251 с прошивкой версии V1.10 (базовый адрес 16)
для чтения с первого входа синтаксис команды снизу правильный?
ReadFloat24(16,0,'rEAD',val,-1);
Часто задаваемые вопросы по кодесис
1) Почему программа не работает - Следует выполнить "Онлайн ->Старт"
2) Где скачать CoDeSys, таргеты, прошивки, библиотеки - http://www.owen.ru/catalog/codesys_v3/opisanie
Господа, очень нужна помощь. Никогда не приходилось работать с оборудованием компании ОВЕН (впрочем, как и с аналогичными приборами других компаний). Передо мной пославлена задача: необходимо передачу данных с прибора ТРМ202 в Excel. Нет ли у кого-нибудь похожего примера?
P.S. Я так понимаю, что надо настроить OPC-сервер, который выложен на сайте, выставить в нем и в ТРМ202 одинаковые параметры, а затем сохраненную конфигурацию как-то прикрутить к Excel (но как это реализовать я не знаю) Верно ли я думаю?
Заранее благодарен за любую помощь и советы.
Excel понимает файлы с расширением .csv, в котором поля разделяются точкой с запятой ";". Вам необходимо найти программу для ПК, которая по модбас будет брать данные из трм и складывать в такого типа файл.
прибор: трм251 (прошивка V1.10).
базовый адрес:16
скорость: 9600
биты данных: 8
стоп бит: 1
длинна адреса: 8
четность: нет
com-порт: №1
через АС3-М
пытаюсь в прибор послать команду "rEAd" и собственно получить результат.
Пишу в delphi 2010
у приборов ТРМ2хх с прошивкой 1.10 я так понял команда rEAd не требует индексации, надо послать -1..
первый вход имеет индекс "0", второй - индекс "1". Чтобы считать данные с первого входа, надо послать команду по адресу "адрес - 0".. Значит шлем по адресу 16.
имеем: ReadIEEE32(16,0,'rEAd',val,tm,-1);
Снизу привел свой код полностью... результат замера должен придти в компонент Edit1.
Получаю ошибку -104. И не понимаю что не так..
воспользоваться функцией LastErrToStr не могу.. Приходит какими-то квадратиками и иероглифами - не читаемо.Код:unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; const // Определения четности (Без) prty_NONE:integer=0; // Определения количества Бит данных databits_8:integer=1; // Определения количества стоп Бит stopbit_1:integer=0; // Вид конвертора RS485 (Автоматический конвертор) RS485CONV_AUTO:integer=1; type TProcOpenPort=function (n,speed,part,bits,stop,vid:DWORD):integer;stdcall; TProcSetupPort=function (n,speed,part,bits,stop,vid:DWORD):integer;stdcall; TProcClosePort=function :integer;stdcall; TProcSetApiMode=function (n:DWORD):integer;stdcall; TProcReadIEEE32=function (adr,adr_type:DWORD;command:pchar;var value:single;var time:integer;index:integer):integer;stdcall; TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; Edit1: TEdit; Edit2: TEdit; Label1: TLabel; Label2: TLabel; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; hLibInst:cardinal; func_avail:boolean; OpenPort:TProcOpenPort; SetupPort:TProcSetupPort; ClosePort:TProcClosePort; ReadIEEE32:TProcReadIEEE32; SetApiMode:TProcSetApiMode; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin hLibInst:=LoadLibrary('owen_io.dll'); if(hLibInst<>0) then begin func_avail:=true; OpenPort:=GetProcAddress(hLibInst,'OpenPort'); if(not Assigned(OpenPort)) then begin func_avail:=false; exit; end; ClosePort:=GetProcAddress(hLibInst,'ClosePort'); if(not Assigned(ClosePort)) then begin func_avail:=false; exit; end; SetupPort:=GetProcAddress(hLibInst,'SetupPort'); if(not Assigned(SetupPort)) then begin func_avail:=false; exit; end; ReadIEEE32:=GetProcAddress(hLibInst,'ReadIEEE32'); if(not Assigned(ReadIEEE32)) then begin func_avail:=false; exit; end; SetApiMode:=GetProcAddress(hLibInst,'SetApiMode'); if(not Assigned(SetApiMode)) then begin func_avail:=false; exit; end; end else func_avail:=false; end; // ОТКРЫВАЕМ COM-ПОРТ #1 procedure TForm1.Button1Click(Sender: TObject); var op_succ:integer; begin if func_avail then begin SetApiMode(1); op_succ:=OpenPort(0,2,0,databits_8,stopbit_1,RS485CONV_AUTO); if (op_succ<>0) then Application.MessageBox('Не удалось открыть порт', 'Ошибка!', MB_OK) else begin SetupPort(0,2,0,databits_8,stopbit_1,RS485CONV_AUTO); end; end else Application.MessageBox('Не удалось открыть порт (функция!)', 'Ошибка!', MB_OK); end; // ЗАКРЫВАЕМ COM-ПОРТ #1 procedure TForm1.Button2Click(Sender: TObject); var cp_succ:integer; begin if func_avail then begin cp_succ:=ClosePort(); if (cp_succ<>0) then Application.MessageBox('Не удалось закрыть порт', 'Ошибка!', MB_OK); end else Application.MessageBox('Не удалось закрыть порт (функция!)', 'Ошибка!', MB_OK); end; // ПО ИДЕЕ ЧИАТЕМ С ПЕРВОГО ВХОДА ТРМ251 procedure TForm1.Button3Click(Sender: TObject); var iee:integer; val:single; tm:integer; begin iee:=ReadIEEE32(16,0,'rEAd',val,tm,-1); Edit1.Text:=FloatToStr(val); Edit2.Text:=IntToStr(iee); end; end.
если кто-то поможет новичку - буду рад.
Последний раз редактировалось Doomnik; 11.08.2011 в 18:56.
Дамы и господа!!!
ОТВЕЧУ СЕБЕ САМ!!!
код, написанный мною для ТРМ 251 выше, работает!!!
При компиляции в Делфи 6, всё заработало!!! И даже LastErrToStr теперь не иероглифами, а русскими буквами!!!!!
я компилировал в Делфи 2010, ОС Виндовс севен 64 бита.
думайте дальше сами...
я слышал что в Делфи 2010 уникод... Из-за этого?
Последний раз редактировалось Doomnik; 11.08.2011 в 20:08.