恭喜,你发布的帖子
发布于 2020-06-19 12:32:13
2楼
我已经解决了,用了中断和SCL,创建了各个DB块,现在快要交付给客户了,OB30里源码如下:
IF "Data".Collect."Start" AND "Data".Collect.Count <= 300 THEN
// 获取实时轴位置信息,触发条件满足则进行采集数据,300为DB块设置的长度
"MC_ReadParam_DB_1"(Enable := "AlwaysTRUE",
Parameter := "轴_1".ActualPosition,
Value := "Data".Collect.实时位置信息);
"Data".数据处理.实时弧度放大1000 := "Data".Collect.实时位置信息 * 1000;
"Data".Collect.实时位置信息_Dint := REAL_TO_DINT("Data".数据处理.实时弧度放大1000);
"1、模拟量转换"();
// 获取实时模拟量值,并换算成需要的类型
IF "Data".自动流程.标志位.轴已经开始下压 THEN
"电压(压力传感器-下)".压力值["Data".Collect.Count] := "Data".Collect."Pressure _Dint";
"电压(踏板霍尔N.O1-下)".电压反馈["Data".Collect.Count] := "Data".Collect."Accelerator-1_Dint";
"电压(踏板霍尔N.O2-下)".电压反馈["Data".Collect.Count] := "Data".Collect."Accelerator-1_Dint";
"轴实时弧度-下".弧度值["Data".Collect.Count] := "Data".Collect.实时位置信息_Dint;
"Data".Collect.Count := "Data".Collect.Count + 1;
END_IF;
IF "Data".自动流程.标志位.轴已经开始返回 THEN
"电压(压力传感器-上)".压力值["Data".Collect.Count] := "Data".Collect."Pressure _Dint";
"电压(踏板霍尔N.O1-上)".电压反馈["Data".Collect.Count] := "Data".Collect."Accelerator-1_Dint";
"电压(踏板霍尔N.O2-上)".电压反馈["Data".Collect.Count] := "Data".Collect."Accelerator-1_Dint";
"轴实时弧度-上".弧度值["Data".Collect.Count] := "Data".Collect.实时位置信息_Dint;
"Data".Collect.Count := "Data".Collect.Count + 1;
END_IF
;
END_IF;
然后西门子的SET_CINT的单位不是ms,是μs,但是组态的时候却是ms,我是博图V15,教材上组态都是μs,好奇怪,然后自复位好像西门子的也有问题,我写了一段一个m20.0导通时计时500ms后复位掉m20.0,死活不行,交叉引用都看过了,用自己的位去复位自己貌似在西门子这里不行?
请填写推广理由:
分享
只看
楼主