首页 理论教育 优化代码:避免同时访问变量的问题

优化代码:避免同时访问变量的问题

时间:2026-01-23 理论教育 小霍霍 版权反馈
【摘要】:仅应使用该函数访问“BOOL”类型的变量,以避免发生同时访问相同变量的问题。系统函数使用同一变量作为输入和输出值。如果在报警事件上组态了函数且变量未在当前画面中使用,则无法确保在PLC中使用实际的变量值。该系统函数将使诸如执行某些功能与用户有关的版本成为可能。尚未确认的报警也被删除。

西门子的人机界面有很多函数,可分为记录函数、用户管理函数、画面函数、位处理函数、打印函数、设置函数、报警函数、配方函数、系统函数、键盘函数、用于画面对象的热键函数和其他函数。通常越高档的人机界面函数越丰富,使用越方便。以下介绍几个常用的函数。

1.位函数

(1)InvertBit

其作用是对给定的“BOOL”型变量的值取反。如果变量现有值为1(真),它将被设置为0(假);如果变量现有值为0(假),它将被设置为1(真)。

(2)ResetBit

将“BOOL”型变量的值设置为0(假)。

(3)SetBit

将“BOOL”型变量的值设置为1(真)。

(4)SetBitWhileKeyPressed

只要用户按下已组态的键,给定变量中的位即设置为1(真)。在改变了给定位之后,系统函数将整个变量传送回PLC。但是并不检查变量中的其他位是否同时改变。在变量被传送回PLC之前,操作员和PLC只能读该变量。仅应使用该函数访问“BOOL”类型的变量,以避免发生同时访问相同变量的问题。

2.计算函数

(1)IncreaseValue

将给定值添加到变量值上,用方程表示为X=X+a。

系统函数使用同一变量作为输入和输出值。当该系统函数用于转换数值时,必须使用帮助变量。可使用系统函数“SetValue”将变量值分配给帮助变量。

如果在报警事件上组态了函数且变量未在当前画面中使用,则无法确保在PLC中使用实际的变量值。通过设置“连续循环”采集模式可以改善这种情况。

(2)SetValue

将新值赋给给定的变量。该系统函数可用于根据变量类型分配字符串和数字。

3.画面函数

(1)ActivateScreen

将画面切换到指定的画面。使用“ActivateScreenByNumber”系统函数可以从根画面切换到永久性窗口,反之亦然。

(2)ActivatePreviousScreen(https://www.xing528.com)

将画面切换到在当前画面之前激活的画面。如果先前没有激活任何画面,则画面切换不执行。最近调用的10个画面被保存。当切换到不再保存的画面时,会输出一条系统消息。

4.用户管理

(1)Logoff

在HMI设备上注销当前用户。

(2)Logon

在HMI设备上登录当前用户。

(3)GetUserName

在给定的变量中写入当前登录到HMI设备用户的用户名。如果给出的变量具有控制连接,则用户名在PLC上也可用。该系统函数将使诸如执行某些功能与用户有关的版本成为可能。

(4)GetPassword

在给定的变量中写入当前登录到HMI设备的用户的口令。确保给定变量的值未显示在项目中的其他位置。

5.报警函数

(1)EditAlarm

为选择的所有报警触发“编辑”事件。如果要编辑的报警尚未被确认,则在调用该系统函数时自动确认。

(2)ShowAlarmWindow

隐藏或显示HMI设备上的报警窗口。

(3)ClearAlarmBuffer

删除HMI设备报警缓冲区中的报警。尚未确认的报警也被删除。

(4)AcknowledgeAlarm

确认选择的所有报警。该系统函数用于HMI设备没有ACK键时或报警屏幕的集成键不能使用时。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