Fbd, Trim5 |
|
|
|
9.4.2019, 20:00
|
Группа: Участники форума
Сообщений: 2962
Регистрация: 10.7.2012
Из: Нижний Новгород
Пользователь №: 156204

|
Подскажите, если кто знает, как сделать счётчик с нарастающим итогом? В программе есть контрольный блок связи, который выдаёт количество не отвеченных запросов по Modbus от конкретного устройства. После того как устройство хоть раз ответило, счётчик обнуляется, а надо чтоб не обнулялся. Блок называется Slave (Link), сам он так делать не умеет, а просто выдаёт количество зафиксированных подряд ошибок связи. Вот как их можно суммировать за всё время работы устройства с момента включения питания?
|
|
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 39)
|
9.4.2019, 20:45
|
Группа: Участники форума
Сообщений: 3712
Регистрация: 6.9.2007
Пользователь №: 11117

|
Цитата(Сергей А. Ефремов @ 9.4.2019, 20:00)  Подскажите, если кто знает, как сделать счётчик с нарастающим итогом? В программе есть контрольный блок связи, который выдаёт количество не отвеченных запросов по Modbus от конкретного устройства. После того как устройство хоть раз ответило, счётчик обнуляется, а надо чтоб не обнулялся. Блок называется Slave (Link), сам он так делать не умеет, а просто выдаёт количество зафиксированных подряд ошибок связи. Вот как их можно суммировать за всё время работы устройства с момента включения питания? За 10лет или 100лет, или 1000.., или...? Глупости морозите..
|
|
|
|
|
10.4.2019, 6:38
|
Группа: Участники форума
Сообщений: 271
Регистрация: 7.8.2015
Из: Москва
Пользователь №: 275014

|
На нормальном языке решается в 4 строчки, попробуйте перевести в свой придуманный язык.
if (cnt1_pre != cnt1) { if (cnt1_pre < cnt1) cnt2 += cnt1 - cnt1_pre; cnt1_pre = cnt1; }
|
|
|
|
|
10.4.2019, 9:26
|
Двойных полосок злой фанат!
Группа: Участники форума
Сообщений: 3630
Регистрация: 8.12.2006
Из: СПб
Пользователь №: 5099

|
Цитата(stscat @ 10.4.2019, 6:38)  На нормальном языке решается в 4 строчки, попробуйте перевести в свой придуманный язык. Ваша программа недостаточно оптимальна, чтобы бахвалиться знанием языка. Цитата(Сергей А. Ефремов @ 9.4.2019, 20:00)  Подскажите, если кто знает, как сделать счётчик с нарастающим итогом? В программе есть контрольный блок связи, который выдаёт количество не отвеченных запросов по Modbus от конкретного устройства. После того как устройство хоть раз ответило, счётчик обнуляется, а надо чтоб не обнулялся. Блок называется Slave (Link), сам он так делать не умеет, а просто выдаёт количество зафиксированных подряд ошибок связи. Вот как их можно суммировать за всё время работы устройства с момента включения питания? Если слейв единственный на шине, то можно использовать блок Device.link, там нарастающий итог.
________________.png ( 9,13 килобайт )
Кол-во скачиваний: 60В принципе, и мою программу можно упростить, сравнивая входящее значение с нулём, а не с предыдущим значением. Минус один блок.
|
|
|
|
|
10.4.2019, 9:35
|
Группа: Участники форума
Сообщений: 271
Регистрация: 7.8.2015
Из: Москва
Пользователь №: 275014

|
Ну вот Ashihara все сделал за Ефремова. Дословный перевод моего примера.
Ashihara, интересен ваш вариант кода на C)
|
|
|
|
|
10.4.2019, 10:05
|
Двойных полосок злой фанат!
Группа: Участники форума
Сообщений: 3630
Регистрация: 8.12.2006
Из: СПб
Пользователь №: 5099

|
Цитата(stscat @ 10.4.2019, 9:35)  Ashihara, интересен ваш вариант кода на C) Померяемся как-нибудь в другой раз
|
|
|
|
|
10.4.2019, 11:05
|
Группа: Участники форума
Сообщений: 2962
Регистрация: 10.7.2012
Из: Нижний Новгород
Пользователь №: 156204

|
Цитата(Ashihara @ 10.4.2019, 9:26) 
________________.png ( 9,13 килобайт )
Кол-во скачиваний: 60В принципе, и мою программу можно упростить, сравнивая входящее значение с нулём, а не с предыдущим значением. Минус один блок. Проверил - не работает.... После того как связь восстанавливается всё обнуляется.
|
|
|
|
|
10.4.2019, 11:05
|
Двойных полосок злой фанат!
Группа: Участники форума
Сообщений: 3630
Регистрация: 8.12.2006
Из: СПб
Пользователь №: 5099

|
Цитата(Сергей А. Ефремов @ 10.4.2019, 11:03)  Проверил - не работает.... Порядок блоков очень важен. Какие левее, какие правее. Иначе да, работать не будет.
|
|
|
|
|
10.4.2019, 11:50
|
Группа: Участники форума
Сообщений: 2962
Регистрация: 10.7.2012
Из: Нижний Новгород
Пользователь №: 156204

|
Цитата(dopi @ 10.4.2019, 11:34)  при сбросе питания счетчик обнулится Схема обнуляется после восстановления связи на линии, а не пропадания питания, то есть по сути никак не влияет на работу первоначального блока.
|
|
|
|
|
10.4.2019, 12:25
|
Группа: Участники форума
Сообщений: 1854
Регистрация: 23.6.2009
Пользователь №: 35184

|
Цитата(Сергей А. Ефремов @ 10.4.2019, 11:50)  Схема обнуляется после восстановления связи на линии, а не пропадания питания, то есть по сути никак не влияет на работу первоначального блока. И ничего там после восстановления связи не обнуляется.
|
|
|
|
|
10.4.2019, 13:15
|
Группа: Участники форума
Сообщений: 2962
Регистрация: 10.7.2012
Из: Нижний Новгород
Пользователь №: 156204

|
хз
Сообщение отредактировал Сергей А. Ефремов - 10.4.2019, 13:27
|
|
|
|
|
10.4.2019, 13:32
|
Двойных полосок злой фанат!
Группа: Участники форума
Сообщений: 3630
Регистрация: 8.12.2006
Из: СПб
Пользователь №: 5099

|
Цитата(Сергей А. Ефремов @ 10.4.2019, 13:15)  хз Я проверил, прежде чем выложить. Так что соберите волю в кулак, распечатайте мою схему на листик, листик приложите к монитору и соберите свою схему один-в-один. Будет работать. Обещаю.
|
|
|
|
|
10.4.2019, 17:49
|
Группа: Участники форума
Сообщений: 2962
Регистрация: 10.7.2012
Из: Нижний Новгород
Пользователь №: 156204

|
SMLogix____trim5.psl_.jpg ( 124,82 килобайт )
Кол-во скачиваний: 10Может что-то не так делаю?...
|
|
|
|
|
10.4.2019, 17:55
|
Группа: Участники форума
Сообщений: 1854
Регистрация: 23.6.2009
Пользователь №: 35184

|
Цитата(Сергей А. Ефремов @ 10.4.2019, 17:49)  Может что-то не так делаю?... Естественно не так. Цитата(Ashihara @ 10.4.2019, 11:05)  Порядок блоков очень важен. Какие левее, какие правее. Иначе да, работать не будет.
|
|
|
|
|
10.4.2019, 18:07
|
Группа: Участники форума
Сообщений: 2962
Регистрация: 10.7.2012
Из: Нижний Новгород
Пользователь №: 156204

