
                        6SL3040-0NA00-0AA0 
	6SL3040-0NA00-0AA0
 
	SPARE PART*** SIMOTION DRIVE-BASED CONTROLLER EXTENSION CX32; INVERTER CONTROL MODULE; TO INCREASE DRIVE COUNT ON SIMOTION D4X5; INTERFACES: 4 DI, 4 DI/DO, 4 DRIVE-CLIQ
 
	SIEMENS 上海赞国自动化科技有限公司 
	绘芯人机界面与单片机通讯 
	中低压集团作为全球领先的中低压配电领域供应商,为基础设施、工业应用及楼宇提供全系列的中低压配电产品、系统和解决方案。集团为常规电厂和新能源电厂提供可靠的中低压配电设备,为大型城市和农村地区的配电网络提供小型智能变电站,为绿色城市以及高效节能电网夯实基础,使实施智能电网成为可能,并对供电可靠性和电网稳定性提供保障。作为中国中低压配电领域长期可靠的合作伙伴,集团可“一站式”提供面向行业的全线中低压配电产品、系统和解决方案。石油、天然气、冶金、采矿、船舶和制造等众多行业都可从集团的定制供电解决方案中显著获益。
                        
联系人:黄勇(销 售 经 理)
商务QQ:77956468
传真:  021 - 67633621
手机:  13701633515
24小时业务咨询热线:021-31660605
我司只销售西门子原装正品,享受西门子免费一年保修,欢迎来电洽谈!
单片机与绘芯人机界面通信有两个方案:一是用modbus—rtu协议,二是自由通讯协议;
本实例采用武汉绘芯科技有限公司的人机界面作为参考,因为公司提供一系列的技术支持和公布单片机源代码,开发工程方便有效。
公司网站:http://www.ebnar.com
方案比较:
方案一  modbus—rtu协议:
     优点:工业标准通讯协议,具有通用性,,传输数据量大
     缺点:需要时间去了解协议的格式和以及按照规定编写通讯程序(我们提供MODBUS-RTU源代码,客户直接移植就可以,不必费心)
方案二   自由协议:
     优点:数据格式客户自己定义,灵活多变,定制性强,可以模拟任何已知报文的通讯协议
     缺点:传输数据量不大,通用性不强,移植不方便
客户可以根据以上两种通讯协议的优缺点来选择理想的方案;
实现方法:
方案一:
1.       工程属性选用MODBUS-RTU协议;
2.       先了解MODBUS-RTU协议,基本的01 03 05 06 16 的功能码需要了解,其他可以不去深究;提供相关的资料
3.       使用我们提供的MODBUS-RTU协议(C语言)开发源代码,把主要的01 03 05 06 16 函数移植到单片机通讯上,大大节省了开发时间;
方案二:
1.       工程属性选用FreeProtocol协议;
2.       
3.       打开控制令编辑器(设定—>宏指令—>宏指令编辑器)或者直接按F8;
4.       新增宏指令,在宏指令里面使用到Output()、Input()、SetWordData()、GetWordData()这四个函数;注:可以参考附一
5.       Output()函数,把设定好的字符串发送到相应的串口输出;Input()函数,从设定好的串口读取需要的字符串;
6.       采集显示:
SetWordData()函数,把Input()函数接收回来的数据,发送给HIM用户自定义寄存器里,然后在显示控件里填上已经有数据的HIM寄存器,即可显示单片机采集上来的数据;
7.       改写发送:
在显示控件了把需要改写的数据绑定HIM寄存器,使用GetWordData()获得修改后的数据,通过output()发送把数据发送到单片机;
    
附一:
Output();
【描述】
第一个参数channel表示通道,如果通道为com1,则channel=1;如果通道为com2,则channel=2,数据类型为int。
第二个参数pString表示从通道输出的字符串的地址,数据类型为unsigned char *。
第三个参数count表示字符串中的字符个数,数据类型为int。
第四个参数result表示Output函数运行后返回的结果,如果result大于0,则表示读写有效,数据类型为int。
注意:此函数只能用在freeprotocol(自由协议通道)中。
【用法】
Output(channel,pString,count,result);
【举例】
char srt[9];
int result;
Output(1,str[0],9,result);
Input();
【描述】
第一个参数channel表示通道,如果通道为com1,则channel=1;如果通道为com2,则channel=2,数据类型为int。
第二个参数pString表示写入通道的字符串的地址,数据类型为unsigned char *。
第三个参数count表示字符串中的字符个数,数据类型为int。
第四个参数result表示Output函数运行后返回的结果,如果result大于0,则表示读写有效,数据类型为int。
注意:此函数只能用在freeprotocol(自由协议通道)中。
【用法】
Input(channel,pString,count,result);
【举例】
char srt[9];
int result;
Input(1,str[0],9,result);
GetWordData();
【描述】
函数功能:从通道中读取Word数据。
第一个参数channel表示通道,数据类型为unsigned char。
第二个参数slaveID表示从机号,数据类型为unsigned char。
第三个参数address表示系统通道地址,数据类型为unsigned short。
第四个参数count表示要读出的字的个数,数据类型为unsigned short。
第五个参数表示命令号,数据类型为unsigned char。
第六个参数pValue用来保存从系统通道读出的count个字,数据类型为unsigned short *。
【用法】
GetWordData(channel,slaveID,address,count,cmd,pValue);
【举例】
unsigned short wordData[10];
GetWordData(0, 1,8000, 10, 0,wordData);
从系统通道 8000地址中读取10个数据到wordData
SetWordData();
【描述】
函数功能:从通道中写入一个Word数据。
第一个参数channel表示通道,数据类型为unsigned char。
第二个参数slaveID表示从机号,数据类型为unsigned char。
第三个参数address表示系统通道地址,数据类型为unsigned short。
第四个参数cmd表示命令号,数据类型为unsigned char。
第五个参数pValue用来保存写入系统通道的字,数据类型为unsigned short。
【用法】
SetWordData(channel,slaveID,address,cmd,source);
【举例】
unsigned short wordData = 1;
SetWordData(0, 1,1000,0,wordData);
把wordData中的Word数据写到系统通道 1000地址处
附录二:
使用自由协议来模拟modbus-RTU
//COM1:freeprotocol
//COM2:modbus-RTU
/*自由协议通道采集数据存放在系统通道,在界面显示
   modbus通道采集到的数据,处理后,发送到自由协议的设备上*/
