plc

package
v0.0.0-...-f6ab580 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 22, 2023 License: GPL-3.0 Imports: 12 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
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) Close

func (c *ConnPool) Close() error

func (*ConnPool) Ping

func (c *ConnPool) Ping(ctx context.Context) error

Ping проверяет наличие соединения с контроллером

func (*ConnPool) ReadTagAddress

func (c *ConnPool) ReadTagAddress(ctx context.Context, tagName string, tagAddress string) (model.PlcReadResponse, error)

ReadTagAddress вычитывает указанный в tagAddress тэг из контроллера

func (*ConnPool) SetConnTimeout

func (c *ConnPool) SetConnTimeout(t time.Duration)

SetConnTimeout устанавливает таймаут для соединения

func (*ConnPool) SetMaxOpenConns

func (c *ConnPool) SetMaxOpenConns(n int)

SetMaxOpenConns устанавливает максимальное количество одновременно открытых соединений

func (*ConnPool) WriteTagAddress

func (c *ConnPool) WriteTagAddress(ctx context.Context, tagName string, tagAddress string, value any) (model.PlcWriteResponse, error)

WriteTagAddress записывает значение в указанный в tagAddress тег контроллера

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 запускает циклический опрос событий с контроллера и запись данных в теги контроллера

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL