Segnetics

Вернуться   Segnetics > Форум Segnetics > Связь с внешним миром

Связь с внешним миром Modbus, RS232, RS485, Lon и другое.

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 02.07.2018, 08:07   #1
Norton
Member
 
Регистрация: May 2014
Сообщения: 85
Благодарил(а): 2 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию SMH4 иногда принимает нули

Здравствуйте.

Есть SMH4, есть Modbus Universal MasterOPC и MasterSCADA.
Карту переменных контроллера преобразовал с помощью "segneticstoums" в конфигурационный файл ОРС-сервера, заменил там интерфейс на Modbus TCP, - всё работает.

Проблема возникает с Modbus-переменными типа "Вход" в программе для SMH4. Задача - чтобы контроллер синхронизировал время со временем, которое в MasterSCADA. То есть со скады в контроллер передаются отдельно переменные "Год", "Месяц", "Число", "Час", "Минуты", "Секунды".

От контроллера просто требуется считывать эти переменные и синхронизировать своё время с этими переменными в случае, если его системное время отличается от СКАДовского более чем на 10 секунд. Всё это работает, в программе контроллера связь со СКАДой контролируется, - просто так всякая чушь в память записаться НЕ может.

Каждая переменная "Вход" - в программе контроллера отображается как однонаправленная, только на считывание, - но каким-то образом в СКАДУ из контроллера передаются в непредсказуемом порядке нулевые значения этих переменных. То есть допустим 5 переменных успешно записываются СКАДой и читаются в контроллере, а переменная "Год" равна 0, хотя СКАДА пытается ей записывать "2018", но ноль из контроллера эти попытки пересиливает.

Так же бывает ситуация когда, например, переменная "Секунды" корректно передаётся в контроллер из СКАДы, а переменная "Минуты" показывается 0, и когда "Секунды" доходят до 59 и снова начинают считать с нуля - переменная "Минуты" увеличивается на 1, значение обновляется в СКАДе и в контроллере начинает отображаться корректно.
К этому сообщению прикладываю картинки из программы с рабочего ПЛК и сам проект для SMH4. В проекте оставил только то, что касается описываемой проблемы, остальное удалил.

И ещё - почему эти однонаправленные переменные программа-конвертер "segneticstoums" делает типа read/write, а не просто write? Сам вручную переставляю тип на write - это проблему НЕ решает.

Возникает эта проблема чаще, если СКАДУ запустить раньше, чем включить питание щита с контроллером. Если СКАДУ перезапустить, вроде как всё начинает работать нормально.

На лицо какая-то проблема с работой Modbus'a. Или же я что-то не то делаю, - подскажите как сделать правильно.
Вложения
Тип файла: zip глюк Modbus.zip (169.1 Кбайт, 11 просмотров)
Тип файла: rar картинки_не приходит дата.rar (288.3 Кбайт, 12 просмотров)
Norton вне форума   Ответить с цитированием
Старый 02.07.2018, 09:10   #2
LordN
Senior Member
 
Регистрация: Dec 2007
Адрес: Томск
Сообщения: 4 125
Благодарил(а): 239 раз(а)
Поблагодарили: 161 раз(а) в 153 сообщениях
По умолчанию Ответ: Работа с Modbus Universal MasterOPC Server 32

Цитата
Сообщение от Norton Посмотреть сообщение
Здравствуйте.

Есть SMH4, есть Modbus Universal MasterOPC и MasterSCADA.
Карту переменных контроллера преобразовал с помощью "segneticstoums" в конфигурационный файл ОРС-сервера, заменил там интерфейс на Modbus TCP, - всё работает.

Проблема возникает с Modbus-переменными типа "Вход" в программе для SMH4. Задача - чтобы контроллер синхронизировал время со временем, которое в MasterSCADA. То есть со скады в контроллер передаются отдельно переменные "Год", "Месяц", "Число", "Час", "Минуты", "Секунды".

От контроллера просто требуется считывать эти переменные и синхронизировать своё время с этими переменными в случае, если его системное время отличается от СКАДовского более чем на 10 секунд. Всё это работает, в программе контроллера связь со СКАДой контролируется, - просто так всякая чушь в память записаться НЕ может.

Каждая переменная "Вход" - в программе контроллера отображается как однонаправленная, только на считывание, - но каким-то образом в СКАДУ из контроллера передаются в непредсказуемом порядке нулевые значения этих переменных. То есть допустим 5 переменных успешно записываются СКАДой и читаются в контроллере, а переменная "Год" равна 0, хотя СКАДА пытается ей записывать "2018", но ноль из контроллера эти попытки пересиливает.

Так же бывает ситуация когда, например, переменная "Секунды" корректно передаётся в контроллер из СКАДы, а переменная "Минуты" показывается 0, и когда "Секунды" доходят до 59 и снова начинают считать с нуля - переменная "Минуты" увеличивается на 1, значение обновляется в СКАДе и в контроллере начинает отображаться корректно.
К этому сообщению прикладываю картинки из программы с рабочего ПЛК и сам проект для SMH4. В проекте оставил только то, что касается описываемой проблемы, остальное удалил.

И ещё - почему эти однонаправленные переменные программа-конвертер "segneticstoums" делает типа read/write, а не просто write? Сам вручную переставляю тип на write - это проблему НЕ решает.

Возникает эта проблема чаще, если СКАДУ запустить раньше, чем включить питание щита с контроллером. Если СКАДУ перезапустить, вроде как всё начинает работать нормально.