|
SMLogix____trim5.psl_.jpg ( 63,79 килобайт )
Кол-во скачиваний: 10Так работает. Цитата(cauto @ 10.4.2019, 17:55)  Естественно не так.  Левее, правее... момент зарождения сознания происходит в момент осознания сознанием своей способности осознавать, вы это имеете в виду что-ли?
|
|
|
|
|
10.4.2019, 18:36
|
Группа: Участники форума
Сообщений: 1854
Регистрация: 23.6.2009
Пользователь №: 35184

|
Цитата(Сергей А. Ефремов @ 10.4.2019, 18:07)  Левее, правее... момент зарождения сознания происходит в момент осознания сознанием своей способности осознавать, вы это имеете в виду что-ли? Всё проще. В вашем варианте на входы А и В блока сравнения (СМР_long) приходят одинаковые значения, сравнивать по сути нечего. А у Ashihara на вход А значение в текущем цикле программы, на вход В значение в предыдущем цикле.
Сообщение отредактировал cauto - 10.4.2019, 18:40
|
|
|
|
|
10.4.2019, 19:21
|
Группа: Участники форума
Сообщений: 2962
Регистрация: 10.7.2012
Из: Нижний Новгород
Пользователь №: 156204

|
Цитата(cauto @ 10.4.2019, 18:36)  Всё проще. В вашем варианте на входы А и В блока сравнения (СМР_long) приходят одинаковые значения, сравнивать по сути нечего. А у Ashihara на вход А значение в текущем цикле программы, на вход В значение в предыдущем цикле.
SMLogix____trim5.psl_.jpg ( 63,79 килобайт )
Кол-во скачиваний: 7Ещё проще вариант, совсем без компаратора. Ashihara подсказал направление, спасибо ему огромное, а там уже само как-то получилось. Ну и действительно левее, правее имеет значение, в программе несколько счётчиков, логика по сути одинаковая, а расположение блоков на поле рандомное, работает по разному - одни обнуляются, другие нет. ))
Сообщение отредактировал Сергей А. Ефремов - 10.4.2019, 19:22
|
|
|
|
|
11.4.2019, 9:33
|
Двойных полосок злой фанат!
Группа: Участники форума
Сообщений: 3630
Регистрация: 8.12.2006
Из: СПб
Пользователь №: 5099

|
Цитата(Сергей А. Ефремов @ 10.4.2019, 19:21)  Ещё проще вариант, совсем без компаратора. Этот вариант неправильно ошибки считает. Он просто "что-то считает", но не более того.
|
|
|
|
|
11.4.2019, 10:26
|
Группа: Участники форума
Сообщений: 2962
Регистрация: 10.7.2012
Из: Нижний Новгород
Пользователь №: 156204

|
Цитата(Ashihara @ 11.4.2019, 9:33)  Этот вариант неправильно ошибки считает. Он просто "что-то считает", но не более того. Да вроде правильно... Прежде чем начинается сложение на вход С приходит 0 и на выходе Q фиксируется значение A+B, так как в самом начале это 0, то Q=0. Далее происходит сложение этого 0 и значения Errors и прежде чем сложение заканчивается на вход С приходит 1, блок пробрасывает значение D равное А+В на выход Q, которое в свою очередь отправляется на вход B, но так как к этому моменту уже Errors=0=A, то получается A+B=B. Далее цикл повторяется, только уже B не 0, а В=А+В в предыдущем цикле. Как именно утроен ваш алгоритм не особо разобрался, но смысл у него абсолютно тот же самый, в этом можно даже не сомневаться. В любом случае вам огромное спасибо за подсказку в использовании D-триггера.
|
|
|
|
|
11.4.2019, 14:21
|
Группа: Участники форума
Сообщений: 2962
Регистрация: 10.7.2012
Из: Нижний Новгород
Пользователь №: 156204

|
Коллеги, подскажите по случаю. Сколько терминаторов должно быть на линии RS485? В начале и в конце линии или только в конце?
|
|
|
|
|
11.4.2019, 14:30
|
Группа: Участники форума
Сообщений: 271
Регистрация: 7.8.2015
Из: Москва
Пользователь №: 275014

