Форум АСУ в Україні
http://asu.in.ua/

2 x Siemens-1200 в одной сети ETHERNET.
http://asu.in.ua/viewtopic.php?f=128&t=1151
Сторінка 1 з 2

Автор:  andrey_bachurin [ 03 червня 2015, 16:26 ]
Тема повідомлення:  2 x Siemens-1200 в одной сети ETHERNET.

Добрый день.
Стоит задача наладить обмен данными по сети ETHERNET два процессорных модулся 1200 серии. Дистанционно связаны через свич, связь проверил - работает. Опираясь на мануал по 1200 https://cache.industry.siemens.com/dl/files/465/36932465/att_106131/v1/s71200_system_manual_ru-RU.pdf серии для обмена данными пользуюсь функциональными блоками TSEND_C, TRCV_C.

Алгоритм передачи налажен так: при срабатывании бита изменения состояния клапана на ПЛК1 активизируется передача данных (состояния 0/1 определеной переменной) параметром REQ=true, параметр CONT всегда true. Спустя 5 секунд передача закрывается(REQ=false). На ПЛК2 порт приема открыт всегда EN_R=1, CONT=1.

То есть связь с обеих сторон налажена всегда, только при активации переменной отвечающей на параметр REQ происходит передача данных. У всех связей свой функциональный блок, индивидуальный connection ID, индивидуальные DB. Когда таких функциональных блока в районе 5-6ти, проблем с обменом нет.

При обмене более 7 потоков у функциональных блоков на ПЛК1 передачи данных устанавливается статус 16#80C4. Обмен идет либо некорректно, либо вообще ПЛК2 не получает данных.

Кто сталкивался с обменном данных в данной модели ПЛК, подскажите, что не так? Есть определенные ограничения в количестве установленных связей одновременно?

Автор:  san [ 03 червня 2015, 17:15 ]
Тема повідомлення:  Re: 2 x Siemens-1200 в одной сети ETHERNET.

Проблема в максимальном количестве Connection. Думаю их максимум 8-мь. Любят че-то они это число. Но надо проверить в мануалке. Лучше для передачи различных данных тех же ПЛК пользоваться только одним соединением. Это Ethernet, по этому количество данных можно передавать в достаточном для ПЛК объеме, даже если они сейчас не нужны. Попрьоуйте переиначить задачу, чтобы оставить только одно соединение.
Кстати, при создании соединения T_CONN или TSEND_C, TRCV можно пользовать тоже с тем же соединением. Ведь соединение дуплексное и по нему можно гонять данные и в одну и в другую сторону. Уже как минимум сократите соединений в 2 раза.

Автор:  andrey_bachurin [ 03 червня 2015, 17:58 ]
Тема повідомлення:  Re: 2 x Siemens-1200 в одной сети ETHERNET.

Было бы удобно просто привязывать DB со всеми параметрами, но насколько понимаю это невозможно. Если с bool понятно, можно все спрятать в одну передачу. Тогда что можно предпринять в случаях с real? Спасибо за ответ.

Автор:  san [ 03 червня 2015, 18:13 ]
Тема повідомлення:  Re: 2 x Siemens-1200 в одной сети ETHERNET.

Одно DB может принимать любую структуру по желанию и передавать его можно. Так что можете в один DB набивать всего столько, сколько нужно. Есть конечно там ограничение, но помоему порядка 1 кб. Думаю, что врят-ли у Вас столько наберется.
Я так и делал. Чтобы было гибче, создал один DB для передачи и еще один для приема. Соединил с такими же на другом конце, только наоборот (ну Вы поняли). Далее в каждом из таких DB создал массив REAL, массив INT, масиив BOOL, в каждом по 255 элементов (мне этого хватало). Дальше просто кидаю их с периодичностью 1 сек. Последний INT в массиве делаю контрольным, он инкрментируется на ПЛК с каждым циклом. Если через 5 сек на приемном конце он не поменялся - либо соседний ПЛК стал, либо связь упала. Все остальные переменные толкаю и принимаю по надобности и ставлю на родные места.
Таким образом два DB обеспечат всю мою коммуникацию, и даже если мне нужно будет что-то добавить - я просто использую уже сущетсвующую незадействунную ячейку. А остальные DB либо получают с них данные, либо наоборот являются источниками.

Автор:  andrey_bachurin [ 03 червня 2015, 19:42 ]
Тема повідомлення:  Re: 2 x Siemens-1200 в одной сети ETHERNET.

Суть вроде бы понял, но не понимаю о каком DB идет речь. Пробовал добавить обычный data block созданный мной в программных блоках, но его нельзя присвоить к графе DATA функционального блока TSEND_C.

Автор:  san [ 03 червня 2015, 20:11 ]
Тема повідомлення:  Re: 2 x Siemens-1200 в одной сети ETHERNET.

Вот пример. Возможно проблема в присутствии галочки.
Зображення

Автор:  andrey_bachurin [ 03 червня 2015, 22:34 ]
Тема повідомлення:  Re: 2 x Siemens-1200 в одной сети ETHERNET.

Да, дело было именно в ней. Все работает, создал массивы и кручу данные как угодно. Александр Николаевич, большое спасибо!

Автор:  andrey_bachurin [ 21 березня 2017, 22:18 ]
Тема повідомлення:  Re: 2 x Siemens-1200 в одной сети ETHERNET.

Теперь проблема, когда соединений больше двух. Передача данных происходит слишком долго, либо вообще не происходит. Пробовал развязать все TSEND_C конекшены временными интервалами, то есть каждый блок последовательно один за одним устанавливают связь - не помогло. TRCV_C на всех плк в сети всегда EN_R=1, CONT=1, то есть активны и готовы к приему. Не могу для себя понять в чем причина.

Автор:  san [ 21 березня 2017, 22:25 ]
Тема повідомлення:  Re: 2 x Siemens-1200 в одной сети ETHERNET.

TSEND_C вроде как может идти в паре с TRECV на том же конце. Т-е для двухтсороннего обмена между ПЛК достаточно одного соединения. На всяк случай сказал.

Автор:  andrey_bachurin [ 21 березня 2017, 22:33 ]
Тема повідомлення:  Re: 2 x Siemens-1200 в одной сети ETHERNET.

А если все блоки TRCV стоят на TRUE, то есть прием и конекшн, их же не обязательно разрывать? Разорвать необходимо саму передачу? То есть TSEND_С конекшены. T_SEND передачу повесил на CLOCK - когда была одна связь, то все ОК. Создал еще два налогично ( уже в сумме три) - все работало. Когда начал накручивать больше пяти - появились проблемы. Сейчас кое что удалил, некоторые обмены сгрупировал, но теперь даже когда 2 и более обмена теряю связь. Я что то делаю не так и не вижу причины.

Сторінка 1 з 2 Часовий пояс UTC + 2 годин [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/