广东湘恒智能科技有限公司
主营产品: 西门子PLC,西门子模块,西门子触摸屏,西门子变频器,西门子伺服电机驱动,电缆,西门子全系列
西门子授权代理-华南区西门子PLC-S7-1500 S7-400PLC 西门子s7 200 smart代理商
西门子MODBUS TCP通讯(下)

一、配方写入PLC

IF "1秤_配方使用".配方写入 = TRUE THEN

    "1_MODBUS TCP数据".MC1.MB_DATA_PTR[0] := "1秤_配方数据块".自动清零间隔;

    "1_MODBUS TCP数据".MC1.MB_DATA_PTR[1] := "1秤_配方数据块".运行判稳超时;

    "1_MODBUS TCP数据".MC1.MB_DATA_PTR[2] := "1秤_配方数据块".定值方式;

    "1_MODBUS TCP数据".MC2.MB_DATA_PTR[0] := "1秤_配方数据块".配方号;

    "1_MODBUS TCP数据".MC2.MB_DATA_PTR[1] := "1秤_配方数据块".目标值;

    "1_MODBUS TCP数据".MC2.MB_DATA_PTR[2] := "1秤_配方数据块".快加提前量;

    "1_MODBUS TCP数据".MC2.MB_DATA_PTR[3] := "1秤_配方数据块".中加提前量;

    "1_MODBUS TCP数据".MC2.MB_DATA_PTR[4] := "1秤_配方数据块".落差值;

    "1_MODBUS TCP数据".MC2.MB_DATA_PTR[5] := "1秤_配方数据块".零区值;

    "1_MODBUS TCP数据".MC3.MB_DATA_PTR[0] := "1秤_配方数据块".加料前延时;

    "1_MODBUS TCP数据".MC3.MB_DATA_PTR[1] := "1秤_配方数据块".快加禁判时间;

    "1_MODBUS TCP数据".MC3.MB_DATA_PTR[2] := "1秤_配方数据块".中加禁判时间;

    "1_MODBUS TCP数据".MC3.MB_DATA_PTR[3] := "1秤_配方数据块".慢加禁判时间;

    "1_MODBUS TCP数据".MC3.MB_DATA_PTR[4] := "1秤_配方数据块".定值保持时间;

    "1_MODBUS TCP数据".MC3.MB_DATA_PTR[5] := "1秤_配方数据块".夹袋后延时;

    "1_MODBUS TCP数据".MC3.MB_DATA_PTR[6] := "1秤_配方数据块".松袋前延时;

    "1_MODBUS TCP数据".MC3.MB_DATA_PTR[7] := "1秤_配方数据块".卸料延时;

    "1_MODBUS TCP数据".MC4.MB_DATA_PTR[0] := "1秤_配方数据块".加料关闭至慢加所需脉冲个数;

    "1_MODBUS TCP数据".MC5.MB_DATA_PTR[0] := "1秤_配方数据块".加料关闭至快加所需脉冲个数;

    "1_MODBUS TCP数据".MC6.MB_DATA_PTR[0] := "1秤_配方数据块".加料电机加速时间;

    "1_MODBUS TCP数据".MC6.MB_DATA_PTR[1] := "1秤_配方数据块".加料电机减速时间;

END_IF;


二、个别数据,点击写入数据时触发定时器,设定若干秒时间进行写入,平时更新该数据

"IEC_Timer_0_DB_130".TP(IN:="1秤_配方使用".配方写入,

                        PT:=#设定时间,

                        Q=>#脉冲输出,

                        ET=>#计时);

IF NOT "IEC_Timer_0_DB_130".Q THEN   

   "1_MODBUS TCP数据".MC2.MB_DATA_PTR[4] := "1_MODBUS TCP数据".MC8.MB_DATA_PTR[0];

ELSE

    "1_MODBUS TCP数据".MC2.MB_DATA_PTR[4] := "1秤_配方数据块".落差值;

  END_IF;

三、配方根据配方号进行保存

IF "1秤_配方使用".配方保存 = TRUE AND "1秤_配方使用".配方号 = 1 THEN

    "1秤_配方1" := "1秤_配方数据块" ;

END_IF;

IF "1秤_配方使用".配方保存 = TRUE AND "1秤_配方使用".配方号 = 2 THEN

    "1秤_配方2" := "1秤_配方数据块" ;

END_IF;

IF "1秤_配方使用".配方保存 = TRUE AND "1秤_配方使用".配方号 = 3 THEN

    "1秤_配方3" := "1秤_配方数据块" ;

END_IF;

IF "1秤_配方使用".配方保存 = TRUE AND "1秤_配方使用".配方号 = 4 THEN

    "1秤_配方4" := "1秤_配方数据块" ;

END_IF;

IF "1秤_配方使用".配方保存 = TRUE AND "1秤_配方使用".配方号 = 5 THEN

    "1秤_配方5" := "1秤_配方数据块";

END_IF;

IF "1秤_配方使用".配方保存 = TRUE AND "1秤_配方使用".配方号 = 6 THEN

    "1秤_配方6" := "1秤_配方数据块" ;

END_IF;

IF "1秤_配方使用".配方保存 = TRUE AND "1秤_配方使用".配方号 = 7 THEN

    "1秤_配方7" := "1秤_配方数据块" ;

END_IF;

IF "1秤_配方使用".配方保存 = TRUE AND "1秤_配方使用".配方号 = 8 THEN

    "1秤_配方8" := "1秤_配方数据块" ;

END_IF;

IF "1秤_配方使用".配方保存 = TRUE AND "1秤_配方使用".配方号 = 9 THEN

    "1秤_配方9" := "1秤_配方数据块" ;

END_IF;

IF "1秤_配方使用".配方保存 = TRUE AND "1秤_配方使用".配方号 = 10 THEN

    "1秤_配方10" := "1秤_配方数据块" ;

END_IF;

四、配方根据配方号进行写入

IF "1秤_配方使用".配方读取 = TRUE AND "1秤_配方使用".配方号 = 1 THEN

    "1秤_配方数据块" := "1秤_配方1" ;

END_IF;

IF "1秤_配方使用".配方读取 = TRUE AND "1秤_配方使用".配方号 = 2 THEN

    "1秤_配方数据块" := "1秤_配方2" ;

END_IF;

IF "1秤_配方使用".配方读取 = TRUE AND "1秤_配方使用".配方号 = 3 THEN

    "1秤_配方数据块" := "1秤_配方3" ;

END_IF;

IF "1秤_配方使用".配方读取 = TRUE AND "1秤_配方使用".配方号 = 4 THEN

    "1秤_配方数据块" := "1秤_配方4" ;

END_IF;

IF "1秤_配方使用".配方读取 = TRUE AND "1秤_配方使用".配方号 = 5 THEN

    "1秤_配方数据块" := "1秤_配方5" ;

END_IF;

IF "1秤_配方使用".配方读取 = TRUE AND "1秤_配方使用".配方号 = 6 THEN

    "1秤_配方数据块" := "1秤_配方6";

END_IF;

IF "1秤_配方使用".配方读取 = TRUE AND "1秤_配方使用".配方号 = 7 THEN

    "1秤_配方数据块" := "1秤_配方7" ;

END_IF;

IF "1秤_配方使用".配方读取 = TRUE AND "1秤_配方使用".配方号 = 8 THEN

    "1秤_配方数据块" := "1秤_配方8" ;

END_IF;

IF "1秤_配方使用".配方读取 = TRUE AND "1秤_配方使用".配方号 = 9 THEN

    "1秤_配方数据块" := "1秤_配方9" ;

END_IF;

IF "1秤_配方使用".配方读取 = TRUE AND "1秤_配方使用".配方号 = 10 THEN

    "1秤_配方数据块" := "1秤_配方10" ;

END_IF;

写配方数据DB块时,注意数据格式及数据命名是一样的,相同的DB块数据类型,可以使用UDT数据类型(这个本人一开始每想到,简练的DB块都是复制粘贴,如果添加一个数据或减少一个数据,那么相关DB块都用更改,很玛法)。


展开全文
相关产品
拨打电话 微信咨询 发送询价