手搓WinCC自定义功能块:从AS到OS的魔改指南
使用AS的自定义功能块与OS之间WINCC自定义功能块图标自定义功能块面板教程。 1.不是采用西门子APL面板实现。 2.AS可以采用LAD或者SCL语言生成功能块。 3.实现弹窗功能。 4.事件可以采用C动作或者VBS。 5. 在PCS7或者STEP7Wincc都可以实现。 6.可以提供实例源程序。搞工控的都知道西门子那套APL面板虽然方便但用久了总觉得像被套模板。今天咱们直接甩开APL用AS硬核搓自定义功能块再给WinCC整点带专属图标的骚操作。第一步AS里造个土制手雷先用SCL撸个带爆炸效果的功能块LAD也行但SCL写条件判断更爽FUNCTION_BLOCK FB_DiyPopup VAR_INPUT Trigger : BOOL; // 弹窗触发信号 MsgText : STRING[50]; END_VAR VAR bPopupActive : BOOL : FALSE; END_VAR IF Trigger AND NOT bPopupActive THEN // 置位内部弹窗激活标志 bPopupActive : TRUE; // 这里可以挂接OS的变量操作 SetTagBit(HMI_Popup_Flag, TRUE); SetTagChar(HMI_Popup_Text, MsgText); END_IF;这玩意儿核心逻辑就是个带自锁的触发机制注意SetTag系列函数是跨系统通信的关键。SCL的优势在于能直接操作绝对地址适合需要精细控制的老司机。第二步给功能块穿皮肤打开PCS7的Faceplate DesignerSTEP7用户用图形编辑器硬改新建32x32像素的BMP图标在块图标属性里勾选User-Defined把画好的爆炸图标比如塞进C:\Program Files\Siemens\...\Symbols路径看安装位置在CFC里插入功能块时右键属性选自定义图标有个坑要注意WinCC的全局调色板是硬编码的用PS做图标时记得把颜色索引限定在系统调色板否则显示会鬼畜。第三步WinCC弹窗C脚本在画面里藏个隐形按钮事件里挂C脚本#include apdefap.h void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) { // 读取AS传过来的消息 char msg[51]; GetTagChar(HMI_Popup_Text, msg, 50); // 动态创建弹窗 HWND hPopup OpenPictureWindowEx(Popup.pdl, 300, 200, SW_SHOW, PopupWindow); // 怼文本到弹窗里的静态文本控件 SetText(hPopup, StaticText1, msg); }用VBS也行但C脚本执行效率更高特别是需要高频触发时。注意OpenPictureWindowEx的参数单位是像素别按工程单位瞎填。避坑指南AS和OS时间戳不同步会导致触发丢失建议在功能块里加500ms延时确认图标更新后必须重启Simatic Manager才能生效跨系统变量建议用ARSEND/ARRCV功能块打包传输弹窗的.pdl文件里控件命名必须和C脚本里的完全一致完整实例包含AS功能块WinCC画面可以这么搞AS侧在CFC里拖出FBDiyPopup实例绑定到ARSENDWinCC侧用用户自定义对象封装弹窗控件组全局脚本里加个定时器清空弹窗标志位这么整下来你的WinCC面板既保留了西门子的稳定性又有了定制化的逼格。实测在PCS7 V9.0和STEP7 V5.6WinCC7.4都能跑设备树不同导致的变量绑定问题用交叉索引表能快速定位。使用AS的自定义功能块与OS之间WINCC自定义功能块图标自定义功能块面板教程。 1.不是采用西门子APL面板实现。 2.AS可以采用LAD或者SCL语言生成功能块。 3.实现弹窗功能。 4.事件可以采用C动作或者VBS。 5. 在PCS7或者STEP7Wincc都可以实现。 6.可以提供实例源程序。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2428228.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!