没有合适的资源?快使用搜索试试~ 我知道了~
首页modbus_tcp_server(codesys)
资源详情
资源评论
资源推荐
MODBUS TCP SERVER 在 LTI MOTION ONE 控制器上的实现 (Codesys)
一. 概述
由于客户的成本需求,客户想选择第三方的触摸屏幕和 LTI 的 MOTION ONE 进行通讯
(以太网),通讯接口选择了控制器本体的以太网接口,由于 MODBUS TCP SERVER 通
讯软件功能块不是 CODESYS 内核自有的块,需要另外购买,所以我利用 CODESYS 内部
原有的底层功能块(SYSockets.LIB)开发了一个 MODBUS TCP SERVER DEMO 程序,这
样 MOTION ONE 就可以和市面上几乎所有的触摸屏进行以太网通讯了。
以下是程序配置及源代码,经过和 MODSCAN 和威伦触摸屏的实际 MODBU-TCP 通讯,
验证了这个程序的功能,这个程序支持 01,03,05,06,15,16 MODBU-TCP 读写字,读
写位功能码。
VAR_GLOBAL
VIRTUALPOS: LREAL;
TEST_T:INT;
can_encoder_pos:UDINT;
input_byte:ARRAY[1..250] OF BYTE;
input_byte1:ARRAY[1..250] OF BYTE;
mw_area AT %MB1000:ARRAY[1..500] OF BYTE;
mx_area : ARRAY[1..512] OF BOOL;
output_byte: ARRAY[1..250]OF BYTE;
mw_temp AT%MW1000: ARRAY[1..500] OF INT;
write_len:INT;
send_do: BOOL;
mw_area_use AT %MW2000:ARRAY[1..500] OF INT;
ton2: TON;
test_trigger: BOOL;
t1: TON;
receive1_tmp:BYTE;
flag:BOOL;
test_lreal AT%MD1000 :LREAL;
EN_READ: BOOL;
en_camin: BOOL;
EN_CAM: BOOL;
addressPointer:POINTER TO SOCKADDRESS;
address:SOCKADDRESS;
ip:STRING:='192.168.39.100'; (*PLC IP ADDRESS*)
send:STRING:='0001t';
receive:STRING;
receive1:ARRAY[1..300] OF BYTE;
port: WORD:=502; (*MODBUS——TCP 端口*)
objectArray:ARRAY[0..6] OF REAL;
tcp_connect_state:BOOL;
tcp_connect_time1:TON;
tcp_connect_time2:TON;
get_last: BOOL;
protocol_id:INT;
device_id:INT;
send1:ARRAY[1..300] OF BYTE;
torque_real AT%MD2012:REAL;
acttorque: LREAL;
actvelocity:LREAL;
virtual_speed AT %MD2016:DINT;
tttt AT %MD2000:ARRAY[1..100] OF DINT;
Master_axis_ref:axis_ref;
switch_master:INT;
start_syn:BOOL;
in_syn:BOOL;
end_of_profile:BOOL;
END_VAR
PROGRAM TCP_socket_test
VAR
result: BOOL;
socketId: DINT;
terminate: BOOL;
dwValue: DINT;
bResult: BOOL;
test_state: BOOL;
send: STRING;
error_now: BOOL;
time_trigger: BOOL;
SysSockGetLastError1:SysSockGetLastError;
MasterSocketList:SOCKET_FD_SET;
SlaveSocketList:SOCKET_FD_SET;
SelectTimeOut:SOCKET_TIMEVAL;
TCPindex: INT;
diSize: DINT;
TCPMax: DINT;
tcp_state: INT;
SocketHandle:DINT;
move_ref: INT;
END_VAR
PROGRAM :TCP_socket_test
address.sin_addr:=SysSockInetAddr(ip);
address.sin_family:=SOCKET_AF_INET;
address.sin_port:=SysSockHtons(port);
addressPointer:=ADR(address);
IF terminate=FALSE THEN
CASE tcp_state OF
0:
socketId := SysSockCreate(SOCKET_AF_INET,SOCKET_STREAM,0);
IF socketId <> SOCKET_INVALID THEN
dwValue := 1;
(*Set the option that we can reuse 'old' port addresses *)
SysSockSetOption(socketId, SOCKET_SOL, SOCKET_SO_REUSEADDR,
ADR(dwValue), SIZEOF (dwValue));
tcp_state := 10;
END_IF
10:bResult := SysSockBind(socketId, ADR(address), SIZEOF(address));
IF bResult THEN
tcp_state := 20;
END_IF
20:
bResult := SysSockListen(socketId, 255);
IF bResult THEN
MasterSocketList.fd_count := 1;
MasterSocketList.fd_array[0] := socketId;
tcp_state := 30;
END_IF
30:
SlaveSocketList:=MasterSocketList;
SelectTimeOut.tv_sec := 30;
SelectTimeOut.tv_usec := 0;
diSize := SysSockSelect(SOCKET_FD_SETSIZE, ADR(SlaveSocketList), 0, 0,
ADR(SelectTimeOut));
IF diSize > 0 THEN
tcp_state := 50;
剩余10页未读,继续阅读
zambulotajyf
- 粉丝: 0
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- ExcelVBA中的Range和Cells用法说明.pdf
- 基于单片机的电梯控制模型设计.doc
- 主成分分析和因子分析.pptx
- 共享笔记服务系统论文.doc
- 基于数据治理体系的数据中台实践分享.pptx
- 变压器的铭牌和额定值.pptx
- 计算机网络课程设计报告--用winsock设计Ping应用程序.doc
- 高电压技术课件:第03章 液体和固体介质的电气特性.pdf
- Oracle商务智能精华介绍.pptx
- 基于单片机的输液滴速控制系统设计文档.doc
- dw考试题 5套.pdf
- 学生档案管理系统详细设计说明书.doc
- 操作系统PPT课件.pptx
- 智慧路边停车管理系统方案.pptx
- 【企业内控系列】企业内部控制之人力资源管理控制(17页).doc
- 温度传感器分类与特点.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论7