В комплект поставки контроллера ПЛК 100 входит ПО CoDeSys, следовательно, ПО вхдящее в CodeSys, поставляется с контроллером.
Я специально уточнял этот вопрос у менеджеров компании "Овен".
Тогда что заставило вас таким образом прокомментировать фразу:
?И все же я настаиваю на своем праве использовать DDE, как средство, имеющееся в составе ПО, поставляемого с контроллером.
Скажите пожалуйста, вам не кажется странным тратить свое время на такие "эрзац-лекции", когда уже был задан конкретный вопрос, подразумевающий наличие базовых знаний о том, как организованы итерфейсы обмена данными между приложениями и процессами в операционной системе Windows?Dynamic data exchange (DDE) — механизм взаимодействия приложений в операционных системах Microsoft Windows и OS/2. Хотя этот механизм до сих пор поддерживается в последних версиях Windows, в основном он заменён на более мощные механизмы — OLE, COM и Microsoft OLE Automation.
На каом уровне формирования личности формируется такой стиль общения с собеседниками? Семья, школа, тяготы и лишения воинской службы?Читайте книжки.
Теперь к делу.
Исходя из опыта написания ПО, работаюего в реальном времени с переферийными устройствами с составе SCADA - систем, мне известно, что для корректной организации опроса переферийного оборудования и передачи данных в прикладное ПО, необходимо предусмотреть как минимум два "потока" событий.
Причем, один из этих потоков действительно является программным потоком в терминологии Microsoft (тредом), запускаемым из серверного приложения и используется для обмена данными с портами ввода-вывода через драйвер операционной системы.
Второй поток событий, потоком в терминологии Microsoft не является и представляет собой последовательные обращения прикладного ПО к серверной компоненте.
Чтобы было более понятно, о чем идет речь: ActiveX компонента, размещенная на экранной форме SCADA - программы TraceMode, занимающаяся обменом данными с нестандартным "железом", подключенным через удаленный сервер портов RS-232 и записывающая в свои "свойства" значения, вычисляемые на основании обмена с подключенным устройством, а так же, получающая из "свойств" значения, передаваемые в устройство.
Причем, по отношению к ActiveX - компоненте, форма SCADA-программы является клиентом и не способна порождать вызовы сервера с частотой, достаточной для корректной работы с удаленным устройством. Для этого и нужен второй поток.
Поскольку два "потока" являются асинхронными, неизбежным действием является введение такого механизма, как "качество данных", с терминологии OPC. А в простейшем случае - время последнего обновления полученных от устройства данных.
Более того, организовать сервер так, чтобы он ждал получение данных от устройства, а только затем отвечал на запросы экранной формы - "повесить" скаду при первом же обрыве связи с устройством.
Для корректной работы сервер должен возвращать клиенту что-либо немедленно. Хотя бы статус ошибки.
Мне не нравится то, что в DDE сервере CodeSys этот статус ошибки организован на уровне вызова функции DDERequest, как "ошибка времени исполнения" программы на стороне скрипта клиента.
У меня все еще остается надежда, что внутри DDE-сервера существует некий "тэг", а вернее параметр с каким-либо именем, к которому можно обратиться из скрипта всегда, не получая "ошибку времени исполнения" и на основании его значения сделать заключение о том, готов ли сервер отдать данные о переменных контроллера скрипту, или занят чем-то.
Способные адекватно ответить на таком уровне есть?
Очень на это надеюсь.





Ответить с цитированием