Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Twido работа по Ethernet. Некорректная работа.
Диалог специалистов АВОК > ОБЩИЙ ФОРУМ > Автоматизация систем
Alex_Doctor
Есть 4 контроллера Twido TWDLCAE40DRF. Соединены по ethernet.
TW1 модулей нет
TW2 7 модулей TWDAMI8HT, по 8 аналоговых входов каждый.
TW3 7 модулей TWDAVO2HT, по 2 аналоговых выхода каждый
TW4 1 модуль TWDAVO2HT на 2 аналоговых выхода, 2 модуля TWDAMI8HT по 8 аналоговых входов.

Аналоговые входы - считывание параметров с термодатчиков и датчиков давления(72 параметра), аналоговые выходы - управление задвижки (16 задвижек данфосс).
При работе через OPC сервер все работает как надо. Входы считываются, выходы записываются. Крутится программка, которая через OPC считывает параметры, обрабатывает, пишет на выходы, все хоккей. Однако требуется вынести всю логику на контроллер TW1 и возникла проблема. Всё (на мастер контроллере прописаны IP слейвов, макросы Comm и Symbol заполнены) сделано по букварю (TWIDO S1062 Version A). Однако команды записи C-WRNW и C_WR1W не работают вообще, команды чтения C_RDNW и C_RD1W работают, но только в отношении одного контроллера, первого в тексте программы. Т.е. в программе прописано обращение ко всем контроллерам, а обмен идет только с первым, и только на чтение.
Кто сталкивался с аналогичной проблемой, помогите! Если можно, примерами!
Alex_Doctor
LD 1
[ C_WR1W_ADDR_1 := 100 ]
[ C_WR1W_VAL_1 := 100 ]
[ C_WR1W 1 ]
LD 1
[ C_WR1W_ADDR_2 := 310 ]
[ C_WR1W_VAL_2 := 10 ]
[ C_WR1W 2 ]

Первая команда выполняется, вторая нет.
Тоже со чтением.
Т.е. контроллер работает только с одним раб-контроллером.
ЗЫ: как писать - разобрался. Только обращение происходит к одному контроллеру. И может выполнятся только одна операция. Или запись, или чтение. Только с одного контроллера. ОРС читает-пишет ок.
Alex_Doctor
Использовал временную задержку между командами, все заработало.
Оказывается, одновременно несколько сетевых команд не работают.
san
Лучше уж пользоваться EXCH3, там хоть непоняток меньше будет и оптимизировать проще. Я как-то честно говоря до конца не понимаю, что в этих макросных делах такого ценного? Все равно за всем следить надо, и память выделять и еще з бубенцами танцевать. Это как делать свою прогу на базе существущей чужой. В конце концов все-равно все переписываешь.
Kuzyma
Попробуйте каждую следующую операцию чтения/записи блокировать битом активности блока EXCH3 (по сути он используется в макросе). Синтаксис бита активности - %MSG3.D. Бит во взведенном состоянии если нет активных операций у блока EXCH3.
Alex_Doctor
Спасиб!
EXCH дольше, но удобнее настраивать.
Telemu
Цитата(Alex_Doctor @ 18.12.2011, 9:42) *
сделано по букварю (TWIDO S1062 Version A)

Подскажите где взять такой букварь?
Antibiotic
Да букварь бы непомешал, вечно для твидо мало инфы...а возможностей у ПЛК много
Telemu
У меня получилось, только без букваря, и на макросы забил.
Без них получается больше передовать.
Когда разберёшся, кажется всё просто, а когда не идет, готов производителей извести со света, наши ответить толком не могут (не всегда, на кого нарвешься), а буржуины только на английском или на французком.
Кстати и с панелями беда, программы работают только под win32 где они берут такие буки? Пришлось перейти на руские панели. Хотя возможностей сильно не хватает, но зато дешевле...
Antibiotic
Такаяже беда, правда Win32 стоит и с панелями проблем нет (монохромными), а вот как работают макросы никак не догоняю...
disaster2005
Цитата(Telemu @ 6.5.2013, 11:15) *
У меня получилось, только без букваря, и на макросы забил.
Без них получается больше передовать.
Когда разберёшся, кажется всё просто, а когда не идет, готов производителей извести со света, наши ответить толком не могут (не всегда, на кого нарвешься), а буржуины только на английском или на французком.
Кстати и с панелями беда, программы работают только под win32 где они берут такие буки? Пришлось перейти на руские панели. Хотя возможностей сильно не хватает, но зато дешевле...

