回复:每日一贴之读取和写入 PLC 变量 - 只针对 840D sl

已锁定

在城市挣扎的农村人

  • 帖子

    59
  • 精华

    0
  • 被关注

    0

论坛等级:侠客

注册时间:2021-12-10

黄金 黄金 如何晋级?

发布于 2024-05-28 11:39:16

11楼

展开查看
以下是引用老学童在2024-05-26 15:58:03的发言 >9楼

有知识产权协议,无法公开。

大致讲一下思路:

高速缓存区允许使用文中的所有数据类型,即使用前NC并不区分什么地址是什么数据,输入还是输出,整个缓存区的大小可以按$A_DBR[1024]计算需要4096个字节。


在PLC中定义一个数据块, 例如DB221, 在此数据块中必须根据需要提前规划输入和输出区大小以及输入输出区中各种数据类型,例如,0~100(通讯控制预留), 100~3000(NC→PLC), 3000~4096(PLC→NC),这些可以采用结构体,例如,名称R结构体为输入,名称W结构体为输出,其中再定义各种数据类型,例如,从地址300开始是NC发送到PLC各轴的坐标,可以简单用REAL型数组定义




这样整个数据区,所有地址都有确定的物理含义,例如,轴坐标首地址=100(R(NC→PLC)首地址)+300=400, $A_DBR[400]~$A_DBR[492]可以用于从NC将轴坐标发送至PLC,在我们的案例中这些轴坐标具有非常多的用途,例如:双横梁龙门机床防碰撞,当然还需要发送轴移动的剩余距离。

简单地应用可以仅写一个FB,此FB一般在OB1的开始调用,确保此FB在PLC的每个周期执行,在此FB中用FC21不断刷新上述R区和W区,例如:

老外做的比较复杂,自建功能块,用于每种数据传输时确认数据的有效性,在R区和W区各分出100个$A_DBB[...]作为旗语码,每次每种数据传输完成(收到相同旗语码)时,旗语码在自建的功能块中自动+1,这样,旗语码始终在1~255变化,不会重复。


在NC宏程序中用静态同步动作,根据旗语码($A_[3300])不等于0(通讯正常),发送新的轴坐标,并回复相同旗语码($A_[200]=$A_[3300])确认,例如:


这里$A_DBB[3300]是PLC发送的旗语码,后面NC发送轴坐标,最后将相同的旗语码发送的PLC,这样确保坐标的实时性和有效性,一旦PLC在要求的时间内未收到相同的旗语码,会立即发出通讯错误报警并停机。

特别提示,一个非常重要的问题,NC与PLC数据的字节顺序不同,数据不能直接使用,必须进行字节顺序转换,各种数据字节顺序转换的方法不同,因此,必须调用不同数据字节顺序转换专用FC,例如上述轴坐标,必须用浮点数字节顺序转换FC.


不能再说了,否则就涉嫌侵权了,主要还是出于爱国情怀,为提高国产机床使用水平出一份绵薄之力。

以下是引用hhyx9在2024-05-25 20:38:39的发言 >8楼:有例程可以学习下吗...

引用8楼详细内容:

有例程可以学习下吗?

以下是引用老学童在2024-05-25 19:04:42的发言 >7楼:高速数据缓冲区在进...

引用7楼详细内容:

高速数据缓冲区在进口机床应用非常广泛,但不是这样用的,文中给出的例子,根本体现不出“高速”的优势,实际使用中,所有宏程序中的$A_DBx[...]必须用同步动作根据条件或无条件接收和发送,而在PLC侧必须有专用的数据块保存全部数据区,用轮询的方式不断刷新(接收和发送)整个数据区的全部数据,只有这样才能确保NC和PLC数据的有效性(正确)和时效性,不然,毫无意义。

这个说明够详细了,很受益。

评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SINUMERIK

共有25501条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。