Сообщение от 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. Или же я что-то не то делаю, - подскажите как сделать правильно.
|