1 引言——关于codesys编程软件
codesys是德国3s-software公司PLC开发软件平台,codesys 为beckhoff、ABB、施耐德等主流自动化装备制造商提供严格符合PLCOPEN标准化组织的IEC61131-3标准编程。
Somachine(施耐德)软件基于Codesys平台,支持M218,M238、M258、M241、M262等系列产品,支持6种IEC编程语言,分别为:
Somachine支持IEC61131-3所描述的所有语言:
文本化的语言:
● 指令表(IL)
● 结构化文本(ST)
图形化的语言:
● 梯形图(LD)
● 功能模块图(FBD)
● 顺序功能流程图(SFC)
● 连续功能图(CFC)
支持一维, 二维, 三维数组,属于基本数据类型, 可以直接在 POU 或 GVL 中定义。
数组定义的语法规则:
<数组名>: ARRAY[<I1>. . <U1>, <I1>. . <U2>, <I3>. . <U3>]OF<基本数据类型>
其中, I1, I2, I3 为下限, U1, U2, U3 为上限;
例如定义二维3×3整数数组: ARRAY1 : ARRAY[0. . 2, 0. . 2] OF INT;
数组初始化:
示例: ARRAY1 :={1, 2, 3, 1, 2, 3, 1, 2, 3} ;
2 与多组变频器通讯及控制变轨式步进驱动器中的具体应用
2.1 控制功能的介绍
某机械设备电气控制原理图如图1所示:
图1 控制原理图
包含1个步进驱动器以及5个变频器,步进电机采用PTO脉冲输出形式,变频器采用Modbus通讯方式。
2.2 ABB ACS550系列变频器通讯简介
Modbus协议是Modicon公司开发的应用于电子控制器的一种通用语言,。在modbus通讯数据信息中,寄存器4****地址为****-1,例如40002地址对应0001。M218/M241 控制器内可配置2个 RS485 串口。
表1 设置参数
参数名
|
参数序号
|
参数值
|
参数含义
|
通讯初始化
|
9802
|
1
|
标准modbus
|
站号
|
5302
|
变频器站号
|
1,2,3,4,5。
|
波特率
|
5303
|
9.6K
|
|
奇偶校验
|
5304
|
2
|
8位,偶校验,停止位1位。
|
给定值信号源选择现场总线
|
1103
|
8
|
|
变量声明设置如下:
地址: STRING(INT#4);//定义“地址”字符型,数量为4。 (somachine软件支持中文字符编程(工程/工程设置/编译选项/allow unicode characters for identifiers)
新地址: ARRAY [1..5] OF STRING(INT#4):= ['2.1','2.2','2.3','2.4','2.5'];//定义“新地址”站号数组1~5类型为字符
站号:word;//定义“站号”类型为字,与变频器通讯ST语句程序如下:
B1(Enable:=true, //B1为500毫秒周期脉冲, 输出start触发Addm_1通讯功能块
Timelow:=t#500ms,
Timehigh:=t#500ms,
Out:=start)
Addm_1(Execute:=start,
Addr:=‘地址’,
AddrTable:=addm1000, //addm1000为管理通讯地址表
Done:=>,
Error:=>
CommError:=>
);
W1_var(Execute:=Addm_1_Done, //通讯功能块完成Done标志触发W1_Var读功能块
Addr:=add1000,
Timeout:=5,
ObjType:=objecttype.mw, //类型为%MW 整型
FirstObj:=1; //寄存器40002为给定值fer1,故起始值firstObj为1。
Quantity:=1;// 寄存器数量为1
Buffer:=ADR(fer1)// 缓存地址为fer1
Done:=>,
Busy;=>,
Aborted:=>,
Error:=>,
CommError:=>,
OperError:=>,
结束:=NOT BUSY;
);
//读完成或错误标志“结束”置位后,将站号加1,大于6后则置零,实现循环。如图2所示。
图2 站号循环程序截图
给点值fer1最大值(参数1105)对应为数值20000,触摸屏上对应地址应乘以整数40。触摸屏上变频器设置频率(最大值50.0)。变频器接线及参数设置完成后,可以观察参数5309(EFB状态)查看是否通讯成功,参数5319为设置的频率。
2.3 步进驱动的实现
SH-2404是数字式步进电机驱动器,采用最新32位DSP 技术, 能够满足大多数场合应用需要。 由于采用内置微细分技术, 即使在低细分的条件下, 也能够达到高细分的效果, 低中高速运行都很平稳, 噪音超小。适用于 39、 42、 57 两相步进电机。信号接口 PUL+和 PUL-为控制脉冲信号正端和负端; DIR+和 DIR-为方向信号正端和负端; ENA+和 ENA-为使能信号的正端和负端。电机接口 A+和 A-接步进电机 A 相绕组的正负端; B+和 B-接步进电机 B 相绕组的正负端。 当 A、 B 两相绕组调换时,可使电机方向反向。
电源接口 采用直流电源供电, 工作电压范围建议为20-50VDC, 电源功率大于100W。设置参数如下:
额定电流RMS 1.36A SW1/SW2/SW3 设为ON/OFF/ON
空载半流: SW4=OFF
细分数8 SW5/SW6/SW7/SW8 1600 设为OFF/OFF/ON/ON
电气接线如图3所示。
图3 步进电机驱动器接线图
2.4 步进运动功能实现说明
(1)运行前步进电机先向原点方向运行,PLC检测到原点接近开关上升沿停止,作为运行曲线的原点。输出模式选为脉冲/方向方式,寻原点类型选为短凸轮方式。如图4所示。
图4 步进运动功能实现
(2)设计运行曲线相对定位轨迹参见表2所示。
表2 相对定位运行轨迹
1
|
-7000
|
2
|
4000
|
3
|
-8000
|
4
|
5000
|
5
|
-9000
|
6
|
5000
|
7
|
-9000
|
8
|
5000
|
9
|
-9000
|
10
|
10000
|
11
|
-8000
|
12
|
12000
|
13
|
-9000
|
14
|
13000
|
15
|
-17000
|
16
|
20000
|
17
|
-18000
|
18
|
12000
|
19
|
-9000
|
20
|
13000
|
21
|
-8000
|
22
|
11000
|
23
|
-15000
|
24
|
16000
|
|
|
以上正负号表示与上次运动方向相同(正),相反(负)。
为此建立位移数组变量:
位移: ARRAY [1..24] OF DINT:= [-7000,4000,-8000,5000,-9000,5000,-9000,5000,-9000,10000,-8000,12000,-9000,13000,-17000,20000,-18000,12000,-9000,13000,-8000,11000,-15000,16000];//当每次位移结束时,将变量地址加1。程序截图如图5所示。
图5 步进运行程序截图
3 结束语
利用数组编写的程序简洁、清晰,可读性强,减轻了编程难度,减少了设计量,给设计人员提供了全新的思路。
参考文献
[1]叶胜前,王镜程,沈勇. 基于S7-1200实现数组某一列上下循环移动的方法研究[J].电工技术,2018第10期
[2]曹旗,乐立文.数组变量在 UniPro 编程中的应用[J].科技创新与应用,2016第22期
[3]时文飞.数组式编程方法在PLC编程中的应用[J].电气传动,2014年第1期
[4]周大志,樊石.数组式编程方法在PLC编程中的应用[J].自动化技术与应用,2009第6期
作者简介
潘旭峰(1976-) 男 高级技师 助理工程师 研究方向为工业自动化装备管理工程