S函数在变量中存储系统时间

时间:2014-03-31 08:22:31

标签: matlab simulink systemtime s-function

我要做的是将系统时间保存在变量(全局或常量)中。我在Simulink中使用S函数。问题是,当我将系统时间的值存储在变量中时,它会不断递增,所以当我执行当前系统时间与存储在我的变量中的时间之间的差值总是为0.你认为解决方案存储的解决方案是什么?变量中的系统时间以及我应该使用全局变量或常量的变量类型。如果您有任何答案,请举个例子,因为我是Matlab的新手。 P.S我使用C语言作为S函数。

1 个答案:

答案 0 :(得分:1)

听起来好像是在模拟开始时尝试存储系统时间,然后在模拟过程中将系统时间与存储值进行比较。如果是这样,那么你应该使用一个R-Work向量来存储初始系统时间。

所以你需要mdlInitializeSizes

ssSetNumRWork(S, 1);

然后在mdlStart中你想要

real_T *P_Tinit=ssGetRWork(S);

P_Tinit[0]=((real_T) clock())/CLOCKS_PER_SEC;

然后当你想使用值时,

real_T itime;
itime=ssGetRWorkValue(S,0);

(以上假设您知道如何实际获得系统时间,即包含正确的库,从您的问题中听起来就像您一样。)