Вход

Просмотр полной версии : Тройная запись ПЛК Master-Slave 10 командой



Knive87
06.11.2015, 18:38
ПЛК-100 (Master) считав данные с одних устройств (Slave-device), пишет в модуль сбора данных МСД-200 (Slave) по команде FF длительностью 200ms групповой записью, затем отсылается FE(СТОП). Но вместо одной строки, получаю как минимум 3. Увеличивая длительность команды, получаю больше строк; если меньше длительность, то либо 2,5 строки, либо ничего. Таймер реализован на ST (TON). Как сделать чтобы был только один посыл, записал массив переменных и остановился?

capzap
06.11.2015, 18:42
а какой смысл писать по команде с одним и тем же периодом, может просто на время перейти

Knive87
07.11.2015, 07:02
а какой смысл писать по команде с одним и тем же периодом, может просто на время перейти

Объем карты памяти тоже не безграничен. Хоть запись и цикличная со стиранием старых данных, но при нештатных ситуациях будет тяжело просматривать 58 параметров с периодичностью в 1 сек.

capzap
07.11.2015, 07:23
т.е. работая по команде, которую Вы запускаете от периодического таймера Вы сможете определить возникновение внештатной ситуации, а с полингтаймом нет?

petera
07.11.2015, 08:45
ПЛК-100 (Master) считав данные с одних устройств (Slave-device), пишет в модуль сбора данных МСД-200 (Slave) по команде FF длительностью 200ms групповой записью, затем отсылается FE(СТОП). Но вместо одной строки, получаю как минимум 3. Увеличивая длительность команды, получаю больше строк; если меньше длительность, то либо 2,5 строки, либо ничего. Таймер реализован на ST (TON). Как сделать чтобы был только один посыл, записал массив переменных и остановился?
Не понимаю, зачем Вы связались с командами FF/FE для Universal Modbus Device для формирования однократной посылки.
Задайте для UDM режим работы по изменению значения (Work mode=By value change).
По таймеру TP, с временем задержки равным требуемому периоду архивации, или по по фронту события(R_TRIG) выполняйте однократное копирование данных, полученных от "одних устройств (Slave-device)" в переменную String output module (Вы же его используете, на сколько я понимаю). Если текущие данные от устройств (Slave-device) отличаются от предыдущих, то мастер сам выполнит только одну посылку переменных и остановится до следующего раза.
И будет Вам счастье

Knive87
07.11.2015, 09:23
т.е. работая по команде, которую Вы запускаете от периодического таймера Вы сможете определить возникновение внештатной ситуации, а с полингтаймом нет?

Pooltime max=10000ms. Нужно 30 или 60 сек, еще не решил. И по нему также делается тройная запись. Выглядит это так (время-значение переменной):

10:33 30.51
10:34 30.51
10:35 30.51
10:43 30.56
10:44 30.56
10.45 30.56

Knive87
07.11.2015, 09:28
Не понимаю, зачем Вы связались с командами FF/FE для Universal Modbus Device для формирования однократной посылки.
Задайте для UDM режим работы по изменению значения (Work mode=By value change).
По таймеру TP, с временем задержки равным требуемому периоду архивации, или по по фронту события(R_TRIG) выполняйте однократное копирование данных, полученных от "одних устройств (Slave-device)" в переменную String output module (Вы же его используете, на сколько я понимаю). Если текущие данные от устройств (Slave-device) отличаются от предыдущих, то мастер сам выполнит только одну посылку переменных и остановится до следующего раза.
И будет Вам счастье

Буду пробовать. Да, String output module. Как лучше сделать? Если t:=30 сек , то OutVar1:=InVar1 ?

petera
07.11.2015, 09:30
Pooltime max=10000ms. Нужно 30 или 60 сек, еще не решил. И по нему также делается тройная запись. Выглядит это так (время-значение переменной):

10:33 30.51
10:34 30.51
10:35 30.51
10:43 30.56
10:44 30.56
10.45 30.56
Имею смутные подозрения, что это проблема МСД200, а не мастера в ПЛК.
Если бы Вы записывали не три параметра, а четыре, например, то имели бы четыре повтора.
Может какие-то не верные настройки в МСД? Или ПО для него надо обновить?

petera
07.11.2015, 09:42
А не про Ваш ли случай?
20700
http://www.owen.ru/catalog/modul_sbora_dannih_oven_msd200/96030692

petera
07.11.2015, 09:58
Оказывается, что тройная запись у МСД200 изначальный баг, признанный изготовителем http://www.owen.ru/forum/showthread.php?t=10638&p=101381&viewfull=1#post101381
20701

http://www.owen.ru/forum/showthread.php?t=10638&p=101858&viewfull=1#post101858

http://www.owen.ru/forum/showthread.php?t=10638&p=101942&viewfull=1#post101942

http://www.owen.ru/forum/showthread.php?t=10638&p=101956&viewfull=1#post10195620702

http://www.owen.ru/forum/showthread.php?t=10638&p=114858&viewfull=1#post114858

capzap
07.11.2015, 10:08
а чему равно количество повторов записи в конфигураторе плк, может из-за ограниченного размера под прошивку в мсд не передают ответ на 10 команду,отсюда плк и пытается несколько раз записать одно и тоже, бибкой бы надо воспользоваться да посмотреть как будет себя вести

petera
07.11.2015, 10:20
а чему равно количество повторов записи в конфигураторе плк, может из-за ограниченного размера под прошивку в мсд не передают ответ на 10 команду,отсюда плк и пытается несколько раз записать одно и тоже, бибкой бы надо воспользоваться да посмотреть как будет себя вести
Да это глюк в прошивке самого МСД утроение записи в режиме Slave при получении одной посылки от мастера, надо смотреть какая версия прошивки у ТС и если старая, то обновить ее.

Knive87
07.11.2015, 12:10
Да это глюк в прошивке самого МСД утроение записи в режиме Slave при получении одной посылки от мастера, надо смотреть какая версия прошивки у ТС и если старая, то обновить ее.

Огромное спасибо дружище!

Knive87
07.11.2015, 22:51
Прошил ПЛК, прошил МСД-200, пошло все как надо. Только заметил одну проблему. При добавлении нового устройства в уже сформированный список (Скажем Modbus Master,Master,Slave,Master) ПЛК работает, но часть программы не выполняет. Пришлось перекопировать Мастера в конец, поменять в программе адреса АТ и тогда все пошло. Уже 2 раза сталкивался.

petera
08.11.2015, 03:18
....Только заметил одну проблему. При добавлении нового устройства в уже сформированный список (Скажем Modbus Master,Master,Slave,Master) ПЛК работает, но часть программы не выполняет. Пришлось перекопировать Мастера в конец, поменять в программе адреса АТ и тогда все пошло. Уже 2 раза сталкивался.
20709
По этому при добавлении нового устройства в уже сформированный список (Скажем Modbus Master,Master,Slave,Master) выполнить пересчет адресов начиная с вставленного устройства
20710

Ну или, чтобы не запутаться можно всегда пересчет адресов делать для всей конфигурации
20711

А может после глобальных изменений в конфигурации достаточно будет выполнение "Проект"-->"Очистить все". После этого при подключении к контроллеру будет выполняться полная компиляция и загрузка проекта, а не только изменения в проекте.

Knive87
08.11.2015, 05:40
Очистка проекта не помогла бы, делал полный сброс. А вычисление адресов и перекрытие не делал. В следующий раз попробую. Спасибо)