Могли бы выслать пример связи двух twido по Ethernet (port3) с использованием EXCH3?
disaster2005(собака)mail.ru
Спасибо.
Telemu
В конфигурации присвойте IP например в 1 twido 192.168.1.101 а во вторм 192.168.1.102, и укажите их адреса в качестве слейва наоборот - это связь на прямую, одним кабелем ethernet.
Если надо несколько чере комутатор, то всё как обычно...
Telemu
Два пакета по 16 слов и 16 бит, во втором twido точно также. Установлено сразу передача и чтение.
Expert HVAC
Цитата(Alex_Doctor @ 18.12.2011, 7:42) *
Есть 4 контроллера Twido TWDLCAE40DRF. Соединены по ethernet.
TW1 модулей нет
TW2 7 модулей TWDAMI8HT, по 8 аналоговых входов каждый.
TW3 7 модулей TWDAVO2HT, по 2 аналоговых выхода каждый
TW4 1 модуль TWDAVO2HT на 2 аналоговых выхода, 2 модуля TWDAMI8HT по 8 аналоговых входов.

Аналоговые входы - считывание параметров с термодатчиков и датчиков давления(72 параметра), аналоговые выходы - управление задвижки (16 задвижек данфосс).
При работе через OPC сервер все работает как надо. Входы считываются, выходы записываются. Крутится программка, которая через OPC считывает параметры, обрабатывает, пишет на выходы, все хоккей. Однако требуется вынести всю логику на контроллер TW1 и возникла проблема. Всё (на мастер контроллере прописаны IP слейвов, макросы Comm и Symbol заполнены) сделано по букварю (TWIDO S1062 Version A). Однако команды записи C-WRNW и C_WR1W не работают вообще, команды чтения C_RDNW и C_RD1W работают, но только в отношении одного контроллера, первого в тексте программы. Т.е. в программе прописано обращение ко всем контроллерам, а обмен идет только с первым, и только на чтение.
Кто сталкивался с аналогичной проблемой, помогите! Если можно, примерами!


Описание проблемы и саму программу присылайте в тех.поддержку: ru.ccc@schneider-electric.com
Обязательно помогут.
Telemu
ИМХО макросы, для не сильно вникших - на самом деле научится ими управлять, тоже самое, что получить зваание магистра тёмных энергий...
Хотя я частотниками, по началу управлял через макросы....
disaster2005
Цитата(Telemu @ 9.8.2013, 14:34) *
В конфигурации присвойте IP например в 1 twido 192.168.1.101 а во вторм 192.168.1.102, и укажите их адреса в качестве слейва наоборот - это связь на прямую, одним кабелем ethernet.

Какая часть программы на чтение, какая на запись?
и там и там тадлица одинакова, отличаються только "%MW3 := 64" и "%MW27 := 81" и что эти цифры означают?
Цитата(Telemu @ 9.8.2013, 14:34) *
Если надо несколько чере комутатор, то всё как обычно...

а как обычно?
disaster2005
На самом деле, функция EXCH3 гораздо приятнее вплане модернизаций, да и опыт формирования таблиц для ModBus-RS485 пригодиться.
Тот пример, что выложил Telemu не отражает всей картины, да и таблица вторая настроена на чтение (хоть утверждаеться что на запись)
Если кому нужно срочно, то могу выложить проект подключения двух Twido по TCP/IP (master --> read/write --> slave), впринципе даже не важно по средствам какой сети будет осуществляться связь, изменения минимальны, суть одна.
Когда закончу проект выложу подробное рукаводство по настройке связи.
Telemu
Может это поможет https://sites.google.com/site/fieldbusbook/...s-rtu-ascii-rus
disaster2005
Цитата(Telemu @ 15.8.2013, 15:39) *

Эта сылка обязана быть у каждого кто хоть как то относится к передаче данных.
Но ваш пост странен, мне эта ссылка не нужна, и я даже отписался что выложу не обрывки инфы, а все целиком. Не понятно зачем тут ваша ссылка.
Telemu
Изначально вы просили пример я выложил рабочий а не теоретический... это до сих пор работает... попытаюсь ответить
Цитата(disaster2005 @ 13.8.2013, 20:01) *
Какая часть программы на чтение, какая на запись?
и там и там тадлица одинакова, отличаються только "%MW3 := 64" и "%MW27 := 81" и что эти цифры означают?

а как обычно?

я же писал что два пакета

если читали по ссылке то там полная расшифровка, из которой мы выдим что старший бит %MW0 установлен 01,что соответствует приему+передаче, это там написано (для справки 0 только передача, 2 только прием).
далее MW3 := 64 это адрес отправляемых данных, MW4:=17 длина, тоже самое во второй части... принимаются сообщения в адреса, первый пакет %MW7, второй в %MW32...

да также как дома компьютеры объеденяются в сеть
disaster2005
Таблица записи 3-х слов:
%MW0 := 16#010E - (01 - всегда 01 = чтение/запись для получения ответа от ведомого что все принято) и (0E = 8 + 2*3слова)
%MW1 := 16#0007 - (смещение в передаче 7й байт)
%MW2 := 16#0110 - (01 - адрес устройства, если связь по TCP/IP то это индекс в колонке слева от IP адреса ведомого что указывается в настройках) и (10 - код запроса для записи)
%MW3 := 10 - запись начнеться с 10-го слова в слейве
%MW4 := 3 - будет записано 3 слова (следовательно в %MW10, %MW11, %MW12) при этом в слейве нужно прописать %MW13 := 16#FFFF для выделения памяти.
%MW5 := 6 - твидо не может посчитать самостоятельно, поетому нужно указать число байт (количество слов * 2)

%MW6 := var1 --> %MW10 (slave)
%MW7 := var2 --> %MW11 (slave)
%MW8 := var3 --> %MW12 (slave)

теперь то, ради чего указывалось 01 - Ответ от ведомого:
%MW9 := 'адрес ведомого' и 'код отклика'
%MW10 := 'номер первого записанного слова'
%MW11 := 'число записанных слов'

т.к. в итоге в таблице вышло 12 слов, посылку формируем как [EXCH3 %MW0:12]

Для связи по TCP/IP необходимо в Describe указать:
- для ведущего - IP адрес, маску, основной шлюз (вымышленный), IP адреса ведомых
- для ведомых - IP адрес, туже маску, тотже шлюз, все.

Telemu, сходство с Вашей таблицей только в первом байте

И конечно нужно при себе иметь всегда эту ссылку https://sites.google.com/site/fieldbusbook/...s-rtu-ascii-rus
Nikaragua
Цитата(Alex_Doctor @ 18.12.2011, 7:42) *
Есть 4 контроллера Twido TWDLCAE40DRF. Соединены по ethernet.
TW1 модулей нет
TW2 7 модулей TWDAMI8HT, по 8 аналоговых входов каждый.
TW3 7 модулей TWDAVO2HT, по 2 аналоговых выхода каждый
TW4 1 модуль TWDAVO2HT на 2 аналоговых выхода, 2 модуля TWDAMI8HT по 8 аналоговых входов.

Аналоговые входы - считывание параметров с термодатчиков и датчиков давления(72 параметра), аналоговые выходы - управление задвижки (16 задвижек данфосс).
При работе через OPC сервер все работает как надо. Входы считываются, выходы записываются. Крутится программка, которая через OPC считывает параметры, обрабатывает, пишет на выходы, все хоккей. Однако требуется вынести всю логику на контроллер TW1 и возникла проблема. Всё (на мастер контроллере прописаны IP слейвов, макросы Comm и Symbol заполнены) сделано по букварю (TWIDO S1062 Version A). Однако команды записи C-WRNW и C_WR1W не работают вообще, команды чтения C_RDNW и C_RD1W работают, но только в отношении одного контроллера, первого в тексте программы. Т.е. в программе прописано обращение ко всем контроллерам, а обмен идет только с первым, и только на чтение.
Кто сталкивался с аналогичной проблемой, помогите! Если можно, примерами!


Это распространённая ошибка программирования функций обращений чтения/записи по Modbus для контроллеров Twido. Необходимо пояснить принцип работы контроллера... Контроллер выполняет программу циклически (создание образа состояния входов - обработка логики программы пользователя - создание образа состояния выходов). Время цикла может быть порядка 10 мс. В тоже время, инструкция EXCH запускает процесс связи в коммуникационном модуле. Полная обработка данной процедуры может длиться несколько циклов контроллеров. Каждый раз, когда идёт обработка логики пользовательской команды выполняется первая инструкция EXCH и соответсвующий порт контроллера остаётся занят этой операцией на несколько циклов контроллера. После того как он освободится, опять занимается первой инструкцией EXCH и так далее. До последующих EXCH инструкций он никогда не дойдет. К сожалению, в существующих примерах Шнейдер в качестве инициализации выполнения EXCH инструкции использует логические входа контроллера (по фронту!!!) и нет примеров реальной обработки slave устройств. Можно только получить пример такой программы в техподдержки SE.
EXCH1 - инструкция для порта 1 (порт программирования)
EXCH2 - инструкция для порта 2 (опционный порт)
EXCH3 - инструкция для встроенного Ethernet порта контроллеров компактной 40 серии.
Макросы основаны на инструкциях EXCH, фактически это некая подпрограмма написанная на основе EXCH. Эту программу можно легко посмотреть, щёлкнув правой кнопкой мыши на блоке макроса в теле программы.
Разницы в написании вообщем нет, нужна аккуратность и не более.

Как организовать программу. Один из способов, это организовать в программе циклический перебор выполняемого макроса или EXCH инструкции. Обязательно присутствие бита состояния порта MSGD (вроде). Который собственно и запускает выполнение EXCH инструкции. Если количество slave устройств много, то рекомендую предусмотреть вариант исключения отключившегося slave устройства по таймауту. Это ускорит взаимообмен.

По конкретно задаче. Скорее всего то не подойдет из за ограничений, но стоит напомнить, что в Twido есть возможность организовать взаимообмен между контроллерами в режиме Remote Link. Один из режимов, когда контроллеры равноправные с собственными программами и обмениваются между собой 4 словами на передачу и 4 словами на приём. Можно объеденить до 7 контроллеров на расстоянии до 200 метров.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2025 IPS, Inc.