工控人生

欢迎光临
我们一直在努力

在PCS7中如何通过CFC编程读取CPU时间并在WinCC中显示?

在项目实施中,使用的PCS7,需要实现一个功能,其中一部分就是读取CPU的时间。这个功能实现很简单,标准库里有个块READ_CLK,也就是SFC1,直接调用它就能读到CPU的时间了。

但是我想在WinCC中以时分秒来显示,就需要进一步操作了,因为这个块读到的时间不能在WinCC中调用中被调用。

方法一:

1、新建一个DB,在里面创建一个Date_And_Time的数据类型变量,名为PLC_Time,用来存储READ_CLK读到的时间数据;

DB

2、打开符号表,新建变量T_HH、T_mm、T_ss,数据类型为Byte,用来分别存储时分秒的数据,并打上旗帜的标识,以使tag在WinCC中调用;

符号表变量

3、先将READ_CLK读到的时间数据存储到DB定义好的变量中,再使用Move块,将DB中的这个变量拆解为字节,将对应的字节复制到对应的T_HH、T_mm、T_ss变量中;

程序

4、下载编译后,就可以在WinCC中调用T_HH、T_mm、T_ss这三个变量用来显示时分秒了,注意IO域的显示类型Data Format为Hexadecimal。

WinCC显示CPU时间

方法二:

另外参考了官方文档,还可以使用以下方法读取CPU的时间:

1、新建一个FB块,指定FB号和名字,同时在FB属性中设置S_m_c为true。

2、在FB中定义临时变量和Out变量具体如下,注意Out变量的设置S_m_c为true,以便WinCC直接调用tag:

DB中的变量

DB中的变量

3、在FB写入如下STL程序:

STL

4、在CFC中调用这个FB,编译下载到CPU后,可监视到如下时间数据:

CFC

5、编译WinCC,就可以在WinCC调用步骤4中CFC对应的Out部分数据了,注意IO域的显示类型Data Format为Hexadecimal。

WinCC显示CPU时间

上面两个方法最终实现在WinCC中显示CPU时间的效果如下:

WinCC显示CPU时间

注意,Date_And_Time数据类型共有8个字节,每个字节对就的意义如下,供参考:

数据说明

附上STL代码:

CALL “READ_CLK”
RET_VAL:=#RET
CDT :=#ReadDateAndTime

L P##ReadDateAndTime
LAR1
//Byte0 –> Year
L B [AR1,P#0.0]
T #Year

//Byte1 –> Month
L B [AR1,P#1.0]
T #Month

//Byte2 –> Day
L B [AR1,P#2.0]
T #Day

//Byte3 –> Hour
L B [AR1,P#3.0]
T #Hour

//Byte4 –> Minute
L B [AR1,P#4.0]
T #Minute

//Byte5 –> Second
L B [AR1,P#5.0]
T #Second

//word6 –> Millisecond
L W [AR1,P#6.0]
SRW 4
T #Millisecond

//Byte7 –> Week
L B [AR1,P#7.0]
L B#16#F
AW
T #Week

未经允许不得转载:编程 » 在PCS7中如何通过CFC编程读取CPU时间并在WinCC中显示?
分享到:

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址