自行封装Omron欧姆龙fins TCP UDP协议实例下载----->网盘下载
Omron FINS协议在工业自动化领域得到了广泛的应用,特别是在与PLC设备的通信方面。FINS(Factory Interface Network Service)协议是Omron公司开发的一种专用协议,支持以太网、控制网络和RS232C/485串行通信之间的无缝通信。在企业中,FINS协议主要用于实现上位机与PLC之间的数据交换和控制,以提高自动化控制水平。
PLC可以对接多种设备,包括但不限于传感器、执行器、HMI(人机界面)、SCADA(监控与数据采集)系统、Historian、MES(制造执行系统)、ERP(企业资源计划)以及各种自定义应用程序。通过FINS协议,上位机可以读写PLC的数据区域,甚至控制其运行状态,简化用户程序。
对于上位机的开发,在实际开发中,开发者需要掌握FINS协议的数据帧结构和命令代码,以便进行有效的通信。
void OmronPlc::on_bt_write_3_clicked()
{
try{
if(!fins->isConnected()){
return;
}
string key=ui->lineEdit_6->text().toStdString();
vector<int> list;
if(ui->lineEdit_5->text()!=""){
list.push_back(ui->lineEdit_5->text().toInt());
}
bool check=fins->WritePlcFormListInt(key,list);
qDebug()<<"check-->"<< QString::number(check);
if(ui->listWidget->count()>19){
delete ui->listWidget->takeItem(0);
}
if(!check){
ui->listWidget->addItem(QString::fromUtf8(getCurrentTimeAsString().c_str())+
" 写入"+ui->lineEdit_6->text()+"出错-->"+ui->lineEdit_5->text());
return;
}
ui->listWidget->addItem(QString::fromUtf8(getCurrentTimeAsString().c_str())+
" 写入"+ui->lineEdit_6->text()+"成功-->"+ui->lineEdit_5->text());
}
catch (const exception& e) {
// 捕获 exception 或其子类的异常
qDebug()<<"on_bt_write_3_clicked-->: " << e.what();
}
}
void OmronPlc::on_bt_write_2_clicked()
{
try{
if(!fins->isConnected()){
return;
}
string key=ui->lineEdit_6->text().toStdString();
vector<int> list;
if(!(ui->lineEdit_5->text()=="1" || ui->lineEdit_5->text()=="0")){
ui->listWidget->addItem("请输入1或0");
return;
}
list.push_back(ui->lineEdit_5->text().toInt());
bool check=fins->WritePlcFormListBit(key,list);
qDebug()<<"check-->"<< QString::number(check);
if(ui->listWidget->count()>19){
delete ui->listWidget->takeItem(0);
}
if(!check){
ui->listWidget->addItem(QString::fromUtf8(getCurrentTimeAsString().c_str())+
" 写入"+ui->lineEdit_6->text()+"出错-->"+ui->lineEdit_5->text());
return;
}
ui->listWidget->addItem(QString::fromUtf8(getCurrentTimeAsString().c_str())+
" 写入"+ui->lineEdit_6->text()+"成功-->"+ui->lineEdit_5->text());
}
catch (const exception& e) {
// 捕获 exception 或其子类的异常
qDebug()<<"on_bt_write_2_clicked-->: " << e.what();
}
}