Professional OPC
Development Tools

logos

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

More
07 May 2024 15:44 #12777 by support
Hello.
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
The following user(s) said Thank You: Jannie@Moore

Please Log in or Create an account to join the conversation.

More
07 May 2024 11:12 #12775 by Jannie@Moore
I'm using .net 5

Please Log in or Create an account to join the conversation.

More
07 May 2024 10:21 #12774 by support
Hello.

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.

More
07 May 2024 09:57 #12773 by Jannie@Moore
Hi , just to add on this, i was busy doing the test.

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.

More
07 May 2024 06:11 #12771 by Jannie@Moore
Hello, MatrikonOPC Server for GDA. version : 4.0.0.8587
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.

More
06 May 2024 14:31 #12767 by support
Hello.
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.

More
06 May 2024 14:23 - 06 May 2024 14:29 #12766 by Jannie@Moore
Okay, thank you, see below.
<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="&lt;GDAInit ReadOnly=&quot;1&quot; TimeOut=&quot;15&quot; /&gt;" GDAConnectXML="&lt;GDAConnect DSN=&quot;GDA ODBC&quot; User=&quot;DignosTM&quot; Password=&quot;^01`53e2fbc8548e564900f9f5cc3979074ed313cbe8cd4d096792cd3ab67641&quot; /&gt;" 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="&lt;GDAInit ReadOnly=&quot;0&quot; TimeOut=&quot;5&quot; /&gt;" GDAConnectXML="&lt;GDAConnect DSN=&quot;SQL Server&quot; User=&quot;DignosTM&quot; Password=&quot;^01`34875e6e2af0240ba4bfda9d124de0651bed781e34448c42e09ccb4754aa&quot; /&gt;" 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="&lt;GDAInit ReadOnly=&quot;0&quot; TimeOut=&quot;5&quot; /&gt;" GDAConnectXML="&lt;GDAConnect DSN=&quot;TestDatabase&quot; User=&quot;&quot; Password=&quot;&quot; /&gt;" 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 &gt; {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>
Last edit: 06 May 2024 14:29 by support.

Please Log in or Create an account to join the conversation.

More
06 May 2024 13:48 #12765 by support
Attachments:

Please Log in or Create an account to join the conversation.

More
06 May 2024 13:29 #12764 by Jannie@Moore
Hi, I'm using Matrikon OPC Server for GDA. I'm not sure what configuration i should sent. Also note is local server.
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.

More
06 May 2024 13:20 #12762 by support
Hello,

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.

Moderators: support
Time to create page: 0.071 seconds