112 lines
2.9 KiB
C++
112 lines
2.9 KiB
C++
#ifndef MODBUSTCP_H
|
|
#define MODBUSTCP_H
|
|
#include <tchar.h>
|
|
#include <math.h>
|
|
#include <iostream>
|
|
#include <process.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <windows.h>
|
|
#include <conio.h>
|
|
#include <QSettings>
|
|
#include <QString>
|
|
#include<QObject>
|
|
#include"base.h"
|
|
|
|
struct PLC_COMMAND{
|
|
unsigned short cmdAddr;
|
|
bool cmdWriteFlag;
|
|
int cmdDelay;
|
|
};
|
|
|
|
#define MODBUSTCP ModbusTCP::instance()
|
|
class ModbusTCP
|
|
{
|
|
static ModbusTCP* uniqueInstance;
|
|
public:
|
|
static ModbusTCP* instance();
|
|
QString ipAddr_electric_resistance;
|
|
unsigned int sockfd;
|
|
unsigned int sockfd_fl;
|
|
unsigned int sockfd_record;
|
|
unsigned int sockfd_electric_resistance;
|
|
char RFID[50];
|
|
unsigned short height;
|
|
unsigned short shangReadAddr;
|
|
unsigned short shangWriteAddr;
|
|
unsigned short shangReadRFIDAddr;
|
|
unsigned short xiaWriteHeightAddr;
|
|
unsigned short shangWriteHeartbeatAddr;
|
|
unsigned short xiaReadAddr;
|
|
unsigned short xiaWriteAddr;
|
|
unsigned short xiaReadStsAddr;
|
|
unsigned short ReadTransferPLCStsAddr;
|
|
|
|
unsigned short InitAddr;
|
|
unsigned short RunAddr;
|
|
unsigned short StopAddr;
|
|
unsigned short ClearAlarmAddr;
|
|
|
|
|
|
bool connFlag{true};
|
|
int PLCSts[2];
|
|
int TransferPLCSts;
|
|
PLC_COMMAND TransferPLCCmd;
|
|
PLC_COMMAND SeparatePLCCmd;
|
|
CRITICAL_SECTION mCsRead;
|
|
CRITICAL_SECTION mCsRead_fl;
|
|
|
|
float array_pos[1000][2];
|
|
private:
|
|
QString ipAddr;
|
|
QString ipAddr_fl;
|
|
QString ipAddr_record;
|
|
|
|
unsigned short port;
|
|
|
|
unsigned short shangReadVacuumAddr;
|
|
unsigned short shangWriteVacuumAddr;
|
|
|
|
|
|
unsigned short xiaWriteVacuumAddr;
|
|
|
|
unsigned short _seq_modbus;
|
|
unsigned short _seq_modbus_fl;
|
|
public:
|
|
ModbusTCP();
|
|
~ModbusTCP(void);
|
|
public:
|
|
bool ConnPLC();
|
|
bool ConnPLC_fl();
|
|
bool ConnPLC_force();
|
|
bool ConnPLC_electric_resistance();
|
|
bool CloseConn();
|
|
bool CloseConn_fl();
|
|
bool CloseConn_record();
|
|
bool CloseConn_electric_resistance();
|
|
int SendCmdRead(unsigned int sockfd,char *data, unsigned short data_len);
|
|
int SendCmdWrite(unsigned int sockfd,char *data, unsigned short data_len);
|
|
int SendCmdRead_fl(unsigned int sockfd,char *data, unsigned short data_len);
|
|
int SendCmdWrite_fl(unsigned int sockfd,char *data, unsigned short data_len);
|
|
int DataDecode(char *data, int len);
|
|
int ModbusWrite(unsigned char cmd,unsigned short addr, unsigned short data);
|
|
int ModbusWrite_fl(unsigned char cmd,unsigned short addr, unsigned short data);
|
|
int ModbusWrite_force(char * data, int len);
|
|
int ModbusWrite_electric_resistance(char * data, int len, char * rev_buf);
|
|
int ModbusRead(unsigned short addr,int dataLen);
|
|
int ModbusRead_fl(unsigned short addr,int dataLen);
|
|
int getModbusPara(QString DevName);
|
|
int Heartbeat(void);
|
|
int Heartbeat_fl(void);
|
|
int TransferPLCRun(unsigned short addr,int delay);
|
|
int SeparatePLCRun(unsigned short addr,int delay);
|
|
bool stopFlag;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
#endif // MODBUSTCP_H
|