|
|
|
Как работать с IOPCHDA_Server из проекта opcdelphi
|
|||
|---|---|---|---|
|
#18+
GrozaUmnikam aka tarasdjОРС сервера есть разных категорий. Есть OPC HDA.1, OPC HDA.2. Так вот они чемто различаються. И все что я могуВам подзказать это то что у Вас ОРС HDA.1 , а этот код работает, почему то только с OPC HDA.2. Почему так я не знаю. Проблема в том что функция GetItemServerHandle не может получить хэндл итема. ТОчно такая же ситуация у меня с WinCC. И до сих пор я не выяснил почему. Сервер на котором я отлаживал прогу: Logika.HDA.2 - работает, а с PCS.OPCHDAServer.1 не работает. Разница в том что логиковский ОРС второй категории, а wincc - первой. Вот и б тоже очень хотел выяснить в чем проблема, но не могу, нет возможности!!!! тут с вами не соглашусь. есть один стандарт на текущий момент это 1.2 и все его поддерживают, были ещё 1.0, 1.1, делфийские библиотечки по моему на 1.2 основанны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2012, 20:46:20 |
|
||
|
Как работать с IOPCHDA_Server из проекта opcdelphi
|
|||
|---|---|---|---|
|
#18+
да и по поводу переменной vt - я так понял что это максимальное количество запрашиваемых данных, можно поставить и 100000000000000 )) а вот в цикле по выборке данных - да нужно вычислять количество пришедших строк. так же выяснил что последней строкой приходит какой-то символ окончания, его нужно исключать из выборки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2012, 20:51:24 |
|
||
|
Как работать с IOPCHDA_Server из проекта opcdelphi
|
|||
|---|---|---|---|
|
#18+
for_kav, Ну сейчас Ваш клиент работает нормально? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2012, 10:34:20 |
|
||
|
Как работать с IOPCHDA_Server из проекта opcdelphi
|
|||
|---|---|---|---|
|
#18+
ну вот после недели мучений ОРС HDA клиент готов, пока реализована возможность считывания 1-Й переменной, но начинаю делать считывание нескольких переменных, ну и в последующем выгрузку данных в БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2012, 10:38:13 |
|
||
|
Как работать с IOPCHDA_Server из проекта opcdelphi
|
|||
|---|---|---|---|
|
#18+
for_kav, Ну я делал так: Отображаю все теги в Тривейв. Сохраняю их в инифайле. При открытии программы загружаю с ини обратно в тривейв. Ну иканешно же автосчитывание. Мой клиент выглядет вот так: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2012, 12:00:52 |
|
||
|
Как работать с IOPCHDA_Server из проекта opcdelphi
|
|||
|---|---|---|---|
|
#18+
for_kavGrozaUmnikam aka tarasdj, Спасибо тебе огромное товарищ!!!!!! вот код поиска ОРС серверов на машинах: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. вот как то так) да и ещё приведу: Код: pascal 1. 2. 3. 4. А это точно весь код для определения серверов? А то чёт не работает))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2012, 13:05:03 |
|
||
|
Как работать с IOPCHDA_Server из проекта opcdelphi
|
|||
|---|---|---|---|
|
#18+
GrozaUmnikam aka tarasdj, OPCServerList - тут все сервера - переменная глобальная потом CLSIDServer := OPCServerList.CLSID[count]; count - выбранный сервер в listbox CLSIDServer: TGUID; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2012, 13:23:32 |
|
||
|
Как работать с IOPCHDA_Server из проекта opcdelphi
|
|||
|---|---|---|---|
|
#18+
for_kav, Приведите пожалуйста полный правильный код нажатия на кнопку. При котором будет определяться список ОРС серверов и помещаться в StringList. Если можно со всема переменными. Спасибо))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2012, 17:28:19 |
|
||
|
Как работать с IOPCHDA_Server из проекта opcdelphi
|
|||
|---|---|---|---|
|
#18+
Простите что вмешаюсь, а клиенты время от времени не отваливаются при длительной работе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2012, 18:05:10 |
|
||
|
Как работать с IOPCHDA_Server из проекта opcdelphi
|
|||
|---|---|---|---|
|
#18+
Feg16Простите что вмешаюсь, а клиенты время от времени не отваливаются при длительной работе? Что Вы имеете ввиду "отваливаются" ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2012, 18:11:46 |
|
||
|
Как работать с IOPCHDA_Server из проекта opcdelphi
|
|||
|---|---|---|---|
|
#18+
GrozaUmnikam aka tarasdjЧто Вы имеете ввиду "отваливаются" ?Раньше, когда передача была через OPC клиент, который постоянно считывал данные, раз в пару дней - а иногда пару раз в сутки тупо отваливался и не мог больше законнектиться без перезагрузки сервера ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2012, 18:21:51 |
|
||
|
Как работать с IOPCHDA_Server из проекта opcdelphi
|
|||
|---|---|---|---|
|
#18+
Feg16, Вначале каждого считывания сервер загружается, а конце считывания тот сервер надо програмно выгружать. Кароче в конце считывания надо делать вот так и тогда ничего не отвалится, бо и не будет чему отваливаться: Код: pascal 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2012, 18:51:38 |
|
||
|
Как работать с IOPCHDA_Server из проекта opcdelphi
|
|||
|---|---|---|---|
|
#18+
GrozaUmnikam aka tarasdjfor_kav, Приведите пожалуйста полный правильный код нажатия на кнопку. При котором будет определяться список ОРС серверов и помещаться в StringList. Если можно со всема переменными. Спасибо))) сейчас дома уже. завтре на работу моё тело приползёт, утром глаз откроется и начеркаю что и как. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2012, 19:13:48 |
|
||
|
Как работать с IOPCHDA_Server из проекта opcdelphi
|
|||
|---|---|---|---|
|
#18+
GrozaUmnikam aka tarasdjfor_kav, Приведите пожалуйста полный правильный код нажатия на кнопку. При котором будет определяться список ОРС серверов и помещаться в StringList. Если можно со всема переменными. Спасибо))) поиск ОРС серверов на машинах, так же требует правильно настроенного DCOM)) та ещё собака. за несколько лет работы столкнулся с тем, что находились такие сервера которые отказывались по сети передавать данные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2012, 19:24:49 |
|
||
|
Как работать с IOPCHDA_Server из проекта opcdelphi
|
|||
|---|---|---|---|
|
#18+
GrozaUmnikam aka tarasdjfor_kav, Приведите пожалуйста полный правильный код нажатия на кнопку. При котором будет определяться список ОРС серверов и помещаться в StringList. Если можно со всема переменными. Спасибо))) 1 - посмотри файлик OPCHDA, там должна быть такая структура: начало файла: // *********************************************************************// // GUIDS declared in the TypeLibrary // // *********************************************************************// const LIBID_OPCHDA: TGUID = '{1F1217BA-DEE0-11D2-A5E5-000086339399}'; IID_IOPCHDA_Server: TGUID = '{1F1217B0-DEE0-11D2-A5E5-000086339399}'; IID_IOPCHDA_Browser: TGUID = '{1F1217B1-DEE0-11D2-A5E5-000086339399}'; IID_IOPCHDA_SyncRead: TGUID = '{1F1217B2-DEE0-11D2-A5E5-000086339399}'; IID_IOPCHDA_SyncUpdate: TGUID = '{1F1217B3-DEE0-11D2-A5E5-000086339399}'; IID_IOPCHDA_SyncAnnotations: TGUID = '{1F1217B4-DEE0-11D2-A5E5-000086339399}'; IID_IOPCHDA_AsyncRead: TGUID = '{1F1217B5-DEE0-11D2-A5E5-000086339399}'; IID_IOPCHDA_AsyncUpdate: TGUID = '{1F1217B6-DEE0-11D2-A5E5-000086339399}'; IID_IOPCHDA_AsyncAnnotations: TGUID = '{1F1217B7-DEE0-11D2-A5E5-000086339399}'; IID_IOPCHDA_Playback: TGUID = '{1F1217B8-DEE0-11D2-A5E5-000086339399}'; IID_IOPCHDA_DataCallback: TGUID = '{1F1217B9-DEE0-11D2-A5E5-000086339399}'; CATID_OPCHDAServer10: TGUID = '{7DE5B060-E089-11d2-A5E6-000086339399}'; ---- вот эта строка должна присутствовать // *********************************************************************// // Declaration of Enumerations defined in Type Library // // *********************************************************************// ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2012, 07:55:01 |
|
||
|
Как работать с IOPCHDA_Server из проекта opcdelphi
|
|||
|---|---|---|---|
|
#18+
процедура поиска: procedure TForm1.EnumOPCServerClick(Sender: TObject); var i: integer; begin ListOPCServers.Clear; ServerNames := TStringList.Create; try SetLength(CATIDs, 1); CATIDs[0] := CATID_OPCHDAServer10; OPCServerList := TOPCServerList.Create(Edit1.Text, false, CATIDs); OPCServerList.Update; ServerNames.AddStrings(OPCServerList.Items); for i := 0 to ServerNames.count - 1 do begin ListOPCServers.Items.Add(ServerNames[i]); end; if ServerNames.count = 0 then Log('Сервера необнаружены!') else Log('Сервера обнаружены!') finally ServerNames.Free; end; ConnectOPCServer.SetFocus; ---- это можешь убрать , это просто фокус на другую кнопочку end; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2012, 08:08:22 |
|
||
|
Как работать с IOPCHDA_Server из проекта opcdelphi
|
|||
|---|---|---|---|
|
#18+
for_kav, ListOPCServers - что за переменная? TStrings? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2012, 11:12:38 |
|
||
|
Как работать с IOPCHDA_Server из проекта opcdelphi
|
|||
|---|---|---|---|
|
#18+
Все получилось!!!! Спасибо)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2012, 11:24:25 |
|
||
|
Как работать с IOPCHDA_Server из проекта opcdelphi
|
|||
|---|---|---|---|
|
#18+
GrozaUmnikam aka tarasdjВсе получилось!!!! Спасибо)) ну вот и я рад) http://www.sql.ru/forum/images/happy.gif ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2012, 11:58:57 |
|
||
|
Как работать с IOPCHDA_Server из проекта opcdelphi
|
|||
|---|---|---|---|
|
#18+
GrozaUmnikam aka tarasdj, чтение всех переменных сделал в цикле? просто из списка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2012, 12:01:13 |
|
||
|
Как работать с IOPCHDA_Server из проекта opcdelphi
|
|||
|---|---|---|---|
|
#18+
for_kavGrozaUmnikam aka tarasdjОРС сервера есть разных категорий. Есть OPC HDA.1, OPC HDA.2. Так вот они чемто различаються. И все что я могуВам подзказать это то что у Вас ОРС HDA.1 , а этот код работает, почему то только с OPC HDA.2. Почему так я не знаю. Проблема в том что функция GetItemServerHandle не может получить хэндл итема. ТОчно такая же ситуация у меня с WinCC. И до сих пор я не выяснил почему. Сервер на котором я отлаживал прогу: Logika.HDA.2 - работает, а с PCS.OPCHDAServer.1 не работает. Разница в том что логиковский ОРС второй категории, а wincc - первой. Вот и б тоже очень хотел выяснить в чем проблема, но не могу, нет возможности!!!! тут с вами не соглашусь. есть один стандарт на текущий момент это 1.2 и все его поддерживают, были ещё 1.0, 1.1, делфийские библиотечки по моему на 1.2 основанны. ТОесть Вы хотите сказать что если ОРС сервер будет 1.0 спецификации, то клиент написан по этим библиотекам работать не будет ?????? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2012, 16:54:00 |
|
||
|
Как работать с IOPCHDA_Server из проекта opcdelphi
|
|||
|---|---|---|---|
|
#18+
GrozaUmnikam aka tarasdj, не могу сказать со 100% уверенностью, что работать не будет, но возможно нужно проверять данные на принадлежность к типам стандарта ОРС. а в стандарте 1.2 есть пункт Revision 1.2 Highlights, там есть изменения некоторые. а вообще можете написать что за ошибку выдаёт ОРС сервер WinCC? на какой функции затыкается в дебагере? как точно называется ОРС сервер? и если можно его GUID. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2012, 17:16:04 |
|
||
|
Как работать с IOPCHDA_Server из проекта opcdelphi
|
|||
|---|---|---|---|
|
#18+
for_kav, Вылетает на эту строку. Код: pascal 1. ОРС : PCS7.OPCHDAServer.1 А GUID смотреть в реестре? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2012, 17:49:20 |
|
||
|
Как работать с IOPCHDA_Server из проекта opcdelphi
|
|||
|---|---|---|---|
|
#18+
Походу нашел: GUID (PCS7.OPCHDAServer.1) - {CB05BEA1-AB41-4eb3-BCC7-615337880D27} ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2012, 18:02:41 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=37635583&tid=2041873]: |
0ms |
get settings: |
11ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
185ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
| others: | 240ms |
| total: | 525ms |

| 0 / 0 |
