直播课堂
HOME
直播课堂
正文内容
倍福plc 编程 倍福PLC学习:编写函数块及简单调试
发布时间 : 2024-11-24
作者 : 小编
访问数量 : 23
扫码分享至微信

倍福PLC学习:编写函数块及简单调试

今天这篇文章我们来编写一个简单的电机控制函数块,并将其下载到倍福CX5020控制器进行测试,以熟悉TwinCAT3环境下基本的编程步骤。

打开TwinCAT3(TC3),按照上一篇文章《倍福PLC学习:扫描EtherCAT I/O子站并测试模块》介绍的内容新建工程项目并扫描EtherCAT子站,项目名称为“motorControl”。

在左侧项目树的“PLC”节点下右键单击,选择“Add new item(添加新内容)”,添加新的PLC项目,命名为“CPU1”,如下图所示:

添加完成后,“CPU1 Project”中会有POUs、GVLs、DUTs等文件夹。其中,POU是程序组织单元,GVL是全局变量列表,UDT是用户自定义变量。我们计划编写一个电机控制的函数块,因此在“POUs”文件夹右键单击,在弹出的对话框中选择“添加(Add)”→“POUs”,如下图所示:

在弹出的“添加POU”对话框中,选择功能块(Function Block),命名为motorControl,编程语言选择ST语言,如下图所示:

在函数块motorControl中声明变量,其中:

VAR_INPUT是输入变量,包含电机启动 、停止信号;VAR_OUTPUT是输出变量,包含输出信号(线圈);VAR_STAT是静态变量,包含沿信号检测变量;

如下图所示(注意变量不区分大小写):

编写代码如下图所示:

为了分配参数,我们新建全局变量列表:GVL1,并添加变量如下图所示:

接下来要在主函数(MAIN)中调用电机控制函数块。首先在变量列表中声明motorControl的实例,命名为“motorControl1”,编写控制代码如下图所示:

单击工具栏“Build”→“Build CPU1”编译PLC程序。

单击工具栏“PLC”→“Download”下载PLC程序。

单击工具栏“PLC”→“Login”登录到在线状态,或者工具栏的快捷按钮,如下图所示:

如果PLC处于未运行状态,单击“Start(启动)”使其运行。本例程为了给出电机启动信号,我们将全局变量“startBtn1”的“Prepared Value”设置为“TRUE”,并单击工具栏“Write Values”按钮将该值写入到PLC中,如下图所示:

此时可以看到主程序MAIN中电机输出信号为TRUE,如下图所示:

如果想让函数输出对应到实际的输出模块,在“CPU 1 instance”→“PLCTask Outputs”→“GVL1.coilKM”,将其对应到“Linked to”指定的输出模块即可。

好了,关于倍福PLC编写函数块及简单调试就先介绍到这里。

用PLC的指针实现字符串转byte(Codesys平台)一文极简搞懂指针

第一步,确定配置

Codesys平台下的倍福Twincat2软件,和MES上位机,进行TCP/IP通信,进行数据的收发,只能收发Byte,不能直接收发字符串(很多PLC之间的通信都有这个问题,很难处理)。

第二步,问题描述

最近调了个改造设备,改造前是德国老外写的程序,MES程序里面数据交互有用到指针的地方没看明白,故在此深入研究一番,老外的程序过于复杂,我就单独把这块功能给拿出来做个功能块程序模拟下,如下图(先不用看这段程序,下面一步一步分解):

第三步:技术逻辑分析

MES和PLC通讯,字节传输,如果我想把PLC的字符串传给MES,必须要把PLC的字符串转变成字节,再传给MES,这不是很简单吗,正好程序有标准得STRING TO BYTE 指令,转一下不久OK了?

于是乎我写了一条这样的指令:srrr为byte,sKeyword为字符串。

不模拟不知道,一模拟吓一跳;不管我输入什么字母,srrr结果都是0 ?????

但是输入数字结果就对了如下图:输入字符串20,srrr为16进制的14,对的上。

这条指令是只能把数字类型的字符串转换成数字,例如字符串格式的数字‘20’,用STRING TO BYTE指令,只能把字符串‘20’,转换成十进制的数字20,字母是无法转换的。

我了个去!!

这个转换指令一点用也没有啊!!!

没办法,只有深入研究一下,字母怎么转byte了。

首先我模拟plc需要发一串字符“ABCDEFG”给MES,转换过程的数据结构如下图所示:

“ABCDEFG”转换成BYTE需要7个BYTE作为存储空间,每个字母用一个BYTE,通过ASCII码转换成10进制或16进制表示。

首先大家想到的一般都是每个字符ASCII码转换成数字表示,再组合起来用,发送过去,就可以了。但是这种方法麻烦,如果有上千个字符,一个个转,就相当花时间了。

