西门子提供的功能块一直只有FB或者FC却没有可视化的图标和面板,而且也不是开源。
2--WinCC按PowerTag收费,也就是按变量数来收费的,现在项目成本就是竞争力,节省成本能帮助提高中标的可能性。比如我一直会使用BOOL类型的变量上传到WinCC来操作和控制,电机启停和手自动切换等等都可以打包成一个控制双字,仅仅需要上传一个双字变量。
3--公司内程序一直没有一个标准,工程师的个人能力良莠不齐,写的程序可用性可靠性不可控制,项目完成质量很多时候是工程师个人能力决定的,拼音编程,汉字编程,上传各种数据区变量以及大量无用程序导致系统及其臃肿。
4--工程师战友离开,接手的工程师需要花大量的时间去熟悉项目程序当项目需要改造或者售后时
5--想要有自己特色的功能块,提升公司在业主那里技术实力形象,功能块针对项目针对行业开发,尤其显得公司在该行业是有沉淀的,让业主信服。
6--新工程师老是问我一样的问题,作为老工程师有带他们的义务,我要解放自己,要做一套完整的东西让他们统一学习使用。
等等其它的不说了,
先替西门子打个广告!现在就有一个这样免费的库,SCL开发,包含22个功能块,都开源!!而且使用SiVArc开发
https://support.industry.siemens.com/cs/cookie/109749508/basic-process-library-for-tia-portal-(s7-1200-s7-1500-runtime-professional)-and-basic-process-library-for-wincc-v7-with-example-projects-and-faceplate-s7-block-libraries?dti=0&lc=en-CN
为了不跑题,回来说我使用的TIA功能块,下面的帖子我会讲到我使用的功能块。我相信一个帖子的简单展示并不能就让观帖者明白怎么如何去开发一个功能块,复制粘贴一段代码并不能有效提升工程师的能力,授之以鱼不如授之以渔。
下面讲讲我是怎么样去开发功能块的途径:
1 --找西门子项目实例,开源的代码。比如西门子BST实例,它提供了开源SCL的FB以及可视化的一套解决方案,包括我后来自己的库开发都借鉴了BST example
西门子BST
https://support.industry.siemens.com/cs/cookie/31624179/example-blocks-for-wincc-v7-and-step-7-v13-(tia-portal)-for-s7-1200-and-s7-1500-in-scl?dti=0&dl=en&lc=zh-CN
通过熟读BST一句一句的代码分析,我获得了很多的技巧和方法,也开阔了我的视野,利用BST模板我至少开发了约十几个类似具有可视化的功能块。
2-- 网上开源SCL代码,比如很多人都知道FB41该连续PID控制已经在网上有反编译的SCL代码,而且带中文注释,这很容易变成自己的代码,而且稍加改造就能优化出更丰富功能的FB,比如给SP设定值增加设定值斜坡上升下降,给增加输出值的追踪功能,而且FB41的代码一分解就可以得到
P比例
I积分
D微分
三个功能块,比如积分功能块就是对误差进行累加,我们把误差改成对过程值进行累加就可以用于流量累计。而且FB41有浮点数误差处理,使用的也是梯形积分方式,更准。针对PID我又找到了针对SP值的斜坡功能Ramp,Rate,针对PV值的一阶滤波,二阶滤波,针对MV的分程控制等。
分程控制
http://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1433533&b_id=66&s_id=84&num=12#anch
斜坡功能
http://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1433529&b_id=66&s_id=84&num=28#anch
3-- 开源的C代码等高级语言代码很多很多,这些代码用SCL解释一下就变成了可以在PLC中执行的指令,比如我就找了一段代码来做拟合分散的点得出最优的曲线,最小二乘法拟合曲线。比如需要工艺人员设置一些离散的点来描述工艺中两个过程量的关系,工艺人员只能设置一个大概的趋势,绘出后可能就是图中的蓝色点,拟合一下就能更平滑也能干掉一些明显不符合要求的点。
这些功能块,都伴随我从S7走到TIA。这就回到了题目。