Modbus RTU PVI
Biblioteca que auxilia no desenvolvimento de scripts de testes que possuem comunicação modbus.
Instalando
Abra o terminal, e na pasta do script, execute:
npm i @libs-scripts-mep/modbus-rtu-pvi
Após fianlizada a instalação da biblioteca, inclua em seu html:
<script src="node_modules/@libs-scripts-mep/modbus-rtu-pvi/modbus-rtu-pvi.js"></script>
<!-- DEPENDENCIAS -->
<script src="node_modules/@libs-scripts-mep/crc/CRC.js"></script>
<script src="node_modules/@libs-scripts-mep/serial-pvi/serial-pvi.js"></script>
<!-- BIBLIOTECA -->
<script src="node_modules/@libs-scripts-mep/temp-sim/modbus-rtu-pvi.js"></script>
Desinstalando
Abra o terminal, e na pasta do script, rode:
npm uninstall @libs-scripts-mep/modbus-rtu-pvi
Exemplo de Utilização
class TestScript {
constructor(eventMap, event) {
this.SerialControlador = new ModbusProtocol(9600, 0, "AA") // baud = 9600, parity = 0, nodeAddress = "AA"
this.Run()
.then(async () => {
//se tudo OK
})
.catch((error) => {
//se algo NOK
})
ObjTeste = {
DataHora:{
ParamCom: {
InitialRegister: 0x5000,
Quantity: 7 // Lendo 7 registradores iniciando pelo initialRegister
},
}
ReadKey:{
ParamCom: {
InitialRegister: 0x7202,
Quantity: 1 // Lendo apenas um registrador iniciando pelo initialRegister
},
},
WriteOUT:{
ParamCom: {
InitialRegister: 0x7100,
ArrayRegisterValue: [100, 0, 1, 4] // Valores para escrita nos registradores iniciando pelo initialRegister
},
},
NumSerie:{
ParamCom: {
ReadDeviceIDCode: 4,
ObjectID: 129
},
}
}
}
async Run() {
const dataHoraReturn = await this.SerialControlador.ReadHoldingRegister(ObjTeste.DataHora.ParamCom.InitialRegister, ObjTeste.DataHora.ParamCom.Quantity)
if (dataHoraReturn.sucess) {
dataHoraReturn.response // Array com a leitura dos 7 registradores, iniciando as posições a partir do Initialregister.
} else {
// ERRO
}
const teclaReturn = await this.SerialControlador.ReadInputRegister(ObjTeste.ReadKey.ParamCom.InitialRegister, ObjTeste.ReadKey.ParamCom.Quantity)
if (teclaReturn.sucess) {
const valorRegistradorTecla = teclaReturn.response[0]
} else {
// ERRO
}
const saidaReturn = await this.SerialControlador.WriteMultipleRegister(ObjTeste.ParamCom.InitialRegister, ObjTeste.ParamCom.ArrayRegisterValue)
if (saidaReturn.sucess) {
// OK
} else {
// ERRO
}
const numSerieReturn = await this.SerialControlador.ReadDeviceIdentification(ObjTeste.ParamCom.NumSerie.ReadDeviceIDCode, ObjTeste.ParamCom.NumSerie.ObjectID)
if (numSerieReturn.sucess) {
const valorNumeroDeSerie = numSerieReturn.response // Retorno em String (ASCII) do ObjectID lido.
} else {
// ERRO
}
throw "termino"
}
}
Funções Modbus Implementadas
Função | Código | Implementada |
---|---|---|
Read Holding Registers | 0x03 | ✔️ |
Read Input Registers | 0x04 | ✔️ |
Write Single Register | 0x06 | ✔️ |
Write Multiple Registers | 0x10 | ✔️ |
Read Device Identification | 0x2B | ✔️ |