На лицо какая-то проблема с работой Modbus'a. Или же я что-то не то делаю, - подскажите как сделать правильно.
полуофф. для начала я бы преобразовал время в юникс и только тогда бы его передавал


__________________
C уважением, LordN
LordN вне форума   Ответить с цитированием
Старый 02.07.2018, 09:31   #3
Norton
Member
 
Регистрация: May 2014
Сообщения: 85
Благодарил(а): 2 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Работа с Modbus Universal MasterOPC Server 32

Цитата
Сообщение от LordN Посмотреть сообщение
полуофф. для начала я бы преобразовал время в юникс и только тогда бы его передавал
Блок реального времени в MasterSCADA выдаёт год/месяц/число/час/минуты/секунды в виде 6-ти отдельных переменных типа "Целый", - то есть Int16 в конфиг-файле ОРС-сервера. Эти переменные в ОРС, ПЛК и СКАДЕ - везде одного типа, должно быть всё нормально вроде бы.

Переменные в Юникс - часть программы на С писать? Не совсем понял что имеете в виду.
Norton вне форума   Ответить с цитированием
Старый 02.07.2018, 11:10   #4
LordN
Senior Member
 
Регистрация: Dec 2007
Адрес: Томск
Сообщения: 4 125
Благодарил(а): 239 раз(а)
Поблагодарили: 161 раз(а) в 153 сообщениях
По умолчанию Ответ: Работа с Modbus Universal MasterOPC Server 32

Цитата
Сообщение от Norton Посмотреть сообщение
Блок реального времени в MasterSCADA выдаёт год/месяц/число/час/минуты/секунды в виде 6-ти отдельных переменных типа "Целый", - то есть Int16 в конфиг-файле ОРС-сервера. Эти переменные в ОРС, ПЛК и СКАДЕ - везде одного типа, должно быть всё нормально вроде бы.

Переменные в Юникс - часть программы на С писать? Не совсем понял что имеете в виду.
https://www.cy-pr.com/tools/time/


__________________
C уважением, LordN
LordN вне форума   Ответить с цитированием
Старый 02.07.2018, 11:22   #5
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 019
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: SMH4 иногда принимает нули

Цитата
Сообщение от Norton Посмотреть сообщение
Есть SMH4, есть Modbus Universal MasterOPC и MasterSCADA.

Проблема возникает с Modbus-переменными типа "Вход" в программе для SMH4.

От контроллера просто требуется считывать эти переменные

Каждая переменная "Вход" - в программе контроллера отображается как однонаправленная, только на считывание, - но каким-то образом в СКАДУ из контроллера передаются в непредсказуемом порядке нулевые значения этих переменных.
Контроллер у вас является слейвом. Modbus так устроен, что слейв ничего считывать не умеет, он только принимает то, что в него записывают.



Цитата
Сообщение от Norton Посмотреть сообщение
То есть допустим 5 переменных успешно записываются СКАДой и читаются в контроллере, а переменная "Год" равна 0, хотя СКАДА пытается ей записывать "2018", но ноль из контроллера эти попытки пересиливает.
Смените IP контроллера. Возможно, кто-то ещё записывает данные на эти переменные.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Старый 02.07.2018, 11:44   #6
Norton
Member
 
Регистрация: May 2014
Сообщения: 85
Благодарил(а): 2 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: SMH4 иногда принимает нули

LordN спасибо

Arsie сделана отдельная локальная сеть, и в ней кроме SMH4 и МастерСкады никого нет, соответственно никто кроме МастерСкады ничего записать в контроллер не может.
Norton вне форума   Ответить с цитированием
Старый 02.07.2018, 11:49   #7
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 019
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: SMH4 иногда принимает нули

Цитата
Сообщение от Norton Посмотреть сообщение
Arsie сделана отдельная локальная сеть, и в ней кроме SMH4 и МастерСкады никого нет, соответственно никто кроме МастерСкады ничего записать в контроллер не может.
Вы давно на форуме, наверняка видели, как нас пытаются шпынять за то, что мы сами себе не можем на входные переменные записывать.

Поэтому предлагаю такой опыт. Отключите вообще всё, а лучше даже соедините комп и контроллер прямым шнурком. Также удалите всё с порта ethernet в проекте. Запустите лоджик в отладку и запишите через него числа на переменные. И дайте лоджику так в отладке повисеть.

Если на ноль ничего не сбросится, значит это 100% внешняя причина.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать свои сообщения

BB code is Вкл.
[IMG] код Вкл.
HTML код Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
SMH4, Modbus TCP, ошибка приема/передачи "Connection Closed Gracefully" Makrel Связь с внешним миром 11 21.04.2020 14:23
SMH4 не видит модем ICM(решено) atm SMConnect & SMConfig 2 28.02.2020 15:26
SMH4 не подключается к OpenVPN (решено) nizercat SMConnect & SMConfig 0 21.12.2019 11:11
Соотношение разрешений экрана SMH2G/2Gi и SMH4 Arsie SMConstructor (теплопункты) 1 06.10.2017 16:27
Разборка SMH4. Замена корпуса SMH4 (в сборе с экраном и клавиатурой) Gromov Библиотека 3 22.09.2017 14:55


Часовой пояс GMT +4, время: 20:03.


Версия vBulletin: 3.8.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Segnetics 2005 - 2023