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

📄 omron_plc_fins.~pas

📁 温度恒温控制,与PLC,工控板通讯,实现炉字过程控制.
💻 ~PAS
📖 第 1 页 / 共 3 页
字号:
   if (signal=25) then
   begin
    sSendcommand:=sSendcommand+'0522000005'; //read-memory  D1314开始5个字(设定值);
    scontent:=self.calc_response_fcs1(sSendcommand);
    sSendcommand:=sSendcommand+scontent+'*'+chr(13);
   end;

   if (signal=2) then
   begin
     ssendcommand:=sSendcommand+'03E800000A'; //write memory D1000开始10个字节;
     scontent:=inttohex(frmglass.spgyjgsj.Value*10,4);
     ssendcommand:=sSendcommand+scontent;
     scontent:=inttohex(frmglass.spgydwjl.Value*10,4);
     ssendcommand:=sSendcommand+scontent;
     scontent:=inttohex(frmglass.spgygwjl.Value*10,4);
     ssendcommand:=sSendcommand+scontent;
     scontent:=inttohex(frmglass.spgybdsj.Value*10,4);
     ssendcommand:=sSendcommand+scontent;
     scontent:=inttohex(frmglass.spgyqhsj.Value*10,4);
     ssendcommand:=sSendcommand+scontent;
     scontent:=inttohex(frmglass.spgylqsj.Value*10,4);
     ssendcommand:=sSendcommand+scontent;
     scontent:=inttohex(frmglass.spgyfj1tq.Value*10,4);
     ssendcommand:=sSendcommand+scontent;
     scontent:=inttohex(frmglass.spgyfm1tq.Value*10,4);
     ssendcommand:=sSendcommand+scontent;
     scontent:=inttohex(frmglass.spgyfj2tq.Value*10,4);
     ssendcommand:=sSendcommand+scontent;
     scontent:=inttohex(frmglass.spgyfm2tq.Value*10,4);
     ssendcommand:=sSendcommand+scontent;
     scontent:=self.calc_response_fcs1(sSendcommand);  //计算fcs;
     ssendcommand:=sSendcommand+scontent+'*'+chr(13);
   end;
{2 时间设定
低温加热时间D1001高温加热时间D1002摆动时间D1003强化时间D1004冷却时间D1005
风机1提前时间D1006风门1提前时间D1007风机2提前时间D1008风门2提前时间D1009}
   if (signal=3) then
   begin
    ssendcommand:=sSendcommand+'04B000001C'; //write memory D1200开始28个字节;
    scontent:=inttohex(frmglass.spjljpbj.Value*frmglass.spjpscale.Value,8);
    ssendcommand:=sSendcommand+copy(scontent,5,4)+copy(scontent,1,4);
    scontent:=inttohex(frmglass.spjldwjpjs.Value*frmglass.spdwscale.Value,8);
    ssendcommand:=sSendcommand+copy(scontent,5,4)+copy(scontent,1,4);
    scontent:=inttohex(frmglass.spjldwlc.Value*frmglass.spdwscale.Value,8);
    ssendcommand:=sSendcommand+copy(scontent,5,4)+copy(scontent,1,4);
    scontent:=inttohex(frmglass.spjldwaq.Value*frmglass.spdwscale.Value,8);
    ssendcommand:=sSendcommand+copy(scontent,5,4)+copy(scontent,1,4);
    scontent:=inttohex(frmglass.spjldwcp.Value*frmglass.spdwscale.Value,8);
    ssendcommand:=sSendcommand+copy(scontent,5,4)+copy(scontent,1,4);
    scontent:=inttohex(frmglass.spjldwcpjs.Value*frmglass.spdwscale.Value,8);
    ssendcommand:=sSendcommand+copy(scontent,5,4)+copy(scontent,1,4);
    scontent:=inttohex(frmglass.spjlgwlc.Value*frmglass.spgwscale.Value,8);
    ssendcommand:=sSendcommand+copy(scontent,5,4)+copy(scontent,1,4);
    scontent:=inttohex(frmglass.spjlgwaq.Value*frmglass.spgwscale.Value,8);
    ssendcommand:=sSendcommand+copy(scontent,5,4)+copy(scontent,1,4);
    scontent:=inttohex(frmglass.spjlgwcp.Value*frmglass.spgwscale.Value,8);
    ssendcommand:=sSendcommand+copy(scontent,5,4)+copy(scontent,1,4);
    scontent:=inttohex(frmglass.spjlgwjs.Value*frmglass.spgwscale.Value,8);
    ssendcommand:=sSendcommand+copy(scontent,5,4)+copy(scontent,1,4);
    scontent:=inttohex(frmglass.spjlqhlc.Value*frmglass.spqhscale.Value,8);
    ssendcommand:=sSendcommand+copy(scontent,5,4)+copy(scontent,1,4);
    scontent:=inttohex(frmglass.spjlqhaq.Value*frmglass.spqhscale.Value,8);
    ssendcommand:=sSendcommand+copy(scontent,5,4)+copy(scontent,1,4);
    scontent:=inttohex(frmglass.spjlqhcp.Value*frmglass.spqhscale.Value,8);
    ssendcommand:=sSendcommand+copy(scontent,5,4)+copy(scontent,1,4);
    scontent:=inttohex(frmglass.spjlccsd.Value*frmglass.spdwscale.Value,8);
    ssendcommand:=sSendcommand+copy(scontent,5,4)+copy(scontent,1,4);
     scontent:=self.calc_response_fcs1(sSendcommand);  //计算fcs;
     ssendcommand:=sSendcommand+scontent+'*'+chr(13);
   end;
{3 距离设定
进片步进D1200,D1201;低温进片减速D1202,D1203;低温炉长D1204,D1205;低温安距D1206,D1207;
低温出片D1208,D1209;低温出片减速 D1210,D1211;高温炉长D1212,D1213;高炉安距D1214,D1215;
高温出片D1216,D1217;高温减速D1218,D1219;强化炉长D1220,D1221,强化安全D1222,D1223;强化出片D1224,D1225,
超长设定D1226,D1227}
   if (signal=4) then
   begin
    ssendcommand:=sSendcommand+'051400000E'; //write memory D1300开始14个字;
    scontent:=inttohex(frmglass.spjpbjsd.Value*frmglass.spsdjp.Value,4);
    ssendcommand:=sSendcommand+scontent;
    scontent:=inttohex(frmglass.spdwdjsd.Value*frmglass.spsddw.Value,4);
    ssendcommand:=sSendcommand+scontent;
    scontent:=inttohex(frmglass.spdwjpsd.Value*frmglass.spsddw.Value,4);
    ssendcommand:=sSendcommand+scontent;
    scontent:=inttohex(frmglass.spdwjpjs.Value*frmglass.spsddw.Value,4);
    ssendcommand:=sSendcommand+scontent;
    scontent:=inttohex(frmglass.spdwbdsd.Value*frmglass.spsddw.Value,4);
    ssendcommand:=sSendcommand+scontent;
    scontent:=inttohex(frmglass.spdwcpsd.Value*frmglass.spsddw.Value,4);
    ssendcommand:=sSendcommand+scontent;
    scontent:=inttohex(frmglass.spdwcpjs.Value*frmglass.spsddw.Value,4);
    ssendcommand:=sSendcommand+scontent;
    scontent:=inttohex(frmglass.spgwdjsd.Value*frmglass.spsdgw.Value,4);
    ssendcommand:=sSendcommand+scontent;
    scontent:=inttohex(frmglass.spgwbdsd.Value*frmglass.spsdgw.Value,4);
    ssendcommand:=sSendcommand+scontent;
    scontent:=inttohex(frmglass.spgwcpsd.Value*frmglass.spsdqh.Value,4);
    ssendcommand:=sSendcommand+scontent;
    scontent:=inttohex(frmglass.spgwcpjs.Value*frmglass.spsdqh.Value,4);
    ssendcommand:=sSendcommand+scontent;
    scontent:=inttohex(frmglass.spqhbdsd.Value*frmglass.spsdqh.Value,4);
    ssendcommand:=sSendcommand+scontent;
    scontent:=inttohex(frmglass.spqhlqbd.Value*frmglass.spsdqh.Value,4);
    ssendcommand:=sSendcommand+scontent;
    scontent:=inttohex(frmglass.spqhcpsd.Value*frmglass.spsdqh.Value,4);
    ssendcommand:=sSendcommand+scontent;
     scontent:=self.calc_response_fcs1(sSendcommand);  //计算fcs;
     ssendcommand:=sSendcommand+scontent+'*'+chr(13);
   end;
{4为速度设定   100时为输出6000
进片步进速度D1300;低温待机速度D1301;低温进片速度D1302;低温进片减速D1303;
低温摆动速度D1304;低温出片速度D1305低温出片减速D1306;高温待机速度D1307;
高温摆动速度D1308;高温出片速度D1309;高温出片减速D1310;强化摆动速度D1311;
强化冷却摆动D1312;强化出片速度D1313;}
   if (signal=5)  then
   begin
    ssendcommand:=sSendcommand+'0522000005'; //write memory D1314开始5个字;
    scontent:=inttohex(frmglass.spgyfj1dj.Value*6,4);
    ssendcommand:=sSendcommand+scontent;
    scontent:=inttohex(frmglass.spgyfj1qh.Value*6,4);
    ssendcommand:=sSendcommand+scontent;
    scontent:=inttohex(frmglass.spgyfj2dj.Value*6,4);
    ssendcommand:=sSendcommand+scontent;
    scontent:=inttohex(frmglass.spgyfj2qh.Value*6,4);
    ssendcommand:=sSendcommand+scontent;
    scontent:=inttohex(frmglass.spgyfj3lq.Value*6,4);
    ssendcommand:=sSendcommand+scontent;
    scontent:=self.calc_response_fcs1(sSendcommand);  //计算fcs;
    ssendcommand:=sSendcommand+scontent+'*'+chr(13);
   end;
{  5 风机设定    1000时为6000,系数为6000/1000
风机1待机频率 D1314风机1强化频率D1315风机2待机频率D1316风机2强化频率D1317风机2冷却频率D1318}
   if (signal=6) then
   begin
     ssendcommand:=sSendcommand+'03E9000001'; //write memory D1001开始9个字节;
     scontent:=inttohex(frmglass.splowheat.Value*10,4);
     ssendcommand:=sSendcommand+scontent;
     scontent:=self.calc_response_fcs1(sSendcommand);  //计算fcs;
     ssendcommand:=sSendcommand+scontent+'*'+chr(13);
   end;
   if (signal=7) then
   begin
     ssendcommand:=sSendcommand+'03EA000001'; //write memory D1002开始1个字节;
     scontent:=inttohex(frmglass.sphighheat.Value*10,4);
    ssendcommand:=sSendcommand+scontent;
     scontent:=self.calc_response_fcs1(sSendcommand);  //计算fcs;
     ssendcommand:=sSendcommand+scontent+'*'+chr(13);
   end;
   if (signal=8) then
   begin
     ssendcommand:=sSendcommand+'03EC000001'; //write memory D1004开始1个字节;
     scontent:=inttohex(frmglass.spqh.Value*10,4);
    ssendcommand:=sSendcommand+scontent;
     scontent:=self.calc_response_fcs1(sSendcommand);  //计算fcs;
     ssendcommand:=sSendcommand+scontent+'*'+chr(13);
   end;
   if (signal=9) then
   begin
     ssendcommand:=sSendcommand+'03ED000001'; //write memory D1005开始1个字节;
     scontent:=inttohex(frmglass.splq.Value*10,4);
     ssendcommand:=sSendcommand+scontent;
     scontent:=self.calc_response_fcs1(sSendcommand);  //计算fcs;
     ssendcommand:=sSendcommand+scontent+'*'+chr(13);
   end;
   if (signal=10) then
   begin
     ssendcommand:=sSendcommand+'0523000001'; //write memory D1315开始1个字节;
     scontent:=inttohex(frmglass.spfj1qh.Value*6,4);
     ssendcommand:=sSendcommand+scontent;
     scontent:=self.calc_response_fcs1(sSendcommand);  //计算fcs;
     ssendcommand:=sSendcommand+scontent+'*'+chr(13);
   end;
   if (signal=11) then
   begin
     ssendcommand:=sSendcommand+'0525000001'; //write memory D1317开始1个字节;
     scontent:=inttohex(frmglass.spfj2qh.Value*6,4);
     ssendcommand:=sSendcommand+scontent;
     scontent:=self.calc_response_fcs1(sSendcommand);  //计算fcs;
     ssendcommand:=sSendcommand+scontent+'*'+chr(13);
   end;
   if (signal=12) then
   begin
     ssendcommand:=sSendcommand+'0526000001'; //write memory D1318开始1个字节;
     scontent:=inttohex(frmglass.spfj3lq.Value*6,4);
     ssendcommand:=sSendcommand+scontent;
     scontent:=self.calc_response_fcs1(sSendcommand);  //计算fcs;
     ssendcommand:=sSendcommand+scontent+'*'+chr(13);
   end;
   if (signal=13) then
   begin
     ssendcommand:=sSendcommand+'03E8000001'; //write memory D1000开始1个字节;
     scontent:=inttohex(frmglass.spjgsj.Value*10,4);
     ssendcommand:=sSendcommand+scontent;
     scontent:=self.calc_response_fcs1(sSendcommand);  //计算fcs;
     ssendcommand:=sSendcommand+scontent+'*'+chr(13);
   end;
   if (signal=14) then
   begin
     ssendcommand:=sSendcommand+'03FC000001'; //write memory D1020开始1个字节;
     scontent:='FFFF';
     ssendcommand:=sSendcommand+scontent;
     scontent:=self.calc_response_fcs1(sSendcommand);  //计算fcs;
     ssendcommand:=sSendcommand+scontent+'*'+chr(13);
   end;
   if (signal=15) then
   begin
     ssendcommand:=sSendcommand+'03FD000001'; //write memory D1021开始1个字节;
     scontent:='CCCC';
     ssendcommand:=sSendcommand+scontent;
     scontent:=self.calc_response_fcs1(sSendcommand);  //计算fcs;
     ssendcommand:=sSendcommand+scontent+'*'+chr(13);
   end;
 result :=sbuf;
end;


procedure Tomron_Fins.closecomm;
begin
  self.fcomport.Connected:=false;
end;

constructor Tomron_Fins.create();
begin
{    fcomm:=Tcomm.Create(nil);
    fcomm.OnReceiveData:=self.comm_receivedata;
    fcomm.ByteSize:= _7;
    fcomm.ParityCheck:=true;
    fcomm.Parity:= Even;
    fcomm.StopBits:= _2;  }
    fcomport:=Tcomport.Create(nil);
    fcomport.OnRxChar:=self.comport_receivedata;
    fcomport.BaudRate:=br38400;
    fcomport.DataBits:=dbSeven;
    fcomport.StopBits:=sbTwoStopBits;
    fcomport.Parity.Check:=true;
    fcomport.parity.Bits:=prEven;
   inherited create();
end;



destructor Tomron_Fins.Destroy();
begin
  self.fcomport.Free;
end;

procedure Tomron_Fins.comport_receivedata(Sender: TObject;
  count: integer);
begin

end;

end.

⌨️ 快捷键说明

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