|
Цитата(Сергей А. Ефремов @ 11.4.2019, 14:21)  Коллеги, подскажите по случаю. Сколько терминаторов должно быть на линии RS485? В начале и в конце линии или только в конце? Чем больше - тем лучше. Если серьезно, читайте первоисточник. Modbus_over_serial_line_V1_02
|
|
|
|
|
11.4.2019, 14:30
|
Группа: Участники форума
Сообщений: 2962
Регистрация: 10.7.2012
Из: Нижний Новгород
Пользователь №: 156204

|
Ещё такой вопрос, с чем может быть связано, что без терминатора наблюдается перекос на линии, на А 1,9В, а на В 1,6В? С терминатором выравнивается до 1,8-1,7В...
|
|
|
|
|
11.4.2019, 14:45
|
Группа: Участники форума
Сообщений: 2962
Регистрация: 10.7.2012
Из: Нижний Новгород
Пользователь №: 156204

|
Цитата(stscat @ 11.4.2019, 14:30)  Чем больше - тем лучше. Если серьезно, читайте первоисточник. Modbus_over_serial_line_V1_02Спасибо, полезный документ.
|
|
|
|
|
11.4.2019, 16:33
|
Группа: Участники форума
Сообщений: 2962
Регистрация: 10.7.2012
Из: Нижний Новгород
Пользователь №: 156204

|
Трим5 генерирует в RS485 помеху с интервалом 18мкс и амплитудой 500мВ - с чем это интересно связано? Ну и соответственно если помеха попадает на фронт какого-нибудь бита, то посылка в некоторых случаях портится.
Даже 800 мВ! Ёшкин-матрёшкин.
|
|
|
|
|
11.4.2019, 16:49
|
Двойных полосок злой фанат!
Группа: Участники форума
Сообщений: 3630
Регистрация: 8.12.2006
Из: СПб
Пользователь №: 5099

|
Цитата(Сергей А. Ефремов @ 11.4.2019, 16:33)  Трим5 генерирует в RS485 помеху с интервалом 18мкс и амплитудой 500мВ - с чем это интересно связано? Как проверяете?
|
|
|
|
|
11.4.2019, 17:18
|
Группа: Участники форума
Сообщений: 2962
Регистрация: 10.7.2012
Из: Нижний Новгород
Пользователь №: 156204

|
Цитата(Ashihara @ 11.4.2019, 16:49)  Как проверяете? Осцилографом. С подключенными и без устройств на линии результат одинаковый, кроме самих командных запросов каждые 18 мкс на линии образуется помеха амплитудой до 800 мВ. По идее 500 мВ - это уже уровень логической единицы.
|
|
|
|
|
12.4.2019, 6:27
|
Группа: Участники форума
Сообщений: 271
Регистрация: 7.8.2015
Из: Москва
Пользователь №: 275014

|
Если trim 5 не использовать помехи нет? Выложите картинку с осциллографа. Одновременно обе линии A и B и чтобы сетки и размерности напряжения видны были.
|
|
|
|
|
12.4.2019, 10:53
|
Двойных полосок злой фанат!
Группа: Участники форума
Сообщений: 3630
Регистрация: 8.12.2006
Из: СПб
Пользователь №: 5099

|
Я заморочился, интересно было. Всё ок вроде. Линии А и В, красный - разностный.
t5_rs485.jpg ( 153,14 килобайт )
Кол-во скачиваний: 15
|
|
|
|
|
12.4.2019, 11:24
|
Группа: Участники форума
Сообщений: 271
Регистрация: 7.8.2015
Из: Москва
Пользователь №: 275014

|
Цитата(Ashihara @ 12.4.2019, 10:53)  Я заморочился, интересно было. Всё ок вроде. Линии А и В, красный - разностный.
t5_rs485.jpg ( 153,14 килобайт )
Кол-во скачиваний: 15Прекрасные сигналы. Никаких помех не вижу.
|
|
|
|
|
12.4.2019, 13:17
|
Двойных полосок злой фанат!
Группа: Участники форума
Сообщений: 3630
Регистрация: 8.12.2006
Из: СПб
Пользователь №: 5099

