I would like to use the OPC DA Client with an OPC-Server that uses colons(':') in the item-names.
An item name would be for example: "dp://brd0.seg0.dev15/Inareai0d17".
I found the name-parsing in:
FORTE_1.5.2\src\modules\opc\opccomlayer.cpp(289) (and some other lines) and changed the separator to ';'. - The change works for me.
Best regards,
Thomas
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
As I'm not using the OPC Client sofar I'm happy with such a change. Is there somewhere a definition what are valid characters of OPC identifiers. Because the seperator should clearly be an invalid character so that we don't run in the same issue again.
What are other FORTE users thinking about it?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I think that a good more general solution would be to allow users to add quotation marks ("") in CFB's ID inputs. So the following ID inputs would result in the same parameters:
This solution is more user friendly. So every quotation mark (") just after a colon (:) would lead the interpreter to search for a ": sequence to get the next parameter.
The other (most common, but less user friendly) solution would be to allow the use of special characters, like:
\: for colon (:)
and
\\ for backslash ()
I could program any of these solutions myself.
Cheers,
Giorgis
Last edit: G. Sfiris 2014-08-20
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
quotation marks are not good symbols as these have special meanings for IEC 61131-3 WSTRING Literals which are used for these parameters. In order to use quotations marks you need to escape them with $ signs. Which for me seams not quite user friendly.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Of course it's a bit strange to have braces outside curly braces, as:
fbdk.ip[{192.168.0.4}:{61499}]
But anyway if we need a general solution, I think we should decide either to group a parameter's characters by parentheses, braces, etc. or use the special character input \: and \\.
Cheers
Last edit: G. Sfiris 2014-08-20
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
The idea of the parameters for the different layers was to provide a place to specify parameters in a way typical for the specific network protocol. For example in most IP network based protocols and tools addresses are specified as "ip:port". And I expect that most users want to use the specification method typical for their network.
Therefore I would not impose general rules for the parameters specification on top. Espcially as you never know what special characters the next protocol may need.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Way back (around 2001) we did some research on this topic.
We found OPC Servers were using a wide range of different characters in item names (i remember for sure dot(.), backslash(), slash(/), percent(%)) - I can not remember all characters, but i believe parenthesis also were used..
I remember that the paragraph sign (§) seemed a good choice for such a separator. :)
I like the idea with the quotation marks. - The separator then would be 3 characters (":"). - From point of view of 1499 the IDs are string-literals anyway, they are just passed to the OPC communication.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hello,
I would like to use the OPC DA Client with an OPC-Server that uses colons(':') in the item-names.
An item name would be for example: "dp://brd0.seg0.dev15/Inareai0d17".
Unfortunately this collides with the use of the colon as separator for the ID input (as described in http://fordiac.sourceforge.net/ehelp/html/communication/opc.html in section 'Create OPC Client')
Any hint on how to work around this?
Best regards,
Thomas
Hi,
I found the name-parsing in:
FORTE_1.5.2\src\modules\opc\opccomlayer.cpp(289) (and some other lines) and changed the separator to ';'. - The change works for me.
Best regards,
Thomas
HI,
As I'm not using the OPC Client sofar I'm happy with such a change. Is there somewhere a definition what are valid characters of OPC identifiers. Because the seperator should clearly be an invalid character so that we don't run in the same issue again.
What are other FORTE users thinking about it?
Hello,
I think that a good more general solution would be to allow users to add quotation marks ("") in CFB's ID inputs. So the following ID inputs would result in the same parameters:
"192.168.0.4":"61499"
"192.168.0.4":61499
192.168.0.4:"61499"
192.168.0.4:61499
This solution is more user friendly. So every quotation mark (") just after a colon (:) would lead the interpreter to search for a ": sequence to get the next parameter.
The other (most common, but less user friendly) solution would be to allow the use of special characters, like:
\: for colon (:)
and
\\ for backslash ()
I could program any of these solutions myself.
Cheers,
Giorgis
Last edit: G. Sfiris 2014-08-20
Hi Giorgis,
quotation marks are not good symbols as these have special meanings for IEC 61131-3 WSTRING Literals which are used for these parameters. In order to use quotations marks you need to escape them with $ signs. Which for me seams not quite user friendly.
Then we could use another symbol in the same manner, parentheses () or curly braces {}. The above example would be:
{192.168.0.4}:{61499}
{192.168.0.4}:61499
192.168.0.4:{61499}
192.168.0.4:61499
Of course it's a bit strange to have braces outside curly braces, as:
fbdk.ip[{192.168.0.4}:{61499}]
But anyway if we need a general solution, I think we should decide either to group a parameter's characters by parentheses, braces, etc. or use the special character input \: and \\.
Cheers
Last edit: G. Sfiris 2014-08-20
The idea of the parameters for the different layers was to provide a place to specify parameters in a way typical for the specific network protocol. For example in most IP network based protocols and tools addresses are specified as "ip:port". And I expect that most users want to use the specification method typical for their network.
Therefore I would not impose general rules for the parameters specification on top. Espcially as you never know what special characters the next protocol may need.
Hello,
Do you mean that the rules for the parameters inside the braces [] are protocol specific?
So colon doesn't have to be the separator for all protocols' parameters?
yes this was the idea. and currently all layers have an own paramter parsing algorithm.
O.K. Thank you for clearing this up.
Way back (around 2001) we did some research on this topic.
We found OPC Servers were using a wide range of different characters in item names (i remember for sure dot(.), backslash(), slash(/), percent(%)) - I can not remember all characters, but i believe parenthesis also were used..
I remember that the paragraph sign (§) seemed a good choice for such a separator. :)
I like the idea with the quotation marks. - The separator then would be 3 characters (":"). - From point of view of 1499 the IDs are string-literals anyway, they are just passed to the OPC communication.