部分非本人原创,整理在一起旨在给大家提供方便!WW.W_PLC※JS_C,OM-PL,C-技.术_网
WWW.PLCJS.COM——可编程控制器技术门户
41:用C编程解决授权点数不够用的问题(acsun提供)P.L.C.技.术.网——可编程控制器技术门户
WWW_PL※CJS_COM-PLC-技.术_网
当需要的工艺参数超过WinCC版本限制的Tag数目,可以用C语言编程实现多个工艺参数打包成一个Tag传送.例如某个配料称重系统有146个参数超过了WinCC的128个Tag的限制就可以用C语言编程决这一问题而不需要购买更高的授权.WWW.PLCJS.COM——可编程控制器技术门户
P.L.C.技.术.网——可编程控制器技术门户
基本思想就是把多个参数在下位机内存中连续排列然后在WinCC中定义一个Tag它的长度是多个参数之和取得这个Tag后编程将其分成多个参数WW.W_PLC※JS_C,OM-PL,C-技.术_网
W1WW_P4LCJS_COM-PLC-技.术_网
例如下位机有两个参数LTN44001和LTN44023都是16位整数分别存放在DD99.DW146和DD99.DW148——可——编——程——控-制-器-技——术——门——户
在WinCC中定义一个外部Tag命名为PackageTag类型为32位整数并联地址为DD99.DBD146再定义两个内部tag名为LTN44001和LTN44023在 Global Script全局脚本中C语言编程如下——可——编——程——控-制-器-技——术——门——户
UnionWWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
{WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
Long Dword——可——编——程——控-制-器-技——术——门——户
Int Word[2]WWW_P※LCJS_COM-PLC-)技.术_网
}unionWWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
Union.Dword=GetTagDword("PackageTag")plcjs.技.术_网
SetTagWord("LTN44001",Union.Word[0])WWW_PLCJS_COM-PLC-技.术_网
SetTagWord("LTN44023",Union.Word[0])plcjs.技.术_网
这样两个参数LTN44001和LTN44023就通过一个Tag传送上来了理论上只要下位机内存足够可以传送任意数量的参数而不受WinCC版本外部Tag数目的限制.WWW_P※LCJS_CO※M-PLC-技-.术_网
WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
42:如何在WinCC里用C语言调用SQL语言? WWW_PL※CJS_COM-PLC-技.术_网
1、创建一个SQL文件。——可——编——程——控-制-器-技——术——门——户
此文件在ISQL中创建,文件内容是所希望执行的SQL语句。 plcjs.技.术_网
2、在WinCC的C Script中编写程序调用此SQL文件,如以下程序所示: P.L.C.技.术.网——可编程控制器技术门户
#i nclude "apdefap.h"WWW_PLC※JS_COM-PmLC-技.术_网
WW.W_PLC※JS_C,OM-PL,C-技.术_网
void OnLButtonDown(char* lpszPictureName, WWW_PLCJS_COM-PLC-技.术_网
——可——编——程——控-制-器-技——术——门——户
char* lpszObjectName,WWW_P※LCJS_COM-PLC-)技.术_网
WWW_PLCJS_COM-PLC-技.术_网
char* lpszPropertyName, WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
UINT nFlags, int x, int y)WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
WW.W_PLCJS_COM-PLC-技.术_网
{WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
char*a="C:\\SIEMENS\\Common\\SQLANY\\ISQL-q-b-cWWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
UID=DBA;PWD=SQL;DBF=E:\\testsql\\testsqlRT.DB;WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
W1WW_P4LCJS_COM-PLC-技.术_网
DBN=CC_testsql_99-12-03_12:48:26R;WWW_P※LCJS_CO※M-PLC-技-.术_网
——可——编——程——控-制-器-技——术——门——户
READWWW_PLCJS@_COM%-PLC-技.术_网
WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
E:\\testsql\\test.sql";WWW_P※LCJS_CO※M-PLC-技-.术_网
WWW_P※LCJS_COM-PLC-)技.术_网
printf("%s\r\n",a);WWW.PLCJS.COM——可编程控制器技术门户
WWW_PL※CJS_COM-PLC-技.术_网
ProgramExecute(a);WWW_PL※CJS_COM-PLC-技.术_网
WWW_PL※CJS_COM-PLC-技.术_网
}WWcW_PLCJS_COM-PLC-技.术_网
WWW.PLCJS.COM——可编程控制器技术门户
下面是一个简单的SQL文件内容:P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
WWW.PLCJS.COM——可编程控制器技术门户
select * from pde#hd#t#test;WWW_PLCJS_COM-PLC-技.术_网
P.L.C.技.术.网——可编程控制器技术门户
output to E:\\test2.txt FORMAT asciiP.L.C.技.术.网——可编程控制器技术门户
注意:文件名及路径中不要带空格。WW.W_PLC※JS_C,OM-PL,C-技.术_网
WWW_PL※CJS_COM-PLC-技.术_网
WWcW_PLCJS_COM-PLC-技.术_网
43:如何整点启动归档? WW.W_PLC※JS_C,OM-PL,C-技.术_网
在"Global Script"下的Project functions编写函数:cyclicarchive WWW_PLCJS_COM-PLC-技.术_网
P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
BOOL cyclicarchive()WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
WWW_P※LCJS_COM-PLC-)技.术_网
{WW.W_PLCJS_COM-PLC-技.术_网
WW.W_PLC※JS_C,OM-PL,C-技.术_网
#pragma code ("kernel32.dll");WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
WW.W_PLCJS_COM-PLC-技.术_网
void GetLocalTime (SYSTEMTIME* lpst);WWW_PLC※JS_COM-PmLC-技.术_网
WWW_P※LCJS_COM-PLC-)技.术_网
#pragma code();WWW_P※LCJS_CO※M-PLC-技-.术_网
WWW.PLCJS.COM——可编程控制器技术门户
SYSTEMTIME time;WWcW_PLCJS_COM-PLC-技.术_网
WWW.PLCJS.COM——可编程控制器技术门户
Int t1;WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
W1WW_P4LCJS_COM-PLC-技.术_网
GetLocalTime(&time);WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
t1=time.wMinute;WWW_PL※CJS_COM-PLC-技.术_网
P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
if(t1==00)WWW_PL※CJS_COM-PLC-技.术_网
——可——编——程——控-制-器-技——术——门——户
{WWW.PLCJS.COM——可编程控制器技术门户
WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
SetTagBit("startarchive",1);WWW.PLCJS.COM——可编程控制器技术门户
WWcW_PLCJS_COM-PLC-技.术_网
return(BOOL)(GetTagBit("startarchive"));WW.W_PLC※JS_C,OM-PL,C-技.术_网
WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
}WWW_P※LCJS_COM-PLC-)技.术_网
P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
} WWcW_PLCJS_COM-PLC-技.术_网
WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
在Tagloging中的"Properties of process tag"中的"Archive Tag"tab下的Archiving type选择Cycle-selective,在"Event"标签下的"Start Event"内选择cyclicarchive函数。 WWW_P※LCJS_CO※M-PLC-技-.术_网
WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
44:如何在按键组合被禁用的情况下,从WinCC运行环境进入WinCC Control Center? WW.W_PLCJS_COM-PLC-技.术_网
最好是做一个按钮,该按钮需要用用户权限保护,在该钮中编写如下C-action: WWW_PLCJS@_COM%-PLC-技.术_网
WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
低于WinCC 5.0版本:WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
#pragma code ("user32.dll");WWW_PLC※JS_COM-PmLC-技.术_网
WW.W_PLCJS_COM-PLC-技.术_网
BOOL SetForegroundWindow(HWND);WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
#pragma code();W1WW_P4LCJS_COM-PLC-技.术_网
WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
HWND handle;P.L.C.技.术.网——可编程控制器技术门户
——可——编——程——控-制-器-技——术——门——户
handle=FindWindow("MCPFrameWndClass",NULL);WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
WWW_PLCJS@_COM%-PLC-技.术_网
If (!SetForegroundWindow(handle))WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
Printf ("\r\n SetForeground fails");WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
WWW_P※LCJS_CO※M-PLC-技-.术_网
WinCC 5.0版本以及更高的版本:WW.W_PLCJS_COM-PLC-技.术_网
WWW_PLC※JS_COM-PmLC-技.术_网
#pragma code("user32.dll");W1WW_P4LCJS_COM-PLC-技.术_网
plcjs.技.术_网
BOOL SetForegroundWindow(HWND);WWW_PLC※JS_COM-PmLC-技.术_网
WW.W_PLC※JS_C,OM-PL,C-技.术_网
#pragma code();WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
HWND handle;WWW_PLCJS_COM-PLC-技.术_网
WWW_P※LCJS_COM-PLC-)技.术_网
handle=FindWindow("WinCCExplorerFrameWndClass",NULL);plcjs.技.术_网
WWW_PLC※JS_COM-PmLC-技.术_网
If (!SetForegroundWindow(handle))WW.W_PLCJS_COM-PLC-技.术_网
WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
Printf ("\r\n SetForeground fails"); WWW_PLCJS@_COM%-PLC-技.术_网