Online Forums
Technical support is provided through Support Forums below. Anybody can view them; you need to Register/Login to our site (see links in upper right corner) in order to Post questions. You do not have to be a licensed user of our product.
Please read Rules for forum posts before reporting your issue or asking a question. OPC Labs team is actively monitoring the forums, and replies as soon as possible. Various technical information can also be found in our Knowledge Base. For your convenience, we have also assembled a Frequently Asked Questions page.
Do not use the Contact page for technical issues.
Error While Connecting to the Server
I was not able to reproduce and troubleshoot the issue.
There are problems on both sides: The server returns the condition with the same name multiple times, which makes no sense. And, the client (QuickOPC) implementation cannot cope with it, and crashes.
We have made a fix on the client side. In case of name collisions like this, only one of the elements will be returned, and there will be no crash.
The fix is in version 5.80.192 or later, now available on www.nuget.org, and from our Downloads page.
Thank you for reporting this issue!
Best regards
Please Log in or Create an account to join the conversation.
- Jannie@Moore
- Topic Author
- Offline
- Elite Member
- Posts: 22
- Thank you received: 0
Please Log in or Create an account to join the conversation.
I will re-test by running the application more times. I was not doing it before.
Also, which .NET runtime are you using? Is it .NET Framework (e.g. 4.6.x or 4.7.x or 4.8.x), or is it .NET Core, or .NET 5/6/7 ?
Thank you
Please Log in or Create an account to join the conversation.
- Jannie@Moore
- Topic Author
- Offline
- Elite Member
- Posts: 22
- Thank you received: 0
Yes problem appear to be on the GDA server. but not show how to fix. If i run my demo application first time is able to work properly and fetch the events.
if i stop the applican and try to run again is complaining.
'An item with the same key has already been added. Key: Critical' somewhere is duplicating i checked my data doesnt have duplicates. maybe is cached by the server.
Please Log in or Create an account to join the conversation.
- Jannie@Moore
- Topic Author
- Offline
- Elite Member
- Posts: 22
- Thank you received: 0
QuickOPC version 5.61.343, this is the max version we can use based on our License. but i tried last version on trial i get same error.
Please Log in or Create an account to join the conversation.
It looks like you are using the sample configuration that goes with the server, right?
I tried it, but I could not reproduce the problem.
Which QuickOPC version are you using please?
And, which version of the MatrikonOPC GDA server?
Regards
Please Log in or Create an account to join the conversation.
- Jannie@Moore
- Topic Author
- Offline
- Elite Member
- Posts: 22
- Thank you received: 0
<Root Version="4.0">
<Node>
<Address>
<L-ink Value="Marshal" />
<L-ink Value="Matrikon_OPC_GDA_1" />
</Address>
<PersistentData>
<X-MLConfig>
<Matrikon.OPC.GDA>
<CGDARootDevLink name="" description="GDA Root">
<CGDAServerDevLink name="AlarmEventConnection" description="AlarmEventConnection" GDAProgID="Matrikon.GDA.ODBC" GDADescription="Matrikon GDA for ODBC(SQL Server)" GDAInitXML="<GDAInit ReadOnly="1" TimeOut="15" />" GDAConnectXML="<GDAConnect DSN="GDA ODBC" User="DignosTM" Password="^01`53e2fbc8548e564900f9f5cc3979074ed313cbe8cd4d096792cd3ab67641" />" QualityMap="[GOOD],[0],[BAD],[1],[UNCERTAIN],[2]" UseClampedTimestamps="0" ServerGDAChoice="1" PostgreInserts="0" MaxCustomQueryResult="10000" MaxHDAInsertQueryLimit="10000" UseDST="0">
<CGDAObjectDevLink name="Data Mapping" description="" ObjectType="Table" AETableName="ConditionalAlarm_TestTable" AEScanInterval="20000" AETagMap="[ID],[ID],[Latest],[],[Area],[Area],[Source],[Source],[CategoryID],[CategoryID],[Category],[CategoryName],[Timestamp],[TimeStamp],[Message],[Message],[Severity],[Severity],[Condition],[Condition],[SubCondition],[Sub-Condition],[Quality],[Quality],[Enabled],[Enabled],[Active],[Active],[Acknowledged],[Acknowledge],[AckTime],[Ack_Timestamp],[AckComment],[Ack_Comment],[ActorID],[Ack_Actor]" AERootAreaName="" />
</CGDAServerDevLink>
<CGDAServerDevLink name="Database Connection" description="" GDAProgID="Matrikon.GDA.ODBC" GDADescription="Matrikon GDA for ODBC(SQL Server)" GDAInitXML="<GDAInit ReadOnly="0" TimeOut="5" />" GDAConnectXML="<GDAConnect DSN="SQL Server" User="DignosTM" Password="^01`34875e6e2af0240ba4bfda9d124de0651bed781e34448c42e09ccb4754aa" />" QualityMap="[GOOD],[0],[BAD],[1],[UNCERTAIN],[2]" UseClampedTimestamps="0" ServerGDAChoice="1" PostgreInserts="0" MaxCustomQueryResult="10000" MaxHDAInsertQueryLimit="10000" UseDST="0" />
<CServerStatusDevLink name="Server Status" description="Server Status Devlink" statusCheckPeriod="5000" oneConnect="-1" directList="AlarmEventConnection,AlarmEventConnection.Data Mapping,Database Connection,TestDatabase,TestDatabase.Query_events,TestDatabase.Query_history,TestDatabase.Query_integer,TestDatabase.Query_text,TestDatabase.Table_events,TestDatabase.Table_history,TestDatabase.Table_int,TestDatabase.Table_namedhistory,TestDatabase.Table_text,TestDatabase._Multi_Query,TestDatabase._Multi_Table" parentList="" />
<CGDAServerDevLink name="TestDatabase" description="" GDAProgID="Matrikon.GDA.ODBC" GDADescription="Matrikon GDA for ODBC(MS Access)" GDAInitXML="<GDAInit ReadOnly="0" TimeOut="5" />" GDAConnectXML="<GDAConnect DSN="TestDatabase" User="" Password="" />" QualityMap="[GOOD],[0],[BAD],[1],[UNCERTAIN],[2]" UseClampedTimestamps="0" ServerGDAChoice="0" PostgreInserts="0" MaxCustomQueryResult="20000" MaxHDAInsertQueryLimit="20000" UseDST="0">
<CGDAObjectDevLink name="Query_events" description="" ObjectType="Query" AERefreshQuery="select * from EVENTS" AEScanQuery="select * from EVENTS where ID > {RowID}" AEAckUpdateQuery="update EVENTS set Ack = 1, AckTime = '{AckTimestamp}', AckComment = '{AckComment}', AckActor = '{AckActor}' where ID = {RowID}" AEScanInterval="5000" AETagMap="[ID],[ID],[Area],[Area],[Source],[Source],[CategoryID],[CategoryID],[Category],[Category],[Timestamp],[EventTime],[Message],[Message],[Severity],[Severity],[Condition],[Condition],[SubCondition],[Subcondition],[Quality],[Quality],[Enabled],[Enabled],[Active],[Active],[Acknowledged],[Ack],[AckTime],[AckTime],[AckComment],[AckActor],[ActorID],[AckComment],[Custom:X],[Custom1],[Custom:Y],[Custom2]" AERootAreaName="" />
<CGDAObjectDevLink name="Query_history" description="" ObjectType="Query" DAQuery="" DAQueryTagMap="" MultiColTagname="false" TagnameSeperator="_" DATagname_1="" DATagname_2="" DATagname_3="" HDATagname_1="" HDATagname_2="" HDATagname_3="" HDAQuery="select * from HISTORICAL_TABLE_NAMED" HDAQueryTagMap="[TagName],[TAG_NAME],[],[Value],[VALUE],[],[Timestamp],[TIME],[],[Quality],[QUALITY],[]" />
<CGDAObjectDevLink name="Query_integer" description="" ObjectType="Query" DAQuery="select * from INTEGER_TABLE" DAQueryTagMap="[TagName],[TAG_NAME],[],[Value],[TAG_VALUE],[],[Timestamp],[TAG_TIMESTAMP],[],[Quality],[TAG_QUALITY],[]" MultiColTagname="false" TagnameSeperator="_" DATagname_1="" DATagname_2="" DATagname_3="" HDATagname_1="" HDATagname_2="" HDATagname_3="" HDAQuery="" HDAQueryTagMap="" />
<CGDAObjectDevLink name="Query_text" description="" ObjectType="Query" DAQuery="select * from TEXT_VALUES" DAQueryTagMap="[TagName],[TAG_NAME],[],[Value],[TAG_VALUE],[],[Timestamp],[TAG_TIMESTAMP],[],[Quality],[TAG_QUALTIY],[]" MultiColTagname="false" TagnameSeperator="_" DATagname_1="" DATagname_2="" DATagname_3="" HDATagname_1="" HDATagname_2="" HDATagname_3="" HDAQuery="" HDAQueryTagMap="" />
<CGDAObjectDevLink name="Table_events" description="" ObjectType="Table" AETableName="EVENTS" AEScanInterval="5000" AETagMap="[ID],[ID],[Latest],[],[Area],[Area],[Source],[Source],[CategoryID],[CategoryID],[Category],[Category],[Timestamp],[EventTime],[Message],[Message],[Severity],[Severity],[Custom:X],[Custom1],[Custom:Y],[Custom2]" AERootAreaName="SimpleEvents" />
<CGDAObjectDevLink name="Table_history" description="" ObjectType="Table" DATableName="" DATagnameColumn="" DAValueColumn="" DAQualityColumn="" DATimestampColumn="" DABatchColumn="" DAInsertTimeColumn="" MultiColTagname="false" TagnameSeperator="_" DATagname_1="" DATagname_2="" DATagname_3="" HDATableName="HISTORICAL_TABLE" HDATagnameColumn="*Use Table Name*" HDAValueColumn="VALUE" HDAQualityColumn="QUALITY" HDATimestampColumn="TIME" HDABatchColumn="" HDATagname_1="" HDATagname_2="" HDATagname_3="" BulkWriteEnabled="false" HDACheckBeforeInsert="true" HDAInsertTimeColumn="" />
<CGDAObjectDevLink name="Table_int" description="" ObjectType="Table" DATableName="INTEGER_TABLE" DATagnameColumn="TAG_NAME" DAValueColumn="TAG_VALUE" DAQualityColumn="TAG_QUALITY" DATimestampColumn="TAG_TIMESTAMP" DABatchColumn="" DAInsertTimeColumn="" MultiColTagname="false" TagnameSeperator="_" DATagname_1="" DATagname_2="" DATagname_3="" HDATableName="" HDATagnameColumn="" HDAValueColumn="" HDAQualityColumn="" HDATimestampColumn="" HDABatchColumn="" HDATagname_1="" HDATagname_2="" HDATagname_3="" BulkWriteEnabled="false" HDACheckBeforeInsert="true" HDAInsertTimeColumn="" />
<CGDAObjectDevLink name="Table_namedhistory" description="" ObjectType="Table" DATableName="" DATagnameColumn="" DAValueColumn="" DAQualityColumn="" DATimestampColumn="" DABatchColumn="" DAInsertTimeColumn="" MultiColTagname="false" TagnameSeperator="_" DATagname_1="" DATagname_2="" DATagname_3="" HDATableName="HISTORICAL_TABLE_NAMED" HDATagnameColumn="TAG_NAME" HDAValueColumn="VALUE" HDAQualityColumn="QUALITY" HDATimestampColumn="TIME" HDABatchColumn="" HDATagname_1="" HDATagname_2="" HDATagname_3="" BulkWriteEnabled="false" HDACheckBeforeInsert="true" HDAInsertTimeColumn="" />
<CGDAObjectDevLink name="Table_text" description="" ObjectType="Table" DATableName="TEXT_VALUES" DATagnameColumn="TAG_NAME" DAValueColumn="TAG_VALUE" DAQualityColumn="TAG_QUALTIY" DATimestampColumn="TAG_TIMESTAMP" DABatchColumn="" DAInsertTimeColumn="" MultiColTagname="false" TagnameSeperator="_" DATagname_1="" DATagname_2="" DATagname_3="" HDATableName="" HDATagnameColumn="" HDAValueColumn="" HDAQualityColumn="" HDATimestampColumn="" HDABatchColumn="" HDATagname_1="" HDATagname_2="" HDATagname_3="" BulkWriteEnabled="false" HDACheckBeforeInsert="true" HDAInsertTimeColumn="" />
<CGDAObjectDevLink name="_Multi_Query" description="DA Query Mapping example with multi col tagname enabled" ObjectType="Query" DAQuery="SELECT `TAG_NAME`, `TAG_DESC`, `TAG_AREA`, `TAG_STUFF`, `TAG_VALUE`, `TAG_TIMESTAMP`, `TAG_QUALITY`, `Index` FROM `INTEGER_TABLE_MULTI_HIST` WHERE `TAG_NAME` = 'VALVE_PRESSURE1'" DAQueryTagMap="[TagName],[TAG_NAME],[],[Value],[TAG_VALUE],[],[Timestamp],[TAG_TIMESTAMP],[],[Quality],[TAG_QUALITY],[]" MultiColTagname="true" TagnameSeperator="=" DATagname_1="TAG_DESC" DATagname_2="TAG_AREA" DATagname_3="TAG_STUFF" HDATagname_1="" HDATagname_2="" HDATagname_3="" HDAQuery="" HDAQueryTagMap="" />
<CGDAObjectDevLink name="_Multi_Table" description="DA Table Mapping example with multi col tagname enabled" ObjectType="Table" DATableName="INTEGER_TABLE_MULTI" DATagnameColumn="TAG_NAME" DAValueColumn="TAG_VALUE" DAQualityColumn="TAG_QUALITY" DATimestampColumn="TAG_TIMESTAMP" DABatchColumn="" DAInsertTimeColumn="" MultiColTagname="true" TagnameSeperator="¤" DATagname_1="TAG_DESC" DATagname_2="TAG_AREA" DATagname_3="TAG_STUFF" HDATableName="" HDATagnameColumn="" HDAValueColumn="" HDAQualityColumn="" HDATimestampColumn="" HDABatchColumn="" HDATagname_1="" HDATagname_2="" HDATagname_3="" BulkWriteEnabled="false" HDACheckBeforeInsert="true" HDAInsertTimeColumn="" />
</CGDAServerDevLink>
</CGDARootDevLink>
</Matrikon.OPC.GDA>
</XMLConfig>
</PersistentData>
</Node>
</Root>
Please Log in or Create an account to join the conversation.
Attachments:
Please Log in or Create an account to join the conversation.
- Jannie@Moore
- Topic Author
- Offline
- Elite Member
- Posts: 22
- Thank you received: 0
I can see the created events in Matrikon OPC Explorer. problem only occurs when i try to read the data using OPC Labs API
Please Log in or Create an account to join the conversation.
can you post or send the configuration of the server?
It seems like some kind of misbehavior on the server side, but at the same time something we should be able to cope with better. So I would like to investigate "live", and then provide a fix, if possible.
Best regards
Please Log in or Create an account to join the conversation.