Значение переменной можно прочитать через указатель по ADS.
Прочитаем значение переменной `state` через ее указатель `pState`. Нужно разыменовать указатель, добавив спец. символ `^` к имени указателя. Получим `pState^`. Программа на C# для текущей версии 4.4.10 библиотеки Beckhoff.TwinCAT.Ads:
Значение переменной читается. Теперь возьмем пробную версию новой библиотеки 5.0.1-preview.12 под .NET Core 3.1.0. Код поподробнее:
Программа читает переменную и в зависимости от ее значения рисует замысловатые узоры. Имея указатель можно вытягивать значение переменной. Это полезное свойство и дополнительные телодвижения здесь не нужны.
Для новой библиотеки под .NET Core требуется создать файл роутинга `StaticRoutes.xml`. В этом файле настраиваются соединения между целевым контроллером и ПК. Если контроллер и ПК находятся на одной и той же машине, то настраивать этот файл не нужно. Можно просто удалить его.
Great tip, thanks! It seemed to work well with REFERENCE too.
ReplyDeleteFew days ago I managed to do a temporary hack to read some values from the PLC and they were available only as references. Without this blog post I would have though that it couldn't be done.
By the way: I used CreateVariableHandle method
DeleteHi Jussi. Great to hear from you again. REFERENCEs is some sort of POINTERS but I was also surprised that this is working. Thought it is a good idea to check some other ways sort of .ReadSymbol or .CreateVariableHandle. Thanks that you have already done this.
Delete