|
Что-то у вас всплески на разных пределах разные. На шкале 1В всплеск примерно 0.5В и менее, а на шкале 0.5В всплески 0.8В. Такого быть не должно. Осциллограф точно у вас в порядке? PS. В питание контроллера воткнитесь, там всё чисто? PPS. Между чем и чем вы меряете? Я смотрел относительно gnd порта. Щас глянул между каналами, тоже всё ок.
t5_rs485_diff.jpg ( 159,25 килобайт )
Кол-во скачиваний: 6
Сообщение отредактировал Ashihara - 12.4.2019, 13:30
|
|
|
|
|
12.4.2019, 13:38
|
Группа: Участники форума
Сообщений: 271
Регистрация: 7.8.2015
Из: Москва
Пользователь №: 275014

|
 Крайне маловероятно что такие помехи происходили по вине программы. Были бы лишние "0" или "1", но не такие всплески. Смотрите питание, осциллограф, что еще подключено к линии RS-485. Как вариант - подгорел драйвер RS-485, что-то мне кажется уже видел подобные всплески из ниоткуда, замените его.
Сообщение отредактировал stscat - 12.4.2019, 13:43
|
|
|
|
|
12.4.2019, 14:01
|
Группа: Участники форума
Сообщений: 2962
Регистрация: 10.7.2012
Из: Нижний Новгород
Пользователь №: 156204

|
Цитата(stscat @ 12.4.2019, 13:38)   Крайне маловероятно что такие помехи происходили по вине программы. Были бы лишние "0" или "1", но не такие всплески. Смотрите питание, осциллограф, что еще подключено к линии RS-485. Как вариант - подгорел драйвер RS-485, что-то мне кажется уже видел подобные всплески из ниоткуда, замените его. Это естественно не программные помехи и как они влияют или не влияют трудно сказать, но они никуда не деваются если даже отключить от контроллера всю линию и запитать его от АКБ. Измеряем относительно GND.
|
|
|
|
|
18.4.2019, 13:56
|
Группа: Участники форума
Сообщений: 2962
Регистрация: 10.7.2012
Из: Нижний Новгород
Пользователь №: 156204

|
Цитата(stscat @ 11.4.2019, 14:30)  Если серьезно, читайте первоисточник. Modbus_over_serial_line_V1_02Подскажите если кто точно знает и читал, между запросом мастера и ответом слейва должна быть какая-то минимальная задержка или слейв может отправлять ответ практически сразу, допустим через наносекунду после получения запроса от мастера?
|
|
|
|
|
18.4.2019, 14:35
|
Группа: Участники форума
Сообщений: 1975
Регистрация: 3.10.2008
Из: Украина
Пользователь №: 23441

|
Цитата(Сергей А. Ефремов @ 18.4.2019, 13:56)  Подскажите если кто точно знает и читал, между запросом мастера и ответом слейва должна быть какая-то минимальная задержка или слейв может отправлять ответ практически сразу, допустим через наносекунду после получения запроса от мастера? А зачем Вам это? Глупый вроде бы вопрос? Но в нем есть ответ.... Если Вы делаете универсальное устройство то ..... Приемо/передатчики RS-485 они ведь разные бывают... Half Duplex и Full Duplex Если будут Half Duplex .... смотрите время переключения Rx\TX и там совсем не наносекунды..
|
|
|
|
|
18.4.2019, 15:35
|
Группа: Участники форума
Сообщений: 2962
Регистрация: 10.7.2012
Из: Нижний Новгород
Пользователь №: 156204

