How to add custom field to the user profile according to its role in Drupal 7?
User role field module allows you to specify role-specific fields. 
When creating a new field, you specify what roles this field is enabled for.

Fields are only visible and editable if a user has a specific role.

This role does not determine access controls for visible fields. 
You could use the Field Permissions module for setting access controls. 

More then 120 sites currently use this module.