Решение проблем стороннего вмешательства в работу сервера штабелеров
Добавлено: 06 апр 2018, 11:14
Сейчас возникла проблема, когда на Deliver Ezz даются команды роботам в неотключенным сервером штабелеров. Это сбивает логику работу сервера, и приводит к простоям. Сделать возможным обработку таких "вмешательств" со стороны сервера, как предложил Олег Жижий, считаю нереальным. Поскольку таким образом кардинально решить проблему не получится. Лишь до бесконечности затыкать дыры. И, помимо этого, усложнять и так непростой код сервера штабелеров.
Предлагаю сделать вот что:
Предлагаю сделать вот что:
- на стороне робота завести:
- регистр-ячейку "Master" памяти - на кого сейчас работает робот - три варианта:
- на сервер штабелеров
- на сторонние программы
- неопределено
- если робот работает на сервер штабелеров, то он не принимает команды от сторонних программ
- если робот работает на сторонних программы, то он не принимает команды от сервера штабелеров
- если команда от сервера штабелеров, то в ней будет встроен специальный маркер. Команды от других программ к роботам будут идти без этого маркера
- переключение между "хозяевами" робота происходит следующим образом:
- если "Master"= неопределено, то любая команда от сервера штабелеров переводит "Master"=на сервер штабелеров
- если "Master"= неопределено, то любая команда от сторонней программы переводит "Master"=на сторонние программы
- если "Master"= на стороннюю программу, то переключение "Master" в "на сервер штабелеров" происходит по специальной команде
- если "Master"= на сервер штабелеров, то переключение "Master" в "неопределено" происходит по специальной команде
- регистр-ячейку "Master" памяти - на кого сейчас работает робот - три варианта:
- на стороне сервера штабелеров:
- любой робот можно будет поставить "на паузу" - при этом шлется соотв. команда роботу по смене "Master" на "неопределено"
- любой робот из паузы можно будет "снять" - при этом шлется соотв. команда роботу по смене "Master" на "на сервер штабелеров"
- при постановке на паузу всего АСК, соотв. команды шлются всем роботам
- при снятии с паузы всего АСК, соотв. команды шлются всем роботам
- также при снятии с паузы всего АСК или перезапуске системы сервер штабелеров проверяет соответствие реальной ситуации с тем, что есть в его модели. Если что-то не соответствует, то:
- то, что можно, сервер пытается поправить в своей модели
- если расхождения большие, то сервер выдает сообщение об ошибке с детальным указанием, что стоит поправить, и не снимает АСК с паузы