|
Цитата(yozik @ 18.4.2019, 14:35)  А зачем Вам это? Глупый вроде бы вопрос? Но в нем есть ответ....
Если Вы делаете универсальное устройство то ..... Приемо/передатчики RS-485 они ведь разные бывают... Half Duplex и Full Duplex Если будут Half Duplex .... смотрите время переключения Rx\TX и там совсем не наносекунды.. Не про физический уровень интересуюсь, а именно регламент работы ModBus протокола.
|
|
|
|
|
18.4.2019, 16:44
|
Группа: Участники форума
Сообщений: 3050
Регистрация: 30.9.2010
Из: Иркутск
Пользователь №: 74376

|
Цитата(Сергей А. Ефремов @ 18.4.2019, 13:56)  Подскажите если кто точно знает и читал, между запросом мастера и ответом слейва должна быть какая-то минимальная задержка или слейв может отправлять ответ практически сразу, допустим через наносекунду после получения запроса от мастера? время молчания между запросами 3.5 байта минимум на этой скорости. Иначе конец посылки не определишь. До 1 байта допускаются перерывы в сообщении. Это тебе не хухры-мухры маде ин задрищенск, это модбус))). Но некоторые мастера иногда грешат, не дожидаются паузы. Видать или CRC считают, или просто подглюкивают))).
Сообщение отредактировал kosmos440o - 18.4.2019, 16:46
|
|
|
|
|
18.4.2019, 17:53
|
Группа: Участники форума
Сообщений: 271
Регистрация: 7.8.2015
Из: Москва
Пользователь №: 275014

|
Цитата(Сергей А. Ефремов @ 18.4.2019, 13:56)  Подскажите если кто точно знает и читал, между запросом мастера и ответом слейва должна быть какая-то минимальная задержка или слейв может отправлять ответ практически сразу, допустим через наносекунду после получения запроса от мастера? Modbus_over_serial_line_V1_02.pdfСтр.13. Все размусолено. Даже временные диаграммы нарисованы. Просто удивительно таки вопросы слышать.
|
|
|
|
|
18.4.2019, 18:07
|
Группа: Участники форума
Сообщений: 2962
Регистрация: 10.7.2012
Из: Нижний Новгород
Пользователь №: 156204

|
Цитата(kosmos440o @ 18.4.2019, 16:44)  время молчания между запросами 3.5 байта минимум на этой скорости. Иначе конец посылки не определишь. До 1 байта допускаются перерывы в сообщении. Это тебе не хухры-мухры маде ин задрищенск, это модбус))).
Но некоторые мастера иногда грешат, не дожидаются паузы. Видать или CRC считают, или просто подглюкивают))). Цитата(stscat @ 18.4.2019, 17:53)  Modbus_over_serial_line_V1_02.pdfСтр.13. Все размусолено. Даже временные диаграммы нарисованы. Просто удивительно таки вопросы слышать. Ништяк, спасибо. Попросили протестировать устройство, на скорости 115200 1000мс/100мс на 35000 запросов 35 ошибок, на осцилографе видно, что запрос и ответ практически единое целое, различить можно только по высоте формируемого фронта. Я говорю, что типа так наверное не должно быть, а мне типа всё в порядке, вот я и засумневался.
|
|
|
|
|
18.4.2019, 20:49
|
Группа: Участники форума
Сообщений: 3050
Регистрация: 30.9.2010
Из: Иркутск
Пользователь №: 74376

|
Цитата(Сергей А. Ефремов @ 18.4.2019, 18:07)  на 35000 запросов 35 ошибок Многовато, но с пивасом пойдёт. На слабенькой линии могут быть сюрпрайзы. У нас все любят говорить, что у них всё в порядке))). Хлебом не корми))).
Сообщение отредактировал kosmos440o - 18.4.2019, 20:51
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
Реклама
ООО «Арктика групп» ИНН: 7713634274
Реклама: ООО «СибСтронг» | ИНН 6670013662 | ERID: 2VtzqvWgxEU
ООО «УНИСПЛИТ» ИНН: 6453155081 erid:2VtzqvybpdW
Реклама: ООО «СЛ-ЛАЗЕР» ИНН 7727447267 | erid: 2VtzquvhFWx
Последние сообщения Форума
|