Documentation ¶
Index ¶
- Variables
- type ConnPool
- func (c *ConnPool) Close() error
- func (c *ConnPool) Ping(ctx context.Context) error
- func (c *ConnPool) ReadTagAddress(ctx context.Context, tagName string, tagAddress string) (model.PlcReadResponse, error)
- func (c *ConnPool) SetConnTimeout(t time.Duration)
- func (c *ConnPool) SetMaxOpenConns(n int)
- func (c *ConnPool) WriteTagAddress(ctx context.Context, tagName string, tagAddress string, value any) (model.PlcWriteResponse, error)
- type PollService
Constants ¶
This section is empty.
Variables ¶
var ( ErrPoolConnFailed = errors.New("conn_pool: connection failed") ErrPoolClosed = errors.New("conn_pool: pool is closed") ErrConnTimeout = errors.New("plc_conn: connection timeout") ErrConnClosed = errors.New("plc_conn: connection is closed") ErrConnAlreadyClosed = errors.New("plc_conn: connection already closed") ErrConnWriteOnly = errors.New("plc_conn: can't read, write only connection") ErrConnReadOnly = errors.New("plc_conn: can't write, read only connection") )
Functions ¶
This section is empty.
Types ¶
type ConnPool ¶
type ConnPool struct {
// contains filtered or unexported fields
}
ConnPool пул соединений для подключения к контроллеру. Большинство промышленных контроллеров имеет ограниченное количество одновременных соединения и их превышение может привести к потере данных. В текущей реализации соединения не пере используются, на каждый запрос создается новое соединение, после выполнения запроса соединение закрывается. Пул работает в режиме ограничения количества одновременных соединений с ПЛК. При превышении лимита соединений, запросы помещаются в очередь и каждое закрытое соединение запускает новое для запроса из очереди.
func NewConnPool ¶
func NewConnPool(driver plc4go.PlcDriverManager, plcURI string) (*ConnPool, error)
NewConnPool возвращает настроенный пул соединений
func NewPlcConn ¶
func NewPlcConn(driverManager plc4go.PlcDriverManager, config *configs.RClientConfig) (*ConnPool, error)
NewPlcConn возвращает настроенный пул соединений с контроллером
func (*ConnPool) ReadTagAddress ¶
func (c *ConnPool) ReadTagAddress(ctx context.Context, tagName string, tagAddress string) (model.PlcReadResponse, error)
ReadTagAddress вычитывает указанный в tagAddress тэг из контроллера
func (*ConnPool) SetConnTimeout ¶
SetConnTimeout устанавливает таймаут для соединения
func (*ConnPool) SetMaxOpenConns ¶
SetMaxOpenConns устанавливает максимальное количество одновременно открытых соединений
type PollService ¶
type PollService struct {
// contains filtered or unexported fields
}
PollService сервис организует прием и передачу событий на контроллер используя пул соединений события приходят из других компонентов приложения через приемный и передающий каналы
func NewPLCPollService ¶
func NewPLCPollService( ctx context.Context, conn *ConnPool, sendChan chan model.NotifyEvent, receiveChan chan model.ActionEvent, logger zerolog.Logger, ) *PollService
NewPLCPollService возвращает настроенный сервис опроса ПЛК
func (*PollService) Polling ¶
func (s *PollService) Polling(config *configs.RClientConfig)
Polling запускает циклический опрос событий с контроллера и запись данных в теги контроллера