include/ModbusFunctions.cin
Write values to struct MakeConfig.can Detect devices via IP port scan Analyze devices and generate sysVars appropriately ModbusClientUDP.can Don't analyze devices because this has to be done in MakeConfig.can
This commit is contained in:
parent
bcf79a7b27
commit
e0a6d84a9f
9 changed files with 825 additions and 499 deletions
|
@ -2,10 +2,21 @@
|
|||
includes
|
||||
{
|
||||
#include "include/ModbusUdpClientCommon.cin"
|
||||
#include "include/ModbusFunctions.cin"
|
||||
}
|
||||
|
||||
variables
|
||||
{
|
||||
struct device
|
||||
{
|
||||
char Ip[16];
|
||||
char IpLsb[4];
|
||||
char IpNet[4];
|
||||
word SerialCode;
|
||||
word DeviceCode;
|
||||
struct deviceIOs DeviceIOs;
|
||||
};
|
||||
|
||||
char[16] gIps[long];
|
||||
char gScanFirstIp[16];
|
||||
char gScanLastIp[16];
|
||||
|
@ -14,13 +25,14 @@ variables
|
|||
char fnSysvar[20]; // Filename of Sysvars
|
||||
char fnDbc[20]; // Filename of DBC
|
||||
char name[20]; // Name of project
|
||||
dword ips[50]; // detected IPs
|
||||
|
||||
|
||||
file f;
|
||||
byte gIpNets[long];
|
||||
char[16] gIpsSorted[long];
|
||||
|
||||
struct device gIpsSorted[long];
|
||||
dword gScanFirst, gScanLast;
|
||||
//long i, ipN;
|
||||
word ADi, ADn, ADl;
|
||||
}
|
||||
|
||||
on preStart
|
||||
|
@ -42,37 +54,221 @@ on start
|
|||
if (gIps.Size() == 0)
|
||||
DetectDevices();
|
||||
else
|
||||
MakeFiles();
|
||||
MakeIpNets();
|
||||
}
|
||||
|
||||
void PutString(file f, char str[])
|
||||
{
|
||||
f.PutString(str, strlen(str));
|
||||
}
|
||||
void PutString(file f, word d)
|
||||
{
|
||||
char str[6];
|
||||
ltoa(d, str, 10);
|
||||
f.PutString(str, strlen(str));
|
||||
}
|
||||
void PutString(file f, byte d)
|
||||
{
|
||||
char str[4];
|
||||
ltoa(d, str, 10);
|
||||
f.PutString(str, strlen(str));
|
||||
}
|
||||
|
||||
// Step 1: Detect active devices and collect IP addresses
|
||||
/// <Step1>
|
||||
void DetectDevices()
|
||||
{
|
||||
write("Scanning from %s to %s with timeout of %d ms", gScanFirstIp, gScanLastIp, @sysvar::Config::Modbus::RequestTimeout);
|
||||
gScanFirst = ipGetAddressAsNumber(gScanFirstIp);
|
||||
gScanLast = ipGetAddressAsNumber(gScanLastIp);
|
||||
ModbusConnectTo(gScanFirst, 502);
|
||||
ModbusReadBits(0, 1);
|
||||
}
|
||||
/// <Step1>
|
||||
void DetectDevicesNext()
|
||||
{
|
||||
// next IP
|
||||
// 0xFE...... --> Skip xxx.xxx.xxx.255 which is broadcast address in 192.168.xxx.0 nets
|
||||
if ((gScanFirst & 0xFFFFFF00) == 0xFEFFFF00)
|
||||
{
|
||||
gScanFirst &= 0x000000FF;
|
||||
gScanFirst += 0x00000001;
|
||||
}
|
||||
else if ((gScanFirst & 0xFFFF0000) == 0xFEFF0000)
|
||||
{
|
||||
gScanFirst &= 0x0000FFF;
|
||||
gScanFirst += 0x00000100;
|
||||
}
|
||||
else if ((gScanFirst & 0xFF000000) == 0xFE000000)
|
||||
{
|
||||
gScanFirst &= 0x00FFFFFF;
|
||||
gScanFirst += 0x00010000;
|
||||
}
|
||||
else
|
||||
{
|
||||
gScanFirst += 0x01000000;
|
||||
}
|
||||
if (gScanFirst == gScanLast)
|
||||
{
|
||||
MakeIpNets();
|
||||
return;
|
||||
}
|
||||
gRemoteIP = gScanFirst; // Don't open new socket, it takes too much time.
|
||||
ModbusReadBits(0, 1);
|
||||
}
|
||||
/// <Step1>
|
||||
void OnModbusReadBitsFailed(enum ModbusRequestError error, enum ModbusException ex, struct ModbusApHeader mbap)
|
||||
{
|
||||
DetectDevicesNext();
|
||||
}
|
||||
/// <Step1>
|
||||
void OnModbusReadBitsSuccess(struct ModbusResReceiveBits mbr, byte bitStatus[], word numBits)
|
||||
{
|
||||
ipGetAddressAsString(gScanFirst, gIps[gScanFirst], 16);
|
||||
DetectDevicesNext();
|
||||
}
|
||||
|
||||
// Step 2: Sort into subnets
|
||||
// Sort the IPs from gIps to gIpsSorted and add their subnet to gIpNets
|
||||
/// <Step2>
|
||||
void MakeIpNets()
|
||||
{
|
||||
long ipNum;
|
||||
|
||||
if (gIps.Size() == 0)
|
||||
{
|
||||
stop();
|
||||
return;
|
||||
}
|
||||
|
||||
for (long i : gIps)
|
||||
{
|
||||
ipNum = ipGetAddressAsNumber(gIps[i]); // convert IP to dword
|
||||
|
||||
gIpNets[(ipNum >> 16) & 0xFF] = 1; // add subnet
|
||||
ips[gIpsSorted.size()] = ipNum; // add ip to array
|
||||
strncpy(gIpsSorted[ipNum].IP, gIps[i], 16); // copy to new array
|
||||
ltoa((ipNum >> 16) & 0xFF, gIpsSorted[ipNum].IpNet, 10); // add .IpNet
|
||||
ltoa((ipNum >> 24) & 0xFF, gIpsSorted[ipNum].IpLsb, 10); // add .IpLsb
|
||||
|
||||
gIps.Remove(i);
|
||||
}
|
||||
|
||||
AnalyzeDevices();
|
||||
}
|
||||
|
||||
|
||||
// Step 3: Retreive configuration of devices
|
||||
/// <Step3>
|
||||
void AnalyzeDevices()
|
||||
{
|
||||
ADn = 0;
|
||||
ADi = 0;
|
||||
ADl = gIpsSorted.Size();
|
||||
write("Analyzing %s...", gIpsSorted[ips[ADi]].Ip);
|
||||
if (gRemoteIP != INVALID_IP)
|
||||
gRemoteIP = ips[ADi];
|
||||
else
|
||||
ModbusConnectTo(ips[ADi], gRemotePort);
|
||||
ModbusReadRegisters(0x2011, 1);
|
||||
ModbusReadRegisters(0x2012, 1);
|
||||
ModbusReadRegisters(0x2030, 65);
|
||||
ModbusReadRegisters(0x2031, 64);
|
||||
ModbusReadRegisters(0x2032, 64);
|
||||
ModbusReadRegisters(0x2033, 63);
|
||||
}
|
||||
|
||||
/// <Step3>
|
||||
void AnalyzeDevicesNext()
|
||||
{
|
||||
if (++ADi >= ADl) // we have analyzed all devices
|
||||
{
|
||||
MakeFiles();
|
||||
return;
|
||||
}
|
||||
|
||||
ADn = 0;
|
||||
gRemoteIP = ips[ADi];
|
||||
write("Analyzing %s...", gIpsSorted[ips[ADi]].Ip);
|
||||
ModbusReadRegisters(0x2011, 1);
|
||||
ModbusReadRegisters(0x2012, 1);
|
||||
ModbusReadRegisters(0x2030, 65);
|
||||
ModbusReadRegisters(0x2031, 64);
|
||||
ModbusReadRegisters(0x2032, 64);
|
||||
ModbusReadRegisters(0x2033, 63);
|
||||
}
|
||||
|
||||
/// <Step3>
|
||||
void OnModbusReadRegistersFailed(enum ModbusRequestError error, enum ModbusException ex, struct ModbusApHeader mbap)
|
||||
{
|
||||
switch (error)
|
||||
{
|
||||
case FinalTimeout:
|
||||
writeLineEx(0, 3, "Error while analyzing %s! The device did not respond! Ignoring...", gIpsSorted[ips[ADi]].IP);
|
||||
gQueueAck.Clear();
|
||||
gQueuePending.Clear();
|
||||
gQueueSent.Clear();
|
||||
gIpsSorted.Remove(ips[ADi]);
|
||||
AnalyzeDevicesNext();
|
||||
break;
|
||||
case Exception:
|
||||
writeLineEx(0, 3, "Error while analyzing %s! The device respond with exception code %d! Ignoring...", gIpsSorted[ips[ADi]].IP, ex);
|
||||
gQueueAck.Clear();
|
||||
gQueuePending.Clear();
|
||||
gQueueSent.Clear();
|
||||
gIpsSorted.Remove(ips[ADi]);
|
||||
AnalyzeDevicesNext();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/// <Step3>
|
||||
void OnModbusReadRegistersSuccess(struct ModbusResReceiveRegisters mbr, word numRegs)
|
||||
{
|
||||
byte i;
|
||||
struct ModbusReqRead mbrq;
|
||||
|
||||
if (!gQueueAck.ContainsKey(mbr.Header.TxID))
|
||||
return;
|
||||
|
||||
memcpy_n2h(mbrq, gQueueAck[mbr.Header.TxID].Buffer);
|
||||
|
||||
switch (mbrq.Address)
|
||||
{
|
||||
case 0x2011:
|
||||
gIpsSorted[ips[ADi]].serialCode = mbr.Data[0];
|
||||
break;
|
||||
case 0x2012:
|
||||
gIpsSorted[ips[ADi]].deviceCode = mbr.Data[0];
|
||||
break;
|
||||
case 0x2030:
|
||||
case 0x2031:
|
||||
case 0x2032:
|
||||
case 0x2033:
|
||||
for (i = 0; i < 65; i++)
|
||||
{
|
||||
if (mbr.Data[i] == 0x0000)
|
||||
break;
|
||||
ParseDeviceCode(mbr.Data[i], gIpsSorted[ips[ADi]].DeviceIOs);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (++ADn == 6)
|
||||
AnalyzeDevicesNext();
|
||||
}
|
||||
|
||||
// Step 4: Create the files with the queried data
|
||||
/// <Step4>
|
||||
void MakeFiles()
|
||||
{
|
||||
MakeIpNets();
|
||||
GenSysvars();
|
||||
GenDbc();
|
||||
stop();
|
||||
}
|
||||
|
||||
// Sort the IPs from gIps to gIpsSorted and add their subnet to gIpNets
|
||||
void MakeIpNets()
|
||||
{
|
||||
long ipN;
|
||||
for (long i : gIps)
|
||||
{
|
||||
ipN = ipGetAddressAsNumber(gIps[i]); // convert IP to dword
|
||||
strncpy(gIpsSorted[ipN], gIps[i], 16);
|
||||
gIps.Remove(i);
|
||||
|
||||
gIpNets[(ipN >> 16) & 0xFF] = 1;
|
||||
}
|
||||
}
|
||||
|
||||
// Generate the SysVars XML
|
||||
/// <Step4>
|
||||
void GenSysvars()
|
||||
{
|
||||
write("GenSysvars() -> %s", fnSysvar);
|
||||
|
@ -95,58 +291,92 @@ void GenSysvars()
|
|||
|
||||
for (long net : gIpNets)
|
||||
{
|
||||
char netS[4];
|
||||
ltoa(net, netS, 10);
|
||||
|
||||
byte nett;
|
||||
nett = net;
|
||||
PutString(f, " <namespace name=\"Ethernet");
|
||||
PutString(f, netS);
|
||||
PutString(f, nett);
|
||||
PutString(f, "\" comment=\"Subnet: 192.168.");
|
||||
PutString(f, netS);
|
||||
PutString(f, nett);
|
||||
PutString(f, ".\">\n");
|
||||
|
||||
for (long ipN : gIpsSorted)
|
||||
{
|
||||
char ipS[16];
|
||||
char ipSlast[4];
|
||||
|
||||
if (((ipN >> 16) & 0xFF) != net)
|
||||
continue;
|
||||
|
||||
strncpy(ipS, gIpsSorted[ipN], 16); // copy IP address to local ipS
|
||||
ltoa(ipN >> 24, ipSlast, 10); // convert the last byte (= first byte) to string
|
||||
write("GenSysvars: %s", ipS);
|
||||
write("GenSysvars: %s", gIpsSorted[ipN].Ip);
|
||||
|
||||
PutString(f, " <namespace name=\"Client_");
|
||||
//PutString(f, netS);
|
||||
//PutString(f, "_");
|
||||
PutString(f, ipSlast);
|
||||
PutString(f, gIpsSorted[ipN].IpLsb);
|
||||
PutString(f, "\" comment=\"Server with ip address '");
|
||||
PutString(f, ipS);
|
||||
PutString(f, gIpsSorted[ipN].Ip);
|
||||
PutString(f, "'\">\n");
|
||||
|
||||
// Namespace Config
|
||||
PutString(f, " <namespace name=\"Config\" comment=\"Configuration section for this server\">\n");
|
||||
|
||||
// IP
|
||||
PutString(f, " <variable anlyzLocal=\"2\" readOnly=\"false\" valueSequence=\"false\" unit=\"\" name=\"IP\" comment=\"The IP address of this server\" bitcount=\"8\" isSigned=\"true\" encoding=\"65001\" type=\"string\" startValue=\"");
|
||||
PutString(f, ipS);
|
||||
PutString(f, gIpsSorted[ipN].Ip);
|
||||
PutString(f, "\" />\n");
|
||||
|
||||
// Intveral
|
||||
PutString(f, " <variable anlyzLocal=\"2\" readOnly=\"false\" valueSequence=\"false\" unit=\"ms\" name=\"Interval\" comment=\"The interval with which the device will be queried\" bitcount=\"32\" isSigned=\"true\" encoding=\"65001\" type=\"int\" startValue=\"100\" minValue=\"10\" minValuePhys=\"10\" maxValue=\"10000\" maxValuePhys=\"10000\" />\n");
|
||||
PutString(f, " </namespace>\n");
|
||||
|
||||
|
||||
//Namespace Info
|
||||
PutString(f, " <namespace name=\"Info\" comment=\"Some information about the device\">\n");
|
||||
PutString(f, " <variable anlyzLocal=\"2\" readOnly=\"false\" valueSequence=\"false\" unit=\"\" name=\"SerialCode\" comment=\"The serial code of the server\" bitcount=\"32\" isSigned=\"true\" encoding=\"65001\" type=\"int\" startValue=\"0\" minValue=\"1\" minValuePhys=\"1\" maxValue=\"10000\" maxValuePhys=\"10000\" />\n");
|
||||
PutString(f, " <variable anlyzLocal=\"2\" readOnly=\"false\" valueSequence=\"false\" unit=\"\" name=\"DeviceCode\" comment=\"The device code of the server\" bitcount=\"32\" isSigned=\"true\" encoding=\"65001\" type=\"int\" startValue=\"0\" minValue=\"1\" minValuePhys=\"1\" maxValue=\"10000\" maxValuePhys=\"10000\" />\n");
|
||||
PutString(f, " <variable anlyzLocal=\"2\" readOnly=\"false\" valueSequence=\"false\" unit=\"\" name=\"Modules\" comment=\"The type and number of inputs of modules that are connected to the server\" bitcount=\"8\" isSigned=\"true\" encoding=\"65001\" type=\"string\" />\n");
|
||||
PutString(f, " <variable anlyzLocal=\"2\" readOnly=\"false\" valueSequence=\"false\" unit=\"\" name=\"InputRegisters\" comment=\"Number of input registers\" bitcount=\"32\" isSigned=\"true\" encoding=\"65001\" type=\"int\" startValue=\"0\" minValue=\"0\" minValuePhys=\"0\" maxValue=\"123\" maxValuePhys=\"123\" />\n");
|
||||
PutString(f, " <variable anlyzLocal=\"2\" readOnly=\"false\" valueSequence=\"false\" unit=\"\" name=\"InputBits\" comment=\"Number of input bits\" bitcount=\"32\" isSigned=\"true\" encoding=\"65001\" type=\"int\" startValue=\"0\" minValue=\"0\" minValuePhys=\"0\" maxValue=\"2000\" maxValuePhys=\"2000\" />\n");
|
||||
PutString(f, " <variable anlyzLocal=\"2\" readOnly=\"false\" valueSequence=\"false\" unit=\"\" name=\"OutputRegisters\" comment=\"Number of output registers\" bitcount=\"32\" isSigned=\"true\" encoding=\"65001\" type=\"int\" startValue=\"0\" minValue=\"0\" minValuePhys=\"0\" maxValue=\"123\" maxValuePhys=\"123\" />\n");
|
||||
PutString(f, " <variable anlyzLocal=\"2\" readOnly=\"false\" valueSequence=\"false\" unit=\"\" name=\"OutputBits\" comment=\"Number of output bits\" bitcount=\"32\" isSigned=\"true\" encoding=\"65001\" type=\"int\" startValue=\"0\" minValue=\"0\" minValuePhys=\"0\" maxValue=\"2000\" maxValuePhys=\"2000\" />\n");
|
||||
// SerialCode
|
||||
PutString(f, " <variable anlyzLocal=\"2\" readOnly=\"true\" valueSequence=\"false\" unit=\"\" name=\"SerialCode\" comment=\"The serial code of the server\" bitcount=\"32\" isSigned=\"true\" encoding=\"65001\" type=\"int\" startValue=\"");
|
||||
PutString(f, gIpsSorted[ipN].SerialCode);
|
||||
PutString(f, "\" minValue=\"1\" minValuePhys=\"1\" maxValue=\"10000\" maxValuePhys=\"10000\" />\n");
|
||||
// DeviceCode
|
||||
PutString(f, " <variable anlyzLocal=\"2\" readOnly=\"true\" valueSequence=\"false\" unit=\"\" name=\"DeviceCode\" comment=\"The device code of the server\" bitcount=\"32\" isSigned=\"true\" encoding=\"65001\" type=\"int\" startValue=\"");
|
||||
PutString(f, gIpsSorted[ipN].DeviceCode);
|
||||
PutString(f, "\" minValue=\"1\" minValuePhys=\"1\" maxValue=\"10000\" maxValuePhys=\"10000\" />\n");
|
||||
// Modules
|
||||
gIpsSorted[ipN].DeviceIOs.Modules[strlen(gIpsSorted[ipN].DeviceIOs.Modules)] = 0;
|
||||
PutString(f, " <variable anlyzLocal=\"2\" readOnly=\"true\" valueSequence=\"false\" unit=\"\" name=\"Modules\" comment=\"The type and number of inputs of modules that are connected to the server\" bitcount=\"8\" isSigned=\"true\" encoding=\"65001\" type=\"string\" startValue=\"");
|
||||
PutString(f, gIpsSorted[ipN].DeviceIOs.Modules);
|
||||
PutString(f, "\" />\n");
|
||||
// InputRegisters
|
||||
PutString(f, " <variable anlyzLocal=\"2\" readOnly=\"true\" valueSequence=\"false\" unit=\"\" name=\"InputRegisters\" comment=\"Number of input registers\" bitcount=\"32\" isSigned=\"true\" encoding=\"65001\" type=\"int\" startValue=\"");
|
||||
PutString(f, gIpsSorted[ipN].DeviceIOs.InputRegisters);
|
||||
PutString(f, "\" minValue=\"0\" minValuePhys=\"0\" maxValue=\"123\" maxValuePhys=\"123\" />\n");
|
||||
// InputBits
|
||||
PutString(f, " <variable anlyzLocal=\"2\" readOnly=\"true\" valueSequence=\"false\" unit=\"\" name=\"InputBits\" comment=\"Number of input bits\" bitcount=\"32\" isSigned=\"true\" encoding=\"65001\" type=\"int\" startValue=\"");
|
||||
PutString(f, gIpsSorted[ipN].DeviceIOs.InputBits);
|
||||
PutString(f, "\" minValue=\"0\" minValuePhys=\"0\" maxValue=\"2000\" maxValuePhys=\"2000\" />\n");
|
||||
// OutputRegisters
|
||||
PutString(f, " <variable anlyzLocal=\"2\" readOnly=\"true\" valueSequence=\"false\" unit=\"\" name=\"OutputRegisters\" comment=\"Number of output registers\" bitcount=\"32\" isSigned=\"true\" encoding=\"65001\" type=\"int\" startValue=\"");
|
||||
PutString(f, gIpsSorted[ipN].DeviceIOs.OutputRegisters);
|
||||
PutString(f, "\" minValue=\"0\" minValuePhys=\"0\" maxValue=\"123\" maxValuePhys=\"123\" />\n");
|
||||
// OutputBits
|
||||
PutString(f, " <variable anlyzLocal=\"2\" readOnly=\"true\" valueSequence=\"false\" unit=\"\" name=\"OutputBits\" comment=\"Number of output bits\" bitcount=\"32\" isSigned=\"true\" encoding=\"65001\" type=\"int\" startValue=\"");
|
||||
PutString(f, gIpsSorted[ipN].DeviceIOs.OutputBits);
|
||||
PutString(f, "\" minValue=\"0\" minValuePhys=\"0\" maxValue=\"2000\" maxValuePhys=\"2000\" />\n");
|
||||
PutString(f, " </namespace>\n");
|
||||
|
||||
// Namespace Data
|
||||
PutString(f, " <namespace name=\"Data\" comment=\"The actual process image\">\n");
|
||||
PutString(f, " <variable anlyzLocal=\"2\" readOnly=\"false\" valueSequence=\"false\" unit=\"\" name=\"InputRegisters\" comment=\"The values of the input registers\" bitcount=\"8\" isSigned=\"true\" encoding=\"65001\" type=\"data\" arrayLength=\"0\" />\n");
|
||||
PutString(f, " <variable anlyzLocal=\"2\" readOnly=\"false\" valueSequence=\"false\" unit=\"\" name=\"InputBits\" comment=\"The state of the input bits\" bitcount=\"8\" isSigned=\"true\" encoding=\"65001\" type=\"data\" arrayLength=\"0\" />\n");
|
||||
PutString(f, " <variable anlyzLocal=\"2\" readOnly=\"false\" valueSequence=\"false\" unit=\"\" name=\"OutputRegisters\" comment=\"The values of the output registers. Write here and the values will be sent to the device\" bitcount=\"8\" isSigned=\"true\" encoding=\"65001\" type=\"data\" arrayLength=\"0\" />\n");
|
||||
PutString(f, " <variable anlyzLocal=\"2\" readOnly=\"false\" valueSequence=\"false\" unit=\"\" name=\"OutputBits\" comment=\"The state of the output bits. Write here and the values will be sent to the device\" bitcount=\"8\" isSigned=\"true\" encoding=\"65001\" type=\"data\" arrayLength=\"0\" />\n");
|
||||
// InputRegisters
|
||||
PutString(f, " <variable anlyzLocal=\"2\" readOnly=\"false\" valueSequence=\"false\" unit=\"\" name=\"InputRegisters\" comment=\"The values of the input registers\" bitcount=\"32\" isSigned=\"true\" encoding=\"65001\" type=\"intarray\" arrayLength=\"");
|
||||
PutString(f, gIpsSorted[ipN].DeviceIOs.InputRegisters);
|
||||
PutString(f, "\" />\n");
|
||||
// InputBits
|
||||
PutString(f, " <variable anlyzLocal=\"2\" readOnly=\"false\" valueSequence=\"false\" unit=\"\" name=\"InputBits\" comment=\"The state of the input bits\" bitcount=\"32\" isSigned=\"true\" encoding=\"65001\" type=\"intarray\" arrayLength=\"");
|
||||
PutString(f, gIpsSorted[ipN].DeviceIOs.InputBits);
|
||||
PutString(f, "\" />\n");
|
||||
// OutputRegisters
|
||||
PutString(f, " <variable anlyzLocal=\"2\" readOnly=\"false\" valueSequence=\"false\" unit=\"\" name=\"OutputRegisters\" comment=\"The values of the output registers. Write here and the values will be sent to the device\" bitcount=\"32\" isSigned=\"true\" encoding=\"65001\" type=\"intarray\" arrayLength=\"");
|
||||
PutString(f, gIpsSorted[ipN].DeviceIOs.OutputRegisters);
|
||||
PutString(f, "\" />\n");
|
||||
// OutputBits
|
||||
PutString(f, " <variable anlyzLocal=\"2\" readOnly=\"false\" valueSequence=\"false\" unit=\"\" name=\"OutputBits\" comment=\"The state of the output bits. Write here and the values will be sent to the device\" bitcount=\"32\" isSigned=\"true\" encoding=\"65001\" type=\"intarray\" arrayLength=\"");
|
||||
PutString(f, gIpsSorted[ipN].DeviceIOs.OutputBits);
|
||||
PutString(f, "\" />\n");
|
||||
|
||||
PutString(f, " </namespace>\n");
|
||||
PutString(f, " </namespace>\n");
|
||||
}
|
||||
|
@ -160,6 +390,7 @@ void GenSysvars()
|
|||
}
|
||||
|
||||
// Generate the Database
|
||||
/// <Step4>
|
||||
void GenDbc()
|
||||
{
|
||||
write("GenDbc() -> %s", fnDbc);
|
||||
|
@ -201,19 +432,12 @@ void GenDbc()
|
|||
|
||||
for (long ipN : gIpsSorted)
|
||||
{
|
||||
char ipS[16];
|
||||
char ipSlast[4];
|
||||
char netS[4];
|
||||
|
||||
strncpy(ipS, gIpsSorted[ipN], 16); // copy IP address to local ipS
|
||||
ltoa(ipN >> 24, ipSlast, 10); // convert the last byte (= first byte) to string
|
||||
ltoa((ipN >> 16) & 0xFF, netS, 10);
|
||||
write("GenDbc: %s", ipS);
|
||||
write("GenDbc: %s", gIpsSorted[ipN].Ip);
|
||||
|
||||
PutString(f, " Client_");
|
||||
//PutString(f, netS);
|
||||
//PutString(f, gIpsSorted[ipN].IpNet);
|
||||
//PutString(f, "_");
|
||||
PutString(f, ipSlast);
|
||||
PutString(f, gIpsSorted[ipN].IpLsb);
|
||||
}
|
||||
PutString(f, "\n\n\n\n");
|
||||
PutString(f, "BA_DEF_ BU_ \"NodeLayerModules\" STRING ;\n");
|
||||
|
@ -230,66 +454,19 @@ void GenDbc()
|
|||
f.Close();
|
||||
}
|
||||
|
||||
void DetectDevices()
|
||||
{
|
||||
write("Scanning from %s to %s with timeout of %d ms", gScanFirstIp, gScanLastIp, @sysvar::Config::Modbus::RequestTimeout);
|
||||
gScanFirst = ipGetAddressAsNumber(gScanFirstIp);
|
||||
gScanLast = ipGetAddressAsNumber(gScanLastIp);
|
||||
ModbusConnectTo(gScanFirst, 502);
|
||||
ModbusReadBits(0, 1);
|
||||
}
|
||||
|
||||
void DetectDevicesNext()
|
||||
{
|
||||
// next IP
|
||||
// 0xFE...... --> Skip xxx.xxx.xxx.255 which is broadcast address in 192.168.xxx.0 nets
|
||||
if ((gScanFirst & 0xFFFFFF00) == 0xFEFFFF00)
|
||||
{
|
||||
gScanFirst &= 0x000000FF;
|
||||
gScanFirst += 0x00000001;
|
||||
}
|
||||
else if ((gScanFirst & 0xFFFF0000) == 0xFEFF0000)
|
||||
{
|
||||
gScanFirst &= 0x0000FFF;
|
||||
gScanFirst += 0x00000100;
|
||||
}
|
||||
else if ((gScanFirst & 0xFF000000) == 0xFE000000)
|
||||
{
|
||||
gScanFirst &= 0x00FFFFFF;
|
||||
gScanFirst += 0x00010000;
|
||||
}
|
||||
else
|
||||
{
|
||||
gScanFirst += 0x01000000;
|
||||
}
|
||||
if (gScanFirst == gScanLast)
|
||||
{
|
||||
MakeFiles();
|
||||
return;
|
||||
}
|
||||
gRemoteIP = gScanFirst; // Don't open new socket, it takes too much time.
|
||||
ModbusReadBits(0, 1);
|
||||
}
|
||||
|
||||
|
||||
// Modbus events ----------------------------------------------------------------------
|
||||
void OnModbusReadBitsFailed(enum ModbusRequestError error, enum ModbusException ex, struct ModbusApHeader mbap)
|
||||
{
|
||||
DetectDevicesNext();
|
||||
}
|
||||
void OnModbusReadBitsSuccess(struct ModbusResReceiveBits mbr, byte bitStatus[], word numBits)
|
||||
{
|
||||
ipGetAddressAsString(gScanFirst, gIps[gScanFirst], 16);
|
||||
DetectDevicesNext();
|
||||
}
|
||||
void OnModbusReadRegistersFailed(enum ModbusRequestError error, enum ModbusException ex, struct ModbusApHeader mbap){}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void OnModbusWriteBitFailed(enum ModbusRequestError error, enum ModbusException ex, struct ModbusApHeader mbap){}
|
||||
void OnModbusWriteRegisterFailed(enum ModbusRequestError error, enum ModbusException ex, struct ModbusApHeader mbap){}
|
||||
void OnModbusWriteMasksFailed(enum ModbusRequestError error, enum ModbusException ex, struct ModbusApHeader mbap){}
|
||||
void OnModbusReadWriteRegistersFailed(enum ModbusRequestError error, enum ModbusException ex, struct ModbusApHeader mbap){}
|
||||
void OnModbusWriteBitsFailed(enum ModbusRequestError error, enum ModbusException ex, struct ModbusApHeader mbap){}
|
||||
void OnModbusWriteRegistersFailed(enum ModbusRequestError error, enum ModbusException ex, struct ModbusApHeader mbap){}
|
||||
void OnModbusReadRegistersSuccess(struct ModbusResReceiveRegisters mbr, word numRegs){}
|
||||
void OnModbusWriteBitSuccess(struct ModbusResConfirmSingle mbc){}
|
||||
void OnModbusWriteRegisterSuccess(struct ModbusResConfirmSingle mbc){}
|
||||
void OnModbusWriteBitsSuccess(struct ModbusResConfirmMultiple mbc){}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;CANoe Version |4|7|1|35761 MakeConfig
|
||||
;CANoe Version |4|7|1|52129 MakeConfig
|
||||
Version: 8.2.40 Build 40
|
||||
32 PRO
|
||||
5
|
||||
|
@ -1261,37 +1261,9 @@ Grafik-Fenster
|
|||
237
|
||||
0
|
||||
0
|
||||
1
|
||||
0
|
||||
0
|
||||
0
|
||||
-11
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
400
|
||||
0
|
||||
Tahoma
|
||||
0
|
||||
1
|
||||
0
|
||||
0
|
||||
0
|
||||
-11
|
||||
0
|
||||
0
|
||||
0
|
||||
34
|
||||
0
|
||||
0
|
||||
0
|
||||
400
|
||||
0
|
||||
Tahoma
|
||||
0
|
||||
1
|
||||
1
|
||||
|
@ -1462,7 +1434,7 @@ End_Of_Object VTraceFilterCfg 15
|
|||
1
|
||||
1
|
||||
14
|
||||
ver=2: FT FT FT FT FT FT
|
||||
ver=2: FF FT FT FT FT FT
|
||||
End_Of_Serialized_Data 14
|
||||
2
|
||||
0
|
||||
|
@ -1475,7 +1447,7 @@ End_Of_Serialized_Data 14
|
|||
6
|
||||
1
|
||||
14
|
||||
ver=2: FT TF TF FT FT FF;F T Config;F T GLLogger;T F _Statistics
|
||||
ver=2: FT TF TF FF FT FT;F T Config;F T GLLogger;T F _Statistics
|
||||
End_Of_Serialized_Data 14
|
||||
7
|
||||
0
|
||||
|
@ -1494,7 +1466,7 @@ End_Of_Serialized_Data 14
|
|||
14
|
||||
1
|
||||
14
|
||||
ver=3: FT FT FT FT
|
||||
ver=3: FF FT FT FT
|
||||
End_Of_Serialized_Data 14
|
||||
15
|
||||
0
|
||||
|
@ -1516,29 +1488,29 @@ End_Of_Serialized_Data 14
|
|||
22
|
||||
1
|
||||
14
|
||||
ver=2: FT
|
||||
ver=2: FF
|
||||
End_Of_Serialized_Data 14
|
||||
23
|
||||
1
|
||||
14
|
||||
ver=2: FT
|
||||
ver=2: FF
|
||||
End_Of_Serialized_Data 14
|
||||
24
|
||||
1
|
||||
14
|
||||
ver=2: FT
|
||||
ver=2: FF
|
||||
End_Of_Serialized_Data 14
|
||||
25
|
||||
0
|
||||
26
|
||||
1
|
||||
14
|
||||
ver=2: FT
|
||||
ver=2: FF
|
||||
End_Of_Serialized_Data 14
|
||||
27
|
||||
1
|
||||
14
|
||||
ver=2: FT
|
||||
ver=2: FF
|
||||
End_Of_Serialized_Data 14
|
||||
0
|
||||
1
|
||||
|
@ -2450,7 +2422,7 @@ VTNColumnData 16 Begin_Of_Object
|
|||
0
|
||||
End_Of_Object VTNColumnData 16
|
||||
End_Of_Object VTraceColumnConfiguration 15
|
||||
1
|
||||
2
|
||||
0
|
||||
VTraceControlFixedModeExpansionItems 15 Begin_Of_Object
|
||||
3
|
||||
|
@ -2961,7 +2933,7 @@ End_Of_Object VGrMnBox 3
|
|||
VDOLocalInfoStruct 3 Begin_Of_Object
|
||||
3
|
||||
1
|
||||
53
|
||||
59
|
||||
VDAOBus 4 Begin_Of_Object
|
||||
1
|
||||
1
|
||||
|
@ -3091,7 +3063,7 @@ VSimulinkModelViewerConfiguration 7 Begin_Of_Object
|
|||
End_Of_Object VSimulinkModelViewerConfiguration 7
|
||||
1
|
||||
0
|
||||
2714767912
|
||||
706119883
|
||||
0
|
||||
NodeSignalPanelBustypeCount 0
|
||||
End_Of_Object VSimulationNode 6
|
||||
|
@ -3129,7 +3101,7 @@ NULL
|
|||
End_Of_Object VDOLocalInfoStruct 3
|
||||
0.000000
|
||||
0 0
|
||||
1 1 0 59420 1 233 1 2882400001 98 331 309 611 2882400002 0 0 0 0 0 0 1 2882400001 1270 1270 311 311 2882400002 0 0 0 603501776 0 604138284 3
|
||||
1 1 0 59420 1 233 1 2882400001 98 331 309 611 2882400002 0 0 0 0 0 0 1 2882400001 1270 1270 311 311 2882400002 0 0 0 0 0 0 3
|
||||
SS_BEGIN_COMMON_INFO
|
||||
1
|
||||
0
|
||||
|
@ -3141,7 +3113,7 @@ Ethernet
|
|||
11
|
||||
1
|
||||
1
|
||||
362751416 1 0 1 0 0 1 0 0 0 2000 1
|
||||
609817640 1 0 1 0 0 1 0 0 0 2000 1
|
||||
SS_BEGIN_COMMON_INFO
|
||||
1
|
||||
3
|
||||
|
|
|
@ -26,22 +26,65 @@ on start
|
|||
|
||||
|
||||
// Read serial code, additional stuff is done in OnModbusReceiveRegisters
|
||||
ModbusReadRegisters(0x2011, 1);
|
||||
ModbusReadRegisters(0x2012, 1);
|
||||
ModbusReadRegisters(0x2030, 65);
|
||||
ModbusReadRegisters(0x2031, 64);
|
||||
ModbusReadRegisters(0x2032, 64);
|
||||
ModbusReadRegisters(0x2033, 63);
|
||||
// This has to be done by MakeConfig to properly size the arrays
|
||||
//ModbusReadRegisters(0x2011, 1);
|
||||
//ModbusReadRegisters(0x2012, 1);
|
||||
//ModbusReadRegisters(0x2030, 65);
|
||||
//ModbusReadRegisters(0x2031, 64);
|
||||
//ModbusReadRegisters(0x2032, 64);
|
||||
//ModbusReadRegisters(0x2033, 63);
|
||||
if (@sysvar::%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Info::OutputBits > 0)
|
||||
ModbusReadBits(0x200, @sysvar::%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Info::OutputBits);
|
||||
if (@sysvar::%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Info::OutputRegisters > 0)
|
||||
ModbusReadRegisters(0x200, @sysvar::%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Info::OutputRegisters);
|
||||
|
||||
setTimerCyclic(gtRead, 1, @sysvar::%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Config::Interval);
|
||||
}
|
||||
|
||||
|
||||
// Modbus events ----------------------------------------------------------------------
|
||||
void OnModbusReadBitsFailed(enum ModbusRequestError error, enum ModbusException ex, struct ModbusApHeader mbap)
|
||||
{
|
||||
word i;
|
||||
|
||||
switch (error)
|
||||
{
|
||||
case Exception:
|
||||
writeLineEx(0, 3, "<%NODE_NAME%> Error: Received Exception 0x%X while reading Bits", ex);
|
||||
break;
|
||||
case Timeout:
|
||||
writeLineEx(0, 2, "<%NODE_NAME%> Warning: Reading Bits timed out! Retrying...");
|
||||
break;
|
||||
case FinalTimeout:
|
||||
sysBeginVariableStructUpdate("%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Data", "InputBits");
|
||||
for (i = 0; i < @sysvar::%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Info::InputBits; i++)
|
||||
@sysvar::%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Data::InputBits[i] = -1;
|
||||
sysEndVariableStructUpdate("%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Data", "InputBits");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void OnModbusReadRegistersFailed(enum ModbusRequestError error, enum ModbusException ex, struct ModbusApHeader mbap)
|
||||
{
|
||||
byte i;
|
||||
|
||||
switch (error)
|
||||
{
|
||||
case Exception:
|
||||
writeLineEx(0, 3, "<%NODE_NAME%> Error: Received Exception 0x%X while reading Registers", ex);
|
||||
break;
|
||||
case Timeout:
|
||||
writeLineEx(0, 2, "<%NODE_NAME%> Warning: Reading Registers timed out! Retrying...");
|
||||
break;
|
||||
case FinalTimeout:
|
||||
sysBeginVariableStructUpdate("%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Data", "InputRegisters");
|
||||
for (i = 0; i < @sysvar::%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Info::InputRegisters; i++)
|
||||
@sysvar::%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Data::InputRegisters[i] = -1;
|
||||
sysEndVariableStructUpdate("%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Data", "InputRegisters");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void OnModbusWriteBitFailed(enum ModbusRequestError error, enum ModbusException ex, struct ModbusApHeader mbap)
|
||||
{
|
||||
}
|
||||
|
@ -54,72 +97,38 @@ void OnModbusWriteMasksFailed(enum ModbusRequestError error, enum ModbusExceptio
|
|||
void OnModbusReadWriteRegistersFailed(enum ModbusRequestError error, enum ModbusException ex, struct ModbusApHeader mbap)
|
||||
{
|
||||
}
|
||||
|
||||
void OnModbusWriteBitsFailed(enum ModbusRequestError error, enum ModbusException ex, struct ModbusApHeader mbap)
|
||||
{
|
||||
byte bitStatus[100], i;
|
||||
|
||||
switch (error)
|
||||
{
|
||||
case Exception:
|
||||
writeLineEx(0, 3, "Error: Received Exception 0x%X while reading Bits", ex);
|
||||
break;
|
||||
case Timeout:
|
||||
writeLineEx(0, 2, "Warning: Reading Bits timed out! Retrying...");
|
||||
break;
|
||||
case FinalTimeout:
|
||||
for (i = 0; i < @sysvar::%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Info::InputBits; i++)
|
||||
bitStatus[i] = 255;
|
||||
|
||||
sysSetVariableData("%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Data", "InputBits", bitStatus, @sysvar::%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Info::InputBits);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void OnModbusWriteRegistersFailed(enum ModbusRequestError error, enum ModbusException ex, struct ModbusApHeader mbap)
|
||||
{
|
||||
byte bitStatus[100], i;
|
||||
|
||||
|
||||
switch (error)
|
||||
{
|
||||
case Exception:
|
||||
writeLineEx(0, 3, "Error: Received Exception 0x%X while reading Registers", ex);
|
||||
break;
|
||||
case Timeout:
|
||||
writeLineEx(0, 2, "Warning: Reading Registers timed out! Retrying...");
|
||||
break;
|
||||
case FinalTimeout:
|
||||
for (i = 0; i < @sysvar::%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Info::InputRegisters; i++)
|
||||
bitStatus[i] = 255;
|
||||
|
||||
sysSetVariableData("%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Data", "InputRegisters", bitStatus, @sysvar::%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Info::InputRegisters);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void OnModbusReadBitsSuccess(struct ModbusResReceiveBits mbr, byte bitStatus[], word numBits)
|
||||
{
|
||||
byte bitStatusOld[1968];
|
||||
struct ModbusReqRead mbrq;
|
||||
word i;
|
||||
long numBitsOld;
|
||||
|
||||
sysGetVariableData("%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Data", "InputBits", bitStatusOld, numBitsOld);
|
||||
|
||||
if (numBitsOld != numBits)
|
||||
{
|
||||
sysSetVariableData("%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Data", "InputBits", bitStatus, numBits);
|
||||
if (!gQueueAck.ContainsKey(mbr.Header.TxID))
|
||||
return;
|
||||
}
|
||||
|
||||
for (i = 0; i < numBits; i++)
|
||||
memcpy_n2h(mbrq, gQueueAck[mbr.Header.TxID].Buffer);
|
||||
|
||||
switch(mbrq.Address)
|
||||
{
|
||||
if (bitStatusOld[i] != bitStatus[i])
|
||||
{
|
||||
sysSetVariableData("%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Data", "InputBits", bitStatus, numBits);
|
||||
case 0x200: // set output bits
|
||||
sysBeginVariableStructUpdate("%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Data", "OutputBits");
|
||||
for (i = 0; i < @sysvar::%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Info::OutputBits; i++)
|
||||
@sysvar::%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Data::OutputBits[i] = bitStatus[i];
|
||||
sysEndVariableStructUpdate("%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Data", "OutputBits");
|
||||
break;
|
||||
default: // set input bits
|
||||
sysBeginVariableStructUpdate("%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Data", "InputBits");
|
||||
for (i = 0; i < @sysvar::%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Info::InputBits; i++)
|
||||
@sysvar::%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Data::InputBits[i] = bitStatus[i];
|
||||
sysEndVariableStructUpdate("%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Data", "InputBits");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -137,25 +146,17 @@ void OnModbusReadRegistersSuccess(struct ModbusResReceiveRegisters mbr, word num
|
|||
|
||||
switch (mbrq.Address)
|
||||
{
|
||||
case 0x2011:
|
||||
@sysvar::%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Info::SerialCode = mbr.Data[0];
|
||||
case 0x200: // set output registers
|
||||
sysBeginVariableStructUpdate("%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Data", "OutputRegisters");
|
||||
for (i = 0; i < @sysvar::%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Info::OutputRegisters; i++)
|
||||
@sysvar::%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Data::OutputRegisters[i] = mbr.Data[i];
|
||||
sysEndVariableStructUpdate("%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Data", "OutputRegisters");
|
||||
break;
|
||||
case 0x2012:
|
||||
@sysvar::%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Info::DeviceCode = mbr.Data[0];
|
||||
break;
|
||||
case 0x2030:
|
||||
case 0x2031:
|
||||
case 0x2032:
|
||||
case 0x2033:
|
||||
for (i = 0; i < 65; i++)
|
||||
{
|
||||
if (mbr.Data[i] == 0x0000)
|
||||
return;
|
||||
ParseDeviceCode(mbr.Data[i]);
|
||||
}
|
||||
break;
|
||||
case 0x0000:
|
||||
// ///////////////////////////////////////////////////////////////sysSetVariableData("%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Data", "InputRegisters", mbr.Data, numRegs);
|
||||
case 0x000: // set output registers
|
||||
sysBeginVariableStructUpdate("%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Data", "InputRegisters");
|
||||
for (i = 0; i < @sysvar::%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Info::InputRegisters; i++)
|
||||
@sysvar::%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Data::InputRegisters[i] = mbr.Data[i];
|
||||
sysEndVariableStructUpdate("%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Data", "InputRegisters");
|
||||
break;
|
||||
default:
|
||||
// Not recognized
|
||||
|
@ -183,11 +184,6 @@ void OnModbusWriteMasksSuccess(struct ModbusResConfirmMasks mbc)
|
|||
|
||||
|
||||
// Key events -------------------------------------------------------------------------
|
||||
on key 'n' // read the configuration
|
||||
{
|
||||
setTimerCyclic(gtRead, 1, @sysvar::%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Config::Interval);
|
||||
}
|
||||
|
||||
on timer gtRead
|
||||
{
|
||||
if (@sysvar::%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Info::InputRegisters > 0)
|
||||
|
@ -198,26 +194,53 @@ on timer gtRead
|
|||
|
||||
on sysvar %BUS_TYPE%%CHANNEL%::%NODE_NAME%::Data::OutputBits
|
||||
{
|
||||
word firstBitAddr, count, i;
|
||||
byte bitStatus[1968];
|
||||
long numBytes;
|
||||
sysGetVariableData("%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Data", "OutputBits", bitStatus, numBytes);
|
||||
ModbusWriteBitsB(@sysvar::%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Info::InputRegisters * 2, @sysvar::%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Info::OutputBits, bitStatus);
|
||||
|
||||
firstBitAddr = @sysvar::%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Info::InputRegisters * 2;
|
||||
count = @sysvar::%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Info::OutputBits;
|
||||
|
||||
for (i = 0; i < count; i++)
|
||||
bitStatus[i] = @sysvar::%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Data::OutputBits[i];
|
||||
|
||||
ModbusWriteBitsB(firstBitAddr, count, bitStatus);
|
||||
}
|
||||
on sysvar %BUS_TYPE%%CHANNEL%::%NODE_NAME%::Data::OutputRegisters
|
||||
{
|
||||
/******************************************************word regValues[1968];
|
||||
long numRegs;
|
||||
sysGetVariableData("%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Data", "OutputBits", regValues, numRegs);
|
||||
ModbusWriteRegisters(0, numRegs, regValues);*/
|
||||
word count, i;
|
||||
word regValues[123];
|
||||
|
||||
count = @sysvar::%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Info::OutputRegisters;
|
||||
|
||||
for (i = 0; i < count; i++)
|
||||
regValues[i] = @sysvar::%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Data::OutputRegisters[i];
|
||||
|
||||
ModbusWriteRegisters(0x000, count, regValues);
|
||||
}
|
||||
|
||||
on sysvar %BUS_TYPE%%CHANNEL%::%NODE_NAME%::Config::Interval
|
||||
{
|
||||
if (@this <= 0)
|
||||
gtRead.Cancel();
|
||||
else
|
||||
setTimerCyclic(gtRead, @this);
|
||||
}
|
||||
|
||||
on key '+'
|
||||
{
|
||||
byte bla[16] = {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
|
||||
sysSetVariableData("%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Data", "OutputBits", bla, 16);
|
||||
word i;
|
||||
|
||||
sysBeginVariableStructUpdate("%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Data", "OutputBits");
|
||||
for (i = 0; i < @sysvar::%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Info::OutputBits; i++)
|
||||
@sysvar::%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Data::OutputBits[i] = 1;
|
||||
sysEndVariableStructUpdate("%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Data", "OutputBits");
|
||||
}
|
||||
on key '-'
|
||||
{
|
||||
byte bla[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
|
||||
sysSetVariableData("%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Data", "OutputBits", bla, 16);
|
||||
word i;
|
||||
|
||||
sysBeginVariableStructUpdate("%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Data", "OutputBits");
|
||||
for (i = 0; i < @sysvar::%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Info::OutputBits; i++)
|
||||
@sysvar::%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Data::OutputBits[i] = 0;
|
||||
sysEndVariableStructUpdate("%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Data", "OutputBits");
|
||||
}
|
|
@ -1,29 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<systemvariables version="4">
|
||||
<namespace name="" comment="">
|
||||
<namespace name="Ethernet1" comment="Subnet: 192.168.1.">
|
||||
<namespace name="Client_2" comment="Server with ip address '192.168.1.2'">
|
||||
<namespace name="Config" comment="Configuration section for this server">
|
||||
<variable anlyzLocal="2" readOnly="false" valueSequence="false" unit="" name="IP" comment="The IP address of this server" bitcount="8" isSigned="true" encoding="65001" type="string" startValue="192.168.1.2" />
|
||||
<variable anlyzLocal="2" readOnly="false" valueSequence="false" unit="ms" name="Interval" comment="The interval with which the device will be queried" bitcount="32" isSigned="true" encoding="65001" type="int" startValue="100" minValue="10" minValuePhys="10" maxValue="10000" maxValuePhys="10000" />
|
||||
</namespace>
|
||||
<namespace name="Info" comment="Some information about the device">
|
||||
<variable anlyzLocal="2" readOnly="false" valueSequence="false" unit="" name="InputRegisters" comment="Number of input registers" bitcount="32" isSigned="true" encoding="65001" type="int" startValue="0" minValue="0" minValuePhys="0" maxValue="123" maxValuePhys="123" />
|
||||
<variable anlyzLocal="2" readOnly="false" valueSequence="false" unit="" name="Modules" comment="The type and number of inputs of modules that are connected to the server" bitcount="8" isSigned="true" encoding="65001" type="string" />
|
||||
<variable anlyzLocal="2" readOnly="false" valueSequence="false" unit="" name="SerialCode" comment="The serial code of the server" bitcount="32" isSigned="true" encoding="65001" type="int" startValue="0" minValue="1" minValuePhys="1" maxValue="10000" maxValuePhys="10000" />
|
||||
<variable anlyzLocal="2" readOnly="false" valueSequence="false" unit="" name="DeviceCode" comment="The device code of the server" bitcount="32" isSigned="true" encoding="65001" type="int" startValue="0" minValue="1" minValuePhys="1" maxValue="10000" maxValuePhys="10000" />
|
||||
<variable anlyzLocal="2" readOnly="false" valueSequence="false" unit="" name="InputBits" comment="Number of input bits" bitcount="32" isSigned="true" encoding="65001" type="int" startValue="0" minValue="0" minValuePhys="0" maxValue="2000" maxValuePhys="2000" />
|
||||
<variable anlyzLocal="2" readOnly="false" valueSequence="false" unit="" name="OutputBits" comment="Number of output bits" bitcount="32" isSigned="true" encoding="65001" type="int" startValue="0" minValue="0" minValuePhys="0" maxValue="2000" maxValuePhys="2000" />
|
||||
<variable anlyzLocal="2" readOnly="false" valueSequence="false" unit="" name="OutputRegisters" comment="Number of output registers" bitcount="32" isSigned="true" encoding="65001" type="int" startValue="0" minValue="0" minValuePhys="0" maxValue="123" maxValuePhys="123" />
|
||||
</namespace>
|
||||
<namespace name="Data" comment="The actual process image">
|
||||
<variable anlyzLocal="2" readOnly="false" valueSequence="false" unit="" name="InputRegisters" comment="The values of the input registers" bitcount="32" isSigned="true" encoding="65001" type="intarray" arrayLength="1" />
|
||||
<variable anlyzLocal="2" readOnly="false" valueSequence="false" unit="" name="InputBits" comment="The state of the input bits" bitcount="32" isSigned="true" encoding="65001" type="intarray" arrayLength="2" />
|
||||
<variable anlyzLocal="2" readOnly="false" valueSequence="false" unit="" name="OutputBits" comment="The state of the output bits. Write here and the values will be sent to the device" bitcount="32" isSigned="true" encoding="65001" type="intarray" arrayLength="16" />
|
||||
<variable anlyzLocal="2" readOnly="false" valueSequence="false" unit="" name="OutputRegisters" comment="The values of the output registers. Write here and the values will be sent to the device" bitcount="32" isSigned="true" encoding="65001" type="intarray" arrayLength="1" />
|
||||
</namespace>
|
||||
</namespace>
|
||||
</namespace>
|
||||
<namespace name="Config" comment="">
|
||||
<namespace name="Modbus" comment="">
|
||||
<variable anlyzLocal="2" readOnly="false" valueSequence="false" unit="ms" name="RequestTimeout" comment="The maximum duration for a Modbus-UDP/-TCP request in milliseconds. After timeout a retransmission may be started (see MaxRetransmissionCount). Use `ping` to get the maximum latency to a device, double it and add 2-3 ms for processing." bitcount="32" isSigned="true" encoding="65001" type="int" startValue="5" minValue="1" minValuePhys="1" maxValue="1000" maxValuePhys="1000" />
|
||||
|
@ -34,5 +11,28 @@
|
|||
<variable anlyzLocal="2" readOnly="false" valueSequence="false" unit="" name="AdapterIndex" comment="Index of network interface to use" bitcount="32" isSigned="true" encoding="65001" type="int" startValue="2" minValue="1" minValuePhys="1" maxValue="20" maxValuePhys="20" />
|
||||
</namespace>
|
||||
</namespace>
|
||||
<namespace name="Ethernet1" comment="Subnet: 192.168.1.">
|
||||
<namespace name="Client_2" comment="Server with ip address '192.168.1.2'">
|
||||
<namespace name="Config" comment="Configuration section for this server">
|
||||
<variable anlyzLocal="2" readOnly="false" valueSequence="false" unit="" name="IP" comment="The IP address of this server" bitcount="8" isSigned="true" encoding="65001" type="string" startValue="192.168.1.2" />
|
||||
<variable anlyzLocal="2" readOnly="false" valueSequence="false" unit="ms" name="Interval" comment="The interval with which the device will be queried" bitcount="32" isSigned="true" encoding="65001" type="int" startValue="100" minValue="10" minValuePhys="10" maxValue="10000" maxValuePhys="10000" />
|
||||
</namespace>
|
||||
<namespace name="Info" comment="Some information about the device">
|
||||
<variable anlyzLocal="2" readOnly="true" valueSequence="false" unit="" name="SerialCode" comment="The serial code of the server" bitcount="32" isSigned="true" encoding="65001" type="int" startValue="750" minValue="1" minValuePhys="1" maxValue="10000" maxValuePhys="10000" />
|
||||
<variable anlyzLocal="2" readOnly="true" valueSequence="false" unit="" name="DeviceCode" comment="The device code of the server" bitcount="32" isSigned="true" encoding="65001" type="int" startValue="881" minValue="1" minValuePhys="1" maxValue="10000" maxValuePhys="10000" />
|
||||
<variable anlyzLocal="2" readOnly="true" valueSequence="false" unit="" name="Modules" comment="The type and number of inputs of modules that are connected to the server" bitcount="8" isSigned="true" encoding="65001" type="string" startValue="DI2," />
|
||||
<variable anlyzLocal="2" readOnly="true" valueSequence="false" unit="" name="InputRegisters" comment="Number of input registers" bitcount="32" isSigned="true" encoding="65001" type="int" startValue="0" minValue="0" minValuePhys="0" maxValue="123" maxValuePhys="123" />
|
||||
<variable anlyzLocal="2" readOnly="true" valueSequence="false" unit="" name="InputBits" comment="Number of input bits" bitcount="32" isSigned="true" encoding="65001" type="int" startValue="2" minValue="0" minValuePhys="0" maxValue="2000" maxValuePhys="2000" />
|
||||
<variable anlyzLocal="2" readOnly="true" valueSequence="false" unit="" name="OutputRegisters" comment="Number of output registers" bitcount="32" isSigned="true" encoding="65001" type="int" startValue="0" minValue="0" minValuePhys="0" maxValue="123" maxValuePhys="123" />
|
||||
<variable anlyzLocal="2" readOnly="true" valueSequence="false" unit="" name="OutputBits" comment="Number of output bits" bitcount="32" isSigned="true" encoding="65001" type="int" startValue="0" minValue="0" minValuePhys="0" maxValue="2000" maxValuePhys="2000" />
|
||||
</namespace>
|
||||
<namespace name="Data" comment="The actual process image">
|
||||
<variable anlyzLocal="2" readOnly="false" valueSequence="false" unit="" name="InputRegisters" comment="The values of the input registers" bitcount="32" isSigned="true" encoding="65001" type="intarray" arrayLength="0" />
|
||||
<variable anlyzLocal="2" readOnly="false" valueSequence="false" unit="" name="InputBits" comment="The state of the input bits" bitcount="32" isSigned="true" encoding="65001" type="intarray" arrayLength="2" />
|
||||
<variable anlyzLocal="2" readOnly="false" valueSequence="false" unit="" name="OutputRegisters" comment="The values of the output registers. Write here and the values will be sent to the device" bitcount="32" isSigned="true" encoding="65001" type="intarray" arrayLength="0" />
|
||||
<variable anlyzLocal="2" readOnly="false" valueSequence="false" unit="" name="OutputBits" comment="The state of the output bits. Write here and the values will be sent to the device" bitcount="32" isSigned="true" encoding="65001" type="intarray" arrayLength="0" />
|
||||
</namespace>
|
||||
</namespace>
|
||||
</namespace>
|
||||
</namespace>
|
||||
</systemvariables>
|
||||
</systemvariables>
|
||||
|
|
|
@ -455,6 +455,7 @@ void OnModbusReceiveConfirmRegistersException(struct ModbusApHeader mbap, enum M
|
|||
/// <-OnModbusReceive>
|
||||
void OnModbusReceive(dword socket, long result, dword address, dword port, byte buffer[], dword size)
|
||||
{
|
||||
//write("OnModbusReceive: size = %d", size);
|
||||
if (result == 0)
|
||||
{
|
||||
if (size == 0)
|
||||
|
@ -540,6 +541,7 @@ void OnModbusReceive2OnePacket(byte buffer[], int offset, struct ModbusApHeader
|
|||
if (!gQueueSent.ContainsKey(mbap.TxID)) // We don't wait for this message!
|
||||
return;
|
||||
|
||||
//write("Received TxID: %d", mbap.TxID);
|
||||
memcpy(gQueueAck[mbap.TxID], gQueueSent[mbap.TxID]);
|
||||
gQueueSent.Remove(mbap.TxID);
|
||||
|
||||
|
@ -679,7 +681,7 @@ on timer gtRobin
|
|||
struct ModbusApHeader mbap;
|
||||
enum ModbusRequestError reqError;
|
||||
|
||||
//writeLineEx(0, 1, "Queue Sent: %d, Queue Pending: %d, Queue Ack: %d", gQueueSent.Size(), gQueuePending.Size(), gQueueAck.Size());
|
||||
///writeLineEx(0, 1, "Queue Sent: %d, Queue Pending: %d, Queue Ack: %d", gQueueSent.Size(), gQueuePending.Size(), gQueueAck.Size());
|
||||
|
||||
// First: check timeouts = packets that were sent in previous run and not removed by response
|
||||
for (long TxID : gQueueSent)
|
||||
|
|
|
@ -1,17 +1,25 @@
|
|||
/*@!Encoding:1252*/
|
||||
variables
|
||||
{
|
||||
struct deviceIOs
|
||||
{
|
||||
byte InputRegisters;
|
||||
word InputBits;
|
||||
byte OutputRegisters;
|
||||
word OutputBits;
|
||||
char Modules[1024];
|
||||
};
|
||||
}
|
||||
void SysvarInit()
|
||||
{
|
||||
sysSetVariableString("%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Info", "Modules", "");
|
||||
}
|
||||
|
||||
void ParseDeviceCode(word dev)
|
||||
void ParseDeviceCode(word dev, struct deviceIOs dios)
|
||||
{
|
||||
byte input;
|
||||
byte numChannels;
|
||||
char modules[1024];
|
||||
char module[10];
|
||||
|
||||
sysGetVariableString("%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Info", "Modules", modules, elCount(modules));
|
||||
|
||||
if (dev & 0x8000) // Digital Module
|
||||
{
|
||||
|
@ -21,13 +29,13 @@ void ParseDeviceCode(word dev)
|
|||
{
|
||||
input = 1;
|
||||
strncpy(module, "DI%d,", elCount(module));
|
||||
@sysvar::%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Info::InputBits += numChannels;
|
||||
dios.InputBits += numChannels;
|
||||
}
|
||||
else if (dev & 0x0002) // Output Module
|
||||
{
|
||||
input = 0;
|
||||
strncpy(module, "DO%d,", elCount(module));
|
||||
@sysvar::%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Info::OutputBits += numChannels;
|
||||
dios.OutputBits += numChannels;
|
||||
}
|
||||
else // blööd
|
||||
{
|
||||
|
@ -52,17 +60,15 @@ void ParseDeviceCode(word dev)
|
|||
if (input)
|
||||
{
|
||||
strncpy(module, "AI%d,", elCount(module));
|
||||
@sysvar::%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Info::InputRegisters += numChannels;
|
||||
dios.InputRegisters += numChannels;
|
||||
}
|
||||
else
|
||||
{
|
||||
strncpy(module, "AO%d,", elCount(module));
|
||||
@sysvar::%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Info::OutputRegisters += numChannels;
|
||||
dios.OutputRegisters += numChannels;
|
||||
}
|
||||
}
|
||||
|
||||
snprintf(module, elCount(module), module, numChannels);
|
||||
strncat(modules, module, elCount(modules));
|
||||
sysSetVariableString("%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Info", "Modules", modules);
|
||||
writeLineEx(0, 1, "<%NODE_NAME%> 0x%X -> %s", dev, module);
|
||||
strncat(dios.Modules, module, elCount(dios.Modules));
|
||||
}
|
|
@ -1,17 +1,17 @@
|
|||
;CANoe Version |4|7|1|42337 modbus
|
||||
;CANoe Version |4|7|1|42340 modbus
|
||||
Version: 8.2.40 Build 40
|
||||
32 PRO
|
||||
10
|
||||
APPDIR Vector.CANoe.SignalGenerators.DLL
|
||||
Vector.CANoe.SignalGenerators, Version=8.2.40.0, Culture=neutral, PublicKeyToken=null
|
||||
Vector.CANoe.SignalGenerators.ComponentWrapper
|
||||
1
|
||||
1.0.1
|
||||
APPDIR Vector.CANoe.Debugger.DLL
|
||||
Vector.CANoe.Debugger, Version=8.2.40.0, Culture=neutral, PublicKeyToken=null
|
||||
Vector.CANoe.Debugger.DebuggerComponent
|
||||
2
|
||||
1
|
||||
1.0.0
|
||||
APPDIR Vector.CANoe.SignalGenerators.DLL
|
||||
Vector.CANoe.SignalGenerators, Version=8.2.40.0, Culture=neutral, PublicKeyToken=null
|
||||
Vector.CANoe.SignalGenerators.ComponentWrapper
|
||||
2
|
||||
1.0.1
|
||||
VGlobalConfiguration 1 Begin_Of_Object
|
||||
17
|
||||
VGlobalParameters 2 Begin_Of_Object
|
||||
|
@ -67,6 +67,7 @@ DialogBegin
|
|||
1
|
||||
285 569 816 1103
|
||||
SymbolExplorerDialogBegin
|
||||
|
||||
1
|
||||
HistoryBegin
|
||||
1 0
|
||||
|
@ -1379,37 +1380,9 @@ Grafik-Fenster
|
|||
237
|
||||
0
|
||||
0
|
||||
1
|
||||
0
|
||||
0
|
||||
0
|
||||
-11
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
400
|
||||
0
|
||||
Tahoma
|
||||
0
|
||||
1
|
||||
0
|
||||
0
|
||||
0
|
||||
-11
|
||||
0
|
||||
0
|
||||
0
|
||||
34
|
||||
0
|
||||
0
|
||||
0
|
||||
400
|
||||
0
|
||||
Tahoma
|
||||
0
|
||||
1
|
||||
1
|
||||
|
@ -3910,7 +3883,7 @@ End_Of_Object VBoxRoot 15
|
|||
End_Of_Object VDataBox 14
|
||||
1
|
||||
6
|
||||
7
|
||||
14
|
||||
VSysVarObject 14 Begin_Of_Object
|
||||
1
|
||||
VHostSignal 15 Begin_Of_Object
|
||||
|
@ -4163,7 +4136,259 @@ End_Of_Object VSysVarObject 14
|
|||
1 8 2 0 0 16777215
|
||||
-1000 1000 -1000 0
|
||||
[End_of_Item]
|
||||
20 308 16 169 75 75 50 100 100 100 1
|
||||
VSysVarObject 14 Begin_Of_Object
|
||||
1
|
||||
VHostSignal 15 Begin_Of_Object
|
||||
2
|
||||
3
|
||||
Ethernet1::Client_2::Data::OutputBits
|
||||
0
|
||||
End_Of_Object VHostSignal 15
|
||||
14
|
||||
ValueObjectConfiguration::VConfiguredSysVar 15 Begin_Of_Object
|
||||
1
|
||||
ValueObjectConfiguration::Detail::VConfiguredValueObjectBase<class_ValueObjectConfiguration::IConfiguredSysVar> 16 Begin_Of_Object
|
||||
1
|
||||
ValueObjectConfiguration::Detail::AbstractConfiguredValueObject 17 Begin_Of_Object
|
||||
1
|
||||
VConfigSysVar 18 Begin_Of_Object
|
||||
1
|
||||
VConfigEvent 19 Begin_Of_Object
|
||||
1
|
||||
End_Of_Object VConfigEvent 19
|
||||
Ethernet1::Client_2::Data
|
||||
OutputBits
|
||||
End_Of_Object VConfigSysVar 18
|
||||
End_Of_Object ValueObjectConfiguration::Detail::AbstractConfiguredValueObject 17
|
||||
End_Of_Object ValueObjectConfiguration::Detail::VConfiguredValueObjectBase<class_ValueObjectConfiguration::IConfiguredSysVar> 16
|
||||
-1
|
||||
2
|
||||
End_Of_Object ValueObjectConfiguration::VConfiguredSysVar 15
|
||||
|
||||
End_Of_Serialized_Data 14
|
||||
End_Of_Object VSysVarObject 14
|
||||
[Begin_of_Item]
|
||||
2 11
|
||||
1 8 2 0 0 16777215
|
||||
3.18299e-313 1 3.18299e-313 0
|
||||
[End_of_Item]
|
||||
VSysVarObject 14 Begin_Of_Object
|
||||
1
|
||||
VHostSignal 15 Begin_Of_Object
|
||||
2
|
||||
3
|
||||
Ethernet1::Client_2::Data::InputBits
|
||||
0
|
||||
End_Of_Object VHostSignal 15
|
||||
14
|
||||
ValueObjectConfiguration::VConfiguredSysVar 15 Begin_Of_Object
|
||||
1
|
||||
ValueObjectConfiguration::Detail::VConfiguredValueObjectBase<class_ValueObjectConfiguration::IConfiguredSysVar> 16 Begin_Of_Object
|
||||
1
|
||||
ValueObjectConfiguration::Detail::AbstractConfiguredValueObject 17 Begin_Of_Object
|
||||
1
|
||||
VConfigSysVar 18 Begin_Of_Object
|
||||
1
|
||||
VConfigEvent 19 Begin_Of_Object
|
||||
1
|
||||
End_Of_Object VConfigEvent 19
|
||||
Ethernet1::Client_2::Data
|
||||
InputBits
|
||||
End_Of_Object VConfigSysVar 18
|
||||
End_Of_Object ValueObjectConfiguration::Detail::AbstractConfiguredValueObject 17
|
||||
End_Of_Object ValueObjectConfiguration::Detail::VConfiguredValueObjectBase<class_ValueObjectConfiguration::IConfiguredSysVar> 16
|
||||
-1
|
||||
2
|
||||
End_Of_Object ValueObjectConfiguration::VConfiguredSysVar 15
|
||||
|
||||
End_Of_Serialized_Data 14
|
||||
End_Of_Object VSysVarObject 14
|
||||
[Begin_of_Item]
|
||||
2 12
|
||||
1 8 2 0 0 16777215
|
||||
3.18299e-313 1 3.18299e-313 0
|
||||
[End_of_Item]
|
||||
VSysVarObject 14 Begin_Of_Object
|
||||
1
|
||||
VHostSignal 15 Begin_Of_Object
|
||||
2
|
||||
3
|
||||
RxBitRateAvg
|
||||
0
|
||||
End_Of_Object VHostSignal 15
|
||||
14
|
||||
ValueObjectConfiguration::VConfiguredSysVar 15 Begin_Of_Object
|
||||
1
|
||||
ValueObjectConfiguration::Detail::VConfiguredValueObjectBase<class_ValueObjectConfiguration::IConfiguredSysVar> 16 Begin_Of_Object
|
||||
1
|
||||
ValueObjectConfiguration::Detail::AbstractConfiguredValueObject 17 Begin_Of_Object
|
||||
1
|
||||
VConfigSysVar 18 Begin_Of_Object
|
||||
1
|
||||
VConfigEvent 19 Begin_Of_Object
|
||||
1
|
||||
End_Of_Object VConfigEvent 19
|
||||
_Statistics::Eth1
|
||||
RxBitRateAvg
|
||||
End_Of_Object VConfigSysVar 18
|
||||
End_Of_Object ValueObjectConfiguration::Detail::AbstractConfiguredValueObject 17
|
||||
End_Of_Object ValueObjectConfiguration::Detail::VConfiguredValueObjectBase<class_ValueObjectConfiguration::IConfiguredSysVar> 16
|
||||
-1
|
||||
2
|
||||
End_Of_Object ValueObjectConfiguration::VConfiguredSysVar 15
|
||||
|
||||
End_Of_Serialized_Data 14
|
||||
End_Of_Object VSysVarObject 14
|
||||
[Begin_of_Item]
|
||||
2 13
|
||||
1 1 2 0 0 16777215
|
||||
0 1000 0 0
|
||||
[End_of_Item]
|
||||
VSysVarObject 14 Begin_Of_Object
|
||||
1
|
||||
VHostSignal 15 Begin_Of_Object
|
||||
2
|
||||
3
|
||||
TxPacketRateAvg
|
||||
0
|
||||
End_Of_Object VHostSignal 15
|
||||
14
|
||||
ValueObjectConfiguration::VConfiguredSysVar 15 Begin_Of_Object
|
||||
1
|
||||
ValueObjectConfiguration::Detail::VConfiguredValueObjectBase<class_ValueObjectConfiguration::IConfiguredSysVar> 16 Begin_Of_Object
|
||||
1
|
||||
ValueObjectConfiguration::Detail::AbstractConfiguredValueObject 17 Begin_Of_Object
|
||||
1
|
||||
VConfigSysVar 18 Begin_Of_Object
|
||||
1
|
||||
VConfigEvent 19 Begin_Of_Object
|
||||
1
|
||||
End_Of_Object VConfigEvent 19
|
||||
_Statistics::Eth1
|
||||
TxPacketRateAvg
|
||||
End_Of_Object VConfigSysVar 18
|
||||
End_Of_Object ValueObjectConfiguration::Detail::AbstractConfiguredValueObject 17
|
||||
End_Of_Object ValueObjectConfiguration::Detail::VConfiguredValueObjectBase<class_ValueObjectConfiguration::IConfiguredSysVar> 16
|
||||
-1
|
||||
2
|
||||
End_Of_Object ValueObjectConfiguration::VConfiguredSysVar 15
|
||||
|
||||
End_Of_Serialized_Data 14
|
||||
End_Of_Object VSysVarObject 14
|
||||
[Begin_of_Item]
|
||||
2 10
|
||||
1 1 2 0 0 16777215
|
||||
0 1000 0 0
|
||||
[End_of_Item]
|
||||
VSysVarObject 14 Begin_Of_Object
|
||||
1
|
||||
VHostSignal 15 Begin_Of_Object
|
||||
2
|
||||
3
|
||||
TxBitRateAvg
|
||||
0
|
||||
End_Of_Object VHostSignal 15
|
||||
14
|
||||
ValueObjectConfiguration::VConfiguredSysVar 15 Begin_Of_Object
|
||||
1
|
||||
ValueObjectConfiguration::Detail::VConfiguredValueObjectBase<class_ValueObjectConfiguration::IConfiguredSysVar> 16 Begin_Of_Object
|
||||
1
|
||||
ValueObjectConfiguration::Detail::AbstractConfiguredValueObject 17 Begin_Of_Object
|
||||
1
|
||||
VConfigSysVar 18 Begin_Of_Object
|
||||
1
|
||||
VConfigEvent 19 Begin_Of_Object
|
||||
1
|
||||
End_Of_Object VConfigEvent 19
|
||||
_Statistics::Eth1
|
||||
TxBitRateAvg
|
||||
End_Of_Object VConfigSysVar 18
|
||||
End_Of_Object ValueObjectConfiguration::Detail::AbstractConfiguredValueObject 17
|
||||
End_Of_Object ValueObjectConfiguration::Detail::VConfiguredValueObjectBase<class_ValueObjectConfiguration::IConfiguredSysVar> 16
|
||||
-1
|
||||
2
|
||||
End_Of_Object ValueObjectConfiguration::VConfiguredSysVar 15
|
||||
|
||||
End_Of_Serialized_Data 14
|
||||
End_Of_Object VSysVarObject 14
|
||||
[Begin_of_Item]
|
||||
2 9
|
||||
1 1 2 0 0 16777215
|
||||
0 1000 0 0
|
||||
[End_of_Item]
|
||||
VSysVarObject 14 Begin_Of_Object
|
||||
1
|
||||
VHostSignal 15 Begin_Of_Object
|
||||
2
|
||||
3
|
||||
RxPacketRateAvg
|
||||
0
|
||||
End_Of_Object VHostSignal 15
|
||||
14
|
||||
ValueObjectConfiguration::VConfiguredSysVar 15 Begin_Of_Object
|
||||
1
|
||||
ValueObjectConfiguration::Detail::VConfiguredValueObjectBase<class_ValueObjectConfiguration::IConfiguredSysVar> 16 Begin_Of_Object
|
||||
1
|
||||
ValueObjectConfiguration::Detail::AbstractConfiguredValueObject 17 Begin_Of_Object
|
||||
1
|
||||
VConfigSysVar 18 Begin_Of_Object
|
||||
1
|
||||
VConfigEvent 19 Begin_Of_Object
|
||||
1
|
||||
End_Of_Object VConfigEvent 19
|
||||
_Statistics::Eth1
|
||||
RxPacketRateAvg
|
||||
End_Of_Object VConfigSysVar 18
|
||||
End_Of_Object ValueObjectConfiguration::Detail::AbstractConfiguredValueObject 17
|
||||
End_Of_Object ValueObjectConfiguration::Detail::VConfiguredValueObjectBase<class_ValueObjectConfiguration::IConfiguredSysVar> 16
|
||||
-1
|
||||
2
|
||||
End_Of_Object ValueObjectConfiguration::VConfiguredSysVar 15
|
||||
|
||||
End_Of_Serialized_Data 14
|
||||
End_Of_Object VSysVarObject 14
|
||||
[Begin_of_Item]
|
||||
2 14
|
||||
1 1 2 0 0 16777215
|
||||
0 1000 0 0
|
||||
[End_of_Item]
|
||||
VSysVarObject 14 Begin_Of_Object
|
||||
1
|
||||
VHostSignal 15 Begin_Of_Object
|
||||
2
|
||||
3
|
||||
Ethernet1::Client_2::Config::Interval
|
||||
0
|
||||
End_Of_Object VHostSignal 15
|
||||
14
|
||||
ValueObjectConfiguration::VConfiguredSysVar 15 Begin_Of_Object
|
||||
1
|
||||
ValueObjectConfiguration::Detail::VConfiguredValueObjectBase<class_ValueObjectConfiguration::IConfiguredSysVar> 16 Begin_Of_Object
|
||||
1
|
||||
ValueObjectConfiguration::Detail::AbstractConfiguredValueObject 17 Begin_Of_Object
|
||||
1
|
||||
VConfigSysVar 18 Begin_Of_Object
|
||||
1
|
||||
VConfigEvent 19 Begin_Of_Object
|
||||
1
|
||||
End_Of_Object VConfigEvent 19
|
||||
Ethernet1::Client_2::Config
|
||||
Interval
|
||||
End_Of_Object VConfigSysVar 18
|
||||
End_Of_Object ValueObjectConfiguration::Detail::AbstractConfiguredValueObject 17
|
||||
End_Of_Object ValueObjectConfiguration::Detail::VConfiguredValueObjectBase<class_ValueObjectConfiguration::IConfiguredSysVar> 16
|
||||
-1
|
||||
2
|
||||
End_Of_Object ValueObjectConfiguration::VConfiguredSysVar 15
|
||||
|
||||
End_Of_Serialized_Data 14
|
||||
End_Of_Object VSysVarObject 14
|
||||
[Begin_of_Item]
|
||||
2 8
|
||||
1 1 2 0 0 16777215
|
||||
10 10000 10 0
|
||||
[End_of_Item]
|
||||
34 220 16 151 75 75 44 156 191 100 1
|
||||
35 35
|
||||
30
|
||||
1 1 0 1 0 0 1 1 1 0 1
|
||||
|
@ -4369,7 +4594,7 @@ End_Of_Object VGrMnBox 3
|
|||
VDOLocalInfoStruct 3 Begin_Of_Object
|
||||
3
|
||||
1
|
||||
171
|
||||
175
|
||||
VDAOBus 4 Begin_Of_Object
|
||||
1
|
||||
1
|
||||
|
@ -4777,7 +5002,7 @@ VSimulinkModelViewerConfiguration 7 Begin_Of_Object
|
|||
End_Of_Object VSimulinkModelViewerConfiguration 7
|
||||
1
|
||||
0
|
||||
713110817
|
||||
3058661840
|
||||
0
|
||||
NodeSignalPanelBustypeCount 0
|
||||
End_Of_Object VSimulationNode 6
|
||||
|
@ -4810,7 +5035,7 @@ VBoxRoot 9 Begin_Of_Object
|
|||
1
|
||||
3
|
||||
1 1 2 3 -1 -1 -8 -30 114 0 1146 491
|
||||
Ethernet Packet Builder
|
||||
|
||||
1
|
||||
|
||||
MDI_DOCK_INFO_END
|
||||
|
@ -4887,8 +5112,106 @@ EOF_MBSSDATA
|
|||
1
|
||||
0 0
|
||||
<IPPlugIn.PacketBuilder DefaultBusProtocolId="256" DefaultDestMacIdSelection="107" DefaultDestinationIPAddress="192 . 168 . 1 . 100" DefaultDestinationIPv6Address="0:0:0:0:0:0:0:0" DefaultDestinationMacId="FF:FF:FF:FF:FF:FF" DefaultDestinationPort="502" DefaultSourceIPAddress="192 . 168 . 1 . 10" DefaultSourceIPv6Address="0:0:0:0:0:0:0:0" DefaultSourceMacId="02:00:4C:4F:4F:50" DefaultSourcePort="2000" DefaultSrcMacIdSelection="1" Name="Ethernet Packet Builder">
|
||||
<IPPlugIn.VPersistentFrameWrapper AssignedChannelId="Eth 1" DestMacIdConfStateSel="111" FrameDescription="Read Coils 1-512" FrameIsValid="1" InitialPacketType="4" PDBData="5 0 1651797619 1 9 1 1651797619 1 5 1 1651797619 1 4 0 1651797619 1 11 0 1651797619 1 8 0 1651797619 1 3 0 1651797619 1 10 1 1651797619 1 3 1 1651797619 1 " RawFrameData=" 0-30-de- 7-9a-fd- 0-19-db-cb-83-dd- 8- 0-45- 0- 0-34- 0- 0- 0- 0-40- 6-f7-6f-c0-a8- 1- 1-c0-a8- 1- 3-d5-66- 1-f6- 0- 0- 0- 0- 0- 0- 0- 0-50- 0-fa-15-59- 9- 0- 0- 0- 2- 0- 0- 0- 6- 0- 1- 0- 0- 1-ff-" RawFrameLength="66" SrcMacIdConfStateSel="105" WlanAddr1MacIdConfStateSel="111" WlanAddr2MacIdConfStateSel="111" WlanAddr3MacIdConfStateSel="111" WlanAddr4MacIdConfStateSel="111"/>
|
||||
<IPPlugIn.VPersistentFrameWrapper AssignedChannelId="Eth 1" DestMacIdConfStateSel="111" FrameDescription="" FrameIsValid="1" InitialPacketType="4" PDBData="3 0 1651797619 1 3 1 1651797619 1 10 1 1651797619 1 8 0 1651797619 1 11 0 1651797619 1 4 0 1651797619 1 5 0 1651797619 1 5 1 1651797619 1 9 1 1651797619 1 " RawFrameData=" 0-30-de- 7-9a-fd- 0-19-db-cb-83-dd- 8- 0-45- 0- 0-34- 1-6e-40- 0-80- 6-76- 1-c0-a8- 1- 1-c0-a8- 1- 3-d5-69- 1-f6-18-f0-66-10-dc-70-88-e2-50-18-fa-f0-73-bf- 0- 0- 0- 2- 0- 0- 0- 6- 0- 1- 0- 0- 1-ff-" RawFrameLength="66" SrcMacIdConfStateSel="111" WlanAddr1MacIdConfStateSel="111" WlanAddr2MacIdConfStateSel="111" WlanAddr3MacIdConfStateSel="111" WlanAddr4MacIdConfStateSel="111"/>
|
||||
<IPPlugIn.VPersistentFrameWrapper AssignedChannelId="Eth 1" DestMacIdConfStateSel="111" FrameDescription="Read Coils 1-512" FrameIsValid="1" InitialPacketType="4" PDBData="3 0 1651797619 1 3 1 1651797619 1 10 1 1651797619 1 8 0 1651797619 1 11 0 1651797619 1 4 0 1651797619 1 5 0 1651797619 1 5 1 1651797619 1 9 1 1651797619 1 " RawFrameData=" 0-30-de- 7-9a-fd- 0-19-db-cb-83-dd- 8- 0-45- 0- 0-34- 0- 0- 0- 0-40- 6-f7-6f-c0-a8- 1- 1-c0-a8- 1- 3-d5-66- 1-f6- 0- 0- 0- 0- 0- 0- 0- 0-50- 0-fa-15-59- 9- 0- 0- 0- 2- 0- 0- 0- 6- 0- 1- 0- 0- 1-ff-" RawFrameLength="66" SrcMacIdConfStateSel="105" WlanAddr1MacIdConfStateSel="111" WlanAddr2MacIdConfStateSel="111" WlanAddr3MacIdConfStateSel="111" WlanAddr4MacIdConfStateSel="111"/>
|
||||
<IPPlugIn.VPersistentFrameWrapper AssignedChannelId="Eth 1" DestMacIdConfStateSel="111" FrameDescription="" FrameIsValid="1" InitialPacketType="4" PDBData="5 0 1651797619 1 9 1 1651797619 1 5 1 1651797619 1 4 0 1651797619 1 11 0 1651797619 1 8 0 1651797619 1 3 0 1651797619 1 10 1 1651797619 1 3 1 1651797619 1 " RawFrameData=" 0-30-de- 7-9a-fd- 0-19-db-cb-83-dd- 8- 0-45- 0- 0-34- 1-6e-40- 0-80- 6-76- 1-c0-a8- 1- 1-c0-a8- 1- 3-d5-69- 1-f6-18-f0-66-10-dc-70-88-e2-50-18-fa-f0-73-bf- 0- 0- 0- 2- 0- 0- 0- 6- 0- 1- 0- 0- 1-ff-" RawFrameLength="66" SrcMacIdConfStateSel="111" WlanAddr1MacIdConfStateSel="111" WlanAddr2MacIdConfStateSel="111" WlanAddr3MacIdConfStateSel="111" WlanAddr4MacIdConfStateSel="111"/>
|
||||
<IPPlugIn.SE id="102" intVal="0" key="1919247220"/>
|
||||
<IPPlugIn.SE id="102" index="1" intVal="466" key="1919247220"/>
|
||||
<IPPlugIn.SE id="102" index="2" intVal="0" key="1919247220"/>
|
||||
<IPPlugIn.SE id="102" index="3" intVal="1188" key="1919247220"/>
|
||||
<IPPlugIn.SE id="102" intVal="1" key="1702391908"/>
|
||||
<IPPlugIn.SE id="102" intVal="199" key="1936292453"/>
|
||||
<IPPlugIn.SE id="102" intVal="437" key="1920231791"/>
|
||||
<IPPlugIn.SE id="1004" intVal="1145393987" key="1952540511"/>
|
||||
<IPPlugIn.SE id="1004" intVal="1" key="1986622303"/>
|
||||
<IPPlugIn.SE id="1004" intVal="218" key="2003072104"/>
|
||||
<IPPlugIn.SE id="1004" index="1" intVal="1397708114" key="1952540511"/>
|
||||
<IPPlugIn.SE id="1004" index="1" intVal="1" key="1986622303"/>
|
||||
<IPPlugIn.SE id="1004" index="1" intVal="156" key="2003072104"/>
|
||||
<IPPlugIn.SE id="1004" index="2" intVal="1145394004" key="1952540511"/>
|
||||
<IPPlugIn.SE id="1004" index="2" intVal="1" key="1986622303"/>
|
||||
<IPPlugIn.SE id="1004" index="2" intVal="156" key="2003072104"/>
|
||||
<IPPlugIn.SE id="1004" index="3" intVal="1347571540" key="1952540511"/>
|
||||
<IPPlugIn.SE id="1004" index="3" intVal="1" key="1986622303"/>
|
||||
<IPPlugIn.SE id="1005" index="18" intVal="0" key="1633907830"/>
|
||||
<IPPlugIn.SE id="1005" index="19" intVal="0" key="1633907830"/>
|
||||
<IPPlugIn.SE id="1005" index="20" intVal="1" key="1633907830"/>
|
||||
<IPPlugIn.SE id="1005" index="20" intVal="1" key="1702391908"/>
|
||||
<IPPlugIn.SE id="1005" index="19" intVal="1" key="1702391908"/>
|
||||
<IPPlugIn.SE id="1005" index="18" intVal="1" key="1702391908"/>
|
||||
<IPPlugIn.SE id="1004" index="3" intVal="125" key="2003072104"/>
|
||||
<IPPlugIn.SE id="1004" index="4" intVal="1397316165" key="1952540511"/>
|
||||
<IPPlugIn.SE id="1004" index="4" intVal="1" key="1986622303"/>
|
||||
<IPPlugIn.SE id="1004" index="4" intVal="108" key="2003072104"/>
|
||||
<IPPlugIn.SE id="1004" index="5" intVal="1348029508" key="1952540511"/>
|
||||
<IPPlugIn.SE id="1004" index="5" intVal="1" key="1986622303"/>
|
||||
<IPPlugIn.SE id="1004" index="5" intVal="108" key="2003072104"/>
|
||||
<IPPlugIn.SE id="1004" intVal="0" key="1886352249"/>
|
||||
<IPPlugIn.SE id="1004" intVal="0" key="1886352248"/>
|
||||
<IPPlugIn.SE id="1004" intVal="-1" key="7499639"/>
|
||||
<IPPlugIn.SE id="125" intVal="-1" key="7562604"/>
|
||||
<IPPlugIn.SE id="102" index="1" intVal="1" key="1702391908"/>
|
||||
<IPPlugIn.SE id="102" index="1" intVal="163" key="1936292453"/>
|
||||
<IPPlugIn.SE id="102" index="1" intVal="397" key="1920231791"/>
|
||||
<IPPlugIn.SE id="1005" intVal="0" key="1886352249"/>
|
||||
<IPPlugIn.SE id="1005" intVal="0" key="1886352248"/>
|
||||
<IPPlugIn.SE id="1005" intVal="1" key="1702391908"/>
|
||||
<IPPlugIn.SE id="1005" intVal="0" key="1633907830"/>
|
||||
<IPPlugIn.SE id="1005" index="1" intVal="1" key="1702391908"/>
|
||||
<IPPlugIn.SE id="1005" index="1" intVal="1" key="1633907830"/>
|
||||
<IPPlugIn.SE id="2" intVal="0" key="1702391908"/>
|
||||
<IPPlugIn.SE id="2" index="1" intVal="0" key="1702391908"/>
|
||||
<IPPlugIn.SE id="2" index="2" intVal="0" key="1702391908"/>
|
||||
<IPPlugIn.SE id="1005" index="2" intVal="1" key="1702391908"/>
|
||||
<IPPlugIn.SE id="1005" index="2" intVal="0" key="1633907830"/>
|
||||
<IPPlugIn.SE id="1005" index="3" intVal="1" key="1702391908"/>
|
||||
<IPPlugIn.SE id="1005" index="3" intVal="0" key="1633907830"/>
|
||||
<IPPlugIn.SE id="1005" index="4" intVal="1" key="1702391908"/>
|
||||
<IPPlugIn.SE id="1005" index="4" intVal="0" key="1633907830"/>
|
||||
<IPPlugIn.SE id="1005" index="5" intVal="1" key="1702391908"/>
|
||||
<IPPlugIn.SE id="1005" index="5" intVal="0" key="1633907830"/>
|
||||
<IPPlugIn.SE id="1005" index="6" intVal="1" key="1702391908"/>
|
||||
<IPPlugIn.SE id="1005" index="6" intVal="0" key="1633907830"/>
|
||||
<IPPlugIn.SE id="1005" index="7" intVal="1" key="1702391908"/>
|
||||
<IPPlugIn.SE id="1005" index="7" intVal="0" key="1633907830"/>
|
||||
<IPPlugIn.SE id="1005" index="8" intVal="1" key="1702391908"/>
|
||||
<IPPlugIn.SE id="1005" index="8" intVal="0" key="1633907830"/>
|
||||
<IPPlugIn.SE id="1005" index="9" intVal="0" key="1702391908"/>
|
||||
<IPPlugIn.SE id="1005" index="9" intVal="0" key="1633907830"/>
|
||||
<IPPlugIn.SE id="3" intVal="0" key="1702391908"/>
|
||||
<IPPlugIn.SE id="3" index="1" intVal="0" key="1702391908"/>
|
||||
<IPPlugIn.SE id="3" index="2" intVal="0" key="1702391908"/>
|
||||
<IPPlugIn.SE id="3" index="3" intVal="0" key="1702391908"/>
|
||||
<IPPlugIn.SE id="3" index="4" intVal="0" key="1702391908"/>
|
||||
<IPPlugIn.SE id="3" index="5" intVal="0" key="1702391908"/>
|
||||
<IPPlugIn.SE id="3" index="6" intVal="0" key="1702391908"/>
|
||||
<IPPlugIn.SE id="3" index="7" intVal="0" key="1702391908"/>
|
||||
<IPPlugIn.SE id="3" index="8" intVal="0" key="1702391908"/>
|
||||
<IPPlugIn.SE id="3" index="9" intVal="0" key="1702391908"/>
|
||||
<IPPlugIn.SE id="3" index="10" intVal="0" key="1702391908"/>
|
||||
<IPPlugIn.SE id="3" index="11" intVal="0" key="1702391908"/>
|
||||
<IPPlugIn.SE id="1005" index="10" intVal="1" key="1702391908"/>
|
||||
<IPPlugIn.SE id="1005" index="10" intVal="0" key="1633907830"/>
|
||||
<IPPlugIn.SE id="1005" index="11" intVal="1" key="1702391908"/>
|
||||
<IPPlugIn.SE id="1005" index="11" intVal="1" key="1633907830"/>
|
||||
<IPPlugIn.SE id="1005" index="12" intVal="1" key="1702391908"/>
|
||||
<IPPlugIn.SE id="1005" index="12" intVal="0" key="1633907830"/>
|
||||
<IPPlugIn.SE id="1005" index="13" intVal="1" key="1702391908"/>
|
||||
<IPPlugIn.SE id="1005" index="13" intVal="0" key="1633907830"/>
|
||||
<IPPlugIn.SE id="1005" index="14" intVal="0" key="1702391908"/>
|
||||
<IPPlugIn.SE id="1005" index="14" intVal="0" key="1633907830"/>
|
||||
<IPPlugIn.SE id="1005" index="15" intVal="1" key="1702391908"/>
|
||||
<IPPlugIn.SE id="1005" index="15" intVal="0" key="1633907830"/>
|
||||
<IPPlugIn.SE id="1005" index="16" intVal="1" key="1702391908"/>
|
||||
<IPPlugIn.SE id="1005" index="16" intVal="0" key="1633907830"/>
|
||||
<IPPlugIn.SE id="1005" index="17" intVal="1" key="1702391908"/>
|
||||
<IPPlugIn.SE id="1005" index="17" intVal="1" key="1633907830"/>
|
||||
<IPPlugIn.SE id="102" index="2" intVal="1" key="1702391908"/>
|
||||
<IPPlugIn.SE id="102" index="2" intVal="67" key="1936292453"/>
|
||||
<IPPlugIn.SE id="102" index="2" intVal="164" key="1920231791"/>
|
||||
<IPPlugIn.SE id="127" intVal="0" key="1651534958"/>
|
||||
<IPPlugIn.SE id="1003" intVal="0" key="1886352249"/>
|
||||
<IPPlugIn.SE id="1003" intVal="0" key="1886352248"/>
|
||||
<IPPlugIn.SE id="1003" intVal="0" key="2003072104"/>
|
||||
<IPPlugIn.SE id="4" intVal="0" key="1702391908"/>
|
||||
<IPPlugIn.SE id="4" index="1" intVal="0" key="1702391908"/>
|
||||
<IPPlugIn.SE id="4" index="2" intVal="0" key="1702391908"/>
|
||||
|
@ -4899,104 +5222,6 @@ EOF_MBSSDATA
|
|||
<IPPlugIn.SE id="4" index="7" intVal="0" key="1702391908"/>
|
||||
<IPPlugIn.SE id="4" index="8" intVal="0" key="1702391908"/>
|
||||
<IPPlugIn.SE id="4" index="9" intVal="0" key="1702391908"/>
|
||||
<IPPlugIn.SE id="1003" intVal="0" key="2003072104"/>
|
||||
<IPPlugIn.SE id="1003" intVal="0" key="1886352248"/>
|
||||
<IPPlugIn.SE id="1003" intVal="0" key="1886352249"/>
|
||||
<IPPlugIn.SE id="127" intVal="0" key="1651534958"/>
|
||||
<IPPlugIn.SE id="3" intVal="0" key="1702391908"/>
|
||||
<IPPlugIn.SE id="3" index="1" intVal="0" key="1702391908"/>
|
||||
<IPPlugIn.SE id="102" index="2" intVal="164" key="1920231791"/>
|
||||
<IPPlugIn.SE id="102" index="2" intVal="67" key="1936292453"/>
|
||||
<IPPlugIn.SE id="102" index="2" intVal="1" key="1702391908"/>
|
||||
<IPPlugIn.SE id="3" index="2" intVal="0" key="1702391908"/>
|
||||
<IPPlugIn.SE id="3" index="3" intVal="0" key="1702391908"/>
|
||||
<IPPlugIn.SE id="3" index="4" intVal="0" key="1702391908"/>
|
||||
<IPPlugIn.SE id="3" index="5" intVal="0" key="1702391908"/>
|
||||
<IPPlugIn.SE id="3" index="6" intVal="0" key="1702391908"/>
|
||||
<IPPlugIn.SE id="3" index="7" intVal="0" key="1702391908"/>
|
||||
<IPPlugIn.SE id="3" index="8" intVal="0" key="1702391908"/>
|
||||
<IPPlugIn.SE id="3" index="9" intVal="0" key="1702391908"/>
|
||||
<IPPlugIn.SE id="1005" index="10" intVal="0" key="1633907830"/>
|
||||
<IPPlugIn.SE id="1005" index="11" intVal="1" key="1633907830"/>
|
||||
<IPPlugIn.SE id="1005" index="12" intVal="0" key="1633907830"/>
|
||||
<IPPlugIn.SE id="1005" index="13" intVal="0" key="1633907830"/>
|
||||
<IPPlugIn.SE id="1005" index="14" intVal="0" key="1633907830"/>
|
||||
<IPPlugIn.SE id="1005" index="15" intVal="0" key="1633907830"/>
|
||||
<IPPlugIn.SE id="1005" index="16" intVal="0" key="1633907830"/>
|
||||
<IPPlugIn.SE id="1005" index="17" intVal="1" key="1633907830"/>
|
||||
<IPPlugIn.SE id="1005" index="17" intVal="1" key="1702391908"/>
|
||||
<IPPlugIn.SE id="1005" index="16" intVal="1" key="1702391908"/>
|
||||
<IPPlugIn.SE id="1005" index="15" intVal="1" key="1702391908"/>
|
||||
<IPPlugIn.SE id="1005" index="14" intVal="0" key="1702391908"/>
|
||||
<IPPlugIn.SE id="1005" index="13" intVal="1" key="1702391908"/>
|
||||
<IPPlugIn.SE id="1005" index="12" intVal="1" key="1702391908"/>
|
||||
<IPPlugIn.SE id="1005" index="11" intVal="1" key="1702391908"/>
|
||||
<IPPlugIn.SE id="1005" index="10" intVal="1" key="1702391908"/>
|
||||
<IPPlugIn.SE id="3" index="10" intVal="0" key="1702391908"/>
|
||||
<IPPlugIn.SE id="3" index="11" intVal="0" key="1702391908"/>
|
||||
<IPPlugIn.SE id="2" intVal="0" key="1702391908"/>
|
||||
<IPPlugIn.SE id="2" index="1" intVal="0" key="1702391908"/>
|
||||
<IPPlugIn.SE id="1005" index="2" intVal="0" key="1633907830"/>
|
||||
<IPPlugIn.SE id="1005" index="3" intVal="0" key="1633907830"/>
|
||||
<IPPlugIn.SE id="1005" index="4" intVal="0" key="1633907830"/>
|
||||
<IPPlugIn.SE id="1005" index="5" intVal="0" key="1633907830"/>
|
||||
<IPPlugIn.SE id="1005" index="6" intVal="0" key="1633907830"/>
|
||||
<IPPlugIn.SE id="1005" index="7" intVal="0" key="1633907830"/>
|
||||
<IPPlugIn.SE id="1005" index="8" intVal="0" key="1633907830"/>
|
||||
<IPPlugIn.SE id="1005" index="9" intVal="0" key="1633907830"/>
|
||||
<IPPlugIn.SE id="1005" index="9" intVal="0" key="1702391908"/>
|
||||
<IPPlugIn.SE id="1005" index="8" intVal="1" key="1702391908"/>
|
||||
<IPPlugIn.SE id="1005" index="7" intVal="1" key="1702391908"/>
|
||||
<IPPlugIn.SE id="1005" index="6" intVal="1" key="1702391908"/>
|
||||
<IPPlugIn.SE id="1005" index="5" intVal="1" key="1702391908"/>
|
||||
<IPPlugIn.SE id="1005" index="4" intVal="1" key="1702391908"/>
|
||||
<IPPlugIn.SE id="1005" index="3" intVal="1" key="1702391908"/>
|
||||
<IPPlugIn.SE id="1005" index="2" intVal="1" key="1702391908"/>
|
||||
<IPPlugIn.SE id="2" index="2" intVal="0" key="1702391908"/>
|
||||
<IPPlugIn.SE id="1005" intVal="0" key="1633907830"/>
|
||||
<IPPlugIn.SE id="1005" index="1" intVal="1" key="1633907830"/>
|
||||
<IPPlugIn.SE id="1005" index="1" intVal="1" key="1702391908"/>
|
||||
<IPPlugIn.SE id="1005" intVal="1" key="1702391908"/>
|
||||
<IPPlugIn.SE id="1005" intVal="0" key="1886352248"/>
|
||||
<IPPlugIn.SE id="1005" intVal="0" key="1886352249"/>
|
||||
<IPPlugIn.SE id="125" intVal="-1" key="7562604"/>
|
||||
<IPPlugIn.SE id="102" index="1" intVal="397" key="1920231791"/>
|
||||
<IPPlugIn.SE id="102" index="1" intVal="163" key="1936292453"/>
|
||||
<IPPlugIn.SE id="102" index="1" intVal="1" key="1702391908"/>
|
||||
<IPPlugIn.SE id="1004" intVal="-1" key="7499639"/>
|
||||
<IPPlugIn.SE id="1004" intVal="0" key="1886352248"/>
|
||||
<IPPlugIn.SE id="1004" intVal="0" key="1886352249"/>
|
||||
<IPPlugIn.SE id="1004" intVal="218" key="2003072104"/>
|
||||
<IPPlugIn.SE id="1004" index="1" intVal="156" key="2003072104"/>
|
||||
<IPPlugIn.SE id="1004" index="2" intVal="156" key="2003072104"/>
|
||||
<IPPlugIn.SE id="1004" index="3" intVal="125" key="2003072104"/>
|
||||
<IPPlugIn.SE id="1004" index="4" intVal="108" key="2003072104"/>
|
||||
<IPPlugIn.SE id="1004" index="5" intVal="108" key="2003072104"/>
|
||||
<IPPlugIn.SE id="1004" index="5" intVal="1" key="1986622303"/>
|
||||
<IPPlugIn.SE id="1004" index="5" intVal="1348029508" key="1952540511"/>
|
||||
<IPPlugIn.SE id="1004" index="4" intVal="1" key="1986622303"/>
|
||||
<IPPlugIn.SE id="1004" index="4" intVal="1397316165" key="1952540511"/>
|
||||
<IPPlugIn.SE id="1004" index="3" intVal="1" key="1986622303"/>
|
||||
<IPPlugIn.SE id="1004" index="3" intVal="1347571540" key="1952540511"/>
|
||||
<IPPlugIn.SE id="1004" index="2" intVal="1" key="1986622303"/>
|
||||
<IPPlugIn.SE id="1004" index="2" intVal="1145394004" key="1952540511"/>
|
||||
<IPPlugIn.SE id="1004" index="1" intVal="1" key="1986622303"/>
|
||||
<IPPlugIn.SE id="1004" index="1" intVal="1397708114" key="1952540511"/>
|
||||
<IPPlugIn.SE id="1004" intVal="1" key="1986622303"/>
|
||||
<IPPlugIn.SE id="1004" intVal="1145393987" key="1952540511"/>
|
||||
<IPPlugIn.SE id="102" intVal="437" key="1920231791"/>
|
||||
<IPPlugIn.SE id="102" intVal="199" key="1936292453"/>
|
||||
<IPPlugIn.SE id="102" intVal="1" key="1702391908"/>
|
||||
<IPPlugIn.SE id="102" intVal="0" key="1919247220"/>
|
||||
<IPPlugIn.SE id="102" index="1" intVal="466" key="1919247220"/>
|
||||
<IPPlugIn.SE id="102" index="2" intVal="0" key="1919247220"/>
|
||||
<IPPlugIn.SE id="102" index="3" intVal="1188" key="1919247220"/>
|
||||
<IPPlugIn.SE id="1005" index="18" intVal="1" key="1702391908"/>
|
||||
<IPPlugIn.SE id="1005" index="18" intVal="0" key="1633907830"/>
|
||||
<IPPlugIn.SE id="1005" index="19" intVal="1" key="1702391908"/>
|
||||
<IPPlugIn.SE id="1005" index="19" intVal="0" key="1633907830"/>
|
||||
<IPPlugIn.SE id="1005" index="20" intVal="1" key="1702391908"/>
|
||||
<IPPlugIn.SE id="1005" index="20" intVal="1" key="1633907830"/>
|
||||
</IPPlugIn.PacketBuilder>
|
||||
End_Of_Object VSSPlugInConfiguration 6
|
||||
NULL
|
||||
|
@ -5032,7 +5257,7 @@ NULL
|
|||
End_Of_Object VDOLocalInfoStruct 3
|
||||
0.000000
|
||||
0 0
|
||||
1 1 0 59420 1 233 1 2882400001 323 556 331 782 2882400002 0 0 0 0 0 0 1 2882400001 1197 1197 333 333 2882400002 0 0 0 0 0 0 3
|
||||
1 1 0 59420 1 233 1 2882400001 323 556 331 782 2882400002 0 0 0 0 0 0 1 2882400001 1197 1197 333 333 2882400002 0 0 0 610193072 0 608273564 3
|
||||
SS_BEGIN_COMMON_INFO
|
||||
1
|
||||
0
|
||||
|
@ -5044,7 +5269,7 @@ Ether1
|
|||
11
|
||||
1
|
||||
1
|
||||
362751416 1 0 1 0 1 1 0 0 0 2000 1
|
||||
609817640 1 0 1 0 1 1 0 0 0 2000 1
|
||||
SS_BEGIN_COMMON_INFO
|
||||
1
|
||||
3
|
||||
|
@ -5446,14 +5671,14 @@ SymbSelHeaderMgrBegin
|
|||
SymbSelHeaderMgrEnd
|
||||
End
|
||||
Begin
|
||||
3 0 -1
|
||||
3 0 31
|
||||
3
|
||||
Modbus
|
||||
|
||||
modbus
|
||||
|
||||
Systemvariablen
|
||||
( 3 ( 1 ( 0 ) 0 ) 0 )
|
||||
( 3 ( 1 ( 1 ( 0 ) 2 ( 1 ( 0 ) 3 ( 0 ) 0 ) 3 ( 0 ) 0 ) 0 ) 0 )
|
||||
SymbSelHeaderMgrBegin
|
||||
1 4
|
||||
0 1 200 0 0
|
||||
|
|
|
@ -1,51 +0,0 @@
|
|||
VERSION ""
|
||||
|
||||
|
||||
NS_ :
|
||||
NS_DESC_
|
||||
CM_
|
||||
BA_DEF_
|
||||
BA_
|
||||
VAL_
|
||||
CAT_DEF_
|
||||
CAT_
|
||||
FILTER
|
||||
BA_DEF_DEF_
|
||||
EV_DATA_
|
||||
ENVVAR_DATA_
|
||||
SGTYPE_
|
||||
SGTYPE_VAL_
|
||||
BA_DEF_SGTYPE_
|
||||
BA_SGTYPE_
|
||||
SIG_TYPE_REF_
|
||||
VAL_TABLE_
|
||||
SIG_GROUP_
|
||||
SIG_VALTYPE_
|
||||
SIGTYPE_VALTYPE_
|
||||
BO_TX_BU_
|
||||
BA_DEF_REL_
|
||||
BA_REL_
|
||||
BA_DEF_DEF_REL_
|
||||
BU_SG_REL_
|
||||
BU_EV_REL_
|
||||
BU_BO_REL_
|
||||
SG_MUL_VAL_
|
||||
|
||||
BS_:
|
||||
|
||||
BU_: Wago_3
|
||||
|
||||
|
||||
|
||||
|
||||
EV_ Wago_3_IP: 0 [0|0] "" 0 1 DUMMY_NODE_VECTOR8001 Vector__XXX;
|
||||
|
||||
BA_DEF_ BU_ "NodeLayerModules" STRING ;
|
||||
BA_DEF_ "DBName" STRING ;
|
||||
BA_DEF_ "BusType" STRING ;
|
||||
BA_DEF_DEF_ "NodeLayerModules" "Ethernet_IL.DLL";
|
||||
BA_DEF_DEF_ "DBName" "";
|
||||
BA_DEF_DEF_ "BusType" "Ethernet";
|
||||
BA_ "BusType" "Ethernet";
|
||||
BA_ "DBName" "modbus";
|
||||
|
|
@ -1,28 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<systemvariables version="4">
|
||||
<namespace name="" comment="">
|
||||
<namespace name="Ethernet1" comment="">
|
||||
<namespace name="Wago_3" comment="">
|
||||
<namespace name="Config" comment="">
|
||||
<variable anlyzLocal="2" readOnly="false" valueSequence="false" unit="" name="IP" comment="comment" bitcount="8" isSigned="true" encoding="65001" type="string" startValue="192.168.1.3" />
|
||||
<variable anlyzLocal="2" readOnly="false" valueSequence="false" unit="ms" name="Interval" comment="" bitcount="32" isSigned="true" encoding="65001" type="int" startValue="100" minValue="10" minValuePhys="10" maxValue="10000" maxValuePhys="10000" />
|
||||
</namespace>
|
||||
<namespace name="Info" comment="">
|
||||
<variable anlyzLocal="2" readOnly="false" valueSequence="false" unit="" name="InputRegisters" comment="" bitcount="32" isSigned="true" encoding="65001" type="int" startValue="0" minValue="0" minValuePhys="0" maxValue="123" maxValuePhys="123" />
|
||||
<variable anlyzLocal="2" readOnly="false" valueSequence="false" unit="" name="Modules" comment="" bitcount="8" isSigned="true" encoding="65001" type="string" />
|
||||
<variable anlyzLocal="2" readOnly="false" valueSequence="false" unit="" name="SerialCode" comment="" bitcount="32" isSigned="true" encoding="65001" type="int" startValue="0" minValue="1" minValuePhys="1" maxValue="10000" maxValuePhys="10000" />
|
||||
<variable anlyzLocal="2" readOnly="false" valueSequence="false" unit="" name="DeviceCode" comment="" bitcount="32" isSigned="true" encoding="65001" type="int" startValue="0" minValue="1" minValuePhys="1" maxValue="10000" maxValuePhys="10000" />
|
||||
<variable anlyzLocal="2" readOnly="false" valueSequence="false" unit="" name="InputBits" comment="" bitcount="32" isSigned="true" encoding="65001" type="int" startValue="0" minValue="0" minValuePhys="0" maxValue="2000" maxValuePhys="2000" />
|
||||
<variable anlyzLocal="2" readOnly="false" valueSequence="false" unit="" name="OutputBits" comment="" bitcount="32" isSigned="true" encoding="65001" type="int" startValue="0" minValue="0" minValuePhys="0" maxValue="2000" maxValuePhys="2000" />
|
||||
<variable anlyzLocal="2" readOnly="false" valueSequence="false" unit="" name="OutputRegisters" comment="" bitcount="32" isSigned="true" encoding="65001" type="int" startValue="0" minValue="0" minValuePhys="0" maxValue="123" maxValuePhys="123" />
|
||||
</namespace>
|
||||
<namespace name="Data" comment="">
|
||||
<variable anlyzLocal="2" readOnly="false" valueSequence="false" unit="" name="InputBits" comment="" bitcount="8" isSigned="true" encoding="65001" type="data" arrayLength="0" />
|
||||
<variable anlyzLocal="2" readOnly="false" valueSequence="false" unit="" name="OutputBits" comment="" bitcount="8" isSigned="true" encoding="65001" type="data" arrayLength="0" />
|
||||
<variable anlyzLocal="2" readOnly="false" valueSequence="false" unit="" name="InputRegisters" comment="" bitcount="8" isSigned="true" encoding="65001" type="data" arrayLength="0" />
|
||||
<variable anlyzLocal="2" readOnly="false" valueSequence="false" unit="" name="OutputRegisters" comment="" bitcount="8" isSigned="true" encoding="65001" type="data" arrayLength="0" />
|
||||
</namespace>
|
||||
</namespace>
|
||||
</namespace>
|
||||
</namespace>
|
||||
</systemvariables>
|
Loading…
Reference in a new issue