unsigned char command[32];
unsigned char response[32];
unsigned char temp1,temp2;
unsigned short address, checksum;
unsigned short read_no, return_value1, return_value2,return_value3,read_data[2], i;
unsigned short com2_data;
/****************以上是新建需要使用的变量***********/
Fill(command, 0, 32);// initialize command[0]~command[31] to 0
Fill(response, 0, 32);  //把command 和response 初始化
command[0] = 0x1;// 设置发送字符窜的第一个数据  station number
command[1] = 0x3;// 设置发送字符窜的第二个数据 read holding registers (function code is 0x3)
address = 0;// starting address (4x_1) is 0
HiByte(address, command[2]);//设置发送字符窜的第三个数据
LoByte(address, command[3]);//设置发送字符窜的第四个数据
read_no = 2;// the total words of reading is 2 words
HiByte(read_no, command[4]);//设置发送字符窜的第五个数据
LoByte(read_no, command[5]);//设置发送字符窜的第六个数据
CRC(command, 6,checksum);// calculate 16-bit CRC
LoByte(checksum, command[6]); //设置发送字符窜的第七个数据
HiByte(checksum, command[7]); //设置发送字符窜的第八个数据
Output(1,command,8, return_value1); //把设置好的8个数据,从通讯口1发送出去,具体参数设置参考Output()使用
Input(1,response,9,return_value2); //从通讯口1等待接收9个字符数据,并且放在response[0]~response[8],具体参数设置参考Intput()使用
CRC(response, 7,checksum); //对采集上来的9个数据中前7个进行了CRC-16校验,校验结果存放在checksum
LoByte(checksum, temp1);  //把checksum的低8位放在temp1
HiByte(checksum, temp2);  //把checksum的高8位放在temp1
if(temp1==response[7]&&temp2==response[8])    //CRC校验码进行对比判别时候接收正确
{ 
                                                                           //CRC检验正确后,把采集来的数据中指定需要的数据放在read_data[]
read_data[0] = response[4] + (response[3] << 8);   
read_data[1] = response[6] + (response[5] << 8);
SetWordData(0 ,1 ,0 ,2,0 , read_data); // 通过SetWordData()函数,把read_data送到系统寄存器中,具体使用需要参考SetWordData()函数使用
}
GetWordData( 2, 1, 2, 2, 3, &com2_data);   // 通讯口2,使用的是modbus-RTU协议,
command[0] = 0x1;// station number
command[1] = 0x6;// wirte holding registers (function code is 0x6)
address=10;
checksum=0;
HiByte(address, command[2]);
LoByte(address, command[3]);
HiByte(com2_data, command[4]);
LoByte(com2_data, command[5]);
CRC(command, 6,checksum);// calculate 16-bit CRC
LoByte(checksum, command[6]);
HiByte(checksum, command[7]);
Output(1,command,8, return_value3);  //发出定义好8个字符串
楼宇科技集团提供创新和节能的整体楼宇解决方案,在整个建筑使用寿命期间,确保可靠环境下楼宇的安全性和舒适性,降低维护费并提高能效。楼宇科技集团提供的产品、系统和服务包括:用于供暖、通风、空调控制的楼宇自控系统、产品和解决方案,消防以及综合安防解决方案和服务。集团在提供楼宇产品、系统、服务和解决方案方面拥有丰富的经验,帮助客户优化楼宇运营,提升其楼宇经营项目的价值。多年来在中国和世界各地成功实施的解决方案充分证明了其本地化业务能力和全球化运营经验,成功地为客户的投资实现保值和增值。
	
	
*您的姓名:
*联系手机:
固话电话:
E-mail:
所在单位:
需求数量:
*咨询内容: