上位机与PLC基于Modbus交互,参考的文章:modbus协议讲解,上位机与PLC交互_花开莫与流年错_的博客-CSDN博客

中型PLC使用基础汇报:https://pan.baidu.com/s/1UmbaMECPd0oYZPm70rYKbg

初始化

// IO初始化
IO_point := ADR(START_IO);
// 当前指针类型每次复位8个位,复位START_IO开始的5*8个位
FOR i := 0 TO num_IO BY 1 DO
IO_point^ := 0;
IO_point := IO_point + 1;
END_FOR // 伺服参数初始化,根据伺服个数修改for循环次数
FOR i := 0 TO 1 BY 1 DO
单轴变量[i].gear_in := FALSE;
单轴变量[i].转矩运行 := FALSE;
单轴变量[i].速度运行 := FALSE;
单轴变量[i].绝对位移 := FALSE;
单轴变量[i].相对位移 := FALSE;
END_FOR // 确定伺服通讯连接正常
IF ETHERCAT.xConfigFinished AND ETHERCAT.xDistributedClockInSync THENIF fangxian.wCommunicationState=100 THENEtherCAT_State:=TRUE;ELSE EtherCAT_State:=FALSE;END_IF
END_IF

自动模式

// 动作分步运行,完成动作后运行步骤 + 1
CASE 运行步骤 OF0 : // 给定变量初始值、标志位复位运行步骤 := 运行步骤 + 1;1 : // 动作12 : // 动作23 : // 动作3ELSE // 动作完成处理END_CASE

伺服控制:

1、定义伺服名(Axis_Name)

// 使用时根据现场伺服完成下列伺服命名
TYPE Axis_Name :
(虚主轴 := 0,放线轴 := 1
);END_TYPE

2、伺服控制参数-结构体(PointAxis)

// 单轴控制相关参数
TYPE PointAxis :STRUCT使能 : BOOL; // 基础参数使能ok : BOOL;暂停 : BOOL;快速停机 : BOOL;回原 : BOOL;故障复位 : BOOL;模式切换 : BOOL;重启运行 : BOOL; // 遇到故障伺服重启重启完成 : BOOL; // 运行中遇到故障可进行伺服重新初始化转矩运行 : BOOL; // 转矩运行转矩大小 : LREAL;绝对位移 : BOOL; // 绝对运行绝对位移方向 : MC_Direction;绝对位置 : LREAL;相对位移 : BOOL; // 相对运行相对距离 : LREAL;速度运行 : BOOL; // 速度控制速度运行方向 : MC_Direction;速度运行速度 : LREAL := 100;加速度值 : LREAL := 100; // 运动参数减速度值 : LREAL := 100;加加速值 : LREAL := 10;原点位置 : LREAL;gear_in : BOOL; // 进入电子凸轮gearNum : DINT; // 齿轮比分子gearDeno : UINT; // 齿轮比分母gearMaster : AXIS_REF_SM3; // 电子凸轮主轴控制模式 : SMC_CONTROLLER_MODE;Axis : POINTER TO AXIS_REF_ETC_DS402_CS;Server: POINTER TO ETCSlave;END_STRUCTEND_TYPE

3、定义伺服控制参数数组(Axis)

//{attribute 'qualified_only'}VAR_GLOBAL// 0.。10中的10需要根据总的伺服数量设置,并将对应Axis_Name改变单轴变量 : ARRAY[0..1] OF PointAxis;
END_VAR

4、伺服动作实现参数(MC_PointAxis)

(1)变量定义:

 FUNCTION_BLOCK MC_PointAxisVAR_IN_OUTPoint_Axis : PointAxis;END_VARVARpower : MC_Power; // 使能halt : MC_Halt; // 暂停stop : MC_Stop; // 停机home : MC_Home; // 回零reset : MC_Reset; // 故障复位reinitDrive : SMC3_ReinitDrive; // 重启驱动setControllerMode : SMC_SetControllerMode; // 设置控制模式setTorque : SMC_SetTorque; // 转矩运行moveAbsolute : MC_MoveAbsolute; // 绝对位移moveRelative : MC_MoveRelative; // 相对位移moveVelocity : MC_MoveVelocity; // 速度运行gearIn : MC_GearIn; // 进入电子凸轮gearOut : MC_GearOut; // 退出电子凸轮camTableSelect : MC_CamTableSelect; // cam表设置camIn : MC_CamIn; // 进入cam表camOut : MC_CamOut; // 退出cam表// 后续修改去使能 : BOOL;END_VAR

(2)函数调用:

// 伺服基础指令power(Axis := Point_Axis.Axis^,
Enable := TRUE,
bRegulatorOn := Point_Axis.使能 AND (NOT 去使能),
bDriveStart := Point_Axis.使能,
Status      => Point_Axis.使能ok);  // 暂停
halt(Axis := Point_Axis.Axis^,
Execute := Point_Axis.暂停,
Deceleration := Point_Axis.减速度值);// 重启伺服
reinitDrive(Axis := Point_Axis.Axis^,
bExecute := Point_Axis.重启运行,
bVirtual := FALSE, // 目前默认为实轴,不是虚轴
bDone => Point_Axis.重启完成);// 停机
stop(Axis := Point_Axis.Axis^,
Execute := Point_Axis.快速停机,
Deceleration := Point_Axis.减速度值,
Jerk := Point_Axis.加加速值);// 回零
home(Axis := Point_Axis.Axis^,
Execute := Point_Axis.回原,
Position := Point_Axis.原点位置);// 故障复位
reset(Axis := Point_Axis.Axis^,
Execute := Point_Axis.故障复位);// 设置控制模式
setControllerMode(Axis := Point_Axis.Axis^,
bExecute := Point_Axis.模式切换,
nControllerMode := Point_Axis.控制模式);// 转矩运行
setTorque(Axis := Point_Axis.Axis^,
bEnable := Point_Axis.转矩运行,
fTorque := Point_Axis.转矩大小);// 绝对位移
moveAbsolute(Axis := Point_Axis.Axis^,
Execute := Point_Axis.绝对位移,
Position := Point_axis.绝对位置,
Direction := Point_axis.绝对位移方向,
Acceleration := Point_Axis.加速度值,
Deceleration := Point_Axis.减速度值,
Jerk := Point_Axis.加加速值);// 相对位移
moveRelative(Axis := Point_Axis.Axis^,
Execute := Point_Axis.相对位移,
Distance := Point_Axis.相对距离,
Acceleration := Point_Axis.加速度值,
Deceleration := Point_Axis.减速度值,
Jerk := Point_Axis.加加速值);// 速度运行
moveVelocity(Axis := Point_Axis.Axis^,
Execute := Point_axis.速度运行,
Velocity := Point_axis.速度运行速度,
Direction := Point_axis.速度运行方向,
Acceleration := Point_Axis.加速度值,
Deceleration := Point_Axis.减速度值,
Jerk := Point_Axis.加加速值);// 加入电子凸轮运行,主轴为PointAxis中设置主轴。
// 使用需根据需要设置齿轮比,或PID实时调节齿轮比
gearIn(Execute := Point_Axis.gear_in,
Master := Point_Axis.gearMaster,
Slave := Point_Axis.Axis^,
RatioNumerator := Point_Axis.gearNum,
RatioDenominator := Point_Axis.gearDeno);// 退出凸轮同步控制
gearOut(Execute := NOT Point_Axis.gear_in,
Slave := Point_Axis.Axis^);// cam表之后根据实际使用再配置使用

5、参数更新(update)

// 伺服参数更新程序需要配置为优先级最高,且执行周期和同步周期成正比
// 将伺服与结构体变量参数映射使用,需要分为三个部分,根据后续需要添加轴
// 定时更新逻辑程序中的数据与伺服匹配动作// 轴参数映射
// 单轴变量[虚主轴].Axis := (ADR(Axis_Virtual_Main));
单轴变量[放线轴].Axis := (ADR(fangxian));// 伺服参数映射修改
单轴变量[放线轴].Server := (ADR(IS620N));// 运动函数功能块调用更新PointAxis_放线轴(Point_Axis := 单轴变量[放线轴]);

汇川中型PLC使用ST语言基础相关推荐

  1. 汇川am600运动指令详解_汇川中型PLC AM400系列产品型号说明及功能介绍

    产品介绍 内置EtherCAT总线 可带4或者8个伺服轴(其中AM401可带4轴,AM402可带8轴),支持同步定位,电子凸轮,插补功能 可同时扩展125个机架,可扩展32000个IO点 内置CAN总 ...

  2. 汇川中型PLC与威纶通触摸屏标签通讯

    汇川中型PLC采用的是CodeSys的架构,实现标签通讯的方法如下: 一.PLC端配置 1.添加"符号配置" 2.选择标签并生成XML文件 首次添加"符号配置" ...

  3. 汇川中型PLC——ST变量

    变量的创建 , 变量名 [冒号] 数据类型  [分号]; 创建变量并赋初值,变量名[冒号]数据类型[冒号等号]值[分号]; 如果赋值超过其类型的取值范围,值的下面会标波浪线: 字符串用单引号表示: 时 ...

  4. 汇川中型PLC CPU占有率过高分析

    一.CPU占有率定义 0%-89%:PLC运行稳定.逻辑执行.总线同步.IO刷新.数据同步.数据保存都有时间保证.90%-100%:PLC运行稳定性降低.主要影响: ● EtherCAT运行稳定性难以 ...

  5. 汇川小型PLC梯形图编程系列教程(七):数值存储与二进制数据知识详解

    原文链接:汇川小型PLC梯形图编程系列教程(七):数值存储与二进制数据知识详解 PLC数据存储原理简介 H123U小型PLC内部采用的是32位的处理器,PLC中的数据处理和电脑中的数据处理基本是一致的 ...

  6. PLC中ST语言的几种程序流程控制语句

    PLC中ST语言的几种程序流程控制语句 ST语言是IEC61131-3中规定的5中标准语言之一,目前常用见品牌的PLC都支持这种语言(施耐德,AB可以直接选择创建该类型的程序段或者功能块,西门子的略微 ...

  7. 一体化Ethercat通信伺服电机在汇川H5U PLC上的应用案例介绍(下)

    内容介绍了一体化低压伺服Ethercat通信的电机在汇川H5UPLC上的使用,一体化Ethercat通信伺服电机在汇川H5U PLC上的应用案例介绍(上)主要讲解环境的搭建以及使用AutoShop软件 ...

  8. LabVIEW与汇川H5U PLC通信 官方协议,报文读取,安全稳定

    LabVIEW与汇川H5U PLC通信 官方协议,报文读取,安全稳定. 通讯配置,辅助测试. 无程序网络通讯实现. 常用功能一网打尽. 1.命令帧读写. 2.支持 I16 I32 Float 批量读写 ...

  9. 一体化Ethercat通信伺服电机在汇川H5U PLC上的应用案例介绍(上)

    内容介绍了一体化低压伺服Ethercat通信的电机在汇川H5UPLC上的使用,本篇主要讲解环境的搭建以及使用AutoShop软件的在线调试功能,简单控制电机位置.速度模式运行: 一.系统构成 本系统主 ...

最新文章

  1. python 字符转义_【课堂笔记】Python基础语法:字符串
  2. Linux服务器运行sh文件提示权限不够解决方法?飞腾服务器Permission denied问题授权方法
  3. 论文推荐 | 2019中国卫星导航年会论文集
  4. Hibernate 一级缓存,二级缓存,查询缓存
  5. 你真的了解Python吗?这篇文章可以让你了解90%,赶紧收藏!
  6. Java多线程:线程休眠
  7. Java孩子父母类_父母和子女复选框
  8. 半导体重磅!英飞凌宣布100亿美元收购赛普拉斯
  9. 面向对象的七种设计原则
  10. Spring Cloud Zuul--服务网关
  11. PHP仿百度实现弹窗登录效果,js仿百度登录页实现拖动窗口效果
  12. mysql解压版超详细安装以及各种避坑指南
  13. 使用SecureCRT下载服务器日志到本地windows
  14. Java聊天室的设计与实现毕业设计
  15. 网页视频html转换ppt,ppt转web ppt可以转换为视频文件?
  16. 计算机专业本科毕业论文字数要求,计算机科学与技术专业本科毕业设计论文要求...
  17. 服务器类型有哪些如何选择
  18. C++中的dynamic_cast和static_cast转化
  19. 成交锐减 基差大增 股指期货与股指同步性九年回顾
  20. html邮箱代码怎么写_网络资讯:电子邮箱格式怎么写

热门文章

  1. 2022年华南师范大学自考本计算机信息管理课程实验
  2. 心情随笔20180718
  3. 终于开通了博客好开 ,发几个搞笑的事让大家 更开心一下
  4. 解决用Python 操作数据库插入数据,数据库里面却没有数据的问题
  5. 主机与VMware虚拟机ping不通,网络连接中没有VMware
  6. 小程序中里的bindinput_微信小程序输入框input
  7. 医药客户再签约 易趋助力巨翊科技实现项目管理标准化、规范化
  8. python天气数据分析论文_《Python数据分析与机器学习实战-唐宇迪》读书笔记第9章--随机森林项目实战——气温预测(2/2)...
  9. 10大程序员实用网站,好网站不藏私
  10. maps-api-v3_Google Maps API和自定义叠加层