下面就介绍用指针的方法处理这类问题.如下图:

1/先定义sKeyword字符串,这个是我要发送给MES但是还没想到好方法发过去的字符串;

2/定义一个指针pKeyword指向一个byte,存储字符sKeyword的地址;

3/定义一个指针pSendToMes指向一个byte,存储需要发送给MES的byte的地址(程序里定义strSendDate为2000个byte);

4/定义一个结构strSkeyWordDate, 这个作用是把每个字符串的值都按顺序存储在这个结构里,最终发给MES。

程序解析如下:

pKeyword:=ADR(sKeyword);

把sKeyword的地址写入指针pKeyword;

pSendToMes:=ADR(strSkeyWordDate);

把strSkeyWordDate的地址写入指针pSendToMes;

FOR iCounter:=1 TO LEN(sKeyword) BY 1

循环指令,循环字符串sKeyword的长度值,有两个字符就循环两次,三个字符就循坏三次;

DO

pSendToMes^:=pKeyword^;

^为取值指令,把pKeyword存储的地址里第一个byte的值,给pSendToMes的第一个Byte(为什么是第一个byte的值,因为指针指向一个byte)

pKeyword:=pKeyword+1;

指针存储的地址值加1,即指向pKeyword存储里的第二个byte。

pSendToMes:=pSendToMes+1;

指针存储的地址值加1,即指向pSendToMes存储里的第二个byte。

END_FOR

如果我发的字符串为ABCDEFG,那么会经过7个for循还,第一次循环给strSkeyWordDate的第一个字节赋值为41(程序为16进制表示),也就是大写的A,依次反复七次,strSkeyWordDate的前7个字节为16进制的41 42 43 44 45 46 47,ASCII翻译过就是ABCDEFG,这就完美解决了,字符串转Byte的需求。

第四步:技术分析指针数据

结合以上程序如下图,比如sKeyword的值是ABCDEFG,pKeyword为对应第一个字节的地址45492,pKeyword^为地址45492提取的值41,pKeyword+1则是地址加1,地址变为45493,对应的值为42.循环七次得到想要的数据。

OK!就分析到此,我是明白差不多了,有疑问评论区问我!!

相关问答

倍福PLC怎么快速入门?

倍福PLC与一般的PLC还不一样,要倍福PLC入门先需要了解软件的使用,在有指令的的应用,倍福由于是用ST语言写程序,相当于C语言编程,会C语言编程上手会快很多倍福...

倍福plc如何上传程序?

要上传倍福PLC的程序,首先需要连接PLC和计算机。可以使用编程电缆将PLC与计算机连接起来。然后,使用倍福PLC编程软件,如倍福PLC编程软件或倍福PLC编程工具,...

西门子STEP7通过以太网怎样与,倍福TWINCATPLC通讯?

西门子PLC和倍福的PLC以太网通讯协议不一样的,需要通过转换网关转一下。西门子PLC和倍福的PLC以太网通讯协议不一样的,需要通过转换网关转一下。

倍福plc程序怎么解密?

1.解密倍福PLC程序是可能的。2.因为倍福PLC程序通常采用特定的加密算法进行保护,使其难以被非授权人员解读和修改。但是,通过逆向工程和破解技术,可以尝试解...

为什么我的电脑和倍福PLC连结不上?

电脑侧上位机的SIEMENS软件里面,设置PG/PC接口,选择对应网卡,IP地址和PLC一个网段但不能重复,网关相同。通讯对象MAC地址填写PLC的MAC地址就行了。不过你的...

德国倍福plc支持MODBUS通讯?

这个是没有的,带modbustcp功能的,都得是带网卡的控制器才可以呀这个是没有的,带modbustcp功能的,都得是带网卡的控制器才可以呀

倍福el2008模块还要导程序吗?

倍福EL2008模块是否需要导程序,这主要取决于具体的应用场景和控制需求。倍福EL2008模块是一个8通道数字输出端口扩展模块,主要用于工业自动化控制领域。它具备...

修改倍福plc的ip步骤?

修改倍福PLC的IP步骤如下:1.打开适用于倍福PLC的编程软件(如GXWorks2)。2.连接PLC和计算机。确保计算机与PLC之间有可靠的连接,可以是通过以太网连接或串...

倍福plc支持profibus-dp总线吗?

倍福PLC只是一个CPU模块,如果你想用总线通讯,买一个总线模块就行了,倍福的profibus-DP总线模块型号是BK3010,BK3100,BK3110|PROFIBUS总线耦合器。以上...

施耐德plc编程软件是什么?

wido,小型plc,可完成一般的自动化任务,比西门子S7-200性能稍弱,编程平台是TwidoSoft或TwidoSuite;M218,小型plc,可完成一般的自动化任务,比西门子S7-200.....

 潘孝政  谷洋 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2024  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部