Commit 406877e0 authored by Claes Sjofors's avatar Claes Sjofors

Modbus TCP module: ScanInterval added

parent 0725104d
...@@ -89,6 +89,17 @@ static pwr_tStatus IoCardRead ( ...@@ -89,6 +89,17 @@ static pwr_tStatus IoCardRead (
local = (io_sCardLocal *) cp->Local; local = (io_sCardLocal *) cp->Local;
slave = (pwr_sClass_Modbus_TCP_Slave *) rp->op; slave = (pwr_sClass_Modbus_TCP_Slave *) rp->op;
if ( op->ScanInterval > 1) {
local->has_read_method = 1;
if ( local->interval_cnt != 0) {
local->interval_cnt++;
if ( local->interval_cnt >= op->ScanInterval)
local->interval_cnt = 0;
return IO__SUCCESS;
}
local->interval_cnt++;
}
if (slave->Status == MB__NORMAL) { if (slave->Status == MB__NORMAL) {
io_card_read(ctx, rp, cp, local->input_area, NULL, pwr_eByteOrderingEnum_BigEndian, pwr_eFloatRepEnum_FloatIntel); io_card_read(ctx, rp, cp, local->input_area, NULL, pwr_eByteOrderingEnum_BigEndian, pwr_eFloatRepEnum_FloatIntel);
} }
...@@ -112,6 +123,20 @@ static pwr_tStatus IoCardWrite ( ...@@ -112,6 +123,20 @@ static pwr_tStatus IoCardWrite (
pwr_sClass_Modbus_TCP_Slave *slave; pwr_sClass_Modbus_TCP_Slave *slave;
if ( op->ScanInterval > 1) {
if ( !local->has_read_method) {
if ( local->interval_cnt != 0) {
local->interval_cnt++;
if ( local->interval_cnt >= op->ScanInterval)
local->interval_cnt = 0;
return IO__SUCCESS;
}
local->interval_cnt++;
}
else if ( local->interval_cnt != 1)
return IO__SUCCESS;
}
op = (pwr_sClass_Modbus_Module *) cp->op; op = (pwr_sClass_Modbus_Module *) cp->op;
local = (io_sCardLocal *) cp->Local; local = (io_sCardLocal *) cp->Local;
slave = (pwr_sClass_Modbus_TCP_Slave *) rp->op; slave = (pwr_sClass_Modbus_TCP_Slave *) rp->op;
......
...@@ -93,6 +93,8 @@ typedef struct { ...@@ -93,6 +93,8 @@ typedef struct {
int output_size; int output_size;
short int no_di; short int no_di;
short int no_do; short int no_do;
int interval_cnt;
int has_read_method;
} io_sCardLocal; } io_sCardLocal;
typedef struct { typedef struct {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment