⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.pas

📁 利用delphi跟西门子s5系列PLC通讯
💻 PAS
📖 第 1 页 / 共 2 页
字号:
          end;
      end
   end;



  
     begin
     ADOQueryFault.SQL.Clear;
     ADOQueryFault.SQL.ADD('dtc_cxx_fault_all_end_s5 :Machine_id');
     ADOQueryFault.Parameters.ParamByName('Machine_id').Value :=Machine_id;
     ADOQueryFault.ExecSQL;
     end;



  //if (DW1_current=0) and (DW1_current=0) then
   //   NoFault:=True                  //主副机正常无故障
  //else
    //  NoFault:=False;



  myinifile.WriteInteger('fault','dw1',DW1_current);
  myinifile.WriteInteger('fault','dw2',DW2_current);   //把故障变量写入ini文件供下次调用
  myinifile.WriteInteger('fault','FaultCount',FaultCount);  //把故障数写入ini文件供下次调用
 //**************************************************************

end;

procedure Tmainfrm.Tm_ConnStateTimer(Sender: TObject);
begin
try
AdoConnServer.Close;
AdoConnServer.Open;
if AdoConnServer.Connected then
begin
  lbl_ConnState.Caption:='正常  ';
  Tm_fault.Enabled:=true;
  Tm_output.Enabled:=true;
  Tm_nowdata.Enabled:=true;
  Tm_parachange.Enabled:=true;
end;
except
lbl_ConnState.Caption:='连接失败  ';
  Tm_fault.Enabled:=false;
  Tm_output.Enabled:=false;
  Tm_nowdata.Enabled:=false;
  Tm_parachange.Enabled:=false;
end;

end;

procedure Tmainfrm.FormCreate(Sender: TObject);
begin
     SysTime0:=now;
     Machine_type:='s5';
     Machine_id:=8;
     product_countMax:=65535;
     myinifile:=Tinifile.Create(Extractfilepath(paramstr(0))+'para.ini');    //连接ini文件
     
     lbl_Machine_id.Caption:='成型'+inttostr(Machine_id)+'#机    ';
     //************从本地Access读取设备实时数据****************************
     ADOQLocal_eq.Close;
     ADOQLocal_eq.SQL.Clear;
     ADOQLocal_eq.SQL.Add('SELECT TOP 1 * FROM dtc_cxx_eq_now_s5_local ORDER BY 本地时间 DESC');
     ADOQLocal_eq.Open;
     Guige_id:=ADOQLocal_eq.FieldByName('Guige_id').AsInteger;
     Data[1]:=ADOQLocal_eq.FieldByName('Ttg_dqwz').AsInteger;
     Data[2]:=ADOQLocal_eq.FieldByName('Jx_yq_dqwz').AsInteger;
     Data[3]:=ADOQLocal_eq.FieldByName('Tmcdh_dqwz').AsInteger;
     Data[4]:=ADOQLocal_eq.FieldByName('Dsg_dqz').AsInteger;
     Data[5]:=ADOQLocal_eq.FieldByName('Ttcdh_dqz').AsInteger;
     Data[6]:=ADOQLocal_eq.FieldByName('Cxg_pzdqz').AsInteger;
     Localtime0:= ADOQLocal_eq.FieldByName('本地时间').AsDateTime;

   //************从本地Access读取设备实时数据*****************************
    ADOQ_output.SQL.Clear;
           ADOQ_output.SQL.Add('dtc_cxx_output_xiaban_get :Machine_id');
           ADOQ_output.Parameters.ParamByName('Machine_id').Value := Machine_id;
           ADOQ_output.Open;
           OnDuty0:=ADOQ_output.fieldbyName('Xiaban_id').AsInteger;
   //**********************读入工艺参数 *********************************//
     tempGuige_id:=Guige_id;
     ADOQLoacl_techpara.Close;
     ADOQLoacl_techpara.SQL.Clear;
     ADOQLoacl_techpara.SQL.Add('SELECT TOP 1 * FROM dtc_cxx_techpara_s5_local ORDER BY 本地时间 DESC');
     ADOQLoacl_techpara.Open;
     tempdata[0]:=ADOQLoacl_techpara.FieldByName('胎面压合径向起始位置').AsInteger;
     tempdata[1]:=ADOQLoacl_techpara.FieldByName('胎面压合轴向起始位置').AsInteger;
     tempdata[2]:=ADOQLoacl_techpara.FieldByName('胎面压合轴向2区压力位置').AsInteger;
     tempdata[3]:=ADOQLoacl_techpara.FieldByName('胎面压合轴向3区压力位置').AsInteger;
     tempdata[4]:=ADOQLoacl_techpara.FieldByName('胎面压合轴向结束位置').AsInteger;
     tempdata[5]:=ADOQLoacl_techpara.FieldByName('胎面压合旋转起始位置').AsInteger;
     tempdata[6]:=ADOQLoacl_techpara.FieldByName('胎面压合旋转结束位置').AsInteger;
     tempdata[7]:=ADOQLoacl_techpara.FieldByName('胎侧压合径向起始位置').AsInteger;
     tempdata[8]:=ADOQLoacl_techpara.FieldByName('胎侧压合径向5区压力位置').AsInteger;
     tempdata[9]:=ADOQLoacl_techpara.FieldByName('胎侧压合径向6区压力位置').AsInteger;
     tempdata[10]:=ADOQLoacl_techpara.FieldByName('胎侧压合径向结束位置').AsInteger;
     tempdata[11]:=ADOQLoacl_techpara.FieldByName('胎侧压合轴向起始位置').AsInteger;
     tempdata[12]:=ADOQLoacl_techpara.FieldByName('胎侧压合旋转起始位置').AsInteger;
     tempdata[13]:=ADOQLoacl_techpara.FieldByName('胎侧压合旋转结束位置').AsInteger;
  //****************************读入工艺参数*******************************//
end;

procedure Tmainfrm.Tm_NowDataTimer(Sender: TObject);
begin
     SysTime:=now;
     //************设备实时数据读取*****************************
     ADOQLocal_eq.Close;
     ADOQLocal_eq.SQL.Clear;
     ADOQLocal_eq.SQL.Add('SELECT TOP 1 * FROM dtc_cxx_eq_now_s5_local ORDER BY 本地时间 DESC');
     ADOQLocal_eq.Open;
     Guige_id:=ADOQLocal_eq.FieldByName('Guige_id').AsInteger;
     Data[1]:=ADOQLocal_eq.FieldByName('Ttg_dqwz').AsInteger;
     Data[2]:=ADOQLocal_eq.FieldByName('Jx_yq_dqwz').AsInteger;
     Data[3]:=ADOQLocal_eq.FieldByName('Tmcdh_dqwz').AsInteger;
     Data[4]:=ADOQLocal_eq.FieldByName('Dsg_dqz').AsInteger;
     Data[5]:=ADOQLocal_eq.FieldByName('Ttcdh_dqz').AsInteger;
     Data[6]:=ADOQLocal_eq.FieldByName('Cxg_pzdqz').AsInteger;
     Localtime:= ADOQLocal_eq.FieldByName('本地时间').AsDateTime;
      //************设备实时数据读取*****************************

     //******PLC与Movicon通讯连接判断********如果超过两分钟,本地时间没变化,或者从本地Access读到的数全为0,则表示PLC与MOvicon的通讯连接不上
     if LocalTime=LocalTime0 then
       begin
         if ((SysTime-SysTime0)*24*60> 2) then
           begin
           Plc2Movicon:=false;
           end
         else
            Plc2Movicon:=true;
       end
     else
       begin
         Plc2Movicon:=true;
         SysTime0:=SysTime;
       end;
     LocalTime0:=LocalTime;

     if Plc2Movicon=false or ((Data[1]=0) and (Data[2]=0) and (Data[3]=0) and (Data[4]=0) and (Data[5]=0) and (Data[6]=0)) then
        begin
        Plc2Movicon:=false;
        lbl_Plc2Movicon.Caption:='连接失败  ';
        end
     else
        begin
        Plc2Movicon:=true;
        lbl_Plc2Movicon.Caption:='正常  ';
        end;
     //****************PLC与Movicon通讯连接判断*************

     if Plc2Movicon then
     begin
     //************设备实时数据上传*****************************
     ADOQuery1.SQL.Clear;
     ADOQuery1.SQL.Add('dtc_cxx_eq_now_update :Machine_type,:Machine_id,:Guige_id,:para1,:para2,:para3,:para4,:para5,:para6,:para7,:para8,:para9');
     ADOQuery1.Parameters.ParamByName('Machine_type').Value := Machine_type;
     ADOQuery1.Parameters.ParamByName('Machine_id').Value := Machine_id;
     ADOQuery1.Parameters.ParamByName('Guige_id').Value := Guige_id;
     ADOQuery1.Parameters.ParamByName('para1').Value := Data[1];
     ADOQuery1.Parameters.ParamByName('para2').Value := Data[2];
     ADOQuery1.Parameters.ParamByName('para3').Value := Data[3];
     ADOQuery1.Parameters.ParamByName('para4').Value := Data[4];
     ADOQuery1.Parameters.ParamByName('para5').Value := Data[5];
     ADOQuery1.Parameters.ParamByName('para6').Value := Data[6];
     ADOQuery1.ExecSQL;
     //************设备实时数据上传*****************************
    end ;
end;

procedure Tmainfrm.Tm_ParaChangeTimer(Sender: TObject);
var
 i,up :integer;
begin
   if Plc2Movicon then     //PLC与MOvicon通讯连接上了才进行有关产量的各种处理
     begin
       if tempGuige_id=Guige_id then       //规格没有变化才进行工艺参数变更判断
         begin
         ADOQLoacl_techpara.Close;
         ADOQLoacl_techpara.SQL.Clear;
         ADOQLoacl_techpara.SQL.Add('SELECT TOP 1 * FROM dtc_cxx_techpara_s5_local ORDER BY 本地时间 DESC');
         ADOQLoacl_techpara.Open;
         techpara[0]:=ADOQLoacl_techpara.FieldByName('胎面压合径向起始位置').AsInteger;
         techpara[1]:=ADOQLoacl_techpara.FieldByName('胎面压合轴向起始位置').AsInteger;
         techpara[2]:=ADOQLoacl_techpara.FieldByName('胎面压合轴向2区压力位置').AsInteger;
         techpara[3]:=ADOQLoacl_techpara.FieldByName('胎面压合轴向3区压力位置').AsInteger;
         techpara[4]:=ADOQLoacl_techpara.FieldByName('胎面压合轴向结束位置').AsInteger;
         techpara[5]:=ADOQLoacl_techpara.FieldByName('胎面压合旋转起始位置').AsInteger;
         techpara[6]:=ADOQLoacl_techpara.FieldByName('胎面压合旋转结束位置').AsInteger;
         techpara[7]:=ADOQLoacl_techpara.FieldByName('胎侧压合径向起始位置').AsInteger;
         techpara[8]:=ADOQLoacl_techpara.FieldByName('胎侧压合径向5区压力位置').AsInteger;
         techpara[9]:=ADOQLoacl_techpara.FieldByName('胎侧压合径向6区压力位置').AsInteger;
         techpara[10]:=ADOQLoacl_techpara.FieldByName('胎侧压合径向结束位置').AsInteger;
         techpara[11]:=ADOQLoacl_techpara.FieldByName('胎侧压合轴向起始位置').AsInteger;
         techpara[12]:=ADOQLoacl_techpara.FieldByName('胎侧压合旋转起始位置').AsInteger;
         techpara[13]:=ADOQLoacl_techpara.FieldByName('胎侧压合旋转结束位置').AsInteger;

      for i:=0 to 13 Do
        if techpara[i]=tempdata[i] then  //no change
          begin
            up:=0;
          end
        else         //change occurs
          begin
            up:=1;break;
          end;

     if up=0 then    //no data change
        begin
        end
     else                //data change
        begin
          ADOQueryParaChange.SQL.Clear;
          ADOQueryParaChange.SQL.Add('dtc_cxx_techpara_update :Machine_type,:Machine_id,:Guige_id,:para1,:para2,:para3,:para4,:para5,:para6,:para7,:para8,:para9,:para10,'
                                      +':para11,:para12,:para13,:para14,:para15,:para16,:para17,:para18,:para19,:para20,'
                                      +':para21,:para22,:para23,:para24,:para25,:para26,:para27,:para28,:para29,:para30,'
                                      +':para31,:para32,:para33,:para34,:para35,:para36,:para37,:para38,:para39,:para40,'
                                      +':para41,:para42,:para43,:para44,:para45,:para46,:para47,:para48,:para49,:para50,'
                                      +':para51,:para52,:para53,:para54,:para55,:para56,:para57,:para58,:para59,:para60,'
                                      +':para61,:para62,:para63,:para64,:para65,:para66,:para67,:para68,:para69,:para70');
          ADOQueryParaChange.Parameters.ParamByName('Machine_type').Value:=Machine_type;
          ADOQueryParaChange.Parameters.ParamByName('Machine_id').Value:=Machine_id;
          ADOQueryParaChange.Parameters.ParamByName('Guige_id').Value:=Machine_id;
          ADOQueryParaChange.Parameters.ParamByName('para1').Value:=techpara[0];
          ADOQueryParaChange.Parameters.ParamByName('para2').Value:=techpara[1];
          ADOQueryParaChange.Parameters.ParamByName('para3').Value:=techpara[2];
          ADOQueryParaChange.Parameters.ParamByName('para4').Value:=techpara[3];
          ADOQueryParaChange.Parameters.ParamByName('para5').Value:=techpara[4];
          ADOQueryParaChange.Parameters.ParamByName('para6').Value:=techpara[5];
          ADOQueryParaChange.Parameters.ParamByName('para7').Value:=techpara[6];
          ADOQueryParaChange.Parameters.ParamByName('para10').Value:=techpara[7];
          ADOQueryParaChange.Parameters.ParamByName('para11').Value:=techpara[8];
          ADOQueryParaChange.Parameters.ParamByName('para12').Value:=techpara[9];
          ADOQueryParaChange.Parameters.ParamByName('para13').Value:=techpara[10];
          ADOQueryParaChange.Parameters.ParamByName('para14').Value:=techpara[11];
          ADOQueryParaChange.Parameters.ParamByName('para16').Value:=techpara[12];
          ADOQueryParaChange.Parameters.ParamByName('para17').Value:=techpara[13];
          ADOQueryParaChange.ExecSQL;
        end;

          for i:=0 to 13 Do
          tempdata[i]:=techpara[i];
           end

  else                                           //若规格改变,不用判断工艺参数变更
    begin
      tempGuige_id:=Guige_id;
      ADOQLoacl_techpara.Close;
      ADOQLoacl_techpara.SQL.Clear;
      ADOQLoacl_techpara.SQL.Add('SELECT TOP 1 * FROM dtc_cxx_techpara_s5_local ORDER BY 本地时间 DESC');
      ADOQLoacl_techpara.Open;
      tempdata[0]:=ADOQLoacl_techpara.FieldByName('胎面压合径向起始位置').AsInteger;
      tempdata[1]:=ADOQLoacl_techpara.FieldByName('胎面压合轴向起始位置').AsInteger;
      tempdata[2]:=ADOQLoacl_techpara.FieldByName('胎面压合轴向2区压力位置').AsInteger;
      tempdata[3]:=ADOQLoacl_techpara.FieldByName('胎面压合轴向3区压力位置').AsInteger;
      tempdata[4]:=ADOQLoacl_techpara.FieldByName('胎面压合轴向结束位置').AsInteger;
      tempdata[5]:=ADOQLoacl_techpara.FieldByName('胎面压合旋转起始位置').AsInteger;
      tempdata[6]:=ADOQLoacl_techpara.FieldByName('胎面压合旋转结束位置').AsInteger;
      tempdata[7]:=ADOQLoacl_techpara.FieldByName('胎侧压合径向起始位置').AsInteger;
      tempdata[8]:=ADOQLoacl_techpara.FieldByName('胎侧压合径向5区压力位置').AsInteger;
      tempdata[9]:=ADOQLoacl_techpara.FieldByName('胎侧压合径向6区压力位置').AsInteger;
      tempdata[10]:=ADOQLoacl_techpara.FieldByName('胎侧压合径向结束位置').AsInteger;
      tempdata[11]:=ADOQLoacl_techpara.FieldByName('胎侧压合轴向起始位置').AsInteger;
      tempdata[12]:=ADOQLoacl_techpara.FieldByName('胎侧压合旋转起始位置').AsInteger;
      tempdata[13]:=ADOQLoacl_techpara.FieldByName('胎侧压合旋转结束位置').AsInteger;
    end;
  end;
  end;





end.


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -