📄 text1.c
字号:
////////////////////////////////////////////////////////////////////////////////////////
/////////* */////////////////////
/////////* 本示例完成读取PLC S7-300中的DB数据块整型数据的功能 */////////////////////
/////////* (仅用一个CPU315-2DP和PC编程器连接) */////////////////////
////////////////////////////////////////////////////////////////////////////////////////
#include <windows.h>
#include <stdio.h>
////////////////////////////////////
///*声明调用与PRODAVE相关的库函数*//
////////////////////////////////////
#include "Komfort.h"
#include "W95_s7.h"
#pragma pack(1)
adr_table_type plc_adr_table[2] = { {2,0,2,0}, /*PLC站地址为2,槽号为2*/
{0,0,2,0} }; /*PC编程器站地址为0,槽号为2*/
#pragma pack()
int main(int argc, char* argv[])
{
int error,res,i;
int dbno, amount,dwno;
unsigned short buffer[10],temp,temp1,temp2; /*buffer中的数据为16位,与PLC中的整型数据位一致*/
dbno=1; /*操作的DB块号为1*/
dwno=0; /*从第0个字(DW0)开始读取*/
amount=2; /*读取长度为2个数据字*/
////////////建立连接/////////////////////////
res = load_tool(1,"S7ONLINE",plc_adr_table); /*激活连接数为1;
使用的设备协议为S7ONLINE;
指向各连接部分的地址链表*/
res = new_ss(1);
error = db_read(dbno,dwno,&amount,buffer); /*将从DB块读取的数据字存放到缓冲数组buffer*/
///////////释放连接//////////////////////////
error = unload_tool();
/////////////////////////////////////////////////////////////////////////////////////////////
/////* 注意:buffer中存放的数据字是按照S7中的规范,与intel定义不同*/////////////////////////
/////* 需要转换高低字节显示! */////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////
for( i=0;i<amount;i++)
{
printf("%0x\n",buffer[i]);
temp=buffer[i];
temp1=temp<<8;
temp2=temp>>8;
temp=temp1+temp2;
buffer[i]=temp;
printf("%0x\n",temp2); /*显示低字节的高八位*/
printf("%0x\n",temp1); /*显示高字节的低八位*/
printf("%0x\n",buffer[i]); /*显示转换后的数据字*/
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -