在WINCC画面中,编辑了输入/输出对话框编辑的权限,提示输入时,显示没有许可权。
目前我想这样操作,当点击该输入/输出对话框时,自动弹出用户登录画面。我的问题就是,如何让下面的脚本在点击输入/输出对话框的时候运行。
用户登录调用的C脚本我已测试过。
#pragma code ("useadmin.dll")
#include "PWRT_api.h"
#pragma code()
PWRTLogin('1');
有没有其他可以实现的方法。
我明天就要到客户那边调试了,急盼各位大侠指点。
问题补充:
可以解释一下怎么把这个脚本添加,添加到哪儿去,怎么设置。万分感谢
最佳答案
1、如果给 I/O Field 组态了授权等级,而操作员等级不够的话,是不能够触发相应动作的。
2、解决办法就是不给该 I/O Field 组态权限,使用脚本判断当前用户是否满足授权等级,不满足则弹出登录对话框。
https://www.automation.siemens.com/WW/forum/guests/PostShow.aspx?HTTPS=REDIR&PostID=66599&language=en
补充:
1、将 I/O Field -> Properties -> Miscellaneous -> Authorization 设置为 <No access-protection>。
2、在 I/O Field -> Events -> Mouse -> Mouse Action 中添加下列脚本。
#pragma code ("useadmin.dll")
#include "PWRT_api.h"
#pragma code()
if (!PASSCheckLevelPermission(1))//1 为授权等级的数字值,对应 User Administrator 中 Function 的前一列 No.
PWRTLogin('1');
注意:
1、需要 WinCC 安装了 Basic Process Control 组件才会包含 PASSCheckLevelPermission 函数。
2、也可以将 PASSCheckLevelPermission 函数的返回值(1=具有该等级权限,0=无该等级权限)赋值到一内部变量,该内部变量连接至 I/O Field -> Properties -> Miscellaneous -> Operator-Control Enable 动态属性。
提问者对于答案的评价:
#pragma code("pdlrtapi.dll")
#include "pdlrtint.h"
#pragma code()
if (strcmp (GetTagChar ("@CurrentUser"), "管理员") <0 )
{
PASSLoginDialog(1);
}
if (strcmp (GetTagChar ("@CurrentUser"), "管理员") >0 )
{
PASSLoginDialog(1);
}
把
{
PASSLoginDialog(1);
}
换成
{ PDLRTAllowSetForegroundWindow(NULL,NULL,NULL);
PASSLoginDialog (SSMGetScreen( lpszPictureName ));
}
也是可行的。
在罗丹的提示下,用了一个笨方法,大家莫见笑
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc266100.html

微信扫一扫
支付宝扫一扫