Просмотр полной версии : Тройная запись ПЛК Master-Slave 10 командой
ПЛК-100 (Master) считав данные с одних устройств (Slave-device), пишет в модуль сбора данных МСД-200 (Slave) по команде FF длительностью 200ms групповой записью, затем отсылается FE(СТОП). Но вместо одной строки, получаю как минимум 3. Увеличивая длительность команды, получаю больше строк; если меньше длительность, то либо 2,5 строки, либо ничего. Таймер реализован на ST (TON). Как сделать чтобы был только один посыл, записал массив переменных и остановился?
а какой смысл писать по команде с одним и тем же периодом, может просто на время перейти
а какой смысл писать по команде с одним и тем же периодом, может просто на время перейти
Объем карты памяти тоже не безграничен. Хоть запись и цикличная со стиранием старых данных, но при нештатных ситуациях будет тяжело просматривать 58 параметров с периодичностью в 1 сек.
т.е. работая по команде, которую Вы запускаете от периодического таймера Вы сможете определить возникновение внештатной ситуации, а с полингтаймом нет?
ПЛК-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) отличаются от предыдущих, то мастер сам выполнит только одну посылку переменных и остановится до следующего раза.
И будет Вам счастье
т.е. работая по команде, которую Вы запускаете от периодического таймера Вы сможете определить возникновение внештатной ситуации, а с полингтаймом нет?
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
Не понимаю, зачем Вы связались с командами 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 ?
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, а не мастера в ПЛК.
Если бы Вы записывали не три параметра, а четыре, например, то имели бы четыре повтора.
Может какие-то не верные настройки в МСД? Или ПО для него надо обновить?
А не про Ваш ли случай?
20700
http://www.owen.ru/catalog/modul_sbora_dannih_oven_msd200/96030692
Оказывается, что тройная запись у МСД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
а чему равно количество повторов записи в конфигураторе плк, может из-за ограниченного размера под прошивку в мсд не передают ответ на 10 команду,отсюда плк и пытается несколько раз записать одно и тоже, бибкой бы надо воспользоваться да посмотреть как будет себя вести
а чему равно количество повторов записи в конфигураторе плк, может из-за ограниченного размера под прошивку в мсд не передают ответ на 10 команду,отсюда плк и пытается несколько раз записать одно и тоже, бибкой бы надо воспользоваться да посмотреть как будет себя вести
Да это глюк в прошивке самого МСД утроение записи в режиме Slave при получении одной посылки от мастера, надо смотреть какая версия прошивки у ТС и если старая, то обновить ее.
Да это глюк в прошивке самого МСД утроение записи в режиме Slave при получении одной посылки от мастера, надо смотреть какая версия прошивки у ТС и если старая, то обновить ее.
Огромное спасибо дружище!
Прошил ПЛК, прошил МСД-200, пошло все как надо. Только заметил одну проблему. При добавлении нового устройства в уже сформированный список (Скажем Modbus Master,Master,Slave,Master) ПЛК работает, но часть программы не выполняет. Пришлось перекопировать Мастера в конец, поменять в программе адреса АТ и тогда все пошло. Уже 2 раза сталкивался.
....Только заметил одну проблему. При добавлении нового устройства в уже сформированный список (Скажем Modbus Master,Master,Slave,Master) ПЛК работает, но часть программы не выполняет. Пришлось перекопировать Мастера в конец, поменять в программе адреса АТ и тогда все пошло. Уже 2 раза сталкивался.
20709
По этому при добавлении нового устройства в уже сформированный список (Скажем Modbus Master,Master,Slave,Master) выполнить пересчет адресов начиная с вставленного устройства
20710
Ну или, чтобы не запутаться можно всегда пересчет адресов делать для всей конфигурации
20711
А может после глобальных изменений в конфигурации достаточно будет выполнение "Проект"-->"Очистить все". После этого при подключении к контроллеру будет выполняться полная компиляция и загрузка проекта, а не только изменения в проекте.
Очистка проекта не помогла бы, делал полный сброс. А вычисление адресов и перекрытие не делал. В следующий раз попробую. Спасибо)
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot