万泉河:
@重庆-秦小安?跟你探讨个问题
秦小安:
群主客气了
咸鱼佬:
聆听大佬讲话
万泉河:
一个FB块, 一个参数需要被上位或者别的程序功调用修改,按你读的西门子的编程教条, 它应该应哪一种接口呢?IN, INOUT, OUT, STATIC ?
秦小安:
肯定,inout, 不用想
万泉河:
UDT呢?
秦小安:
在背景数据搞坑人
廖师爷工业4.0:
说来听听掉过什么坑
秦小安:
手册上明确说过不要从外部访问背景实例
秦小安:
udt接到inout
咸鱼佬:
这东西[破涕为笑][破涕为笑]
咸鱼佬:
我一直放IN OUT INOUT
廖师爷工业4.0:
Input/static
廖师爷工业4.0:
我目前用的是这两种
秦小安:
sicar 真是大杂烩非常臃肿
万泉河:
你去看看BST例子, STATIC里面的那些OP_XXX, 或者HMI_XXXX的变量,就是接给上位机的。
万泉河:
这是西门子在打西门子脸吗?
秦小安:
我知道,
追乌龟的蜗牛:
他们内部也不是铁通一块
追乌龟的蜗牛:
自己打自己
万泉河:
UDT再绑个全局变量上去, 我图个啥呢?
万泉河:
原本直接访问IDB数据就可以的,多此一举,增长了路线, 还增加了麻烦。
廖师爷工业4.0:
在西门子平台这样用我认为没问题。
但是跨平台移植的话就会掉到坑里了
廖师爷工业4.0:
因为不符合iec的标准
廖师爷工业4.0:
如果不能访问背景DB的话,封装就没有意义了
秦小安:
手册的意思是从外部修改风险不可预估
秦小安:
udt传输数据
廖师爷工业4.0:
逻辑层次自己处理好,就不存在这种风险
追乌龟的蜗牛:
虽然可能会被说,但是我自己还是外部不用背景数据。
廖师爷工业4.0:
最终也是背景DB
万泉河:
我直接从IDB把数据传走就是了。
廖师爷工业4.0:
不管怎么样也是一块绝对地址区域
廖师爷工业4.0:
不像临时变量那样每个周期会被覆盖
廖师爷工业4.0:
我现在的做法,把所有的参数设置,全部放到静态变量里面。上位机直接关联静态变量区域,直接设参数就可以
廖师爷工业4.0:
应该叫背景DB
咸鱼佬:
通常我都是不会让上位访问程序的背景DB
廖师爷工业4.0:
专门规划好让上位机访问的,为什么不能访问呢
廖师爷工业4.0:
说一下隐患在哪
咸鱼佬:
因为我的规划是统一一个DB给HMI,统一一个DB给上位机
秦小安:
[图片]
秦小安:
路径是这样的
廖师爷工业4.0:
关键的问题是标准化以后,可能最终的设备某一段也只有一个fb一个db了
万泉河:
UDT是个数据类型。 你假设换成REAL,看看你画了什么?@重庆-秦小安?
秦小安:
所有围绕udt
咸鱼佬:
直接访问背景DB我要排查问题,要断开或者排除干扰就好弄点
秦小安:
数据的核心在udt
咸鱼佬:
不是这么干,我的模板一直都是这样干
廖师爷工业4.0:
早些时候我也和你这样干
咸鱼佬:
因为有时候我搭配西门子触摸屏时直接优化DB整个块,搭配第三方就直接非优化它
咸鱼佬:
我不用改背景DB[破涕为笑]
廖师爷工业4.0:
但是后来为了让客户更好的能够理解这个程序,我把能删除DB全部干掉,发现这样做好像能够更加简洁
咸鱼佬:
我DB不多
廖师爷工业4.0:
我曾经有那么一段时间为了瘦简化这个程序,把能干的全部干掉,发现这样做是最省事的。
后来好几十个块被我干成了十几个块
咸鱼佬:
就一个用处一个DB
万泉河:
@咸鱼佬?要讲理论,而不是讲你怎么做的。
咸鱼佬:
一个工位统一一个DB
廖师爷工业4.0:
后来最终用户也说这让他们更好地去理解这个应用。设置参数也就更简单了
咸鱼佬:
但是你这样做对接第三方不是很麻烦吗?
咸鱼佬:
要链接很多地方了吧
廖师爷工业4.0:
因为我的程序最终封装成了一个很大的FB,代表了某一段的全部功能
或者已经不能叫FB,可以叫他为一个应用程序
如果你已经把所有的功能做成了一个应用程序,在它的背景DB改东西就是合理的了.
秦小安:
[图片]
廖师爷工业4.0:
你是体验不到这个的优势,但是我说的弊端是不符合iec标准,不好跨平台移植
秦小安:
编程的重点放在数据(udt)上了,而不是FB
廖师爷工业4.0:
Udt不就是一个数据类型
万泉河:
你把UDT反而画没了。
秦小安:
后一张图你们画好一点
李纯辉:
为什么我会觉得背景本质上就是UDT呢
秦小安:
后一张图是送给反udt 联盟的
廖师爷工业4.0:
UDT 在标准化程序中必不可少的
李纯辉:
有了UDT和函数 就可以自己做出FB
SIN¥:
李纯辉:
UDT实例就是背景
廖师爷工业4.0:
UDT 根据工艺对象提前定义好的数据结构,不存在你说的背景DB的问题
廖师爷工业4.0:
你自己手工建立了一个DB也可以调用udt啊
SIN¥:
你们怎么还讨论这个呀,我上来就整的博图,博图上就是数据块给上位机,触摸屏,之类的,还有多重背景
咸鱼佬:
让我老湿来说下数据
SIN¥:
我认为都是很自然的呀,为何你们还要讨论
鲱鱼罐头:
封装的太大就没必要了
廖师爷工业4.0:
比如把一个变频器的通信弄了一个udt
那么后面的100个同样的变频器就可以用同一个udt
鲱鱼罐头:
就学常规功能可以封装
SIN¥:
反正我以前没有整过其他各种PLC
鲱鱼罐头:
PLC的语言太弱了
SIN¥:
一开始就是个博图
鲱鱼罐头:
有些东西很难做到封装
SIN¥:
也就现在整三菱才发现FC还这样用
廖师爷工业4.0:
难归难,但是也是能做的好一点的
廖师爷工业4.0:
你如果要做一个控制系统,不用自己到现场调试的,又要让用户很快就能把东西搞定的,你就会想着怎么去做了
SIN¥:
毛难,就是新东西接受起来不容易
鲱鱼罐头:
比如我以前封装过凸轮
鲱鱼罐头:
凸轮点要确定好的
鲱鱼罐头:
你很难封装
鲱鱼罐头:
这个数组长度要确定
SIN¥:
就像一直用网线通信一样,现在才知道还有各种数据线,真日了狗了
廖师爷工业4.0:
变频器的应用算不算是一个封装呢
鲱鱼罐头:
你怎么封装
咸鱼佬:
我连控制逻辑也是封装的
咸鱼佬:
客户只需要看状态机就好了
廖师爷工业4.0:
变频器不就封装的很好吗?开放接口,用户自己调整
咸鱼佬:
全部用状态机调用的
鲱鱼罐头:
你数组怎么传进去
SIN¥:
包里四五种数据线,最近好不容易搞个三菱Q系列,还怀疑了网线咋不好用
万泉河:
@Liao?即便UDT,也必须基于DB才能生存啊。
SIN¥:
一个UDT班30人
鲱鱼罐头:
PLC能用的东西就那么点
咸鱼佬:
失策
SIN¥:
高一UDT一班
SIN¥:
高一UDT二班
廖师爷工业4.0:
是的
SIN¥:
高一UDT三班
SIN¥:
高一UDT四班
SIN¥:
高一UDT五班
廖师爷工业4.0:
不过好像印象中也能在临时变量搞搞
万泉河:
是的, TEMP中也可以定义UDT
鲱鱼罐头:
为什么叫UDT不叫STRUCT这种常规名字呢
SIN¥:
@Liao?也能搞,在栈上运行
厚德:
就是个数据类型
廖师爷工业4.0:
就是一个数据类型
SIN¥:
静态变量在堆上运行
廖师爷工业4.0:
提前规划好的一个数据架构
SIN¥:
数据类型=集合
廖师爷工业4.0:
你哪天想改就到这个udt里改,所有用上的地方一起跟着改
万泉河:
所以,有人老把UDT当成真实数据的时候, 我认为是他把UDT想象得太高深了。 或者是压根自己也没理解。
廖师爷工业4.0:
最大的亮点就在这里
SIN¥:
要标准化,就要建立维数,分组
廖师爷工业4.0:
否则哪天你将加点什么功能,挨个去改的话,那就完蛋了
SIN¥:
就像xy成了个平面一样
SIN¥:
当成函数好了
SIN¥:
将输入输出进行映射有个好处,无论图纸设计怎么规划点,进PLC之前,一一对应上映射的点就行了
廖师爷工业4.0:
廖师爷工业4.0:
总体规划上来说,如果把规划做得好,也是能够做的蛮标准的架构的
咸鱼佬:
@Liao?几号上班?
廖师爷工业4.0:
并不是说plc不能做标准化,你的规划,你的各方面做不做的了标准化.
你说能那PLC就能
廖师爷工业4.0:
我们估计得20号了
咸鱼佬:
所以我从不做标准化
咸鱼佬:
我只做模板,根据公司习惯,客户习惯,用户习惯等等因素去制定模板。
咸鱼佬:
就为了偷懒
咸鱼佬:
20号,太迟了。
秦小安:
[图片]
秦小安:
[图片]
秦小安:
数据是核心
万泉河:
能保证数量一致, 并完全一一对应吗?
廖师爷工业4.0:
有啥节目搞啊?
SIN¥:
博图现在名称在整个程序里都是唯一的,不像其他PLC那样,名字可以重复
咸鱼佬:
没,我那么早上班……
SIN¥:
这是博图最大的优势
咸鱼佬:
别这么说
咸鱼佬:
欧姆龙跟倍福同样不能
SIN¥:
三菱就不行
咸鱼佬:
应该说支持标签语言的的都不行
厚德:
标签化的PLC都是唯一
咸鱼佬:
包括基恩士等等
SIN¥:
其他PLC能符号寻址吗
咸鱼佬:
趋势呀
万泉河:
AB
SIN¥:
只要唯一,就能一一对应
万泉河:
没见谁家允许标签重名呀!
SIN¥:
试试三菱
咸鱼佬:
三菱的那叫局部标签
SIN¥:
反正就难受
咸鱼佬:
而且它的本质是占用通用寄存器的
SIN¥:
唉
SIN¥:
慢慢理顺就好了
咸鱼佬:
没发现你用这东西时候必须预留各类寄存器么
咸鱼佬:
不聊了,吃饭