- various improvements in SE drivers
This commit is contained in:
21
modbus.c
21
modbus.c
@@ -337,12 +337,17 @@ float ModBusGetFloat(EaseBase *eab, int adr) {
|
||||
return ieee2double(eab->ans + 3 + i * 4);
|
||||
}
|
||||
/*----------------------------------------------------------------------------*/
|
||||
void ModBusRequestValue(EaseBase *eab, int adr) {
|
||||
void ModBusRequestValue(EaseBase *eab, int adr, int type) {
|
||||
|
||||
eab->cmd[0] = 1; /* device address */
|
||||
eab->cmd[1] = 3; /* read n words */
|
||||
fadr2word(adr, eab->cmd + 2);
|
||||
uint2word(2, eab->cmd + 4);
|
||||
if (type == modBusInt) {
|
||||
uint2word(adr, eab->cmd + 2);
|
||||
uint2word(1, eab->cmd + 4);
|
||||
} else {
|
||||
fadr2word(adr, eab->cmd + 2);
|
||||
uint2word(2, eab->cmd + 4);
|
||||
}
|
||||
ModBusWrite(eab, 6);
|
||||
}
|
||||
/*----------------------------------------------------------------------------*/
|
||||
@@ -351,13 +356,11 @@ void ModBusPutValue(EaseBase *eab, int adr, int type, float val) {
|
||||
|
||||
eab->cmd[0] = 1; /* device address */
|
||||
eab->cmd[1] = 16; /* write n words */
|
||||
if (type == modBusTime+9) {
|
||||
if (type == modBusInt) {
|
||||
uint2word(adr, eab->cmd + 2);
|
||||
eab->cmd[4] = 2;
|
||||
eab->cmd[5] = 0;
|
||||
eab->cmd[6] = 1;
|
||||
eab->cmd[7] = (int)(val) / 256;
|
||||
eab->cmd[8] = (int)(val) % 256;
|
||||
uint2word(1, eab->cmd + 4);
|
||||
eab->cmd[6] = 2;
|
||||
uint2word((int)(val), eab->cmd+7);
|
||||
ModBusWrite(eab, 9);
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user