Доброго всем.
Контроллер CTRL01 не имеет modbus slave TCP. как читать его переменные через этот протокол.
В других ПЛК мы просто создаем переменные, которые могут находится в разных POU и распределяем по адресам
===========================================================
errADC_Water AT %MX0.0: BOOL;
errTara_Water AT %MX0.1: BOOL;
errSet_Water AT %MX0.2: BOOL;
errKonc_Water AT %MX0.3: BOOL;
Error_1 AT%MW0 : WORD;
Error_2 AT%MW1 : WORD;
Cmd_1 AT%MW4 : WORD;
Data1 AT%MW21 : INT;
Data2 AT%MW22 : INT;
Edit1 AT%MW36 : INT;
Edit2 AT%MW37 : INT;
Edit3 AT%MW38 : INT;
Name1 AT%MB102 : STRING(15); (*MW51*)
Name2 AT%MB118 : STRING(15); (*MW59*)
HMI_Arch1 AT%MD250 : DWORD;
HMI_Arch2 AT%MD251 : DWORD;
========================================================
Потом в Modbus master TCP читаем нужный адрес и все работает
Здесь мне предложили 2 варианта
1) Список форумов ‹ Weintek ‹ Часто задаваемые вопросы по Weintek (F.A.Q.) >> Как настроить Modbus slave в Codesys?
2) или через "билдеровскую часть" - добавить устройство Weintek Built-in Codesys и Modbus server со шлюзом, в котором настроить проброс запросов из Modbus server в Weintek Built-in Codesys, концептуально смотрите тут
Первый вариант простой но требует массива и нужно создавать сложный тип UNION, или работать через pointer или Reference.
Второй сложный нужно ручками прописать адреса и типы данных в шлюзе всех переменных CODESYS из Built-in.
Может кто уже решал подобную задачу более интересным способом.
PS Кстати в CODESYS в панелях и CTRL01 работает OPC DA протокол GATEWAY 3. Т.е. я по этому протоколу спокойно обращаюсь к переменным которые объявлены в символьной конфигурации. Причем через порт самой панели. А порт в CODESY остается свободным. А в описании про это нигде не указано.